From 7d4efe136f72a654cdc05495b88699d78305175e Mon Sep 17 00:00:00 2001 From: JianMiau Date: Mon, 1 Aug 2022 17:12:37 +0800 Subject: [PATCH] =?UTF-8?q?[add]=20EventBus=E4=BD=BF=E7=94=A8=20=E9=9B=99?= =?UTF-8?q?=E5=90=91=E6=BA=9D=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/assets/Script/HelloWorld.ts | 35 +- .../build-templates/web-mobile/cocos2d-js.js | 103781 +++++++++++++++ .../assets/ZenMaruGothic-Regular.2d389171.ttf | Bin 3832448 -> 0 bytes ...{index.b312efde.css => index.2f5031fd.css} | 2 +- .../{index.12a12ee9.js => index.a0e31fb5.js} | 26 +- public/index.html | 10 +- src/App.vue | 13 +- src/components/Popup.vue | 11 +- .../web-mobile/assets/main/index.js | 183 +- 9 files changed, 103927 insertions(+), 134 deletions(-) create mode 100644 Project/build-templates/web-mobile/cocos2d-js.js delete mode 100644 public/assets/ZenMaruGothic-Regular.2d389171.ttf rename public/assets/{index.b312efde.css => index.2f5031fd.css} (99%) rename public/assets/{index.12a12ee9.js => index.a0e31fb5.js} (55%) diff --git a/Project/assets/Script/HelloWorld.ts b/Project/assets/Script/HelloWorld.ts index 73df1f4..3eff0b1 100644 --- a/Project/assets/Script/HelloWorld.ts +++ b/Project/assets/Script/HelloWorld.ts @@ -21,21 +21,28 @@ export default class HelloWorld extends cc.Component { // LIFE-CYCLE CALLBACKS: - // protected onLoad() {} + protected onLoad() { + let self = this; + this.Label.string = this.Text; + window["eventBus"].on('SendContent', (content: string) => { + self.Label.string = content; + }) + } public onClickBtn() { - let url: string = window.location.search; - let URLscheme: any[] = []; - if (url.indexOf("?") !== -1) { - let str = url.substring(1); - let strs = str.split("&"); - for (let i = 0; i < strs.length; i++) { - URLscheme[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]); - } - } - if (URLscheme["host"]) { - opener?.window.parent.postMessage({ data: "hello" }, URLscheme["host"]); - window.close(); - } + window["eventBus"].emit("Alert", "hello"); + // let url: string = window.location.search; + // let URLscheme: any[] = []; + // if (url.indexOf("?") !== -1) { + // let str = url.substring(1); + // let strs = str.split("&"); + // for (let i = 0; i < strs.length; i++) { + // URLscheme[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]); + // } + // } + // if (URLscheme["host"]) { + // opener?.window.parent.postMessage({ data: "hello" }, URLscheme["host"]); + // window.close(); + // } } } diff --git a/Project/build-templates/web-mobile/cocos2d-js.js b/Project/build-templates/web-mobile/cocos2d-js.js new file mode 100644 index 0000000..91a6534 --- /dev/null +++ b/Project/build-templates/web-mobile/cocos2d-js.js @@ -0,0 +1,103781 @@ +(function outer(modules, cache, entry) { + function newRequire(name, jumped) { + var module = cache[name]; + if (!module) { + var moduleData = modules[name]; + if (!moduleData) return; + var exports = {}; + module = cache[name] = { + exports: exports + }; + moduleData[0]((function (x) { + return newRequire(moduleData[1][x] || x); + }), module, exports); + } + return module.exports; + } + for (var i = 0; i < entry.length; i++) newRequire(entry[i]); + return newRequire; +})({ + 1: [(function (require, module, exports) { + module.exports = { + 1001: "cocos2d: removeAction: Target not found", + 1002: "cc.ActionManager.removeActionByTag(): an invalid tag", + 1003: "cc.ActionManager.removeActionByTag(): target must be non-null", + 1004: "cc.ActionManager.getActionByTag(): an invalid tag", + 1005: "cocos2d : getActionByTag(tag = %s): Action not found", + 1006: "[Action step]. override me", + 1007: "[Action update]. override me", + 1008: "cocos2d: FiniteTimeAction#reverse: Implement me", + 1009: "cc.EaseElastic.reverse(): it should be overridden in subclass.", + 1010: "cc.IntervalAction: reverse not implemented.", + 1011: "cc.ActionInterval.setAmplitudeRate(): it should be overridden in subclass.", + 1012: "cc.ActionInterval.getAmplitudeRate(): it should be overridden in subclass.", + 1013: "The speed parameter error", + 1014: "The repeat parameter error", + 1015: "parameters should not be ending with null in Javascript", + 1016: "cc.RotateTo.reverse(): it should be overridden in subclass.", + 1019: "Failed to construct, Sequence construction needs two or more actions.", + 1020: "Failed to construct, Spawn construction needs two or more actions.", + 1021: "cc.Speed.initWithAction(): action must be non nil", + 1022: "cc.Follow.initWithAction(): followedNode must be non nil", + 1023: "cc.ActionEase.initWithAction(): action must be non nil", + 1024: "Invalid configuration. It must at least have one control point", + 1025: "cc.Sequence.initWithTwoActions(): arguments must all be non nil", + 1026: "cc.RepeatForever.initWithAction(): action must be non null", + 1027: "cc.Spawn.initWithTwoActions(): arguments must all be non null", + 1028: "cc.ReverseTime.initWithAction(): action must be non null", + 1029: "cc.ReverseTime.initWithAction(): the action was already passed in.", + 1030: "cc.Animate.initWithAnimation(): animation must be non-NULL", + 1031: "Illegal parameter get passed in cc.tween: %s.", + 1100: "Expected 'data' dict, but not found. Config file: %s", + 1101: "Please load the resource first : %s", + 1200: "cocos2d: Director: Error in gettimeofday", + 1201: "cocos2d: Director: unrecognized projection", + 1203: "cocos2d: Director: Error in gettimeofday", + 1204: "running scene should not null", + 1205: "the scene should not null", + 1206: "loadScene: The scene index to load (%s) is out of range.", + 1207: "loadScene: Unknown name type to load: '%s'", + 1208: "loadScene: Failed to load scene '%s' because '%s' is already being loaded.", + 1209: "loadScene: Can not load the scene '%s' because it was not in the build settings before playing.", + 1210: "Failed to preload '%s', %s", + 1211: "loadScene: The scene index to load (%s) is out of range.", + 1212: "loadScene: Unknown name type to load: '%s'", + 1213: "loadScene: Failed to load scene '%s' because '%s' is already loading", + 1214: "loadScene: Can not load the scene '%s' because it was not in the build settings before playing.", + 1215: "Failed to preload '%s', %s", + 1216: "Director.runSceneImmediate: scene is not valid", + 1300: "element type is wrong!", + 1400: "'%s' is deprecated, please use '%s' instead.", + 1404: "cc.spriteFrameCache is removed, please use cc.loader to load and cache sprite frames of atlas format.", + 1405: "The '%s' has been removed, please use '%s' instead.", + 1406: "'%s.%s' is removed", + 1408: "'%s' is not support in the '%s', please use '%s' instead.", + 1502: "cc.scheduler.scheduleCallbackForTarget(): target should be non-null.", + 1503: "cc.Scheduler.pauseTarget():target should be non-null", + 1504: "cc.Scheduler.resumeTarget():target should be non-null", + 1505: "cc.Scheduler.isTargetPaused():target should be non-null", + 1506: "warning: you CANNOT change update priority in scheduled function", + 1507: 'CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: %s to %s"', + 1508: "Argument callback must not be empty", + 1509: "Argument target must be non-nullptr", + 1510: "cc.Scheduler: Illegal target which doesn't have uuid or instanceId.", + 1511: "cc.Scheduler: pause state of the scheduled task doesn't match the element pause state in Scheduler, the given paused state will be ignored.", + 1513: "cc.Scheduler: scheduler stopped using `__instanceId` as id since v2.0, you should do scheduler.enableForTarget(target) before all scheduler API usage on target", + 1605: "child already added. It can't be added again", + 1606: "child must be non-null", + 1610: "cocos2d: removeChildByTag(tag = %s): child not found!", + 1612: "cc.Node.stopActionBy(): argument tag an invalid tag", + 1613: "cc.Node.getActionByTag(): argument tag is an invalid tag", + 1617: "child must be non-null", + 1618: "cc.Node.runAction(): action must be non-null", + 1619: "callback function must be non-null", + 1620: "interval must be positive", + 1623: "Set '%s' to normal node (not persist root node).", + 1624: "Replacing with the same sgNode", + 1625: "The replacement sgNode should not contain any child.", + 1626: "Should not set alpha via 'color', set 'opacity' please.", + 1627: "Not support for asynchronous creating node in SG", + 1632: "Node name can not include '/'.", + 1633: "Internal error, should not remove unknown node from parent.", + 1634: "addChild: The child to add must be instance of cc.Node, not %s.", + 1635: "reorderChild: this child is not in children list.", + 1636: "Node's zIndex value can't be greater than cc.macro.MAX_ZINDEX, setting to the maximum value", + 1637: "Node's zIndex value can't be smaller than cc.macro.MIN_ZINDEX, setting to the minimum value", + 1638: "Private node's zIndex can't be set, it will keep cc.macro.MIN_ZINDEX as its value", + 1639: "cc.Action is deprecated, please use cc.Tween instead", + 1800: "cc._EventListenerKeyboard.checkAvailable(): Invalid EventListenerKeyboard!", + 1801: "cc._EventListenerTouchOneByOne.checkAvailable(): Invalid EventListenerTouchOneByOne!", + 1802: "cc._EventListenerTouchAllAtOnce.checkAvailable(): Invalid EventListenerTouchAllAtOnce!", + 1803: "cc._EventListenerAcceleration.checkAvailable(): _onAccelerationEvent must be non-nil", + 1900: "Invalid parameter.", + 2e3: "Don't call this method if the event is for touch.", + 2200: "Design resolution not valid", + 2201: "should set resolutionPolicy", + 2300: "The touches is more than MAX_TOUCHES, nUnusedIndex = %s", + 2400: "WebGL error %s", + 2602: "cc.Sprite.setDisplayFrameWithAnimationName(): Frame not found", + 2603: "cc.Sprite.setDisplayFrameWithAnimationName(): Invalid frame index", + 2606: "cc.Sprite.initWithSpriteFrame(): spriteFrame should be non-null", + 2607: "cc.Sprite.initWithSpriteFrameName(): spriteFrameName should be non-null", + 2608: "%s is null, please check.", + 2609: "cc.Sprite.initWithFile(): filename should be non-null", + 2610: "cc.Sprite.setDisplayFrameWithAnimationName(): animationName must be non-null", + 2614: "cc.Sprite.addChild(): child should be non-null", + 2616: "cc.SpriteBatchNode.updateQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", + 2617: "cc.SpriteBatchNode.insertQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", + 2618: "cc.SpriteBatchNode.addChild(): cc.SpriteBatchNode only supports cc.Sprites as children", + 2619: "cc.SpriteBatchNode.addChild(): cc.Sprite is not using the same texture", + 2623: "cc.SpriteBatchNode.updateQuadFromSprite(): sprite should be non-null", + 2625: "too many tiles, only 16384 tiles will be show", + 2626: "Unrecognized fill type in bar fill", + 2627: "Can not generate quad", + 2628: "%s does not exist", + 2712: "Invalid spriteFrameName", + 3005: "cocos2d: '%s' id=%s %s x %s", + 3006: "cocos2d: '%s' id= HTMLCanvasElement %s x %s", + 3007: "cocos2d: TextureCache dumpDebugInfo: %s textures, HTMLCanvasElement for %s KB (%s MB)", + 3103: "cc.Texture.addImage(): path should be non-null", + 3112: "cc.Texture.addImage(): path should be non-null", + 3113: "NSInternalInconsistencyException", + 3116: "WebGLRenderingContext.CLAMP_TO_EDGE should be used in NPOT textures", + 3117: "Mimpap texture only works in POT textures", + 3119: "Lazy init texture with image element failed due to image loading failure: %s", + 3120: "Loading texture with unsupported type: '%s'. Add '%s' into 'cc.macro.SUPPORT_TEXTURE_FORMATS' please.", + 3121: "Can't find a texture format supported by the current platform! Please add a fallback format in the editor.", + 3300: "Rect width exceeds maximum margin: %s", + 3400: "Rect height exceeds maximum margin: %s", + 3401: "Set texture with a url of image is not supported anymore. Please use cc.assetManager.loadRemote to load a texture first.", + 3500: "0 priority is forbidden for fixed priority since it's used for scene graph based priority.", + 3501: "Invalid listener type!", + 3502: "Can't set fixed priority with scene graph based listener.", + 3503: "Invalid parameters.", + 3504: "listener must be a cc.EventListener object when adding a fixed priority listener", + 3505: "The listener has been registered, please don't register it again.", + 3506: "Unsupported listener target.", + 3507: "Invalid scene graph priority!", + 3508: "If program goes here, there should be event in dispatch.", + 3509: "_inDispatch should be 1 here.", + 3510: "%s's scene graph node not contains in the parent's children", + 3511: "event is undefined", + 3600: "cc.Class will automatically call super constructor of %s, you should not call it manually.", + 3601: "The editor property 'playOnFocus' should be used with 'executeInEditMode' in class '%s'", + 3602: "Unknown editor property '%s' in class '%s'.", + 3603: "Use 'cc.Float' or 'cc.Integer' instead of 'cc.Number' please.", + 3604: "Can only indicate one type attribute for %s.", + 3605: "The default value of %s is not instance of %s.", + 3606: "No needs to indicate the '%s' attribute for %s, which its default value is type of %s.", + 3607: "The default value of %s must be an empty string.", + 3608: "The type of %s must be cc.String, not String.", + 3609: "The type of %s must be cc.Boolean, not Boolean.", + 3610: "The type of %s must be cc.Float or cc.Integer, not Number.", + 3611: "Can not indicate the '%s' attribute for %s, which its default value is type of %s.", + 3612: "%s Just set the default value to 'new %s()' and it will be handled properly.", + 3613: "'No need to use 'serializable: false' or 'editorOnly: true' for the getter of '%s.%s', every getter is actually non-serialized.", + 3614: "Should not define constructor for cc.Component %s.", + 3615: "Each script can have at most one Component.", + 3616: "Should not specify class name %s for Component which defines in project.", + 3617: "Can not instantiate CCClass '%s' with arguments.", + 3618: "ctor of '%s' can not be another CCClass", + 3619: "ctor of '%s' must be function type", + 3620: "this._super declared in '%s.%s' but no super method defined", + 3621: "Unknown type of %s.%s, maybe you want is '%s'.", + 3622: "Unknown type of %s.%s, property should be defined in 'properties' or 'ctor'", + 3623: "Can not use 'editor' attribute, '%s' not inherits from Components.", + 3624: "'%s' overrided '%s' but '%s' is defined as 'false' so the super method will not be called. You can set '%s' to null to disable this warning.", + 3625: "[isChildClassOf] superclass should be function type, not", + 3626: "Can't remove '%s' because '%s' depends on it.", + 3627: "Should not add renderer component (%s) to a Canvas node.", + 3628: "Should not add %s to a node which size is already used by its other component.", + 3633: "Properties function of '%s' should return an object!", + 3634: "Disallow to use '.' in property name", + 3635: "Default array must be empty, set default value of %s.%s to [], and initialize in 'onLoad' or 'ctor' please. (just like 'this.%s = [...];')", + 3636: "Do not set default value to non-empty object, unless the object defines its own 'clone' function. Set default value of %s.%s to null or {}, and initialize in 'onLoad' or 'ctor' please. (just like 'this.%s = {foo: bar};')", + 3637: "Can not declare %s.%s, it is already defined in the prototype of %s", + 3638: "'%s': the getter of '%s' is already defined!", + 3639: "Can not apply the specified attribute to the getter of '%s.%s', attribute index: %s", + 3640: "'%s': the setter of '%s' is already defined!", + 3641: "Can not construct %s because it contains object property.", + 3642: "Cannot define %s.%s because static member name can not be '%s'.", + 3643: "Can not define a member called 'constructor' in the class '%s', please use 'ctor' instead.", + 3644: "Please define 'type' parameter of %s.%s as the actual constructor.", + 3645: "Please define 'type' parameter of %s.%s as the constructor of %s.", + 3646: "Unknown 'type' parameter of %s.%s\uff1a%s", + 3647: "The length of range array must be equal or greater than 2", + 3648: "Can not declare %s.%s method, it is already defined in the properties of %s.", + 3649: "CCClass %s have conflict between its ctor and __ctor__.", + 3651: 'Can not call `_super` or `prototype.ctor` in ES6 Classes "%s", use `super` instead please.', + 3652: "Failed to `new %s()` under the hood, %s\nIt is used for getting default values declared in TypeScript in the first place.\nPlease ensure the constructor can be called during the script's initialization.", + 3653: 'Please do not specifiy "default" attribute in decorator of "%s" property in "%s" class. \nDefault value must be initialized at their declaration:\n \n// Before:\n@property({\n type: cc.SpriteFrame\n default: null // <--\n})\nmyProp;\n// After:\n@property({\n type: cc.SpriteFrame\n})\nmyProp = null; // <--', + 3654: 'Please specifiy a default value for "%s.%s" at its declaration:\n \n// Before:\n@property(...)\nmyProp;\n// After:\n@property(...)\nmyProp = 0;', + 3655: 'Can not specifiy "get" or "set" attribute in decorator for "%s" property in "%s" class. \nPlease use:\n \n@property(...)\nget %s () {\n ...\n}\n@property\nset %s (value) {\n ...\n}', + 3700: "internal error: _prefab is undefined", + 3701: "Failed to load prefab asset for node '%s'", + 3800: "The target can not be made persist because it's not a cc.Node or it doesn't have _id property.", + 3801: "The node can not be made persist because it's not under root node.", + 3802: "The node can not be made persist because it's not in current scene.", + 3803: "The target can not be made persist because it's not a cc.Node or it doesn't have _id property.", + 3804: "getComponent: Type must be non-nil", + 3805: "Can't add component '%s' because %s already contains the same component.", + 3806: "Can't add component '%s' to %s because it conflicts with the existing '%s' derived component.", + 3807: "addComponent: Failed to get class '%s'", + 3808: "addComponent: Should not add component ('%s') when the scripts are still loading.", + 3809: "addComponent: The component to add must be a constructor", + 3810: "addComponent: The component to add must be child class of cc.Component", + 3811: "_addComponentAt: The component to add must be a constructor", + 3812: "_addComponentAt: Index out of range", + 3813: "removeComponent: Component must be non-nil", + 3814: "Argument must be non-nil", + 3815: "Component not owned by this entity", + 3816: "Node '%s' is already activating", + 3817: "Sorry, the component of '%s' which with an index of %s is corrupted! It has been removed.", + 3818: "Failed to read or parse project.json", + 3819: "Warning: target element is not a DIV or CANVAS", + 3820: "The renderer doesn't support the renderMode %s", + 3821: "Cannot change hierarchy while activating or deactivating the parent.", + 3900: "Invalid clip to add", + 3901: "Invalid clip to remove", + 3902: "clip is defaultClip, set force to true to force remove clip and animation state", + 3903: "animation state is playing, set force to true to force stop and remove clip and animation state", + 3904: "motion path of target [%s] in prop [%s] frame [%s] is not valid", + 3905: "sprite frames must be an Array.", + 3906: "Can't find easing type [%s]", + 3907: "animator not added or already removed", + 3912: "already-playing", + 4003: "Label font size can't be shirnked less than 0!", + 4004: "force notify all fonts loaded!", + 4011: "Property spriteFrame of Font '%s' is invalid. Using system font instead.", + 4012: "The texture of Font '%s' must be already loaded on JSB. Using system font instead.", + 4013: "Sorry, lineHeight of system font not supported on JSB.", + 4200: "MaskType: IMAGE_STENCIL only support WebGL mode.", + 4201: "The alphaThreshold invalid in Canvas Mode.", + 4202: "The inverted invalid in Canvas Mode.", + 4300: "can not found the %s page.", + 4400: "Invalid RichText img tag! The sprite frame name can't be found in the ImageAtlas!", + 4600: "Script attached to '%s' is missing or invalid.", + 4700: "The dom control is not created!", + 4800: "unknown asset type", + 4901: "loadRes: should not specify the extname in %s %s", + 4902: "No need to release non-cached asset.", + 4914: "Resources url '%s' does not exist.", + 4915: "Pack indices and data do not match in size", + 4916: "Failed to download package for %s", + 4921: "Invalid pipe or invalid index provided!", + 4922: "The pipe to be inserted is already in the pipeline!", + 4923: "Uuid Loader: Parse asset [ %s ] failed : %s", + 4924: "JSON Loader: Input item doesn't contain string content", + 4925: "Uuid Loader: Deserialize asset [ %s ] failed : %s", + 4926: "Audio Downloader: no web audio context.", + 4927: "Audio Downloader: audio not supported on this browser!", + 4928: "Load %s failed!", + 4929: "Load Webp ( %s ) failed", + 4930: "Load image ( %s ) failed", + 4932: 'Since v1.10, for any atlas ("%s") in the "resources" directory, it is not possible to find the contained SpriteFrames via `loadRes`, `getRes` or `releaseRes`. Load the SpriteAtlas first and then use `spriteAtlas.getSpriteFrame(name)` instead please.', + 4933: "Download Font [ %s ] failed, using Arial or system default font instead", + 5e3: "object already destroyed", + 5001: "object not yet destroyed", + 5100: "Not a plist file!", + 5200: "Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option", + 5201: "browser don't support web audio", + 5202: "This feature supports WebGL render mode only.", + 5300: "Type of target to deserialize not matched with data: target is %s, data is %s", + 5301: "Can not find script '%s'", + 5302: "Can not find class '%s'", + 5303: "Failed to deserialize %s, missing _deserialize function.", + 5304: "Unable to deserialize version %s data.", + 5402: "cc.js.addon called on non-object:", + 5403: "cc.js.mixin: arguments must be type object:", + 5404: "The base class to extend from must be non-nil", + 5405: "The class to extend must be non-nil", + 5406: "Class should be extended before assigning any prototype members.", + 5500: "'notify' can not be used in 'get/set' !", + 5501: "'notify' must be used with 'default' !", + 5507: "The 'default' attribute of '%s.%s' must be an array", + 5508: "Invalid type of %s.%s", + 5510: "The 'type' attribute of '%s.%s' can not be 'Number', use cc.Float or cc.Integer instead please.", + 5511: "The 'type' attribute of '%s.%s' is undefined when loading script", + 5512: "Can not serialize '%s.%s' because the specified type is anonymous, please provide a class name or set the 'serializable' attribute of '%s.%s' to 'false'.", + 5513: "The 'default' value of '%s.%s' should not be used with a 'get' function.", + 5514: "The 'default' value of '%s.%s' should not be used with a 'set' function.", + 5515: "The 'default' value of '%s.%s' can not be an constructor. Set default to null please.", + 5516: "Property '%s.%s' must define at least one of 'default', 'get' or 'set'.", + 5517: "'%s.%s' hides inherited property '%s.%s'. To make the current property override that implementation, add the `override: true` attribute please.", + 5601: "Can not get current scene.", + 5602: "Scene is destroyed", + 5603: "reference node is destroyed", + 5700: "no %s or %s on %s", + 5800: "%s.lerp not yet implemented.", + 5801: "%s.clone not yet implemented.", + 5802: "%s.equals not yet implemented.", + 5900: "MotionStreak only support WebGL mode.", + 5901: "cc.MotionStreak.getOpacity has not been supported.", + 5902: "cc.MotionStreak.setOpacity has not been supported.", + 6e3: "Custom should not be false if file is not specified.", + 6001: "The new %s must not be NaN", + 6017: "Incomplete or corrupt PNG file", + 6018: "Invalid filter algorithm: %s", + 6019: "Invalid byte order value.", + 6020: "You forgot your towel!", + 6021: "Unknown Field Tag: %s", + 6022: "Too many bits requested", + 6023: "No bits requested", + 6024: "Cannot recover from missing StripByteCounts", + 6025: "Cannot handle sub-byte bits per sample", + 6026: "Cannot handle sub-byte bits per pixel", + 6027: "Palette image missing color map", + 6028: "Unknown Photometric Interpretation: %s", + 6029: "Unkown error", + 6030: "cc.ParticleSystem: error decoding or ungzipping textureImageData in plist '%s'", + 6031: "cc.ParticleSystem: unknown image format with Data in plist %s", + 6032: "cc.ParticleSystem.initWithDictionary() : error loading the texture in plist '%s'", + 6400: "asset.url is not usable in core process", + 6402: "AssetLibrary has already been initialized!", + 6500: "Widget target must be one of the parent nodes of it", + 6600: "collider not added or already removed", + 6601: "Can't find testFunc for (%s, $s).", + 6700: "Can't init canvas '%s' because it conflicts with the existing '%s', the scene should only have one active canvas at the same time.", + 6800: "Callback of event must be non-nil", + 6801: "The message must be provided", + 6900: "The thing you want to instantiate must be an object", + 6901: "The thing you want to instantiate is nil", + 6902: "The thing you want to instantiate is destroyed", + 6903: "The instantiate method for given asset do not implemented", + 6904: "Can not instantiate array", + 6905: "Can not instantiate DOM element", + 7100: "%s already defined in Enum.", + 7101: "Sorry, 'cc.Enum' not available on this platform, please report this error here: https://github.com/cocos-creator/engine/issues/new", + 7200: "Method 'initWithTMXFile' is no effect now, please set property 'tmxAsset' instead.", + 7201: "Method 'initWithXML' is no effect now, please set property 'tmxAsset' instead.", + 7202: "Add component TiledLayer into node failed.", + 7203: "Property 'mapLoaded' is unused now. Please write the logic to the callback 'start'.", + 7210: "TMX Hexa zOrder not supported", + 7211: "TMX invalid value", + 7215: "cocos2d: Warning: TMX Layer %s has no tiles", + 7216: "cocos2d: TMXFormat: Unsupported TMX version: %s", + 7217: "cocos2d: TMXFomat: Unsupported orientation: %s", + 7218: "cc.TMXMapInfo.parseXMLFile(): unsupported compression method", + 7219: "cc.TMXMapInfo.parseXMLFile(): Only base64 and/or gzip/zlib maps are supported", + 7221: "cc.TMXMapInfo.parseXMLFile(): Texture '%s' not found.", + 7222: "Parse %s failed.", + 7236: "cc.TMXLayer.getTileAt(): TMXLayer: the tiles map has been released", + 7237: "cc.TMXLayer.getTileGIDAt(): TMXLayer: the tiles map has been released", + 7238: "cc.TMXLayer.setTileGID(): TMXLayer: the tiles map has been released", + 7239: "cc.TMXLayer.setTileGID(): invalid gid: %s", + 7240: "cc.TMXLayer.getTileFlagsAt(): TMXLayer: the tiles map has been released", + 7241: "cc.TiledMap.initWithXML(): Map not found. Please check the filename.", + 7401: "Failed to set _defaultArmatureIndex for '%s' because the index is out of range.", + 7402: "Failed to set _animationIndex for '%s' because the index is out of range.", + 7501: "Failed to set _defaultSkinIndex for '%s' because the index is out of range.", + 7502: "Failed to set _animationIndex for '%s' because its skeletonData is invalid.", + 7503: "Failed to set _animationIndex for '%s' because the index is out of range.", + 7504: "Can not render dynamic created SkeletonData", + 7506: "Failed to load spine atlas '$s'", + 7507: "Please re-import '%s' because its textures is not initialized! (This workflow will be improved in the future.)", + 7508: "The atlas asset of '%s' is not exists!", + 7509: "Spine: Animation not found: %s", + 7510: "Spine: Animation not found: %s", + 7600: "The context of RenderTexture is invalid.", + 7601: "cc.RenderTexture._initWithWidthAndHeightForWebGL() : only RGB and RGBA formats are valid for a render texture;", + 7602: "Could not attach texture to the framebuffer", + 7603: "clearDepth isn't supported on Cocos2d-Html5", + 7604: "saveToFile isn't supported on Cocos2d-Html5", + 7605: "newCCImage isn't supported on Cocos2d-Html5", + 7700: "On the web is always keep the aspect ratio", + 7701: "Can't know status", + 7702: "Video player's duration is not ready to get now!", + 7800: "Web does not support loading", + 7801: "Web does not support query history", + 7802: "Web does not support query history", + 7803: "The current browser does not support the GoBack", + 7804: "The current browser does not support the GoForward", + 7805: "Web does not support zoom", + 7900: "cc.math.Matrix3.assign(): current matrix equals matIn", + 7901: "cc.math.mat4Assign(): pOut equals pIn", + 7902: "cc.mat.Matrix4.assignFrom(): mat4 equals current matrix", + 7903: "cc.math.Matrix4 equal: pMat1 and pMat2 are same object.", + 7904: "cc.math.Matrix4.extractPlane: Invalid plane index", + 7905: "cc.math.mat4Assign(): pOut equals pIn", + 7906: "cc.mat.Matrix4.assignFrom(): mat4 equals current matrix", + 7907: "cc.math.Matrix4 equals: pMat1 and pMat2 are same object.", + 7908: "Invalid matrix mode specified", + 7909: "current quaternion is an invalid value", + 8e3: "Can't handle this field type or size", + 8001: "No bytes requested", + 8002: "Too many bytes requested", + 8003: "Missing StripByteCounts!", + 8103: "cc.GLProgram.link(): Cannot link invalid program", + 8104: "cocos2d: ERROR: Failed to link program: %s", + 8105: "cocos2d: cc.shaderCache._loadDefaultShader, error shader type", + 8106: "Please load the resource firset : %s", + 8107: "cc.GLProgram.getUniformLocationForName(): uniform name should be non-null", + 8108: "cc.GLProgram.getUniformLocationForName(): Invalid operation. Cannot get uniform location when program is not initialized", + 8109: "modelView matrix is undefined.", + 8200: "Please set node's active instead of rigidbody's enabled.", + 8300: "Should only one camera exists, please check your project.", + 8301: "Camera does not support Canvas Mode.", + 8400: "Wrong type arguments, 'filePath' must be a String.", + 8401: "Since 1.10, `%s` accept %s instance directly, not a URL string. Please directly reference the %s object in your script, or load %s by loader first. Don't use %s's URL anymore.", + 9e3: "Stencil manager does not support level bigger than %d in this device.", + 9001: "Stencil manager is already empty, cannot pop any mask.", + 9100: "LabelAtlas '%s' cannot be loaded, raw texture does not exist.", + 9101: "LabelAtlas '%s' cannot be loaded, fnt data does not exist.", + 9102: "Program not support highp precision, will change to mediump.", + 9103: "%s : Failed to set property [%s], property not found.", + 9104: "%s : Failed to define [%s], define not found.", + 9105: "%s : Failed to set property [%s], property length not correct.", + 9106: "%s : Set property [%s] warning : should transform object to ArrayBuffer.", + 9107: "%s : illegal property: [%s], myabe defined an unused property;", + 9200: "cc.view.enableAntiAlias is deprecated, please use cc.Texture2D.setFilters instead", + "0100": "%s not yet implemented." + }; + }), {}], + 2: [(function (require, module, exports) { + "use strict"; + require("../core/platform/CCClass"); + var misc = require("../core/utils/misc"); + cc.Action = cc.Class({ + name: "cc.Action", + ctor: function ctor() { + this.originalTarget = null; + this.target = null; + this.tag = cc.Action.TAG_INVALID; + }, + clone: function clone() { + var action = new cc.Action(); + action.originalTarget = null; + action.target = null; + action.tag = this.tag; + return action; + }, + isDone: function isDone() { + return true; + }, + startWithTarget: function startWithTarget(target) { + this.originalTarget = target; + this.target = target; + }, + stop: function stop() { + this.target = null; + }, + step: function step(dt) { + cc.logID(1006); + }, + update: function update(dt) { + cc.logID(1007); + }, + getTarget: function getTarget() { + return this.target; + }, + setTarget: function setTarget(target) { + this.target = target; + }, + getOriginalTarget: function getOriginalTarget() { + return this.originalTarget; + }, + setOriginalTarget: function setOriginalTarget(originalTarget) { + this.originalTarget = originalTarget; + }, + getTag: function getTag() { + return this.tag; + }, + setTag: function setTag(tag) { + this.tag = tag; + }, + retain: function retain() { }, + release: function release() { } + }); + cc.Action.TAG_INVALID = -1; + cc.FiniteTimeAction = cc.Class({ + name: "cc.FiniteTimeAction", + extends: cc.Action, + ctor: function ctor() { + this._duration = 0; + }, + getDuration: function getDuration() { + return this._duration * (this._timesForRepeat || 1); + }, + setDuration: function setDuration(duration) { + this._duration = duration; + }, + reverse: function reverse() { + cc.logID(1008); + return null; + }, + clone: function clone() { + return new cc.FiniteTimeAction(); + } + }); + cc.Speed = cc.Class({ + name: "cc.Speed", + extends: cc.Action, + ctor: function ctor(action, speed) { + this._speed = 0; + this._innerAction = null; + action && this.initWithAction(action, speed); + }, + getSpeed: function getSpeed() { + return this._speed; + }, + setSpeed: function setSpeed(speed) { + this._speed = speed; + }, + initWithAction: function initWithAction(action, speed) { + if (!action) { + cc.errorID(1021); + return false; + } + this._innerAction = action; + this._speed = speed; + return true; + }, + clone: function clone() { + var action = new cc.Speed(); + action.initWithAction(this._innerAction.clone(), this._speed); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.Action.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }, + stop: function stop() { + this._innerAction.stop(); + cc.Action.prototype.stop.call(this); + }, + step: function step(dt) { + this._innerAction.step(dt * this._speed); + }, + isDone: function isDone() { + return this._innerAction.isDone(); + }, + reverse: function reverse() { + return new cc.Speed(this._innerAction.reverse(), this._speed); + }, + setInnerAction: function setInnerAction(action) { + this._innerAction !== action && (this._innerAction = action); + }, + getInnerAction: function getInnerAction() { + return this._innerAction; + } + }); + cc.speed = function (action, speed) { + return new cc.Speed(action, speed); + }; + cc.Follow = cc.Class({ + name: "cc.Follow", + extends: cc.Action, + ctor: function ctor(followedNode, rect) { + this._followedNode = null; + this._boundarySet = false; + this._boundaryFullyCovered = false; + this._halfScreenSize = null; + this._fullScreenSize = null; + this.leftBoundary = 0; + this.rightBoundary = 0; + this.topBoundary = 0; + this.bottomBoundary = 0; + this._worldRect = cc.rect(0, 0, 0, 0); + followedNode && (rect ? this.initWithTarget(followedNode, rect) : this.initWithTarget(followedNode)); + }, + clone: function clone() { + var action = new cc.Follow(); + var locRect = this._worldRect; + var rect = new cc.Rect(locRect.x, locRect.y, locRect.width, locRect.height); + action.initWithTarget(this._followedNode, rect); + return action; + }, + isBoundarySet: function isBoundarySet() { + return this._boundarySet; + }, + setBoudarySet: function setBoudarySet(value) { + this._boundarySet = value; + }, + initWithTarget: function initWithTarget(followedNode, rect) { + if (!followedNode) { + cc.errorID(1022); + return false; + } + var _this = this; + rect = rect || cc.rect(0, 0, 0, 0); + _this._followedNode = followedNode; + _this._worldRect = rect; + _this._boundarySet = !(0 === rect.width && 0 === rect.height); + _this._boundaryFullyCovered = false; + var winSize = cc.winSize; + _this._fullScreenSize = cc.v2(winSize.width, winSize.height); + _this._halfScreenSize = _this._fullScreenSize.mul(.5); + if (_this._boundarySet) { + _this.leftBoundary = -(rect.x + rect.width - _this._fullScreenSize.x); + _this.rightBoundary = -rect.x; + _this.topBoundary = -rect.y; + _this.bottomBoundary = -(rect.y + rect.height - _this._fullScreenSize.y); + _this.rightBoundary < _this.leftBoundary && (_this.rightBoundary = _this.leftBoundary = (_this.leftBoundary + _this.rightBoundary) / 2); + _this.topBoundary < _this.bottomBoundary && (_this.topBoundary = _this.bottomBoundary = (_this.topBoundary + _this.bottomBoundary) / 2); + _this.topBoundary === _this.bottomBoundary && _this.leftBoundary === _this.rightBoundary && (_this._boundaryFullyCovered = true); + } + return true; + }, + step: function step(dt) { + var targetWorldPos = this.target.convertToWorldSpaceAR(cc.Vec2.ZERO); + var followedWorldPos = this._followedNode.convertToWorldSpaceAR(cc.Vec2.ZERO); + var delta = targetWorldPos.sub(followedWorldPos); + var tempPos = this.target.parent.convertToNodeSpaceAR(delta.add(this._halfScreenSize)); + if (this._boundarySet) { + if (this._boundaryFullyCovered) return; + this.target.setPosition(misc.clampf(tempPos.x, this.leftBoundary, this.rightBoundary), misc.clampf(tempPos.y, this.bottomBoundary, this.topBoundary)); + } else this.target.setPosition(tempPos.x, tempPos.y); + }, + isDone: function isDone() { + return !this._followedNode.activeInHierarchy; + }, + stop: function stop() { + this.target = null; + cc.Action.prototype.stop.call(this); + } + }); + cc.follow = function (followedNode, rect) { + return new cc.Follow(followedNode, rect); + }; + }), { + "../core/platform/CCClass": 239, + "../core/utils/misc": 324 + }], + 3: [(function (require, module, exports) { + "use strict"; + function cardinalSplineAt(p0, p1, p2, p3, tension, t) { + var t2 = t * t; + var t3 = t2 * t; + var s = (1 - tension) / 2; + var b1 = s * (2 * t2 - t3 - t); + var b2 = s * (-t3 + t2) + (2 * t3 - 3 * t2 + 1); + var b3 = s * (t3 - 2 * t2 + t) + (-2 * t3 + 3 * t2); + var b4 = s * (t3 - t2); + var x = p0.x * b1 + p1.x * b2 + p2.x * b3 + p3.x * b4; + var y = p0.y * b1 + p1.y * b2 + p2.y * b3 + p3.y * b4; + return cc.v2(x, y); + } + function getControlPointAt(controlPoints, pos) { + var p = Math.min(controlPoints.length - 1, Math.max(pos, 0)); + return controlPoints[p]; + } + function reverseControlPoints(controlPoints) { + var newArray = []; + for (var i = controlPoints.length - 1; i >= 0; i--) newArray.push(cc.v2(controlPoints[i].x, controlPoints[i].y)); + return newArray; + } + function cloneControlPoints(controlPoints) { + var newArray = []; + for (var i = 0; i < controlPoints.length; i++) newArray.push(cc.v2(controlPoints[i].x, controlPoints[i].y)); + return newArray; + } + cc.CardinalSplineTo = cc.Class({ + name: "cc.CardinalSplineTo", + extends: cc.ActionInterval, + ctor: function ctor(duration, points, tension) { + this._points = []; + this._deltaT = 0; + this._tension = 0; + this._previousPosition = null; + this._accumulatedDiff = null; + void 0 !== tension && cc.CardinalSplineTo.prototype.initWithDuration.call(this, duration, points, tension); + }, + initWithDuration: function initWithDuration(duration, points, tension) { + if (!points || 0 === points.length) { + cc.errorID(1024); + return false; + } + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this.setPoints(points); + this._tension = tension; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.CardinalSplineTo(); + action.initWithDuration(this._duration, cloneControlPoints(this._points), this._tension); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._deltaT = 1 / (this._points.length - 1); + this._previousPosition = cc.v2(this.target.x, this.target.y); + this._accumulatedDiff = cc.v2(0, 0); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + var p, lt; + var ps = this._points; + if (1 === dt) { + p = ps.length - 1; + lt = 1; + } else { + var locDT = this._deltaT; + p = 0 | dt / locDT; + lt = (dt - locDT * p) / locDT; + } + var newPos = cardinalSplineAt(getControlPointAt(ps, p - 1), getControlPointAt(ps, p - 0), getControlPointAt(ps, p + 1), getControlPointAt(ps, p + 2), this._tension, lt); + if (cc.macro.ENABLE_STACKABLE_ACTIONS) { + var tempX, tempY; + tempX = this.target.x - this._previousPosition.x; + tempY = this.target.y - this._previousPosition.y; + if (0 !== tempX || 0 !== tempY) { + var locAccDiff = this._accumulatedDiff; + tempX = locAccDiff.x + tempX; + tempY = locAccDiff.y + tempY; + locAccDiff.x = tempX; + locAccDiff.y = tempY; + newPos.x += tempX; + newPos.y += tempY; + } + } + this.updatePosition(newPos); + }, + reverse: function reverse() { + var reversePoints = reverseControlPoints(this._points); + return cc.cardinalSplineTo(this._duration, reversePoints, this._tension); + }, + updatePosition: function updatePosition(newPos) { + this.target.setPosition(newPos); + this._previousPosition = newPos; + }, + getPoints: function getPoints() { + return this._points; + }, + setPoints: function setPoints(points) { + this._points = points; + } + }); + cc.cardinalSplineTo = function (duration, points, tension) { + return new cc.CardinalSplineTo(duration, points, tension); + }; + cc.CardinalSplineBy = cc.Class({ + name: "cc.CardinalSplineBy", + extends: cc.CardinalSplineTo, + ctor: function ctor(duration, points, tension) { + this._startPosition = cc.v2(0, 0); + void 0 !== tension && this.initWithDuration(duration, points, tension); + }, + startWithTarget: function startWithTarget(target) { + cc.CardinalSplineTo.prototype.startWithTarget.call(this, target); + this._startPosition.x = target.x; + this._startPosition.y = target.y; + }, + reverse: function reverse() { + var copyConfig = this._points.slice(); + var current; + var p = copyConfig[0]; + for (var i = 1; i < copyConfig.length; ++i) { + current = copyConfig[i]; + copyConfig[i] = current.sub(p); + p = current; + } + var reverseArray = reverseControlPoints(copyConfig); + p = reverseArray[reverseArray.length - 1]; + reverseArray.pop(); + p.x = -p.x; + p.y = -p.y; + reverseArray.unshift(p); + for (var i = 1; i < reverseArray.length; ++i) { + current = reverseArray[i]; + current.x = -current.x; + current.y = -current.y; + current.x += p.x; + current.y += p.y; + reverseArray[i] = current; + p = current; + } + return cc.cardinalSplineBy(this._duration, reverseArray, this._tension); + }, + updatePosition: function updatePosition(newPos) { + var pos = this._startPosition; + var posX = newPos.x + pos.x; + var posY = newPos.y + pos.y; + this._previousPosition.x = posX; + this._previousPosition.y = posY; + this.target.setPosition(posX, posY); + }, + clone: function clone() { + var a = new cc.CardinalSplineBy(); + a.initWithDuration(this._duration, cloneControlPoints(this._points), this._tension); + return a; + } + }); + cc.cardinalSplineBy = function (duration, points, tension) { + return new cc.CardinalSplineBy(duration, points, tension); + }; + cc.CatmullRomTo = cc.Class({ + name: "cc.CatmullRomTo", + extends: cc.CardinalSplineTo, + ctor: function ctor(dt, points) { + points && this.initWithDuration(dt, points); + }, + initWithDuration: function initWithDuration(dt, points) { + return cc.CardinalSplineTo.prototype.initWithDuration.call(this, dt, points, .5); + }, + clone: function clone() { + var action = new cc.CatmullRomTo(); + action.initWithDuration(this._duration, cloneControlPoints(this._points)); + return action; + } + }); + cc.catmullRomTo = function (dt, points) { + return new cc.CatmullRomTo(dt, points); + }; + cc.CatmullRomBy = cc.Class({ + name: "cc.CatmullRomBy", + extends: cc.CardinalSplineBy, + ctor: function ctor(dt, points) { + points && this.initWithDuration(dt, points); + }, + initWithDuration: function initWithDuration(dt, points) { + return cc.CardinalSplineTo.prototype.initWithDuration.call(this, dt, points, .5); + }, + clone: function clone() { + var action = new cc.CatmullRomBy(); + action.initWithDuration(this._duration, cloneControlPoints(this._points)); + return action; + } + }); + cc.catmullRomBy = function (dt, points) { + return new cc.CatmullRomBy(dt, points); + }; + }), {}], + 4: [(function (require, module, exports) { + "use strict"; + cc.easeIn = function (rate) { + return { + _rate: rate, + easing: function easing(dt) { + return Math.pow(dt, this._rate); + }, + reverse: function reverse() { + return cc.easeIn(1 / this._rate); + } + }; + }; + cc.easeOut = function (rate) { + return { + _rate: rate, + easing: function easing(dt) { + return Math.pow(dt, 1 / this._rate); + }, + reverse: function reverse() { + return cc.easeOut(1 / this._rate); + } + }; + }; + cc.easeInOut = function (rate) { + return { + _rate: rate, + easing: function easing(dt) { + dt *= 2; + return dt < 1 ? .5 * Math.pow(dt, this._rate) : 1 - .5 * Math.pow(2 - dt, this._rate); + }, + reverse: function reverse() { + return cc.easeInOut(this._rate); + } + }; + }; + var _easeExponentialInObj = { + easing: function easing(dt) { + return 0 === dt ? 0 : Math.pow(2, 10 * (dt - 1)); + }, + reverse: function reverse() { + return _easeExponentialOutObj; + } + }; + cc.easeExponentialIn = function () { + return _easeExponentialInObj; + }; + var _easeExponentialOutObj = { + easing: function easing(dt) { + return 1 === dt ? 1 : 1 - Math.pow(2, -10 * dt); + }, + reverse: function reverse() { + return _easeExponentialInObj; + } + }; + cc.easeExponentialOut = function () { + return _easeExponentialOutObj; + }; + var _easeExponentialInOutObj = { + easing: function easing(dt) { + if (1 !== dt && 0 !== dt) { + dt *= 2; + return dt < 1 ? .5 * Math.pow(2, 10 * (dt - 1)) : .5 * (2 - Math.pow(2, -10 * (dt - 1))); + } + return dt; + }, + reverse: function reverse() { + return _easeExponentialInOutObj; + } + }; + cc.easeExponentialInOut = function () { + return _easeExponentialInOutObj; + }; + var _easeSineInObj = { + easing: function easing(dt) { + return 0 === dt || 1 === dt ? dt : -1 * Math.cos(dt * Math.PI / 2) + 1; + }, + reverse: function reverse() { + return _easeSineOutObj; + } + }; + cc.easeSineIn = function () { + return _easeSineInObj; + }; + var _easeSineOutObj = { + easing: function easing(dt) { + return 0 === dt || 1 === dt ? dt : Math.sin(dt * Math.PI / 2); + }, + reverse: function reverse() { + return _easeSineInObj; + } + }; + cc.easeSineOut = function () { + return _easeSineOutObj; + }; + var _easeSineInOutObj = { + easing: function easing(dt) { + return 0 === dt || 1 === dt ? dt : -.5 * (Math.cos(Math.PI * dt) - 1); + }, + reverse: function reverse() { + return _easeSineInOutObj; + } + }; + cc.easeSineInOut = function () { + return _easeSineInOutObj; + }; + var _easeElasticInObj = { + easing: function easing(dt) { + if (0 === dt || 1 === dt) return dt; + dt -= 1; + return -Math.pow(2, 10 * dt) * Math.sin((dt - .075) * Math.PI * 2 / .3); + }, + reverse: function reverse() { + return _easeElasticOutObj; + } + }; + cc.easeElasticIn = function (period) { + if (period && .3 !== period) return { + _period: period, + easing: function easing(dt) { + if (0 === dt || 1 === dt) return dt; + dt -= 1; + return -Math.pow(2, 10 * dt) * Math.sin((dt - this._period / 4) * Math.PI * 2 / this._period); + }, + reverse: function reverse() { + return cc.easeElasticOut(this._period); + } + }; + return _easeElasticInObj; + }; + var _easeElasticOutObj = { + easing: function easing(dt) { + return 0 === dt || 1 === dt ? dt : Math.pow(2, -10 * dt) * Math.sin((dt - .075) * Math.PI * 2 / .3) + 1; + }, + reverse: function reverse() { + return _easeElasticInObj; + } + }; + cc.easeElasticOut = function (period) { + if (period && .3 !== period) return { + _period: period, + easing: function easing(dt) { + return 0 === dt || 1 === dt ? dt : Math.pow(2, -10 * dt) * Math.sin((dt - this._period / 4) * Math.PI * 2 / this._period) + 1; + }, + reverse: function reverse() { + return cc.easeElasticIn(this._period); + } + }; + return _easeElasticOutObj; + }; + cc.easeElasticInOut = function (period) { + period = period || .3; + return { + _period: period, + easing: function easing(dt) { + var newT = 0; + var locPeriod = this._period; + if (0 === dt || 1 === dt) newT = dt; else { + dt *= 2; + locPeriod || (locPeriod = this._period = .3 * 1.5); + var s = locPeriod / 4; + dt -= 1; + newT = dt < 0 ? -.5 * Math.pow(2, 10 * dt) * Math.sin((dt - s) * Math.PI * 2 / locPeriod) : Math.pow(2, -10 * dt) * Math.sin((dt - s) * Math.PI * 2 / locPeriod) * .5 + 1; + } + return newT; + }, + reverse: function reverse() { + return cc.easeElasticInOut(this._period); + } + }; + }; + function _bounceTime(time1) { + if (time1 < 1 / 2.75) return 7.5625 * time1 * time1; + if (time1 < 2 / 2.75) { + time1 -= 1.5 / 2.75; + return 7.5625 * time1 * time1 + .75; + } + if (time1 < 2.5 / 2.75) { + time1 -= 2.25 / 2.75; + return 7.5625 * time1 * time1 + .9375; + } + time1 -= 2.625 / 2.75; + return 7.5625 * time1 * time1 + .984375; + } + var _easeBounceInObj = { + easing: function easing(dt) { + return 1 - _bounceTime(1 - dt); + }, + reverse: function reverse() { + return _easeBounceOutObj; + } + }; + cc.easeBounceIn = function () { + return _easeBounceInObj; + }; + var _easeBounceOutObj = { + easing: function easing(dt) { + return _bounceTime(dt); + }, + reverse: function reverse() { + return _easeBounceInObj; + } + }; + cc.easeBounceOut = function () { + return _easeBounceOutObj; + }; + var _easeBounceInOutObj = { + easing: function easing(time1) { + var newT; + if (time1 < .5) { + time1 *= 2; + newT = .5 * (1 - _bounceTime(1 - time1)); + } else newT = .5 * _bounceTime(2 * time1 - 1) + .5; + return newT; + }, + reverse: function reverse() { + return _easeBounceInOutObj; + } + }; + cc.easeBounceInOut = function () { + return _easeBounceInOutObj; + }; + var _easeBackInObj = { + easing: function easing(time1) { + var overshoot = 1.70158; + return 0 === time1 || 1 === time1 ? time1 : time1 * time1 * ((overshoot + 1) * time1 - overshoot); + }, + reverse: function reverse() { + return _easeBackOutObj; + } + }; + cc.easeBackIn = function () { + return _easeBackInObj; + }; + var _easeBackOutObj = { + easing: function easing(time1) { + if (0 === time1) return 0; + var overshoot = 1.70158; + time1 -= 1; + return time1 * time1 * ((overshoot + 1) * time1 + overshoot) + 1; + }, + reverse: function reverse() { + return _easeBackInObj; + } + }; + cc.easeBackOut = function () { + return _easeBackOutObj; + }; + var _easeBackInOutObj = { + easing: function easing(time1) { + var overshoot = 2.5949095; + time1 *= 2; + if (time1 < 1) return time1 * time1 * ((overshoot + 1) * time1 - overshoot) / 2; + time1 -= 2; + return time1 * time1 * ((overshoot + 1) * time1 + overshoot) / 2 + 1; + }, + reverse: function reverse() { + return _easeBackInOutObj; + } + }; + cc.easeBackInOut = function () { + return _easeBackInOutObj; + }; + cc.easeBezierAction = function (a, b, c, d) { + return { + easing: function easing(t) { + return Math.pow(1 - t, 3) * a + 3 * t * Math.pow(1 - t, 2) * b + 3 * Math.pow(t, 2) * (1 - t) * c + Math.pow(t, 3) * d; + }, + reverse: function reverse() { + return cc.easeBezierAction(d, c, b, a); + } + }; + }; + var _easeQuadraticActionIn = { + easing: function easing(time) { + return Math.pow(time, 2); + }, + reverse: function reverse() { + return _easeQuadraticActionIn; + } + }; + cc.easeQuadraticActionIn = function () { + return _easeQuadraticActionIn; + }; + var _easeQuadraticActionOut = { + easing: function easing(time) { + return -time * (time - 2); + }, + reverse: function reverse() { + return _easeQuadraticActionOut; + } + }; + cc.easeQuadraticActionOut = function () { + return _easeQuadraticActionOut; + }; + var _easeQuadraticActionInOut = { + easing: function easing(time) { + var resultTime = time; + time *= 2; + if (time < 1) resultTime = time * time * .5; else { + --time; + resultTime = -.5 * (time * (time - 2) - 1); + } + return resultTime; + }, + reverse: function reverse() { + return _easeQuadraticActionInOut; + } + }; + cc.easeQuadraticActionInOut = function () { + return _easeQuadraticActionInOut; + }; + var _easeQuarticActionIn = { + easing: function easing(time) { + return time * time * time * time; + }, + reverse: function reverse() { + return _easeQuarticActionIn; + } + }; + cc.easeQuarticActionIn = function () { + return _easeQuarticActionIn; + }; + var _easeQuarticActionOut = { + easing: function easing(time) { + time -= 1; + return -(time * time * time * time - 1); + }, + reverse: function reverse() { + return _easeQuarticActionOut; + } + }; + cc.easeQuarticActionOut = function () { + return _easeQuarticActionOut; + }; + var _easeQuarticActionInOut = { + easing: function easing(time) { + time *= 2; + if (time < 1) return .5 * time * time * time * time; + time -= 2; + return -.5 * (time * time * time * time - 2); + }, + reverse: function reverse() { + return _easeQuarticActionInOut; + } + }; + cc.easeQuarticActionInOut = function () { + return _easeQuarticActionInOut; + }; + var _easeQuinticActionIn = { + easing: function easing(time) { + return time * time * time * time * time; + }, + reverse: function reverse() { + return _easeQuinticActionIn; + } + }; + cc.easeQuinticActionIn = function () { + return _easeQuinticActionIn; + }; + var _easeQuinticActionOut = { + easing: function easing(time) { + time -= 1; + return time * time * time * time * time + 1; + }, + reverse: function reverse() { + return _easeQuinticActionOut; + } + }; + cc.easeQuinticActionOut = function () { + return _easeQuinticActionOut; + }; + var _easeQuinticActionInOut = { + easing: function easing(time) { + time *= 2; + if (time < 1) return .5 * time * time * time * time * time; + time -= 2; + return .5 * (time * time * time * time * time + 2); + }, + reverse: function reverse() { + return _easeQuinticActionInOut; + } + }; + cc.easeQuinticActionInOut = function () { + return _easeQuinticActionInOut; + }; + var _easeCircleActionIn = { + easing: function easing(time) { + return -1 * (Math.sqrt(1 - time * time) - 1); + }, + reverse: function reverse() { + return _easeCircleActionIn; + } + }; + cc.easeCircleActionIn = function () { + return _easeCircleActionIn; + }; + var _easeCircleActionOut = { + easing: function easing(time) { + time -= 1; + return Math.sqrt(1 - time * time); + }, + reverse: function reverse() { + return _easeCircleActionOut; + } + }; + cc.easeCircleActionOut = function () { + return _easeCircleActionOut; + }; + var _easeCircleActionInOut = { + easing: function easing(time) { + time *= 2; + if (time < 1) return -.5 * (Math.sqrt(1 - time * time) - 1); + time -= 2; + return .5 * (Math.sqrt(1 - time * time) + 1); + }, + reverse: function reverse() { + return _easeCircleActionInOut; + } + }; + cc.easeCircleActionInOut = function () { + return _easeCircleActionInOut; + }; + var _easeCubicActionIn = { + easing: function easing(time) { + return time * time * time; + }, + reverse: function reverse() { + return _easeCubicActionIn; + } + }; + cc.easeCubicActionIn = function () { + return _easeCubicActionIn; + }; + var _easeCubicActionOut = { + easing: function easing(time) { + time -= 1; + return time * time * time + 1; + }, + reverse: function reverse() { + return _easeCubicActionOut; + } + }; + cc.easeCubicActionOut = function () { + return _easeCubicActionOut; + }; + var _easeCubicActionInOut = { + easing: function easing(time) { + time *= 2; + if (time < 1) return .5 * time * time * time; + time -= 2; + return .5 * (time * time * time + 2); + }, + reverse: function reverse() { + return _easeCubicActionInOut; + } + }; + cc.easeCubicActionInOut = function () { + return _easeCubicActionInOut; + }; + }), {}], + 5: [(function (require, module, exports) { + "use strict"; + cc.ActionInstant = cc.Class({ + name: "cc.ActionInstant", + extends: cc.FiniteTimeAction, + isDone: function isDone() { + return true; + }, + step: function step(dt) { + this.update(1); + }, + update: function update(dt) { }, + reverse: function reverse() { + return this.clone(); + }, + clone: function clone() { + return new cc.ActionInstant(); + } + }); + cc.Show = cc.Class({ + name: "cc.Show", + extends: cc.ActionInstant, + update: function update(dt) { + var _renderComps = this.target.getComponentsInChildren(cc.RenderComponent); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = true; + } + }, + reverse: function reverse() { + return new cc.Hide(); + }, + clone: function clone() { + return new cc.Show(); + } + }); + cc.show = function () { + return new cc.Show(); + }; + cc.Hide = cc.Class({ + name: "cc.Hide", + extends: cc.ActionInstant, + update: function update(dt) { + var _renderComps = this.target.getComponentsInChildren(cc.RenderComponent); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = false; + } + }, + reverse: function reverse() { + return new cc.Show(); + }, + clone: function clone() { + return new cc.Hide(); + } + }); + cc.hide = function () { + return new cc.Hide(); + }; + cc.ToggleVisibility = cc.Class({ + name: "cc.ToggleVisibility", + extends: cc.ActionInstant, + update: function update(dt) { + var _renderComps = this.target.getComponentsInChildren(cc.RenderComponent); + for (var i = 0; i < _renderComps.length; ++i) { + var render = _renderComps[i]; + render.enabled = !render.enabled; + } + }, + reverse: function reverse() { + return new cc.ToggleVisibility(); + }, + clone: function clone() { + return new cc.ToggleVisibility(); + } + }); + cc.toggleVisibility = function () { + return new cc.ToggleVisibility(); + }; + cc.RemoveSelf = cc.Class({ + name: "cc.RemoveSelf", + extends: cc.ActionInstant, + ctor: function ctor(isNeedCleanUp) { + this._isNeedCleanUp = true; + void 0 !== isNeedCleanUp && this.init(isNeedCleanUp); + }, + update: function update(dt) { + this.target.removeFromParent(this._isNeedCleanUp); + }, + init: function init(isNeedCleanUp) { + this._isNeedCleanUp = isNeedCleanUp; + return true; + }, + reverse: function reverse() { + return new cc.RemoveSelf(this._isNeedCleanUp); + }, + clone: function clone() { + return new cc.RemoveSelf(this._isNeedCleanUp); + } + }); + cc.removeSelf = function (isNeedCleanUp) { + return new cc.RemoveSelf(isNeedCleanUp); + }; + cc.DestroySelf = cc.Class({ + name: "cc.DestroySelf", + extends: cc.ActionInstant, + update: function update() { + this.target.destroy(); + }, + reverse: function reverse() { + return new cc.DestroySelf(); + }, + clone: function clone() { + return new cc.DestroySelf(); + } + }); + cc.destroySelf = function () { + return new cc.DestroySelf(); + }; + cc.FlipX = cc.Class({ + name: "cc.FlipX", + extends: cc.ActionInstant, + ctor: function ctor(flip) { + this._flippedX = false; + void 0 !== flip && this.initWithFlipX(flip); + }, + initWithFlipX: function initWithFlipX(flip) { + this._flippedX = flip; + return true; + }, + update: function update(dt) { + this.target.scaleX = Math.abs(this.target.scaleX) * (this._flippedX ? -1 : 1); + }, + reverse: function reverse() { + return new cc.FlipX(!this._flippedX); + }, + clone: function clone() { + var action = new cc.FlipX(); + action.initWithFlipX(this._flippedX); + return action; + } + }); + cc.flipX = function (flip) { + return new cc.FlipX(flip); + }; + cc.FlipY = cc.Class({ + name: "cc.FlipY", + extends: cc.ActionInstant, + ctor: function ctor(flip) { + this._flippedY = false; + void 0 !== flip && this.initWithFlipY(flip); + }, + initWithFlipY: function initWithFlipY(flip) { + this._flippedY = flip; + return true; + }, + update: function update(dt) { + this.target.scaleY = Math.abs(this.target.scaleY) * (this._flippedY ? -1 : 1); + }, + reverse: function reverse() { + return new cc.FlipY(!this._flippedY); + }, + clone: function clone() { + var action = new cc.FlipY(); + action.initWithFlipY(this._flippedY); + return action; + } + }); + cc.flipY = function (flip) { + return new cc.FlipY(flip); + }; + cc.Place = cc.Class({ + name: "cc.Place", + extends: cc.ActionInstant, + ctor: function ctor(pos, y) { + this._x = 0; + this._y = 0; + if (void 0 !== pos) { + if (void 0 !== pos.x) { + y = pos.y; + pos = pos.x; + } + this.initWithPosition(pos, y); + } + }, + initWithPosition: function initWithPosition(x, y) { + this._x = x; + this._y = y; + return true; + }, + update: function update(dt) { + this.target.setPosition(this._x, this._y); + }, + clone: function clone() { + var action = new cc.Place(); + action.initWithPosition(this._x, this._y); + return action; + } + }); + cc.place = function (pos, y) { + return new cc.Place(pos, y); + }; + cc.CallFunc = cc.Class({ + name: "cc.CallFunc", + extends: cc.ActionInstant, + ctor: function ctor(selector, selectorTarget, data) { + this._selectorTarget = null; + this._function = null; + this._data = null; + this.initWithFunction(selector, selectorTarget, data); + }, + initWithFunction: function initWithFunction(selector, selectorTarget, data) { + selector && (this._function = selector); + selectorTarget && (this._selectorTarget = selectorTarget); + void 0 !== data && (this._data = data); + return true; + }, + execute: function execute() { + this._function && this._function.call(this._selectorTarget, this.target, this._data); + }, + update: function update(dt) { + this.execute(); + }, + getTargetCallback: function getTargetCallback() { + return this._selectorTarget; + }, + setTargetCallback: function setTargetCallback(sel) { + if (sel !== this._selectorTarget) { + this._selectorTarget && (this._selectorTarget = null); + this._selectorTarget = sel; + } + }, + clone: function clone() { + var action = new cc.CallFunc(); + action.initWithFunction(this._function, this._selectorTarget, this._data); + return action; + } + }); + cc.callFunc = function (selector, selectorTarget, data) { + return new cc.CallFunc(selector, selectorTarget, data); + }; + }), {}], + 6: [(function (require, module, exports) { + "use strict"; + cc.ActionInterval = cc.Class({ + name: "cc.ActionInterval", + extends: cc.FiniteTimeAction, + ctor: function ctor(d) { + this.MAX_VALUE = 2; + this._elapsed = 0; + this._firstTick = false; + this._easeList = null; + this._speed = 1; + this._timesForRepeat = 1; + this._repeatForever = false; + this._repeatMethod = false; + this._speedMethod = false; + void 0 !== d && cc.ActionInterval.prototype.initWithDuration.call(this, d); + }, + getElapsed: function getElapsed() { + return this._elapsed; + }, + initWithDuration: function initWithDuration(d) { + this._duration = 0 === d ? cc.macro.FLT_EPSILON : d; + this._elapsed = 0; + this._firstTick = true; + return true; + }, + isDone: function isDone() { + return this._elapsed >= this._duration; + }, + _cloneDecoration: function _cloneDecoration(action) { + action._repeatForever = this._repeatForever; + action._speed = this._speed; + action._timesForRepeat = this._timesForRepeat; + action._easeList = this._easeList; + action._speedMethod = this._speedMethod; + action._repeatMethod = this._repeatMethod; + }, + _reverseEaseList: function _reverseEaseList(action) { + if (this._easeList) { + action._easeList = []; + for (var i = 0; i < this._easeList.length; i++) action._easeList.push(this._easeList[i].reverse()); + } + }, + clone: function clone() { + var action = new cc.ActionInterval(this._duration); + this._cloneDecoration(action); + return action; + }, + easing: function easing(easeObj) { + this._easeList ? this._easeList.length = 0 : this._easeList = []; + for (var i = 0; i < arguments.length; i++) this._easeList.push(arguments[i]); + return this; + }, + _computeEaseTime: function _computeEaseTime(dt) { + var locList = this._easeList; + if (!locList || 0 === locList.length) return dt; + for (var i = 0, n = locList.length; i < n; i++) dt = locList[i].easing(dt); + return dt; + }, + step: function step(dt) { + if (this._firstTick) { + this._firstTick = false; + this._elapsed = 0; + } else this._elapsed += dt; + var t = this._elapsed / (this._duration > 1.192092896e-7 ? this._duration : 1.192092896e-7); + t = 1 > t ? t : 1; + this.update(t > 0 ? t : 0); + if (this._repeatMethod && this._timesForRepeat > 1 && this.isDone()) { + this._repeatForever || this._timesForRepeat--; + this.startWithTarget(this.target); + this.step(this._elapsed - this._duration); + } + }, + startWithTarget: function startWithTarget(target) { + cc.Action.prototype.startWithTarget.call(this, target); + this._elapsed = 0; + this._firstTick = true; + }, + reverse: function reverse() { + cc.logID(1010); + return null; + }, + setAmplitudeRate: function setAmplitudeRate(amp) { + cc.logID(1011); + }, + getAmplitudeRate: function getAmplitudeRate() { + cc.logID(1012); + return 0; + }, + speed: function speed(_speed) { + if (_speed <= 0) { + cc.logID(1013); + return this; + } + this._speedMethod = true; + this._speed *= _speed; + return this; + }, + getSpeed: function getSpeed() { + return this._speed; + }, + setSpeed: function setSpeed(speed) { + this._speed = speed; + return this; + }, + repeat: function repeat(times) { + times = Math.round(times); + if (isNaN(times) || times < 1) { + cc.logID(1014); + return this; + } + this._repeatMethod = true; + this._timesForRepeat *= times; + return this; + }, + repeatForever: function repeatForever() { + this._repeatMethod = true; + this._timesForRepeat = this.MAX_VALUE; + this._repeatForever = true; + return this; + } + }); + cc.actionInterval = function (d) { + return new cc.ActionInterval(d); + }; + cc.Sequence = cc.Class({ + name: "cc.Sequence", + extends: cc.ActionInterval, + ctor: function ctor(tempArray) { + this._actions = []; + this._split = null; + this._last = 0; + this._reversed = false; + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (1 === paramArray.length) { + cc.errorID(1019); + return; + } + var last = paramArray.length - 1; + last >= 0 && null == paramArray[last] && cc.logID(1015); + if (last >= 0) { + var prev = paramArray[0], action1; + for (var i = 1; i < last; i++) if (paramArray[i]) { + action1 = prev; + prev = cc.Sequence._actionOneTwo(action1, paramArray[i]); + } + this.initWithTwoActions(prev, paramArray[last]); + } + }, + initWithTwoActions: function initWithTwoActions(actionOne, actionTwo) { + if (!actionOne || !actionTwo) { + cc.errorID(1025); + return false; + } + var durationOne = actionOne._duration, durationTwo = actionTwo._duration; + durationOne *= actionOne._repeatMethod ? actionOne._timesForRepeat : 1; + durationTwo *= actionTwo._repeatMethod ? actionTwo._timesForRepeat : 1; + var d = durationOne + durationTwo; + this.initWithDuration(d); + this._actions[0] = actionOne; + this._actions[1] = actionTwo; + return true; + }, + clone: function clone() { + var action = new cc.Sequence(); + this._cloneDecoration(action); + action.initWithTwoActions(this._actions[0].clone(), this._actions[1].clone()); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._split = this._actions[0]._duration / this._duration; + this._split *= this._actions[0]._repeatMethod ? this._actions[0]._timesForRepeat : 1; + this._last = -1; + }, + stop: function stop() { + -1 !== this._last && this._actions[this._last].stop(); + cc.Action.prototype.stop.call(this); + }, + update: function update(dt) { + var new_t, found = 0; + var locSplit = this._split, locActions = this._actions, locLast = this._last, actionFound; + dt = this._computeEaseTime(dt); + if (dt < locSplit) { + new_t = 0 !== locSplit ? dt / locSplit : 1; + if (0 === found && 1 === locLast && this._reversed) { + locActions[1].update(0); + locActions[1].stop(); + } + } else { + found = 1; + new_t = 1 === locSplit ? 1 : (dt - locSplit) / (1 - locSplit); + if (-1 === locLast) { + locActions[0].startWithTarget(this.target); + locActions[0].update(1); + locActions[0].stop(); + } + if (0 === locLast) { + locActions[0].update(1); + locActions[0].stop(); + } + } + actionFound = locActions[found]; + if (locLast === found && actionFound.isDone()) return; + locLast !== found && actionFound.startWithTarget(this.target); + new_t *= actionFound._timesForRepeat; + actionFound.update(new_t > 1 ? new_t % 1 : new_t); + this._last = found; + }, + reverse: function reverse() { + var action = cc.Sequence._actionOneTwo(this._actions[1].reverse(), this._actions[0].reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + action._reversed = true; + return action; + } + }); + cc.sequence = function (tempArray) { + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (1 === paramArray.length) { + cc.errorID(1019); + return null; + } + var last = paramArray.length - 1; + last >= 0 && null == paramArray[last] && cc.logID(1015); + var result = null; + if (last >= 0) { + result = paramArray[0]; + for (var i = 1; i <= last; i++) paramArray[i] && (result = cc.Sequence._actionOneTwo(result, paramArray[i])); + } + return result; + }; + cc.Sequence._actionOneTwo = function (actionOne, actionTwo) { + var sequence = new cc.Sequence(); + sequence.initWithTwoActions(actionOne, actionTwo); + return sequence; + }; + cc.Repeat = cc.Class({ + name: "cc.Repeat", + extends: cc.ActionInterval, + ctor: function ctor(action, times) { + this._times = 0; + this._total = 0; + this._nextDt = 0; + this._actionInstant = false; + this._innerAction = null; + void 0 !== times && this.initWithAction(action, times); + }, + initWithAction: function initWithAction(action, times) { + var duration = action._duration * times; + if (this.initWithDuration(duration)) { + this._times = times; + this._innerAction = action; + if (action instanceof cc.ActionInstant) { + this._actionInstant = true; + this._times -= 1; + } + this._total = 0; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.Repeat(); + this._cloneDecoration(action); + action.initWithAction(this._innerAction.clone(), this._times); + return action; + }, + startWithTarget: function startWithTarget(target) { + this._total = 0; + this._nextDt = this._innerAction._duration / this._duration; + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }, + stop: function stop() { + this._innerAction.stop(); + cc.Action.prototype.stop.call(this); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + var locInnerAction = this._innerAction; + var locDuration = this._duration; + var locTimes = this._times; + var locNextDt = this._nextDt; + if (dt >= locNextDt) { + while (dt > locNextDt && this._total < locTimes) { + locInnerAction.update(1); + this._total++; + locInnerAction.stop(); + locInnerAction.startWithTarget(this.target); + locNextDt += locInnerAction._duration / locDuration; + this._nextDt = locNextDt > 1 ? 1 : locNextDt; + } + if (dt >= 1 && this._total < locTimes) { + locInnerAction.update(1); + this._total++; + } + this._actionInstant || (this._total === locTimes ? locInnerAction.stop() : locInnerAction.update(dt - (locNextDt - locInnerAction._duration / locDuration))); + } else locInnerAction.update(dt * locTimes % 1); + }, + isDone: function isDone() { + return this._total === this._times; + }, + reverse: function reverse() { + var action = new cc.Repeat(this._innerAction.reverse(), this._times); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + setInnerAction: function setInnerAction(action) { + this._innerAction !== action && (this._innerAction = action); + }, + getInnerAction: function getInnerAction() { + return this._innerAction; + } + }); + cc.repeat = function (action, times) { + return new cc.Repeat(action, times); + }; + cc.RepeatForever = cc.Class({ + name: "cc.RepeatForever", + extends: cc.ActionInterval, + ctor: function ctor(action) { + this._innerAction = null; + action && this.initWithAction(action); + }, + initWithAction: function initWithAction(action) { + if (!action) { + cc.errorID(1026); + return false; + } + this._innerAction = action; + return true; + }, + clone: function clone() { + var action = new cc.RepeatForever(); + this._cloneDecoration(action); + action.initWithAction(this._innerAction.clone()); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._innerAction.startWithTarget(target); + }, + step: function step(dt) { + var locInnerAction = this._innerAction; + locInnerAction.step(dt); + if (locInnerAction.isDone()) { + locInnerAction.startWithTarget(this.target); + locInnerAction.step(locInnerAction.getElapsed() - locInnerAction._duration); + } + }, + isDone: function isDone() { + return false; + }, + reverse: function reverse() { + var action = new cc.RepeatForever(this._innerAction.reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + setInnerAction: function setInnerAction(action) { + this._innerAction !== action && (this._innerAction = action); + }, + getInnerAction: function getInnerAction() { + return this._innerAction; + } + }); + cc.repeatForever = function (action) { + return new cc.RepeatForever(action); + }; + cc.Spawn = cc.Class({ + name: "cc.Spawn", + extends: cc.ActionInterval, + ctor: function ctor(tempArray) { + this._one = null; + this._two = null; + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (1 === paramArray.length) { + cc.errorID(1020); + return; + } + var last = paramArray.length - 1; + last >= 0 && null == paramArray[last] && cc.logID(1015); + if (last >= 0) { + var prev = paramArray[0], action1; + for (var i = 1; i < last; i++) if (paramArray[i]) { + action1 = prev; + prev = cc.Spawn._actionOneTwo(action1, paramArray[i]); + } + this.initWithTwoActions(prev, paramArray[last]); + } + }, + initWithTwoActions: function initWithTwoActions(action1, action2) { + if (!action1 || !action2) { + cc.errorID(1027); + return false; + } + var ret = false; + var d1 = action1._duration; + var d2 = action2._duration; + if (this.initWithDuration(Math.max(d1, d2))) { + this._one = action1; + this._two = action2; + d1 > d2 ? this._two = cc.Sequence._actionOneTwo(action2, cc.delayTime(d1 - d2)) : d1 < d2 && (this._one = cc.Sequence._actionOneTwo(action1, cc.delayTime(d2 - d1))); + ret = true; + } + return ret; + }, + clone: function clone() { + var action = new cc.Spawn(); + this._cloneDecoration(action); + action.initWithTwoActions(this._one.clone(), this._two.clone()); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._one.startWithTarget(target); + this._two.startWithTarget(target); + }, + stop: function stop() { + this._one.stop(); + this._two.stop(); + cc.Action.prototype.stop.call(this); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this._one && this._one.update(dt); + this._two && this._two.update(dt); + }, + reverse: function reverse() { + var action = cc.Spawn._actionOneTwo(this._one.reverse(), this._two.reverse()); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.spawn = function (tempArray) { + var paramArray = tempArray instanceof Array ? tempArray : arguments; + if (1 === paramArray.length) { + cc.errorID(1020); + return null; + } + paramArray.length > 0 && null == paramArray[paramArray.length - 1] && cc.logID(1015); + var prev = paramArray[0]; + for (var i = 1; i < paramArray.length; i++) null != paramArray[i] && (prev = cc.Spawn._actionOneTwo(prev, paramArray[i])); + return prev; + }; + cc.Spawn._actionOneTwo = function (action1, action2) { + var pSpawn = new cc.Spawn(); + pSpawn.initWithTwoActions(action1, action2); + return pSpawn; + }; + cc.RotateTo = cc.Class({ + name: "cc.RotateTo", + extends: cc.ActionInterval, + statics: { + _reverse: false + }, + ctor: function ctor(duration, dstAngle) { + this._startAngle = 0; + this._dstAngle = 0; + this._angle = 0; + void 0 !== dstAngle && this.initWithDuration(duration, dstAngle); + }, + initWithDuration: function initWithDuration(duration, dstAngle) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._dstAngle = dstAngle; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.RotateTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._dstAngle); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var startAngle = target.angle % 360; + var angle = cc.RotateTo._reverse ? this._dstAngle - startAngle : this._dstAngle + startAngle; + angle > 180 && (angle -= 360); + angle < -180 && (angle += 360); + this._startAngle = startAngle; + this._angle = cc.RotateTo._reverse ? angle : -angle; + }, + reverse: function reverse() { + cc.logID(1016); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this.target && (this.target.angle = this._startAngle + this._angle * dt); + } + }); + cc.rotateTo = function (duration, dstAngle) { + return new cc.RotateTo(duration, dstAngle); + }; + cc.RotateBy = cc.Class({ + name: "cc.RotateBy", + extends: cc.ActionInterval, + statics: { + _reverse: false + }, + ctor: function ctor(duration, deltaAngle) { + deltaAngle *= cc.RotateBy._reverse ? 1 : -1; + this._deltaAngle = 0; + this._startAngle = 0; + void 0 !== deltaAngle && this.initWithDuration(duration, deltaAngle); + }, + initWithDuration: function initWithDuration(duration, deltaAngle) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._deltaAngle = deltaAngle; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.RotateBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._deltaAngle); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._startAngle = target.angle; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this.target && (this.target.angle = this._startAngle + this._deltaAngle * dt); + }, + reverse: function reverse() { + var action = new cc.RotateBy(); + action.initWithDuration(this._duration, -this._deltaAngle); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.rotateBy = function (duration, deltaAngle) { + return new cc.RotateBy(duration, deltaAngle); + }; + cc.MoveBy = cc.Class({ + name: "cc.MoveBy", + extends: cc.ActionInterval, + ctor: function ctor(duration, deltaPos, deltaY) { + this._positionDelta = cc.v2(0, 0); + this._startPosition = cc.v2(0, 0); + this._previousPosition = cc.v2(0, 0); + void 0 !== deltaPos && cc.MoveBy.prototype.initWithDuration.call(this, duration, deltaPos, deltaY); + }, + initWithDuration: function initWithDuration(duration, position, y) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + if (void 0 !== position.x) { + y = position.y; + position = position.x; + } + this._positionDelta.x = position; + this._positionDelta.y = y; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.MoveBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._positionDelta); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var locPosX = target.x; + var locPosY = target.y; + this._previousPosition.x = locPosX; + this._previousPosition.y = locPosY; + this._startPosition.x = locPosX; + this._startPosition.y = locPosY; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + var x = this._positionDelta.x * dt; + var y = this._positionDelta.y * dt; + var locStartPosition = this._startPosition; + if (cc.macro.ENABLE_STACKABLE_ACTIONS) { + var targetX = this.target.x; + var targetY = this.target.y; + var locPreviousPosition = this._previousPosition; + locStartPosition.x = locStartPosition.x + targetX - locPreviousPosition.x; + locStartPosition.y = locStartPosition.y + targetY - locPreviousPosition.y; + x += locStartPosition.x; + y += locStartPosition.y; + locPreviousPosition.x = x; + locPreviousPosition.y = y; + this.target.setPosition(x, y); + } else this.target.setPosition(locStartPosition.x + x, locStartPosition.y + y); + } + }, + reverse: function reverse() { + var action = new cc.MoveBy(this._duration, cc.v2(-this._positionDelta.x, -this._positionDelta.y)); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.moveBy = function (duration, deltaPos, deltaY) { + return new cc.MoveBy(duration, deltaPos, deltaY); + }; + cc.MoveTo = cc.Class({ + name: "cc.MoveTo", + extends: cc.MoveBy, + ctor: function ctor(duration, position, y) { + this._endPosition = cc.v2(0, 0); + void 0 !== position && this.initWithDuration(duration, position, y); + }, + initWithDuration: function initWithDuration(duration, position, y) { + if (cc.MoveBy.prototype.initWithDuration.call(this, duration, position, y)) { + if (void 0 !== position.x) { + y = position.y; + position = position.x; + } + this._endPosition.x = position; + this._endPosition.y = y; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.MoveTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._endPosition); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.MoveBy.prototype.startWithTarget.call(this, target); + this._positionDelta.x = this._endPosition.x - target.x; + this._positionDelta.y = this._endPosition.y - target.y; + } + }); + cc.moveTo = function (duration, position, y) { + return new cc.MoveTo(duration, position, y); + }; + cc.SkewTo = cc.Class({ + name: "cc.SkewTo", + extends: cc.ActionInterval, + ctor: function ctor(t, sx, sy) { + this._skewX = 0; + this._skewY = 0; + this._startSkewX = 0; + this._startSkewY = 0; + this._endSkewX = 0; + this._endSkewY = 0; + this._deltaX = 0; + this._deltaY = 0; + void 0 !== sy && cc.SkewTo.prototype.initWithDuration.call(this, t, sx, sy); + }, + initWithDuration: function initWithDuration(t, sx, sy) { + var ret = false; + if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) { + this._endSkewX = sx; + this._endSkewY = sy; + ret = true; + } + return ret; + }, + clone: function clone() { + var action = new cc.SkewTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._endSkewX, this._endSkewY); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._startSkewX = target.skewX % 180; + this._deltaX = this._endSkewX - this._startSkewX; + this._deltaX > 180 && (this._deltaX -= 360); + this._deltaX < -180 && (this._deltaX += 360); + this._startSkewY = target.skewY % 360; + this._deltaY = this._endSkewY - this._startSkewY; + this._deltaY > 180 && (this._deltaY -= 360); + this._deltaY < -180 && (this._deltaY += 360); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this.target.skewX = this._startSkewX + this._deltaX * dt; + this.target.skewY = this._startSkewY + this._deltaY * dt; + } + }); + cc.skewTo = function (t, sx, sy) { + return new cc.SkewTo(t, sx, sy); + }; + cc.SkewBy = cc.Class({ + name: "cc.SkewBy", + extends: cc.SkewTo, + ctor: function ctor(t, sx, sy) { + void 0 !== sy && this.initWithDuration(t, sx, sy); + }, + initWithDuration: function initWithDuration(t, deltaSkewX, deltaSkewY) { + var ret = false; + if (cc.SkewTo.prototype.initWithDuration.call(this, t, deltaSkewX, deltaSkewY)) { + this._skewX = deltaSkewX; + this._skewY = deltaSkewY; + ret = true; + } + return ret; + }, + clone: function clone() { + var action = new cc.SkewBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._skewX, this._skewY); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.SkewTo.prototype.startWithTarget.call(this, target); + this._deltaX = this._skewX; + this._deltaY = this._skewY; + this._endSkewX = this._startSkewX + this._deltaX; + this._endSkewY = this._startSkewY + this._deltaY; + }, + reverse: function reverse() { + var action = new cc.SkewBy(this._duration, -this._skewX, -this._skewY); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.skewBy = function (t, sx, sy) { + return new cc.SkewBy(t, sx, sy); + }; + cc.JumpBy = cc.Class({ + name: "cc.JumpBy", + extends: cc.ActionInterval, + ctor: function ctor(duration, position, y, height, jumps) { + this._startPosition = cc.v2(0, 0); + this._previousPosition = cc.v2(0, 0); + this._delta = cc.v2(0, 0); + this._height = 0; + this._jumps = 0; + void 0 !== height && cc.JumpBy.prototype.initWithDuration.call(this, duration, position, y, height, jumps); + }, + initWithDuration: function initWithDuration(duration, position, y, height, jumps) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + if (void 0 === jumps) { + jumps = height; + height = y; + y = position.y; + position = position.x; + } + this._delta.x = position; + this._delta.y = y; + this._height = height; + this._jumps = jumps; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.JumpBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._delta, this._height, this._jumps); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var locPosX = target.x; + var locPosY = target.y; + this._previousPosition.x = locPosX; + this._previousPosition.y = locPosY; + this._startPosition.x = locPosX; + this._startPosition.y = locPosY; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + var frac = dt * this._jumps % 1; + var y = 4 * this._height * frac * (1 - frac); + y += this._delta.y * dt; + var x = this._delta.x * dt; + var locStartPosition = this._startPosition; + if (cc.macro.ENABLE_STACKABLE_ACTIONS) { + var targetX = this.target.x; + var targetY = this.target.y; + var locPreviousPosition = this._previousPosition; + locStartPosition.x = locStartPosition.x + targetX - locPreviousPosition.x; + locStartPosition.y = locStartPosition.y + targetY - locPreviousPosition.y; + x += locStartPosition.x; + y += locStartPosition.y; + locPreviousPosition.x = x; + locPreviousPosition.y = y; + this.target.setPosition(x, y); + } else this.target.setPosition(locStartPosition.x + x, locStartPosition.y + y); + } + }, + reverse: function reverse() { + var action = new cc.JumpBy(this._duration, cc.v2(-this._delta.x, -this._delta.y), this._height, this._jumps); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.jumpBy = function (duration, position, y, height, jumps) { + return new cc.JumpBy(duration, position, y, height, jumps); + }; + cc.JumpTo = cc.Class({ + name: "cc.JumpTo", + extends: cc.JumpBy, + ctor: function ctor(duration, position, y, height, jumps) { + this._endPosition = cc.v2(0, 0); + void 0 !== height && this.initWithDuration(duration, position, y, height, jumps); + }, + initWithDuration: function initWithDuration(duration, position, y, height, jumps) { + if (cc.JumpBy.prototype.initWithDuration.call(this, duration, position, y, height, jumps)) { + if (void 0 === jumps) { + y = position.y; + position = position.x; + } + this._endPosition.x = position; + this._endPosition.y = y; + return true; + } + return false; + }, + startWithTarget: function startWithTarget(target) { + cc.JumpBy.prototype.startWithTarget.call(this, target); + this._delta.x = this._endPosition.x - this._startPosition.x; + this._delta.y = this._endPosition.y - this._startPosition.y; + }, + clone: function clone() { + var action = new cc.JumpTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._endPosition, this._height, this._jumps); + return action; + } + }); + cc.jumpTo = function (duration, position, y, height, jumps) { + return new cc.JumpTo(duration, position, y, height, jumps); + }; + function bezierAt(a, b, c, d, t) { + return Math.pow(1 - t, 3) * a + 3 * t * Math.pow(1 - t, 2) * b + 3 * Math.pow(t, 2) * (1 - t) * c + Math.pow(t, 3) * d; + } + cc.BezierBy = cc.Class({ + name: "cc.BezierBy", + extends: cc.ActionInterval, + ctor: function ctor(t, c) { + this._config = []; + this._startPosition = cc.v2(0, 0); + this._previousPosition = cc.v2(0, 0); + c && cc.BezierBy.prototype.initWithDuration.call(this, t, c); + }, + initWithDuration: function initWithDuration(t, c) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) { + this._config = c; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.BezierBy(); + this._cloneDecoration(action); + var newConfigs = []; + for (var i = 0; i < this._config.length; i++) { + var selConf = this._config[i]; + newConfigs.push(cc.v2(selConf.x, selConf.y)); + } + action.initWithDuration(this._duration, newConfigs); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var locPosX = target.x; + var locPosY = target.y; + this._previousPosition.x = locPosX; + this._previousPosition.y = locPosY; + this._startPosition.x = locPosX; + this._startPosition.y = locPosY; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + var locConfig = this._config; + var xa = 0; + var xb = locConfig[0].x; + var xc = locConfig[1].x; + var xd = locConfig[2].x; + var ya = 0; + var yb = locConfig[0].y; + var yc = locConfig[1].y; + var yd = locConfig[2].y; + var x = bezierAt(xa, xb, xc, xd, dt); + var y = bezierAt(ya, yb, yc, yd, dt); + var locStartPosition = this._startPosition; + if (cc.macro.ENABLE_STACKABLE_ACTIONS) { + var targetX = this.target.x; + var targetY = this.target.y; + var locPreviousPosition = this._previousPosition; + locStartPosition.x = locStartPosition.x + targetX - locPreviousPosition.x; + locStartPosition.y = locStartPosition.y + targetY - locPreviousPosition.y; + x += locStartPosition.x; + y += locStartPosition.y; + locPreviousPosition.x = x; + locPreviousPosition.y = y; + this.target.setPosition(x, y); + } else this.target.setPosition(locStartPosition.x + x, locStartPosition.y + y); + } + }, + reverse: function reverse() { + var locConfig = this._config; + var x0 = locConfig[0].x, y0 = locConfig[0].y; + var x1 = locConfig[1].x, y1 = locConfig[1].y; + var x2 = locConfig[2].x, y2 = locConfig[2].y; + var r = [cc.v2(x1 - x2, y1 - y2), cc.v2(x0 - x2, y0 - y2), cc.v2(-x2, -y2)]; + var action = new cc.BezierBy(this._duration, r); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.bezierBy = function (t, c) { + return new cc.BezierBy(t, c); + }; + cc.BezierTo = cc.Class({ + name: "cc.BezierTo", + extends: cc.BezierBy, + ctor: function ctor(t, c) { + this._toConfig = []; + c && this.initWithDuration(t, c); + }, + initWithDuration: function initWithDuration(t, c) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) { + this._toConfig = c; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.BezierTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._toConfig); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.BezierBy.prototype.startWithTarget.call(this, target); + var locStartPos = this._startPosition; + var locToConfig = this._toConfig; + var locConfig = this._config; + locConfig[0] = locToConfig[0].sub(locStartPos); + locConfig[1] = locToConfig[1].sub(locStartPos); + locConfig[2] = locToConfig[2].sub(locStartPos); + } + }); + cc.bezierTo = function (t, c) { + return new cc.BezierTo(t, c); + }; + cc.ScaleTo = cc.Class({ + name: "cc.ScaleTo", + extends: cc.ActionInterval, + ctor: function ctor(duration, sx, sy) { + this._scaleX = 1; + this._scaleY = 1; + this._startScaleX = 1; + this._startScaleY = 1; + this._endScaleX = 0; + this._endScaleY = 0; + this._deltaX = 0; + this._deltaY = 0; + void 0 !== sx && cc.ScaleTo.prototype.initWithDuration.call(this, duration, sx, sy); + }, + initWithDuration: function initWithDuration(duration, sx, sy) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._endScaleX = sx; + this._endScaleY = null != sy ? sy : sx; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.ScaleTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._endScaleX, this._endScaleY); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._startScaleX = target.scaleX; + this._startScaleY = target.scaleY; + this._deltaX = this._endScaleX - this._startScaleX; + this._deltaY = this._endScaleY - this._startScaleY; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + this.target.scaleX = this._startScaleX + this._deltaX * dt; + this.target.scaleY = this._startScaleY + this._deltaY * dt; + } + } + }); + cc.scaleTo = function (duration, sx, sy) { + return new cc.ScaleTo(duration, sx, sy); + }; + cc.ScaleBy = cc.Class({ + name: "cc.ScaleBy", + extends: cc.ScaleTo, + startWithTarget: function startWithTarget(target) { + cc.ScaleTo.prototype.startWithTarget.call(this, target); + this._deltaX = this._startScaleX * this._endScaleX - this._startScaleX; + this._deltaY = this._startScaleY * this._endScaleY - this._startScaleY; + }, + reverse: function reverse() { + var action = new cc.ScaleBy(this._duration, 1 / this._endScaleX, 1 / this._endScaleY); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + clone: function clone() { + var action = new cc.ScaleBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._endScaleX, this._endScaleY); + return action; + } + }); + cc.scaleBy = function (duration, sx, sy) { + return new cc.ScaleBy(duration, sx, sy); + }; + cc.Blink = cc.Class({ + name: "cc.Blink", + extends: cc.ActionInterval, + ctor: function ctor(duration, blinks) { + this._times = 0; + this._originalState = false; + void 0 !== blinks && this.initWithDuration(duration, blinks); + }, + initWithDuration: function initWithDuration(duration, blinks) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._times = blinks; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.Blink(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._times); + return action; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target && !this.isDone()) { + var slice = 1 / this._times; + var m = dt % slice; + this.target.opacity = m > slice / 2 ? 255 : 0; + } + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._originalState = target.opacity; + }, + stop: function stop() { + this.target.opacity = this._originalState; + cc.ActionInterval.prototype.stop.call(this); + }, + reverse: function reverse() { + var action = new cc.Blink(this._duration, this._times); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.blink = function (duration, blinks) { + return new cc.Blink(duration, blinks); + }; + cc.FadeTo = cc.Class({ + name: "cc.FadeTo", + extends: cc.ActionInterval, + ctor: function ctor(duration, opacity) { + this._toOpacity = 0; + this._fromOpacity = 0; + void 0 !== opacity && cc.FadeTo.prototype.initWithDuration.call(this, duration, opacity); + }, + initWithDuration: function initWithDuration(duration, opacity) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._toOpacity = opacity; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.FadeTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._toOpacity); + return action; + }, + update: function update(time) { + time = this._computeEaseTime(time); + var fromOpacity = void 0 !== this._fromOpacity ? this._fromOpacity : 255; + this.target.opacity = fromOpacity + (this._toOpacity - fromOpacity) * time; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._fromOpacity = target.opacity; + } + }); + cc.fadeTo = function (duration, opacity) { + return new cc.FadeTo(duration, opacity); + }; + cc.FadeIn = cc.Class({ + name: "cc.FadeIn", + extends: cc.FadeTo, + ctor: function ctor(duration) { + null == duration && (duration = 0); + this._reverseAction = null; + this.initWithDuration(duration, 255); + }, + reverse: function reverse() { + var action = new cc.FadeOut(); + action.initWithDuration(this._duration, 0); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + clone: function clone() { + var action = new cc.FadeIn(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._toOpacity); + return action; + }, + startWithTarget: function startWithTarget(target) { + this._reverseAction && (this._toOpacity = this._reverseAction._fromOpacity); + cc.FadeTo.prototype.startWithTarget.call(this, target); + } + }); + cc.fadeIn = function (duration) { + return new cc.FadeIn(duration); + }; + cc.FadeOut = cc.Class({ + name: "cc.FadeOut", + extends: cc.FadeTo, + ctor: function ctor(duration) { + null == duration && (duration = 0); + this._reverseAction = null; + this.initWithDuration(duration, 0); + }, + reverse: function reverse() { + var action = new cc.FadeIn(); + action._reverseAction = this; + action.initWithDuration(this._duration, 255); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + clone: function clone() { + var action = new cc.FadeOut(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._toOpacity); + return action; + } + }); + cc.fadeOut = function (d) { + return new cc.FadeOut(d); + }; + cc.TintTo = cc.Class({ + name: "cc.TintTo", + extends: cc.ActionInterval, + ctor: function ctor(duration, red, green, blue) { + this._to = cc.color(0, 0, 0); + this._from = cc.color(0, 0, 0); + if (red instanceof cc.Color) { + blue = red.b; + green = red.g; + red = red.r; + } + void 0 !== blue && this.initWithDuration(duration, red, green, blue); + }, + initWithDuration: function initWithDuration(duration, red, green, blue) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._to = cc.color(red, green, blue); + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.TintTo(); + this._cloneDecoration(action); + var locTo = this._to; + action.initWithDuration(this._duration, locTo.r, locTo.g, locTo.b); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._from = this.target.color; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + var locFrom = this._from, locTo = this._to; + locFrom && (this.target.color = cc.color(locFrom.r + (locTo.r - locFrom.r) * dt, locFrom.g + (locTo.g - locFrom.g) * dt, locFrom.b + (locTo.b - locFrom.b) * dt)); + } + }); + cc.tintTo = function (duration, red, green, blue) { + return new cc.TintTo(duration, red, green, blue); + }; + cc.TintBy = cc.Class({ + name: "cc.TintBy", + extends: cc.ActionInterval, + ctor: function ctor(duration, deltaRed, deltaGreen, deltaBlue) { + this._deltaR = 0; + this._deltaG = 0; + this._deltaB = 0; + this._fromR = 0; + this._fromG = 0; + this._fromB = 0; + void 0 !== deltaBlue && this.initWithDuration(duration, deltaRed, deltaGreen, deltaBlue); + }, + initWithDuration: function initWithDuration(duration, deltaRed, deltaGreen, deltaBlue) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + this._deltaR = deltaRed; + this._deltaG = deltaGreen; + this._deltaB = deltaBlue; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.TintBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._deltaR, this._deltaG, this._deltaB); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var color = target.color; + this._fromR = color.r; + this._fromG = color.g; + this._fromB = color.b; + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this.target.color = cc.color(this._fromR + this._deltaR * dt, this._fromG + this._deltaG * dt, this._fromB + this._deltaB * dt); + }, + reverse: function reverse() { + var action = new cc.TintBy(this._duration, -this._deltaR, -this._deltaG, -this._deltaB); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.tintBy = function (duration, deltaRed, deltaGreen, deltaBlue) { + return new cc.TintBy(duration, deltaRed, deltaGreen, deltaBlue); + }; + cc.DelayTime = cc.Class({ + name: "cc.DelayTime", + extends: cc.ActionInterval, + update: function update(dt) { }, + reverse: function reverse() { + var action = new cc.DelayTime(this._duration); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + }, + clone: function clone() { + var action = new cc.DelayTime(); + this._cloneDecoration(action); + action.initWithDuration(this._duration); + return action; + } + }); + cc.delayTime = function (d) { + return new cc.DelayTime(d); + }; + cc.ReverseTime = cc.Class({ + name: "cc.ReverseTime", + extends: cc.ActionInterval, + ctor: function ctor(action) { + this._other = null; + action && this.initWithAction(action); + }, + initWithAction: function initWithAction(action) { + if (!action) { + cc.errorID(1028); + return false; + } + if (action === this._other) { + cc.errorID(1029); + return false; + } + if (cc.ActionInterval.prototype.initWithDuration.call(this, action._duration)) { + this._other = action; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.ReverseTime(); + this._cloneDecoration(action); + action.initWithAction(this._other.clone()); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._other.startWithTarget(target); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this._other && this._other.update(1 - dt); + }, + reverse: function reverse() { + return this._other.clone(); + }, + stop: function stop() { + this._other.stop(); + cc.Action.prototype.stop.call(this); + } + }); + cc.reverseTime = function (action) { + return new cc.ReverseTime(action); + }; + cc.TargetedAction = cc.Class({ + name: "cc.TargetedAction", + extends: cc.ActionInterval, + ctor: function ctor(target, action) { + this._action = null; + this._forcedTarget = null; + action && this.initWithTarget(target, action); + }, + initWithTarget: function initWithTarget(target, action) { + if (this.initWithDuration(action._duration)) { + this._forcedTarget = target; + this._action = action; + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.TargetedAction(); + this._cloneDecoration(action); + action.initWithTarget(this._forcedTarget, this._action.clone()); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._action.startWithTarget(this._forcedTarget); + }, + stop: function stop() { + this._action.stop(); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + this._action.update(dt); + }, + getForcedTarget: function getForcedTarget() { + return this._forcedTarget; + }, + setForcedTarget: function setForcedTarget(forcedTarget) { + this._forcedTarget !== forcedTarget && (this._forcedTarget = forcedTarget); + } + }); + cc.targetedAction = function (target, action) { + return new cc.TargetedAction(target, action); + }; + }), {}], + 7: [(function (require, module, exports) { + "use strict"; + require("../core/platform/CCClass"); + var js = require("../core/platform/js"); + var HashElement = function HashElement() { + this.actions = []; + this.target = null; + this.actionIndex = 0; + this.currentAction = null; + this.paused = false; + this.lock = false; + }; + cc.ActionManager = function () { + this._hashTargets = js.createMap(true); + this._arrayTargets = []; + this._currentTarget = null; + cc.director._scheduler && cc.director._scheduler.enableForTarget(this); + }; + cc.ActionManager.prototype = { + constructor: cc.ActionManager, + _elementPool: [], + _searchElementByTarget: function _searchElementByTarget(arr, target) { + for (var k = 0; k < arr.length; k++) if (target === arr[k].target) return arr[k]; + return null; + }, + _getElement: function _getElement(target, paused) { + var element = this._elementPool.pop(); + element || (element = new HashElement()); + element.target = target; + element.paused = !!paused; + return element; + }, + _putElement: function _putElement(element) { + element.actions.length = 0; + element.actionIndex = 0; + element.currentAction = null; + element.paused = false; + element.target = null; + element.lock = false; + this._elementPool.push(element); + }, + addAction: function addAction(action, target, paused) { + if (!action || !target) { + cc.errorID(1e3); + return; + } + var element = this._hashTargets[target._id]; + if (element) element.actions || (element.actions = []); else { + element = this._getElement(target, paused); + this._hashTargets[target._id] = element; + this._arrayTargets.push(element); + } + element.actions.push(action); + action.startWithTarget(target); + }, + removeAllActions: function removeAllActions() { + var locTargets = this._arrayTargets; + for (var i = 0; i < locTargets.length; i++) { + var element = locTargets[i]; + element && this._putElement(element); + } + this._arrayTargets.length = 0; + this._hashTargets = js.createMap(true); + }, + removeAllActionsFromTarget: function removeAllActionsFromTarget(target, forceDelete) { + if (null == target) return; + var element = this._hashTargets[target._id]; + if (element) { + element.actions.length = 0; + this._deleteHashElement(element); + } + }, + removeAction: function removeAction(action) { + if (!action) return; + var target = action.getOriginalTarget(); + var element = this._hashTargets[target._id]; + if (!element) return; + for (var i = 0; i < element.actions.length; i++) if (element.actions[i] === action) { + element.actions.splice(i, 1); + element.actionIndex >= i && element.actionIndex--; + break; + } + }, + _removeActionByTag: function _removeActionByTag(tag, element, target) { + for (var i = 0, l = element.actions.length; i < l; ++i) { + var action = element.actions[i]; + if (action && action.getTag() === tag) { + if (target && action.getOriginalTarget() !== target) continue; + this._removeActionAtIndex(i, element); + break; + } + } + }, + removeActionByTag: function removeActionByTag(tag, target) { + tag === cc.Action.TAG_INVALID && cc.logID(1002); + var hashTargets = this._hashTargets; + if (target) { + var element = hashTargets[target._id]; + element && this._removeActionByTag(tag, element, target); + } else for (var name in hashTargets) { + var _element = hashTargets[name]; + this._removeActionByTag(tag, _element); + } + }, + getActionByTag: function getActionByTag(tag, target) { + tag === cc.Action.TAG_INVALID && cc.logID(1004); + var element = this._hashTargets[target._id]; + if (element) { + if (null != element.actions) for (var i = 0; i < element.actions.length; ++i) { + var action = element.actions[i]; + if (action && action.getTag() === tag) return action; + } + cc.logID(1005, tag); + } + return null; + }, + getNumberOfRunningActionsInTarget: function getNumberOfRunningActionsInTarget(target) { + var element = this._hashTargets[target._id]; + if (element) return element.actions ? element.actions.length : 0; + return 0; + }, + pauseTarget: function pauseTarget(target) { + var element = this._hashTargets[target._id]; + element && (element.paused = true); + }, + resumeTarget: function resumeTarget(target) { + var element = this._hashTargets[target._id]; + element && (element.paused = false); + }, + pauseAllRunningActions: function pauseAllRunningActions() { + var idsWithActions = []; + var locTargets = this._arrayTargets; + for (var i = 0; i < locTargets.length; i++) { + var element = locTargets[i]; + if (element && !element.paused) { + element.paused = true; + idsWithActions.push(element.target); + } + } + return idsWithActions; + }, + resumeTargets: function resumeTargets(targetsToResume) { + if (!targetsToResume) return; + for (var i = 0; i < targetsToResume.length; i++) targetsToResume[i] && this.resumeTarget(targetsToResume[i]); + }, + pauseTargets: function pauseTargets(targetsToPause) { + if (!targetsToPause) return; + for (var i = 0; i < targetsToPause.length; i++) targetsToPause[i] && this.pauseTarget(targetsToPause[i]); + }, + purgeSharedManager: function purgeSharedManager() { + cc.director.getScheduler().unscheduleUpdate(this); + }, + _removeActionAtIndex: function _removeActionAtIndex(index, element) { + var action = element.actions[index]; + element.actions.splice(index, 1); + element.actionIndex >= index && element.actionIndex--; + 0 === element.actions.length && this._deleteHashElement(element); + }, + _deleteHashElement: function _deleteHashElement(element) { + var ret = false; + if (element && !element.lock && this._hashTargets[element.target._id]) { + delete this._hashTargets[element.target._id]; + var targets = this._arrayTargets; + for (var i = 0, l = targets.length; i < l; i++) if (targets[i] === element) { + targets.splice(i, 1); + break; + } + this._putElement(element); + ret = true; + } + return ret; + }, + update: function update(dt) { + var locTargets = this._arrayTargets, locCurrTarget; + for (var elt = 0; elt < locTargets.length; elt++) { + this._currentTarget = locTargets[elt]; + locCurrTarget = this._currentTarget; + if (!locCurrTarget.paused && locCurrTarget.actions) { + locCurrTarget.lock = true; + for (locCurrTarget.actionIndex = 0; locCurrTarget.actionIndex < locCurrTarget.actions.length; locCurrTarget.actionIndex++) { + locCurrTarget.currentAction = locCurrTarget.actions[locCurrTarget.actionIndex]; + if (!locCurrTarget.currentAction) continue; + locCurrTarget.currentAction.step(dt * (locCurrTarget.currentAction._speedMethod ? locCurrTarget.currentAction._speed : 1)); + if (locCurrTarget.currentAction && locCurrTarget.currentAction.isDone()) { + locCurrTarget.currentAction.stop(); + var action = locCurrTarget.currentAction; + locCurrTarget.currentAction = null; + this.removeAction(action); + } + locCurrTarget.currentAction = null; + } + locCurrTarget.lock = false; + } + 0 === locCurrTarget.actions.length && this._deleteHashElement(locCurrTarget) && elt--; + } + } + }; + false; + }), { + "../core/platform/CCClass": 239, + "../core/platform/js": 260 + }], + 8: [(function (require, module, exports) { + "use strict"; + require("./CCActionManager"); + require("./CCAction"); + require("./CCActionInterval"); + require("./CCActionInstant"); + require("./CCActionEase"); + require("./CCActionCatmullRom"); + require("./tween"); + }), { + "./CCAction": 2, + "./CCActionCatmullRom": 3, + "./CCActionEase": 4, + "./CCActionInstant": 5, + "./CCActionInterval": 6, + "./CCActionManager": 7, + "./tween": 9 + }], + 9: [(function (require, module, exports) { + "use strict"; + var _bezier = require("../animation/bezier"); + var _tweenID = 0; + var TweenAction = cc.Class({ + name: "cc.TweenAction", + extends: cc.ActionInterval, + ctor: function ctor(duration, props, opts) { + this._opts = opts = opts || Object.create(null); + this._props = Object.create(null); + opts.progress = opts.progress || this.progress; + if (opts.easing && "string" === typeof opts.easing) { + var easingName = opts.easing; + opts.easing = cc.easing[easingName]; + !opts.easing && cc.warnID(1031, easingName); + } + var relative = this._opts.relative; + for (var name in props) { + var value = props[name]; + var easing = void 0, progress = void 0; + if (void 0 !== value.value && (value.easing || value.progress)) { + if ("string" === typeof value.easing) { + easing = cc.easing[value.easing]; + !easing && cc.warnID(1031, value.easing); + } else easing = value.easing; + progress = value.progress; + value = value.value; + } + var isNumber = "number" === typeof value; + if (!isNumber && (!value.lerp || relative && !value.add && !value.mul || !value.clone)) { + cc.warn("Can not animate " + name + " property, because it do not have [lerp, (add|mul), clone] function."); + continue; + } + var prop = Object.create(null); + prop.value = value; + prop.easing = easing; + prop.progress = progress; + this._props[name] = prop; + } + this._originProps = props; + this.initWithDuration(duration); + }, + clone: function clone() { + var action = new TweenAction(this._duration, this._originProps, this._opts); + this._cloneDecoration(action); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var relative = !!this._opts.relative; + var props = this._props; + for (var name in props) { + var value = target[name]; + var prop = props[name]; + if ("number" === typeof value) { + prop.start = value; + prop.current = value; + prop.end = relative ? value + prop.value : prop.value; + } else { + prop.start = value.clone(); + prop.current = value.clone(); + prop.end = relative ? (value.add || value.mul).call(value, prop.value) : prop.value; + } + } + }, + update: function update(t) { + var opts = this._opts; + var easingTime = t; + opts.easing && (easingTime = opts.easing(t)); + var target = this.target; + if (!target) return; + var props = this._props; + var progress = opts.progress; + for (var name in props) { + var prop = props[name]; + var time = prop.easing ? prop.easing(t) : easingTime; + var current = prop.current = (prop.progress || progress)(prop.start, prop.end, prop.current, time); + target[name] = current; + } + var onUpdate = opts.onUpdate; + onUpdate && onUpdate(target, t); + }, + progress: function progress(start, end, current, t) { + "number" === typeof start ? current = start + (end - start) * t : start.lerp(end, t, current); + return current; + } + }); + var SetAction = cc.Class({ + name: "cc.SetAction", + extends: cc.ActionInstant, + ctor: function ctor(props) { + this._props = {}; + void 0 !== props && this.init(props); + }, + init: function init(props) { + for (var name in props) this._props[name] = props[name]; + return true; + }, + update: function update() { + var props = this._props; + var target = this.target; + for (var name in props) target[name] = props[name]; + }, + clone: function clone() { + var action = new SetAction(); + action.init(this._props); + return action; + } + }); + function Tween(target) { + this._actions = []; + this._finalAction = null; + this._target = target; + this._tag = cc.Action.TAG_INVALID; + } + Tween.stopAll = function () { + cc.director.getActionManager().removeAllActions(); + }; + Tween.stopAllByTag = function (tag) { + cc.director.getActionManager().removeActionByTag(tag); + }; + Tween.stopAllByTarget = function (target) { + cc.director.getActionManager().removeAllActionsFromTarget(target); + }; + Tween.prototype.then = function (other) { + other instanceof cc.Action ? this._actions.push(other.clone()) : this._actions.push(other._union()); + return this; + }; + Tween.prototype.target = function (target) { + this._target = target; + return this; + }; + Tween.prototype.start = function () { + var target = this._target; + if (!target) { + cc.warn("Please set target to tween first"); + return this; + } + if (target instanceof cc.Object && !target.isValid) return; + this._finalAction && cc.director.getActionManager().removeAction(this._finalAction); + this._finalAction = this._union(); + void 0 === target._id && (target._id = ++_tweenID); + this._finalAction.setTag(this._tag); + cc.director.getActionManager().addAction(this._finalAction, target, false); + return this; + }; + Tween.prototype.stop = function () { + this._finalAction && cc.director.getActionManager().removeAction(this._finalAction); + return this; + }; + Tween.prototype.tag = function (tag) { + this._tag = tag; + return this; + }; + Tween.prototype.clone = function (target) { + var action = this._union(); + return cc.tween(target).then(action.clone()); + }; + Tween.prototype.union = function () { + var action = this._union(); + this._actions.length = 0; + this._actions.push(action); + return this; + }; + Tween.prototype._union = function () { + var actions = this._actions; + actions = 1 === actions.length ? actions[0] : cc.sequence(actions); + return actions; + }; + Object.assign(Tween.prototype, { + bezierTo: function bezierTo(duration, c1, c2, to, opts) { + var c0x = c1.x, c0y = c1.y, c1x = c2.x, c1y = c2.y; + opts = opts || Object.create(null); + opts.progress = function (start, end, current, t) { + current.x = (0, _bezier.bezier)(start.x, c0x, c1x, end.x, t); + current.y = (0, _bezier.bezier)(start.y, c0y, c1y, end.y, t); + return current; + }; + return this.to(duration, { + position: to + }, opts); + }, + bezierBy: function bezierBy(duration, c1, c2, to, opts) { + var c0x = c1.x, c0y = c1.y, c1x = c2.x, c1y = c2.y; + opts = opts || Object.create(null); + opts.progress = function (start, end, current, t) { + var sx = start.x, sy = start.y; + current.x = (0, _bezier.bezier)(sx, c0x + sx, c1x + sx, end.x, t); + current.y = (0, _bezier.bezier)(sy, c0y + sy, c1y + sy, end.y, t); + return current; + }; + return this.by(duration, { + position: to + }, opts); + }, + flipX: function flipX() { + var _this = this; + return this.call((function () { + _this._target.scaleX *= -1; + }), this); + }, + flipY: function flipY() { + var _this2 = this; + return this.call((function () { + _this2._target.scaleY *= -1; + }), this); + }, + blink: function blink(duration, times, opts) { + var slice = 1 / times; + opts = opts || Object.create(null); + opts.progress = function (start, end, current, t) { + if (t >= 1) return start; + var m = t % slice; + return m > slice / 2 ? 255 : 0; + }; + return this.to(duration, { + opacity: 1 + }, opts); + } + }); + var tmp_args = []; + function wrapAction(action) { + return function () { + tmp_args.length = 0; + for (var l = arguments.length, i = 0; i < l; i++) { + var arg = tmp_args[i] = arguments[i]; + arg instanceof Tween && (tmp_args[i] = arg._union()); + } + return action.apply(this, tmp_args); + }; + } + var actions = { + to: function to(duration, props, opts) { + opts = opts || Object.create(null); + opts.relative = false; + return new TweenAction(duration, props, opts); + }, + by: function by(duration, props, opts) { + opts = opts || Object.create(null); + opts.relative = true; + return new TweenAction(duration, props, opts); + }, + set: function set(props) { + return new SetAction(props); + }, + delay: cc.delayTime, + call: cc.callFunc, + hide: cc.hide, + show: cc.show, + removeSelf: cc.removeSelf, + sequence: wrapAction(cc.sequence), + parallel: wrapAction(cc.spawn) + }; + var previousAsInputActions = { + repeat: cc.repeat, + repeatForever: function repeatForever(action) { + return cc.repeat(action, 1e9); + }, + reverseTime: cc.reverseTime + }; + var keys = Object.keys(actions); + var _loop = function _loop(i) { + var key = keys[i]; + Tween.prototype[key] = function () { + var action = actions[key].apply(this, arguments); + this._actions.push(action); + return this; + }; + }; + for (var i = 0; i < keys.length; i++) _loop(i); + keys = Object.keys(previousAsInputActions); + var _loop2 = function _loop2(_i) { + var key = keys[_i]; + Tween.prototype[key] = function () { + var actions = this._actions; + var action = arguments[arguments.length - 1]; + var length = arguments.length - 1; + if (action instanceof cc.Tween) action = action._union(); else if (!(action instanceof cc.Action)) { + action = actions[actions.length - 1]; + actions.length -= 1; + length += 1; + } + var args = [action]; + for (var _i2 = 0; _i2 < length; _i2++) args.push(arguments[_i2]); + action = previousAsInputActions[key].apply(this, args); + actions.push(action); + return this; + }; + }; + for (var _i = 0; _i < keys.length; _i++) _loop2(_i); + cc.tween = function (target) { + return new Tween(target); + }; + cc.Tween = Tween; + }), { + "../animation/bezier": 15 + }], + 10: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var Playable = require("./playable"); + var _require = require("./animation-curves"), EventAnimCurve = _require.EventAnimCurve, EventInfo = _require.EventInfo; + var WrapModeMask = require("./types").WrapModeMask; + var binarySearch = require("../core/utils/binary-search").binarySearchEpsilon; + function AnimationAnimator(target, animation) { + Playable.call(this); + this.target = target; + this.animation = animation; + this._anims = new js.array.MutableForwardIterator([]); + } + js.extend(AnimationAnimator, Playable); + var p = AnimationAnimator.prototype; + p.playState = function (state, startTime) { + if (!state.clip) return; + state.curveLoaded || initClipData(this.target, state); + state.animator = this; + state.play(); + "number" === typeof startTime && state.setTime(startTime); + this.play(); + }; + p.stopStatesExcept = function (state) { + var iterator = this._anims; + var array = iterator.array; + for (iterator.i = 0; iterator.i < array.length; ++iterator.i) { + var anim = array[iterator.i]; + if (anim === state) continue; + this.stopState(anim); + } + }; + p.addAnimation = function (anim) { + var index = this._anims.array.indexOf(anim); + -1 === index && this._anims.push(anim); + anim._setEventTarget(this.animation); + }; + p.removeAnimation = function (anim) { + var index = this._anims.array.indexOf(anim); + if (index >= 0) { + this._anims.fastRemoveAt(index); + 0 === this._anims.array.length && this.stop(); + } else cc.errorID(3907); + anim.animator = null; + }; + p.sample = function () { + var iterator = this._anims; + var array = iterator.array; + for (iterator.i = 0; iterator.i < array.length; ++iterator.i) { + var anim = array[iterator.i]; + anim.sample(); + } + }; + p.stopState = function (state) { + state && state.stop(); + }; + p.pauseState = function (state) { + state && state.pause(); + }; + p.resumeState = function (state) { + state && state.resume(); + this.isPaused && this.resume(); + }; + p.setStateTime = function (state, time) { + if (void 0 !== time) { + if (state) { + state.setTime(time); + state.sample(); + } + } else { + time = state; + var array = this._anims.array; + for (var i = 0; i < array.length; ++i) { + var anim = array[i]; + anim.setTime(time); + anim.sample(); + } + } + }; + p.onStop = function () { + var iterator = this._anims; + var array = iterator.array; + for (iterator.i = 0; iterator.i < array.length; ++iterator.i) { + var anim = array[iterator.i]; + anim.stop(); + } + }; + p.onPause = function () { + var array = this._anims.array; + for (var i = 0; i < array.length; ++i) { + var anim = array[i]; + anim.pause(); + anim.animator = null; + } + }; + p.onResume = function () { + var array = this._anims.array; + for (var i = 0; i < array.length; ++i) { + var anim = array[i]; + anim.animator = this; + anim.resume(); + } + }; + p._reloadClip = function (state) { + initClipData(this.target, state); + }; + function createBatchedProperty(propPath, firstDotIndex, mainValue, animValue) { + mainValue = mainValue.clone(); + var nextValue = mainValue; + var leftIndex = firstDotIndex + 1; + var rightIndex = propPath.indexOf(".", leftIndex); + while (-1 !== rightIndex) { + var nextName = propPath.slice(leftIndex, rightIndex); + nextValue = nextValue[nextName]; + leftIndex = rightIndex + 1; + rightIndex = propPath.indexOf(".", leftIndex); + } + var lastPropName = propPath.slice(leftIndex); + nextValue[lastPropName] = animValue; + return mainValue; + } + false; + function initClipData(root, state) { + var clip = state.clip; + state.duration = clip.duration; + state.speed = clip.speed; + state.wrapMode = clip.wrapMode; + state.frameRate = clip.sample; + (state.wrapMode & WrapModeMask.Loop) === WrapModeMask.Loop ? state.repeatCount = Infinity : state.repeatCount = 1; + var curves = state.curves = clip.createCurves(state, root); + var events = clip.events; + if (true, events) { + var curve; + for (var i = 0, l = events.length; i < l; i++) { + if (!curve) { + curve = new EventAnimCurve(); + curve.target = root; + curves.push(curve); + } + var eventData = events[i]; + var ratio = eventData.frame / state.duration; + var eventInfo = void 0; + var index = binarySearch(curve.ratios, ratio); + if (index >= 0) eventInfo = curve.events[index]; else { + eventInfo = new EventInfo(); + curve.ratios.push(ratio); + curve.events.push(eventInfo); + } + eventInfo.add(eventData.func, eventData.params); + } + } + } + false; + module.exports = AnimationAnimator; + }), { + "../core/utils/binary-search": 317, + "./animation-curves": 12, + "./playable": 19, + "./types": 20 + }], + 11: [(function (require, module, exports) { + "use strict"; + var WrapMode = require("./types").WrapMode; + var _require = require("./animation-curves"), DynamicAnimCurve = _require.DynamicAnimCurve, quickFindIndex = _require.quickFindIndex; + var sampleMotionPaths = require("./motion-path-helper").sampleMotionPaths; + var binarySearch = require("../core/utils/binary-search").binarySearchEpsilon; + var AnimationClip = cc.Class({ + name: "cc.AnimationClip", + extends: cc.Asset, + properties: { + _duration: { + default: 0, + type: cc.Float + }, + duration: { + get: function get() { + return this._duration; + } + }, + sample: { + default: 60 + }, + speed: { + default: 1 + }, + wrapMode: { + default: WrapMode.Normal + }, + curveData: { + default: {}, + visible: false + }, + events: { + default: [], + visible: false + } + }, + statics: { + createWithSpriteFrames: function createWithSpriteFrames(spriteFrames, sample) { + if (!Array.isArray(spriteFrames)) { + cc.errorID(3905); + return null; + } + var clip = new AnimationClip(); + clip.sample = sample || clip.sample; + clip._duration = spriteFrames.length / clip.sample; + var frames = []; + var step = 1 / clip.sample; + for (var i = 0, l = spriteFrames.length; i < l; i++) frames[i] = { + frame: i * step, + value: spriteFrames[i] + }; + clip.curveData = { + comps: { + "cc.Sprite": { + spriteFrame: frames + } + } + }; + return clip; + } + }, + onLoad: function onLoad() { + this._duration = Number.parseFloat(this.duration); + this.speed = Number.parseFloat(this.speed); + this.wrapMode = Number.parseInt(this.wrapMode); + this.frameRate = Number.parseFloat(this.sample); + }, + createPropCurve: function createPropCurve(target, propPath, keyframes) { + var motionPaths = []; + var isMotionPathProp = target instanceof cc.Node && "position" === propPath; + var curve = new DynamicAnimCurve(); + curve.target = target; + curve.prop = propPath; + for (var i = 0, l = keyframes.length; i < l; i++) { + var keyframe = keyframes[i]; + var ratio = keyframe.frame / this.duration; + curve.ratios.push(ratio); + isMotionPathProp && motionPaths.push(keyframe.motionPath); + var curveValue = keyframe.value; + curve.values.push(curveValue); + var curveTypes = keyframe.curve; + if (curveTypes) { + if ("string" === typeof curveTypes) { + curve.types.push(curveTypes); + continue; + } + if (Array.isArray(curveTypes)) { + curveTypes[0] === curveTypes[1] && curveTypes[2] === curveTypes[3] ? curve.types.push(DynamicAnimCurve.Linear) : curve.types.push(DynamicAnimCurve.Bezier(curveTypes)); + continue; + } + } + curve.types.push(DynamicAnimCurve.Linear); + } + isMotionPathProp && sampleMotionPaths(motionPaths, curve, this.duration, this.sample, target); + var ratios = curve.ratios; + var currRatioDif, lastRatioDif; + var canOptimize = true; + var EPSILON = 1e-6; + for (var _i = 1, _l = ratios.length; _i < _l; _i++) { + currRatioDif = ratios[_i] - ratios[_i - 1]; + if (1 === _i) lastRatioDif = currRatioDif; else if (Math.abs(currRatioDif - lastRatioDif) > EPSILON) { + canOptimize = false; + break; + } + } + curve._findFrameIndex = canOptimize ? quickFindIndex : binarySearch; + var firstValue = curve.values[0]; + void 0 === firstValue || null === firstValue || curve._lerp || ("number" === typeof firstValue ? curve._lerp = DynamicAnimCurve.prototype._lerpNumber : firstValue instanceof cc.Quat ? curve._lerp = DynamicAnimCurve.prototype._lerpQuat : firstValue instanceof cc.Vec2 ? curve._lerp = DynamicAnimCurve.prototype._lerpVector2 : firstValue instanceof cc.Vec3 ? curve._lerp = DynamicAnimCurve.prototype._lerpVector3 : firstValue.lerp && (curve._lerp = DynamicAnimCurve.prototype._lerpObject)); + return curve; + }, + createTargetCurves: function createTargetCurves(target, curveData, curves) { + var propsData = curveData.props; + var compsData = curveData.comps; + if (propsData) for (var propPath in propsData) { + var data = propsData[propPath]; + var curve = this.createPropCurve(target, propPath, data); + curves.push(curve); + } + if (compsData) for (var compName in compsData) { + var comp = target.getComponent(compName); + if (!comp) continue; + var compData = compsData[compName]; + for (var _propPath in compData) { + var _data = compData[_propPath]; + var _curve = this.createPropCurve(comp, _propPath, _data); + curves.push(_curve); + } + } + }, + createCurves: function createCurves(state, root) { + var curveData = this.curveData; + var childrenCurveDatas = curveData.paths; + var curves = []; + this.createTargetCurves(root, curveData, curves); + for (var namePath in childrenCurveDatas) { + var target = cc.find(namePath, root); + if (!target) continue; + var childCurveDatas = childrenCurveDatas[namePath]; + this.createTargetCurves(target, childCurveDatas, curves); + } + return curves; + } + }); + cc.AnimationClip = module.exports = AnimationClip; + }), { + "../core/utils/binary-search": 317, + "./animation-curves": 12, + "./motion-path-helper": 18, + "./types": 20 + }], + 12: [(function (require, module, exports) { + "use strict"; + var bezierByTime = require("./bezier").bezierByTime; + var binarySearch = require("../core/utils/binary-search").binarySearchEpsilon; + var WrapModeMask = require("./types").WrapModeMask; + var WrappedInfo = require("./types").WrappedInfo; + function computeRatioByType(ratio, type) { + if ("string" === typeof type) { + var func = cc.easing[type]; + func ? ratio = func(ratio) : cc.errorID(3906, type); + } else Array.isArray(type) && (ratio = bezierByTime(type, ratio)); + return ratio; + } + var AnimCurve = cc.Class({ + name: "cc.AnimCurve", + sample: function sample(time, ratio, state) { }, + onTimeChangedManually: void 0 + }); + function quickFindIndex(ratios, ratio) { + var length = ratios.length - 1; + if (0 === length) return 0; + var start = ratios[0]; + if (ratio < start) return 0; + var end = ratios[length]; + if (ratio > end) return ~ratios.length; + ratio = (ratio - start) / (end - start); + var eachLength = 1 / length; + var index = ratio / eachLength; + var floorIndex = 0 | index; + var EPSILON = 1e-6; + if (index - floorIndex < EPSILON) return floorIndex; + if (floorIndex + 1 - index < EPSILON) return floorIndex + 1; + return ~(floorIndex + 1); + } + var DynamicAnimCurve = cc.Class({ + name: "cc.DynamicAnimCurve", + extends: AnimCurve, + ctor: function ctor() { + this._cachedIndex = 0; + }, + properties: { + target: null, + prop: "", + values: [], + ratios: [], + types: [] + }, + _findFrameIndex: binarySearch, + _lerp: void 0, + _lerpNumber: function _lerpNumber(from, to, t) { + return from + (to - from) * t; + }, + _lerpObject: function _lerpObject(from, to, t) { + return from.lerp(to, t); + }, + _lerpQuat: (function () { + var out = cc.quat(); + return function (from, to, t) { + return from.lerp(to, t, out); + }; + })(), + _lerpVector2: (function () { + var out = cc.v2(); + return function (from, to, t) { + return from.lerp(to, t, out); + }; + })(), + _lerpVector3: (function () { + var out = cc.v3(); + return function (from, to, t) { + return from.lerp(to, t, out); + }; + })(), + sample: function sample(time, ratio, state) { + var values = this.values; + var ratios = this.ratios; + var frameCount = ratios.length; + if (0 === frameCount) return; + var shoudRefind = true; + var cachedIndex = this._cachedIndex; + if (cachedIndex < 0) { + cachedIndex = ~cachedIndex; + if (cachedIndex > 0 && cachedIndex < ratios.length) { + var _fromRatio = ratios[cachedIndex - 1]; + var _toRatio = ratios[cachedIndex]; + ratio > _fromRatio && ratio < _toRatio && (shoudRefind = false); + } + } + shoudRefind && (this._cachedIndex = this._findFrameIndex(ratios, ratio)); + var value; + var index = this._cachedIndex; + if (index < 0) { + index = ~index; + if (index <= 0) value = values[0]; else if (index >= frameCount) value = values[frameCount - 1]; else { + var fromVal = values[index - 1]; + if (this._lerp) { + var fromRatio = ratios[index - 1]; + var toRatio = ratios[index]; + var type = this.types[index - 1]; + var ratioBetweenFrames = (ratio - fromRatio) / (toRatio - fromRatio); + type && (ratioBetweenFrames = computeRatioByType(ratioBetweenFrames, type)); + var toVal = values[index]; + value = this._lerp(fromVal, toVal, ratioBetweenFrames); + } else value = fromVal; + } + } else value = values[index]; + this.target[this.prop] = value; + } + }); + DynamicAnimCurve.Linear = null; + DynamicAnimCurve.Bezier = function (controlPoints) { + return controlPoints; + }; + var EventInfo = function EventInfo() { + this.events = []; + }; + EventInfo.prototype.add = function (func, params) { + this.events.push({ + func: func || "", + params: params || [] + }); + }; + var EventAnimCurve = cc.Class({ + name: "cc.EventAnimCurve", + extends: AnimCurve, + properties: { + target: null, + ratios: [], + events: [], + _wrappedInfo: { + default: function _default() { + return new WrappedInfo(); + } + }, + _lastWrappedInfo: null, + _ignoreIndex: NaN + }, + _wrapIterations: function _wrapIterations(iterations) { + iterations - (0 | iterations) === 0 && (iterations -= 1); + return 0 | iterations; + }, + sample: function sample(time, ratio, state) { + var length = this.ratios.length; + var currentWrappedInfo = state.getWrappedInfo(state.time, this._wrappedInfo); + var direction = currentWrappedInfo.direction; + var currentIndex = binarySearch(this.ratios, currentWrappedInfo.ratio); + if (currentIndex < 0) { + currentIndex = ~currentIndex - 1; + direction < 0 && (currentIndex += 1); + } + this._ignoreIndex !== currentIndex && (this._ignoreIndex = NaN); + currentWrappedInfo.frameIndex = currentIndex; + if (!this._lastWrappedInfo) { + this._fireEvent(currentIndex); + this._lastWrappedInfo = new WrappedInfo(currentWrappedInfo); + return; + } + var wrapMode = state.wrapMode; + var currentIterations = this._wrapIterations(currentWrappedInfo.iterations); + var lastWrappedInfo = this._lastWrappedInfo; + var lastIterations = this._wrapIterations(lastWrappedInfo.iterations); + var lastIndex = lastWrappedInfo.frameIndex; + var lastDirection = lastWrappedInfo.direction; + var interationsChanged = -1 !== lastIterations && currentIterations !== lastIterations; + if (lastIndex === currentIndex && interationsChanged && 1 === length) this._fireEvent(0); else if (lastIndex !== currentIndex || interationsChanged) { + direction = lastDirection; + do { + if (lastIndex !== currentIndex) { + if (-1 === direction && 0 === lastIndex && currentIndex > 0) { + (wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong ? direction *= -1 : lastIndex = length; + lastIterations++; + } else if (1 === direction && lastIndex === length - 1 && currentIndex < length - 1) { + (wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong ? direction *= -1 : lastIndex = -1; + lastIterations++; + } + if (lastIndex === currentIndex) break; + if (lastIterations > currentIterations) break; + } + lastIndex += direction; + cc.director.getAnimationManager().pushDelayEvent(this, "_fireEvent", [lastIndex]); + } while (lastIndex !== currentIndex && lastIndex > -1 && lastIndex < length); + } + this._lastWrappedInfo.set(currentWrappedInfo); + }, + _fireEvent: function _fireEvent(index) { + if (index < 0 || index >= this.events.length || this._ignoreIndex === index) return; + var eventInfo = this.events[index]; + var events = eventInfo.events; + if (!this.target.isValid) return; + var components = this.target._components; + for (var i = 0; i < events.length; i++) { + var event = events[i]; + var funcName = event.func; + for (var j = 0; j < components.length; j++) { + var component = components[j]; + var func = component[funcName]; + func && func.apply(component, event.params); + } + } + }, + onTimeChangedManually: function onTimeChangedManually(time, state) { + this._lastWrappedInfo = null; + this._ignoreIndex = NaN; + var info = state.getWrappedInfo(time, this._wrappedInfo); + var direction = info.direction; + var frameIndex = binarySearch(this.ratios, info.ratio); + if (frameIndex < 0) { + frameIndex = ~frameIndex - 1; + direction < 0 && (frameIndex += 1); + this._ignoreIndex = frameIndex; + } + } + }); + false; + module.exports = { + AnimCurve: AnimCurve, + DynamicAnimCurve: DynamicAnimCurve, + EventAnimCurve: EventAnimCurve, + EventInfo: EventInfo, + computeRatioByType: computeRatioByType, + quickFindIndex: quickFindIndex + }; + }), { + "../core/utils/binary-search": 317, + "./bezier": 15, + "./types": 20 + }], + 13: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var AnimationManager = cc.Class({ + ctor: function ctor() { + this._anims = new js.array.MutableForwardIterator([]); + this._delayEvents = []; + cc.director._scheduler && cc.director._scheduler.enableForTarget(this); + }, + update: function update(dt) { + var iterator = this._anims; + var array = iterator.array; + for (iterator.i = 0; iterator.i < array.length; ++iterator.i) { + var anim = array[iterator.i]; + anim._isPlaying && !anim._isPaused && anim.update(dt); + } + var events = this._delayEvents; + for (var i = 0; i < events.length; i++) { + var event = events[i]; + event.target[event.func].apply(event.target, event.args); + } + events.length = 0; + }, + destruct: function destruct() { }, + addAnimation: function addAnimation(anim) { + var index = this._anims.array.indexOf(anim); + -1 === index && this._anims.push(anim); + }, + removeAnimation: function removeAnimation(anim) { + var index = this._anims.array.indexOf(anim); + index >= 0 ? this._anims.fastRemoveAt(index) : cc.errorID(3907); + }, + pushDelayEvent: function pushDelayEvent(target, func, args) { + this._delayEvents.push({ + target: target, + func: func, + args: args + }); + } + }); + cc.AnimationManager = module.exports = AnimationManager; + }), {}], + 14: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var Playable = require("./playable"); + var Types = require("./types"); + var WrappedInfo = Types.WrappedInfo; + var WrapMode = Types.WrapMode; + var WrapModeMask = Types.WrapModeMask; + function AnimationState(clip, name) { + Playable.call(this); + this._currentFramePlayed = false; + this._delay = 0; + this._delayTime = 0; + this._wrappedInfo = new WrappedInfo(); + this._lastWrappedInfo = null; + this._process = process; + this._clip = clip; + this._name = name || clip && clip.name; + this.animator = null; + this.curves = []; + this.delay = 0; + this.repeatCount = 1; + this.duration = 1; + this.speed = 1; + this.wrapMode = WrapMode.Normal; + this.time = 0; + this._target = null; + this._lastframeEventOn = false; + this.emit = function () { + var args = new Array(arguments.length); + for (var i = 0, l = args.length; i < l; i++) args[i] = arguments[i]; + cc.director.getAnimationManager().pushDelayEvent(this, "_emit", args); + }; + } + js.extend(AnimationState, Playable); + var proto = AnimationState.prototype; + proto._emit = function (type, state) { + this._target && this._target.isValid && this._target.emit(type, type, state); + }; + proto.on = function (type, callback, target) { + if (this._target && this._target.isValid) { + "lastframe" === type && (this._lastframeEventOn = true); + return this._target.on(type, callback, target); + } + return null; + }; + proto.once = function (type, callback, target) { + if (this._target && this._target.isValid) { + "lastframe" === type && (this._lastframeEventOn = true); + var self = this; + return this._target.once(type, (function (event) { + callback.call(target, event); + self._lastframeEventOn = false; + })); + } + return null; + }; + proto.off = function (type, callback, target) { + if (this._target && this._target.isValid) { + "lastframe" === type && (this._target.hasEventListener(type) || (this._lastframeEventOn = false)); + this._target.off(type, callback, target); + } + }; + proto._setEventTarget = function (target) { + this._target = target; + }; + proto.onPlay = function () { + this.setTime(0); + this._delayTime = this._delay; + cc.director.getAnimationManager().addAnimation(this); + this.animator && this.animator.addAnimation(this); + this.emit("play", this); + }; + proto.onStop = function () { + this.isPaused || cc.director.getAnimationManager().removeAnimation(this); + this.animator && this.animator.removeAnimation(this); + this.emit("stop", this); + }; + proto.onResume = function () { + cc.director.getAnimationManager().addAnimation(this); + this.emit("resume", this); + }; + proto.onPause = function () { + cc.director.getAnimationManager().removeAnimation(this); + this.emit("pause", this); + }; + proto.setTime = function (time) { + this._currentFramePlayed = false; + this.time = time || 0; + var curves = this.curves; + for (var i = 0, l = curves.length; i < l; i++) { + var curve = curves[i]; + curve.onTimeChangedManually && curve.onTimeChangedManually(time, this); + } + }; + function process() { + var info = this.sample(); + if (this._lastframeEventOn) { + var lastInfo; + lastInfo = this._lastWrappedInfo ? this._lastWrappedInfo : this._lastWrappedInfo = new WrappedInfo(info); + this.repeatCount > 1 && (0 | info.iterations) > (0 | lastInfo.iterations) && this.emit("lastframe", this); + lastInfo.set(info); + } + if (info.stopped) { + this.stop(); + this.emit("finished", this); + } + } + function simpleProcess() { + var time = this.time; + var duration = this.duration; + if (time > duration) { + time %= duration; + 0 === time && (time = duration); + } else if (time < 0) { + time %= duration; + 0 !== time && (time += duration); + } + var ratio = time / duration; + var curves = this.curves; + for (var i = 0, len = curves.length; i < len; i++) { + var curve = curves[i]; + curve.sample(time, ratio, this); + } + if (this._lastframeEventOn) { + void 0 === this._lastIterations && (this._lastIterations = ratio); + (this.time > 0 && this._lastIterations > ratio || this.time < 0 && this._lastIterations < ratio) && this.emit("lastframe", this); + this._lastIterations = ratio; + } + } + proto.update = function (delta) { + if (this._delayTime > 0) { + this._delayTime -= delta; + if (this._delayTime > 0) return; + } + this._currentFramePlayed ? this.time += delta * this.speed : this._currentFramePlayed = true; + this._process(); + }; + proto._needRevers = function (currentIterations) { + var wrapMode = this.wrapMode; + var needRevers = false; + if ((wrapMode & WrapModeMask.PingPong) === WrapModeMask.PingPong) { + var isEnd = currentIterations - (0 | currentIterations) === 0; + isEnd && currentIterations > 0 && (currentIterations -= 1); + var isOddIteration = 1 & currentIterations; + isOddIteration && (needRevers = !needRevers); + } + (wrapMode & WrapModeMask.Reverse) === WrapModeMask.Reverse && (needRevers = !needRevers); + return needRevers; + }; + proto.getWrappedInfo = function (time, info) { + info = info || new WrappedInfo(); + var stopped = false; + var duration = this.duration; + var repeatCount = this.repeatCount; + var currentIterations = time > 0 ? time / duration : -time / duration; + if (currentIterations >= repeatCount) { + currentIterations = repeatCount; + stopped = true; + var tempRatio = repeatCount - (0 | repeatCount); + 0 === tempRatio && (tempRatio = 1); + time = tempRatio * duration * (time > 0 ? 1 : -1); + } + if (time > duration) { + var tempTime = time % duration; + time = 0 === tempTime ? duration : tempTime; + } else if (time < 0) { + time %= duration; + 0 !== time && (time += duration); + } + var needRevers = false; + var shouldWrap = this._wrapMode & WrapModeMask.ShouldWrap; + shouldWrap && (needRevers = this._needRevers(currentIterations)); + var direction = needRevers ? -1 : 1; + this.speed < 0 && (direction *= -1); + shouldWrap && needRevers && (time = duration - time); + info.ratio = time / duration; + info.time = time; + info.direction = direction; + info.stopped = stopped; + info.iterations = currentIterations; + return info; + }; + proto.sample = function () { + var info = this.getWrappedInfo(this.time, this._wrappedInfo); + var curves = this.curves; + for (var i = 0, len = curves.length; i < len; i++) { + var curve = curves[i]; + curve.sample(info.time, info.ratio, this); + } + return info; + }; + js.get(proto, "clip", (function () { + return this._clip; + })); + js.get(proto, "name", (function () { + return this._name; + })); + js.obsolete(proto, "AnimationState.length", "duration"); + js.getset(proto, "curveLoaded", (function () { + return this.curves.length > 0; + }), (function () { + this.curves.length = 0; + })); + js.getset(proto, "wrapMode", (function () { + return this._wrapMode; + }), (function (value) { + this._wrapMode = value; + false; + this.time = 0; + value & WrapModeMask.Loop ? this.repeatCount = Infinity : this.repeatCount = 1; + })); + js.getset(proto, "repeatCount", (function () { + return this._repeatCount; + }), (function (value) { + this._repeatCount = value; + var shouldWrap = this._wrapMode & WrapModeMask.ShouldWrap; + var reverse = (this.wrapMode & WrapModeMask.Reverse) === WrapModeMask.Reverse; + this._process = Infinity !== value || shouldWrap || reverse ? process : simpleProcess; + })); + js.getset(proto, "delay", (function () { + return this._delay; + }), (function (value) { + this._delayTime = this._delay = value; + })); + cc.AnimationState = module.exports = AnimationState; + }), { + "./playable": 19, + "./types": 20 + }], + 15: [(function (require, module, exports) { + "use strict"; + function bezier(C1, C2, C3, C4, t) { + var t1 = 1 - t; + return t1 * (t1 * (C1 + (3 * C2 - C1) * t) + 3 * C3 * t * t) + C4 * t * t * t; + } + var cos = Math.cos, acos = Math.acos, max = Math.max, pi = Math.PI, tau = 2 * pi, sqrt = Math.sqrt; + function crt(v) { + return v < 0 ? -Math.pow(-v, 1 / 3) : Math.pow(v, 1 / 3); + } + function cardano(curve, x) { + var pa = x - 0; + var pb = x - curve[0]; + var pc = x - curve[2]; + var pd = x - 1; + var pa3 = 3 * pa; + var pb3 = 3 * pb; + var pc3 = 3 * pc; + var d = -pa + pb3 - pc3 + pd, rd = 1 / d, r3 = 1 / 3, a = (pa3 - 6 * pb + pc3) * rd, a3 = a * r3, b = (-pa3 + pb3) * rd, c = pa * rd, p = (3 * b - a * a) * r3, p3 = p * r3, q = (2 * a * a * a - 9 * a * b + 27 * c) / 27, q2 = q / 2, discriminant = q2 * q2 + p3 * p3 * p3, u1, v1, x1, x2, x3; + if (discriminant < 0) { + var mp3 = -p * r3, mp33 = mp3 * mp3 * mp3, r = sqrt(mp33), t = -q / (2 * r), cosphi = t < -1 ? -1 : t > 1 ? 1 : t, phi = acos(cosphi), crtr = crt(r), t1 = 2 * crtr; + x1 = t1 * cos(phi * r3) - a3; + x2 = t1 * cos((phi + tau) * r3) - a3; + x3 = t1 * cos((phi + 2 * tau) * r3) - a3; + return 0 <= x1 && x1 <= 1 ? 0 <= x2 && x2 <= 1 ? 0 <= x3 && x3 <= 1 ? max(x1, x2, x3) : max(x1, x2) : 0 <= x3 && x3 <= 1 ? max(x1, x3) : x1 : 0 <= x2 && x2 <= 1 ? 0 <= x3 && x3 <= 1 ? max(x2, x3) : x2 : x3; + } + if (0 === discriminant) { + u1 = q2 < 0 ? crt(-q2) : -crt(q2); + x1 = 2 * u1 - a3; + x2 = -u1 - a3; + return 0 <= x1 && x1 <= 1 ? 0 <= x2 && x2 <= 1 ? max(x1, x2) : x1 : x2; + } + var sd = sqrt(discriminant); + u1 = crt(-q2 + sd); + v1 = crt(q2 + sd); + x1 = u1 - v1 - a3; + return x1; + } + function bezierByTime(controlPoints, x) { + var percent = cardano(controlPoints, x); + var p1y = controlPoints[1]; + var p2y = controlPoints[3]; + return ((1 - percent) * (p1y + (p2y - p1y) * percent) * 3 + percent * percent) * percent; + } + false; + module.exports = { + bezier: bezier, + bezierByTime: bezierByTime + }; + }), {}], + 16: [(function (require, module, exports) { + "use strict"; + var easing = { + constant: function constant() { + return 0; + }, + linear: function linear(k) { + return k; + }, + quadIn: function quadIn(k) { + return k * k; + }, + quadOut: function quadOut(k) { + return k * (2 - k); + }, + quadInOut: function quadInOut(k) { + if ((k *= 2) < 1) return .5 * k * k; + return -.5 * (--k * (k - 2) - 1); + }, + cubicIn: function cubicIn(k) { + return k * k * k; + }, + cubicOut: function cubicOut(k) { + return --k * k * k + 1; + }, + cubicInOut: function cubicInOut(k) { + if ((k *= 2) < 1) return .5 * k * k * k; + return .5 * ((k -= 2) * k * k + 2); + }, + quartIn: function quartIn(k) { + return k * k * k * k; + }, + quartOut: function quartOut(k) { + return 1 - --k * k * k * k; + }, + quartInOut: function quartInOut(k) { + if ((k *= 2) < 1) return .5 * k * k * k * k; + return -.5 * ((k -= 2) * k * k * k - 2); + }, + quintIn: function quintIn(k) { + return k * k * k * k * k; + }, + quintOut: function quintOut(k) { + return --k * k * k * k * k + 1; + }, + quintInOut: function quintInOut(k) { + if ((k *= 2) < 1) return .5 * k * k * k * k * k; + return .5 * ((k -= 2) * k * k * k * k + 2); + }, + sineIn: function sineIn(k) { + return 1 - Math.cos(k * Math.PI / 2); + }, + sineOut: function sineOut(k) { + return Math.sin(k * Math.PI / 2); + }, + sineInOut: function sineInOut(k) { + return .5 * (1 - Math.cos(Math.PI * k)); + }, + expoIn: function expoIn(k) { + return 0 === k ? 0 : Math.pow(1024, k - 1); + }, + expoOut: function expoOut(k) { + return 1 === k ? 1 : 1 - Math.pow(2, -10 * k); + }, + expoInOut: function expoInOut(k) { + if (0 === k) return 0; + if (1 === k) return 1; + if ((k *= 2) < 1) return .5 * Math.pow(1024, k - 1); + return .5 * (2 - Math.pow(2, -10 * (k - 1))); + }, + circIn: function circIn(k) { + return 1 - Math.sqrt(1 - k * k); + }, + circOut: function circOut(k) { + return Math.sqrt(1 - --k * k); + }, + circInOut: function circInOut(k) { + if ((k *= 2) < 1) return -.5 * (Math.sqrt(1 - k * k) - 1); + return .5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + }, + elasticIn: function elasticIn(k) { + var s, a = .1, p = .4; + if (0 === k) return 0; + if (1 === k) return 1; + if (!a || a < 1) { + a = 1; + s = p / 4; + } else s = p * Math.asin(1 / a) / (2 * Math.PI); + return -a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p); + }, + elasticOut: function elasticOut(k) { + var s, a = .1, p = .4; + if (0 === k) return 0; + if (1 === k) return 1; + if (!a || a < 1) { + a = 1; + s = p / 4; + } else s = p * Math.asin(1 / a) / (2 * Math.PI); + return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1; + }, + elasticInOut: function elasticInOut(k) { + var s, a = .1, p = .4; + if (0 === k) return 0; + if (1 === k) return 1; + if (!a || a < 1) { + a = 1; + s = p / 4; + } else s = p * Math.asin(1 / a) / (2 * Math.PI); + if ((k *= 2) < 1) return a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * -.5; + return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * .5 + 1; + }, + backIn: function backIn(k) { + var s = 1.70158; + return k * k * ((s + 1) * k - s); + }, + backOut: function backOut(k) { + var s = 1.70158; + return --k * k * ((s + 1) * k + s) + 1; + }, + backInOut: function backInOut(k) { + var s = 2.5949095; + if ((k *= 2) < 1) return k * k * ((s + 1) * k - s) * .5; + return .5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + }, + bounceIn: function bounceIn(k) { + return 1 - easing.bounceOut(1 - k); + }, + bounceOut: function bounceOut(k) { + return k < 1 / 2.75 ? 7.5625 * k * k : k < 2 / 2.75 ? 7.5625 * (k -= 1.5 / 2.75) * k + .75 : k < 2.5 / 2.75 ? 7.5625 * (k -= 2.25 / 2.75) * k + .9375 : 7.5625 * (k -= 2.625 / 2.75) * k + .984375; + }, + bounceInOut: function bounceInOut(k) { + if (k < .5) return .5 * easing.bounceIn(2 * k); + return .5 * easing.bounceOut(2 * k - 1) + .5; + }, + smooth: function smooth(t) { + if (t <= 0) return 0; + if (t >= 1) return 1; + return t * t * (3 - 2 * t); + }, + fade: function fade(t) { + if (t <= 0) return 0; + if (t >= 1) return 1; + return t * t * t * (t * (6 * t - 15) + 10); + } + }; + function _makeOutIn(fnIn, fnOut) { + return function (k) { + if (k < .5) return fnOut(2 * k) / 2; + return fnIn(2 * k - 1) / 2 + .5; + }; + } + easing.quadOutIn = _makeOutIn(easing.quadIn, easing.quadOut); + easing.cubicOutIn = _makeOutIn(easing.cubicIn, easing.cubicOut); + easing.quartOutIn = _makeOutIn(easing.quartIn, easing.quartOut); + easing.quintOutIn = _makeOutIn(easing.quintIn, easing.quintOut); + easing.sineOutIn = _makeOutIn(easing.sineIn, easing.sineOut); + easing.expoOutIn = _makeOutIn(easing.expoIn, easing.expoOut); + easing.circOutIn = _makeOutIn(easing.circIn, easing.circOut); + easing.backOutIn = _makeOutIn(easing.backIn, easing.backOut); + easing.bounceIn = function (k) { + return 1 - easing.bounceOut(1 - k); + }; + easing.bounceInOut = function (k) { + if (k < .5) return .5 * easing.bounceIn(2 * k); + return .5 * easing.bounceOut(2 * k - 1) + .5; + }; + easing.bounceOutIn = _makeOutIn(easing.bounceIn, easing.bounceOut); + cc.easing = module.exports = easing; + }), {}], + 17: [(function (require, module, exports) { + "use strict"; + require("./bezier"); + require("./easing"); + require("./types"); + require("./motion-path-helper"); + require("./animation-curves"); + require("./animation-clip"); + require("./animation-manager"); + require("./animation-state"); + require("./animation-animator"); + }), { + "./animation-animator": 10, + "./animation-clip": 11, + "./animation-curves": 12, + "./animation-manager": 13, + "./animation-state": 14, + "./bezier": 15, + "./easing": 16, + "./motion-path-helper": 18, + "./types": 20 + }], + 18: [(function (require, module, exports) { + "use strict"; + var DynamicAnimCurve = require("./animation-curves").DynamicAnimCurve; + var computeRatioByType = require("./animation-curves").computeRatioByType; + var bezier = require("./bezier").bezier; + var binarySearch = require("../core/utils/binary-search").binarySearchEpsilon; + var v2 = cc.v2; + function Curve(points) { + this.points = points || []; + this.beziers = []; + this.ratios = []; + this.progresses = []; + this.length = 0; + this.computeBeziers(); + } + Curve.prototype.computeBeziers = function () { + this.beziers.length = 0; + this.ratios.length = 0; + this.progresses.length = 0; + this.length = 0; + var bezier; + for (var i = 1; i < this.points.length; i++) { + var startPoint = this.points[i - 1]; + var endPoint = this.points[i]; + bezier = new Bezier(); + bezier.start = startPoint.pos; + bezier.startCtrlPoint = startPoint.out; + bezier.end = endPoint.pos; + bezier.endCtrlPoint = endPoint["in"]; + this.beziers.push(bezier); + this.length += bezier.getLength(); + } + var current = 0; + for (var i = 0; i < this.beziers.length; i++) { + bezier = this.beziers[i]; + this.ratios[i] = bezier.getLength() / this.length; + this.progresses[i] = current += this.ratios[i]; + } + return this.beziers; + }; + function Bezier() { + this.start = v2(); + this.end = v2(); + this.startCtrlPoint = v2(); + this.endCtrlPoint = v2(); + } + Bezier.prototype.getPointAt = function (u) { + var t = this.getUtoTmapping(u); + return this.getPoint(t); + }; + Bezier.prototype.getPoint = function (t) { + var x = bezier(this.start.x, this.startCtrlPoint.x, this.endCtrlPoint.x, this.end.x, t); + var y = bezier(this.start.y, this.startCtrlPoint.y, this.endCtrlPoint.y, this.end.y, t); + return new v2(x, y); + }; + Bezier.prototype.getLength = function () { + var lengths = this.getLengths(); + return lengths[lengths.length - 1]; + }; + Bezier.prototype.getLengths = function (divisions) { + divisions || (divisions = this.__arcLengthDivisions ? this.__arcLengthDivisions : 200); + if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1) return this.cacheArcLengths; + var cache = []; + var current, last = this.getPoint(0), vector = v2(); + var p, sum = 0; + cache.push(0); + for (p = 1; p <= divisions; p++) { + current = this.getPoint(p / divisions); + vector.x = last.x - current.x; + vector.y = last.y - current.y; + sum += vector.mag(); + cache.push(sum); + last = current; + } + this.cacheArcLengths = cache; + return cache; + }; + Bezier.prototype.getUtoTmapping = function (u, distance) { + var arcLengths = this.getLengths(); + var i = 0, il = arcLengths.length; + var targetArcLength; + targetArcLength = distance || u * arcLengths[il - 1]; + var low = 0, high = il - 1, comparison; + while (low <= high) { + i = Math.floor(low + (high - low) / 2); + comparison = arcLengths[i] - targetArcLength; + if (comparison < 0) { + low = i + 1; + continue; + } + if (comparison > 0) { + high = i - 1; + continue; + } + high = i; + break; + } + i = high; + if (arcLengths[i] === targetArcLength) { + var t = i / (il - 1); + return t; + } + var lengthBefore = arcLengths[i]; + var lengthAfter = arcLengths[i + 1]; + var segmentLength = lengthAfter - lengthBefore; + var segmentFraction = (targetArcLength - lengthBefore) / segmentLength; + var t = (i + segmentFraction) / (il - 1); + return t; + }; + function checkMotionPath(motionPath) { + if (!Array.isArray(motionPath)) return false; + for (var i = 0, l = motionPath.length; i < l; i++) { + var controls = motionPath[i]; + if (!Array.isArray(controls) || 6 !== controls.length) return false; + } + return true; + } + function sampleMotionPaths(motionPaths, data, duration, fps, target) { + function createControlPoints(array) { + if (array instanceof cc.Vec2) return { + in: array, + pos: array, + out: array + }; + if (Array.isArray(array) && 6 === array.length) return { + in: v2(array[2], array[3]), + pos: v2(array[0], array[1]), + out: v2(array[4], array[5]) + }; + return { + in: cc.Vec2.ZERO, + pos: cc.Vec2.ZERO, + out: cc.Vec2.ZERO + }; + } + var values = data.values = data.values.map((function (value) { + Array.isArray(value) && (value = 2 === value.length ? cc.v2(value[0], value[1]) : cc.v3(value[0], value[1], value[2])); + return value; + })); + if (0 === motionPaths.length || 0 === values.length) return; + var motionPathValid = false; + for (var _i = 0; _i < motionPaths.length; _i++) { + var _motionPath = motionPaths[_i]; + if (_motionPath && !checkMotionPath(_motionPath)) { + cc.errorID(3904, target ? target.name : "", "position", _i); + _motionPath = null; + } + if (_motionPath && _motionPath.length > 0) { + motionPathValid = true; + break; + } + } + if (!motionPathValid) return; + if (1 === values.length) return; + var types = data.types; + var ratios = data.ratios; + var newValues = data.values = []; + var newTypes = data.types = []; + var newRatios = data.ratios = []; + function addNewDatas(value, type, ratio) { + newValues.push(value); + newTypes.push(type); + newRatios.push(ratio); + } + var startRatioOffset = 0; + var EPSILON = 1e-6; + var newType = DynamicAnimCurve.Linear; + for (var i = 0, l = motionPaths.length; i < l - 1; i++) { + var motionPath = motionPaths[i]; + var ratio = ratios[i]; + var nextRatio = ratios[i + 1]; + var betweenRatio = nextRatio - ratio; + var value = values[i]; + var nextValue = values[i + 1]; + var type = types[i]; + var results = []; + var progress = startRatioOffset / betweenRatio; + var speed = 1 / (betweenRatio * duration * fps); + var finalProgress; + if (motionPath && motionPath.length > 0) { + var points = []; + points.push(createControlPoints(value)); + for (var j = 0, l2 = motionPath.length; j < l2; j++) { + var controlPoints = createControlPoints(motionPath[j]); + points.push(controlPoints); + } + points.push(createControlPoints(nextValue)); + var curve = new Curve(points); + curve.computeBeziers(); + var progresses = curve.progresses; + while (1 - progress > EPSILON) { + finalProgress = progress; + finalProgress = computeRatioByType(finalProgress, type); + var pos, bezier, normal, length; + if (finalProgress < 0) { + bezier = curve.beziers[0]; + length = (0 - finalProgress) * bezier.getLength(); + normal = bezier.start.sub(bezier.endCtrlPoint).normalize(); + pos = bezier.start.add(normal.mul(length)); + } else if (finalProgress > 1) { + bezier = curve.beziers[curve.beziers.length - 1]; + length = (finalProgress - 1) * bezier.getLength(); + normal = bezier.end.sub(bezier.startCtrlPoint).normalize(); + pos = bezier.end.add(normal.mul(length)); + } else { + var bezierIndex = binarySearch(progresses, finalProgress); + bezierIndex < 0 && (bezierIndex = ~bezierIndex); + finalProgress -= bezierIndex > 0 ? progresses[bezierIndex - 1] : 0; + finalProgress /= curve.ratios[bezierIndex]; + pos = curve.beziers[bezierIndex].getPointAt(finalProgress); + } + results.push(pos); + progress += speed; + } + } else while (1 - progress > EPSILON) { + finalProgress = progress; + finalProgress = computeRatioByType(finalProgress, type); + results.push(value.lerp(nextValue, finalProgress)); + progress += speed; + } + newType = "constant" === type ? type : DynamicAnimCurve.Linear; + for (var j = 0, l2 = results.length; j < l2; j++) { + var newRatio = ratio + startRatioOffset + speed * j * betweenRatio; + addNewDatas(results[j], newType, newRatio); + } + startRatioOffset = Math.abs(progress - 1) > EPSILON ? (progress - 1) * betweenRatio : 0; + } + ratios[ratios.length - 1] !== newRatios[newRatios.length - 1] && addNewDatas(values[values.length - 1], newType, ratios[ratios.length - 1]); + } + false; + module.exports = { + sampleMotionPaths: sampleMotionPaths, + Curve: Curve, + Bezier: Bezier + }; + }), { + "../core/utils/binary-search": 317, + "./animation-curves": 12, + "./bezier": 15 + }], + 19: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var debug = require("../core/CCDebug"); + function Playable() { + this._isPlaying = false; + this._isPaused = false; + this._stepOnce = false; + } + var prototype = Playable.prototype; + js.get(prototype, "isPlaying", (function () { + return this._isPlaying; + }), true); + js.get(prototype, "isPaused", (function () { + return this._isPaused; + }), true); + var virtual = function virtual() { }; + prototype.onPlay = virtual; + prototype.onPause = virtual; + prototype.onResume = virtual; + prototype.onStop = virtual; + prototype.onError = virtual; + prototype.play = function () { + if (this._isPlaying) if (this._isPaused) { + this._isPaused = false; + this.onResume(); + } else this.onError(debug.getError(3912)); else { + this._isPlaying = true; + this.onPlay(); + } + }; + prototype.stop = function () { + if (this._isPlaying) { + this._isPlaying = false; + this.onStop(); + this._isPaused = false; + } + }; + prototype.pause = function () { + if (this._isPlaying && !this._isPaused) { + this._isPaused = true; + this.onPause(); + } + }; + prototype.resume = function () { + if (this._isPlaying && this._isPaused) { + this._isPaused = false; + this.onResume(); + } + }; + prototype.step = function () { + this.pause(); + this._stepOnce = true; + this._isPlaying || this.play(); + }; + module.exports = Playable; + }), { + "../core/CCDebug": 70 + }], + 20: [(function (require, module, exports) { + "use strict"; + var WrapModeMask = { + Loop: 2, + ShouldWrap: 4, + PingPong: 22, + Reverse: 36 + }; + var WrapMode = cc.Enum({ + Default: 0, + Normal: 1, + Reverse: WrapModeMask.Reverse, + Loop: WrapModeMask.Loop, + LoopReverse: WrapModeMask.Loop | WrapModeMask.Reverse, + PingPong: WrapModeMask.PingPong, + PingPongReverse: WrapModeMask.PingPong | WrapModeMask.Reverse + }); + cc.WrapMode = WrapMode; + function WrappedInfo(info) { + if (info) { + this.set(info); + return; + } + this.ratio = 0; + this.time = 0; + this.direction = 1; + this.stopped = true; + this.iterations = 0; + this.frameIndex = void 0; + } + WrappedInfo.prototype.set = function (info) { + this.ratio = info.ratio; + this.time = info.time; + this.direction = info.direction; + this.stopped = info.stopped; + this.iterations = info.iterations; + this.frameIndex = info.frameIndex; + }; + module.exports = { + WrapModeMask: WrapModeMask, + WrapMode: WrapMode, + WrappedInfo: WrappedInfo + }; + }), {}], + 21: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("../core/event/event-target"); + var sys = require("../core/platform/CCSys"); + var LoadMode = require("../core/assets/CCAudioClip").LoadMode; + var touchBinded = false; + var touchPlayList = []; + var Audio = function Audio(src) { + EventTarget.call(this); + this._shouldRecycleOnEnded = false; + this._src = src; + this._element = null; + this.id = 0; + this._state = Audio.State.INITIALZING; + var self = this; + this._onended = function () { + self._state = Audio.State.STOPPED; + self.emit("ended"); + }; + this._onendedSecond = function () { + self._unbindEnded(self._onendedSecond); + self._bindEnded(); + }; + }; + cc.js.extend(Audio, EventTarget); + Audio.State = { + ERROR: -1, + INITIALZING: 0, + PLAYING: 1, + PAUSED: 2, + STOPPED: 3 + }; + (function (proto) { + proto._bindEnded = function (callback) { + callback = callback || this._onended; + if (callback._binded) return; + callback._binded = true; + var elem = this._element; + this._src && elem instanceof HTMLAudioElement ? elem.addEventListener("ended", callback) : elem.onended = callback; + }; + proto._unbindEnded = function (callback) { + callback = callback || this._onended; + if (!callback._binded) return; + callback._binded = false; + var elem = this._element; + elem instanceof HTMLAudioElement ? elem.removeEventListener("ended", callback) : elem && (elem.onended = null); + }; + proto._onLoaded = function () { + this._createElement(); + this._state = Audio.State.INITIALZING; + this.setVolume(1); + this.setLoop(false); + }; + proto._createElement = function () { + var elem = this._src._nativeAsset; + if (elem instanceof HTMLAudioElement) { + this._element || (this._element = document.createElement("audio")); + this._element.src = elem.src; + } else this._element = new WebAudioElement(elem, this); + }; + proto.play = function () { + var self = this; + this._src && this._src._ensureLoaded((function () { + self._state = Audio.State.PLAYING; + self._bindEnded(); + var playPromise = self._element.play(); + window.Promise && playPromise instanceof Promise && playPromise["catch"]((function (err) { })); + self._touchToPlay(); + })); + }; + proto._touchToPlay = function () { + this._src && this._src.loadMode === LoadMode.DOM_AUDIO && this._element.paused && touchPlayList.push({ + instance: this, + offset: 0, + audio: this._element + }); + if (touchBinded) return; + touchBinded = true; + var touchEventName = "ontouchend" in window ? "touchend" : "mousedown"; + cc.game.canvas.addEventListener(touchEventName, (function () { + var item; + while (item = touchPlayList.pop()) item.audio.play(item.offset); + })); + }; + proto.destroy = function () { + this._element = null; + }; + proto.pause = function () { + if (this.getState() !== Audio.State.PLAYING) return; + var self = this; + this._src && this._src._ensureLoaded((function () { + self._unbindEnded(); + self._element.pause(); + self._state = Audio.State.PAUSED; + })); + }; + proto.resume = function () { + if (this.getState() !== Audio.State.PAUSED) return; + var self = this; + this._src && this._src._ensureLoaded((function () { + self._bindEnded(); + self._element.play(); + self._state = Audio.State.PLAYING; + })); + }; + proto.stop = function () { + var self = this; + this._src && this._src._ensureLoaded((function () { + self._element.pause(); + self._element.currentTime = 0; + for (var i = 0; i < touchPlayList.length; i++) if (touchPlayList[i].instance === self) { + touchPlayList.splice(i, 1); + break; + } + self._unbindEnded(); + self.emit("stop"); + self._state = Audio.State.STOPPED; + })); + }; + proto.setLoop = function (loop) { + var self = this; + this._src && this._src._ensureLoaded((function () { + self._element.loop = loop; + })); + }; + proto.getLoop = function () { + return !!this._element && this._element.loop; + }; + proto.setVolume = function (num) { + var self = this; + this._src && this._src._ensureLoaded((function () { + self._element.volume = num; + })); + }; + proto.getVolume = function () { + return this._element ? this._element.volume : 1; + }; + proto.setCurrentTime = function (num) { + var self = this; + this._src && this._src._ensureLoaded((function () { + self._unbindEnded(); + self._bindEnded(self._onendedSecond); + self._element.currentTime = num; + })); + }; + proto.getCurrentTime = function () { + return this._element ? this._element.currentTime : 0; + }; + proto.getDuration = function () { + return this._src ? this._src.duration : 0; + }; + proto.getState = function (forceUpdating) { + void 0 === forceUpdating && (forceUpdating = true); + forceUpdating && this._forceUpdatingState(); + return this._state; + }; + proto._forceUpdatingState = function () { + var elem = this._element; + elem && (Audio.State.PLAYING === this._state && elem.paused ? this._state = Audio.State.STOPPED : Audio.State.STOPPED !== this._state || elem.paused || (this._state = Audio.State.PLAYING)); + }; + Object.defineProperty(proto, "src", { + get: function get() { + return this._src; + }, + set: function set(clip) { + this._unbindEnded(); + if (clip) { + if (clip !== this._src) { + this._src = clip; + if (clip.loaded) this._onLoaded(); else { + var self = this; + clip.once("load", (function () { + clip === self._src && self._onLoaded(); + })); + } + } + } else { + this._src = null; + this._element instanceof WebAudioElement ? this._element = null : this._element && (this._element.src = ""); + this._state = Audio.State.INITIALZING; + } + return clip; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, "paused", { + get: function get() { + return !this._element || this._element.paused; + }, + enumerable: true, + configurable: true + }); + })(Audio.prototype); + var TIME_CONSTANT; + TIME_CONSTANT = cc.sys.browserType === cc.sys.BROWSER_TYPE_EDGE || cc.sys.browserType === cc.sys.BROWSER_TYPE_BAIDU || cc.sys.browserType === cc.sys.BROWSER_TYPE_UC ? .01 : 0; + var WebAudioElement = function WebAudioElement(buffer, audio) { + this._audio = audio; + this._context = sys.__audioSupport.context; + this._buffer = buffer; + this._gainObj = this._context["createGain"](); + this.volume = 1; + this._gainObj["connect"](this._context["destination"]); + this._loop = false; + this._startTime = -1; + this._currentSource = null; + this.playedLength = 0; + this._currentTimer = null; + this._endCallback = function () { + this.onended && this.onended(this); + }.bind(this); + }; + (function (proto) { + proto.play = function (offset) { + if (this._currentSource && !this.paused) { + this._currentSource.onended = null; + this._currentSource.stop(0); + this.playedLength = 0; + } + var audio = this._context["createBufferSource"](); + audio.buffer = this._buffer; + audio["connect"](this._gainObj); + audio.loop = this._loop; + this._startTime = this._context.currentTime; + offset = offset || this.playedLength; + offset && (this._startTime -= offset); + var duration = this._buffer.duration; + var startTime = offset; + var endTime; + if (this._loop) audio.start ? audio.start(0, startTime) : audio["notoGrainOn"] ? audio["noteGrainOn"](0, startTime) : audio["noteOn"](0, startTime); else { + endTime = duration - offset; + audio.start ? audio.start(0, startTime, endTime) : audio["noteGrainOn"] ? audio["noteGrainOn"](0, startTime, endTime) : audio["noteOn"](0, startTime, endTime); + } + this._currentSource = audio; + audio.onended = this._endCallback; + if ((!audio.context.state || "suspended" === audio.context.state) && 0 === this._context.currentTime) { + var self = this; + clearTimeout(this._currentTimer); + this._currentTimer = setTimeout((function () { + 0 === self._context.currentTime && touchPlayList.push({ + instance: self._audio, + offset: offset, + audio: self + }); + }), 10); + } + var sys = cc.sys; + sys.os === sys.OS_IOS && sys.isBrowser && sys.isMobile && ("suspended" === audio.context.state && 0 !== this._context.currentTime || "interrupted" === audio.context.state) && audio.context.resume(); + }; + proto.pause = function () { + clearTimeout(this._currentTimer); + if (this.paused) return; + this.playedLength = this._context.currentTime - this._startTime; + this.playedLength %= this._buffer.duration; + var audio = this._currentSource; + this._currentSource = null; + this._startTime = -1; + audio && audio.stop(0); + }; + Object.defineProperty(proto, "paused", { + get: function get() { + if (this._currentSource && this._currentSource.loop) return false; + if (-1 === this._startTime) return true; + return this._context.currentTime - this._startTime > this._buffer.duration; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, "loop", { + get: function get() { + return this._loop; + }, + set: function set(bool) { + this._currentSource && (this._currentSource.loop = bool); + return this._loop = bool; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, "volume", { + get: function get() { + return this._volume; + }, + set: function set(num) { + this._volume = num; + if (this._gainObj.gain.setTargetAtTime) try { + this._gainObj.gain.setTargetAtTime(num, this._context.currentTime, TIME_CONSTANT); + } catch (e) { + this._gainObj.gain.setTargetAtTime(num, this._context.currentTime, .01); + } else this._gainObj.gain.value = num; + if (sys.os === sys.OS_IOS && !this.paused && this._currentSource) { + this._currentSource.onended = null; + this.pause(); + this.play(); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, "currentTime", { + get: function get() { + if (this.paused) return this.playedLength; + this.playedLength = this._context.currentTime - this._startTime; + this.playedLength %= this._buffer.duration; + return this.playedLength; + }, + set: function set(num) { + if (this.paused) this.playedLength = num; else { + this.pause(); + this.playedLength = num; + this.play(); + } + return num; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, "duration", { + get: function get() { + return this._buffer.duration; + }, + enumerable: true, + configurable: true + }); + })(WebAudioElement.prototype); + module.exports = cc._Audio = Audio; + }), { + "../core/assets/CCAudioClip": 107, + "../core/event/event-target": 186, + "../core/platform/CCSys": 248 + }], + 22: [(function (require, module, exports) { + "use strict"; + var Audio = require("./CCAudio"); + var AudioClip = require("../core/assets/CCAudioClip"); + var js = cc.js; + var _instanceId = 0; + var _id2audio = js.createMap(true); + var _url2id = {}; + var _audioPool = []; + var recycleAudio = function recycleAudio(audio) { + if (!audio._shouldRecycleOnEnded) return; + audio._finishCallback = null; + audio.off("ended"); + audio.off("stop"); + audio.src = null; + _audioPool.includes(audio) || (_audioPool.length < 32 ? _audioPool.push(audio) : audio.destroy()); + audio._shouldRecycleOnEnded = false; + }; + var getAudioFromPath = function getAudioFromPath(path) { + var id = _instanceId++; + var list = _url2id[path]; + list || (list = _url2id[path] = []); + if (audioEngine._maxAudioInstance <= list.length) { + var oldId = list.shift(); + var oldAudio = getAudioFromId(oldId); + oldAudio.stop(); + } + var audio = _audioPool.pop() || new Audio(); + var callback = function callback() { + var audioInList = getAudioFromId(this.id); + if (audioInList) { + delete _id2audio[this.id]; + var index = list.indexOf(this.id); + cc.js.array.fastRemoveAt(list, index); + } + recycleAudio(this); + }; + audio.on("ended", (function () { + this._finishCallback && this._finishCallback(); + this.getLoop() || callback.call(this); + }), audio); + audio.on("stop", callback, audio); + audio.id = id; + _id2audio[id] = audio; + list.push(id); + return audio; + }; + var getAudioFromId = function getAudioFromId(id) { + return _id2audio[id]; + }; + var handleVolume = function handleVolume(volume) { + void 0 === volume ? volume = 1 : "string" === typeof volume && (volume = Number.parseFloat(volume)); + return volume; + }; + var audioEngine = { + AudioState: Audio.State, + _maxAudioInstance: 24, + _id2audio: _id2audio, + play: function play(clip, loop, volume) { + if (!(clip instanceof AudioClip)) return cc.error("Wrong type of AudioClip."); + var path = clip.nativeUrl; + var audio = getAudioFromPath(path); + audio.src = clip; + clip._ensureLoaded(); + audio._shouldRecycleOnEnded = true; + audio.setLoop(loop || false); + volume = handleVolume(volume); + audio.setVolume(volume); + audio.play(); + return audio.id; + }, + setLoop: function setLoop(audioID, loop) { + var audio = getAudioFromId(audioID); + if (!audio || !audio.setLoop) return; + audio.setLoop(loop); + }, + isLoop: function isLoop(audioID) { + var audio = getAudioFromId(audioID); + if (!audio || !audio.getLoop) return false; + return audio.getLoop(); + }, + setVolume: function setVolume(audioID, volume) { + var audio = getAudioFromId(audioID); + audio && audio.setVolume(volume); + }, + getVolume: function getVolume(audioID) { + var audio = getAudioFromId(audioID); + return audio ? audio.getVolume() : 1; + }, + setCurrentTime: function setCurrentTime(audioID, sec) { + var audio = getAudioFromId(audioID); + if (audio) { + audio.setCurrentTime(sec); + return true; + } + return false; + }, + getCurrentTime: function getCurrentTime(audioID) { + var audio = getAudioFromId(audioID); + return audio ? audio.getCurrentTime() : 0; + }, + getDuration: function getDuration(audioID) { + var audio = getAudioFromId(audioID); + return audio ? audio.getDuration() : 0; + }, + getState: function getState(audioID) { + var audio = getAudioFromId(audioID); + return audio ? audio.getState() : this.AudioState.ERROR; + }, + setFinishCallback: function setFinishCallback(audioID, callback) { + var audio = getAudioFromId(audioID); + if (!audio) return; + audio._finishCallback = callback; + }, + pause: function pause(audioID) { + var audio = getAudioFromId(audioID); + if (audio) { + audio.pause(); + return true; + } + return false; + }, + _pauseIDCache: [], + pauseAll: function pauseAll() { + for (var id in _id2audio) { + var audio = _id2audio[id]; + var state = audio.getState(); + if (state === Audio.State.PLAYING) { + this._pauseIDCache.push(id); + audio.pause(); + } + } + }, + resume: function resume(audioID) { + var audio = getAudioFromId(audioID); + audio && audio.resume(); + }, + resumeAll: function resumeAll() { + for (var i = 0; i < this._pauseIDCache.length; ++i) { + var id = this._pauseIDCache[i]; + var audio = getAudioFromId(id); + audio && audio.resume(); + } + this._pauseIDCache.length = 0; + }, + stop: function stop(audioID) { + var audio = getAudioFromId(audioID); + if (audio) { + audio.stop(); + return true; + } + return false; + }, + stopAll: function stopAll() { + for (var id in _id2audio) { + var audio = _id2audio[id]; + audio && audio.stop(); + } + }, + setMaxAudioInstance: function setMaxAudioInstance(num) { + true; + cc.warn("Since v2.4.0, maxAudioInstance has become a read only property.\naudioEngine.setMaxAudioInstance() method will be removed in the future"); + }, + getMaxAudioInstance: function getMaxAudioInstance() { + return this._maxAudioInstance; + }, + uncache: function uncache(clip) { + var filePath = clip; + if ("string" === typeof clip) { + cc.warnID(8401, "cc.audioEngine", "cc.AudioClip", "AudioClip", "cc.AudioClip", "audio"); + filePath = clip; + } else { + if (!clip) return; + filePath = clip.nativeUrl; + } + var list = _url2id[filePath]; + if (!list) return; + while (list.length > 0) { + var id = list.pop(); + var audio = _id2audio[id]; + if (audio) { + audio.stop(); + delete _id2audio[id]; + } + } + }, + uncacheAll: function uncacheAll() { + this.stopAll(); + var audio; + for (var id in _id2audio) { + audio = _id2audio[id]; + audio && audio.destroy(); + } + while (audio = _audioPool.pop()) audio.destroy(); + _id2audio = js.createMap(true); + _url2id = {}; + }, + _breakCache: null, + _break: function _break() { + this._breakCache = []; + for (var id in _id2audio) { + var audio = _id2audio[id]; + var state = audio.getState(); + if (state === Audio.State.PLAYING) { + this._breakCache.push(id); + audio.pause(); + } + } + }, + _restore: function _restore() { + if (!this._breakCache) return; + while (this._breakCache.length > 0) { + var id = this._breakCache.pop(); + var audio = getAudioFromId(id); + audio && audio.resume && audio.resume(); + } + this._breakCache = null; + }, + _music: { + id: -1, + loop: false, + volume: 1 + }, + _effect: { + volume: 1, + pauseCache: [] + }, + playMusic: function playMusic(clip, loop) { + var music = this._music; + this.stop(music.id); + music.id = this.play(clip, loop, music.volume); + music.loop = loop; + return music.id; + }, + stopMusic: function stopMusic() { + this.stop(this._music.id); + }, + pauseMusic: function pauseMusic() { + this.pause(this._music.id); + return this._music.id; + }, + resumeMusic: function resumeMusic() { + this.resume(this._music.id); + return this._music.id; + }, + getMusicVolume: function getMusicVolume() { + return this._music.volume; + }, + setMusicVolume: function setMusicVolume(volume) { + volume = handleVolume(volume); + var music = this._music; + music.volume = volume; + this.setVolume(music.id, music.volume); + return music.volume; + }, + isMusicPlaying: function isMusicPlaying() { + return this.getState(this._music.id) === this.AudioState.PLAYING; + }, + playEffect: function playEffect(clip, loop) { + return this.play(clip, loop || false, this._effect.volume); + }, + setEffectsVolume: function setEffectsVolume(volume) { + volume = handleVolume(volume); + var musicId = this._music.id; + this._effect.volume = volume; + for (var id in _id2audio) { + var audio = _id2audio[id]; + if (!audio || audio.id === musicId) continue; + audioEngine.setVolume(id, volume); + } + }, + getEffectsVolume: function getEffectsVolume() { + return this._effect.volume; + }, + pauseEffect: function pauseEffect(audioID) { + return this.pause(audioID); + }, + pauseAllEffects: function pauseAllEffects() { + var musicId = this._music.id; + var effect = this._effect; + effect.pauseCache.length = 0; + for (var id in _id2audio) { + var audio = _id2audio[id]; + if (!audio || audio.id === musicId) continue; + var state = audio.getState(); + if (state === this.AudioState.PLAYING) { + effect.pauseCache.push(id); + audio.pause(); + } + } + }, + resumeEffect: function resumeEffect(id) { + this.resume(id); + }, + resumeAllEffects: function resumeAllEffects() { + var pauseIDCache = this._effect.pauseCache; + for (var i = 0; i < pauseIDCache.length; ++i) { + var id = pauseIDCache[i]; + var audio = _id2audio[id]; + audio && audio.resume(); + } + }, + stopEffect: function stopEffect(audioID) { + return this.stop(audioID); + }, + stopAllEffects: function stopAllEffects() { + var musicId = this._music.id; + for (var id in _id2audio) { + var audio = _id2audio[id]; + if (!audio || audio.id === musicId) continue; + var state = audio.getState(); + state === audioEngine.AudioState.PLAYING && audio.stop(); + } + } + }; + module.exports = cc.audioEngine = audioEngine; + }), { + "../core/assets/CCAudioClip": 107, + "./CCAudio": 21 + }], + 23: [(function (require, module, exports) { + "use strict"; + var codec = { + name: "Jacob__Codec" + }; + codec.Base64 = require("./base64"); + codec.GZip = require("./gzip"); + codec.unzip = function () { + return codec.GZip.gunzip.apply(codec.GZip, arguments); + }; + codec.unzipBase64 = function () { + var buffer = codec.Base64.decode.apply(codec.Base64, arguments); + try { + return codec.GZip.gunzip.call(codec.GZip, buffer); + } catch (e) { + return buffer.slice(7); + } + }; + codec.unzipBase64AsArray = function (input, bytes) { + bytes = bytes || 1; + var dec = this.unzipBase64(input), ar = [], i, j, len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) ar[i] += dec.charCodeAt(i * bytes + j) << 8 * j; + } + return ar; + }; + codec.unzipAsArray = function (input, bytes) { + bytes = bytes || 1; + var dec = this.unzip(input), ar = [], i, j, len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) ar[i] += dec.charCodeAt(i * bytes + j) << 8 * j; + } + return ar; + }; + cc.codec = module.exports = codec; + }), { + "./base64": 24, + "./gzip": 25 + }], + 24: [(function (require, module, exports) { + "use strict"; + var misc = require("../core/utils/misc"); + var strValue = misc.BASE64_VALUES; + var Base64 = { + name: "Jacob__Codec__Base64" + }; + Base64.decode = function Jacob__Codec__Base64__decode(input) { + var output = [], chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0; + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + while (i < input.length) { + enc1 = strValue[input.charCodeAt(i++)]; + enc2 = strValue[input.charCodeAt(i++)]; + enc3 = strValue[input.charCodeAt(i++)]; + enc4 = strValue[input.charCodeAt(i++)]; + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (15 & enc2) << 4 | enc3 >> 2; + chr3 = (3 & enc3) << 6 | enc4; + output.push(String.fromCharCode(chr1)); + 64 !== enc3 && output.push(String.fromCharCode(chr2)); + 64 !== enc4 && output.push(String.fromCharCode(chr3)); + } + output = output.join(""); + return output; + }; + Base64.decodeAsArray = function Jacob__Codec__Base64___decodeAsArray(input, bytes) { + var dec = this.decode(input), ar = [], i, j, len; + for (i = 0, len = dec.length / bytes; i < len; i++) { + ar[i] = 0; + for (j = bytes - 1; j >= 0; --j) ar[i] += dec.charCodeAt(i * bytes + j) << 8 * j; + } + return ar; + }; + module.exports = Base64; + }), { + "../core/utils/misc": 324 + }], + 25: [(function (require, module, exports) { + "use strict"; + var GZip = function Jacob__GZip(data) { + this.data = data; + this.debug = false; + this.gpflags = void 0; + this.files = 0; + this.unzipped = []; + this.buf32k = new Array(32768); + this.bIdx = 0; + this.modeZIP = false; + this.bytepos = 0; + this.bb = 1; + this.bits = 0; + this.nameBuf = []; + this.fileout = void 0; + this.literalTree = new Array(GZip.LITERALS); + this.distanceTree = new Array(32); + this.treepos = 0; + this.Places = null; + this.len = 0; + this.fpos = new Array(17); + this.fpos[0] = 0; + this.flens = void 0; + this.fmax = void 0; + }; + GZip.gunzip = function (string) { + string.constructor === Array || string.constructor === String; + var gzip = new GZip(string); + return gzip.gunzip()[0][0]; + }; + GZip.HufNode = function () { + this.b0 = 0; + this.b1 = 0; + this.jump = null; + this.jumppos = -1; + }; + GZip.LITERALS = 288; + GZip.NAMEMAX = 256; + GZip.bitReverse = [0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255]; + GZip.cplens = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]; + GZip.cplext = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99]; + GZip.cpdist = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]; + GZip.cpdext = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; + GZip.border = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + GZip.prototype.gunzip = function () { + this.outputArr = []; + this.nextFile(); + return this.unzipped; + }; + GZip.prototype.readByte = function () { + this.bits += 8; + return this.bytepos < this.data.length ? this.data.charCodeAt(this.bytepos++) : -1; + }; + GZip.prototype.byteAlign = function () { + this.bb = 1; + }; + GZip.prototype.readBit = function () { + var carry; + this.bits++; + carry = 1 & this.bb; + this.bb >>= 1; + if (0 === this.bb) { + this.bb = this.readByte(); + carry = 1 & this.bb; + this.bb = this.bb >> 1 | 128; + } + return carry; + }; + GZip.prototype.readBits = function (a) { + var res = 0, i = a; + while (i--) res = res << 1 | this.readBit(); + a && (res = GZip.bitReverse[res] >> 8 - a); + return res; + }; + GZip.prototype.flushBuffer = function () { + this.bIdx = 0; + }; + GZip.prototype.addBuffer = function (a) { + this.buf32k[this.bIdx++] = a; + this.outputArr.push(String.fromCharCode(a)); + 32768 === this.bIdx && (this.bIdx = 0); + }; + GZip.prototype.IsPat = function () { + while (1) { + if (this.fpos[this.len] >= this.fmax) return -1; + if (this.flens[this.fpos[this.len]] === this.len) return this.fpos[this.len]++; + this.fpos[this.len]++; + } + }; + GZip.prototype.Rec = function () { + var curplace = this.Places[this.treepos]; + var tmp; + if (17 === this.len) return -1; + this.treepos++; + this.len++; + tmp = this.IsPat(); + if (tmp >= 0) curplace.b0 = tmp; else { + curplace.b0 = 32768; + if (this.Rec()) return -1; + } + tmp = this.IsPat(); + if (tmp >= 0) { + curplace.b1 = tmp; + curplace.jump = null; + } else { + curplace.b1 = 32768; + curplace.jump = this.Places[this.treepos]; + curplace.jumppos = this.treepos; + if (this.Rec()) return -1; + } + this.len--; + return 0; + }; + GZip.prototype.CreateTree = function (currentTree, numval, lengths, show) { + var i; + this.Places = currentTree; + this.treepos = 0; + this.flens = lengths; + this.fmax = numval; + for (i = 0; i < 17; i++) this.fpos[i] = 0; + this.len = 0; + if (this.Rec()) return -1; + return 0; + }; + GZip.prototype.DecodeValue = function (currentTree) { + var len, i, xtreepos = 0, X = currentTree[xtreepos], b; + while (1) { + b = this.readBit(); + if (b) { + if (!(32768 & X.b1)) return X.b1; + X = X.jump; + len = currentTree.length; + for (i = 0; i < len; i++) if (currentTree[i] === X) { + xtreepos = i; + break; + } + } else { + if (!(32768 & X.b0)) return X.b0; + xtreepos++; + X = currentTree[xtreepos]; + } + } + return -1; + }; + GZip.prototype.DeflateLoop = function () { + var last, c, type, i, len; + do { + last = this.readBit(); + type = this.readBits(2); + if (0 === type) { + var blockLen, cSum; + this.byteAlign(); + blockLen = this.readByte(); + blockLen |= this.readByte() << 8; + cSum = this.readByte(); + cSum |= this.readByte() << 8; + 65535 & (blockLen ^ ~cSum) && document.write("BlockLen checksum mismatch\n"); + while (blockLen--) { + c = this.readByte(); + this.addBuffer(c); + } + } else if (1 === type) { + var j; + while (1) { + j = GZip.bitReverse[this.readBits(7)] >> 1; + if (j > 23) { + j = j << 1 | this.readBit(); + if (j > 199) { + j -= 128; + j = j << 1 | this.readBit(); + } else { + j -= 48; + j > 143 && (j += 136); + } + } else j += 256; + if (j < 256) this.addBuffer(j); else { + if (256 === j) break; + var len, dist; + j -= 257; + len = this.readBits(GZip.cplext[j]) + GZip.cplens[j]; + j = GZip.bitReverse[this.readBits(5)] >> 3; + if (GZip.cpdext[j] > 8) { + dist = this.readBits(8); + dist |= this.readBits(GZip.cpdext[j] - 8) << 8; + } else dist = this.readBits(GZip.cpdext[j]); + dist += GZip.cpdist[j]; + for (j = 0; j < len; j++) { + var c = this.buf32k[this.bIdx - dist & 32767]; + this.addBuffer(c); + } + } + } + } else if (2 === type) { + var j, n, literalCodes, distCodes, lenCodes; + var ll = new Array(320); + literalCodes = 257 + this.readBits(5); + distCodes = 1 + this.readBits(5); + lenCodes = 4 + this.readBits(4); + for (j = 0; j < 19; j++) ll[j] = 0; + for (j = 0; j < lenCodes; j++) ll[GZip.border[j]] = this.readBits(3); + len = this.distanceTree.length; + for (i = 0; i < len; i++) this.distanceTree[i] = new GZip.HufNode(); + if (this.CreateTree(this.distanceTree, 19, ll, 0)) { + this.flushBuffer(); + return 1; + } + n = literalCodes + distCodes; + i = 0; + var z = -1; + while (i < n) { + z++; + j = this.DecodeValue(this.distanceTree); + if (j < 16) ll[i++] = j; else if (16 === j) { + var l; + j = 3 + this.readBits(2); + if (i + j > n) { + this.flushBuffer(); + return 1; + } + l = i ? ll[i - 1] : 0; + while (j--) ll[i++] = l; + } else { + j = 17 === j ? 3 + this.readBits(3) : 11 + this.readBits(7); + if (i + j > n) { + this.flushBuffer(); + return 1; + } + while (j--) ll[i++] = 0; + } + } + len = this.literalTree.length; + for (i = 0; i < len; i++) this.literalTree[i] = new GZip.HufNode(); + if (this.CreateTree(this.literalTree, literalCodes, ll, 0)) { + this.flushBuffer(); + return 1; + } + len = this.literalTree.length; + for (i = 0; i < len; i++) this.distanceTree[i] = new GZip.HufNode(); + var ll2 = new Array(); + for (i = literalCodes; i < ll.length; i++) ll2[i - literalCodes] = ll[i]; + if (this.CreateTree(this.distanceTree, distCodes, ll2, 0)) { + this.flushBuffer(); + return 1; + } + while (1) { + j = this.DecodeValue(this.literalTree); + if (j >= 256) { + var len, dist; + j -= 256; + if (0 === j) break; + j--; + len = this.readBits(GZip.cplext[j]) + GZip.cplens[j]; + j = this.DecodeValue(this.distanceTree); + if (GZip.cpdext[j] > 8) { + dist = this.readBits(8); + dist |= this.readBits(GZip.cpdext[j] - 8) << 8; + } else dist = this.readBits(GZip.cpdext[j]); + dist += GZip.cpdist[j]; + while (len--) { + var c = this.buf32k[this.bIdx - dist & 32767]; + this.addBuffer(c); + } + } else this.addBuffer(j); + } + } + } while (!last); + this.flushBuffer(); + this.byteAlign(); + return 0; + }; + GZip.prototype.unzipFile = function (name) { + var i; + this.gunzip(); + for (i = 0; i < this.unzipped.length; i++) if (this.unzipped[i][1] === name) return this.unzipped[i][0]; + }; + GZip.prototype.nextFile = function () { + this.outputArr = []; + this.modeZIP = false; + var tmp = []; + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + if (120 === tmp[0] && 218 === tmp[1]) { + this.DeflateLoop(); + this.unzipped[this.files] = [this.outputArr.join(""), "geonext.gxt"]; + this.files++; + } + if (31 === tmp[0] && 139 === tmp[1]) { + this.skipdir(); + this.unzipped[this.files] = [this.outputArr.join(""), "file"]; + this.files++; + } + if (80 === tmp[0] && 75 === tmp[1]) { + this.modeZIP = true; + tmp[2] = this.readByte(); + tmp[3] = this.readByte(); + if (3 === tmp[2] && 4 === tmp[3]) { + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + this.gpflags = this.readByte(); + this.gpflags |= this.readByte() << 8; + var method = this.readByte(); + method |= this.readByte() << 8; + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + var compSize = this.readByte(); + compSize |= this.readByte() << 8; + compSize |= this.readByte() << 16; + compSize |= this.readByte() << 24; + var size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + var filelen = this.readByte(); + filelen |= this.readByte() << 8; + var extralen = this.readByte(); + extralen |= this.readByte() << 8; + i = 0; + this.nameBuf = []; + while (filelen--) { + var c = this.readByte(); + "/" === c | ":" === c ? i = 0 : i < GZip.NAMEMAX - 1 && (this.nameBuf[i++] = String.fromCharCode(c)); + } + this.fileout || (this.fileout = this.nameBuf); + var i = 0; + while (i < extralen) { + c = this.readByte(); + i++; + } + if (8 === method) { + this.DeflateLoop(); + this.unzipped[this.files] = [this.outputArr.join(""), this.nameBuf.join("")]; + this.files++; + } + this.skipdir(); + } + } + }; + GZip.prototype.skipdir = function () { + var tmp = []; + var compSize, size, os, i, c; + if (8 & this.gpflags) { + tmp[0] = this.readByte(); + tmp[1] = this.readByte(); + tmp[2] = this.readByte(); + tmp[3] = this.readByte(); + compSize = this.readByte(); + compSize |= this.readByte() << 8; + compSize |= this.readByte() << 16; + compSize |= this.readByte() << 24; + size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + } + this.modeZIP && this.nextFile(); + tmp[0] = this.readByte(); + if (8 !== tmp[0]) return 0; + this.gpflags = this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + this.readByte(); + os = this.readByte(); + if (4 & this.gpflags) { + tmp[0] = this.readByte(); + tmp[2] = this.readByte(); + this.len = tmp[0] + 256 * tmp[1]; + for (i = 0; i < this.len; i++) this.readByte(); + } + if (8 & this.gpflags) { + i = 0; + this.nameBuf = []; + while (c = this.readByte()) { + "7" !== c && ":" !== c || (i = 0); + i < GZip.NAMEMAX - 1 && (this.nameBuf[i++] = c); + } + } + if (16 & this.gpflags) while (c = this.readByte()); + if (2 & this.gpflags) { + this.readByte(); + this.readByte(); + } + this.DeflateLoop(); + size = this.readByte(); + size |= this.readByte() << 8; + size |= this.readByte() << 16; + size |= this.readByte() << 24; + this.modeZIP && this.nextFile(); + }; + module.exports = GZip; + }), {}], + 26: [(function (require, module, exports) { + "use strict"; + (function () { + function i(a) { + throw a; + } + var r = void 0, v = !0, aa = this; + function y(a, c) { + var b = a.split("."), e = aa; + !(b[0] in e) && e.execScript && e.execScript("var " + b[0]); + for (var f; b.length && (f = b.shift());) b.length || c === r ? e = e[f] ? e[f] : e[f] = {} : e[f] = c; + } + var H = "undefined" !== typeof Uint8Array && "undefined" !== typeof Uint16Array && "undefined" !== typeof Uint32Array; + function ba(a) { + if ("string" === typeof a) { + var c = a.split(""), b, e; + b = 0; + for (e = c.length; b < e; b++) c[b] = (255 & c[b].charCodeAt(0)) >>> 0; + a = c; + } + for (var f = 1, d = 0, g = a.length, h, m = 0; 0 < g;) { + h = 1024 < g ? 1024 : g; + g -= h; + do { + f += a[m++], d += f; + } while (--h); + f %= 65521; + d %= 65521; + } + return (d << 16 | f) >>> 0; + } + function J(a, c) { + this.index = "number" === typeof c ? c : 0; + this.i = 0; + this.buffer = a instanceof (H ? Uint8Array : Array) ? a : new (H ? Uint8Array : Array)(32768); + 2 * this.buffer.length <= this.index && i(Error("invalid index")); + this.buffer.length <= this.index && this.f(); + } + J.prototype.f = function () { + var a = this.buffer, c, b = a.length, e = new (H ? Uint8Array : Array)(b << 1); + if (H) e.set(a); else for (c = 0; c < b; ++c) e[c] = a[c]; + return this.buffer = e; + }; + J.prototype.d = function (a, c, b) { + var e = this.buffer, f = this.index, d = this.i, g = e[f], h; + b && 1 < c && (a = 8 < c ? (N[255 & a] << 24 | N[a >>> 8 & 255] << 16 | N[a >>> 16 & 255] << 8 | N[a >>> 24 & 255]) >> 32 - c : N[a] >> 8 - c); + if (8 > c + d) g = g << c | a, d += c; else for (h = 0; h < c; ++h) g = g << 1 | a >> c - h - 1 & 1, + 8 === ++d && (d = 0, e[f++] = N[g], g = 0, f === e.length && (e = this.f())); + e[f] = g; + this.buffer = e; + this.i = d; + this.index = f; + }; + J.prototype.finish = function () { + var a = this.buffer, c = this.index, b; + 0 < this.i && (a[c] <<= 8 - this.i, a[c] = N[a[c]], c++); + H ? b = a.subarray(0, c) : (a.length = c, b = a); + return b; + }; + var ca = new (H ? Uint8Array : Array)(256), ha; + for (ha = 0; 256 > ha; ++ha) { + for (var R = ha, ia = R, ja = 7, R = R >>> 1; R; R >>>= 1) ia <<= 1, ia |= 1 & R, + --ja; + ca[ha] = (ia << ja & 255) >>> 0; + } + var N = ca; + var ka = [0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117]; + H && new Uint32Array(ka); + function la(a) { + this.buffer = new (H ? Uint16Array : Array)(2 * a); + this.length = 0; + } + la.prototype.getParent = function (a) { + return 2 * ((a - 2) / 4 | 0); + }; + la.prototype.push = function (a, c) { + var b, e, f = this.buffer, d; + b = this.length; + f[this.length++] = c; + for (f[this.length++] = a; 0 < b;) { + if (e = this.getParent(b), !(f[b] > f[e])) break; + d = f[b], f[b] = f[e], f[e] = d, d = f[b + 1], f[b + 1] = f[e + 1], f[e + 1] = d, + b = e; + } + return this.length; + }; + la.prototype.pop = function () { + var a, c, b = this.buffer, e, f, d; + c = b[0]; + a = b[1]; + this.length -= 2; + b[0] = b[this.length]; + b[1] = b[this.length + 1]; + for (d = 0; ;) { + f = 2 * d + 2; + if (f >= this.length) break; + f + 2 < this.length && b[f + 2] > b[f] && (f += 2); + if (!(b[f] > b[d])) break; + e = b[d], b[d] = b[f], b[f] = e, e = b[d + 1], b[d + 1] = b[f + 1], b[f + 1] = e; + d = f; + } + return { + index: a, + value: c, + length: this.length + }; + }; + function S(a) { + var c = a.length, b = 0, e = Number.POSITIVE_INFINITY, f, d, g, h, m, j, s, n, l; + for (n = 0; n < c; ++n) a[n] > b && (b = a[n]), a[n] < e && (e = a[n]); + f = 1 << b; + d = new (H ? Uint32Array : Array)(f); + g = 1; + h = 0; + for (m = 2; g <= b;) { + for (n = 0; n < c; ++n) if (a[n] === g) { + j = 0; + s = h; + for (l = 0; l < g; ++l) j = j << 1 | 1 & s, s >>= 1; + for (l = j; l < f; l += m) d[l] = g << 16 | n; + ++h; + } + ++g; + h <<= 1; + m <<= 1; + } + return [d, b, e]; + } + function ma(a, c) { + this.h = pa; + this.w = 0; + this.input = a; + this.b = 0; + c && (c.lazy && (this.w = c.lazy), "number" === typeof c.compressionType && (this.h = c.compressionType), + c.outputBuffer && (this.a = H && c.outputBuffer instanceof Array ? new Uint8Array(c.outputBuffer) : c.outputBuffer), + "number" === typeof c.outputIndex && (this.b = c.outputIndex)); + this.a || (this.a = new (H ? Uint8Array : Array)(32768)); + } + var pa = 2, qa = { + NONE: 0, + r: 1, + j: pa, + N: 3 + }, ra = [], T; + for (T = 0; 288 > T; T++) switch (v) { + case 143 >= T: + ra.push([T + 48, 8]); + break; + + case 255 >= T: + ra.push([T - 144 + 400, 9]); + break; + + case 279 >= T: + ra.push([T - 256 + 0, 7]); + break; + + case 287 >= T: + ra.push([T - 280 + 192, 8]); + break; + + default: + i("invalid literal: " + T); + } + ma.prototype.n = function () { + var a, c, b, e, f = this.input; + switch (this.h) { + case 0: + b = 0; + for (e = f.length; b < e;) { + c = H ? f.subarray(b, b + 65535) : f.slice(b, b + 65535); + b += c.length; + var d = c, g = b === e, h = r, m = r, j = r, s = r, n = r, l = this.a, q = this.b; + if (H) { + for (l = new Uint8Array(this.a.buffer); l.length <= q + d.length + 5;) l = new Uint8Array(l.length << 1); + l.set(this.a); + } + h = g ? 1 : 0; + l[q++] = 0 | h; + m = d.length; + j = 65536 + ~m & 65535; + l[q++] = 255 & m; + l[q++] = m >>> 8 & 255; + l[q++] = 255 & j; + l[q++] = j >>> 8 & 255; + if (H) l.set(d, q), q += d.length, l = l.subarray(0, q); else { + s = 0; + for (n = d.length; s < n; ++s) l[q++] = d[s]; + l.length = q; + } + this.b = q; + this.a = l; + } + break; + + case 1: + var E = new J(new Uint8Array(this.a.buffer), this.b); + E.d(1, 1, v); + E.d(1, 2, v); + var t = sa(this, f), z, K, A; + z = 0; + for (K = t.length; z < K; z++) if (A = t[z], J.prototype.d.apply(E, ra[A]), 256 < A) E.d(t[++z], t[++z], v), + E.d(t[++z], 5), E.d(t[++z], t[++z], v); else if (256 === A) break; + this.a = E.finish(); + this.b = this.a.length; + break; + + case pa: + var x = new J(new Uint8Array(this.a), this.b), B, k, p, D, C, da = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], W, Ma, ea, Na, na, va = Array(19), Oa, $, oa, F, Pa; + B = pa; + x.d(1, 1, v); + x.d(B, 2, v); + k = sa(this, f); + W = ta(this.L, 15); + Ma = ua(W); + ea = ta(this.K, 7); + Na = ua(ea); + for (p = 286; 257 < p && 0 === W[p - 1]; p--); + for (D = 30; 1 < D && 0 === ea[D - 1]; D--); + var Qa = p, Ra = D, M = new (H ? Uint32Array : Array)(Qa + Ra), u, O, w, fa, L = new (H ? Uint32Array : Array)(316), I, G, P = new (H ? Uint8Array : Array)(19); + for (u = O = 0; u < Qa; u++) M[O++] = W[u]; + for (u = 0; u < Ra; u++) M[O++] = ea[u]; + if (!H) { + u = 0; + for (fa = P.length; u < fa; ++u) P[u] = 0; + } + u = I = 0; + for (fa = M.length; u < fa; u += O) { + for (O = 1; u + O < fa && M[u + O] === M[u]; ++O); + w = O; + if (0 === M[u]) if (3 > w) for (; 0 < w--;) L[I++] = 0, P[0]++; else for (; 0 < w;) G = 138 > w ? w : 138, + G > w - 3 && G < w && (G = w - 3), 10 >= G ? (L[I++] = 17, L[I++] = G - 3, P[17]++) : (L[I++] = 18, + L[I++] = G - 11, P[18]++), w -= G; else if (L[I++] = M[u], P[M[u]]++, w--, 3 > w) for (; 0 < w--;) L[I++] = M[u], + P[M[u]]++; else for (; 0 < w;) G = 6 > w ? w : 6, G > w - 3 && G < w && (G = w - 3), + L[I++] = 16, L[I++] = G - 3, P[16]++, w -= G; + } + a = H ? L.subarray(0, I) : L.slice(0, I); + na = ta(P, 7); + for (F = 0; 19 > F; F++) va[F] = na[da[F]]; + for (C = 19; 4 < C && 0 === va[C - 1]; C--); + Oa = ua(na); + x.d(p - 257, 5, v); + x.d(D - 1, 5, v); + x.d(C - 4, 4, v); + for (F = 0; F < C; F++) x.d(va[F], 3, v); + F = 0; + for (Pa = a.length; F < Pa; F++) if ($ = a[F], x.d(Oa[$], na[$], v), 16 <= $) { + F++; + switch ($) { + case 16: + oa = 2; + break; + + case 17: + oa = 3; + break; + + case 18: + oa = 7; + break; + + default: + i("invalid code: " + $); + } + x.d(a[F], oa, v); + } + var Sa = [Ma, W], Ta = [Na, ea], Q, Ua, ga, ya, Va, Wa, Xa, Ya; + Va = Sa[0]; + Wa = Sa[1]; + Xa = Ta[0]; + Ya = Ta[1]; + Q = 0; + for (Ua = k.length; Q < Ua; ++Q) if (ga = k[Q], x.d(Va[ga], Wa[ga], v), 256 < ga) x.d(k[++Q], k[++Q], v), + ya = k[++Q], x.d(Xa[ya], Ya[ya], v), x.d(k[++Q], k[++Q], v); else if (256 === ga) break; + this.a = x.finish(); + this.b = this.a.length; + break; + + default: + i("invalid compression type"); + } + return this.a; + }; + function wa(a, c) { + this.length = a; + this.G = c; + } + function xa() { + var a = za; + switch (v) { + case 3 === a: + return [257, a - 3, 0]; + + case 4 === a: + return [258, a - 4, 0]; + + case 5 === a: + return [259, a - 5, 0]; + + case 6 === a: + return [260, a - 6, 0]; + + case 7 === a: + return [261, a - 7, 0]; + + case 8 === a: + return [262, a - 8, 0]; + + case 9 === a: + return [263, a - 9, 0]; + + case 10 === a: + return [264, a - 10, 0]; + + case 12 >= a: + return [265, a - 11, 1]; + + case 14 >= a: + return [266, a - 13, 1]; + + case 16 >= a: + return [267, a - 15, 1]; + + case 18 >= a: + return [268, a - 17, 1]; + + case 22 >= a: + return [269, a - 19, 2]; + + case 26 >= a: + return [270, a - 23, 2]; + + case 30 >= a: + return [271, a - 27, 2]; + + case 34 >= a: + return [272, a - 31, 2]; + + case 42 >= a: + return [273, a - 35, 3]; + + case 50 >= a: + return [274, a - 43, 3]; + + case 58 >= a: + return [275, a - 51, 3]; + + case 66 >= a: + return [276, a - 59, 3]; + + case 82 >= a: + return [277, a - 67, 4]; + + case 98 >= a: + return [278, a - 83, 4]; + + case 114 >= a: + return [279, a - 99, 4]; + + case 130 >= a: + return [280, a - 115, 4]; + + case 162 >= a: + return [281, a - 131, 5]; + + case 194 >= a: + return [282, a - 163, 5]; + + case 226 >= a: + return [283, a - 195, 5]; + + case 257 >= a: + return [284, a - 227, 5]; + + case 258 === a: + return [285, a - 258, 0]; + + default: + i("invalid length: " + a); + } + } + var Aa = [], za, Ba; + for (za = 3; 258 >= za; za++) Ba = xa(), Aa[za] = Ba[2] << 24 | Ba[1] << 16 | Ba[0]; + var Ca = H ? new Uint32Array(Aa) : Aa; + function sa(a, c) { + function b(a, c) { + var b = a.G, d = [], e = 0, f; + f = Ca[a.length]; + d[e++] = 65535 & f; + d[e++] = f >> 16 & 255; + d[e++] = f >> 24; + var g; + switch (v) { + case 1 === b: + g = [0, b - 1, 0]; + break; + + case 2 === b: + g = [1, b - 2, 0]; + break; + + case 3 === b: + g = [2, b - 3, 0]; + break; + + case 4 === b: + g = [3, b - 4, 0]; + break; + + case 6 >= b: + g = [4, b - 5, 1]; + break; + + case 8 >= b: + g = [5, b - 7, 1]; + break; + + case 12 >= b: + g = [6, b - 9, 2]; + break; + + case 16 >= b: + g = [7, b - 13, 2]; + break; + + case 24 >= b: + g = [8, b - 17, 3]; + break; + + case 32 >= b: + g = [9, b - 25, 3]; + break; + + case 48 >= b: + g = [10, b - 33, 4]; + break; + + case 64 >= b: + g = [11, b - 49, 4]; + break; + + case 96 >= b: + g = [12, b - 65, 5]; + break; + + case 128 >= b: + g = [13, b - 97, 5]; + break; + + case 192 >= b: + g = [14, b - 129, 6]; + break; + + case 256 >= b: + g = [15, b - 193, 6]; + break; + + case 384 >= b: + g = [16, b - 257, 7]; + break; + + case 512 >= b: + g = [17, b - 385, 7]; + break; + + case 768 >= b: + g = [18, b - 513, 8]; + break; + + case 1024 >= b: + g = [19, b - 769, 8]; + break; + + case 1536 >= b: + g = [20, b - 1025, 9]; + break; + + case 2048 >= b: + g = [21, b - 1537, 9]; + break; + + case 3072 >= b: + g = [22, b - 2049, 10]; + break; + + case 4096 >= b: + g = [23, b - 3073, 10]; + break; + + case 6144 >= b: + g = [24, b - 4097, 11]; + break; + + case 8192 >= b: + g = [25, b - 6145, 11]; + break; + + case 12288 >= b: + g = [26, b - 8193, 12]; + break; + + case 16384 >= b: + g = [27, b - 12289, 12]; + break; + + case 24576 >= b: + g = [28, b - 16385, 13]; + break; + + case 32768 >= b: + g = [29, b - 24577, 13]; + break; + + default: + i("invalid distance"); + } + f = g; + d[e++] = f[0]; + d[e++] = f[1]; + d[e++] = f[2]; + var h, j; + h = 0; + for (j = d.length; h < j; ++h) l[q++] = d[h]; + t[d[0]]++; + z[d[3]]++; + E = a.length + c - 1; + n = null; + } + var e, f, d, g, h, m = {}, j, s, n, l = H ? new Uint16Array(2 * c.length) : [], q = 0, E = 0, t = new (H ? Uint32Array : Array)(286), z = new (H ? Uint32Array : Array)(30), K = a.w, A; + if (!H) { + for (d = 0; 285 >= d;) t[d++] = 0; + for (d = 0; 29 >= d;) z[d++] = 0; + } + t[256] = 1; + e = 0; + for (f = c.length; e < f; ++e) { + d = h = 0; + for (g = 3; d < g && e + d !== f; ++d) h = h << 8 | c[e + d]; + m[h] === r && (m[h] = []); + j = m[h]; + if (!(0 < E--)) { + for (; 0 < j.length && 32768 < e - j[0];) j.shift(); + if (e + 3 >= f) { + n && b(n, -1); + d = 0; + for (g = f - e; d < g; ++d) A = c[e + d], l[q++] = A, ++t[A]; + break; + } + if (0 < j.length) { + var x = r, B = r, k = 0, p = r, D = r, C = r, da = r, W = c.length, D = 0, da = j.length; + a: for (; D < da; D++) { + x = j[da - D - 1]; + p = 3; + if (3 < k) { + for (C = k; 3 < C; C--) if (c[x + C - 1] !== c[e + C - 1]) continue a; + p = k; + } + for (; 258 > p && e + p < W && c[x + p] === c[e + p];) ++p; + p > k && (B = x, k = p); + if (258 === p) break; + } + s = new wa(k, e - B); + n ? n.length < s.length ? (A = c[e - 1], l[q++] = A, ++t[A], b(s, 0)) : b(n, -1) : s.length < K ? n = s : b(s, 0); + } else n ? b(n, -1) : (A = c[e], l[q++] = A, ++t[A]); + } + j.push(e); + } + l[q++] = 256; + t[256]++; + a.L = t; + a.K = z; + return H ? l.subarray(0, q) : l; + } + function ta(a, c) { + function b(a) { + var c = z[a][K[a]]; + c === n ? (b(a + 1), b(a + 1)) : --E[c]; + ++K[a]; + } + var e = a.length, f = new la(572), d = new (H ? Uint8Array : Array)(e), g, h, m, j, s; + if (!H) for (j = 0; j < e; j++) d[j] = 0; + for (j = 0; j < e; ++j) 0 < a[j] && f.push(j, a[j]); + g = Array(f.length / 2); + h = new (H ? Uint32Array : Array)(f.length / 2); + if (1 === g.length) return d[f.pop().index] = 1, d; + j = 0; + for (s = f.length / 2; j < s; ++j) g[j] = f.pop(), h[j] = g[j].value; + var n = h.length, l = new (H ? Uint16Array : Array)(c), q = new (H ? Uint8Array : Array)(c), E = new (H ? Uint8Array : Array)(n), t = Array(c), z = Array(c), K = Array(c), A = (1 << c) - n, x = 1 << c - 1, B, k, p, D, C; + l[c - 1] = n; + for (k = 0; k < c; ++k) A < x ? q[k] = 0 : (q[k] = 1, A -= x), A <<= 1, l[c - 2 - k] = (l[c - 1 - k] / 2 | 0) + n; + l[0] = q[0]; + t[0] = Array(l[0]); + z[0] = Array(l[0]); + for (k = 1; k < c; ++k) l[k] > 2 * l[k - 1] + q[k] && (l[k] = 2 * l[k - 1] + q[k]), + t[k] = Array(l[k]), z[k] = Array(l[k]); + for (B = 0; B < n; ++B) E[B] = c; + for (p = 0; p < l[c - 1]; ++p) t[c - 1][p] = h[p], z[c - 1][p] = p; + for (B = 0; B < c; ++B) K[B] = 0; + 1 === q[c - 1] && (--E[0], ++K[c - 1]); + for (k = c - 2; 0 <= k; --k) { + D = B = 0; + C = K[k + 1]; + for (p = 0; p < l[k]; p++) D = t[k + 1][C] + t[k + 1][C + 1], D > h[B] ? (t[k][p] = D, + z[k][p] = n, C += 2) : (t[k][p] = h[B], z[k][p] = B, ++B); + K[k] = 0; + 1 === q[k] && b(k); + } + m = E; + j = 0; + for (s = g.length; j < s; ++j) d[g[j].index] = m[j]; + return d; + } + function ua(a) { + var c = new (H ? Uint16Array : Array)(a.length), b = [], e = [], f = 0, d, g, h, m; + d = 0; + for (g = a.length; d < g; d++) b[a[d]] = 1 + (0 | b[a[d]]); + d = 1; + for (g = 16; d <= g; d++) e[d] = f, f += 0 | b[d], f > 1 << d && i("overcommitted"), + f <<= 1; + 65536 > f && i("undercommitted"); + d = 0; + for (g = a.length; d < g; d++) { + f = e[a[d]]; + e[a[d]] += 1; + h = c[d] = 0; + for (m = a[d]; h < m; h++) c[d] = c[d] << 1 | 1 & f, f >>>= 1; + } + return c; + } + function Da(a, c) { + this.input = a; + this.a = new (H ? Uint8Array : Array)(32768); + this.h = U.j; + var b = {}, e; + !c && (c = {}) || "number" !== typeof c.compressionType || (this.h = c.compressionType); + for (e in c) b[e] = c[e]; + b.outputBuffer = this.a; + this.z = new ma(this.input, b); + } + var U = qa; + Da.prototype.n = function () { + var a, c, b, e, f, d, g, h = 0; + g = this.a; + a = Ea; + switch (a) { + case Ea: + c = Math.LOG2E * Math.log(32768) - 8; + break; + + default: + i(Error("invalid compression method")); + } + b = c << 4 | a; + g[h++] = b; + switch (a) { + case Ea: + switch (this.h) { + case U.NONE: + f = 0; + break; + + case U.r: + f = 1; + break; + + case U.j: + f = 2; + break; + + default: + i(Error("unsupported compression type")); + } + break; + + default: + i(Error("invalid compression method")); + } + e = f << 6 | 0; + g[h++] = e | 31 - (256 * b + e) % 31; + d = ba(this.input); + this.z.b = h; + g = this.z.n(); + h = g.length; + H && (g = new Uint8Array(g.buffer), g.length <= h + 4 && (this.a = new Uint8Array(g.length + 4), + this.a.set(g), g = this.a), g = g.subarray(0, h + 4)); + g[h++] = d >> 24 & 255; + g[h++] = d >> 16 & 255; + g[h++] = d >> 8 & 255; + g[h++] = 255 & d; + return g; + }; + y("Zlib.Deflate", Da); + y("Zlib.Deflate.compress", (function (a, c) { + return new Da(a, c).n(); + })); + y("Zlib.Deflate.CompressionType", U); + y("Zlib.Deflate.CompressionType.NONE", U.NONE); + y("Zlib.Deflate.CompressionType.FIXED", U.r); + y("Zlib.Deflate.CompressionType.DYNAMIC", U.j); + function V(a, c) { + this.k = []; + this.l = 32768; + this.e = this.g = this.c = this.q = 0; + this.input = H ? new Uint8Array(a) : a; + this.s = !1; + this.m = Fa; + this.B = !1; + !c && (c = {}) || (c.index && (this.c = c.index), c.bufferSize && (this.l = c.bufferSize), + c.bufferType && (this.m = c.bufferType), c.resize && (this.B = c.resize)); + switch (this.m) { + case Ga: + this.b = 32768; + this.a = new (H ? Uint8Array : Array)(32768 + this.l + 258); + break; + + case Fa: + this.b = 0; + this.a = new (H ? Uint8Array : Array)(this.l); + this.f = this.J; + this.t = this.H; + this.o = this.I; + break; + + default: + i(Error("invalid inflate mode")); + } + } + var Ga = 0, Fa = 1, Ha = { + D: Ga, + C: Fa + }; + V.prototype.p = function () { + for (; !this.s;) { + var a = X(this, 3); + 1 & a && (this.s = v); + a >>>= 1; + switch (a) { + case 0: + var c = this.input, b = this.c, e = this.a, f = this.b, d = r, g = r, h = r, m = e.length, j = r; + this.e = this.g = 0; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: LEN (first byte)")); + g = d; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: LEN (second byte)")); + g |= d << 8; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: NLEN (first byte)")); + h = d; + d = c[b++]; + d === r && i(Error("invalid uncompressed block header: NLEN (second byte)")); + h |= d << 8; + g === ~h && i(Error("invalid uncompressed block header: length verify")); + b + g > c.length && i(Error("input buffer is broken")); + switch (this.m) { + case Ga: + for (; f + g > e.length;) { + j = m - f; + g -= j; + if (H) e.set(c.subarray(b, b + j), f), f += j, b += j; else for (; j--;) e[f++] = c[b++]; + this.b = f; + e = this.f(); + f = this.b; + } + break; + + case Fa: + for (; f + g > e.length;) e = this.f({ + v: 2 + }); + break; + + default: + i(Error("invalid inflate mode")); + } + if (H) e.set(c.subarray(b, b + g), f), f += g, b += g; else for (; g--;) e[f++] = c[b++]; + this.c = b; + this.b = f; + this.a = e; + break; + + case 1: + this.o(Ia, Ja); + break; + + case 2: + Ka(this); + break; + + default: + i(Error("unknown BTYPE: " + a)); + } + } + return this.t(); + }; + var La = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], Za = H ? new Uint16Array(La) : La, $a = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258], ab = H ? new Uint16Array($a) : $a, bb = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0], cb = H ? new Uint8Array(bb) : bb, db = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], eb = H ? new Uint16Array(db) : db, fb = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], gb = H ? new Uint8Array(fb) : fb, hb = new (H ? Uint8Array : Array)(288), Y, ib; + Y = 0; + for (ib = hb.length; Y < ib; ++Y) hb[Y] = 143 >= Y ? 8 : 255 >= Y ? 9 : 279 >= Y ? 7 : 8; + var Ia = S(hb), jb = new (H ? Uint8Array : Array)(30), kb, lb; + kb = 0; + for (lb = jb.length; kb < lb; ++kb) jb[kb] = 5; + var Ja = S(jb); + function X(a, c) { + for (var b = a.g, e = a.e, f = a.input, d = a.c, g; e < c;) g = f[d++], g === r && i(Error("input buffer is broken")), + b |= g << e, e += 8; + g = b & (1 << c) - 1; + a.g = b >>> c; + a.e = e - c; + a.c = d; + return g; + } + function mb(a, c) { + for (var b = a.g, e = a.e, f = a.input, d = a.c, g = c[0], h = c[1], m, j, s; e < h;) m = f[d++], + m === r && i(Error("input buffer is broken")), b |= m << e, e += 8; + j = g[b & (1 << h) - 1]; + s = j >>> 16; + a.g = b >> s; + a.e = e - s; + a.c = d; + return 65535 & j; + } + function Ka(a) { + function c(a, b, c) { + var d, e, f, g; + for (g = 0; g < a;) switch (d = mb(this, b), d) { + case 16: + for (f = 3 + X(this, 2); f--;) c[g++] = e; + break; + + case 17: + for (f = 3 + X(this, 3); f--;) c[g++] = 0; + e = 0; + break; + + case 18: + for (f = 11 + X(this, 7); f--;) c[g++] = 0; + e = 0; + break; + + default: + e = c[g++] = d; + } + return c; + } + var b = X(a, 5) + 257, e = X(a, 5) + 1, f = X(a, 4) + 4, d = new (H ? Uint8Array : Array)(Za.length), g, h, m, j; + for (j = 0; j < f; ++j) d[Za[j]] = X(a, 3); + g = S(d); + h = new (H ? Uint8Array : Array)(b); + m = new (H ? Uint8Array : Array)(e); + a.o(S(c.call(a, b, g, h)), S(c.call(a, e, g, m))); + } + V.prototype.o = function (a, c) { + var b = this.a, e = this.b; + this.u = a; + for (var f = b.length - 258, d, g, h, m; 256 !== (d = mb(this, a));) if (256 > d) e >= f && (this.b = e, + b = this.f(), e = this.b), b[e++] = d; else { + g = d - 257; + m = ab[g]; + 0 < cb[g] && (m += X(this, cb[g])); + d = mb(this, c); + h = eb[d]; + 0 < gb[d] && (h += X(this, gb[d])); + e >= f && (this.b = e, b = this.f(), e = this.b); + for (; m--;) b[e] = b[e++ - h]; + } + for (; 8 <= this.e;) this.e -= 8, this.c--; + this.b = e; + }; + V.prototype.I = function (a, c) { + var b = this.a, e = this.b; + this.u = a; + for (var f = b.length, d, g, h, m; 256 !== (d = mb(this, a));) if (256 > d) e >= f && (b = this.f(), + f = b.length), b[e++] = d; else { + g = d - 257; + m = ab[g]; + 0 < cb[g] && (m += X(this, cb[g])); + d = mb(this, c); + h = eb[d]; + 0 < gb[d] && (h += X(this, gb[d])); + e + m > f && (b = this.f(), f = b.length); + for (; m--;) b[e] = b[e++ - h]; + } + for (; 8 <= this.e;) this.e -= 8, this.c--; + this.b = e; + }; + V.prototype.f = function () { + var a = new (H ? Uint8Array : Array)(this.b - 32768), c = this.b - 32768, b, e, f = this.a; + if (H) a.set(f.subarray(32768, a.length)); else { + b = 0; + for (e = a.length; b < e; ++b) a[b] = f[b + 32768]; + } + this.k.push(a); + this.q += a.length; + if (H) f.set(f.subarray(c, c + 32768)); else for (b = 0; 32768 > b; ++b) f[b] = f[c + b]; + this.b = 32768; + return f; + }; + V.prototype.J = function (a) { + var c, b = this.input.length / this.c + 1 | 0, e, f, d, g = this.input, h = this.a; + a && ("number" === typeof a.v && (b = a.v), "number" === typeof a.F && (b += a.F)); + 2 > b ? (e = (g.length - this.c) / this.u[2], d = e / 2 * 258 | 0, f = d < h.length ? h.length + d : h.length << 1) : f = h.length * b; + H ? (c = new Uint8Array(f), c.set(h)) : c = h; + return this.a = c; + }; + V.prototype.t = function () { + var a = 0, c = this.a, b = this.k, e, f = new (H ? Uint8Array : Array)(this.q + (this.b - 32768)), d, g, h, m; + if (0 === b.length) return H ? this.a.subarray(32768, this.b) : this.a.slice(32768, this.b); + d = 0; + for (g = b.length; d < g; ++d) { + e = b[d]; + h = 0; + for (m = e.length; h < m; ++h) f[a++] = e[h]; + } + d = 32768; + for (g = this.b; d < g; ++d) f[a++] = c[d]; + this.k = []; + return this.buffer = f; + }; + V.prototype.H = function () { + var a, c = this.b; + H ? this.B ? (a = new Uint8Array(c), a.set(this.a.subarray(0, c))) : a = this.a.subarray(0, c) : (this.a.length > c && (this.a.length = c), + a = this.a); + return this.buffer = a; + }; + function nb(a, c) { + var b, e; + this.input = a; + this.c = 0; + !c && (c = {}) || (c.index && (this.c = c.index), c.verify && (this.M = c.verify)); + b = a[this.c++]; + e = a[this.c++]; + switch (15 & b) { + case Ea: + this.method = Ea; + break; + + default: + i(Error("unsupported compression method")); + } + 0 !== ((b << 8) + e) % 31 && i(Error("invalid fcheck flag:" + ((b << 8) + e) % 31)); + 32 & e && i(Error("fdict flag is not supported")); + this.A = new V(a, { + index: this.c, + bufferSize: c.bufferSize, + bufferType: c.bufferType, + resize: c.resize + }); + } + nb.prototype.p = function () { + var a = this.input, c, b; + c = this.A.p(); + this.c = this.A.c; + this.M && (b = (a[this.c++] << 24 | a[this.c++] << 16 | a[this.c++] << 8 | a[this.c++]) >>> 0, + b !== ba(c) && i(Error("invalid adler-32 checksum"))); + return c; + }; + y("Zlib.Inflate", nb); + y("Zlib.Inflate.BufferType", Ha); + Ha.ADAPTIVE = Ha.C; + Ha.BLOCK = Ha.D; + y("Zlib.Inflate.prototype.decompress", nb.prototype.p); + var ob = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + H && new Uint16Array(ob); + var pb = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258]; + H && new Uint16Array(pb); + var qb = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0]; + H && new Uint8Array(qb); + var rb = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]; + H && new Uint16Array(rb); + var sb = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; + H && new Uint8Array(sb); + var tb = new (H ? Uint8Array : Array)(288), Z, ub; + Z = 0; + for (ub = tb.length; Z < ub; ++Z) tb[Z] = 143 >= Z ? 8 : 255 >= Z ? 9 : 279 >= Z ? 7 : 8; + S(tb); + var vb = new (H ? Uint8Array : Array)(30), wb, xb; + wb = 0; + for (xb = vb.length; wb < xb; ++wb) vb[wb] = 5; + S(vb); + var Ea = 8; + }).call(window); + var _p = window.Zlib; + _p.Deflate = _p["Deflate"]; + _p.Deflate.compress = _p.Deflate["compress"]; + _p.Inflate = _p["Inflate"]; + _p.Inflate.BufferType = _p.Inflate["BufferType"]; + _p.Inflate.prototype.decompress = _p.Inflate.prototype["decompress"]; + module.exports = _p; + }), {}], + 27: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = _interopRequireDefault(require("../../renderer/enums")); + var _color = _interopRequireDefault(require("../value-types/color")); + var _valueTypes = require("../value-types"); + var _index = _interopRequireDefault(require("../renderer/index")); + var _CCEnum = _interopRequireDefault(require("../platform/CCEnum")); + var _CCComponent2 = _interopRequireDefault(require("../components/CCComponent")); + var _CCClassDecorator = require("../platform/CCClassDecorator"); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _class3, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _assertThisInitialized(self) { + if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return self; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var RendererLight = null; + false; + RendererLight = require("../../renderer/scene/light"); + var LightType = (0, _CCEnum["default"])({ + DIRECTIONAL: 0, + POINT: 1, + SPOT: 2, + AMBIENT: 3 + }); + var LightShadowType = (0, _CCEnum["default"])({ + NONE: 0, + HARD: 2, + SOFT_PCF3X3: 3, + SOFT_PCF5X5: 4 + }); + var Light = (_dec = (0, _CCClassDecorator.ccclass)("cc.Light"), _dec2 = (0, _CCClassDecorator.menu)("i18n:MAIN_MENU.component.renderers/Light"), + _dec3 = (0, _CCClassDecorator.inspector)("packages://inspector/inspectors/comps/light.js"), + _dec4 = (0, _CCClassDecorator.property)({ + type: LightType + }), _dec5 = (0, _CCClassDecorator.property)({ + type: LightShadowType + }), _dec(_class = _dec2(_class = (0, _CCClassDecorator.executeInEditMode)(_class = _dec3(_class = (_class2 = (_temp = _class3 = (function (_CCComponent) { + _inheritsLoose(Light, _CCComponent); + _createClass(Light, [{ + key: "type", + get: function get() { + return this._type; + }, + set: function set(val) { + this._type = val; + var type = _enums["default"].LIGHT_DIRECTIONAL; + val === LightType.POINT ? type = _enums["default"].LIGHT_POINT : val === LightType.SPOT ? type = _enums["default"].LIGHT_SPOT : val === LightType.AMBIENT && (type = _enums["default"].LIGHT_AMBIENT); + this._light.setType(type); + } + }, { + key: "color", + get: function get() { + return this._color; + }, + set: function set(val) { + this._color.equals(val) || this._color.set(val); + this._light.setColor(val.r / 255, val.g / 255, val.b / 255); + } + }, { + key: "intensity", + get: function get() { + return this._intensity; + }, + set: function set(val) { + this._intensity = val; + this._light.setIntensity(val); + } + }, { + key: "range", + get: function get() { + return this._range; + }, + set: function set(val) { + this._range = val; + this._light.setRange(val); + } + }, { + key: "spotAngle", + get: function get() { + return this._spotAngle; + }, + set: function set(val) { + this._spotAngle = val; + this._light.setSpotAngle((0, _valueTypes.toRadian)(val)); + } + }, { + key: "spotExp", + get: function get() { + return this._spotExp; + }, + set: function set(val) { + this._spotExp = val; + this._light.setSpotExp(val); + } + }, { + key: "shadowType", + get: function get() { + return this._shadowType; + }, + set: function set(val) { + this._shadowType = val; + this._light.setShadowType(val); + } + }, { + key: "shadowResolution", + get: function get() { + return this._shadowResolution; + }, + set: function set(val) { + this._shadowResolution = val; + this._light.setShadowResolution(val); + } + }, { + key: "shadowDarkness", + get: function get() { + return this._shadowDarkness; + }, + set: function set(val) { + this._shadowDarkness = val; + this._light.setShadowDarkness(val); + } + }, { + key: "shadowMinDepth", + get: function get() { + return this._shadowMinDepth; + }, + set: function set(val) { + this._shadowMinDepth = val; + this._light.setShadowMinDepth(val); + } + }, { + key: "shadowMaxDepth", + get: function get() { + return this._shadowMaxDepth; + }, + set: function set(val) { + this._shadowMaxDepth = val; + this._light.setShadowMaxDepth(val); + } + }, { + key: "shadowFrustumSize", + get: function get() { + return this._shadowFrustumSize; + }, + set: function set(val) { + this._shadowFrustumSize = val; + this._light.setShadowFrustumSize(val); + } + }]); + function Light() { + var _this; + _this = _CCComponent.call(this) || this; + _initializerDefineProperty(_this, "_type", _descriptor, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_color", _descriptor2, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_intensity", _descriptor3, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_range", _descriptor4, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_spotAngle", _descriptor5, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_spotExp", _descriptor6, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowType", _descriptor7, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowResolution", _descriptor8, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowDarkness", _descriptor9, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowMinDepth", _descriptor10, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowMaxDepth", _descriptor11, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowFrustumSize", _descriptor12, _assertThisInitialized(_this)); + _initializerDefineProperty(_this, "_shadowBias", _descriptor13, _assertThisInitialized(_this)); + _this._light = new RendererLight(); + return _this; + } + var _proto = Light.prototype; + _proto.onLoad = function onLoad() { + this._light.setNode(this.node); + this.type = this._type; + this.color = this._color; + this.intensity = this._intensity; + this.range = this._range; + this.spotAngle = this._spotAngle; + this.spotExp = this._spotExp; + this.shadowType = this._shadowType; + this.shadowResolution = this._shadowResolution; + this.shadowDarkness = this._shadowDarkness; + this.shadowMaxDepth = this._shadowMaxDepth; + this.shadowFrustumSize = this._shadowFrustumSize; + this.shadowBias = this._shadowBias; + }; + _proto.onEnable = function onEnable() { + _index["default"].scene.addLight(this._light); + }; + _proto.onDisable = function onDisable() { + _index["default"].scene.removeLight(this._light); + }; + return Light; + })(_CCComponent2["default"]), _class3.Type = LightType, _class3.ShadowType = LightShadowType, + _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "_type", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return LightType.DIRECTIONAL; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_color", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _color["default"].WHITE; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "_intensity", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "_range", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1e3; + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "_spotAngle", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 60; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "_spotExp", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "_shadowType", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return LightShadowType.NONE; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "_shadowResolution", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1024; + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "_shadowDarkness", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return .5; + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "_shadowMinDepth", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "_shadowMaxDepth", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 4096; + } + }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "_shadowFrustumSize", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1024; + } + }), _descriptor13 = _applyDecoratedDescriptor(_class2.prototype, "_shadowBias", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 5e-4; + } + }), _applyDecoratedDescriptor(_class2.prototype, "type", [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "type"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "color", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "color"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "intensity", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "intensity"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "range", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "range"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "spotAngle", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "spotAngle"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "spotExp", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "spotExp"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowType", [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowType"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowResolution", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowResolution"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowDarkness", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowDarkness"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowMinDepth", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowMinDepth"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowMaxDepth", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowMaxDepth"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "shadowFrustumSize", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "shadowFrustumSize"), _class2.prototype), + _class2)) || _class) || _class) || _class) || _class); + exports["default"] = Light; + cc.Light = Light; + module.exports = exports["default"]; + }), { + "../../renderer/enums": 367, + "../../renderer/scene/light": 393, + "../components/CCComponent": 149, + "../platform/CCClassDecorator": 240, + "../platform/CCEnum": 241, + "../renderer/index": 271, + "../value-types": 339, + "../value-types/color": 338 + }], + 28: [(function (require, module, exports) { + "use strict"; + var Model = cc.Class({ + name: "cc.Model", + extends: cc.Asset, + ctor: function ctor() { + this._rootNode = null; + this.loaded = false; + }, + properties: { + _nodes: { + default: [] + }, + _precomputeJointMatrix: false, + nodes: { + get: function get() { + return this._nodes; + } + }, + rootNode: { + get: function get() { + return this._rootNode; + } + }, + precomputeJointMatrix: { + get: function get() { + return this._precomputeJointMatrix; + } + } + }, + onLoad: function onLoad() { + var nodes = this._nodes; + this._rootNode = nodes[0]; + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + node.position = cc.v3.apply(this, node.position); + node.scale = cc.v3.apply(this, node.scale); + node.quat = cc.quat.apply(this, node.quat); + node.uniqueBindPose && (node.uniqueBindPose = cc.mat4.apply(this, node.uniqueBindPose)); + var pose = node.bindpose; + if (pose) for (var _i in pose) pose[_i] = cc.mat4.apply(this, pose[_i]); + var children = node.children; + if (children) for (var _i2 = 0; _i2 < children.length; _i2++) children[_i2] = nodes[children[_i2]]; + } + } + }); + cc.Model = module.exports = Model; + }), {}], + 29: [(function (require, module, exports) { + "use strict"; + var _quat = _interopRequireDefault(require("../value-types/quat")); + var _vec = _interopRequireDefault(require("../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _quat_tmp = cc.quat(); + var _vec3_tmp = cc.v3(); + cc.Rotate3DTo = cc.Class({ + name: "cc.Rotate3DTo", + extends: cc.ActionInterval, + ctor: function ctor(duration, dstAngleX, dstAngleY, dstAngleZ) { + this._startQuat = cc.quat(); + this._dstQuat = cc.quat(); + void 0 !== dstAngleX && this.initWithDuration(duration, dstAngleX, dstAngleY, dstAngleZ); + }, + initWithDuration: function initWithDuration(duration, dstAngleX, dstAngleY, dstAngleZ) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + var dstQuat = this._dstQuat; + if (dstAngleX instanceof cc.Quat) dstQuat.set(dstAngleX); else { + if (dstAngleX instanceof cc.Vec3) { + dstAngleY = dstAngleX.y; + dstAngleZ = dstAngleX.z; + dstAngleX = dstAngleX.x; + } else { + dstAngleY = dstAngleY || 0; + dstAngleZ = dstAngleZ || 0; + } + _quat["default"].fromEuler(dstQuat, dstAngleX, dstAngleY, dstAngleZ); + } + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.Rotate3DTo(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._dstQuat); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + this._startQuat.set(target.quat); + }, + reverse: function reverse() { + cc.logID(1016); + }, + update: function update(dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + _quat["default"].slerp(_quat_tmp, this._startQuat, this._dstQuat, dt); + this.target.setRotation(_quat_tmp); + } + } + }); + cc.rotate3DTo = function (duration, dstAngleX, dstAngleY, dstAngleZ) { + return new cc.Rotate3DTo(duration, dstAngleX, dstAngleY, dstAngleZ); + }; + cc.Rotate3DBy = cc.Class({ + name: "cc.Rotate3DBy", + extends: cc.ActionInterval, + ctor: function ctor(duration, deltaAngleX, deltaAngleY, deltaAngleZ) { + this._startQuat = cc.quat(); + this._dstQuat = cc.quat(); + this._deltaAngle = cc.v3(); + void 0 !== deltaAngleX && this.initWithDuration(duration, deltaAngleX, deltaAngleY, deltaAngleZ); + }, + initWithDuration: function initWithDuration(duration, deltaAngleX, deltaAngleY, deltaAngleZ) { + if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) { + if (deltaAngleX instanceof cc.Vec3) { + deltaAngleY = deltaAngleX.y; + deltaAngleZ = deltaAngleX.z; + deltaAngleX = deltaAngleX.x; + } else { + deltaAngleY = deltaAngleY || 0; + deltaAngleZ = deltaAngleZ || 0; + } + _vec["default"].set(this._deltaAngle, deltaAngleX, deltaAngleY, deltaAngleZ); + return true; + } + return false; + }, + clone: function clone() { + var action = new cc.Rotate3DBy(); + this._cloneDecoration(action); + action.initWithDuration(this._duration, this._angle); + return action; + }, + startWithTarget: function startWithTarget(target) { + cc.ActionInterval.prototype.startWithTarget.call(this, target); + var startAngle = target.eulerAngles; + var deltaAngle = this._deltaAngle; + _quat["default"].fromEuler(this._dstQuat, startAngle.x + deltaAngle.x, startAngle.y + deltaAngle.y, startAngle.z + deltaAngle.z); + this._startQuat.set(target.quat); + }, + update: (function () { + var RAD = Math.PI / 180; + return function (dt) { + dt = this._computeEaseTime(dt); + if (this.target) { + _quat["default"].slerp(_quat_tmp, this._startQuat, this._dstQuat, dt); + this.target.setRotation(_quat_tmp); + } + }; + })(), + reverse: function reverse() { + var angle = this._angle; + _vec3_tmp.x = -angle.x; + _vec3_tmp.y = -angle.y; + _vec3_tmp.z = -angle.z; + var action = new cc.Rotate3DBy(this._duration, _vec3_tmp); + this._cloneDecoration(action); + this._reverseEaseList(action); + return action; + } + }); + cc.rotate3DBy = function (duration, deltaAngleX, deltaAngleY, deltaAngleZ) { + return new cc.Rotate3DBy(duration, deltaAngleX, deltaAngleY, deltaAngleZ); + }; + }), { + "../value-types/quat": 342, + "../value-types/vec3": 349 + }], + 30: [(function (require, module, exports) { + "use strict"; + true, true; + require("./primitive"); + require("./physics/exports/physics-builtin"); + require("./physics/exports/physics-cannon"); + require("./physics/exports/physics-framework"); + require("./CCModel"); + require("./skeleton/CCSkeleton"); + require("./skeleton/CCSkeletonAnimationClip"); + require("./actions"); + require("./physics/framework/assets/physics-material"); + true; + require("./skeleton/CCSkeletonAnimation"); + require("./skeleton/CCSkinnedMeshRenderer"); + require("./skeleton/skinned-mesh-renderer"); + require("./CCLightComponent"); + require("./particle/particle-system-3d"); + require("./particle/renderer/particle-system-3d-renderer"); + }), { + "./CCLightComponent": 27, + "./CCModel": 28, + "./actions": 29, + "./particle/particle-system-3d": 46, + "./particle/renderer/particle-system-3d-renderer": 49, + "./physics/exports/physics-builtin": void 0, + "./physics/exports/physics-cannon": void 0, + "./physics/exports/physics-framework": void 0, + "./physics/framework/assets/physics-material": void 0, + "./primitive": 56, + "./skeleton/CCSkeleton": 65, + "./skeleton/CCSkeletonAnimation": 66, + "./skeleton/CCSkeletonAnimationClip": 67, + "./skeleton/CCSkinnedMeshRenderer": 68, + "./skeleton/skinned-mesh-renderer": 69 + }], + 31: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _gradientRange = _interopRequireDefault(require("./gradient-range")); + var _dec, _dec2, _class, _class2, _descriptor, _descriptor2, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var COLOR_OVERTIME_RAND_OFFSET = 91041; + var ColorOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.ColorOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _gradientRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + function ColorOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "color", _descriptor2, this); + } + var _proto = ColorOvertimeModule.prototype; + _proto.animate = function animate(particle) { + if (this.enable) { + particle.color.set(particle.startColor); + particle.color.multiply(this.color.evaluate(1 - particle.remainingLifetime / particle.startLifetime, (0, + _valueTypes.pseudoRandom)(particle.randomSeed + COLOR_OVERTIME_RAND_OFFSET))); + } + }; + return ColorOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "color", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradientRange["default"](); + } + }), _class2)) || _class); + exports["default"] = ColorOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "./gradient-range": 34 + }], + 32: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = exports.Mode = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _CCEnum = _interopRequireDefault(require("../../../platform/CCEnum")); + var _valueTypes = require("../../../value-types"); + var _curve = require("../curve"); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _class3, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var SerializableTable = false; + var Mode = (0, _CCEnum["default"])({ + Constant: 0, + Curve: 1, + TwoCurves: 2, + TwoConstants: 3 + }); + exports.Mode = Mode; + var CurveRange = (_dec = (0, _CCClassDecorator.ccclass)("cc.CurveRange"), _dec2 = (0, + _CCClassDecorator.property)({ + type: Mode + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curve.AnimationCurve + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curve.AnimationCurve + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curve.AnimationCurve + }), _dec(_class = (_class2 = (_temp = _class3 = (function () { + function CurveRange() { + _initializerDefineProperty(this, "mode", _descriptor, this); + _initializerDefineProperty(this, "curve", _descriptor2, this); + _initializerDefineProperty(this, "curveMin", _descriptor3, this); + _initializerDefineProperty(this, "curveMax", _descriptor4, this); + _initializerDefineProperty(this, "constant", _descriptor5, this); + _initializerDefineProperty(this, "constantMin", _descriptor6, this); + _initializerDefineProperty(this, "constantMax", _descriptor7, this); + _initializerDefineProperty(this, "multiplier", _descriptor8, this); + } + var _proto = CurveRange.prototype; + _proto.evaluate = function evaluate(time, rndRatio) { + switch (this.mode) { + case Mode.Constant: + return this.constant; + + case Mode.Curve: + return this.curve.evaluate(time) * this.multiplier; + + case Mode.TwoCurves: + return (0, _valueTypes.lerp)(this.curveMin.evaluate(time), this.curveMax.evaluate(time), rndRatio) * this.multiplier; + + case Mode.TwoConstants: + return (0, _valueTypes.lerp)(this.constantMin, this.constantMax, rndRatio); + } + }; + _proto.getMax = function getMax() { + switch (this.mode) { + case Mode.Constant: + return this.constant; + + case Mode.Curve: + return this.multiplier; + + case Mode.TwoConstants: + return this.constantMax; + + case Mode.TwoCurves: + return this.multiplier; + } + return 0; + }; + return CurveRange; + })(), _class3.Mode = Mode, _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "mode", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return Mode.Constant; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "curve", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curve.AnimationCurve(); + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "curveMin", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curve.AnimationCurve(); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "curveMax", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curve.AnimationCurve(); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "constant", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "constantMin", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "constantMax", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "multiplier", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _class2)) || _class); + exports["default"] = CurveRange; + false; + cc.CurveRange = CurveRange; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../platform/CCEnum": 241, + "../../../value-types": 339, + "../curve": 42 + }], + 33: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _enum = require("../enum"); + var _particleGeneralFunction = require("../particle-general-function"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var FORCE_OVERTIME_RAND_OFFSET = 212165; + var _temp_v3 = cc.v3(); + var ForceOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.ForceOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _enum.Space + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1], + displayOrder: 4 + }), _dec(_class = (_class2 = (_temp = (function () { + function ForceOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "space", _descriptor2, this); + _initializerDefineProperty(this, "x", _descriptor3, this); + _initializerDefineProperty(this, "y", _descriptor4, this); + _initializerDefineProperty(this, "z", _descriptor5, this); + this.randomized = false; + this.rotation = null; + this.needTransform = false; + this.rotation = new _valueTypes.Quat(); + this.needTransform = false; + } + var _proto = ForceOvertimeModule.prototype; + _proto.update = function update(space, worldTransform) { + this.needTransform = (0, _particleGeneralFunction.calculateTransform)(space, this.space, worldTransform, this.rotation); + }; + _proto.animate = function animate(p, dt) { + var normalizedTime = 1 - p.remainingLifetime / p.startLifetime; + var force = _valueTypes.Vec3.set(_temp_v3, this.x.evaluate(normalizedTime, (0, _valueTypes.pseudoRandom)(p.randomSeed + FORCE_OVERTIME_RAND_OFFSET)), this.y.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + FORCE_OVERTIME_RAND_OFFSET)), this.z.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + FORCE_OVERTIME_RAND_OFFSET))); + this.needTransform && _valueTypes.Vec3.transformQuat(force, force, this.rotation); + _valueTypes.Vec3.scaleAndAdd(p.velocity, p.velocity, force, dt); + }; + return ForceOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "space", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.Local; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "x", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "y", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "z", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _class2)) || _class); + exports["default"] = ForceOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "../enum": 44, + "../particle-general-function": 45, + "./curve-range": 32 + }], + 34: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _CCEnum = _interopRequireDefault(require("../../../platform/CCEnum")); + var _gradient = require("./gradient"); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _class3, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var GRADIENT_MODE_FIX = 0; + var GRADIENT_MODE_BLEND = 1; + var GRADIENT_RANGE_MODE_COLOR = 0; + var GRADIENT_RANGE_MODE_TWO_COLOR = 1; + var GRADIENT_RANGE_MODE_RANDOM_COLOR = 2; + var GRADIENT_RANGE_MODE_GRADIENT = 3; + var GRADIENT_RANGE_MODE_TWO_GRADIENT = 4; + var SerializableTable = false; + var Mode = (0, _CCEnum["default"])({ + Color: 0, + Gradient: 1, + TwoColors: 2, + TwoGradients: 3, + RandomColor: 4 + }); + var GradientRange = (_dec = (0, _CCClassDecorator.ccclass)("cc.GradientRange"), + _dec2 = (0, _CCClassDecorator.property)({ + type: Mode + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _gradient.Gradient + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _gradient.Gradient + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _gradient.Gradient + }), _dec(_class = (_class2 = (_temp = _class3 = (function () { + function GradientRange() { + _initializerDefineProperty(this, "_mode", _descriptor, this); + _initializerDefineProperty(this, "_color", _descriptor2, this); + _initializerDefineProperty(this, "color", _descriptor3, this); + _initializerDefineProperty(this, "colorMin", _descriptor4, this); + _initializerDefineProperty(this, "colorMax", _descriptor5, this); + _initializerDefineProperty(this, "gradient", _descriptor6, this); + _initializerDefineProperty(this, "gradientMin", _descriptor7, this); + _initializerDefineProperty(this, "gradientMax", _descriptor8, this); + } + var _proto = GradientRange.prototype; + _proto.evaluate = function evaluate(time, rndRatio) { + switch (this._mode) { + case Mode.Color: + return this.color; + + case Mode.TwoColors: + this.colorMin.lerp(this.colorMax, rndRatio, this._color); + return this._color; + + case Mode.RandomColor: + return this.gradient.randomColor(); + + case Mode.Gradient: + return this.gradient.evaluate(time); + + case Mode.TwoGradients: + this.gradientMin.evaluate(time).lerp(this.gradientMax.evaluate(time), rndRatio, this._color); + return this._color; + + default: + return this.color; + } + }; + _createClass(GradientRange, [{ + key: "mode", + get: function get() { + return this._mode; + }, + set: function set(m) { + false; + this._mode = m; + } + }]); + return GradientRange; + })(), _class3.Mode = Mode, _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "_mode", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return Mode.Color; + } + }), _applyDecoratedDescriptor(_class2.prototype, "mode", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "mode"), _class2.prototype), + _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_color", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return cc.Color.WHITE.clone(); + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "color", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return cc.Color.WHITE.clone(); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "colorMin", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return cc.Color.WHITE.clone(); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "colorMax", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return cc.Color.WHITE.clone(); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "gradient", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradient.Gradient(); + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "gradientMin", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradient.Gradient(); + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "gradientMax", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradient.Gradient(); + } + }), _class2)) || _class); + exports["default"] = GradientRange; + false; + cc.GradientRange = GradientRange; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../platform/CCEnum": 241, + "./gradient": 35 + }], + 35: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.Gradient = exports.AlphaKey = exports.ColorKey = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _CCEnum = _interopRequireDefault(require("../../../platform/CCEnum")); + var _valueTypes = require("../../../value-types"); + var _dec, _class, _class2, _descriptor, _descriptor2, _temp, _dec2, _class4, _class5, _descriptor3, _descriptor4, _temp2, _dec3, _dec4, _dec5, _dec6, _class7, _class8, _descriptor5, _descriptor6, _descriptor7, _class9, _temp3; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var Mode = (0, _CCEnum["default"])({ + Blend: 0, + Fixed: 1 + }); + var ColorKey = (_dec = (0, _CCClassDecorator.ccclass)("cc.ColorKey"), _dec(_class = (_class2 = (_temp = function ColorKey() { + _initializerDefineProperty(this, "color", _descriptor, this); + _initializerDefineProperty(this, "time", _descriptor2, this); + }, _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "color", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return cc.Color.WHITE.clone(); + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "time", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _class2)) || _class); + exports.ColorKey = ColorKey; + var AlphaKey = (_dec2 = (0, _CCClassDecorator.ccclass)("cc.AlphaKey"), _dec2(_class4 = (_class5 = (_temp2 = function AlphaKey() { + _initializerDefineProperty(this, "alpha", _descriptor3, this); + _initializerDefineProperty(this, "time", _descriptor4, this); + }, _temp2), _descriptor3 = _applyDecoratedDescriptor(_class5.prototype, "alpha", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class5.prototype, "time", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _class5)) || _class4); + exports.AlphaKey = AlphaKey; + var Gradient = (_dec3 = (0, _CCClassDecorator.ccclass)("cc.Gradient"), _dec4 = (0, + _CCClassDecorator.property)({ + type: [ColorKey] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: [AlphaKey] + }), _dec6 = (0, _CCClassDecorator.property)({ + type: Mode + }), _dec3(_class7 = (_class8 = (_temp3 = _class9 = (function () { + function Gradient() { + _initializerDefineProperty(this, "colorKeys", _descriptor5, this); + _initializerDefineProperty(this, "alphaKeys", _descriptor6, this); + _initializerDefineProperty(this, "mode", _descriptor7, this); + this._color = null; + this._color = cc.Color.WHITE.clone(); + } + var _proto = Gradient.prototype; + _proto.setKeys = function setKeys(colorKeys, alphaKeys) { + this.colorKeys = colorKeys; + this.alphaKeys = alphaKeys; + }; + _proto.sortKeys = function sortKeys() { + this.colorKeys.length > 1 && this.colorKeys.sort((function (a, b) { + return a.time - b.time; + })); + this.alphaKeys.length > 1 && this.alphaKeys.sort((function (a, b) { + return a.time - b.time; + })); + }; + _proto.evaluate = function evaluate(time) { + this.getRGB(time); + this._color._fastSetA(this.getAlpha(time)); + return this._color; + }; + _proto.randomColor = function randomColor() { + var c = this.colorKeys[Math.trunc(Math.random() * this.colorKeys.length)]; + var a = this.alphaKeys[Math.trunc(Math.random() * this.alphaKeys.length)]; + this._color.set(c.color); + this._color._fastSetA(a.alpha); + return this._color; + }; + _proto.getRGB = function getRGB(time) { + if (!(this.colorKeys.length > 1)) { + if (1 === this.colorKeys.length) { + this._color.set(this.colorKeys[0].color); + return this._color; + } + this._color.set(cc.Color.WHITE); + return this._color; + } + time = (0, _valueTypes.repeat)(time, 1); + for (var i = 1; i < this.colorKeys.length; ++i) { + var preTime = this.colorKeys[i - 1].time; + var curTime = this.colorKeys[i].time; + if (time >= preTime && time < curTime) { + if (this.mode === Mode.Fixed) return this.colorKeys[i].color; + var factor = (time - preTime) / (curTime - preTime); + this.colorKeys[i - 1].color.lerp(this.colorKeys[i].color, factor, this._color); + return this._color; + } + } + var lastIndex = this.colorKeys.length - 1; + time < this.colorKeys[0].time ? cc.Color.BLACK.lerp(this.colorKeys[0].color, time / this.colorKeys[0].time, this._color) : time > this.colorKeys[lastIndex].time && this.colorKeys[lastIndex].color.lerp(cc.Color.BLACK, (time - this.colorKeys[lastIndex].time) / (1 - this.colorKeys[lastIndex].time), this._color); + }; + _proto.getAlpha = function getAlpha(time) { + if (!(this.alphaKeys.length > 1)) return 1 === this.alphaKeys.length ? this.alphaKeys[0].alpha : 255; + time = (0, _valueTypes.repeat)(time, 1); + for (var i = 1; i < this.alphaKeys.length; ++i) { + var preTime = this.alphaKeys[i - 1].time; + var curTime = this.alphaKeys[i].time; + if (time >= preTime && time < curTime) { + if (this.mode === Mode.Fixed) return this.alphaKeys[i].alpha; + var factor = (time - preTime) / (curTime - preTime); + return (0, _valueTypes.lerp)(this.alphaKeys[i - 1].alpha, this.alphaKeys[i].alpha, factor); + } + } + var lastIndex = this.alphaKeys.length - 1; + if (time < this.alphaKeys[0].time) return (0, _valueTypes.lerp)(255, this.alphaKeys[0].alpha, time / this.alphaKeys[0].time); + if (time > this.alphaKeys[lastIndex].time) return (0, _valueTypes.lerp)(this.alphaKeys[lastIndex].alpha, 255, (time - this.alphaKeys[lastIndex].time) / (1 - this.alphaKeys[lastIndex].time)); + }; + return Gradient; + })(), _class9.Mode = Mode, _temp3), _descriptor5 = _applyDecoratedDescriptor(_class8.prototype, "colorKeys", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new Array(); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class8.prototype, "alphaKeys", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new Array(); + } + }), _descriptor7 = _applyDecoratedDescriptor(_class8.prototype, "mode", [_dec6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return Mode.Blend; + } + }), _class8)) || _class7); + exports.Gradient = Gradient; + cc.ColorKey = ColorKey; + cc.AlphaKey = AlphaKey; + cc.Gradient = Gradient; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../platform/CCEnum": 241, + "../../../value-types": 339 + }], + 36: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _enum = require("../enum"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var LIMIT_VELOCITY_RAND_OFFSET = 23541; + var _temp_v3 = cc.v3(); + var _temp_v3_1 = cc.v3(); + function dampenBeyondLimit(vel, limit, dampen) { + var sgn = Math.sign(vel); + var abs = Math.abs(vel); + abs > limit && (abs = (0, _valueTypes.lerp)(abs, limit, dampen)); + return abs * sgn; + } + var LimitVelocityOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.LimitVelocityOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _enum.Space + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec6 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec(_class = (_class2 = (_temp = (function () { + function LimitVelocityOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "space", _descriptor2, this); + _initializerDefineProperty(this, "separateAxes", _descriptor3, this); + _initializerDefineProperty(this, "limit", _descriptor4, this); + _initializerDefineProperty(this, "limitX", _descriptor5, this); + _initializerDefineProperty(this, "limitY", _descriptor6, this); + _initializerDefineProperty(this, "limitZ", _descriptor7, this); + _initializerDefineProperty(this, "dampen", _descriptor8, this); + this.drag = null; + this.multiplyDragByParticleSize = false; + this.multiplyDragByParticleVelocity = false; + this.rotation = null; + this.needTransform = false; + this.rotation = new _valueTypes.Quat(); + this.needTransform = false; + } + var _proto = LimitVelocityOvertimeModule.prototype; + _proto.update = function update(space, worldTransform) { + this.needTransform = calculateTransform(space, this.space, worldTransform, this.rotation); + }; + _proto.animate = function animate(p) { + var normalizedTime = 1 - p.remainingLifetime / p.startLifetime; + var dampedVel = _temp_v3; + if (this.separateAxes) { + _valueTypes.Vec3.set(_temp_v3_1, this.limitX.evaluate(normalizedTime, (0, _valueTypes.pseudoRandom)(p.randomSeed + LIMIT_VELOCITY_RAND_OFFSET)), this.limitY.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + LIMIT_VELOCITY_RAND_OFFSET)), this.limitZ.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + LIMIT_VELOCITY_RAND_OFFSET))); + this.needTransform && _valueTypes.Vec3.transformQuat(_temp_v3_1, _temp_v3_1, this.rotation); + _valueTypes.Vec3.set(dampedVel, dampenBeyondLimit(p.ultimateVelocity.x, _temp_v3_1.x, this.dampen), dampenBeyondLimit(p.ultimateVelocity.y, _temp_v3_1.y, this.dampen), dampenBeyondLimit(p.ultimateVelocity.z, _temp_v3_1.z, this.dampen)); + } else { + _valueTypes.Vec3.normalize(dampedVel, p.ultimateVelocity); + _valueTypes.Vec3.scale(dampedVel, dampedVel, dampenBeyondLimit(p.ultimateVelocity.len(), this.limit.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + LIMIT_VELOCITY_RAND_OFFSET)), this.dampen)); + } + _valueTypes.Vec3.copy(p.ultimateVelocity, dampedVel); + }; + return LimitVelocityOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "space", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.Local; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "separateAxes", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "limit", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "limitX", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "limitY", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "limitZ", [_dec6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "dampen", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 3; + } + }), _class2)) || _class); + exports["default"] = LimitVelocityOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "../enum": 44, + "./curve-range": 32 + }], + 37: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var ROTATION_OVERTIME_RAND_OFFSET = 125292; + var RotationOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.RotationOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1], + radian: true + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1], + radian: true + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1], + radian: true + }), _dec(_class = (_class2 = (_temp = (function () { + _createClass(RotationOvertimeModule, [{ + key: "separateAxes", + get: function get() { + return this._separateAxes; + }, + set: function set(val) { + val ? console.error("rotation overtime separateAxes is not supported!") : this._separateAxes = val; + } + }]); + function RotationOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "_separateAxes", _descriptor2, this); + _initializerDefineProperty(this, "x", _descriptor3, this); + _initializerDefineProperty(this, "y", _descriptor4, this); + _initializerDefineProperty(this, "z", _descriptor5, this); + } + var _proto = RotationOvertimeModule.prototype; + _proto.animate = function animate(p, dt) { + var normalizedTime = 1 - p.remainingLifetime / p.startLifetime; + if (this._separateAxes) { + var rotationRand = (0, _valueTypes.pseudoRandom)(p.randomSeed + ROTATION_OVERTIME_RAND_OFFSET); + p.rotation.x += this.x.evaluate(normalizedTime, rotationRand) * dt; + p.rotation.y += this.y.evaluate(normalizedTime, rotationRand) * dt; + p.rotation.z += this.z.evaluate(normalizedTime, rotationRand) * dt; + } else p.rotation.x += this.z.evaluate(normalizedTime, (0, _valueTypes.pseudoRandom)(p.randomSeed + ROTATION_OVERTIME_RAND_OFFSET)) * dt; + }; + return RotationOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_separateAxes", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _applyDecoratedDescriptor(_class2.prototype, "separateAxes", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "separateAxes"), _class2.prototype), + _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "x", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "y", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "z", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _class2)) || _class); + exports["default"] = RotationOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "./curve-range": 32 + }], + 38: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var SIZE_OVERTIME_RAND_OFFSET = 39825; + var SizeOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.SizeOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + function SizeOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "separateAxes", _descriptor2, this); + _initializerDefineProperty(this, "size", _descriptor3, this); + _initializerDefineProperty(this, "x", _descriptor4, this); + _initializerDefineProperty(this, "y", _descriptor5, this); + _initializerDefineProperty(this, "z", _descriptor6, this); + } + var _proto = SizeOvertimeModule.prototype; + _proto.animate = function animate(particle) { + if (this.separateAxes) { + var currLifetime = 1 - particle.remainingLifetime / particle.startLifetime; + var sizeRand = (0, _valueTypes.pseudoRandom)(particle.randomSeed + SIZE_OVERTIME_RAND_OFFSET); + particle.size.x = particle.startSize.x * this.x.evaluate(currLifetime, sizeRand); + particle.size.y = particle.startSize.y * this.y.evaluate(currLifetime, sizeRand); + particle.size.z = particle.startSize.z * this.z.evaluate(currLifetime, sizeRand); + } else _valueTypes.Vec3.scale(particle.size, particle.startSize, this.size.evaluate(1 - particle.remainingLifetime / particle.startLifetime, (0, + _valueTypes.pseudoRandom)(particle.randomSeed + SIZE_OVERTIME_RAND_OFFSET))); + }; + return SizeOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "separateAxes", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "size", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "x", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "y", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "z", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _class2)) || _class); + exports["default"] = SizeOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "./curve-range": 32 + }], + 39: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _CCEnum = _interopRequireDefault(require("../../../platform/CCEnum")); + var _valueTypes = require("../../../value-types"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var TEXTURE_ANIMATION_RAND_OFFSET = 90794; + var Mode = (0, _CCEnum["default"])({ + Grid: 0 + }); + var Animation = (0, _CCEnum["default"])({ + WholeSheet: 0, + SingleRow: 1 + }); + var TextureAnimationModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.TextureAnimationModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: Mode + }), _dec3 = (0, _CCClassDecorator.property)({ + type: Animation + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + function TextureAnimationModule() { + _initializerDefineProperty(this, "_enable", _descriptor, this); + _initializerDefineProperty(this, "_mode", _descriptor2, this); + _initializerDefineProperty(this, "numTilesX", _descriptor3, this); + _initializerDefineProperty(this, "numTilesY", _descriptor4, this); + _initializerDefineProperty(this, "animation", _descriptor5, this); + _initializerDefineProperty(this, "randomRow", _descriptor6, this); + _initializerDefineProperty(this, "rowIndex", _descriptor7, this); + _initializerDefineProperty(this, "frameOverTime", _descriptor8, this); + _initializerDefineProperty(this, "startFrame", _descriptor9, this); + _initializerDefineProperty(this, "cycleCount", _descriptor10, this); + this._flipU = 0; + this._flipV = 0; + this._uvChannelMask = -1; + this.ps = null; + } + var _proto = TextureAnimationModule.prototype; + _proto.onInit = function onInit(ps) { + this.ps = ps; + }; + _proto.init = function init(p) { + p.startRow = Math.floor(Math.random() * this.numTilesY); + }; + _proto.animate = function animate(p) { + var normalizedTime = 1 - p.remainingLifetime / p.startLifetime; + var startFrame = this.startFrame.evaluate(normalizedTime, (0, _valueTypes.pseudoRandom)(p.randomSeed + TEXTURE_ANIMATION_RAND_OFFSET)) / (this.numTilesX * this.numTilesY); + if (this.animation === Animation.WholeSheet) p.frameIndex = (0, _valueTypes.repeat)(this.cycleCount * (this.frameOverTime.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + TEXTURE_ANIMATION_RAND_OFFSET)) + startFrame), 1); else if (this.animation === Animation.SingleRow) { + var rowLength = 1 / this.numTilesY; + if (this.randomRow) { + var f = (0, _valueTypes.repeat)(this.cycleCount * (this.frameOverTime.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + TEXTURE_ANIMATION_RAND_OFFSET)) + startFrame), 1); + var from = p.startRow * rowLength; + var to = from + rowLength; + p.frameIndex = (0, _valueTypes.lerp)(from, to, f); + } else { + var _from = this.rowIndex * rowLength; + var _to = _from + rowLength; + p.frameIndex = (0, _valueTypes.lerp)(_from, _to, (0, _valueTypes.repeat)(this.cycleCount * (this.frameOverTime.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + TEXTURE_ANIMATION_RAND_OFFSET)) + startFrame), 1)); + } + } + }; + _createClass(TextureAnimationModule, [{ + key: "enable", + get: function get() { + return this._enable; + }, + set: function set(val) { + this._enable = val; + this.ps._assembler._updateMaterialParams(); + } + }, { + key: "mode", + get: function get() { + return this._mode; + }, + set: function set(val) { + if (val !== Mode.Grid) { + console.error("particle texture animation's sprites is not supported!"); + return; + } + } + }, { + key: "flipU", + get: function get() { + return this._flipU; + }, + set: function set(val) { + console.error("particle texture animation's flipU is not supported!"); + } + }, { + key: "flipV", + get: function get() { + return this._flipV; + }, + set: function set(val) { + console.error("particle texture animation's flipV is not supported!"); + } + }, { + key: "uvChannelMask", + get: function get() { + return this._uvChannelMask; + }, + set: function set(val) { + console.error("particle texture animation's uvChannelMask is not supported!"); + } + }]); + return TextureAnimationModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "_enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "enable"), _class2.prototype), + _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_mode", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return Mode.Grid; + } + }), _applyDecoratedDescriptor(_class2.prototype, "mode", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "mode"), _class2.prototype), + _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "numTilesX", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "numTilesY", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "animation", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return Animation.WholeSheet; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "randomRow", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "rowIndex", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "frameOverTime", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "startFrame", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "cycleCount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _applyDecoratedDescriptor(_class2.prototype, "flipU", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "flipU"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "flipV", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "flipV"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "uvChannelMask", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "uvChannelMask"), _class2.prototype), + _class2)) || _class); + exports["default"] = TextureAnimationModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../platform/CCEnum": 241, + "../../../value-types": 339, + "./curve-range": 32 + }], + 40: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _enum = require("../enum"); + var _particleGeneralFunction = require("../particle-general-function"); + var _curveRange = _interopRequireDefault(require("./curve-range")); + var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var VELOCITY_OVERTIME_RAND_OFFSET = 197866; + var _temp_v3 = cc.v3(); + var VelocityOvertimeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.VelocityOvertimeModule"), + _dec2 = (0, _CCClassDecorator.property)({ + type: _enum.Space + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec6 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec(_class = (_class2 = (_temp = (function () { + function VelocityOvertimeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "space", _descriptor2, this); + _initializerDefineProperty(this, "x", _descriptor3, this); + _initializerDefineProperty(this, "y", _descriptor4, this); + _initializerDefineProperty(this, "z", _descriptor5, this); + _initializerDefineProperty(this, "speedModifier", _descriptor6, this); + this.rotation = null; + this.needTransform = false; + this.rotation = new _valueTypes.Quat(); + this.speedModifier.constant = 1; + this.needTransform = false; + } + var _proto = VelocityOvertimeModule.prototype; + _proto.update = function update(space, worldTransform) { + this.needTransform = (0, _particleGeneralFunction.calculateTransform)(space, this.space, worldTransform, this.rotation); + }; + _proto.animate = function animate(p) { + var normalizedTime = 1 - p.remainingLifetime / p.startLifetime; + var vel = _valueTypes.Vec3.set(_temp_v3, this.x.evaluate(normalizedTime, (0, _valueTypes.pseudoRandom)(p.randomSeed + VELOCITY_OVERTIME_RAND_OFFSET)), this.y.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + VELOCITY_OVERTIME_RAND_OFFSET)), this.z.evaluate(normalizedTime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + VELOCITY_OVERTIME_RAND_OFFSET))); + this.needTransform && _valueTypes.Vec3.transformQuat(vel, vel, this.rotation); + _valueTypes.Vec3.add(p.animatedVelocity, p.animatedVelocity, vel); + _valueTypes.Vec3.add(p.ultimateVelocity, p.velocity, p.animatedVelocity); + _valueTypes.Vec3.scale(p.ultimateVelocity, p.ultimateVelocity, this.speedModifier.evaluate(1 - p.remainingLifetime / p.startLifetime, (0, + _valueTypes.pseudoRandom)(p.randomSeed + VELOCITY_OVERTIME_RAND_OFFSET))); + }; + return VelocityOvertimeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "space", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.Local; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "x", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "y", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "z", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "speedModifier", [_dec6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _class2)) || _class); + exports["default"] = VelocityOvertimeModule; + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "../enum": 44, + "../particle-general-function": 45, + "./curve-range": 32 + }], + 41: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../platform/CCClassDecorator"); + var _valueTypes = require("../../value-types"); + var _curveRange = _interopRequireDefault(require("./animator/curve-range")); + var _dec, _dec2, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var Burst = (_dec = (0, _CCClassDecorator.ccclass)("cc.Burst"), _dec2 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + _createClass(Burst, [{ + key: "time", + get: function get() { + return this._time; + }, + set: function set(val) { + this._time = val; + this._curTime = val; + } + }, { + key: "repeatCount", + get: function get() { + return this._repeatCount; + }, + set: function set(val) { + this._repeatCount = val; + this._remainingCount = val; + } + }]); + function Burst() { + _initializerDefineProperty(this, "_time", _descriptor, this); + _initializerDefineProperty(this, "minCount", _descriptor2, this); + _initializerDefineProperty(this, "maxCount", _descriptor3, this); + _initializerDefineProperty(this, "_repeatCount", _descriptor4, this); + _initializerDefineProperty(this, "repeatInterval", _descriptor5, this); + _initializerDefineProperty(this, "count", _descriptor6, this); + this._remainingCount = 0; + this._curTime = 0; + this._remainingCount = 0; + this._curTime = 0; + } + var _proto = Burst.prototype; + _proto.update = function update(psys, dt) { + if (0 === this._remainingCount) { + this._remainingCount = this._repeatCount; + this._curTime = this._time; + } + if (this._remainingCount > 0) { + var preFrameTime = (0, _valueTypes.repeat)(psys._time - psys.startDelay.evaluate(0, 1), psys.duration) - dt; + preFrameTime = preFrameTime > 0 ? preFrameTime : 0; + var curFrameTime = (0, _valueTypes.repeat)(psys.time - psys.startDelay.evaluate(0, 1), psys.duration); + if (this._curTime >= preFrameTime && this._curTime < curFrameTime) { + psys.emit(this.count.evaluate(this._curTime / psys.duration, 1), dt - (curFrameTime - this._curTime)); + this._curTime += this.repeatInterval; + --this._remainingCount; + } + } + }; + _proto.getMaxCount = function getMaxCount(psys) { + return this.count.getMax() * Math.min(Math.ceil(psys.duration / this.repeatInterval), this.repeatCount); + }; + return Burst; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "_time", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _applyDecoratedDescriptor(_class2.prototype, "time", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "time"), _class2.prototype), + _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "minCount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 30; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "maxCount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 30; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "_repeatCount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _applyDecoratedDescriptor(_class2.prototype, "repeatCount", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "repeatCount"), _class2.prototype), + _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "repeatInterval", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "count", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _class2)) || _class); + exports["default"] = Burst; + module.exports = exports["default"]; + }), { + "../../platform/CCClassDecorator": 240, + "../../value-types": 339, + "./animator/curve-range": 32 + }], + 42: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.evalOptCurve = evalOptCurve; + exports.AnimationCurve = exports.OptimizedKey = exports.Keyframe = void 0; + var _CCEnum = _interopRequireDefault(require("../../platform/CCEnum")); + var _valueTypes = require("../../value-types"); + var _CCClassDecorator = require("../../platform/CCClassDecorator"); + var _dec, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp, _dec2, _dec3, _dec4, _dec5, _class4, _class5, _descriptor5, _descriptor6, _descriptor7, _temp2; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var LOOK_FORWARD = 3; + var WrapMode = (0, _CCEnum["default"])({ + Default: 0, + Once: 1, + Loop: 2, + PingPong: 3, + ClampForever: 4 + }); + var Keyframe = (_dec = (0, _CCClassDecorator.ccclass)("cc.Keyframe"), _dec(_class = (_class2 = (_temp = function Keyframe(time, value, inTangent, outTangent) { + _initializerDefineProperty(this, "time", _descriptor, this); + _initializerDefineProperty(this, "value", _descriptor2, this); + _initializerDefineProperty(this, "inTangent", _descriptor3, this); + _initializerDefineProperty(this, "outTangent", _descriptor4, this); + this.time = time || 0; + this.value = value || 0; + this.inTangent = inTangent || 0; + this.outTangent = outTangent || 0; + }, _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "time", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "value", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "inTangent", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "outTangent", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _class2)) || _class); + exports.Keyframe = Keyframe; + var OptimizedKey = (function () { + function OptimizedKey() { + this.index = 0; + this.time = 0; + this.endTime = 0; + this.coefficient = null; + this.index = -1; + this.time = 0; + this.endTime = 0; + this.coefficient = new Float32Array(4); + } + var _proto = OptimizedKey.prototype; + _proto.evaluate = function evaluate(T) { + var t = T - this.time; + return evalOptCurve(t, this.coefficient); + }; + return OptimizedKey; + })(); + exports.OptimizedKey = OptimizedKey; + function evalOptCurve(t, coefs) { + return t * (t * (t * coefs[0] + coefs[1]) + coefs[2]) + coefs[3]; + } + var defaultKFStart = new Keyframe(0, 1, 0, 0); + var defaultKFEnd = new Keyframe(1, 1, 0, 0); + var AnimationCurve = (_dec2 = (0, _CCClassDecorator.ccclass)("cc.AnimationCurve"), + _dec3 = (0, _CCClassDecorator.property)({ + type: [Keyframe] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: cc.Enum(WrapMode), + visible: false + }), _dec5 = (0, _CCClassDecorator.property)({ + type: cc.Enum(WrapMode), + visible: false + }), _dec2(_class4 = (_class5 = (_temp2 = (function () { + function AnimationCurve(keyFrames) { + void 0 === keyFrames && (keyFrames = null); + _initializerDefineProperty(this, "keyFrames", _descriptor5, this); + _initializerDefineProperty(this, "preWrapMode", _descriptor6, this); + _initializerDefineProperty(this, "postWrapMode", _descriptor7, this); + this.cachedKey = null; + if (keyFrames) this.keyFrames = keyFrames; else { + this.keyFrames.push(defaultKFStart); + this.keyFrames.push(defaultKFEnd); + } + this.cachedKey = new OptimizedKey(); + } + var _proto2 = AnimationCurve.prototype; + _proto2.addKey = function addKey(keyFrame) { + null == this.keyFrames && (this.keyFrames = []); + this.keyFrames.push(keyFrame); + }; + _proto2.evaluate_slow = function evaluate_slow(time) { + var wrappedTime = time; + var wrapMode = time < 0 ? this.preWrapMode : this.postWrapMode; + var startTime = this.keyFrames[0].time; + var endTime = this.keyFrames[this.keyFrames.length - 1].time; + switch (wrapMode) { + case WrapMode.Loop: + wrappedTime = (0, _valueTypes.repeat)(time - startTime, endTime - startTime) + startTime; + break; + + case WrapMode.PingPong: + wrappedTime = (0, _valueTypes.pingPong)(time - startTime, endTime - startTime) + startTime; + break; + + case WrapMode.ClampForever: + wrappedTime = (0, _valueTypes.clamp)(time, startTime, endTime); + } + var preKFIndex = 0; + if (wrappedTime > this.keyFrames[0].time) if (wrappedTime >= this.keyFrames[this.keyFrames.length - 1].time) preKFIndex = this.keyFrames.length - 2; else for (var i = 0; i < this.keyFrames.length - 1; i++) if (wrappedTime >= this.keyFrames[0].time && wrappedTime <= this.keyFrames[i + 1].time) { + preKFIndex = i; + break; + } + var keyframe0 = this.keyFrames[preKFIndex]; + var keyframe1 = this.keyFrames[preKFIndex + 1]; + var t = (0, _valueTypes.inverseLerp)(keyframe0.time, keyframe1.time, wrappedTime); + var dt = keyframe1.time - keyframe0.time; + var m0 = keyframe0.outTangent * dt; + var m1 = keyframe1.inTangent * dt; + var t2 = t * t; + var t3 = t2 * t; + var a = 2 * t3 - 3 * t2 + 1; + var b = t3 - 2 * t2 + t; + var c = t3 - t2; + var d = -2 * t3 + 3 * t2; + return a * keyframe0.value + b * m0 + c * m1 + d * keyframe1.value; + }; + _proto2.evaluate = function evaluate(time) { + var wrappedTime = time; + var wrapMode = time < 0 ? this.preWrapMode : this.postWrapMode; + var startTime = this.keyFrames[0].time; + var endTime = this.keyFrames[this.keyFrames.length - 1].time; + switch (wrapMode) { + case WrapMode.Loop: + wrappedTime = (0, _valueTypes.repeat)(time - startTime, endTime - startTime) + startTime; + break; + + case WrapMode.PingPong: + wrappedTime = (0, _valueTypes.pingPong)(time - startTime, endTime - startTime) + startTime; + break; + + case WrapMode.ClampForever: + wrappedTime = (0, _valueTypes.clamp)(time, startTime, endTime); + } + if (wrappedTime >= this.cachedKey.time && wrappedTime < this.cachedKey.endTime) return this.cachedKey.evaluate(wrappedTime); + var leftIndex = this.findIndex(this.cachedKey, wrappedTime); + var rightIndex = leftIndex + 1; + rightIndex === this.keyFrames.length && (rightIndex -= 1); + this.calcOptimizedKey(this.cachedKey, leftIndex, rightIndex); + return this.cachedKey.evaluate(wrappedTime); + }; + _proto2.calcOptimizedKey = function calcOptimizedKey(optKey, leftIndex, rightIndex) { + var lhs = this.keyFrames[leftIndex]; + var rhs = this.keyFrames[rightIndex]; + optKey.index = leftIndex; + optKey.time = lhs.time; + optKey.endTime = rhs.time; + var dx = rhs.time - lhs.time; + var dy = rhs.value - lhs.value; + var length = 1 / (dx * dx); + var d1 = lhs.outTangent * dx; + var d2 = rhs.inTangent * dx; + optKey.coefficient[0] = (d1 + d2 - dy - dy) * length / dx; + optKey.coefficient[1] = (dy + dy + dy - d1 - d1 - d2) * length; + optKey.coefficient[2] = lhs.outTangent; + optKey.coefficient[3] = lhs.value; + }; + _proto2.findIndex = function findIndex(optKey, t) { + var cachedIndex = optKey.index; + if (-1 !== cachedIndex) { + var cachedTime = this.keyFrames[cachedIndex].time; + if (t > cachedTime) for (var i = 0; i < LOOK_FORWARD; i++) { + var currIndex = cachedIndex + i; + if (currIndex + 1 < this.keyFrames.length && this.keyFrames[currIndex + 1].time > t) return currIndex; + } else for (var _i = 0; _i < LOOK_FORWARD; _i++) { + var _currIndex = cachedIndex - _i; + if (_currIndex >= 0 && this.keyFrames[_currIndex - 1].time <= t) return _currIndex - 1; + } + } + var left = 0; + var right = this.keyFrames.length; + var mid = Math.floor((left + right) / 2); + while (right - left > 1) { + this.keyFrames[mid].time >= t ? right = mid : left = mid + 1; + mid = Math.floor((left + right) / 2); + } + return left; + }; + return AnimationCurve; + })(), _temp2), _descriptor5 = _applyDecoratedDescriptor(_class5.prototype, "keyFrames", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new Array(); + } + }), _descriptor6 = _applyDecoratedDescriptor(_class5.prototype, "preWrapMode", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return WrapMode.Loop; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class5.prototype, "postWrapMode", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return WrapMode.Loop; + } + }), _class5)) || _class4); + exports.AnimationCurve = AnimationCurve; + cc.Keyframe = Keyframe; + cc.AnimationCurve = AnimationCurve; + }), { + "../../platform/CCClassDecorator": 240, + "../../platform/CCEnum": 241, + "../../value-types": 339 + }], + 43: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _curveRange = _interopRequireDefault(require("../animator/curve-range")); + var _particleGeneralFunction = require("../particle-general-function"); + var _enum = require("../enum"); + var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var _intermediVec = new _valueTypes.Vec3(0, 0, 0); + var _intermediArr = new Array(); + var _unitBoxExtent = new _valueTypes.Vec3(.5, .5, .5); + var ShapeModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.ShapeModule"), _dec2 = (0, + _CCClassDecorator.property)({ + type: _enum.ShapeType + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _enum.EmitLocation + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _enum.ArcMode + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + _createClass(ShapeModule, [{ + key: "shapeType", + get: function get() { + return this._shapeType; + }, + set: function set(val) { + this._shapeType = val; + switch (this._shapeType) { + case _enum.ShapeType.Box: + this.emitFrom === _enum.EmitLocation.Base && (this.emitFrom = _enum.EmitLocation.Volume); + break; + + case _enum.ShapeType.Cone: + this.emitFrom === _enum.EmitLocation.Edge && (this.emitFrom = _enum.EmitLocation.Base); + break; + + case _enum.ShapeType.Sphere: + case _enum.ShapeType.Hemisphere: + this.emitFrom !== _enum.EmitLocation.Base && this.emitFrom !== _enum.EmitLocation.Edge || (this.emitFrom = _enum.EmitLocation.Volume); + } + } + }, { + key: "angle", + get: function get() { + return Math.round(100 * (0, _valueTypes.toDegree)(this._angle)) / 100; + }, + set: function set(val) { + this._angle = (0, _valueTypes.toRadian)(val); + } + }, { + key: "arc", + get: function get() { + return (0, _valueTypes.toDegree)(this._arc); + }, + set: function set(val) { + this._arc = (0, _valueTypes.toRadian)(val); + } + }, { + key: "position", + get: function get() { + return this._position; + }, + set: function set(val) { + this._position = val; + this.constructMat(); + } + }, { + key: "rotation", + get: function get() { + return this._rotation; + }, + set: function set(val) { + this._rotation = val; + this.constructMat(); + } + }, { + key: "scale", + get: function get() { + return this._scale; + }, + set: function set(val) { + this._scale = val; + this.constructMat(); + } + }]); + function ShapeModule() { + _initializerDefineProperty(this, "enable", _descriptor, this); + _initializerDefineProperty(this, "_shapeType", _descriptor2, this); + _initializerDefineProperty(this, "emitFrom", _descriptor3, this); + _initializerDefineProperty(this, "radius", _descriptor4, this); + _initializerDefineProperty(this, "radiusThickness", _descriptor5, this); + _initializerDefineProperty(this, "_angle", _descriptor6, this); + _initializerDefineProperty(this, "_arc", _descriptor7, this); + _initializerDefineProperty(this, "arcMode", _descriptor8, this); + _initializerDefineProperty(this, "arcSpread", _descriptor9, this); + _initializerDefineProperty(this, "arcSpeed", _descriptor10, this); + _initializerDefineProperty(this, "length", _descriptor11, this); + _initializerDefineProperty(this, "boxThickness", _descriptor12, this); + _initializerDefineProperty(this, "_position", _descriptor13, this); + _initializerDefineProperty(this, "_rotation", _descriptor14, this); + _initializerDefineProperty(this, "_scale", _descriptor15, this); + _initializerDefineProperty(this, "alignToDirection", _descriptor16, this); + _initializerDefineProperty(this, "randomDirectionAmount", _descriptor17, this); + _initializerDefineProperty(this, "sphericalDirectionAmount", _descriptor18, this); + _initializerDefineProperty(this, "randomPositionAmount", _descriptor19, this); + this.mat = null; + this.Quat = null; + this.particleSystem = null; + this.lastTime = null; + this.totalAngle = null; + this.mat = new _valueTypes.Mat4(); + this.quat = new _valueTypes.Quat(); + this.particleSystem = null; + this.lastTime = 0; + this.totalAngle = 0; + } + var _proto = ShapeModule.prototype; + _proto.onInit = function onInit(ps) { + this.particleSystem = ps; + this.constructMat(); + this.lastTime = this.particleSystem._time; + }; + _proto.constructMat = function constructMat() { + _valueTypes.Quat.fromEuler(this.quat, this._rotation.x, this._rotation.y, this._rotation.z); + _valueTypes.Mat4.fromRTS(this.mat, this.quat, this._position, this._scale); + }; + _proto.emit = function emit(p) { + switch (this.shapeType) { + case _enum.ShapeType.Box: + boxEmit(this.emitFrom, this.boxThickness, p.position, p.velocity); + break; + + case _enum.ShapeType.Circle: + circleEmit(this.radius, this.radiusThickness, this.generateArcAngle(), p.position, p.velocity); + break; + + case _enum.ShapeType.Cone: + coneEmit(this.emitFrom, this.radius, this.radiusThickness, this.generateArcAngle(), this._angle, this.length, p.position, p.velocity); + break; + + case _enum.ShapeType.Sphere: + sphereEmit(this.emitFrom, this.radius, this.radiusThickness, p.position, p.velocity); + break; + + case _enum.ShapeType.Hemisphere: + hemisphereEmit(this.emitFrom, this.radius, this.radiusThickness, p.position, p.velocity); + break; + + default: + console.warn(this.shapeType + " shapeType is not supported by ShapeModule."); + } + if (this.randomPositionAmount > 0) { + p.position.x += (0, _valueTypes.randomRange)(-this.randomPositionAmount, this.randomPositionAmount); + p.position.y += (0, _valueTypes.randomRange)(-this.randomPositionAmount, this.randomPositionAmount); + p.position.z += (0, _valueTypes.randomRange)(-this.randomPositionAmount, this.randomPositionAmount); + } + _valueTypes.Vec3.transformQuat(p.velocity, p.velocity, this.quat); + _valueTypes.Vec3.transformMat4(p.position, p.position, this.mat); + if (this.sphericalDirectionAmount > 0) { + var sphericalVel = _valueTypes.Vec3.normalize(_intermediVec, p.position); + _valueTypes.Vec3.lerp(p.velocity, p.velocity, sphericalVel, this.sphericalDirectionAmount); + } + this.lastTime = this.particleSystem._time; + }; + _proto.generateArcAngle = function generateArcAngle() { + if (this.arcMode === _enum.ArcMode.Random) return (0, _valueTypes.randomRange)(0, this._arc); + var angle = this.totalAngle + 2 * Math.PI * this.arcSpeed.evaluate(this.particleSystem._time, 1) * (this.particleSystem._time - this.lastTime); + this.totalAngle = angle; + 0 !== this.arcSpread && (angle = Math.floor(angle / (this._arc * this.arcSpread)) * this._arc * this.arcSpread); + switch (this.arcMode) { + case _enum.ArcMode.Loop: + return (0, _valueTypes.repeat)(angle, this._arc); + + case _enum.ArcMode.PingPong: + return (0, _valueTypes.pingPong)(angle, this._arc); + } + }; + return ShapeModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_shapeType", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.ShapeType.Cone; + } + }), _applyDecoratedDescriptor(_class2.prototype, "shapeType", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "shapeType"), _class2.prototype), + _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "emitFrom", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.EmitLocation.Volume; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "radius", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "radiusThickness", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "_angle", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return (0, _valueTypes.toRadian)(25); + } + }), _applyDecoratedDescriptor(_class2.prototype, "angle", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "angle"), _class2.prototype), + _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "_arc", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return (0, _valueTypes.toRadian)(360); + } + }), _applyDecoratedDescriptor(_class2.prototype, "arc", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "arc"), _class2.prototype), + _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "arcMode", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.ArcMode.Random; + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "arcSpread", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "arcSpeed", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "length", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 5; + } + }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "boxThickness", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _valueTypes.Vec3(0, 0, 0); + } + }), _descriptor13 = _applyDecoratedDescriptor(_class2.prototype, "_position", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _valueTypes.Vec3(0, 0, 0); + } + }), _applyDecoratedDescriptor(_class2.prototype, "position", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "position"), _class2.prototype), + _descriptor14 = _applyDecoratedDescriptor(_class2.prototype, "_rotation", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _valueTypes.Vec3(0, 0, 0); + } + }), _applyDecoratedDescriptor(_class2.prototype, "rotation", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "rotation"), _class2.prototype), + _descriptor15 = _applyDecoratedDescriptor(_class2.prototype, "_scale", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _valueTypes.Vec3(1, 1, 1); + } + }), _applyDecoratedDescriptor(_class2.prototype, "scale", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "scale"), _class2.prototype), + _descriptor16 = _applyDecoratedDescriptor(_class2.prototype, "alignToDirection", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor17 = _applyDecoratedDescriptor(_class2.prototype, "randomDirectionAmount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "sphericalDirectionAmount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "randomPositionAmount", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 0; + } + }), _class2)) || _class); + exports["default"] = ShapeModule; + function sphereEmit(emitFrom, radius, radiusThickness, pos, dir) { + switch (emitFrom) { + case _enum.EmitLocation.Volume: + (0, _particleGeneralFunction.randomPointBetweenSphere)(pos, radius * (1 - radiusThickness), radius); + _valueTypes.Vec3.copy(dir, pos); + _valueTypes.Vec3.normalize(dir, dir); + break; + + case _enum.EmitLocation.Shell: + (0, _particleGeneralFunction.randomUnitVector)(pos); + _valueTypes.Vec3.scale(pos, pos, radius); + _valueTypes.Vec3.copy(dir, pos); + break; + + default: + console.warn(emitFrom + " is not supported for sphere emitter."); + } + } + function hemisphereEmit(emitFrom, radius, radiusThickness, pos, dir) { + switch (emitFrom) { + case _enum.EmitLocation.Volume: + (0, _particleGeneralFunction.randomPointBetweenSphere)(pos, radius * (1 - radiusThickness), radius); + pos.z > 0 && (pos.z *= -1); + _valueTypes.Vec3.copy(dir, pos); + _valueTypes.Vec3.normalize(dir, dir); + break; + + case _enum.EmitLocation.Shell: + (0, _particleGeneralFunction.randomUnitVector)(pos); + _valueTypes.Vec3.scale(pos, pos, radius); + pos.z < 0 && (pos.z *= -1); + _valueTypes.Vec3.copy(dir, pos); + break; + + default: + console.warn(emitFrom + " is not supported for hemisphere emitter."); + } + } + function coneEmit(emitFrom, radius, radiusThickness, theta, angle, length, pos, dir) { + switch (emitFrom) { + case _enum.EmitLocation.Base: + (0, _particleGeneralFunction.randomPointBetweenCircleAtFixedAngle)(pos, radius * (1 - radiusThickness), radius, theta); + _valueTypes.Vec2.scale(dir, pos, Math.sin(angle)); + dir.z = -Math.cos(angle) * radius; + _valueTypes.Vec3.normalize(dir, dir); + pos.z = 0; + break; + + case _enum.EmitLocation.Shell: + (0, _particleGeneralFunction.fixedAngleUnitVector2)(pos, theta); + _valueTypes.Vec2.scale(dir, pos, Math.sin(angle)); + dir.z = -Math.cos(angle); + _valueTypes.Vec3.normalize(dir, dir); + _valueTypes.Vec2.scale(pos, pos, radius); + pos.z = 0; + break; + + case _enum.EmitLocation.Volume: + (0, _particleGeneralFunction.randomPointBetweenCircleAtFixedAngle)(pos, radius * (1 - radiusThickness), radius, theta); + _valueTypes.Vec2.scale(dir, pos, Math.sin(angle)); + dir.z = -Math.cos(angle) * radius; + _valueTypes.Vec3.normalize(dir, dir); + pos.z = 0; + _valueTypes.Vec3.add(pos, pos, _valueTypes.Vec3.scale(_intermediVec, dir, length * (0, + _valueTypes.random)() / -dir.z)); + break; + + default: + console.warn(emitFrom + " is not supported for cone emitter."); + } + } + function boxEmit(emitFrom, boxThickness, pos, dir) { + switch (emitFrom) { + case _enum.EmitLocation.Volume: + (0, _particleGeneralFunction.randomPointInCube)(pos, _unitBoxExtent); + break; + + case _enum.EmitLocation.Shell: + _intermediArr.splice(0, _intermediArr.length); + _intermediArr.push((0, _valueTypes.randomRange)(-.5, .5)); + _intermediArr.push((0, _valueTypes.randomRange)(-.5, .5)); + _intermediArr.push(.5 * (0, _particleGeneralFunction.randomSign)()); + (0, _particleGeneralFunction.randomSortArray)(_intermediArr); + applyBoxThickness(_intermediArr, boxThickness); + _valueTypes.Vec3.set(pos, _intermediArr[0], _intermediArr[1], _intermediArr[2]); + break; + + case _enum.EmitLocation.Edge: + _intermediArr.splice(0, _intermediArr.length); + _intermediArr.push((0, _valueTypes.randomRange)(-.5, .5)); + _intermediArr.push(.5 * (0, _particleGeneralFunction.randomSign)()); + _intermediArr.push(.5 * (0, _particleGeneralFunction.randomSign)()); + (0, _particleGeneralFunction.randomSortArray)(_intermediArr); + applyBoxThickness(_intermediArr, boxThickness); + _valueTypes.Vec3.set(pos, _intermediArr[0], _intermediArr[1], _intermediArr[2]); + break; + + default: + console.warn(emitFrom + " is not supported for box emitter."); + } + _valueTypes.Vec3.copy(dir, _particleGeneralFunction.particleEmitZAxis); + } + function circleEmit(radius, radiusThickness, theta, pos, dir) { + (0, _particleGeneralFunction.randomPointBetweenCircleAtFixedAngle)(pos, radius * (1 - radiusThickness), radius, theta); + _valueTypes.Vec3.normalize(dir, pos); + } + function applyBoxThickness(pos, thickness) { + if (thickness.x > 0) { + pos[0] += .5 * (0, _valueTypes.randomRange)(-thickness.x, thickness.x); + pos[0] = (0, _valueTypes.clamp)(pos[0], -.5, .5); + } + if (thickness.y > 0) { + pos[1] += .5 * (0, _valueTypes.randomRange)(-thickness.y, thickness.y); + pos[1] = (0, _valueTypes.clamp)(pos[1], -.5, .5); + } + if (thickness.z > 0) { + pos[2] += .5 * (0, _valueTypes.randomRange)(-thickness.z, thickness.z); + pos[2] = (0, _valueTypes.clamp)(pos[2], -.5, .5); + } + } + module.exports = exports["default"]; + }), { + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "../animator/curve-range": 32, + "../enum": 44, + "../particle-general-function": 45 + }], + 44: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.TextureMode = exports.TrailMode = exports.ArcMode = exports.EmitLocation = exports.ShapeType = exports.RenderMode = exports.Space = void 0; + var _CCEnum = _interopRequireDefault(require("../../platform/CCEnum")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Space = (0, _CCEnum["default"])({ + World: 0, + Local: 1, + Custom: 2 + }); + exports.Space = Space; + var RenderMode = (0, _CCEnum["default"])({ + Billboard: 0, + StrecthedBillboard: 1, + HorizontalBillboard: 2, + VerticalBillboard: 3, + Mesh: 4 + }); + exports.RenderMode = RenderMode; + var ShapeType = (0, _CCEnum["default"])({ + Box: 0, + Circle: 1, + Cone: 2, + Sphere: 3, + Hemisphere: 4 + }); + exports.ShapeType = ShapeType; + var EmitLocation = (0, _CCEnum["default"])({ + Base: 0, + Edge: 1, + Shell: 2, + Volume: 3 + }); + exports.EmitLocation = EmitLocation; + var ArcMode = (0, _CCEnum["default"])({ + Random: 0, + Loop: 1, + PingPong: 2 + }); + exports.ArcMode = ArcMode; + var TrailMode = (0, _CCEnum["default"])({ + Particles: 0, + Ribbon: 1 + }); + exports.TrailMode = TrailMode; + var TextureMode = (0, _CCEnum["default"])({ + Stretch: 0, + Repeat: 1 + }); + exports.TextureMode = TextureMode; + }), { + "../../platform/CCEnum": 241 + }], + 45: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.calculateTransform = calculateTransform; + exports.fixedAngleUnitVector2 = fixedAngleUnitVector2; + exports.randomUnitVector2 = randomUnitVector2; + exports.randomUnitVector = randomUnitVector; + exports.randomPointInUnitSphere = randomPointInUnitSphere; + exports.randomPointBetweenSphere = randomPointBetweenSphere; + exports.randomPointInUnitCircle = randomPointInUnitCircle; + exports.randomPointBetweenCircle = randomPointBetweenCircle; + exports.randomPointBetweenCircleAtFixedAngle = randomPointBetweenCircleAtFixedAngle; + exports.randomPointInCube = randomPointInCube; + exports.randomPointBetweenCube = randomPointBetweenCube; + exports.randomSortArray = randomSortArray; + exports.randomSign = randomSign; + exports.particleEmitZAxis = void 0; + var _valueTypes = require("../../value-types"); + var _utils = require("../../value-types/utils"); + var _enum = require("./enum"); + var particleEmitZAxis = new _valueTypes.Vec3(0, 0, -1); + exports.particleEmitZAxis = particleEmitZAxis; + function calculateTransform(systemSpace, moduleSpace, worldTransform, outQuat) { + if (moduleSpace !== systemSpace) { + if (systemSpace === _enum.Space.World) _valueTypes.Mat4.getRotation(outQuat, worldTransform); else { + _valueTypes.Mat4.invert(worldTransform, worldTransform); + _valueTypes.Mat4.getRotation(outQuat, worldTransform); + } + return true; + } + _valueTypes.Quat.set(outQuat, 0, 0, 0, 1); + return false; + } + function fixedAngleUnitVector2(out, theta) { + _valueTypes.Vec2.set(out, Math.cos(theta), Math.sin(theta)); + } + function randomUnitVector2(out) { + var a = (0, _valueTypes.randomRange)(0, 2 * Math.PI); + var x = Math.cos(a); + var y = Math.sin(a); + _valueTypes.Vec2.set(out, x, y); + } + function randomUnitVector(out) { + var z = (0, _valueTypes.randomRange)(-1, 1); + var a = (0, _valueTypes.randomRange)(0, 2 * Math.PI); + var r = Math.sqrt(1 - z * z); + var x = r * Math.cos(a); + var y = r * Math.sin(a); + _valueTypes.Vec3.set(out, x, y, z); + } + function randomPointInUnitSphere(out) { + randomUnitVector(out); + _valueTypes.Vec3.scale(out, out, (0, _valueTypes.random)()); + } + function randomPointBetweenSphere(out, minRadius, maxRadius) { + randomUnitVector(out); + _valueTypes.Vec3.scale(out, out, minRadius + (maxRadius - minRadius) * (0, _valueTypes.random)()); + } + function randomPointInUnitCircle(out) { + randomUnitVector2(out); + out.z = 0; + _valueTypes.Vec3.scale(out, out, (0, _valueTypes.random)()); + } + function randomPointBetweenCircle(out, minRadius, maxRadius) { + randomUnitVector2(out); + out.z = 0; + _valueTypes.Vec3.scale(out, out, minRadius + (maxRadius - minRadius) * (0, _valueTypes.random)()); + } + function randomPointBetweenCircleAtFixedAngle(out, minRadius, maxRadius, theta) { + fixedAngleUnitVector2(out, theta); + out.z = 0; + _valueTypes.Vec3.scale(out, out, minRadius + (maxRadius - minRadius) * (0, _valueTypes.random)()); + } + function randomPointInCube(out, extents) { + _valueTypes.Vec3.set(out, (0, _valueTypes.randomRange)(-extents.x, extents.x), (0, + _valueTypes.randomRange)(-extents.y, extents.y), (0, _valueTypes.randomRange)(-extents.z, extents.z)); + } + function randomPointBetweenCube(out, minBox, maxBox) { + var subscript = ["x", "y", "z"]; + var edge = (0, _valueTypes.randomRangeInt)(0, 3); + for (var i = 0; i < 3; i++) { + if (i === edge) { + out[subscript[i]] = (0, _valueTypes.randomRange)(-maxBox[subscript[i]], maxBox[subscript[i]]); + continue; + } + var x = 2 * (0, _valueTypes.random)() - 1; + out[subscript[i]] = x < 0 ? -minBox[subscript[i]] + x * (maxBox[subscript[i]] - minBox[subscript[i]]) : minBox[subscript[i]] + x * (maxBox[subscript[i]] - minBox[subscript[i]]); + } + } + function randomSortArray(arr) { + for (var i = 0; i < arr.length; i++) { + var transpose = i + (0, _valueTypes.randomRangeInt)(0, arr.length - i); + var val = arr[transpose]; + arr[transpose] = arr[i]; + arr[i] = val; + } + } + function randomSign() { + var sgn = (0, _valueTypes.randomRange)(-1, 1); + 0 === sgn ? sgn++ : sgn; + return (0, _utils.sign)(sgn); + } + }), { + "../../value-types": 339, + "../../value-types/utils": 346, + "./enum": 44 + }], + 46: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../value-types"); + var _utils = require("../../value-types/utils"); + var _CCMaterial = _interopRequireDefault(require("../../assets/material/CCMaterial")); + var _colorOvertime = _interopRequireDefault(require("./animator/color-overtime")); + var _curveRange = _interopRequireWildcard(require("./animator/curve-range")); + var _forceOvertime = _interopRequireDefault(require("./animator/force-overtime")); + var _gradientRange = _interopRequireDefault(require("./animator/gradient-range")); + var _limitVelocityOvertime = _interopRequireDefault(require("./animator/limit-velocity-overtime")); + var _rotationOvertime = _interopRequireDefault(require("./animator/rotation-overtime")); + var _sizeOvertime = _interopRequireDefault(require("./animator/size-overtime")); + var _textureAnimation = _interopRequireDefault(require("./animator/texture-animation")); + var _velocityOvertime = _interopRequireDefault(require("./animator/velocity-overtime")); + var _burst = _interopRequireDefault(require("./burst")); + var _shapeModule = _interopRequireDefault(require("./emitter/shape-module")); + var _enum = require("./enum"); + var _particleGeneralFunction = require("./particle-general-function"); + var _trail = _interopRequireDefault(require("./renderer/trail")); + var _CCMesh = _interopRequireDefault(require("../../mesh/CCMesh")); + var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _temp; + function _getRequireWildcardCache() { + if ("function" !== typeof WeakMap) return null; + var cache = new WeakMap(); + _getRequireWildcardCache = function _getRequireWildcardCache() { + return cache; + }; + return cache; + } + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) return obj; + if (null === obj || "object" !== typeof obj && "function" !== typeof obj) return { + default: obj + }; + var cache = _getRequireWildcardCache(); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + desc && (desc.get || desc.set) ? Object.defineProperty(newObj, key, desc) : newObj[key] = obj[key]; + } + newObj["default"] = obj; + cache && cache.set(obj, newObj); + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it; + if ("undefined" === typeof Symbol || null == o[Symbol.iterator]) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && "number" === typeof o.length) { + it && (o = it); + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + it = o[Symbol.iterator](); + return it.next.bind(it); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if ("string" === typeof o) return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + "Object" === n && o.constructor && (n = o.constructor.name); + if ("Map" === n || "Set" === n) return Array.from(o); + if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + (null == len || len > arr.length) && (len = arr.length); + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _assertThisInitialized(self) { + if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return self; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var _require = require("../../platform/CCClassDecorator"), ccclass = _require.ccclass, menu = _require.menu, property = _require.property, executeInEditMode = _require.executeInEditMode, executionOrder = _require.executionOrder; + var RenderComponent = require("../../components/CCRenderComponent"); + var _world_mat = new _valueTypes.Mat4(); + var _module_props = false; + var ParticleSystem3D = (_dec = ccclass("cc.ParticleSystem3D"), _dec2 = menu("i18n:MAIN_MENU.component.renderers/ParticleSystem3D"), + _dec3 = executionOrder(99), _dec4 = property({ + animatable: false + }), _dec5 = property({ + animatable: false + }), _dec6 = property({ + type: _enum.Space, + animatable: false + }), _dec7 = property({ + type: _curveRange["default"] + }), _dec8 = property({ + type: _curveRange["default"] + }), _dec9 = property({ + type: _gradientRange["default"] + }), _dec10 = property({ + type: _enum.Space + }), _dec11 = property({ + type: _curveRange["default"] + }), _dec12 = property({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec13 = property({ + type: _curveRange["default"], + range: [-1, 1], + radian: true + }), _dec14 = property({ + type: _curveRange["default"], + range: [-1, 1] + }), _dec15 = property({ + type: _curveRange["default"] + }), _dec16 = property({ + type: _curveRange["default"] + }), _dec17 = property({ + type: [_burst["default"]], + animatable: false + }), _dec18 = property({ + type: [_CCMaterial["default"]], + displayName: "Materials", + visible: false, + override: true + }), _dec19 = property({ + type: _shapeModule["default"], + animatable: false + }), _dec20 = property({ + type: _colorOvertime["default"], + animatable: false + }), _dec21 = property({ + type: _sizeOvertime["default"], + animatable: false + }), _dec22 = property({ + type: _velocityOvertime["default"], + animatable: false + }), _dec23 = property({ + type: _forceOvertime["default"], + animatable: false + }), _dec24 = property({ + type: _limitVelocityOvertime["default"], + animatable: false + }), _dec25 = property({ + type: _rotationOvertime["default"], + animatable: false + }), _dec26 = property({ + type: _textureAnimation["default"], + animatable: false + }), _dec27 = property({ + type: _trail["default"], + animatable: false + }), _dec28 = property({ + type: _enum.RenderMode, + animatable: false + }), _dec29 = property({ + animatable: false + }), _dec30 = property({ + animatable: false + }), _dec31 = property({ + type: _CCMesh["default"], + animatable: false + }), _dec32 = property({ + type: _CCMaterial["default"], + animatable: false + }), _dec33 = property({ + type: _CCMaterial["default"], + animatable: false + }), _dec(_class = _dec2(_class = _dec3(_class = executeInEditMode(_class = (_class2 = (_temp = (function (_RenderComponent) { + _inheritsLoose(ParticleSystem3D, _RenderComponent); + _createClass(ParticleSystem3D, [{ + key: "capacity", + get: function get() { + return this._capacity; + }, + set: function set(val) { + this._capacity = val; + this._assembler && this._assembler.setCapacity(this._capacity); + } + }, { + key: "prewarm", + get: function get() { + return this._prewarm; + }, + set: function set(val) { + true === val && false === this.loop; + this._prewarm = val; + } + }, { + key: "simulationSpace", + get: function get() { + return this._simulationSpace; + }, + set: function set(val) { + if (val !== this._simulationSpace) { + this._simulationSpace = val; + this._assembler._updateMaterialParams(); + this._assembler._updateTrailMaterial(); + } + } + }, { + key: "materials", + get: function get() { + return this._materials; + }, + set: function set(val) { + this._materials = val; + this._activateMaterial(); + } + }, { + key: "shapeModule", + get: function get() { + return this._shapeModule; + }, + set: function set(val) { + this._shapeModule = val; + this._shapeModule.onInit(this); + } + }, { + key: "colorOverLifetimeModule", + get: function get() { + return this._colorOverLifetimeModule; + }, + set: function set(val) { + this._colorOverLifetimeModule = val; + } + }, { + key: "sizeOvertimeModule", + get: function get() { + return this._sizeOvertimeModule; + }, + set: function set(val) { + this._sizeOvertimeModule = val; + } + }, { + key: "velocityOvertimeModule", + get: function get() { + return this._velocityOvertimeModule; + }, + set: function set(val) { + this._velocityOvertimeModule = val; + } + }, { + key: "forceOvertimeModule", + get: function get() { + return this._forceOvertimeModule; + }, + set: function set(val) { + this._forceOvertimeModule = val; + } + }, { + key: "limitVelocityOvertimeModule", + get: function get() { + return this._limitVelocityOvertimeModule; + }, + set: function set(val) { + this._limitVelocityOvertimeModule = val; + } + }, { + key: "rotationOvertimeModule", + get: function get() { + return this._rotationOvertimeModule; + }, + set: function set(val) { + this._rotationOvertimeModule = val; + } + }, { + key: "textureAnimationModule", + get: function get() { + return this._textureAnimationModule; + }, + set: function set(val) { + this._textureAnimationModule = val; + this._textureAnimationModule.onInit(this); + } + }, { + key: "trailModule", + get: function get() { + return this._trailModule; + }, + set: function set(val) { + this._trailModule = val; + this._trailModule.onInit(this); + } + }, { + key: "renderMode", + get: function get() { + return this._renderMode; + }, + set: function set(val) { + if (this._renderMode === val) return; + this._renderMode = val; + this._assembler._setVertexAttrib(); + this._assembler._updateModel(); + this._assembler._updateMaterialParams(); + } + }, { + key: "velocityScale", + get: function get() { + return this._velocityScale; + }, + set: function set(val) { + this._velocityScale = val; + this._assembler._updateMaterialParams(); + } + }, { + key: "lengthScale", + get: function get() { + return this._lengthScale; + }, + set: function set(val) { + this._lengthScale = val; + this._assembler._updateMaterialParams(); + } + }, { + key: "mesh", + get: function get() { + return this._mesh; + }, + set: function set(val) { + this._mesh = val; + this._assembler._updateModel(); + } + }, { + key: "particleMaterial", + get: function get() { + return this.getMaterial(0); + }, + set: function set(val) { + this.setMaterial(0, val); + this._onMaterialModified(0, val); + } + }, { + key: "trailMaterial", + get: function get() { + return this.getMaterial(1); + }, + set: function set(val) { + this.setMaterial(1, val); + this._onMaterialModified(1, val); + } + }]); + function ParticleSystem3D() { + var _this2; + _this2 = _RenderComponent.call(this) || this; + _initializerDefineProperty(_this2, "duration", _descriptor, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_capacity", _descriptor2, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "loop", _descriptor3, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "playOnAwake", _descriptor4, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_prewarm", _descriptor5, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_simulationSpace", _descriptor6, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "simulationSpeed", _descriptor7, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startDelay", _descriptor8, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startLifetime", _descriptor9, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startColor", _descriptor10, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "scaleSpace", _descriptor11, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startSize", _descriptor12, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startSpeed", _descriptor13, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "startRotation", _descriptor14, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "gravityModifier", _descriptor15, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "rateOverTime", _descriptor16, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "rateOverDistance", _descriptor17, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "bursts", _descriptor18, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_shapeModule", _descriptor19, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_colorOverLifetimeModule", _descriptor20, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_sizeOvertimeModule", _descriptor21, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_velocityOvertimeModule", _descriptor22, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_forceOvertimeModule", _descriptor23, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_limitVelocityOvertimeModule", _descriptor24, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_rotationOvertimeModule", _descriptor25, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_textureAnimationModule", _descriptor26, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_trailModule", _descriptor27, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_renderMode", _descriptor28, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_velocityScale", _descriptor29, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_lengthScale", _descriptor30, _assertThisInitialized(_this2)); + _initializerDefineProperty(_this2, "_mesh", _descriptor31, _assertThisInitialized(_this2)); + _this2._isPlaying = void 0; + _this2._isPaused = void 0; + _this2._isStopped = void 0; + _this2._isEmitting = void 0; + _this2._time = void 0; + _this2._emitRateTimeCounter = void 0; + _this2._emitRateDistanceCounter = void 0; + _this2._oldWPos = void 0; + _this2._curWPos = void 0; + _this2._customData1 = void 0; + _this2._customData2 = void 0; + _this2._subEmitters = void 0; + _this2.rateOverTime.constant = 10; + _this2.startLifetime.constant = 5; + _this2.startSize.constant = 1; + _this2.startSpeed.constant = 5; + _this2._isPlaying = false; + _this2._isPaused = false; + _this2._isStopped = true; + _this2._isEmitting = false; + _this2._time = 0; + _this2._emitRateTimeCounter = 0; + _this2._emitRateDistanceCounter = 0; + _this2._oldWPos = new _valueTypes.Vec3(0, 0, 0); + _this2._curWPos = new _valueTypes.Vec3(0, 0, 0); + _this2._customData1 = new _valueTypes.Vec2(0, 0); + _this2._customData2 = new _valueTypes.Vec2(0, 0); + _this2._subEmitters = []; + return _this2; + } + var _proto = ParticleSystem3D.prototype; + _proto.onLoad = function onLoad() { + this._assembler.onInit(this); + this.shapeModule.onInit(this); + this.trailModule.onInit(this); + this.textureAnimationModule.onInit(this); + this._resetPosition(); + }; + _proto._onMaterialModified = function _onMaterialModified(index, material) { + this._assembler._onMaterialModified(index, material); + }; + _proto._onRebuildPSO = function _onRebuildPSO(index, material) { + this._assembler._onRebuildPSO(index, material); + }; + _proto.play = function play() { + this._isPaused && (this._isPaused = false); + this._isStopped && (this._isStopped = false); + this._isPlaying = true; + this._isEmitting = true; + this._resetPosition(); + this._prewarm && this._prewarmSystem(); + }; + _proto.pause = function pause() { + if (this._isStopped) { + console.warn("pause(): particle system is already stopped."); + return; + } + this._isPlaying && (this._isPlaying = false); + this._isPaused = true; + }; + _proto.stop = function stop() { + (this._isPlaying || this._isPaused) && this.clear(); + this._isPlaying && (this._isPlaying = false); + this._isPaused && (this._isPaused = false); + this._time = 0; + this._emitRateTimeCounter = 0; + this._emitRateDistanceCounter = 0; + this._isStopped = true; + }; + _proto.clear = function clear() { + if (this.enabledInHierarchy) { + this._assembler.clear(); + this.trailModule.clear(); + } + }; + _proto.getParticleCount = function getParticleCount() { + return this._assembler.getParticleCount(); + }; + _proto.setCustomData1 = function setCustomData1(x, y) { + _valueTypes.Vec2.set(this._customData1, x, y); + }; + _proto.setCustomData2 = function setCustomData2(x, y) { + _valueTypes.Vec2.set(this._customData2, x, y); + }; + _proto.onDestroy = function onDestroy() { + this._assembler.onDestroy(); + this.trailModule.destroy(); + }; + _proto.onEnable = function onEnable() { + _RenderComponent.prototype.onEnable.call(this); + this.playOnAwake && this.play(); + this._assembler.onEnable(); + this.trailModule.onEnable(); + }; + _proto.onDisable = function onDisable() { + _RenderComponent.prototype.onDisable.call(this); + this._assembler.onDisable(); + this.trailModule.onDisable(); + }; + _proto.update = function update(dt) { + var scaledDeltaTime = dt * this.simulationSpeed; + if (this._isPlaying) { + this._time += scaledDeltaTime; + this._emit(scaledDeltaTime); + 0 !== this._assembler._updateParticles(scaledDeltaTime) || this._isEmitting || this.stop(); + this._assembler.updateParticleBuffer(); + this.trailModule.enable && this.trailModule.updateTrailBuffer(); + } + }; + _proto.emit = function emit(count, dt) { + this._simulationSpace === _enum.Space.World && this.node.getWorldMatrix(_world_mat); + for (var i = 0; i < count; ++i) { + var particle = this._assembler._getFreeParticle(); + if (null === particle) return; + var rand = (0, _valueTypes.pseudoRandom)((0, _valueTypes.randomRangeInt)(0, _utils.INT_MAX)); + if (this.shapeModule.enable) this.shapeModule.emit(particle); else { + _valueTypes.Vec3.set(particle.position, 0, 0, 0); + _valueTypes.Vec3.copy(particle.velocity, _particleGeneralFunction.particleEmitZAxis); + } + this.textureAnimationModule.enable && this.textureAnimationModule.init(particle); + _valueTypes.Vec3.scale(particle.velocity, particle.velocity, this.startSpeed.evaluate(this._time / this.duration, rand)); + switch (this._simulationSpace) { + case _enum.Space.Local: + break; + + case _enum.Space.World: + _valueTypes.Vec3.transformMat4(particle.position, particle.position, _world_mat); + var worldRot = new _valueTypes.Quat(); + this.node.getWorldRotation(worldRot); + _valueTypes.Vec3.transformQuat(particle.velocity, particle.velocity, worldRot); + break; + + case _enum.Space.Custom: + } + _valueTypes.Vec3.copy(particle.ultimateVelocity, particle.velocity); + _valueTypes.Vec3.set(particle.rotation, 0, 0, this.startRotation.evaluate(this._time / this.duration, rand)); + _valueTypes.Vec3.set(particle.startSize, this.startSize.evaluate(this._time / this.duration, rand), 1, 1); + particle.startSize.y = particle.startSize.x; + _valueTypes.Vec3.copy(particle.size, particle.startSize); + particle.startColor.set(this.startColor.evaluate(this._time / this.duration, rand)); + particle.color.set(particle.startColor); + particle.startLifetime = this.startLifetime.evaluate(this._time / this.duration, rand) + dt; + particle.remainingLifetime = particle.startLifetime; + particle.randomSeed = (0, _valueTypes.randomRangeInt)(0, 233280); + this._assembler._setNewParticle(particle); + } + }; + _proto._prewarmSystem = function _prewarmSystem() { + this.startDelay.mode = _curveRange.Mode.Constant; + this.startDelay.constant = 0; + var dt = 1; + var cnt = this.duration / dt; + for (var i = 0; i < cnt; ++i) { + this._time += dt; + this._emit(dt); + this._assembler._updateParticles(dt); + } + }; + _proto._emit = function _emit(dt) { + var startDelay = this.startDelay.evaluate(0, 1); + if (this._time > startDelay) { + if (this._time > this.duration + startDelay && !this.loop) { + this._isEmitting = false; + return; + } + this._emitRateTimeCounter += this.rateOverTime.evaluate(this._time / this.duration, 1) * dt; + if (this._emitRateTimeCounter > 1 && this._isEmitting) { + var emitNum = Math.floor(this._emitRateTimeCounter); + this._emitRateTimeCounter -= emitNum; + this.emit(emitNum, dt); + } + this.node.getWorldPosition(this._curWPos); + var distance = _valueTypes.Vec3.distance(this._curWPos, this._oldWPos); + _valueTypes.Vec3.copy(this._oldWPos, this._curWPos); + this._emitRateDistanceCounter += distance * this.rateOverDistance.evaluate(this._time / this.duration, 1); + if (this._emitRateDistanceCounter > 1 && this._isEmitting) { + var _emitNum = Math.floor(this._emitRateDistanceCounter); + this._emitRateDistanceCounter -= _emitNum; + this.emit(_emitNum, dt); + } + for (var _iterator = _createForOfIteratorHelperLoose(this.bursts), _step; !(_step = _iterator()).done;) { + var burst = _step.value; + burst.update(this, dt); + } + } + }; + _proto._activateMaterial = function _activateMaterial() { }; + _proto._resetPosition = function _resetPosition() { + this.node.getWorldPosition(this._oldWPos); + _valueTypes.Vec3.copy(this._curWPos, this._oldWPos); + }; + _proto.addSubEmitter = function addSubEmitter(subEmitter) { + this._subEmitters.push(subEmitter); + }; + _proto.removeSubEmitter = function removeSubEmitter(idx) { + this._subEmitters.splice(this._subEmitters.indexOf(idx), 1); + }; + _proto.addBurst = function addBurst(burst) { + this.bursts.push(burst); + }; + _proto.removeBurst = function removeBurst(idx) { + this.bursts.splice(this.bursts.indexOf(idx), 1); + }; + _proto._checkBacth = function _checkBacth() { }; + _createClass(ParticleSystem3D, [{ + key: "isPlaying", + get: function get() { + return this._isPlaying; + } + }, { + key: "isPaused", + get: function get() { + return this._isPaused; + } + }, { + key: "isStopped", + get: function get() { + return this._isStopped; + } + }, { + key: "isEmitting", + get: function get() { + return this._isEmitting; + } + }, { + key: "time", + get: function get() { + return this._time; + } + }]); + return ParticleSystem3D; + })(RenderComponent), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "duration", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 5; + } + }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "_capacity", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 100; + } + }), _applyDecoratedDescriptor(_class2.prototype, "capacity", [property], Object.getOwnPropertyDescriptor(_class2.prototype, "capacity"), _class2.prototype), + _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "loop", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "playOnAwake", [_dec4], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "_prewarm", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _applyDecoratedDescriptor(_class2.prototype, "prewarm", [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "prewarm"), _class2.prototype), + _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "_simulationSpace", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.Local; + } + }), _applyDecoratedDescriptor(_class2.prototype, "simulationSpace", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "simulationSpace"), _class2.prototype), + _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "simulationSpeed", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "startDelay", [_dec7], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "startLifetime", [_dec8], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "startColor", [_dec9], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradientRange["default"](); + } + }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "scaleSpace", [_dec10], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.Local; + } + }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "startSize", [_dec11], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor13 = _applyDecoratedDescriptor(_class2.prototype, "startSpeed", [_dec12], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor14 = _applyDecoratedDescriptor(_class2.prototype, "startRotation", [_dec13], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor15 = _applyDecoratedDescriptor(_class2.prototype, "gravityModifier", [_dec14], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor16 = _applyDecoratedDescriptor(_class2.prototype, "rateOverTime", [_dec15], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor17 = _applyDecoratedDescriptor(_class2.prototype, "rateOverDistance", [_dec16], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "bursts", [_dec17], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new Array(); + } + }), _applyDecoratedDescriptor(_class2.prototype, "materials", [_dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "materials"), _class2.prototype), + _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "_shapeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _shapeModule["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "shapeModule", [_dec19], Object.getOwnPropertyDescriptor(_class2.prototype, "shapeModule"), _class2.prototype), + _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "_colorOverLifetimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _colorOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "colorOverLifetimeModule", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "colorOverLifetimeModule"), _class2.prototype), + _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "_sizeOvertimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _sizeOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "sizeOvertimeModule", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "sizeOvertimeModule"), _class2.prototype), + _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "_velocityOvertimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _velocityOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "velocityOvertimeModule", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "velocityOvertimeModule"), _class2.prototype), + _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "_forceOvertimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _forceOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "forceOvertimeModule", [_dec23], Object.getOwnPropertyDescriptor(_class2.prototype, "forceOvertimeModule"), _class2.prototype), + _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "_limitVelocityOvertimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _limitVelocityOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "limitVelocityOvertimeModule", [_dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "limitVelocityOvertimeModule"), _class2.prototype), + _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "_rotationOvertimeModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _rotationOvertime["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "rotationOvertimeModule", [_dec25], Object.getOwnPropertyDescriptor(_class2.prototype, "rotationOvertimeModule"), _class2.prototype), + _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "_textureAnimationModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _textureAnimation["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "textureAnimationModule", [_dec26], Object.getOwnPropertyDescriptor(_class2.prototype, "textureAnimationModule"), _class2.prototype), + _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "_trailModule", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _trail["default"](); + } + }), _applyDecoratedDescriptor(_class2.prototype, "trailModule", [_dec27], Object.getOwnPropertyDescriptor(_class2.prototype, "trailModule"), _class2.prototype), + _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "_renderMode", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.RenderMode.Billboard; + } + }), _applyDecoratedDescriptor(_class2.prototype, "renderMode", [_dec28], Object.getOwnPropertyDescriptor(_class2.prototype, "renderMode"), _class2.prototype), + _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "_velocityScale", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _applyDecoratedDescriptor(_class2.prototype, "velocityScale", [_dec29], Object.getOwnPropertyDescriptor(_class2.prototype, "velocityScale"), _class2.prototype), + _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "_lengthScale", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return 1; + } + }), _applyDecoratedDescriptor(_class2.prototype, "lengthScale", [_dec30], Object.getOwnPropertyDescriptor(_class2.prototype, "lengthScale"), _class2.prototype), + _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "_mesh", [property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return null; + } + }), _applyDecoratedDescriptor(_class2.prototype, "mesh", [_dec31], Object.getOwnPropertyDescriptor(_class2.prototype, "mesh"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "particleMaterial", [_dec32], Object.getOwnPropertyDescriptor(_class2.prototype, "particleMaterial"), _class2.prototype), + _applyDecoratedDescriptor(_class2.prototype, "trailMaterial", [_dec33], Object.getOwnPropertyDescriptor(_class2.prototype, "trailMaterial"), _class2.prototype), + _class2)) || _class) || _class) || _class) || _class); + exports["default"] = ParticleSystem3D; + false; + cc.ParticleSystem3D = ParticleSystem3D; + module.exports = exports["default"]; + }), { + "../../assets/material/CCMaterial": 124, + "../../components/CCRenderComponent": 160, + "../../mesh/CCMesh": 207, + "../../platform/CCClassDecorator": 240, + "../../value-types": 339, + "../../value-types/utils": 346, + "./animator/color-overtime": 31, + "./animator/curve-range": 32, + "./animator/force-overtime": 33, + "./animator/gradient-range": 34, + "./animator/limit-velocity-overtime": 36, + "./animator/rotation-overtime": 37, + "./animator/size-overtime": 38, + "./animator/texture-animation": 39, + "./animator/velocity-overtime": 40, + "./burst": 41, + "./emitter/shape-module": 43, + "./enum": 44, + "./particle-general-function": 45, + "./renderer/trail": 50 + }], + 47: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../value-types"); + var Particle = function Particle(particleSystem) { + this.particleSystem = null; + this.position = null; + this.velocity = null; + this.animatedVelocity = null; + this.ultimateVelocity = null; + this.angularVelocity = null; + this.axisOfRotation = null; + this.rotation = null; + this.startSize = null; + this.size = null; + this.startColor = null; + this.color = cc.Color.WHITE; + this.randomSeed = null; + this.remainingLifetime = null; + this.startLifetime = null; + this.emitAccumulator0 = null; + this.emitAccumulator1 = null; + this.frameIndex = null; + this.particleSystem = particleSystem; + this.position = new _valueTypes.Vec3(0, 0, 0); + this.velocity = new _valueTypes.Vec3(0, 0, 0); + this.animatedVelocity = new _valueTypes.Vec3(0, 0, 0); + this.ultimateVelocity = new _valueTypes.Vec3(0, 0, 0); + this.angularVelocity = new _valueTypes.Vec3(0, 0, 0); + this.axisOfRotation = new _valueTypes.Vec3(0, 0, 0); + this.rotation = new _valueTypes.Vec3(0, 0, 0); + this.startSize = new _valueTypes.Vec3(0, 0, 0); + this.size = new _valueTypes.Vec3(0, 0, 0); + this.startColor = cc.Color.WHITE.clone(); + this.color = cc.Color.WHITE.clone(); + this.randomSeed = 0; + this.remainingLifetime = 0; + this.startLifetime = 0; + this.emitAccumulator0 = 0; + this.emitAccumulator1 = 0; + this.frameIndex = 0; + }; + exports["default"] = Particle; + module.exports = exports["default"]; + }), { + "../../value-types": 339 + }], + 48: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../../../../renderer/gfx")); + var _inputAssembler = _interopRequireDefault(require("../../../../renderer/core/input-assembler")); + var _meshData = require("../../../mesh/mesh-data"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var renderer = require("../../../renderer"); + var ParticleBatchModel = (function () { + function ParticleBatchModel() { + this._capacity = 0; + this._vertFormat = null; + this._vertAttrsFloatCount = 0; + this._mesh = null; + this._vertCount = 0; + this._indexCount = 0; + this._material = null; + this._capacity = 0; + this._vertFormat = null; + this._vertAttrsFloatCount = 0; + this._mesh = null; + this._subDatas = []; + this._subMeshes = []; + } + var _proto = ParticleBatchModel.prototype; + _proto.setCapacity = function setCapacity(capacity) { + var capChanged = this._capacity !== capacity; + this._capacity = capacity; + this._inited && capChanged && this._recreateBuffer(); + }; + _proto.setVertexAttributes = function setVertexAttributes(mesh, vfmt) { + if (this._mesh === mesh && this._vertFormat === vfmt) return; + this._mesh = mesh; + this._vertFormat = vfmt; + this._vertAttrsFloatCount = this._vertFormat._bytes / 4; + this._createParticleData(); + this._inited = true; + }; + _proto._recreateBuffer = function _recreateBuffer() { + this._createParticleData(); + }; + _proto._createParticleData = function _createParticleData() { + this.destroyIAData(); + this._vertCount = 4; + this._indexCount = 6; + var vbData = null; + var ibData = null; + var vertSize = this._vertFormat._bytes; + if (this._mesh) { + var subData = this._mesh._subDatas[0]; + this._vertCount = subData.vData.byteLength / subData.vfm._bytes; + this._indexCount = subData.iData.byteLength / 2; + vbData = new Float32Array(vertSize * this._capacity * this._vertCount / 4); + ibData = new Uint16Array(this._capacity * this._indexCount); + var posEle = this._vertFormat.element(_gfx["default"].ATTR_TEX_COORD3); + var normalEle = this._vertFormat.element(_gfx["default"].ATTR_NORMAL); + var uvEle = this._vertFormat.element(_gfx["default"].ATTR_TEX_COORD); + var colorEle = this._vertFormat.element(_gfx["default"].ATTR_COLOR1); + this._mesh.copyAttribute(0, _gfx["default"].ATTR_POSITION, vbData.buffer, vertSize, posEle.offset); + this._mesh.copyAttribute(0, _gfx["default"].ATTR_NORMAL, vbData.buffer, vertSize, normalEle.offset); + this._mesh.copyAttribute(0, _gfx["default"].ATTR_UV0, vbData.buffer, vertSize, uvEle.offset); + if (!this._mesh.copyAttribute(0, _gfx["default"].ATTR_COLOR, vbData.buffer, vertSize, colorEle.offset)) { + var vb = new Uint32Array(vbData.buffer); + for (var i = 0; i < this._vertCount; ++i) vb[i * this._vertAttrsFloatCount + colorEle.offset / 4] = cc.Color.WHITE._val; + } + var vbFloatArray = new Float32Array(vbData.buffer); + for (var i = 1; i < this._capacity; i++) vbFloatArray.copyWithin(i * vertSize * this._vertCount / 4, 0, vertSize * this._vertCount / 4); + this._mesh.copyIndices(0, ibData); + for (var i = 1; i < this._capacity; i++) for (var j = 0; j < this._indexCount; j++) ibData[i * this._indexCount + j] = ibData[j] + i * this._vertCount; + } else { + vbData = new Float32Array(vertSize * this._capacity * this._vertCount / 4); + ibData = new Uint16Array(this._capacity * this._indexCount); + var dst = 0; + for (var i = 0; i < this._capacity; ++i) { + var baseIdx = 4 * i; + ibData[dst++] = baseIdx; + ibData[dst++] = baseIdx + 1; + ibData[dst++] = baseIdx + 2; + ibData[dst++] = baseIdx + 3; + ibData[dst++] = baseIdx + 2; + ibData[dst++] = baseIdx + 1; + } + } + var meshData = new _meshData.MeshData(); + meshData.vData = vbData; + meshData.iData = ibData; + meshData.vfm = this._vertFormat; + meshData.vDirty = true; + meshData.iDirty = true; + meshData.enable = true; + this._subDatas[0] = meshData; + false; + var _vb = new _gfx["default"].VertexBuffer(renderer.device, this._vertFormat, _gfx["default"].USAGE_DYNAMIC, vbData); + var ib = new _gfx["default"].IndexBuffer(renderer.device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_STATIC, ibData, ibData.length); + this._subMeshes[0] = new _inputAssembler["default"](_vb, ib); + }; + _proto.createTrailData = function createTrailData(vfmt, num) { + if (this._subDatas[1]) return; + var vertSize = vfmt._bytes; + var vBuffer = new ArrayBuffer(vertSize * (num + 1) * 2); + var ibData = new Uint16Array(6 * num); + var meshData = new _meshData.MeshData(); + meshData.vData = new Float32Array(vBuffer); + meshData.iData = ibData; + meshData.vfm = vfmt; + meshData.vDirty = true; + meshData.iDirty = true; + meshData.enable = true; + this._subDatas[1] = meshData; + false; + var vb = new _gfx["default"].VertexBuffer(renderer.device, vfmt, _gfx["default"].USAGE_DYNAMIC, vBuffer); + var ib = new _gfx["default"].IndexBuffer(renderer.device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_DYNAMIC, ibData, 6 * num); + this._subMeshes[1] = new _inputAssembler["default"](vb, ib); + }; + _proto.setModelMaterial = function setModelMaterial(mat) { + this._material = mat; + }; + _proto.addParticleVertexData = function addParticleVertexData(index, pvdata) { + var subData = this._subDatas[0]; + var vData = subData.getVData(); + var uintVData = subData.getVData(Uint32Array); + if (this._mesh) for (var i = 0; i < this._vertCount; i++) { + var _offset = (index * this._vertCount + i) * this._vertAttrsFloatCount; + vData[_offset++] = pvdata[0].x; + vData[_offset++] = pvdata[0].y; + vData[_offset++] = pvdata[0].z; + _offset += 2; + vData[_offset++] = pvdata[1].z; + vData[_offset++] = pvdata[2].x; + vData[_offset++] = pvdata[2].y; + vData[_offset++] = pvdata[2].z; + vData[_offset++] = pvdata[3].x; + vData[_offset++] = pvdata[3].y; + vData[_offset++] = pvdata[3].z; + uintVData[_offset++] = pvdata[4]; + } else { + var offset = index * this._vertAttrsFloatCount; + vData[offset++] = pvdata[0].x; + vData[offset++] = pvdata[0].y; + vData[offset++] = pvdata[0].z; + vData[offset++] = pvdata[1].x; + vData[offset++] = pvdata[1].y; + vData[offset++] = pvdata[1].z; + vData[offset++] = pvdata[2].x; + vData[offset++] = pvdata[2].y; + vData[offset++] = pvdata[2].z; + vData[offset++] = pvdata[3].x; + vData[offset++] = pvdata[3].y; + vData[offset++] = pvdata[3].z; + uintVData[offset++] = pvdata[4]; + if (pvdata[5]) { + vData[offset++] = pvdata[5].x; + vData[offset++] = pvdata[5].y; + vData[offset++] = pvdata[5].z; + } + } + }; + _proto._uploadData = function _uploadData() { + var subDatas = this._subDatas; + var subMeshes = this._subMeshes; + for (var i = 0, len = subDatas.length; i < len; i++) { + var subData = subDatas[i]; + var subMesh = subMeshes[i]; + if (subData.vDirty) { + var vBuffer = subMesh._vertexBuffer, vData = subData.vData; + vBuffer.update(0, vData); + subData.vDirty = false; + } + if (subData.iDirty) { + var iBuffer = subMesh._indexBuffer, iData = subData.iData; + iBuffer.update(0, iData); + subData.iDirty = false; + } + } + }; + _proto.updateIA = function updateIA(index, count, vDirty, iDirty) { + false; + this._subMeshes[index]._count = count; + var subData = this._subDatas[index]; + subData.vDirty = vDirty; + subData.iDirty = iDirty; + }; + _proto.clear = function clear() { + var subMesh = this._subMeshes[0]; + subMesh && (subMesh.indexCount = 0); + }; + _proto.destroy = function destroy() { + this._subDatas.length = 0; + var subMeshes = this._subMeshes; + for (var i = 0, len = subMeshes.length; i < len; i++) { + var vb = subMeshes[i]._vertexBuffer; + vb && vb.destroy(); + var ib = subMeshes[i]._indexBuffer; + ib && ib.destroy(); + } + subMeshes.length = 0; + }; + _proto.destroyIAData = function destroyIAData() { + if (this._subMeshes[0]) { + this._subMeshes[0]._vertexBuffer.destroy(); + this._subMeshes[0]._indexBuffer.destroy(); + this._subMeshes[0] = null; + } + this._subDatas[0] = null; + }; + return ParticleBatchModel; + })(); + exports["default"] = ParticleBatchModel; + module.exports = exports["default"]; + }), { + "../../../../renderer/core/input-assembler": 362, + "../../../../renderer/gfx": 372, + "../../../mesh/mesh-data": 210, + "../../../renderer": 271 + }], + 49: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../../value-types"); + var _gfx = _interopRequireDefault(require("../../../../renderer/gfx")); + var _particleBatchModel = _interopRequireDefault(require("./particle-batch-model")); + var _materialVariant = _interopRequireDefault(require("../../../assets/material/material-variant")); + var _recyclePool = _interopRequireDefault(require("../../../../renderer/memop/recycle-pool")); + var _enum = require("../enum"); + var _particle = _interopRequireDefault(require("../particle")); + var _assembler = _interopRequireDefault(require("../../../renderer/assembler")); + var _particleSystem3d = _interopRequireDefault(require("../particle-system-3d")); + var _dec, _class, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _require = require("../../../platform/CCClassDecorator"), ccclass = _require.ccclass, property = _require.property; + var _tempAttribUV = new _valueTypes.Vec3(); + var _tempAttribUV0 = new _valueTypes.Vec2(); + var _tempAttribColor = new _valueTypes.Vec4(); + var _tempWorldTrans = new _valueTypes.Mat4(); + var _uvs = [0, 0, 1, 0, 0, 1, 1, 1]; + var CC_USE_WORLD_SPACE = "CC_USE_WORLD_SPACE"; + var CC_USE_BILLBOARD = "CC_USE_BILLBOARD"; + var CC_USE_STRETCHED_BILLBOARD = "CC_USE_STRETCHED_BILLBOARD"; + var CC_USE_HORIZONTAL_BILLBOARD = "CC_USE_HORIZONTAL_BILLBOARD"; + var CC_USE_VERTICAL_BILLBOARD = "CC_USE_VERTICAL_BILLBOARD"; + var CC_USE_MESH = "CC_USE_MESH"; + var vfmtNormal = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD1, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD2, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmtNormal.name = "vfmtNormal"; + var vfmtStretch = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD1, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD2, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }, { + name: _gfx["default"].ATTR_COLOR1, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }]); + vfmtStretch.name = "vfmtStretch"; + var vfmtMesh = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD1, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD2, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }, { + name: _gfx["default"].ATTR_TEX_COORD3, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_NORMAL, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_COLOR1, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmtMesh.name = "vfmtMesh"; + var ParticleSystem3DAssembler = (_dec = ccclass("cc.ParticleSystem3DAssembler"), + _dec(_class = (_temp = (function (_Assembler) { + _inheritsLoose(ParticleSystem3DAssembler, _Assembler); + function ParticleSystem3DAssembler() { + var _this; + _this = _Assembler.call(this) || this; + _this._defines = null; + _this._trailDefines = null; + _this._model = null; + _this.frameTile_velLenScale = null; + _this.attrs = []; + _this._vertFormat = []; + _this._particleSystem = null; + _this._particles = null; + _this._defaultMat = null; + _this._isAssetReady = false; + _this._defaultTrailMat = null; + _this._customProperties = null; + _this._node_scale = null; + _this._model = null; + _this.frameTile_velLenScale = cc.v4(1, 1, 0, 0); + _this._node_scale = cc.v4(); + _this.attrs = new Array(5); + _this._trailDefines = { + CC_USE_WORLD_SPACE: true + }; + return _this; + } + var _proto = ParticleSystem3DAssembler.prototype; + _proto.onInit = function onInit(ps) { + var _this2 = this; + this._particleSystem = ps; + this._particles = new _recyclePool["default"](function () { + return new _particle["default"](_this2); + }, 16); + this._setVertexAttrib(); + this.onEnable(); + this._updateModel(); + this._updateMaterialParams(); + this._updateTrailMaterial(); + }; + _proto.onEnable = function onEnable() { + if (!this._particleSystem) return; + null == this._model && (this._model = new _particleBatchModel["default"]()); + this._model.inited || this._model.setCapacity(this._particleSystem.capacity); + this._model.enabled = this._particleSystem.enabledInHierarchy; + }; + _proto.onDisable = function onDisable() { + this._model && (this._model.enabled = this._particleSystem.enabledInHierarchy); + }; + _proto.onDestroy = function onDestroy() { + this._model = null; + }; + _proto.clear = function clear() { + this._particles.reset(); + this.updateParticleBuffer(); + }; + _proto._getFreeParticle = function _getFreeParticle() { + if (this._particles.length >= this._particleSystem.capacity) return null; + return this._particles.add(); + }; + _proto._setNewParticle = function _setNewParticle(p) { }; + _proto._updateParticles = function _updateParticles(dt) { + this._particleSystem.node.getWorldMatrix(_tempWorldTrans); + switch (this._particleSystem.scaleSpace) { + case _enum.Space.Local: + this._particleSystem.node.getScale(this._node_scale); + break; + + case _enum.Space.World: + this._particleSystem.node.getWorldScale(this._node_scale); + } + var material = this._particleSystem.materials[0]; + var mat = material ? this._particleSystem.particleMaterial : this._defaultMat; + mat.setProperty("scale", this._node_scale); + this._particleSystem.velocityOvertimeModule.enable && this._particleSystem.velocityOvertimeModule.update(this._particleSystem._simulationSpace, _tempWorldTrans); + this._particleSystem.forceOvertimeModule.enable && this._particleSystem.forceOvertimeModule.update(this._particleSystem._simulationSpace, _tempWorldTrans); + this._particleSystem.trailModule.enable && this._particleSystem.trailModule.update(); + for (var i = 0; i < this._particles.length; ++i) { + var p = this._particles.data[i]; + p.remainingLifetime -= dt; + _valueTypes.Vec3.set(p.animatedVelocity, 0, 0, 0); + if (p.remainingLifetime < 0) { + this._particleSystem.trailModule.enable && this._particleSystem.trailModule.removeParticle(p); + this._particles.remove(i); + --i; + continue; + } + p.velocity.y -= 9.8 * this._particleSystem.gravityModifier.evaluate(1 - p.remainingLifetime / p.startLifetime, p.randomSeed) * dt; + this._particleSystem.sizeOvertimeModule.enable && this._particleSystem.sizeOvertimeModule.animate(p); + this._particleSystem.colorOverLifetimeModule.enable && this._particleSystem.colorOverLifetimeModule.animate(p); + this._particleSystem.forceOvertimeModule.enable && this._particleSystem.forceOvertimeModule.animate(p, dt); + this._particleSystem.velocityOvertimeModule.enable ? this._particleSystem.velocityOvertimeModule.animate(p) : _valueTypes.Vec3.copy(p.ultimateVelocity, p.velocity); + this._particleSystem.limitVelocityOvertimeModule.enable && this._particleSystem.limitVelocityOvertimeModule.animate(p); + this._particleSystem.rotationOvertimeModule.enable && this._particleSystem.rotationOvertimeModule.animate(p, dt); + this._particleSystem.textureAnimationModule.enable && this._particleSystem.textureAnimationModule.animate(p); + _valueTypes.Vec3.scaleAndAdd(p.position, p.position, p.ultimateVelocity, dt); + this._particleSystem.trailModule.enable && this._particleSystem.trailModule.animate(p, dt); + } + return this._particles.length; + }; + _proto.updateParticleBuffer = function updateParticleBuffer() { + var idx = 0; + var uploadVel = this._particleSystem.renderMode === _enum.RenderMode.StrecthedBillboard; + for (var i = 0; i < this._particles.length; ++i) { + var p = this._particles.data[i]; + var fi = 0; + this._particleSystem.textureAnimationModule.enable && (fi = p.frameIndex); + idx = 4 * i; + var attrNum = 0; + if (this._particleSystem.renderMode !== _enum.RenderMode.Mesh) for (var j = 0; j < 4; ++j) { + attrNum = 0; + this.attrs[attrNum++] = p.position; + _tempAttribUV.x = _uvs[2 * j]; + _tempAttribUV.y = _uvs[2 * j + 1]; + _tempAttribUV.z = fi; + this.attrs[attrNum++] = _tempAttribUV; + this.attrs[attrNum++] = p.size; + this.attrs[attrNum++] = p.rotation; + this.attrs[attrNum++] = p.color._val; + this.attrs[attrNum++] = uploadVel ? p.ultimateVelocity : null; + this._model.addParticleVertexData(idx++, this.attrs); + } else { + attrNum = 0; + this.attrs[attrNum++] = p.position; + _tempAttribUV.z = fi; + this.attrs[attrNum++] = _tempAttribUV; + this.attrs[attrNum++] = p.size; + this.attrs[attrNum++] = p.rotation; + this.attrs[attrNum++] = p.color._val; + this._model.addParticleVertexData(i, this.attrs); + } + } + this.updateIA(0, this._particles.length * this._model._indexCount, true); + }; + _proto.updateShaderUniform = function updateShaderUniform() { }; + _proto.updateIA = function updateIA(index, count, vDirty, iDirty) { + if (!this._model) return; + this._model.updateIA(index, count, vDirty, iDirty); + }; + _proto.getParticleCount = function getParticleCount() { + return this._particles.data.length; + }; + _proto._onMaterialModified = function _onMaterialModified(index, material) { + if (0 === index) { + this._updateModel(); + this._updateMaterialParams(); + } else this._updateTrailMaterial(); + }; + _proto._onRebuildPSO = function _onRebuildPSO(index, material) { + this._model && 0 === index && this._model.setModelMaterial(material); + this._particleSystem.trailModule._trailModel && 1 === index && this._particleSystem.trailModule._trailModel.setModelMaterial(material); + }; + _proto._ensureLoadMesh = function _ensureLoadMesh() { + this._particleSystem.mesh && !this._particleSystem.mesh.loaded && cc.assetManager.postLoadNative(this._particleSystem.mesh); + }; + _proto.setCapacity = function setCapacity(capacity) { + if (!this._model) return; + this._model.setCapacity(capacity); + }; + _proto._setVertexAttrib = function _setVertexAttrib() { + switch (this._particleSystem.renderMode) { + case _enum.RenderMode.StrecthedBillboard: + this._vertFormat = vfmtStretch; + break; + + case _enum.RenderMode.Mesh: + this._vertFormat = vfmtMesh; + break; + + default: + this._vertFormat = vfmtNormal; + } + }; + _proto._updateMaterialParams = function _updateMaterialParams() { + if (!this._particleSystem) return; + var mat = this._particleSystem.materials[0]; + mat = null == mat && null == this._defaultMat ? this._defaultMat = _materialVariant["default"].createWithBuiltin("3d-particle", this) : _materialVariant["default"].create(mat, this._particleSystem); + mat = mat || this._defaultMat; + this._particleSystem._simulationSpace === _enum.Space.World ? mat.define(CC_USE_WORLD_SPACE, true) : mat.define(CC_USE_WORLD_SPACE, false); + if (this._particleSystem.renderMode === _enum.RenderMode.Billboard) { + mat.define(CC_USE_BILLBOARD, true); + mat.define(CC_USE_STRETCHED_BILLBOARD, false); + mat.define(CC_USE_HORIZONTAL_BILLBOARD, false); + mat.define(CC_USE_VERTICAL_BILLBOARD, false); + mat.define(CC_USE_MESH, false); + } else if (this._particleSystem.renderMode === _enum.RenderMode.StrecthedBillboard) { + mat.define(CC_USE_BILLBOARD, false); + mat.define(CC_USE_STRETCHED_BILLBOARD, true); + mat.define(CC_USE_HORIZONTAL_BILLBOARD, false); + mat.define(CC_USE_VERTICAL_BILLBOARD, false); + mat.define(CC_USE_MESH, false); + this.frameTile_velLenScale.z = this._particleSystem.velocityScale; + this.frameTile_velLenScale.w = this._particleSystem.lengthScale; + } else if (this._particleSystem.renderMode === _enum.RenderMode.HorizontalBillboard) { + mat.define(CC_USE_BILLBOARD, false); + mat.define(CC_USE_STRETCHED_BILLBOARD, false); + mat.define(CC_USE_HORIZONTAL_BILLBOARD, true); + mat.define(CC_USE_VERTICAL_BILLBOARD, false); + mat.define(CC_USE_MESH, false); + } else if (this._particleSystem.renderMode === _enum.RenderMode.VerticalBillboard) { + mat.define(CC_USE_BILLBOARD, false); + mat.define(CC_USE_STRETCHED_BILLBOARD, false); + mat.define(CC_USE_HORIZONTAL_BILLBOARD, false); + mat.define(CC_USE_VERTICAL_BILLBOARD, true); + mat.define(CC_USE_MESH, false); + } else if (this._particleSystem.renderMode === _enum.RenderMode.Mesh) { + mat.define(CC_USE_BILLBOARD, false); + mat.define(CC_USE_STRETCHED_BILLBOARD, false); + mat.define(CC_USE_HORIZONTAL_BILLBOARD, false); + mat.define(CC_USE_VERTICAL_BILLBOARD, false); + mat.define(CC_USE_MESH, true); + } else console.warn("particle system renderMode " + this._particleSystem.renderMode + " not support."); + this._particleSystem.textureAnimationModule.enable && _valueTypes.Vec2.set(this.frameTile_velLenScale, this._particleSystem.textureAnimationModule.numTilesX, this._particleSystem.textureAnimationModule.numTilesY); + mat.setProperty("frameTile_velLenScale", this.frameTile_velLenScale); + this._particleSystem.setMaterial(0, mat); + }; + _proto._updateTrailMaterial = function _updateTrailMaterial() { + var mat = this._particleSystem.trailMaterial; + if (this._particleSystem.trailModule.enable) { + null === mat && null === this._defaultTrailMat && (this._defaultTrailMat = _materialVariant["default"].createWithBuiltin("3d-trail", this)); + if (null === mat) { + mat = this._defaultTrailMat; + this._particleSystem.trailMaterial = mat; + } + this._particleSystem._simulationSpace === _enum.Space.World || this._particleSystem.trailModule.space === _enum.Space.World ? mat.define(CC_USE_WORLD_SPACE, true) : mat.define(CC_USE_WORLD_SPACE, false); + this._particleSystem.trailModule._updateMaterial(); + } + }; + _proto._updateTrailEnable = function _updateTrailEnable(enable) { + if (!this._model) return; + var subData = this._model._subDatas[1]; + subData && (subData.enable = enable); + }; + _proto._updateModel = function _updateModel() { + if (!this._model) return; + this._model.setVertexAttributes(this._particleSystem.renderMode === _enum.RenderMode.Mesh ? this._particleSystem.mesh : null, this._vertFormat); + }; + _proto.setVertexAttributes = function setVertexAttributes(mesh, vfmt) { + if (!this._model) return; + this._model.setVertexAttributes(mesh, vfmt); + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + if (!this._model) return; + this._model._uploadData(); + var submeshes = this._model._subMeshes; + var subDatas = this._model._subDatas; + var materials = comp.materials; + renderer._flush(); + for (var i = 0, len = submeshes.length; i < len; i++) { + var ia = submeshes[i]; + var meshData = subDatas[i]; + var material = materials[i]; + if (meshData.enable) { + renderer.material = material; + renderer.cullingMask = comp.node._cullingMask; + renderer.node = comp.node; + renderer._flushIA(ia); + } + } + }; + return ParticleSystem3DAssembler; + })(_assembler["default"]), _temp)) || _class); + exports["default"] = ParticleSystem3DAssembler; + Object.assign(ParticleSystem3DAssembler, { + uv: _uvs + }); + _assembler["default"].register(_particleSystem3d["default"], ParticleSystem3DAssembler); + module.exports = exports["default"]; + }), { + "../../../../renderer/gfx": 372, + "../../../../renderer/memop/recycle-pool": 387, + "../../../assets/material/material-variant": 131, + "../../../platform/CCClassDecorator": 240, + "../../../renderer/assembler": 268, + "../../../value-types": 339, + "../enum": 44, + "../particle": 47, + "../particle-system-3d": 46, + "./particle-batch-model": 48 + }], + 50: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCClassDecorator = require("../../../platform/CCClassDecorator"); + var _valueTypes = require("../../../value-types"); + var _gfx = _interopRequireDefault(require("../../../../renderer/gfx")); + var _pool = _interopRequireDefault(require("../../../../renderer/memop/pool")); + var _curveRange = _interopRequireDefault(require("../animator/curve-range")); + var _gradientRange = _interopRequireDefault(require("../animator/gradient-range")); + var _enum = require("../enum"); + var _utils = _interopRequireDefault(require("../utils")); + var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it; + if ("undefined" === typeof Symbol || null == o[Symbol.iterator]) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && "number" === typeof o.length) { + it && (o = it); + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + it = o[Symbol.iterator](); + return it.next.bind(it); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if ("string" === typeof o) return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + "Object" === n && o.constructor && (n = o.constructor.name); + if ("Map" === n || "Set" === n) return Array.from(o); + if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + (null == len || len > arr.length) && (len = arr.length); + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _initializerDefineProperty(target, property, descriptor, context) { + if (!descriptor) return; + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 + }); + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { + var desc = {}; + Object.keys(descriptor).forEach((function (key) { + desc[key] = descriptor[key]; + })); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + ("value" in desc || desc.initializer) && (desc.writable = true); + desc = decorators.slice().reverse().reduce((function (desc, decorator) { + return decorator(target, property, desc) || desc; + }), desc); + if (context && void 0 !== desc.initializer) { + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = void 0; + } + if (void 0 === desc.initializer) { + Object.defineProperty(target, property, desc); + desc = null; + } + return desc; + } + function _initializerWarningHelper(descriptor, context) { + throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform."); + } + var PRE_TRIANGLE_INDEX = 1; + var NEXT_TRIANGLE_INDEX = 4; + var DIRECTION_THRESHOLD = Math.cos((0, _valueTypes.toRadian)(100)); + var _temp_trailEle = { + position: cc.v3(), + velocity: cc.v3() + }; + var _temp_quat = cc.quat(); + var _temp_xform = cc.mat4(); + var _temp_Vec3 = cc.v3(); + var _temp_Vec3_1 = cc.v3(); + var _temp_color = cc.color(); + var ITrailElement = function ITrailElement() { + this.position = void 0; + this.lifetime = void 0; + this.width = void 0; + this.velocity = void 0; + this.color = void 0; + }; + var TrailSegment = (function () { + function TrailSegment(maxTrailElementNum) { + this.start = void 0; + this.end = void 0; + this.trailElements = []; + this.start = -1; + this.end = -1; + this.trailElements = []; + while (maxTrailElementNum--) this.trailElements.push({ + position: cc.v3(), + lifetime: 0, + width: 0, + velocity: cc.v3(), + direction: 0, + color: cc.color() + }); + } + var _proto = TrailSegment.prototype; + _proto.getElement = function getElement(idx) { + if (-1 === this.start) return null; + idx < 0 && (idx = (idx + this.trailElements.length) % this.trailElements.length); + idx >= this.trailElements.length && (idx %= this.trailElements.length); + return this.trailElements[idx]; + }; + _proto.addElement = function addElement() { + if (0 === this.trailElements.length) return null; + if (-1 === this.start) { + this.start = 0; + this.end = 1; + return this.trailElements[0]; + } + if (this.start === this.end) { + this.trailElements.splice(this.end, 0, { + position: cc.v3(), + lifetime: 0, + width: 0, + velocity: cc.v3(), + direction: 0, + color: cc.color() + }); + this.start++; + this.start %= this.trailElements.length; + } + var newEleLoc = this.end++; + this.end %= this.trailElements.length; + return this.trailElements[newEleLoc]; + }; + _proto.iterateElement = function iterateElement(target, f, p, dt) { + var end = this.start >= this.end ? this.end + this.trailElements.length : this.end; + for (var i = this.start; i < end; i++) if (f(target, this.trailElements[i % this.trailElements.length], p, dt)) { + this.start++; + this.start %= this.trailElements.length; + } + if (this.start === end) { + this.start = -1; + this.end = -1; + } + }; + _proto.count = function count() { + return this.start < this.end ? this.end - this.start : this.trailElements.length + this.end - this.start; + }; + _proto.clear = function clear() { + this.start = -1; + this.end = -1; + }; + return TrailSegment; + })(); + var TrailModule = (_dec = (0, _CCClassDecorator.ccclass)("cc.TrailModule"), _dec2 = (0, + _CCClassDecorator.property)({ + type: _enum.TrailMode + }), _dec3 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec4 = (0, _CCClassDecorator.property)({ + type: _enum.Space + }), _dec5 = (0, _CCClassDecorator.property)({ + type: _enum.TextureMode + }), _dec6 = (0, _CCClassDecorator.property)({ + type: _curveRange["default"] + }), _dec7 = (0, _CCClassDecorator.property)({ + type: _gradientRange["default"] + }), _dec8 = (0, _CCClassDecorator.property)({ + type: _gradientRange["default"] + }), _dec(_class = (_class2 = (_temp = (function () { + _createClass(TrailModule, [{ + key: "enable", + get: function get() { + return this._enable; + }, + set: function set(val) { + val && this._createTrailData(); + if (val && !this._enable) { + this._enable = val; + this._particleSystem._assembler._updateTrailMaterial(); + } + this._enable = val; + this._particleSystem._assembler._updateTrailEnable(this._enable); + } + }, { + key: "minParticleDistance", + get: function get() { + return this._minParticleDistance; + }, + set: function set(val) { + this._minParticleDistance = val; + this._minSquaredDistance = val * val; + } + }, { + key: "space", + get: function get() { + return this._space; + }, + set: function set(val) { + this._space = val; + this._particleSystem && this._particleSystem._assembler._updateTrailMaterial(); + } + }]); + function TrailModule() { + _initializerDefineProperty(this, "_enable", _descriptor, this); + _initializerDefineProperty(this, "mode", _descriptor2, this); + _initializerDefineProperty(this, "lifeTime", _descriptor3, this); + _initializerDefineProperty(this, "_minParticleDistance", _descriptor4, this); + _initializerDefineProperty(this, "_space", _descriptor5, this); + _initializerDefineProperty(this, "existWithParticles", _descriptor6, this); + _initializerDefineProperty(this, "textureMode", _descriptor7, this); + _initializerDefineProperty(this, "widthFromParticle", _descriptor8, this); + _initializerDefineProperty(this, "widthRatio", _descriptor9, this); + _initializerDefineProperty(this, "colorFromParticle", _descriptor10, this); + _initializerDefineProperty(this, "colorOverTrail", _descriptor11, this); + _initializerDefineProperty(this, "colorOvertime", _descriptor12, this); + this._particleSystem = null; + this._minSquaredDistance = 0; + this._vertSize = 0; + this._trailNum = 0; + this._trailLifetime = 0; + this.vbOffset = 0; + this.ibOffset = 0; + this._trailSegments = null; + this._particleTrail = null; + this._ia = null; + this._gfxVFmt = null; + this._vbF32 = null; + this._vbUint32 = null; + this._iBuffer = null; + this._needTransform = null; + this._defaultMat = null; + this._material = null; + this._gfxVFmt = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_TEX_COORD, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 4 + }, { + name: _gfx["default"].ATTR_TEX_COORD1, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + this._vertSize = this._gfxVFmt._bytes; + this._particleTrail = new _utils["default"](); + } + var _proto2 = TrailModule.prototype; + _proto2.onInit = function onInit(ps) { + this._particleSystem = ps; + this.minParticleDistance = this._minParticleDistance; + var burstCount = 0; + for (var _iterator = _createForOfIteratorHelperLoose(ps.bursts), _step; !(_step = _iterator()).done;) { + var b = _step.value; + burstCount += b.getMaxCount(ps); + } + this.lifeTime.constant = 1; + this._trailNum = Math.ceil(ps.startLifetime.getMax() * this.lifeTime.getMax() * 60 * (ps.rateOverTime.getMax() * ps.duration + burstCount)); + this._trailSegments = new _pool["default"](function () { + return new TrailSegment(10); + }, Math.ceil(ps.rateOverTime.getMax() * ps.duration)); + if (this._enable) { + this.enable = this._enable; + this._updateMaterial(); + } + }; + _proto2.onEnable = function onEnable() { }; + _proto2.onDisable = function onDisable() { }; + _proto2.destroy = function destroy() { + if (this._trailSegments) { + this._trailSegments.clear((function (obj) { + obj.trailElements.length = 0; + })); + this._trailSegments = null; + } + }; + _proto2.clear = function clear() { + if (this.enable) { + var trailIter = this._particleTrail.values(); + var trail = trailIter.next(); + while (!trail.done) { + trail.value.clear(); + trail = trailIter.next(); + } + this._particleTrail.clear(); + this.updateTrailBuffer(); + } + }; + _proto2._createTrailData = function _createTrailData() { + var model = this._particleSystem._assembler._model; + if (model) { + model.createTrailData(this._gfxVFmt, this._trailNum); + var subData = model._subDatas[1]; + this._vbF32 = subData.getVData(); + this._vbUint32 = subData.getVData(Uint32Array); + this._iBuffer = subData.iData; + } + }; + _proto2._updateMaterial = function _updateMaterial() { + if (this._particleSystem) { + var mat = this._particleSystem.trailMaterial; + this._material = mat || this._particleSystem._assembler._defaultTrailMat; + } + }; + _proto2.update = function update() { + this._trailLifetime = this.lifeTime.evaluate(this._particleSystem._time, 1); + if (this.space === _enum.Space.World && this._particleSystem._simulationSpace === _enum.Space.Local) { + this._needTransform = true; + this._particleSystem.node.getWorldMatrix(_temp_xform); + this._particleSystem.node.getWorldRotation(_temp_quat); + } else this._needTransform = false; + }; + _proto2.animate = function animate(p, scaledDt) { + if (!this._trailSegments) return; + var trail = this._particleTrail.get(p); + if (!trail) { + trail = this._trailSegments.alloc(); + this._particleTrail.set(p, trail); + return; + } + var lastSeg = trail.getElement(trail.end - 1); + this._needTransform ? _valueTypes.Vec3.transformMat4(_temp_Vec3, p.position, _temp_xform) : _valueTypes.Vec3.copy(_temp_Vec3, p.position); + if (lastSeg) { + trail.iterateElement(this, this._updateTrailElement, p, scaledDt); + if (_valueTypes.Vec3.squaredDistance(lastSeg.position, _temp_Vec3) < this._minSquaredDistance) return; + } + lastSeg = trail.addElement(); + if (!lastSeg) return; + _valueTypes.Vec3.copy(lastSeg.position, _temp_Vec3); + lastSeg.lifetime = 0; + this.widthFromParticle ? lastSeg.width = p.size.x * this.widthRatio.evaluate(0, 1) : lastSeg.width = this.widthRatio.evaluate(0, 1); + var trailNum = trail.count(); + if (2 === trailNum) { + var lastSecondTrail = trail.getElement(trail.end - 2); + _valueTypes.Vec3.subtract(lastSecondTrail.velocity, lastSeg.position, lastSecondTrail.position); + } else if (trailNum > 2) { + var _lastSecondTrail = trail.getElement(trail.end - 2); + var lastThirdTrail = trail.getElement(trail.end - 3); + _valueTypes.Vec3.subtract(_temp_Vec3, lastThirdTrail.position, _lastSecondTrail.position); + _valueTypes.Vec3.subtract(_temp_Vec3_1, lastSeg.position, _lastSecondTrail.position); + _valueTypes.Vec3.subtract(_lastSecondTrail.velocity, _temp_Vec3_1, _temp_Vec3); + _valueTypes.Vec3.equals(cc.Vec3.ZERO, _lastSecondTrail.velocity) && _valueTypes.Vec3.copy(_lastSecondTrail.velocity, _temp_Vec3); + } + this.colorFromParticle ? lastSeg.color.set(p.color) : lastSeg.color.set(this.colorOvertime.evaluate(0, 1)); + }; + _proto2._updateTrailElement = function _updateTrailElement(trail, trailEle, p, dt) { + trailEle.lifetime += dt; + if (trail.colorFromParticle) { + trailEle.color.set(p.color); + trailEle.color.multiply(trail.colorOvertime.evaluate(1 - p.remainingLifetime / p.startLifetime, 1)); + } else trailEle.color.set(trail.colorOvertime.evaluate(1 - p.remainingLifetime / p.startLifetime, 1)); + trail.widthFromParticle ? trailEle.width = p.size.x * trail.widthRatio.evaluate(trailEle.lifetime / trail._trailLifetime, 1) : trailEle.width = trail.widthRatio.evaluate(trailEle.lifetime / trail._trailLifetime, 1); + return trailEle.lifetime > trail._trailLifetime; + }; + _proto2.removeParticle = function removeParticle(p) { + var trail = this._particleTrail.get(p); + if (trail && this._trailSegments) { + trail.clear(); + this._trailSegments.free(trail); + this._particleTrail["delete"](p); + } + }; + _proto2.updateTrailBuffer = function updateTrailBuffer() { + this.vbOffset = 0; + this.ibOffset = 0; + for (var _iterator2 = _createForOfIteratorHelperLoose(this._particleTrail.keys()), _step2; !(_step2 = _iterator2()).done;) { + var p = _step2.value; + var trailSeg = this._particleTrail.get(p); + if (-1 === trailSeg.start) continue; + var indexOffset = 4 * this.vbOffset / this._vertSize; + var end = trailSeg.start >= trailSeg.end ? trailSeg.end + trailSeg.trailElements.length : trailSeg.end; + var trailNum = end - trailSeg.start; + var textCoordSeg = 1 / trailNum; + var startSegEle = trailSeg.trailElements[trailSeg.start]; + this._fillVertexBuffer(startSegEle, this.colorOverTrail.evaluate(1, 1), indexOffset, 1, 0, NEXT_TRIANGLE_INDEX); + for (var i = trailSeg.start + 1; i < end; i++) { + var segEle = trailSeg.trailElements[i % trailSeg.trailElements.length]; + var j = i - trailSeg.start; + this._fillVertexBuffer(segEle, this.colorOverTrail.evaluate(1 - j / trailNum, 1), indexOffset, 1 - j * textCoordSeg, j, PRE_TRIANGLE_INDEX | NEXT_TRIANGLE_INDEX); + } + this._needTransform ? _valueTypes.Vec3.transformMat4(_temp_trailEle.position, p.position, _temp_xform) : _valueTypes.Vec3.copy(_temp_trailEle.position, p.position); + if (1 === trailNum || 2 === trailNum) { + var lastSecondTrail = trailSeg.getElement(trailSeg.end - 1); + _valueTypes.Vec3.subtract(lastSecondTrail.velocity, _temp_trailEle.position, lastSecondTrail.position); + this._vbF32[this.vbOffset - this._vertSize / 4 - 4] = lastSecondTrail.velocity.x; + this._vbF32[this.vbOffset - this._vertSize / 4 - 3] = lastSecondTrail.velocity.y; + this._vbF32[this.vbOffset - this._vertSize / 4 - 2] = lastSecondTrail.velocity.z; + this._vbF32[this.vbOffset - 4] = lastSecondTrail.velocity.x; + this._vbF32[this.vbOffset - 3] = lastSecondTrail.velocity.y; + this._vbF32[this.vbOffset - 2] = lastSecondTrail.velocity.z; + _valueTypes.Vec3.subtract(_temp_trailEle.velocity, _temp_trailEle.position, lastSecondTrail.position); + this._checkDirectionReverse(_temp_trailEle, lastSecondTrail); + } else if (trailNum > 2) { + var _lastSecondTrail2 = trailSeg.getElement(trailSeg.end - 1); + var lastThirdTrail = trailSeg.getElement(trailSeg.end - 2); + _valueTypes.Vec3.subtract(_temp_Vec3, lastThirdTrail.position, _lastSecondTrail2.position); + _valueTypes.Vec3.subtract(_temp_Vec3_1, _temp_trailEle.position, _lastSecondTrail2.position); + _valueTypes.Vec3.normalize(_temp_Vec3, _temp_Vec3); + _valueTypes.Vec3.normalize(_temp_Vec3_1, _temp_Vec3_1); + _valueTypes.Vec3.subtract(_lastSecondTrail2.velocity, _temp_Vec3_1, _temp_Vec3); + _valueTypes.Vec3.normalize(_lastSecondTrail2.velocity, _lastSecondTrail2.velocity); + this._checkDirectionReverse(_lastSecondTrail2, lastThirdTrail); + this.vbOffset -= this._vertSize / 4 * 2; + this.ibOffset -= 6; + this._fillVertexBuffer(_lastSecondTrail2, this.colorOverTrail.evaluate(textCoordSeg, 1), indexOffset, textCoordSeg, trailNum - 1, PRE_TRIANGLE_INDEX | NEXT_TRIANGLE_INDEX); + _valueTypes.Vec3.subtract(_temp_trailEle.velocity, _temp_trailEle.position, _lastSecondTrail2.position); + _valueTypes.Vec3.normalize(_temp_trailEle.velocity, _temp_trailEle.velocity); + this._checkDirectionReverse(_temp_trailEle, _lastSecondTrail2); + } + this.widthFromParticle ? _temp_trailEle.width = p.size.x * this.widthRatio.evaluate(0, 1) : _temp_trailEle.width = this.widthRatio.evaluate(0, 1); + _temp_trailEle.color = p.color; + _valueTypes.Vec3.equals(_temp_trailEle.velocity, cc.Vec3.ZERO) ? this.ibOffset -= 3 : this._fillVertexBuffer(_temp_trailEle, this.colorOverTrail.evaluate(0, 1), indexOffset, 0, trailNum, PRE_TRIANGLE_INDEX); + } + this._updateIA(this.ibOffset); + }; + _proto2._fillVertexBuffer = function _fillVertexBuffer(trailSeg, colorModifer, indexOffset, xTexCoord, trailEleIdx, indexSet) { + this._vbF32[this.vbOffset++] = trailSeg.position.x; + this._vbF32[this.vbOffset++] = trailSeg.position.y; + this._vbF32[this.vbOffset++] = trailSeg.position.z; + this._vbF32[this.vbOffset++] = 0; + this._vbF32[this.vbOffset++] = trailSeg.width; + this._vbF32[this.vbOffset++] = xTexCoord; + this._vbF32[this.vbOffset++] = 0; + this._vbF32[this.vbOffset++] = trailSeg.velocity.x; + this._vbF32[this.vbOffset++] = trailSeg.velocity.y; + this._vbF32[this.vbOffset++] = trailSeg.velocity.z; + _temp_color.set(trailSeg.color); + _temp_color.multiply(colorModifer); + this._vbUint32[this.vbOffset++] = _temp_color._val; + this._vbF32[this.vbOffset++] = trailSeg.position.x; + this._vbF32[this.vbOffset++] = trailSeg.position.y; + this._vbF32[this.vbOffset++] = trailSeg.position.z; + this._vbF32[this.vbOffset++] = 1; + this._vbF32[this.vbOffset++] = trailSeg.width; + this._vbF32[this.vbOffset++] = xTexCoord; + this._vbF32[this.vbOffset++] = 1; + this._vbF32[this.vbOffset++] = trailSeg.velocity.x; + this._vbF32[this.vbOffset++] = trailSeg.velocity.y; + this._vbF32[this.vbOffset++] = trailSeg.velocity.z; + this._vbUint32[this.vbOffset++] = _temp_color._val; + if (indexSet & PRE_TRIANGLE_INDEX) { + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx; + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx - 1; + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx + 1; + } + if (indexSet & NEXT_TRIANGLE_INDEX) { + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx; + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx + 1; + this._iBuffer[this.ibOffset++] = indexOffset + 2 * trailEleIdx + 2; + } + }; + _proto2._updateIA = function _updateIA(count) { + this._particleSystem && this._particleSystem._assembler && this._particleSystem._assembler.updateIA(1, count, true, true); + }; + _proto2._checkDirectionReverse = function _checkDirectionReverse(currElement, prevElement) { + _valueTypes.Vec3.dot(currElement.velocity, prevElement.velocity) < DIRECTION_THRESHOLD ? currElement.direction = 1 - prevElement.direction : currElement.direction = prevElement.direction; + }; + return TrailModule; + })(), _temp), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "_enable", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _applyDecoratedDescriptor(_class2.prototype, "enable", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "enable"), _class2.prototype), + _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "mode", [_dec2], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.TrailMode.Particles; + } + }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "lifeTime", [_dec3], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "_minParticleDistance", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return .1; + } + }), _applyDecoratedDescriptor(_class2.prototype, "minParticleDistance", [_CCClassDecorator.property], Object.getOwnPropertyDescriptor(_class2.prototype, "minParticleDistance"), _class2.prototype), + _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "_space", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.Space.World; + } + }), _applyDecoratedDescriptor(_class2.prototype, "space", [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "space"), _class2.prototype), + _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "existWithParticles", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "textureMode", [_dec5], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return _enum.TextureMode.Stretch; + } + }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "widthFromParticle", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return true; + } + }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "widthRatio", [_dec6], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _curveRange["default"](); + } + }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "colorFromParticle", [_CCClassDecorator.property], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return false; + } + }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "colorOverTrail", [_dec7], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradientRange["default"](); + } + }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "colorOvertime", [_dec8], { + configurable: true, + enumerable: true, + writable: true, + initializer: function initializer() { + return new _gradientRange["default"](); + } + }), _class2)) || _class); + exports["default"] = TrailModule; + module.exports = exports["default"]; + }), { + "../../../../renderer/gfx": 372, + "../../../../renderer/memop/pool": 386, + "../../../platform/CCClassDecorator": 240, + "../../../value-types": 339, + "../animator/curve-range": 32, + "../animator/gradient-range": 34, + "../enum": 44, + "../utils": 51 + }], + 51: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + Object.is || (Object.is = function (x, y) { + return x === y ? 0 !== x || 1 / x === 1 / y : x !== x && y !== y; + }); + var MapUtils = (function () { + function MapUtils(data) { + this.datas = []; + !data && (data = []); + this.datas = []; + var that = this; + data.forEach((function (item) { + that.has(item[0]) || that.datas.push({ + key: item[0], + value: item[1] + }); + })); + } + var _proto = MapUtils.prototype; + _proto.size = function size() { + return this.datas.length; + }; + _proto.set = function set(key, value) { + this["delete"](key); + this.datas.push({ + key: key, + value: value + }); + }; + _proto.get = function get(key) { + var value = void 0; + var datas = this.datas; + for (var i = 0, len = datas.length; i < len; i++) if (Object.is(key, datas[i].key)) { + value = datas[i].value; + break; + } + return value; + }; + _proto.has = function has(key) { + var res = false; + var datas = this.datas; + for (var i = 0, len = datas.length; i < len; i++) if (Object.is(key, datas[i].key)) { + res = true; + break; + } + return res; + }; + _proto.clear = function clear() { + this.datas.length = 0; + }; + _proto["delete"] = function _delete(key) { + var res = false; + var datas = this.datas; + for (var i = 0, len = datas.length; i < len; i++) if (Object.is(key, datas[i].key)) { + datas.splice(i, 1); + res = true; + break; + } + return res; + }; + _proto.keys = function keys() { + var datas = this.datas; + var keys = []; + for (var i = 0, len = datas.length; i < len; i++) keys.push(datas[i].key); + return keys; + }; + _proto.values = function values() { + var index = 0; + var datas = this.datas; + return { + next: function next() { + if (0 === datas.length || void 0 === datas[index]) return { + value: void 0, + done: true + }; + return { + value: datas[index++].value, + done: false + }; + } + }; + }; + return MapUtils; + })(); + exports["default"] = MapUtils; + module.exports = exports["default"]; + }), {}], + 52: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vec = _interopRequireDefault(require("../../value-types/vec3")); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var temp1 = new _vec["default"](); + var temp2 = new _vec["default"](); + var temp3 = new _vec["default"](); + var r = new _vec["default"](); + var c0 = new _vec["default"](); + var c1 = new _vec["default"](); + var c2 = new _vec["default"](); + var c3 = new _vec["default"](); + var c4 = new _vec["default"](); + var c5 = new _vec["default"](); + var c6 = new _vec["default"](); + var c7 = new _vec["default"](); + function _default(width, height, length, opts) { + void 0 === width && (width = 1); + void 0 === height && (height = 1); + void 0 === length && (length = 1); + void 0 === opts && (opts = { + widthSegments: 1, + heightSegments: 1, + lengthSegments: 1, + invWinding: false + }); + var ws = opts.widthSegments; + var hs = opts.heightSegments; + var ls = opts.lengthSegments; + var inv = opts.invWinding; + var hw = .5 * width; + var hh = .5 * height; + var hl = .5 * length; + var corners = [_vec["default"].set(c0, -hw, -hh, hl), _vec["default"].set(c1, hw, -hh, hl), _vec["default"].set(c2, hw, hh, hl), _vec["default"].set(c3, -hw, hh, hl), _vec["default"].set(c4, hw, -hh, -hl), _vec["default"].set(c5, -hw, -hh, -hl), _vec["default"].set(c6, -hw, hh, -hl), _vec["default"].set(c7, hw, hh, -hl)]; + var faceAxes = [[2, 3, 1], [4, 5, 7], [7, 6, 2], [1, 0, 4], [1, 4, 2], [5, 0, 6]]; + var faceNormals = [[0, 0, 1], [0, 0, -1], [0, 1, 0], [0, -1, 0], [1, 0, 0], [-1, 0, 0]]; + var positions = []; + var normals = []; + var uvs = []; + var indices = []; + var minPos = new _vec["default"](-hw, -hh, -hl); + var maxPos = new _vec["default"](hw, hh, hl); + var boundingRadius = Math.sqrt(hw * hw + hh * hh + hl * hl); + function _buildPlane(side, uSegments, vSegments) { + var u, v; + var ix, iy; + var offset = positions.length / 3; + var faceAxe = faceAxes[side]; + var faceNormal = faceNormals[side]; + for (iy = 0; iy <= vSegments; iy++) for (ix = 0; ix <= uSegments; ix++) { + u = ix / uSegments; + v = iy / vSegments; + _vec["default"].lerp(temp1, corners[faceAxe[0]], corners[faceAxe[1]], u); + _vec["default"].lerp(temp2, corners[faceAxe[0]], corners[faceAxe[2]], v); + _vec["default"].subtract(temp3, temp2, corners[faceAxe[0]]); + _vec["default"].add(r, temp1, temp3); + positions.push(r.x, r.y, r.z); + normals.push(faceNormal[0], faceNormal[1], faceNormal[2]); + uvs.push(u, v); + if (ix < uSegments && iy < vSegments) { + var useg1 = uSegments + 1; + var a = ix + iy * useg1; + var b = ix + (iy + 1) * useg1; + var c = ix + 1 + (iy + 1) * useg1; + var d = ix + 1 + iy * useg1; + if (inv) { + indices.push(offset + a, offset + b, offset + d); + indices.push(offset + d, offset + b, offset + c); + } else { + indices.push(offset + a, offset + d, offset + b); + indices.push(offset + b, offset + d, offset + c); + } + } + } + } + _buildPlane(0, ws, hs); + _buildPlane(4, ls, hs); + _buildPlane(1, ws, hs); + _buildPlane(5, ls, hs); + _buildPlane(3, ws, ls); + _buildPlane(2, ws, ls); + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + } + module.exports = exports["default"]; + }), { + "../../value-types/vec3": 349, + "./vertex-data": 63 + }], + 53: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vec = _interopRequireDefault(require("../../value-types/vec3")); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var temp1 = cc.v3(0, 0, 0); + var temp2 = cc.v3(0, 0, 0); + function _default(radiusTop, radiusBottom, height, opts) { + void 0 === radiusTop && (radiusTop = .5); + void 0 === radiusBottom && (radiusBottom = .5); + void 0 === height && (height = 2); + void 0 === opts && (opts = { + sides: 32, + heightSegments: 32, + arc: 2 * Math.PI + }); + var torsoHeight = height - radiusTop - radiusBottom; + var sides = opts.sides; + var heightSegments = opts.heightSegments; + var bottomProp = radiusBottom / height; + var torProp = torsoHeight / height; + var topProp = radiusTop / height; + var bottomSegments = Math.floor(heightSegments * bottomProp); + var topSegments = Math.floor(heightSegments * topProp); + var torSegments = Math.floor(heightSegments * torProp); + var topOffset = torsoHeight + radiusBottom - height / 2; + var torOffset = radiusBottom - height / 2; + var bottomOffset = radiusBottom - height / 2; + var arc = opts.arc; + var positions = []; + var normals = []; + var uvs = []; + var indices = []; + var maxRadius = Math.max(radiusTop, radiusBottom); + var minPos = cc.v3(-maxRadius, -height / 2, -maxRadius); + var maxPos = cc.v3(maxRadius, height / 2, maxRadius); + var boundingRadius = height / 2; + var index = 0; + var indexArray = []; + generateBottom(); + generateTorso(); + generateTop(); + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + function generateTorso() { + var slope = (radiusTop - radiusBottom) / torsoHeight; + for (var y = 0; y <= torSegments; y++) { + var indexRow = []; + var lat = y / torSegments; + var radius = lat * (radiusTop - radiusBottom) + radiusBottom; + for (var x = 0; x <= sides; ++x) { + var u = x / sides; + var v = lat * torProp + bottomProp; + var theta = u * arc - arc / 4; + var sinTheta = Math.sin(theta); + var cosTheta = Math.cos(theta); + positions.push(radius * sinTheta); + positions.push(lat * torsoHeight + torOffset); + positions.push(radius * cosTheta); + _vec["default"].normalize(temp1, _vec["default"].set(temp2, sinTheta, -slope, cosTheta)); + normals.push(temp1.x); + normals.push(temp1.y); + normals.push(temp1.z); + uvs.push(u, v); + indexRow.push(index); + ++index; + } + indexArray.push(indexRow); + } + for (var _y = 0; _y < torSegments; ++_y) for (var _x = 0; _x < sides; ++_x) { + var i1 = indexArray[_y][_x]; + var i2 = indexArray[_y + 1][_x]; + var i3 = indexArray[_y + 1][_x + 1]; + var i4 = indexArray[_y][_x + 1]; + indices.push(i1); + indices.push(i4); + indices.push(i2); + indices.push(i4); + indices.push(i3); + indices.push(i2); + } + } + function generateBottom() { + for (var lat = 0; lat <= bottomSegments; ++lat) { + var theta = lat * Math.PI / bottomSegments / 2; + var sinTheta = Math.sin(theta); + var cosTheta = -Math.cos(theta); + for (var lon = 0; lon <= sides; ++lon) { + var phi = 2 * lon * Math.PI / sides - Math.PI / 2; + var sinPhi = Math.sin(phi); + var cosPhi = Math.cos(phi); + var x = sinPhi * sinTheta; + var y = cosTheta; + var z = cosPhi * sinTheta; + var u = lon / sides; + var v = lat / heightSegments; + positions.push(x * radiusBottom, y * radiusBottom + bottomOffset, z * radiusBottom); + normals.push(x, y, z); + uvs.push(u, v); + if (lat < bottomSegments && lon < sides) { + var seg1 = sides + 1; + var a = seg1 * lat + lon; + var b = seg1 * (lat + 1) + lon; + var c = seg1 * (lat + 1) + lon + 1; + var d = seg1 * lat + lon + 1; + indices.push(a, d, b); + indices.push(d, c, b); + } + ++index; + } + } + } + function generateTop() { + for (var lat = 0; lat <= topSegments; ++lat) { + var theta = lat * Math.PI / topSegments / 2 + Math.PI / 2; + var sinTheta = Math.sin(theta); + var cosTheta = -Math.cos(theta); + for (var lon = 0; lon <= sides; ++lon) { + var phi = 2 * lon * Math.PI / sides - Math.PI / 2; + var sinPhi = Math.sin(phi); + var cosPhi = Math.cos(phi); + var x = sinPhi * sinTheta; + var y = cosTheta; + var z = cosPhi * sinTheta; + var u = lon / sides; + var v = lat / heightSegments + (1 - topProp); + positions.push(x * radiusTop, y * radiusTop + topOffset, z * radiusTop); + normals.push(x, y, z); + uvs.push(u, v); + if (lat < topSegments && lon < sides) { + var seg1 = sides + 1; + var a = seg1 * lat + lon + indexArray[torSegments][sides] + 1; + var b = seg1 * (lat + 1) + lon + indexArray[torSegments][sides] + 1; + var c = seg1 * (lat + 1) + lon + 1 + indexArray[torSegments][sides] + 1; + var d = seg1 * lat + lon + 1 + indexArray[torSegments][sides] + 1; + indices.push(a, d, b); + indices.push(d, c, b); + } + } + } + } + } + module.exports = exports["default"]; + }), { + "../../value-types/vec3": 349, + "./vertex-data": 63 + }], + 54: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _cylinder = _interopRequireDefault(require("./cylinder")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _default(radius, height, opts) { + void 0 === radius && (radius = .5); + void 0 === height && (height = 1); + void 0 === opts && (opts = { + radialSegments: 32, + heightSegments: 1, + capped: true, + arc: 2 * Math.PI + }); + return (0, _cylinder["default"])(0, radius, height, opts); + } + module.exports = exports["default"]; + }), { + "./cylinder": 55 + }], + 55: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vec = _interopRequireDefault(require("../../value-types/vec3")); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var temp1 = new _vec["default"](); + var temp2 = new _vec["default"](); + function _default(radiusTop, radiusBottom, height, opts) { + void 0 === radiusTop && (radiusTop = .5); + void 0 === radiusBottom && (radiusBottom = .5); + void 0 === height && (height = 2); + void 0 === opts && (opts = { + radialSegments: 32, + heightSegments: 1, + capped: true, + arc: 2 * Math.PI + }); + var halfHeight = .5 * height; + var radialSegments = opts.radialSegments; + var heightSegments = opts.heightSegments; + var capped = opts.capped; + var arc = opts.arc; + var cntCap = 0; + if (!capped) { + radiusTop > 0 && cntCap++; + radiusBottom > 0 && cntCap++; + } + var vertCount = (radialSegments + 1) * (heightSegments + 1); + capped && (vertCount += (radialSegments + 1) * cntCap + radialSegments * cntCap); + var indexCount = radialSegments * heightSegments * 2 * 3; + capped && (indexCount += radialSegments * cntCap * 3); + var indices = new Array(indexCount); + var positions = new Array(3 * vertCount); + var normals = new Array(3 * vertCount); + var uvs = new Array(2 * vertCount); + var maxRadius = Math.max(radiusTop, radiusBottom); + var minPos = new _vec["default"](-maxRadius, -halfHeight, -maxRadius); + var maxPos = new _vec["default"](maxRadius, halfHeight, maxRadius); + var boundingRadius = Math.sqrt(maxRadius * maxRadius + halfHeight * halfHeight); + var index = 0; + var indexOffset = 0; + generateTorso(); + if (capped) { + radiusBottom > 0 && generateCap(false); + radiusTop > 0 && generateCap(true); + } + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + function generateTorso() { + var indexArray = []; + var r = radiusTop - radiusBottom; + var slope = r * r / height * Math.sign(r); + for (var y = 0; y <= heightSegments; y++) { + var indexRow = []; + var v = y / heightSegments; + var radius = v * r + radiusBottom; + for (var x = 0; x <= radialSegments; ++x) { + var u = x / radialSegments; + var theta = u * arc; + var sinTheta = Math.sin(theta); + var cosTheta = Math.cos(theta); + positions[3 * index] = radius * sinTheta; + positions[3 * index + 1] = v * height - halfHeight; + positions[3 * index + 2] = radius * cosTheta; + _vec["default"].normalize(temp1, _vec["default"].set(temp2, sinTheta, -slope, cosTheta)); + normals[3 * index] = temp1.x; + normals[3 * index + 1] = temp1.y; + normals[3 * index + 2] = temp1.z; + uvs[2 * index] = 2 * (1 - u) % 1; + uvs[2 * index + 1] = v; + indexRow.push(index); + ++index; + } + indexArray.push(indexRow); + } + for (var _y = 0; _y < heightSegments; ++_y) for (var _x = 0; _x < radialSegments; ++_x) { + var i1 = indexArray[_y][_x]; + var i2 = indexArray[_y + 1][_x]; + var i3 = indexArray[_y + 1][_x + 1]; + var i4 = indexArray[_y][_x + 1]; + indices[indexOffset] = i1; + ++indexOffset; + indices[indexOffset] = i4; + ++indexOffset; + indices[indexOffset] = i2; + ++indexOffset; + indices[indexOffset] = i4; + ++indexOffset; + indices[indexOffset] = i3; + ++indexOffset; + indices[indexOffset] = i2; + ++indexOffset; + } + } + function generateCap(top) { + var centerIndexStart, centerIndexEnd; + var radius = top ? radiusTop : radiusBottom; + var sign = top ? 1 : -1; + centerIndexStart = index; + for (var x = 1; x <= radialSegments; ++x) { + positions[3 * index] = 0; + positions[3 * index + 1] = halfHeight * sign; + positions[3 * index + 2] = 0; + normals[3 * index] = 0; + normals[3 * index + 1] = sign; + normals[3 * index + 2] = 0; + uvs[2 * index] = .5; + uvs[2 * index + 1] = .5; + ++index; + } + centerIndexEnd = index; + for (var _x2 = 0; _x2 <= radialSegments; ++_x2) { + var u = _x2 / radialSegments; + var theta = u * arc; + var cosTheta = Math.cos(theta); + var sinTheta = Math.sin(theta); + positions[3 * index] = radius * sinTheta; + positions[3 * index + 1] = halfHeight * sign; + positions[3 * index + 2] = radius * cosTheta; + normals[3 * index] = 0; + normals[3 * index + 1] = sign; + normals[3 * index + 2] = 0; + uvs[2 * index] = .5 - .5 * sinTheta * sign; + uvs[2 * index + 1] = .5 + .5 * cosTheta; + ++index; + } + for (var _x3 = 0; _x3 < radialSegments; ++_x3) { + var c = centerIndexStart + _x3; + var i = centerIndexEnd + _x3; + if (top) { + indices[indexOffset] = i + 1; + ++indexOffset; + indices[indexOffset] = c; + ++indexOffset; + indices[indexOffset] = i; + ++indexOffset; + } else { + indices[indexOffset] = c; + ++indexOffset; + indices[indexOffset] = i + 1; + ++indexOffset; + indices[indexOffset] = i; + ++indexOffset; + } + } + } + } + module.exports = exports["default"]; + }), { + "../../value-types/vec3": 349, + "./vertex-data": 63 + }], + 56: [(function (require, module, exports) { + "use strict"; + var utils = _interopRequireWildcard(require("./utils")); + var _box = _interopRequireDefault(require("./box")); + var _cone = _interopRequireDefault(require("./cone")); + var _cylinder = _interopRequireDefault(require("./cylinder")); + var _plane = _interopRequireDefault(require("./plane")); + var _quad = _interopRequireDefault(require("./quad")); + var _sphere = _interopRequireDefault(require("./sphere")); + var _torus = _interopRequireDefault(require("./torus")); + var _capsule = _interopRequireDefault(require("./capsule")); + var _polyhedron = require("./polyhedron"); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _getRequireWildcardCache() { + if ("function" !== typeof WeakMap) return null; + var cache = new WeakMap(); + _getRequireWildcardCache = function _getRequireWildcardCache() { + return cache; + }; + return cache; + } + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) return obj; + if (null === obj || "object" !== typeof obj && "function" !== typeof obj) return { + default: obj + }; + var cache = _getRequireWildcardCache(); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + desc && (desc.get || desc.set) ? Object.defineProperty(newObj, key, desc) : newObj[key] = obj[key]; + } + newObj["default"] = obj; + cache && cache.set(obj, newObj); + return newObj; + } + cc.primitive = Object.assign({ + box: _box["default"], + cone: _cone["default"], + cylinder: _cylinder["default"], + plane: _plane["default"], + quad: _quad["default"], + sphere: _sphere["default"], + torus: _torus["default"], + capsule: _capsule["default"], + polyhedron: _polyhedron.polyhedron, + PolyhedronType: _polyhedron.PolyhedronType, + VertexData: _vertexData["default"] + }, utils); + }), { + "./box": 52, + "./capsule": 53, + "./cone": 54, + "./cylinder": 55, + "./plane": 57, + "./polyhedron": 58, + "./quad": 59, + "./sphere": 60, + "./torus": 61, + "./utils": 62, + "./vertex-data": 63 + }], + 57: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vec = _interopRequireDefault(require("../../value-types/vec3")); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var temp1 = new _vec["default"](); + var temp2 = new _vec["default"](); + var temp3 = new _vec["default"](); + var r = new _vec["default"](); + var c00 = new _vec["default"](); + var c10 = new _vec["default"](); + var c01 = new _vec["default"](); + function _default(width, length, opts) { + void 0 === width && (width = 10); + void 0 === length && (length = 10); + void 0 === opts && (opts = { + widthSegments: 10, + lengthSegments: 10 + }); + var uSegments = opts.widthSegments; + var vSegments = opts.lengthSegments; + var hw = .5 * width; + var hl = .5 * length; + var positions = []; + var normals = []; + var uvs = []; + var indices = []; + var minPos = new _vec["default"](-hw, 0, -hl); + var maxPos = new _vec["default"](hw, 0, hl); + var boundingRadius = Math.sqrt(width * width + length * length); + _vec["default"].set(c00, -hw, 0, hl); + _vec["default"].set(c10, hw, 0, hl); + _vec["default"].set(c01, -hw, 0, -hl); + for (var y = 0; y <= vSegments; y++) for (var x = 0; x <= uSegments; x++) { + var u = x / uSegments; + var v = y / vSegments; + _vec["default"].lerp(temp1, c00, c10, u); + _vec["default"].lerp(temp2, c00, c01, v); + _vec["default"].sub(temp3, temp2, c00); + _vec["default"].add(r, temp1, temp3); + positions.push(r.x, r.y, r.z); + normals.push(0, 1, 0); + uvs.push(u, v); + if (x < uSegments && y < vSegments) { + var useg1 = uSegments + 1; + var a = x + y * useg1; + var b = x + (y + 1) * useg1; + var c = x + 1 + (y + 1) * useg1; + var d = x + 1 + y * useg1; + indices.push(a, d, b); + indices.push(d, c, b); + } + } + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + } + module.exports = exports["default"]; + }), { + "../../value-types/vec3": 349, + "./vertex-data": 63 + }], + 58: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.polyhedron = exports.PolyhedronType = void 0; + var _utils = require("./utils"); + var _vertexData = _interopRequireDefault(require("./vertex-data")); + var _valueTypes = require("../../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var PolyhedronType = cc.Enum({ + Tetrahedron: 0, + Octahedron: 1, + Dodecahedron: 2, + Icosahedron: 3, + Rhombicuboctahedron: 4, + TriangularPrism: 5, + PentagonalPrism: 6, + HexagonalPrism: 7, + SquarePyramid: 8, + PentagonalPyramid: 9, + TriangularDipyramid: 10, + PentagonalDipyramid: 11, + ElongatedSquareDipyramid: 12, + ElongatedPentagonalDipyramid: 13, + ElongatedPentagonalCupola: 14 + }); + exports.PolyhedronType = PolyhedronType; + var polyhedra = []; + polyhedra[0] = { + vertex: [[0, 0, 1.732051], [1.632993, 0, -.5773503], [-.8164966, 1.414214, -.5773503], [-.8164966, -1.414214, -.5773503]], + face: [[0, 1, 2], [0, 2, 3], [0, 3, 1], [1, 3, 2]] + }; + polyhedra[1] = { + vertex: [[0, 0, 1.414214], [1.414214, 0, 0], [0, 1.414214, 0], [-1.414214, 0, 0], [0, -1.414214, 0], [0, 0, -1.414214]], + face: [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 1], [1, 4, 5], [1, 5, 2], [2, 5, 3], [3, 5, 4]] + }; + polyhedra[2] = { + vertex: [[0, 0, 1.070466], [.7136442, 0, .7978784], [-.3568221, .618034, .7978784], [-.3568221, -.618034, .7978784], [.7978784, .618034, .3568221], [.7978784, -.618034, .3568221], [-.9341724, .381966, .3568221], [.1362939, 1, .3568221], [.1362939, -1, .3568221], [-.9341724, -.381966, .3568221], [.9341724, .381966, -.3568221], [.9341724, -.381966, -.3568221], [-.7978784, .618034, -.3568221], [-.1362939, 1, -.3568221], [-.1362939, -1, -.3568221], [-.7978784, -.618034, -.3568221], [.3568221, .618034, -.7978784], [.3568221, -.618034, -.7978784], [-.7136442, 0, -.7978784], [0, 0, -1.070466]], + face: [[0, 1, 4, 7, 2], [0, 2, 6, 9, 3], [0, 3, 8, 5, 1], [1, 5, 11, 10, 4], [2, 7, 13, 12, 6], [3, 9, 15, 14, 8], [4, 10, 16, 13, 7], [5, 8, 14, 17, 11], [6, 12, 18, 15, 9], [10, 11, 17, 19, 16], [12, 13, 16, 19, 18], [14, 15, 18, 19, 17]] + }; + polyhedra[3] = { + vertex: [[0, 0, 1.175571], [1.051462, 0, .5257311], [.3249197, 1, .5257311], [-.8506508, .618034, .5257311], [-.8506508, -.618034, .5257311], [.3249197, -1, .5257311], [.8506508, .618034, -.5257311], [.8506508, -.618034, -.5257311], [-.3249197, 1, -.5257311], [-1.051462, 0, -.5257311], [-.3249197, -1, -.5257311], [0, 0, -1.175571]], + face: [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 5, 7], [1, 7, 6], [1, 6, 2], [2, 6, 8], [2, 8, 3], [3, 8, 9], [3, 9, 4], [4, 9, 10], [4, 10, 5], [5, 10, 7], [6, 7, 11], [6, 11, 8], [7, 10, 11], [8, 11, 9], [9, 11, 10]] + }; + polyhedra[4] = { + vertex: [[0, 0, 1.070722], [.7148135, 0, .7971752], [-.104682, .7071068, .7971752], [-.6841528, .2071068, .7971752], [-.104682, -.7071068, .7971752], [.6101315, .7071068, .5236279], [1.04156, .2071068, .1367736], [.6101315, -.7071068, .5236279], [-.3574067, 1, .1367736], [-.7888348, -.5, .5236279], [-.9368776, .5, .1367736], [-.3574067, -1, .1367736], [.3574067, 1, -.1367736], [.9368776, -.5, -.1367736], [.7888348, .5, -.5236279], [.3574067, -1, -.1367736], [-.6101315, .7071068, -.5236279], [-1.04156, -.2071068, -.1367736], [-.6101315, -.7071068, -.5236279], [.104682, .7071068, -.7971752], [.6841528, -.2071068, -.7971752], [.104682, -.7071068, -.7971752], [-.7148135, 0, -.7971752], [0, 0, -1.070722]], + face: [[0, 2, 3], [1, 6, 5], [4, 9, 11], [7, 15, 13], [8, 16, 10], [12, 14, 19], [17, 22, 18], [20, 21, 23], [0, 1, 5, 2], [0, 3, 9, 4], [0, 4, 7, 1], [1, 7, 13, 6], [2, 5, 12, 8], [2, 8, 10, 3], [3, 10, 17, 9], [4, 11, 15, 7], [5, 6, 14, 12], [6, 13, 20, 14], [8, 12, 19, 16], [9, 17, 18, 11], [10, 16, 22, 17], [11, 18, 21, 15], [13, 15, 21, 20], [14, 20, 23, 19], [16, 19, 23, 22], [18, 22, 23, 21]] + }; + polyhedra[5] = { + vertex: [[0, 0, 1.322876], [1.309307, 0, .1889822], [-.9819805, .8660254, .1889822], [.1636634, -1.299038, .1889822], [.3273268, .8660254, -.9449112], [-.8183171, -.4330127, -.9449112]], + face: [[0, 3, 1], [2, 4, 5], [0, 1, 4, 2], [0, 2, 5, 3], [1, 3, 5, 4]] + }; + polyhedra[6] = { + vertex: [[0, 0, 1.159953], [1.013464, 0, .5642542], [-.3501431, .9510565, .5642542], [-.7715208, -.6571639, .5642542], [.6633206, .9510565, -.03144481], [.8682979, -.6571639, -.3996071], [-1.121664, .2938926, -.03144481], [-.2348831, -1.063314, -.3996071], [.5181548, .2938926, -.9953061], [-.5850262, -.112257, -.9953061]], + face: [[0, 1, 4, 2], [0, 2, 6, 3], [1, 5, 8, 4], [3, 6, 9, 7], [5, 7, 9, 8], [0, 3, 7, 5, 1], [2, 4, 8, 9, 6]] + }; + polyhedra[7] = { + vertex: [[0, 0, 1.118034], [.8944272, 0, .6708204], [-.2236068, .8660254, .6708204], [-.7826238, -.4330127, .6708204], [.6708204, .8660254, .2236068], [1.006231, -.4330127, -.2236068], [-1.006231, .4330127, .2236068], [-.6708204, -.8660254, -.2236068], [.7826238, .4330127, -.6708204], [.2236068, -.8660254, -.6708204], [-.8944272, 0, -.6708204], [0, 0, -1.118034]], + face: [[0, 1, 4, 2], [0, 2, 6, 3], [1, 5, 8, 4], [3, 6, 10, 7], [5, 9, 11, 8], [7, 10, 11, 9], [0, 3, 7, 9, 5, 1], [2, 4, 8, 11, 10, 6]] + }; + polyhedra[8] = { + vertex: [[-.729665, .670121, .319155], [-.655235, -.29213, -.754096], [-.093922, -.607123, .537818], [.702196, .595691, .485187], [.776626, -.36656, -.588064]], + face: [[1, 4, 2], [0, 1, 2], [3, 0, 2], [4, 3, 2], [4, 1, 0, 3]] + }; + polyhedra[9] = { + vertex: [[-.868849, -.100041, .61257], [-.329458, .976099, .28078], [-.26629, -.013796, -.477654], [-.13392, -1.034115, .229829], [.738834, .707117, -.307018], [.859683, -.535264, -.338508]], + face: [[3, 0, 2], [5, 3, 2], [4, 5, 2], [1, 4, 2], [0, 1, 2], [0, 3, 5, 4, 1]] + }; + polyhedra[10] = { + vertex: [[-.610389, .243975, .531213], [-.187812, -.48795, -.664016], [-.187812, .9759, -.664016], [.187812, -.9759, .664016], [.798201, .243975, .132803]], + face: [[1, 3, 0], [3, 4, 0], [3, 1, 4], [0, 2, 1], [0, 4, 2], [2, 4, 1]] + }; + polyhedra[11] = { + vertex: [[-1.028778, .392027, -.048786], [-.640503, -.646161, .621837], [-.125162, -.395663, -.540059], [.004683, .888447, -.651988], [.125161, .395663, .540059], [.632925, -.791376, .433102], [1.031672, .157063, -.354165]], + face: [[3, 2, 0], [2, 1, 0], [2, 5, 1], [0, 4, 3], [0, 1, 4], [4, 1, 5], [2, 3, 6], [3, 4, 6], [5, 2, 6], [4, 5, 6]] + }; + polyhedra[12] = { + vertex: [[-.669867, .334933, -.529576], [-.669867, .334933, .529577], [-.4043, 1.212901, 0], [-.334933, -.669867, -.529576], [-.334933, -.669867, .529577], [.334933, .669867, -.529576], [.334933, .669867, .529577], [.4043, -1.212901, 0], [.669867, -.334933, -.529576], [.669867, -.334933, .529577]], + face: [[8, 9, 7], [6, 5, 2], [3, 8, 7], [5, 0, 2], [4, 3, 7], [0, 1, 2], [9, 4, 7], [1, 6, 2], [9, 8, 5, 6], [8, 3, 0, 5], [3, 4, 1, 0], [4, 9, 6, 1]] + }; + polyhedra[13] = { + vertex: [[-.931836, .219976, -.264632], [-.636706, .318353, .692816], [-.613483, -.735083, -.264632], [-.326545, .979634, 0], [-.318353, -.636706, .692816], [-.159176, .477529, -.856368], [.159176, -.477529, -.856368], [.318353, .636706, .692816], [.326545, -.979634, 0], [.613482, .735082, -.264632], [.636706, -.318353, .692816], [.931835, -.219977, -.264632]], + face: [[11, 10, 8], [7, 9, 3], [6, 11, 8], [9, 5, 3], [2, 6, 8], [5, 0, 3], [4, 2, 8], [0, 1, 3], [10, 4, 8], [1, 7, 3], [10, 11, 9, 7], [11, 6, 5, 9], [6, 2, 0, 5], [2, 4, 1, 0], [4, 10, 7, 1]] + }; + polyhedra[14] = { + vertex: [[-.93465, .300459, -.271185], [-.838689, -.260219, -.516017], [-.711319, .717591, .128359], [-.710334, -.156922, .080946], [-.599799, .556003, -.725148], [-.503838, -.004675, -.969981], [-.487004, .26021, .48049], [-.460089, -.750282, -.512622], [-.376468, .973135, -.325605], [-.331735, -.646985, .084342], [-.254001, .831847, .530001], [-.125239, -.494738, -.966586], [.029622, .027949, .730817], [.056536, -.982543, -.262295], [.08085, 1.087391, .076037], [.125583, -.532729, .485984], [.262625, .599586, .780328], [.391387, -.726999, -.716259], [.513854, -.868287, .139347], [.597475, .85513, .326364], [.641224, .109523, .783723], [.737185, -.451155, .538891], [.848705, -.612742, -.314616], [.976075, .365067, .32976], [1.072036, -.19561, .084927]], + face: [[15, 18, 21], [12, 20, 16], [6, 10, 2], [3, 0, 1], [9, 7, 13], [2, 8, 4, 0], [0, 4, 5, 1], [1, 5, 11, 7], [7, 11, 17, 13], [13, 17, 22, 18], [18, 22, 24, 21], [21, 24, 23, 20], [20, 23, 19, 16], [16, 19, 14, 10], [10, 14, 8, 2], [15, 9, 13, 18], [12, 15, 21, 20], [6, 12, 16, 10], [3, 6, 2, 0], [9, 3, 1, 7], [9, 15, 12, 6, 3], [22, 17, 11, 5, 4, 8, 14, 19, 23, 24]] + }; + var polyhedron = function polyhedron(type, size, opts) { + void 0 === size && (size = 1); + void 0 === opts && (opts = { + sizeX: 0, + sizeY: 0, + sizeZ: 0 + }); + type = type && (type < 0 || type >= polyhedra.length) ? 0 : type || 0; + var sizeX = opts.sizeX || size; + var sizeY = opts.sizeY || size; + var sizeZ = opts.sizeZ || size; + var data = polyhedra[type]; + var nbfaces = data.face.length; + var positions = []; + var indices = []; + var normals = []; + var uvs = []; + var minPos = new _valueTypes.Vec3(Infinity, Infinity, Infinity); + var maxPos = new _valueTypes.Vec3(-Infinity, -Infinity, -Infinity); + for (var i = 0; i < data.vertex.length; i++) { + var x = data.vertex[i][0] * sizeX; + var y = data.vertex[i][1] * sizeY; + var z = data.vertex[i][2] * sizeZ; + minPos.x = Math.min(minPos.x, x); + minPos.y = Math.min(minPos.y, y); + minPos.z = Math.min(minPos.z, z); + maxPos.x = Math.max(maxPos.x, x); + maxPos.y = Math.max(maxPos.y, y); + maxPos.z = Math.max(maxPos.z, z); + positions.push(x, y, z); + uvs.push(0, 0); + } + for (var f = 0; f < nbfaces; f++) for (var _i = 0; _i < data.face[f].length - 2; _i++) indices.push(data.face[f][0], data.face[f][_i + 2], data.face[f][_i + 1]); + (0, _utils.calcNormals)(positions, indices, normals); + var boundingRadius = Math.sqrt(Math.pow(maxPos.x - minPos.x, 2), Math.pow(maxPos.y - minPos.y, 2), Math.pow(maxPos.z - minPos.z, 2)); + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + }; + exports.polyhedron = polyhedron; + }), { + "../../value-types": 339, + "./utils": 62, + "./vertex-data": 63 + }], + 59: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vertexData = _interopRequireDefault(require("./vertex-data")); + var _valueTypes = require("../../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var positions = [-.5, -.5, 0, -.5, .5, 0, .5, .5, 0, .5, -.5, 0]; + var normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]; + var uvs = [0, 0, 0, 1, 1, 1, 1, 0]; + var indices = [0, 3, 1, 3, 2, 1]; + var minPos = new _valueTypes.Vec3(-.5, -.5, 0); + var maxPos = new _valueTypes.Vec3(.5, .5, 0); + var boundingRadius = Math.sqrt(.5); + function _default() { + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + } + module.exports = exports["default"]; + }), { + "../../value-types": 339, + "./vertex-data": 63 + }], + 60: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vertexData = _interopRequireDefault(require("./vertex-data")); + var _valueTypes = require("../../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _default(radius, opts) { + void 0 === radius && (radius = .5); + void 0 === opts && (opts = { + segments: 32 + }); + var segments = opts.segments; + var positions = []; + var normals = []; + var uvs = []; + var indices = []; + var minPos = new _valueTypes.Vec3(-radius, -radius, -radius); + var maxPos = new _valueTypes.Vec3(radius, radius, radius); + var boundingRadius = radius; + for (var lat = 0; lat <= segments; ++lat) { + var theta = lat * Math.PI / segments; + var sinTheta = Math.sin(theta); + var cosTheta = -Math.cos(theta); + for (var lon = 0; lon <= segments; ++lon) { + var phi = 2 * lon * Math.PI / segments - Math.PI / 2; + var sinPhi = Math.sin(phi); + var cosPhi = Math.cos(phi); + var x = sinPhi * sinTheta; + var y = cosTheta; + var z = cosPhi * sinTheta; + var u = lon / segments; + var v = lat / segments; + positions.push(x * radius, y * radius, z * radius); + normals.push(x, y, z); + uvs.push(u, v); + if (lat < segments && lon < segments) { + var seg1 = segments + 1; + var a = seg1 * lat + lon; + var b = seg1 * (lat + 1) + lon; + var c = seg1 * (lat + 1) + lon + 1; + var d = seg1 * lat + lon + 1; + indices.push(a, d, b); + indices.push(d, c, b); + } + } + } + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + } + module.exports = exports["default"]; + }), { + "../../value-types": 339, + "./vertex-data": 63 + }], + 61: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var _vertexData = _interopRequireDefault(require("./vertex-data")); + var _valueTypes = require("../../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _default(radius, tube, opts) { + void 0 === radius && (radius = .4); + void 0 === tube && (tube = .1); + void 0 === opts && (opts = { + radialSegments: 32, + tubularSegments: 32, + arc: 2 * Math.PI + }); + var radialSegments = opts.radialSegments; + var tubularSegments = opts.tubularSegments; + var arc = opts.arc; + var positions = []; + var normals = []; + var uvs = []; + var indices = []; + var minPos = new _valueTypes.Vec3(-radius - tube, -tube, -radius - tube); + var maxPos = new _valueTypes.Vec3(radius + tube, tube, radius + tube); + var boundingRadius = radius + tube; + for (var j = 0; j <= radialSegments; j++) for (var i = 0; i <= tubularSegments; i++) { + var u = i / tubularSegments; + var v = j / radialSegments; + var u1 = u * arc; + var v1 = v * Math.PI * 2; + var x = (radius + tube * Math.cos(v1)) * Math.sin(u1); + var y = tube * Math.sin(v1); + var z = (radius + tube * Math.cos(v1)) * Math.cos(u1); + var nx = Math.sin(u1) * Math.cos(v1); + var ny = Math.sin(v1); + var nz = Math.cos(u1) * Math.cos(v1); + positions.push(x, y, z); + normals.push(nx, ny, nz); + uvs.push(u, v); + if (i < tubularSegments && j < radialSegments) { + var seg1 = tubularSegments + 1; + var a = seg1 * j + i; + var b = seg1 * (j + 1) + i; + var c = seg1 * (j + 1) + i + 1; + var d = seg1 * j + i + 1; + indices.push(a, d, b); + indices.push(d, c, b); + } + } + return new _vertexData["default"](positions, normals, uvs, indices, minPos, maxPos, boundingRadius); + } + module.exports = exports["default"]; + }), { + "../../value-types": 339, + "./vertex-data": 63 + }], + 62: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.wireframe = wireframe; + exports.invWinding = invWinding; + exports.toWavefrontOBJ = toWavefrontOBJ; + exports.normals = normals; + exports.calcNormals = calcNormals; + var _vec = _interopRequireDefault(require("../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function wireframe(indices) { + var offsets = [[0, 1], [1, 2], [2, 0]]; + var lines = []; + var lineIDs = {}; + for (var i = 0; i < indices.length; i += 3) for (var k = 0; k < 3; ++k) { + var i1 = indices[i + offsets[k][0]]; + var i2 = indices[i + offsets[k][1]]; + var id = i1 > i2 ? i2 << 16 | i1 : i1 << 16 | i2; + if (void 0 === lineIDs[id]) { + lineIDs[id] = 0; + lines.push(i1, i2); + } + } + return lines; + } + function invWinding(indices) { + var newIB = []; + for (var i = 0; i < indices.length; i += 3) newIB.push(indices[i], indices[i + 2], indices[i + 1]); + return newIB; + } + function toWavefrontOBJ(primitive, scale) { + void 0 === scale && (scale = 1); + var v = primitive.positions, t = primitive.uvs, n = primitive.normals, IB = primitive.indices; + var V = function V(i) { + return IB[i] + 1 + "/" + (IB[i] + 1) + "/" + (IB[i] + 1); + }; + var content = ""; + for (var i = 0; i < v.length; i += 3) content += "v " + v[i] * scale + " " + v[i + 1] * scale + " " + v[i + 2] * scale + "\n"; + for (var _i = 0; _i < t.length; _i += 2) content += "vt " + t[_i] + " " + t[_i + 1] + "\n"; + for (var _i2 = 0; _i2 < n.length; _i2 += 3) content += "vn " + n[_i2] + " " + n[_i2 + 1] + " " + n[_i2 + 2] + "\n"; + for (var _i3 = 0; _i3 < IB.length; _i3 += 3) content += "f " + V(_i3) + " " + V(_i3 + 1) + " " + V(_i3 + 2) + "\n"; + return content; + } + function normals(positions, normals, length) { + void 0 === length && (length = 1); + var verts = new Array(2 * positions.length); + for (var i = 0; i < positions.length / 3; ++i) { + var i3 = 3 * i; + var i6 = 6 * i; + verts[i6 + 0] = positions[i3 + 0]; + verts[i6 + 1] = positions[i3 + 1]; + verts[i6 + 2] = positions[i3 + 2]; + verts[i6 + 3] = positions[i3 + 0] + normals[i3 + 0] * length; + verts[i6 + 4] = positions[i3 + 1] + normals[i3 + 1] * length; + verts[i6 + 5] = positions[i3 + 2] + normals[i3 + 2] * length; + } + return verts; + } + function fromArray(out, a, offset) { + out.x = a[offset]; + out.y = a[offset + 1]; + out.z = a[offset + 2]; + } + function calcNormals(positions, indices, normals) { + normals = normals || new Array(positions.length); + for (var i = 0, l = normals.length; i < l; i++) normals[i] = 0; + var vA, vB, vC; + var pA = cc.v3(), pB = cc.v3(), pC = cc.v3(); + var cb = cc.v3(), ab = cc.v3(); + for (var _i4 = 0, il = indices.length; _i4 < il; _i4 += 3) { + vA = 3 * indices[_i4 + 0]; + vB = 3 * indices[_i4 + 1]; + vC = 3 * indices[_i4 + 2]; + fromArray(pA, positions, vA); + fromArray(pB, positions, vB); + fromArray(pC, positions, vC); + _vec["default"].subtract(cb, pC, pB); + _vec["default"].subtract(ab, pA, pB); + _vec["default"].cross(cb, cb, ab); + normals[vA] += cb.x; + normals[vA + 1] += cb.y; + normals[vA + 2] += cb.z; + normals[vB] += cb.x; + normals[vB + 1] += cb.y; + normals[vB + 2] += cb.z; + normals[vC] += cb.x; + normals[vC + 1] += cb.y; + normals[vC + 2] += cb.z; + } + var tempNormal = cc.v3(); + for (var _i5 = 0, _l = normals.length; _i5 < _l; _i5 += 3) { + tempNormal.x = normals[_i5]; + tempNormal.y = normals[_i5 + 1]; + tempNormal.z = normals[_i5 + 2]; + tempNormal.normalizeSelf(); + normals[_i5] = tempNormal.x; + normals[_i5 + 1] = tempNormal.y; + normals[_i5 + 2] = tempNormal.z; + } + return normals; + } + }), { + "../../value-types/vec3": 349 + }], + 63: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var VertexData = function VertexData(positions, normals, uvs, indices, minPos, maxPos, boundingRadius) { + this.positions = void 0; + this.normals = void 0; + this.uvs = void 0; + this.indices = void 0; + this.minPos = void 0; + this.maxPos = void 0; + this.boundingRadius = void 0; + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.indices = indices; + this.minPos = minPos; + this.maxPos = maxPos; + this.boundingRadius = boundingRadius; + }; + exports["default"] = VertexData; + module.exports = exports["default"]; + }), {}], + 64: [(function (require, module, exports) { + "use strict"; + var _require = require("../../../animation/animation-curves"), DynamicAnimCurve = _require.DynamicAnimCurve, quickFindIndex = _require.quickFindIndex; + var JointMatrixCurve = cc.Class({ + name: "cc.JointMatrixCurve", + extends: DynamicAnimCurve, + _findFrameIndex: quickFindIndex, + sample: function sample(time, ratio) { + var ratios = this.ratios; + var index = this._findFrameIndex(ratios, ratio); + index < -1 && (index = ~index - 1); + var pairs = this.pairs; + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i]; + pair.target._jointMatrix = pair.values[index]; + } + } + }); + module.exports = JointMatrixCurve; + }), { + "../../../animation/animation-curves": 12 + }], + 65: [(function (require, module, exports) { + "use strict"; + var Skeleton = cc.Class({ + name: "cc.Skeleton", + extends: cc.Asset, + ctor: function ctor() { + this.loaded = false; + this._bindposes = []; + this._uniqueBindPoses = []; + this._jointPaths = []; + }, + properties: { + _model: cc.Model, + _jointIndices: [], + _skinIndex: -1, + jointPaths: { + get: function get() { + return this._jointPaths; + } + }, + bindposes: { + get: function get() { + return this._bindposes; + } + }, + uniqueBindPoses: { + get: function get() { + return this._uniqueBindPoses; + } + }, + model: { + get: function get() { + return this._model; + } + } + }, + onLoad: function onLoad() { + var nodes = this._model.nodes; + var jointIndices = this._jointIndices; + var jointPaths = this._jointPaths; + var bindposes = this._bindposes; + var uniqueBindPoses = this._uniqueBindPoses; + for (var i = 0; i < jointIndices.length; i++) { + var node = nodes[jointIndices[i]]; + jointPaths[i] = node.path; + node.uniqueBindPose ? bindposes[i] = uniqueBindPoses[i] = node.uniqueBindPose : bindposes[i] = node.bindpose[this._skinIndex]; + } + } + }); + cc.Skeleton = module.exports = Skeleton; + }), {}], + 66: [(function (require, module, exports) { + "use strict"; + var Animation = require("../../components/CCAnimation"); + var Model = require("../CCModel"); + var SkeletonAnimationClip = require("./CCSkeletonAnimationClip"); + var SkeletonAnimation = cc.Class({ + name: "cc.SkeletonAnimation", + extends: Animation, + editor: false, + properties: { + _model: { + default: null, + type: Model + }, + _defaultClip: { + override: true, + default: null, + type: SkeletonAnimationClip + }, + _clips: { + override: true, + default: [], + type: [SkeletonAnimationClip], + visible: true + }, + defaultClip: { + override: true, + get: function get() { + return this._defaultClip; + }, + set: function set(v) { + this._defaultClip = v; + }, + type: SkeletonAnimationClip + }, + model: { + get: function get() { + return this._model; + }, + set: function set(val) { + this._model = val; + this._updateClipModel(); + }, + type: Model + } + }, + __preload: function __preload() { + this._updateClipModel(); + }, + _updateClipModel: function _updateClipModel() { + this._defaultClip && (this._defaultClip._model = this._model); + var clips = this._clips; + for (var i = 0; i < clips.length; i++) clips[i]._model = this._model; + }, + addClip: function addClip(clip, newName) { + clip._model = this._model; + return Animation.prototype.addClip.call(this, clip, newName); + }, + searchClips: false + }); + cc.SkeletonAnimation = module.exports = SkeletonAnimation; + }), { + "../../components/CCAnimation": 144, + "../CCModel": 28, + "./CCSkeletonAnimationClip": 67, + "fire-path": void 0 + }], + 67: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var AnimationClip = require("../../../animation/animation-clip"); + var JointMatrixCurve = require("./CCJointMatrixCurve"); + function maxtrixToArray(matrix) { + var data = new Float32Array(16); + data.set(matrix.m); + return data; + } + var SkeletonAnimationClip = cc.Class({ + name: "cc.SkeletonAnimationClip", + extends: AnimationClip, + properties: { + _nativeAsset: { + override: true, + get: function get() { + return this._buffer; + }, + set: function set(bin) { + var buffer = ArrayBuffer.isView(bin) ? bin.buffer : bin; + this._buffer = new Float32Array(buffer || bin, 0, buffer.byteLength / 4); + } + }, + description: { + default: null, + type: Object + }, + curveData: { + visible: false, + override: true, + get: function get() { + return this._curveData || {}; + }, + set: function set() { } + } + }, + statics: { + preventDeferredLoadDependents: true + }, + _init: function _init() { + if (this._curveData) return this._curveData; + this._curveData = {}; + this._generateCommonCurve(); + this._model.precomputeJointMatrix && this._generateJointMatrixCurve(); + return this._curveData; + }, + _generateCommonCurve: function _generateCommonCurve() { + var buffer = this._buffer; + var description = this.description; + var offset = 0; + function getValue() { + return buffer[offset++]; + } + this._curveData.paths || (this._curveData.paths = {}); + var paths = this._curveData.paths; + for (var path in description) { + var des = description[path]; + var curves = {}; + paths[path] = { + props: curves + }; + for (var property in des) { + var frames = []; + var frameCount = des[property].frameCount; + offset = des[property].offset; + for (var i = 0; i < frameCount; i++) { + var frame = getValue(); + var value = void 0; + "position" === property || "scale" === property ? value = cc.v3(getValue(), getValue(), getValue()) : "quat" === property && (value = cc.quat(getValue(), getValue(), getValue(), getValue())); + frames.push({ + frame: frame, + value: value + }); + } + curves[property] = frames; + } + } + }, + _generateJointMatrixCurve: function _generateJointMatrixCurve() { + var rootNode = this._model.rootNode; + var curveData = this._curveData; + var paths = curveData.paths; + var newCurveData = { + ratios: [], + jointMatrixMap: {} + }; + var jointMatrixMap = newCurveData.jointMatrixMap; + function walk(node, time, pm) { + var matrix; + var EPSILON = 1e-4; + var path = paths[node.path]; + if (node !== rootNode && path) { + var props = path.props; + for (var prop in props) { + var frames = props[prop]; + for (var i = 0; i < frames.length; i++) { + var end = frames[i]; + if (Math.abs(end.frame - time) < EPSILON) { + node[prop].set(end.value); + break; + } + if (end.frame > time) { + var start = frames[i - 1]; + var ratio = (time - start.frame) / (end.frame - start.frame); + start.value.lerp(end.value, ratio, node[prop]); + break; + } + } + } + matrix = cc.mat4(); + _mat["default"].fromRTS(matrix, node.quat, node.position, node.scale); + pm && _mat["default"].mul(matrix, pm, matrix); + props._jointMatrix || (props._jointMatrix = []); + var bindWorldMatrix; + if (node.uniqueBindPose) { + bindWorldMatrix = cc.mat4(); + _mat["default"].mul(bindWorldMatrix, matrix, node.uniqueBindPose); + } + jointMatrixMap[node.path] || (jointMatrixMap[node.path] = []); + bindWorldMatrix ? jointMatrixMap[node.path].push(maxtrixToArray(bindWorldMatrix)) : jointMatrixMap[node.path].push(matrix); + } + var children = node.children; + for (var name in children) { + var child = children[name]; + walk(child, time, matrix); + } + } + var time = 0; + var duration = this.duration; + var step = 1 / this.sample; + while (time < duration) { + newCurveData.ratios.push(time / duration); + walk(rootNode, time); + time += step; + } + this._curveData = newCurveData; + }, + _createJointMatrixCurve: function _createJointMatrixCurve(state, root) { + var curve = new JointMatrixCurve(); + curve.ratios = this.curveData.ratios; + curve.pairs = []; + var jointMatrixMap = this.curveData.jointMatrixMap; + for (var path in jointMatrixMap) { + var target = cc.find(path, root); + if (!target) continue; + curve.pairs.push({ + target: target, + values: jointMatrixMap[path] + }); + } + return [curve]; + }, + createCurves: function createCurves(state, root) { + if (!this._model) { + cc.warn("Skeleton Animation Clip [" + this.name + "] Can not find model"); + return []; + } + this._init(); + return this._model.precomputeJointMatrix ? this._createJointMatrixCurve(state, root) : AnimationClip.prototype.createCurves.call(this, state, root); + } + }); + cc.SkeletonAnimationClip = module.exports = SkeletonAnimationClip; + }), { + "../../../animation/animation-clip": 11, + "../../value-types/mat4": 341, + "./CCJointMatrixCurve": 64 + }], + 68: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Skeleton = require("./CCSkeleton"); + var MeshRenderer = require("../../mesh/CCMeshRenderer"); + var RenderFlow = require("../../renderer/render-flow"); + var enums = require("../../../renderer/enums"); + var _m4_tmp = cc.mat4(); + var _m4_tmp2 = cc.mat4(); + var SkinnedMeshRenderer = cc.Class({ + name: "cc.SkinnedMeshRenderer", + extends: MeshRenderer, + editor: false, + ctor: function ctor() { + this._jointsData = this._jointsFloat32Data = null; + this._jointsTexture = null; + this._joints = []; + this._dummyNode = new cc.Node(); + this._jointsTextureOptions = null; + this._usingRGBA8Texture = false; + }, + properties: { + _skeleton: Skeleton, + _rootBone: cc.Node, + skeleton: { + get: function get() { + return this._skeleton; + }, + set: function set(val) { + this._skeleton = val; + this._init(); + }, + type: Skeleton + }, + rootBone: { + get: function get() { + return this._rootBone; + }, + set: function set(val) { + this._rootBone = val; + this._init(); + }, + type: cc.Node + }, + enableAutoBatch: { + get: function get() { + return false; + }, + visible: false, + override: true + } + }, + __preload: function __preload() { + this._super(); + this._init(); + }, + _init: function _init() { + this._model = this._skeleton && this._skeleton.model; + this._calFunc = null; + this._initJoints(); + this._initJointsTexture(); + this._initCalcFunc(); + this._updateRenderNode(); + }, + _calcWorldMatrixToRoot: function _calcWorldMatrixToRoot(joint) { + var worldMatrixToRoot = joint._worldMatrixToRoot; + if (worldMatrixToRoot) return; + joint._worldMatrixToRoot = worldMatrixToRoot = cc.mat4(); + joint.getLocalMatrix(worldMatrixToRoot); + var parent = joint.parent; + if (parent !== this.rootBone) { + parent._worldMatrixToRoot || this._calcWorldMatrixToRoot(parent); + _mat["default"].mul(worldMatrixToRoot, parent._worldMatrixToRoot, worldMatrixToRoot); + } + }, + _validateRender: function _validateRender() { + if (!this._jointsData) { + this.disableRender(); + return; + } + this._super(); + }, + _initJoints: function _initJoints() { + var joints = this._joints; + joints.length = 0; + if (!this.skeleton || !this.rootBone) return; + var useJointMatrix = this._useJointMatrix(); + var jointPaths = this.skeleton.jointPaths; + var rootBone = this.rootBone; + for (var i = 0; i < jointPaths.length; i++) { + var joint = cc.find(jointPaths[i], rootBone); + joint || cc.warn("Can not find joint in root bone [%s] with path [%s]", rootBone.name, jointPaths[i]); + if (useJointMatrix) { + joint._renderFlag &= ~RenderFlow.FLAG_CHILDREN; + this._calcWorldMatrixToRoot(joint); + } + joints.push(joint); + } + if (useJointMatrix) { + var uniqueBindPoses = this.skeleton.uniqueBindPoses; + for (var _i = 0; _i < jointPaths.length; _i++) { + var _joint = joints[_i]; + if (uniqueBindPoses[_i]) { + _mat["default"].mul(_m4_tmp, _joint._worldMatrixToRoot, uniqueBindPoses[_i]); + _joint._jointMatrix = _mat["default"].toArray([], _m4_tmp); + } else _joint._jointMatrix = _joint._worldMatrixToRoot; + } + } + }, + _initJointsTexture: function _initJointsTexture() { + if (!this._skeleton) return; + var jointCount = this._joints.length; + var inited = false; + if (jointCount <= cc.sys.getMaxJointMatrixSize()) { + inited = true; + this._jointsData = this._jointsFloat32Data = new Float32Array(16 * jointCount); + } + if (!inited) { + var SUPPORT_FLOAT_TEXTURE = !!cc.sys.glExtension("OES_texture_float"); + var size; + size = jointCount > 256 ? 64 : jointCount > 64 ? 32 : jointCount > 16 ? 16 : 8; + this._jointsData = this._jointsFloat32Data = new Float32Array(size * size * 4); + var pixelFormat = cc.Texture2D.PixelFormat.RGBA32F, width = size, height = size; + if (!SUPPORT_FLOAT_TEXTURE) { + this._jointsData = new Uint8Array(this._jointsFloat32Data.buffer); + pixelFormat = cc.Texture2D.PixelFormat.RGBA8888; + width *= 4; + this._usingRGBA8Texture = true; + cc.warn("SkinnedMeshRenderer [" + this.node.name + "] has too many joints [" + jointCount + "] and device do not support float32 texture, fallback to use RGBA8888 texture, which is much slower."); + } + var texture = this._jointsTexture || new cc.Texture2D(); + var NEAREST = cc.Texture2D.Filter.NEAREST; + texture.setFilters(NEAREST, NEAREST); + texture.initWithData(this._jointsData, pixelFormat, width, height); + this._jointsTexture = texture; + this._jointsTextureOptions = { + format: pixelFormat, + width: texture.width, + height: texture.height, + images: [] + }; + } + this._updateMaterial(); + }, + _updateMaterial: function _updateMaterial() { + MeshRenderer.prototype._updateMaterial.call(this); + var materials = this.getMaterials(); + for (var i = 0; i < materials.length; i++) { + var material = materials[i]; + if (this._jointsTexture) { + material.setProperty("jointsTexture", this._jointsTexture); + material.setProperty("jointsTextureSize", new Float32Array([this._jointsTexture.width, this._jointsTexture.height])); + material.define("CC_JOINTS_TEXTURE_FLOAT32", !!cc.sys.glExtension("OES_texture_float")); + material.define("CC_USE_JOINTS_TEXTRUE", true); + } else { + this._jointsFloat32Data && material.setProperty("jointMatrices", this._jointsFloat32Data, void 0, true); + material.define("CC_USE_JOINTS_TEXTRUE", false); + } + material.define("CC_USE_SKINNING", true); + } + }, + _setJointsDataWithArray: function _setJointsDataWithArray(iMatrix, matrixArray) { + var data = this._jointsFloat32Data; + data.set(matrixArray, 16 * iMatrix); + }, + _setJointsDataWithMatrix: function _setJointsDataWithMatrix(iMatrix, matrix) { + this._jointsFloat32Data.set(matrix.m, 16 * iMatrix); + }, + _commitJointsData: function _commitJointsData() { + if (this._jointsTexture) { + this._jointsTextureOptions.images[0] = this._jointsData; + this._jointsTexture.update(this._jointsTextureOptions); + } + }, + _useJointMatrix: function _useJointMatrix() { + return this._model && this._model.precomputeJointMatrix; + }, + _updateRenderNode: function _updateRenderNode() { + this._useJointMatrix() || this._usingRGBA8Texture ? this._assembler.setRenderNode(this.rootBone) : this._assembler.setRenderNode(this._dummyNode); + }, + _initCalcFunc: function _initCalcFunc() { + this._useJointMatrix() ? this._calFunc = this._calJointMatrix : this._usingRGBA8Texture ? this._calFunc = this._calRGBA8WorldMatrix : this._calFunc = this._calWorldMatrix; + }, + _calJointMatrix: function _calJointMatrix() { + var joints = this._joints; + var bindposes = this.skeleton.bindposes; + var uniqueBindPoses = this.skeleton.uniqueBindPoses; + for (var i = 0; i < joints.length; ++i) { + var joint = joints[i]; + var jointMatrix = joint._jointMatrix; + if (uniqueBindPoses[i]) this._setJointsDataWithArray(i, jointMatrix); else { + _mat["default"].multiply(_m4_tmp, jointMatrix, bindposes[i]); + this._setJointsDataWithMatrix(i, _m4_tmp); + } + } + }, + _calRGBA8WorldMatrix: function _calRGBA8WorldMatrix() { + var joints = this._joints; + var bindposes = this.skeleton.bindposes; + this.rootBone._updateWorldMatrix(); + var rootMatrix = this.rootBone._worldMatrix; + var invRootMat = _mat["default"].invert(_m4_tmp2, rootMatrix); + for (var i = 0; i < joints.length; ++i) { + var joint = joints[i]; + joint._updateWorldMatrix(); + _mat["default"].multiply(_m4_tmp, invRootMat, joint._worldMatrix); + _mat["default"].multiply(_m4_tmp, _m4_tmp, bindposes[i]); + this._setJointsDataWithMatrix(i, _m4_tmp); + } + }, + _calWorldMatrix: function _calWorldMatrix() { + var joints = this._joints; + var bindposes = this.skeleton.bindposes; + for (var i = 0; i < joints.length; ++i) { + var joint = joints[i]; + joint._updateWorldMatrix(); + _mat["default"].multiply(_m4_tmp, joint._worldMatrix, bindposes[i]); + this._setJointsDataWithMatrix(i, _m4_tmp); + } + }, + calcJointMatrix: function calcJointMatrix() { + if (!this.skeleton || !this.rootBone) return; + this._calFunc.call(this); + this._commitJointsData(); + } + }); + cc.SkinnedMeshRenderer = module.exports = SkinnedMeshRenderer; + }), { + "../../../renderer/enums": 367, + "../../mesh/CCMeshRenderer": 208, + "../../renderer/render-flow": 272, + "../../value-types/mat4": 341, + "./CCSkeleton": 65 + }], + 69: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var SkinnedMeshRenderer = require("./CCSkinnedMeshRenderer"); + var MeshRendererAssembler = require("../../mesh/mesh-renderer"); + var RenderFlow = require("../../renderer/render-flow"); + var SkinnedMeshRendererAssembler = (function (_MeshRendererAssemble) { + _inheritsLoose(SkinnedMeshRendererAssembler, _MeshRendererAssemble); + function SkinnedMeshRendererAssembler() { + return _MeshRendererAssemble.apply(this, arguments) || this; + } + var _proto = SkinnedMeshRendererAssembler.prototype; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + comp.calcJointMatrix(); + _MeshRendererAssemble.prototype.fillBuffers.call(this, comp, renderer); + }; + return SkinnedMeshRendererAssembler; + })(MeshRendererAssembler); + exports["default"] = SkinnedMeshRendererAssembler; + cc.Assembler.register(SkinnedMeshRenderer, SkinnedMeshRendererAssembler); + module.exports = exports["default"]; + }), { + "../../mesh/mesh-renderer": 211, + "../../renderer/render-flow": 272, + "./CCSkinnedMeshRenderer": 68 + }], + 70: [(function (require, module, exports) { + "use strict"; + var utils = require("./platform/utils"); + var debugInfos = require("../../DebugInfos") || {}; + var ERROR_MAP_URL = "https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md"; + var logList; + cc.log = cc.warn = cc.error = cc.assert = console.log.bind ? console.log.bind(console) : console.log; + var resetDebugSetting = function resetDebugSetting(mode) { + cc.log = cc.warn = cc.error = cc.assert = function () { }; + if (mode === DebugMode.NONE) return; + if (mode > DebugMode.ERROR) { + var logToWebPage = function logToWebPage(msg) { + if (!cc.game.canvas) return; + if (!logList) { + var logDiv = document.createElement("Div"); + logDiv.setAttribute("id", "logInfoDiv"); + logDiv.setAttribute("width", "200"); + logDiv.setAttribute("height", cc.game.canvas.height); + var logDivStyle = logDiv.style; + logDivStyle.zIndex = "99999"; + logDivStyle.position = "absolute"; + logDivStyle.top = logDivStyle.left = "0"; + logList = document.createElement("textarea"); + logList.setAttribute("rows", "20"); + logList.setAttribute("cols", "30"); + logList.setAttribute("disabled", "true"); + var logListStyle = logList.style; + logListStyle.backgroundColor = "transparent"; + logListStyle.borderBottom = "1px solid #cccccc"; + logListStyle.borderTopWidth = logListStyle.borderLeftWidth = logListStyle.borderRightWidth = "0px"; + logListStyle.borderTopStyle = logListStyle.borderLeftStyle = logListStyle.borderRightStyle = "none"; + logListStyle.padding = "0px"; + logListStyle.margin = 0; + logDiv.appendChild(logList); + cc.game.canvas.parentNode.appendChild(logDiv); + } + logList.value = logList.value + msg + "\r\n"; + logList.scrollTop = logList.scrollHeight; + }; + cc.error = function () { + logToWebPage("ERROR : " + cc.js.formatStr.apply(null, arguments)); + }; + cc.assert = function (cond, msg) { + if (!cond && msg) { + msg = cc.js.formatStr.apply(null, cc.js.shiftArguments.apply(null, arguments)); + logToWebPage("ASSERT: " + msg); + } + }; + mode !== DebugMode.ERROR_FOR_WEB_PAGE && (cc.warn = function () { + logToWebPage("WARN : " + cc.js.formatStr.apply(null, arguments)); + }); + mode === DebugMode.INFO_FOR_WEB_PAGE && (cc.log = function () { + logToWebPage(cc.js.formatStr.apply(null, arguments)); + }); + } else if (console && console.log.apply) { + console.error || (console.error = console.log); + console.warn || (console.warn = console.log); + false; + console.error.bind ? cc.error = console.error.bind(console) : cc.error = (false, + function () { + return console.error.apply(console, arguments); + }); + cc.assert = function (cond, msg) { + if (!cond) { + msg && (msg = cc.js.formatStr.apply(null, cc.js.shiftArguments.apply(null, arguments))); + false; + false; + throw new Error(msg); + } + }; + } + if (mode !== DebugMode.ERROR) { + false; + console.warn.bind ? cc.warn = console.warn.bind(console) : cc.warn = (false, function () { + return console.warn.apply(console, arguments); + }); + } + false; + if (mode === DebugMode.INFO) { + false, false; + console.log.bind ? cc.log = console.log.bind(console) : cc.log = function () { + return console.log.apply(console, arguments); + }; + } + }; + cc._throw = function (error) { + utils.callInNextTick((function () { + throw error; + })); + }; + function getTypedFormatter(type) { + return function () { + var id = arguments[0]; + var msg = debugInfos[id] || "unknown id"; + if (1 === arguments.length) return msg; + if (2 === arguments.length) return cc.js.formatStr(msg, arguments[1]); + var argsArray = cc.js.shiftArguments.apply(null, arguments); + return cc.js.formatStr.apply(null, [msg].concat(argsArray)); + }; + } + var logFormatter = getTypedFormatter("Log"); + cc.logID = function () { + cc.log(logFormatter.apply(null, arguments)); + }; + var warnFormatter = getTypedFormatter("Warning"); + cc.warnID = function () { + cc.warn(warnFormatter.apply(null, arguments)); + }; + var errorFormatter = getTypedFormatter("Error"); + cc.errorID = function () { + cc.error(errorFormatter.apply(null, arguments)); + }; + var assertFormatter = getTypedFormatter("Assert"); + cc.assertID = function (cond) { + if (cond) return; + cc.assert(false, assertFormatter.apply(null, cc.js.shiftArguments.apply(null, arguments))); + }; + var DebugMode = cc.Enum({ + NONE: 0, + INFO: 1, + WARN: 2, + ERROR: 3, + INFO_FOR_WEB_PAGE: 4, + WARN_FOR_WEB_PAGE: 5, + ERROR_FOR_WEB_PAGE: 6 + }); + module.exports = cc.debug = { + DebugMode: DebugMode, + _resetDebugSetting: resetDebugSetting, + getError: getTypedFormatter("ERROR"), + isDisplayStats: function isDisplayStats() { + return !!cc.profiler && cc.profiler.isShowingStats(); + }, + setDisplayStats: function setDisplayStats(displayStats) { + if (cc.profiler && cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) { + displayStats ? cc.profiler.showStats() : cc.profiler.hideStats(); + cc.game.config.showFPS = !!displayStats; + } + } + }; + }), { + "../../DebugInfos": 1, + "./platform/utils": 263 + }], + 71: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("./event/event-target"); + var ComponentScheduler = require("./component-scheduler"); + var NodeActivator = require("./node-activator"); + var Obj = require("./platform/CCObject"); + var game = require("./CCGame"); + var renderer = require("./renderer"); + var eventManager = require("./event-manager"); + var Scheduler = require("./CCScheduler"); + cc.Director = function () { + EventTarget.call(this); + this._paused = false; + this._purgeDirectorInNextLoop = false; + this._winSizeInPoints = null; + this._scene = null; + this._loadingScene = ""; + this._totalFrames = 0; + this._lastUpdate = 0; + this._deltaTime = 0; + this._startTime = 0; + this._maxParticleDeltaTime = 0; + this._scheduler = null; + this._compScheduler = null; + this._nodeActivator = null; + this._actionManager = null; + var self = this; + game.on(game.EVENT_SHOW, (function () { + self._lastUpdate = performance.now(); + })); + game.once(game.EVENT_ENGINE_INITED, this.init, this); + }; + cc.Director.prototype = { + constructor: cc.Director, + init: function init() { + this._totalFrames = 0; + this._lastUpdate = performance.now(); + this._startTime = this._lastUpdate; + this._paused = false; + this._purgeDirectorInNextLoop = false; + this._winSizeInPoints = cc.size(0, 0); + this._scheduler = new Scheduler(); + if (cc.ActionManager) { + this._actionManager = new cc.ActionManager(); + this._scheduler.scheduleUpdate(this._actionManager, Scheduler.PRIORITY_SYSTEM, false); + } else this._actionManager = null; + this.sharedInit(); + return true; + }, + sharedInit: function sharedInit() { + this._compScheduler = new ComponentScheduler(); + this._nodeActivator = new NodeActivator(); + eventManager && eventManager.setEnabled(true); + if (cc.AnimationManager) { + this._animationManager = new cc.AnimationManager(); + this._scheduler.scheduleUpdate(this._animationManager, Scheduler.PRIORITY_SYSTEM, false); + } else this._animationManager = null; + if (cc.CollisionManager) { + this._collisionManager = new cc.CollisionManager(); + this._scheduler.scheduleUpdate(this._collisionManager, Scheduler.PRIORITY_SYSTEM, false); + } else this._collisionManager = null; + if (cc.PhysicsManager) { + this._physicsManager = new cc.PhysicsManager(); + this._scheduler.scheduleUpdate(this._physicsManager, Scheduler.PRIORITY_SYSTEM, false); + } else this._physicsManager = null; + if (cc.Physics3DManager && (false, true)) { + this._physics3DManager = new cc.Physics3DManager(); + this._scheduler.scheduleUpdate(this._physics3DManager, Scheduler.PRIORITY_SYSTEM, false); + } else this._physics3DManager = null; + cc._widgetManager && cc._widgetManager.init(this); + }, + calculateDeltaTime: function calculateDeltaTime(now) { + now || (now = performance.now()); + this._deltaTime = now > this._lastUpdate ? (now - this._lastUpdate) / 1e3 : 0; + (true, this._deltaTime > 1) && (this._deltaTime = 1 / 60); + this._lastUpdate = now; + }, + convertToGL: function convertToGL(uiPoint) { + var container = game.container; + var view = cc.view; + var box = container.getBoundingClientRect(); + var left = box.left + window.pageXOffset - container.clientLeft; + var top = box.top + window.pageYOffset - container.clientTop; + var x = view._devicePixelRatio * (uiPoint.x - left); + var y = view._devicePixelRatio * (top + box.height - uiPoint.y); + return view._isRotated ? cc.v2(view._viewportRect.width - y, x) : cc.v2(x, y); + }, + convertToUI: function convertToUI(glPoint) { + var container = game.container; + var view = cc.view; + var box = container.getBoundingClientRect(); + var left = box.left + window.pageXOffset - container.clientLeft; + var top = box.top + window.pageYOffset - container.clientTop; + var uiPoint = cc.v2(0, 0); + if (view._isRotated) { + uiPoint.x = left + glPoint.y / view._devicePixelRatio; + uiPoint.y = top + box.height - (view._viewportRect.width - glPoint.x) / view._devicePixelRatio; + } else { + uiPoint.x = left + glPoint.x * view._devicePixelRatio; + uiPoint.y = top + box.height - glPoint.y * view._devicePixelRatio; + } + return uiPoint; + }, + end: function end() { + this._purgeDirectorInNextLoop = true; + }, + getWinSize: function getWinSize() { + return cc.size(cc.winSize); + }, + getWinSizeInPixels: function getWinSizeInPixels() { + return cc.size(cc.winSize); + }, + pause: function pause() { + if (this._paused) return; + this._paused = true; + }, + purgeCachedData: function purgeCachedData() { + cc.assetManager.releaseAll(); + }, + purgeDirector: function purgeDirector() { + this._scheduler.unscheduleAll(); + this._compScheduler.unscheduleAll(); + this._nodeActivator.reset(); + eventManager && eventManager.setEnabled(false); + true; + cc.isValid(this._scene) && this._scene.destroy(); + this._scene = null; + cc.renderer.clear(); + cc.assetManager.builtins.clear(); + cc.game.pause(); + cc.assetManager.releaseAll(); + }, + reset: function reset() { + this.purgeDirector(); + eventManager && eventManager.setEnabled(true); + this._actionManager && this._scheduler.scheduleUpdate(this._actionManager, cc.Scheduler.PRIORITY_SYSTEM, false); + this._animationManager && this._scheduler.scheduleUpdate(this._animationManager, cc.Scheduler.PRIORITY_SYSTEM, false); + this._collisionManager && this._scheduler.scheduleUpdate(this._collisionManager, cc.Scheduler.PRIORITY_SYSTEM, false); + this._physicsManager && this._scheduler.scheduleUpdate(this._physicsManager, cc.Scheduler.PRIORITY_SYSTEM, false); + cc.game.resume(); + }, + runSceneImmediate: function runSceneImmediate(scene, onBeforeLoadScene, onLaunched) { + cc.assertID(scene instanceof cc.Scene || scene instanceof cc.SceneAsset, 1216); + scene instanceof cc.SceneAsset && (scene = scene.scene); + (true, true) && console.time("InitScene"); + scene._load(); + (true, true) && console.timeEnd("InitScene"); + (true, true) && console.time("AttachPersist"); + var persistNodeList = Object.keys(game._persistRootNodes).map((function (x) { + return game._persistRootNodes[x]; + })); + for (var i = 0; i < persistNodeList.length; i++) { + var node = persistNodeList[i]; + var existNode = scene.getChildByUuid(node.uuid); + if (existNode) { + var index = existNode.getSiblingIndex(); + existNode._destroyImmediate(); + scene.insertChild(node, index); + } else node.parent = scene; + } + (true, true) && console.timeEnd("AttachPersist"); + var oldScene = this._scene; + true; + (true, true) && console.time("AutoRelease"); + cc.assetManager._releaseManager._autoRelease(oldScene, scene, persistNodeList); + (true, true) && console.timeEnd("AutoRelease"); + (true, true) && console.time("Destroy"); + cc.isValid(oldScene) && oldScene.destroy(); + this._scene = null; + Obj._deferredDestroy(); + (true, true) && console.timeEnd("Destroy"); + onBeforeLoadScene && onBeforeLoadScene(); + this.emit(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, scene); + this._scene = scene; + (true, true) && console.time("Activate"); + scene._activate(); + (true, true) && console.timeEnd("Activate"); + cc.game.resume(); + onLaunched && onLaunched(null, scene); + this.emit(cc.Director.EVENT_AFTER_SCENE_LAUNCH, scene); + }, + runScene: function runScene(scene, onBeforeLoadScene, onLaunched) { + cc.assertID(scene, 1205); + cc.assertID(scene instanceof cc.Scene || scene instanceof cc.SceneAsset, 1216); + scene instanceof cc.SceneAsset && (scene = scene.scene); + scene._load(); + this.once(cc.Director.EVENT_AFTER_DRAW, (function () { + this.runSceneImmediate(scene, onBeforeLoadScene, onLaunched); + }), this); + }, + loadScene: function loadScene(sceneName, onLaunched, _onUnloaded) { + if (this._loadingScene) { + cc.warnID(1208, sceneName, this._loadingScene); + return false; + } + var bundle = cc.assetManager.bundles.find((function (bundle) { + return bundle.getSceneInfo(sceneName); + })); + if (bundle) { + this.emit(cc.Director.EVENT_BEFORE_SCENE_LOADING, sceneName); + this._loadingScene = sceneName; + var self = this; + console.time("LoadScene " + sceneName); + bundle.loadScene(sceneName, (function (err, scene) { + console.timeEnd("LoadScene " + sceneName); + self._loadingScene = ""; + if (err) { + err = "Failed to load scene: " + err; + cc.error(err); + onLaunched && onLaunched(err); + } else self.runSceneImmediate(scene, _onUnloaded, onLaunched); + })); + return true; + } + cc.errorID(1209, sceneName); + return false; + }, + preloadScene: function preloadScene(sceneName, onProgress, onLoaded) { + var bundle = cc.assetManager.bundles.find((function (bundle) { + return bundle.getSceneInfo(sceneName); + })); + if (!bundle) { + cc.errorID(1209, sceneName); + return null; + } + bundle.preloadScene(sceneName, null, onProgress, onLoaded); + }, + resume: function resume() { + if (!this._paused) return; + this._lastUpdate = performance.now(); + this._lastUpdate || cc.logID(1200); + this._paused = false; + this._deltaTime = 0; + }, + setDepthTest: function setDepthTest(value) { + if (!cc.Camera.main) return; + cc.Camera.main.depth = !!value; + }, + setClearColor: function setClearColor(clearColor) { + if (!cc.Camera.main) return; + cc.Camera.main.backgroundColor = clearColor; + }, + getRunningScene: function getRunningScene() { + return this._scene; + }, + getScene: function getScene() { + return this._scene; + }, + getAnimationInterval: function getAnimationInterval() { + return 1e3 / game.getFrameRate(); + }, + setAnimationInterval: function setAnimationInterval(value) { + game.setFrameRate(Math.round(1e3 / value)); + }, + getDeltaTime: function getDeltaTime() { + return this._deltaTime; + }, + getTotalTime: function getTotalTime() { + return performance.now() - this._startTime; + }, + getTotalFrames: function getTotalFrames() { + return this._totalFrames; + }, + isPaused: function isPaused() { + return this._paused; + }, + getScheduler: function getScheduler() { + return this._scheduler; + }, + setScheduler: function setScheduler(scheduler) { + this._scheduler !== scheduler && (this._scheduler = scheduler); + }, + getActionManager: function getActionManager() { + return this._actionManager; + }, + setActionManager: function setActionManager(actionManager) { + if (this._actionManager !== actionManager) { + this._actionManager && this._scheduler.unscheduleUpdate(this._actionManager); + this._actionManager = actionManager; + this._scheduler.scheduleUpdate(this._actionManager, cc.Scheduler.PRIORITY_SYSTEM, false); + } + }, + getAnimationManager: function getAnimationManager() { + return this._animationManager; + }, + getCollisionManager: function getCollisionManager() { + return this._collisionManager; + }, + getPhysicsManager: function getPhysicsManager() { + return this._physicsManager; + }, + getPhysics3DManager: function getPhysics3DManager() { + return this._physics3DManager; + }, + startAnimation: function startAnimation() { + cc.game.resume(); + }, + stopAnimation: function stopAnimation() { + cc.game.pause(); + }, + _resetDeltaTime: function _resetDeltaTime() { + this._lastUpdate = performance.now(); + this._deltaTime = 0; + }, + mainLoop: function (now) { + if (this._purgeDirectorInNextLoop) { + this._purgeDirectorInNextLoop = false; + this.purgeDirector(); + } else { + this.calculateDeltaTime(now); + if (!this._paused) { + this.emit(cc.Director.EVENT_BEFORE_UPDATE); + this._compScheduler.startPhase(); + this._compScheduler.updatePhase(this._deltaTime); + this._scheduler.update(this._deltaTime); + this._compScheduler.lateUpdatePhase(this._deltaTime); + this.emit(cc.Director.EVENT_AFTER_UPDATE); + Obj._deferredDestroy(); + } + this.emit(cc.Director.EVENT_BEFORE_DRAW); + renderer.render(this._scene, this._deltaTime); + this.emit(cc.Director.EVENT_AFTER_DRAW); + eventManager.frameUpdateListeners(); + this._totalFrames++; + } + }, + __fastOn: function __fastOn(type, callback, target) { + this.on(type, callback, target); + }, + __fastOff: function __fastOff(type, callback, target) { + this.off(type, callback, target); + } + }; + cc.js.addon(cc.Director.prototype, EventTarget.prototype); + cc.Director.EVENT_PROJECTION_CHANGED = "director_projection_changed"; + cc.Director.EVENT_BEFORE_SCENE_LOADING = "director_before_scene_loading"; + cc.Director.EVENT_BEFORE_SCENE_LAUNCH = "director_before_scene_launch"; + cc.Director.EVENT_AFTER_SCENE_LAUNCH = "director_after_scene_launch"; + cc.Director.EVENT_BEFORE_UPDATE = "director_before_update"; + cc.Director.EVENT_AFTER_UPDATE = "director_after_update"; + cc.Director.EVENT_BEFORE_VISIT = "director_before_draw"; + cc.Director.EVENT_AFTER_VISIT = "director_before_draw"; + cc.Director.EVENT_BEFORE_DRAW = "director_before_draw"; + cc.Director.EVENT_AFTER_DRAW = "director_after_draw"; + cc.Director.PROJECTION_2D = 0; + cc.Director.PROJECTION_3D = 1; + cc.Director.PROJECTION_CUSTOM = 3; + cc.Director.PROJECTION_DEFAULT = cc.Director.PROJECTION_2D; + cc.Director.EVENT_BEFORE_PHYSICS = "director_before_physics"; + cc.Director.EVENT_AFTER_PHYSICS = "director_after_physics"; + cc.director = new cc.Director(); + module.exports = cc.director; + }), { + "./CCGame": 72, + "./CCScheduler": 76, + "./component-scheduler": 143, + "./event-manager": 184, + "./event/event-target": 186, + "./node-activator": 212, + "./platform/CCObject": 245, + "./renderer": 271 + }], + 72: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("./event/event-target"); + require("../audio/CCAudioEngine"); + var debug = require("./CCDebug"); + var renderer = require("./renderer/index.js"); + var dynamicAtlasManager = require("../core/renderer/utils/dynamic-atlas/manager"); + var game = { + EVENT_HIDE: "game_on_hide", + EVENT_SHOW: "game_on_show", + EVENT_RESTART: "game_on_restart", + EVENT_GAME_INITED: "game_inited", + EVENT_ENGINE_INITED: "engine_inited", + EVENT_RENDERER_INITED: "engine_inited", + RENDER_TYPE_CANVAS: 0, + RENDER_TYPE_WEBGL: 1, + RENDER_TYPE_OPENGL: 2, + _persistRootNodes: {}, + _paused: true, + _configLoaded: false, + _isCloning: false, + _prepared: false, + _rendererInitialized: false, + _renderContext: null, + _intervalId: null, + _lastTime: null, + _frameTime: null, + frame: null, + container: null, + canvas: null, + renderType: -1, + config: null, + onStart: null, + setFrameRate: function setFrameRate(frameRate) { + var config = this.config; + config.frameRate = frameRate; + this._intervalId && window.cancelAnimFrame(this._intervalId); + this._intervalId = 0; + this._paused = true; + this._setAnimFrame(); + this._runMainLoop(); + }, + getFrameRate: function getFrameRate() { + return this.config.frameRate; + }, + step: function step() { + cc.director.mainLoop(); + }, + pause: function pause() { + if (this._paused) return; + this._paused = true; + cc.audioEngine && cc.audioEngine._break(); + this._intervalId && window.cancelAnimFrame(this._intervalId); + this._intervalId = 0; + }, + resume: function resume() { + if (!this._paused) return; + this._paused = false; + cc.audioEngine && cc.audioEngine._restore(); + cc.director._resetDeltaTime(); + this._runMainLoop(); + }, + isPaused: function isPaused() { + return this._paused; + }, + restart: function restart() { + cc.director.once(cc.Director.EVENT_AFTER_DRAW, (function () { + for (var id in game._persistRootNodes) game.removePersistRootNode(game._persistRootNodes[id]); + cc.director.getScene().destroy(); + cc.Object._deferredDestroy(); + cc.audioEngine && cc.audioEngine.uncacheAll(); + cc.director.reset(); + game.pause(); + cc.assetManager.builtins.init((function () { + game.onStart(); + game.emit(game.EVENT_RESTART); + })); + })); + }, + end: function end() { + close(); + }, + _initEngine: function _initEngine() { + if (this._rendererInitialized) return; + this._initRenderer(); + true; + this._initEvents(); + this.emit(this.EVENT_ENGINE_INITED); + }, + _loadPreviewScript: function _loadPreviewScript(cb) { + false; + cb(); + }, + _prepareFinished: function _prepareFinished(cb) { + var _this = this; + this._initEngine(); + this._setAnimFrame(); + cc.assetManager.builtins.init((function () { + console.log("Cocos Creator v" + cc.ENGINE_VERSION); + _this._prepared = true; + _this._runMainLoop(); + _this.emit(_this.EVENT_GAME_INITED); + cb && cb(); + })); + }, + eventTargetOn: EventTarget.prototype.on, + eventTargetOnce: EventTarget.prototype.once, + on: function on(type, callback, target, once) { + this._prepared && type === this.EVENT_ENGINE_INITED || !this._paused && type === this.EVENT_GAME_INITED ? callback.call(target) : this.eventTargetOn(type, callback, target, once); + }, + once: function once(type, callback, target) { + this._prepared && type === this.EVENT_ENGINE_INITED || !this._paused && type === this.EVENT_GAME_INITED ? callback.call(target) : this.eventTargetOnce(type, callback, target); + }, + prepare: function prepare(cb) { + var _this2 = this; + if (this._prepared) { + cb && cb(); + return; + } + this._loadPreviewScript((function () { + _this2._prepareFinished(cb); + })); + }, + run: function run(config, onStart) { + this._initConfig(config); + this.onStart = onStart; + this.prepare(game.onStart && game.onStart.bind(game)); + }, + addPersistRootNode: function addPersistRootNode(node) { + if (!cc.Node.isNode(node) || !node.uuid) { + cc.warnID(3800); + return; + } + var id = node.uuid; + if (!this._persistRootNodes[id]) { + var scene = cc.director._scene; + if (cc.isValid(scene)) if (node.parent) { + if (!(node.parent instanceof cc.Scene)) { + cc.warnID(3801); + return; + } + if (node.parent !== scene) { + cc.warnID(3802); + return; + } + } else node.parent = scene; + this._persistRootNodes[id] = node; + node._persistNode = true; + cc.assetManager._releaseManager._addPersistNodeRef(node); + } + }, + removePersistRootNode: function removePersistRootNode(node) { + var id = node.uuid || ""; + if (node === this._persistRootNodes[id]) { + delete this._persistRootNodes[id]; + node._persistNode = false; + cc.assetManager._releaseManager._removePersistNodeRef(node); + } + }, + isPersistRootNode: function isPersistRootNode(node) { + return node._persistNode; + }, + _setAnimFrame: function _setAnimFrame() { + this._lastTime = performance.now(); + var frameRate = game.config.frameRate; + this._frameTime = 1e3 / frameRate; + cc.director._maxParticleDeltaTime = this._frameTime / 1e3 * 2; + false, false; + var rAF = window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame; + if (60 !== frameRate && 30 !== frameRate) { + window.requestAnimFrame = rAF ? this._stTimeWithRAF : this._stTime; + window.cancelAnimFrame = this._ctTime; + } else { + window.requestAnimFrame = rAF || this._stTime; + window.cancelAnimFrame = window.cancelAnimationFrame || window.cancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.webkitCancelRequestAnimationFrame || window.msCancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.oCancelAnimationFrame || this._ctTime; + } + }, + _stTimeWithRAF: function _stTimeWithRAF(callback) { + var currTime = performance.now(); + var timeToCall = Math.max(0, game._frameTime - (currTime - game._lastTime)); + var id = window.setTimeout((function () { + window.requestAnimationFrame(callback); + }), timeToCall); + game._lastTime = currTime + timeToCall; + return id; + }, + _stTime: function _stTime(callback) { + var currTime = performance.now(); + var timeToCall = Math.max(0, game._frameTime - (currTime - game._lastTime)); + var id = window.setTimeout((function () { + callback(); + }), timeToCall); + game._lastTime = currTime + timeToCall; + return id; + }, + _ctTime: function _ctTime(id) { + window.clearTimeout(id); + }, + _runMainLoop: function _runMainLoop() { + false; + if (!this._prepared) return; + var self = this, _callback, config = self.config, director = cc.director, skip = true, frameRate = config.frameRate; + debug.setDisplayStats(config.showFPS); + _callback = function callback(now) { + if (!self._paused) { + self._intervalId = window.requestAnimFrame(_callback); + if ((true, true) && 30 === frameRate && (skip = !skip)) return; + director.mainLoop(now); + } + }; + self._intervalId = window.requestAnimFrame(_callback); + self._paused = false; + }, + _initConfig: function _initConfig(config) { + "number" !== typeof config.debugMode && (config.debugMode = 0); + config.exposeClassName = !!config.exposeClassName; + "number" !== typeof config.frameRate && (config.frameRate = 60); + var renderMode = config.renderMode; + ("number" !== typeof renderMode || renderMode > 2 || renderMode < 0) && (config.renderMode = 0); + "boolean" !== typeof config.registerSystemEvent && (config.registerSystemEvent = true); + config.showFPS = 1 !== renderMode && !!config.showFPS; + this.collisionMatrix = config.collisionMatrix || []; + this.groupList = config.groupList || []; + debug._resetDebugSetting(config.debugMode); + this.config = config; + this._configLoaded = true; + }, + _determineRenderType: function _determineRenderType() { + var config = this.config, userRenderMode = parseInt(config.renderMode) || 0; + this.renderType = this.RENDER_TYPE_CANVAS; + var supportRender = false; + if (0 === userRenderMode) { + if (cc.sys.capabilities["opengl"]) { + this.renderType = this.RENDER_TYPE_WEBGL; + supportRender = true; + } else if (cc.sys.capabilities["canvas"]) { + this.renderType = this.RENDER_TYPE_CANVAS; + supportRender = true; + } + } else if (1 === userRenderMode && cc.sys.capabilities["canvas"]) { + this.renderType = this.RENDER_TYPE_CANVAS; + supportRender = true; + } else if (2 === userRenderMode && cc.sys.capabilities["opengl"]) { + this.renderType = this.RENDER_TYPE_WEBGL; + supportRender = true; + } + if (!supportRender) throw new Error(debug.getError(3820, userRenderMode)); + }, + _initRenderer: function _initRenderer() { + if (this._rendererInitialized) return; + var el = this.config.id, width, height, localCanvas, localContainer; + false, false; + var addClass = function addClass(element, name) { + var hasClass = (" " + element.className + " ").indexOf(" " + name + " ") > -1; + if (!hasClass) { + element.className && (element.className += " "); + element.className += name; + } + }; + var element = el instanceof HTMLElement ? el : document.querySelector(el) || document.querySelector("#" + el); + if ("CANVAS" === element.tagName) { + width = element.width; + height = element.height; + this.canvas = localCanvas = element; + this.container = localContainer = document.createElement("DIV"); + localCanvas.parentNode && localCanvas.parentNode.insertBefore(localContainer, localCanvas); + } else { + "DIV" !== element.tagName && cc.warnID(3819); + width = element.clientWidth; + height = element.clientHeight; + this.canvas = localCanvas = document.createElement("CANVAS"); + this.container = localContainer = document.createElement("DIV"); + element.appendChild(localContainer); + } + localContainer.setAttribute("id", "Cocos2dGameContainer"); + localContainer.appendChild(localCanvas); + this.frame = localContainer.parentNode === document.body ? document.documentElement : localContainer.parentNode; + addClass(localCanvas, "gameCanvas"); + localCanvas.setAttribute("width", width || 480); + localCanvas.setAttribute("height", height || 320); + localCanvas.setAttribute("tabindex", 99); + this._determineRenderType(); + if (this.renderType === this.RENDER_TYPE_WEBGL) { + var opts = { + stencil: true, + antialias: cc.macro.ENABLE_WEBGL_ANTIALIAS, + alpha: cc.macro.ENABLE_TRANSPARENT_CANVAS + }; + renderer.initWebGL(localCanvas, opts); + this._renderContext = renderer.device._gl; + !cc.macro.CLEANUP_IMAGE_CACHE && dynamicAtlasManager && (dynamicAtlasManager.enabled = true); + } + if (!this._renderContext) { + this.renderType = this.RENDER_TYPE_CANVAS; + renderer.initCanvas(localCanvas); + this._renderContext = renderer.device._ctx; + } + this.canvas.oncontextmenu = function () { + if (!cc._isContextMenuEnable) return false; + }; + this._rendererInitialized = true; + }, + _initEvents: function _initEvents() { + var win = window, hiddenPropName; + this.config.registerSystemEvent && cc.internal.inputManager.registerSystemEvent(this.canvas); + "undefined" !== typeof document.hidden ? hiddenPropName = "hidden" : "undefined" !== typeof document.mozHidden ? hiddenPropName = "mozHidden" : "undefined" !== typeof document.msHidden ? hiddenPropName = "msHidden" : "undefined" !== typeof document.webkitHidden && (hiddenPropName = "webkitHidden"); + var hidden = false; + function onHidden() { + if (!hidden) { + hidden = true; + game.emit(game.EVENT_HIDE); + } + } + function onShown(arg0, arg1, arg2, arg3, arg4) { + if (hidden) { + hidden = false; + game.emit(game.EVENT_SHOW, arg0, arg1, arg2, arg3, arg4); + } + } + if (hiddenPropName) { + var changeList = ["visibilitychange", "mozvisibilitychange", "msvisibilitychange", "webkitvisibilitychange", "qbrowserVisibilityChange"]; + for (var i = 0; i < changeList.length; i++) document.addEventListener(changeList[i], (function (event) { + var visible = document[hiddenPropName]; + visible = visible || event["hidden"]; + visible ? onHidden() : onShown(); + })); + } else { + win.addEventListener("blur", onHidden); + win.addEventListener("focus", onShown); + } + navigator.userAgent.indexOf("MicroMessenger") > -1 && (win.onfocus = onShown); + if ("onpageshow" in window && "onpagehide" in window) { + win.addEventListener("pagehide", onHidden); + win.addEventListener("pageshow", onShown); + document.addEventListener("pagehide", onHidden); + document.addEventListener("pageshow", onShown); + } + this.on(game.EVENT_HIDE, (function () { + game.pause(); + })); + this.on(game.EVENT_SHOW, (function () { + game.resume(); + })); + } + }; + EventTarget.call(game); + cc.js.addon(game, EventTarget.prototype); + cc.game = module.exports = game; + }), { + "../audio/CCAudioEngine": 22, + "../core/renderer/utils/dynamic-atlas/manager": 274, + "./CCDebug": 70, + "./event/event-target": 186, + "./renderer/index.js": 271 + }], + 73: [(function (require, module, exports) { + "use strict"; + var _valueTypes = require("./value-types"); + var BaseNode = require("./utils/base-node"); + var PrefabHelper = require("./utils/prefab-helper"); + var nodeMemPool = require("./utils/trans-pool").NodeMemPool; + var AffineTrans = require("./utils/affine-transform"); + var eventManager = require("./event-manager"); + var macro = require("./platform/CCMacro"); + var js = require("./platform/js"); + var Event = require("./event/event"); + var EventTarget = require("./event/event-target"); + var RenderFlow = require("./renderer/render-flow"); + var Flags = cc.Object.Flags; + var Destroying = Flags.Destroying; + var ERR_INVALID_NUMBER = false; + var ONE_DEGREE = Math.PI / 180; + var ActionManagerExist = !!cc.ActionManager; + var emptyFunc = function emptyFunc() { }; + var _gwpVec3 = new _valueTypes.Vec3(); + var _gwpQuat = new _valueTypes.Quat(); + var _tpVec3a = new _valueTypes.Vec3(); + var _tpVec3b = new _valueTypes.Vec3(); + var _tpQuata = new _valueTypes.Quat(); + var _tpQuatb = new _valueTypes.Quat(); + var _swpVec3 = new _valueTypes.Vec3(); + var _gwsVec3 = new _valueTypes.Vec3(); + var _swsVec3 = new _valueTypes.Vec3(); + var _gwrtVec3a = new _valueTypes.Vec3(); + var _gwrtVec3b = new _valueTypes.Vec3(); + var _gwrtQuata = new _valueTypes.Quat(); + var _gwrtQuatb = new _valueTypes.Quat(); + var _laVec3 = new _valueTypes.Vec3(); + var _laQuat = new _valueTypes.Quat(); + var _urfVec3 = new _valueTypes.Vec3(); + var _urfQuat = new _valueTypes.Quat(); + var _htVec3a = new _valueTypes.Vec3(); + var _htVec3b = new _valueTypes.Vec3(); + var _gwrQuat = new _valueTypes.Quat(); + var _swrQuat = new _valueTypes.Quat(); + var _quata = new _valueTypes.Quat(); + var _mat4_temp = cc.mat4(); + var _vec3_temp = new _valueTypes.Vec3(); + var _cachedArray = new Array(16); + _cachedArray.length = 0; + var POSITION_ON = 1; + var SCALE_ON = 2; + var ROTATION_ON = 4; + var SIZE_ON = 8; + var ANCHOR_ON = 16; + var COLOR_ON = 32; + var BuiltinGroupIndex = cc.Enum({ + DEBUG: 31 + }); + var LocalDirtyFlag = cc.Enum({ + POSITION: 1, + SCALE: 2, + ROTATION: 4, + SKEW: 8, + TRS: 7, + RS: 6, + TRSS: 15, + PHYSICS_POSITION: 16, + PHYSICS_SCALE: 32, + PHYSICS_ROTATION: 64, + PHYSICS_TRS: 112, + PHYSICS_RS: 96, + ALL_POSITION: 17, + ALL_SCALE: 34, + ALL_ROTATION: 68, + ALL_TRS: 119, + ALL: 65535 + }); + var EventType = cc.Enum({ + TOUCH_START: "touchstart", + TOUCH_MOVE: "touchmove", + TOUCH_END: "touchend", + TOUCH_CANCEL: "touchcancel", + MOUSE_DOWN: "mousedown", + MOUSE_MOVE: "mousemove", + MOUSE_ENTER: "mouseenter", + MOUSE_LEAVE: "mouseleave", + MOUSE_UP: "mouseup", + MOUSE_WHEEL: "mousewheel", + POSITION_CHANGED: "position-changed", + ROTATION_CHANGED: "rotation-changed", + SCALE_CHANGED: "scale-changed", + SIZE_CHANGED: "size-changed", + ANCHOR_CHANGED: "anchor-changed", + COLOR_CHANGED: "color-changed", + CHILD_ADDED: "child-added", + CHILD_REMOVED: "child-removed", + CHILD_REORDER: "child-reorder", + GROUP_CHANGED: "group-changed", + SIBLING_ORDER_CHANGED: "sibling-order-changed" + }); + var _touchEvents = [EventType.TOUCH_START, EventType.TOUCH_MOVE, EventType.TOUCH_END, EventType.TOUCH_CANCEL]; + var _mouseEvents = [EventType.MOUSE_DOWN, EventType.MOUSE_ENTER, EventType.MOUSE_MOVE, EventType.MOUSE_LEAVE, EventType.MOUSE_UP, EventType.MOUSE_WHEEL]; + var _skewNeedWarn = true; + var _skewWarn = function _skewWarn(value, node) { + if (0 !== value) { + var nodePath = ""; + var NodeUtils; + false; + _skewNeedWarn && cc.warn("`cc.Node.skewX/Y` is deprecated since v2.2.1, please use 3D node instead.", nodePath); + true, _skewNeedWarn = false; + } + }; + var _currentHovered = null; + var _touchStartHandler = function _touchStartHandler(touch, event) { + var pos = touch.getLocation(); + var node = this.owner; + if (node._hitTest(pos, this)) { + event.type = EventType.TOUCH_START; + event.touch = touch; + event.bubbles = true; + node.dispatchEvent(event); + return true; + } + return false; + }; + var _touchMoveHandler = function _touchMoveHandler(touch, event) { + var node = this.owner; + event.type = EventType.TOUCH_MOVE; + event.touch = touch; + event.bubbles = true; + node.dispatchEvent(event); + }; + var _touchEndHandler = function _touchEndHandler(touch, event) { + var pos = touch.getLocation(); + var node = this.owner; + node._hitTest(pos, this) ? event.type = EventType.TOUCH_END : event.type = EventType.TOUCH_CANCEL; + event.touch = touch; + event.bubbles = true; + node.dispatchEvent(event); + }; + var _touchCancelHandler = function _touchCancelHandler(touch, event) { + var pos = touch.getLocation(); + var node = this.owner; + event.type = EventType.TOUCH_CANCEL; + event.touch = touch; + event.bubbles = true; + node.dispatchEvent(event); + }; + var _mouseDownHandler = function _mouseDownHandler(event) { + var pos = event.getLocation(); + var node = this.owner; + if (node._hitTest(pos, this)) { + event.type = EventType.MOUSE_DOWN; + event.bubbles = true; + node.dispatchEvent(event); + } + }; + var _mouseMoveHandler = function _mouseMoveHandler(event) { + var pos = event.getLocation(); + var node = this.owner; + var hit = node._hitTest(pos, this); + if (hit) { + if (!this._previousIn) { + if (_currentHovered && _currentHovered._mouseListener) { + event.type = EventType.MOUSE_LEAVE; + _currentHovered.dispatchEvent(event); + _currentHovered._mouseListener._previousIn = false; + } + _currentHovered = this.owner; + event.type = EventType.MOUSE_ENTER; + node.dispatchEvent(event); + this._previousIn = true; + } + event.type = EventType.MOUSE_MOVE; + event.bubbles = true; + node.dispatchEvent(event); + } else { + if (!this._previousIn) return; + event.type = EventType.MOUSE_LEAVE; + node.dispatchEvent(event); + this._previousIn = false; + _currentHovered = null; + } + event.stopPropagation(); + }; + var _mouseUpHandler = function _mouseUpHandler(event) { + var pos = event.getLocation(); + var node = this.owner; + if (node._hitTest(pos, this)) { + event.type = EventType.MOUSE_UP; + event.bubbles = true; + node.dispatchEvent(event); + event.stopPropagation(); + } + }; + var _mouseWheelHandler = function _mouseWheelHandler(event) { + var pos = event.getLocation(); + var node = this.owner; + if (node._hitTest(pos, this)) { + event.type = EventType.MOUSE_WHEEL; + event.bubbles = true; + node.dispatchEvent(event); + event.stopPropagation(); + } + }; + function _searchComponentsInParent(node, comp) { + if (comp) { + var index = 0; + var list = null; + for (var curr = node; curr && cc.Node.isNode(curr); curr = curr._parent, ++index) if (curr.getComponent(comp)) { + var next = { + index: index, + node: curr + }; + list ? list.push(next) : list = [next]; + } + return list; + } + return null; + } + function _checkListeners(node, events) { + if (!(node._objFlags & Destroying)) { + if (node._bubblingListeners) for (var i = 0, l = events.length; i < l; ++i) if (node._bubblingListeners.hasEventListener(events[i])) return true; + if (node._capturingListeners) for (var _i = 0, _l = events.length; _i < _l; ++_i) if (node._capturingListeners.hasEventListener(events[_i])) return true; + return false; + } + return true; + } + function _doDispatchEvent(owner, event) { + var target, i; + event.target = owner; + _cachedArray.length = 0; + owner._getCapturingTargets(event.type, _cachedArray); + event.eventPhase = 1; + for (i = _cachedArray.length - 1; i >= 0; --i) { + target = _cachedArray[i]; + if (target._capturingListeners) { + event.currentTarget = target; + target._capturingListeners.emit(event.type, event, _cachedArray); + if (event._propagationStopped) { + _cachedArray.length = 0; + return; + } + } + } + _cachedArray.length = 0; + event.eventPhase = 2; + event.currentTarget = owner; + owner._capturingListeners && owner._capturingListeners.emit(event.type, event); + !event._propagationImmediateStopped && owner._bubblingListeners && owner._bubblingListeners.emit(event.type, event); + if (!event._propagationStopped && event.bubbles) { + owner._getBubblingTargets(event.type, _cachedArray); + event.eventPhase = 3; + for (i = 0; i < _cachedArray.length; ++i) { + target = _cachedArray[i]; + if (target._bubblingListeners) { + event.currentTarget = target; + target._bubblingListeners.emit(event.type, event); + if (event._propagationStopped) { + _cachedArray.length = 0; + return; + } + } + } + } + _cachedArray.length = 0; + } + function _getActualGroupIndex(node) { + var groupIndex = node.groupIndex; + 0 === groupIndex && node.parent && (groupIndex = _getActualGroupIndex(node.parent)); + return groupIndex; + } + function _updateCullingMask(node) { + var index = _getActualGroupIndex(node); + node._cullingMask = 1 << index; + false; + for (var i = 0; i < node._children.length; i++) _updateCullingMask(node._children[i]); + } + function updateLocalMatrix3D() { + if (this._localMatDirty & LocalDirtyFlag.TRSS) { + var t = this._matrix; + var tm = t.m; + _valueTypes.Trs.toMat4(t, this._trs); + if (this._skewX || this._skewY) { + var a = tm[0], b = tm[1], c = tm[4], d = tm[5]; + var skx = Math.tan(this._skewX * ONE_DEGREE); + var sky = Math.tan(this._skewY * ONE_DEGREE); + Infinity === skx && (skx = 99999999); + Infinity === sky && (sky = 99999999); + tm[0] = a + c * sky; + tm[1] = b + d * sky; + tm[4] = c + a * skx; + tm[5] = d + b * skx; + } + this._localMatDirty &= ~LocalDirtyFlag.TRSS; + this._worldMatDirty = true; + } + } + function updateLocalMatrix2D() { + var dirtyFlag = this._localMatDirty; + if (!(dirtyFlag & LocalDirtyFlag.TRSS)) return; + var t = this._matrix; + var tm = t.m; + var trs = this._trs; + if (dirtyFlag & (LocalDirtyFlag.RS | LocalDirtyFlag.SKEW)) { + var rotation = -this._eulerAngles.z; + var hasSkew = this._skewX || this._skewY; + var sx = trs[7], sy = trs[8]; + if (rotation || hasSkew) { + var a = 1, b = 0, c = 0, d = 1; + if (rotation) { + var rotationRadians = rotation * ONE_DEGREE; + c = Math.sin(rotationRadians); + d = Math.cos(rotationRadians); + a = d; + b = -c; + } + tm[0] = a *= sx; + tm[1] = b *= sx; + tm[4] = c *= sy; + tm[5] = d *= sy; + if (hasSkew) { + var _a = tm[0], _b = tm[1], _c = tm[4], _d = tm[5]; + var skx = Math.tan(this._skewX * ONE_DEGREE); + var sky = Math.tan(this._skewY * ONE_DEGREE); + Infinity === skx && (skx = 99999999); + Infinity === sky && (sky = 99999999); + tm[0] = _a + _c * sky; + tm[1] = _b + _d * sky; + tm[4] = _c + _a * skx; + tm[5] = _d + _b * skx; + } + } else { + tm[0] = sx; + tm[1] = 0; + tm[4] = 0; + tm[5] = sy; + } + } + tm[12] = trs[0]; + tm[13] = trs[1]; + this._localMatDirty &= ~LocalDirtyFlag.TRSS; + this._worldMatDirty = true; + } + function calculWorldMatrix3D() { + this._localMatDirty & LocalDirtyFlag.TRSS && this._updateLocalMatrix(); + if (this._parent) { + var parentMat = this._parent._worldMatrix; + _valueTypes.Mat4.mul(this._worldMatrix, parentMat, this._matrix); + } else _valueTypes.Mat4.copy(this._worldMatrix, this._matrix); + this._worldMatDirty = false; + } + function calculWorldMatrix2D() { + this._localMatDirty & LocalDirtyFlag.TRSS && this._updateLocalMatrix(); + var parent = this._parent; + parent ? this._mulMat(this._worldMatrix, parent._worldMatrix, this._matrix) : _valueTypes.Mat4.copy(this._worldMatrix, this._matrix); + this._worldMatDirty = false; + } + function mulMat2D(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + var aa = am[0], ab = am[1], ac = am[4], ad = am[5], atx = am[12], aty = am[13]; + var ba = bm[0], bb = bm[1], bc = bm[4], bd = bm[5], btx = bm[12], bty = bm[13]; + if (0 !== ab || 0 !== ac) { + outm[0] = ba * aa + bb * ac; + outm[1] = ba * ab + bb * ad; + outm[4] = bc * aa + bd * ac; + outm[5] = bc * ab + bd * ad; + outm[12] = aa * btx + ac * bty + atx; + outm[13] = ab * btx + ad * bty + aty; + } else { + outm[0] = ba * aa; + outm[1] = bb * ad; + outm[4] = bc * aa; + outm[5] = bd * ad; + outm[12] = aa * btx + atx; + outm[13] = ad * bty + aty; + } + } + var mulMat3D = _valueTypes.Mat4.mul; + var NodeDefines = { + name: "cc.Node", + extends: BaseNode, + properties: { + _opacity: 255, + _color: cc.Color.WHITE, + _contentSize: cc.Size, + _anchorPoint: cc.v2(.5, .5), + _position: void 0, + _scale: void 0, + _trs: null, + _eulerAngles: cc.Vec3, + _skewX: 0, + _skewY: 0, + _zIndex: { + default: void 0, + type: cc.Integer + }, + _localZOrder: { + default: 0, + serializable: false + }, + _is3DNode: false, + _groupIndex: { + default: 0, + formerlySerializedAs: "groupIndex" + }, + groupIndex: { + get: function get() { + return this._groupIndex; + }, + set: function set(value) { + this._groupIndex = value; + _updateCullingMask(this); + this.emit(EventType.GROUP_CHANGED, this); + } + }, + group: { + get: function get() { + return cc.game.groupList[this.groupIndex] || ""; + }, + set: function set(value) { + this.groupIndex = cc.game.groupList.indexOf(value); + } + }, + x: { + get: function get() { + return this._trs[0]; + }, + set: function set(value) { + var trs = this._trs; + if (value !== trs[0]) { + true; + var oldValue; + false; + trs[0] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + if (this._eventMask & POSITION_ON) { + false; + this.emit(EventType.POSITION_CHANGED); + } + } + } + }, + y: { + get: function get() { + return this._trs[1]; + }, + set: function set(value) { + var trs = this._trs; + if (value !== trs[1]) { + true; + var oldValue; + false; + trs[1] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + if (this._eventMask & POSITION_ON) { + false; + this.emit(EventType.POSITION_CHANGED); + } + } + } + }, + z: { + get: function get() { + return this._trs[2]; + }, + set: function set(value) { + var trs = this._trs; + if (value !== trs[2]) { + true; + var oldValue; + false; + trs[2] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + true, this._renderFlag |= RenderFlow.FLAG_WORLD_TRANSFORM; + if (this._eventMask & POSITION_ON) { + false; + this.emit(EventType.POSITION_CHANGED); + } + } + } + }, + rotation: { + get: function get() { + true; + cc.warn("`cc.Node.rotation` is deprecated since v2.1.0, please use `-angle` instead. (`this.node.rotation` -> `-this.node.angle`)"); + return -this.angle; + }, + set: function set(value) { + true; + cc.warn("`cc.Node.rotation` is deprecated since v2.1.0, please set `-angle` instead. (`this.node.rotation = x` -> `this.node.angle = -x`)"); + this.angle = -value; + } + }, + angle: { + get: function get() { + return this._eulerAngles.z; + }, + set: function set(value) { + _valueTypes.Vec3.set(this._eulerAngles, 0, 0, value); + _valueTypes.Trs.fromAngleZ(this._trs, value); + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + this._eventMask & ROTATION_ON && this.emit(EventType.ROTATION_CHANGED); + } + }, + rotationX: { + get: function get() { + true; + cc.warn("`cc.Node.rotationX` is deprecated since v2.1.0, please use `eulerAngles.x` instead. (`this.node.rotationX` -> `this.node.eulerAngles.x`)"); + return this._eulerAngles.x; + }, + set: function set(value) { + true; + cc.warn("`cc.Node.rotationX` is deprecated since v2.1.0, please set `eulerAngles` instead. (`this.node.rotationX = x` -> `this.node.is3DNode = true; this.node.eulerAngles = cc.v3(x, 0, 0)`"); + if (this._eulerAngles.x !== value) { + this._eulerAngles.x = value; + this._eulerAngles.x === this._eulerAngles.y ? _valueTypes.Trs.fromAngleZ(this._trs, -value) : _valueTypes.Trs.fromEulerNumber(this._trs, value, this._eulerAngles.y, 0); + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + this._eventMask & ROTATION_ON && this.emit(EventType.ROTATION_CHANGED); + } + } + }, + rotationY: { + get: function get() { + true; + cc.warn("`cc.Node.rotationY` is deprecated since v2.1.0, please use `eulerAngles.y` instead. (`this.node.rotationY` -> `this.node.eulerAngles.y`)"); + return this._eulerAngles.y; + }, + set: function set(value) { + true; + cc.warn("`cc.Node.rotationY` is deprecated since v2.1.0, please set `eulerAngles` instead. (`this.node.rotationY = y` -> `this.node.is3DNode = true; this.node.eulerAngles = cc.v3(0, y, 0)`"); + if (this._eulerAngles.y !== value) { + this._eulerAngles.y = value; + this._eulerAngles.x === this._eulerAngles.y ? _valueTypes.Trs.fromAngleZ(this._trs, -value) : _valueTypes.Trs.fromEulerNumber(this._trs, this._eulerAngles.x, value, 0); + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + this._eventMask & ROTATION_ON && this.emit(EventType.ROTATION_CHANGED); + } + } + }, + eulerAngles: { + get: function get() { + false; + return _valueTypes.Trs.toEuler(this._eulerAngles, this._trs); + }, + set: function set(v) { + false; + _valueTypes.Trs.fromEuler(this._trs, v); + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + true, this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + this._eventMask & ROTATION_ON && this.emit(EventType.ROTATION_CHANGED); + } + }, + quat: { + get: function get() { + var trs = this._trs; + return new _valueTypes.Quat(trs[3], trs[4], trs[5], trs[6]); + }, + set: function set(v) { + this.setRotation(v); + } + }, + scale: { + get: function get() { + return this._trs[7]; + }, + set: function set(v) { + this.setScale(v); + } + }, + scaleX: { + get: function get() { + return this._trs[7]; + }, + set: function set(value) { + if (this._trs[7] !== value) { + this._trs[7] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_SCALE); + this._eventMask & SCALE_ON && this.emit(EventType.SCALE_CHANGED); + } + } + }, + scaleY: { + get: function get() { + return this._trs[8]; + }, + set: function set(value) { + if (this._trs[8] !== value) { + this._trs[8] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_SCALE); + this._eventMask & SCALE_ON && this.emit(EventType.SCALE_CHANGED); + } + } + }, + scaleZ: { + get: function get() { + return this._trs[9]; + }, + set: function set(value) { + if (this._trs[9] !== value) { + this._trs[9] = value; + this.setLocalDirty(LocalDirtyFlag.ALL_SCALE); + true, this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + this._eventMask & SCALE_ON && this.emit(EventType.SCALE_CHANGED); + } + } + }, + skewX: { + get: function get() { + return this._skewX; + }, + set: function set(value) { + _skewWarn(value, this); + this._skewX = value; + this.setLocalDirty(LocalDirtyFlag.SKEW); + false; + } + }, + skewY: { + get: function get() { + return this._skewY; + }, + set: function set(value) { + _skewWarn(value, this); + this._skewY = value; + this.setLocalDirty(LocalDirtyFlag.SKEW); + false; + } + }, + opacity: { + get: function get() { + return this._opacity; + }, + set: function set(value) { + value = cc.misc.clampf(value, 0, 255); + if (this._opacity !== value) { + this._opacity = value; + false; + this._renderFlag |= RenderFlow.FLAG_OPACITY_COLOR; + } + }, + range: [0, 255] + }, + color: { + get: function get() { + return this._color.clone(); + }, + set: function set(value) { + if (!this._color.equals(value)) { + this._color.set(value); + false; + this._renderFlag |= RenderFlow.FLAG_COLOR; + this._eventMask & COLOR_ON && this.emit(EventType.COLOR_CHANGED, value); + } + } + }, + anchorX: { + get: function get() { + return this._anchorPoint.x; + }, + set: function set(value) { + var anchorPoint = this._anchorPoint; + if (anchorPoint.x !== value) { + anchorPoint.x = value; + this._eventMask & ANCHOR_ON && this.emit(EventType.ANCHOR_CHANGED); + } + } + }, + anchorY: { + get: function get() { + return this._anchorPoint.y; + }, + set: function set(value) { + var anchorPoint = this._anchorPoint; + if (anchorPoint.y !== value) { + anchorPoint.y = value; + this._eventMask & ANCHOR_ON && this.emit(EventType.ANCHOR_CHANGED); + } + } + }, + width: { + get: function get() { + return this._contentSize.width; + }, + set: function set(value) { + if (value !== this._contentSize.width) { + var clone; + false; + this._contentSize.width = value; + if (this._eventMask & SIZE_ON) { + false; + this.emit(EventType.SIZE_CHANGED); + } + } + } + }, + height: { + get: function get() { + return this._contentSize.height; + }, + set: function set(value) { + if (value !== this._contentSize.height) { + var clone; + false; + this._contentSize.height = value; + if (this._eventMask & SIZE_ON) { + false; + this.emit(EventType.SIZE_CHANGED); + } + } + } + }, + zIndex: { + get: function get() { + return this._localZOrder >> 16; + }, + set: function set(value) { + if (value > macro.MAX_ZINDEX) { + cc.warnID(1636); + value = macro.MAX_ZINDEX; + } else if (value < macro.MIN_ZINDEX) { + cc.warnID(1637); + value = macro.MIN_ZINDEX; + } + if (this.zIndex !== value) { + this._localZOrder = 65535 & this._localZOrder | value << 16; + this.emit(EventType.SIBLING_ORDER_CHANGED); + this._onSiblingIndexChanged(); + } + } + }, + is3DNode: { + get: function get() { + return this._is3DNode; + }, + set: function set(v) { + this._is3DNode = v; + this._update3DFunction(); + } + }, + up: { + get: function get() { + var _up = _valueTypes.Vec3.transformQuat(_urfVec3, _valueTypes.Vec3.UP, this.getWorldRotation(_urfQuat)); + return _up.clone(); + } + }, + right: { + get: function get() { + var _right = _valueTypes.Vec3.transformQuat(_urfVec3, _valueTypes.Vec3.RIGHT, this.getWorldRotation(_urfQuat)); + return _right.clone(); + } + }, + forward: { + get: function get() { + var _forward = _valueTypes.Vec3.transformQuat(_urfVec3, _valueTypes.Vec3.FORWARD, this.getWorldRotation(_urfQuat)); + return _forward.clone(); + } + } + }, + ctor: function ctor() { + this._reorderChildDirty = false; + this._widget = null; + this._renderComponent = null; + this._capturingListeners = null; + this._bubblingListeners = null; + this._touchListener = null; + this._mouseListener = null; + this._initDataFromPool(); + this._eventMask = 0; + this._cullingMask = 1; + this._childArrivalOrder = 1; + false; + this._renderFlag = RenderFlow.FLAG_TRANSFORM | RenderFlow.FLAG_OPACITY_COLOR; + }, + statics: { + EventType: EventType, + _LocalDirtyFlag: LocalDirtyFlag, + isNode: function isNode(obj) { + return obj instanceof Node && (obj.constructor === Node || !(obj instanceof cc.Scene)); + }, + BuiltinGroupIndex: BuiltinGroupIndex + }, + _onSiblingIndexChanged: function _onSiblingIndexChanged() { + this._parent && this._parent._delaySort(); + }, + _onPreDestroy: function _onPreDestroy() { + var destroyByParent = this._onPreDestroyBase(); + ActionManagerExist && cc.director.getActionManager().removeAllActionsFromTarget(this); + _currentHovered === this && (_currentHovered = null); + this._bubblingListeners && this._bubblingListeners.clear(); + this._capturingListeners && this._capturingListeners.clear(); + if (this._touchListener || this._mouseListener) { + eventManager.removeListeners(this); + if (this._touchListener) { + this._touchListener.owner = null; + this._touchListener.mask = null; + this._touchListener = null; + } + if (this._mouseListener) { + this._mouseListener.owner = null; + this._mouseListener.mask = null; + this._mouseListener = null; + } + } + false; + this._backDataIntoPool(); + this._reorderChildDirty && cc.director.__fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this); + destroyByParent || false; + }, + _onPostActivated: function _onPostActivated(active) { + var actionManager = ActionManagerExist ? cc.director.getActionManager() : null; + if (active) { + this._renderFlag |= RenderFlow.FLAG_WORLD_TRANSFORM; + actionManager && actionManager.resumeTarget(this); + eventManager.resumeTarget(this); + this._checkListenerMask(); + } else { + actionManager && actionManager.pauseTarget(this); + eventManager.pauseTarget(this); + } + }, + _onHierarchyChanged: function _onHierarchyChanged(oldParent) { + this._updateOrderOfArrival(); + _updateCullingMask(this); + this._parent && this._parent._delaySort(); + this._renderFlag |= RenderFlow.FLAG_WORLD_TRANSFORM; + this._onHierarchyChangedBase(oldParent); + cc._widgetManager && (cc._widgetManager._nodesOrderDirty = true); + oldParent && this._activeInHierarchy && this._checkListenerMask(); + false; + }, + _update3DFunction: function _update3DFunction() { + if (this._is3DNode) { + this._updateLocalMatrix = updateLocalMatrix3D; + this._calculWorldMatrix = calculWorldMatrix3D; + this._mulMat = mulMat3D; + } else { + this._updateLocalMatrix = updateLocalMatrix2D; + this._calculWorldMatrix = calculWorldMatrix2D; + this._mulMat = mulMat2D; + } + this._renderComponent && this._renderComponent._on3DNodeChanged && this._renderComponent._on3DNodeChanged(); + this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + this._localMatDirty = LocalDirtyFlag.ALL; + false; + }, + _initDataFromPool: function _initDataFromPool() { + if (!this._spaceInfo) { + false, false; + this._spaceInfo = nodeMemPool.pop(); + } + var spaceInfo = this._spaceInfo; + this._matrix = cc.mat4(spaceInfo.localMat); + _valueTypes.Mat4.identity(this._matrix); + this._worldMatrix = cc.mat4(spaceInfo.worldMat); + _valueTypes.Mat4.identity(this._worldMatrix); + this._localMatDirty = LocalDirtyFlag.ALL; + this._worldMatDirty = true; + var trs = this._trs = spaceInfo.trs; + trs[0] = 0; + trs[1] = 0; + trs[2] = 0; + trs[3] = 0; + trs[4] = 0; + trs[5] = 0; + trs[6] = 1; + trs[7] = 1; + trs[8] = 1; + trs[9] = 1; + }, + _backDataIntoPool: function _backDataIntoPool() { + if (!(false, false)) { + nodeMemPool.push(this._spaceInfo); + this._matrix = null; + this._worldMatrix = null; + this._trs = null; + this._spaceInfo = null; + } + }, + _toEuler: function _toEuler() { + if (this.is3DNode) _valueTypes.Trs.toEuler(this._eulerAngles, this._trs); else { + var z = Math.asin(this._trs[5]) / ONE_DEGREE * 2; + _valueTypes.Vec3.set(this._eulerAngles, 0, 0, z); + } + }, + _fromEuler: function _fromEuler() { + this.is3DNode ? _valueTypes.Trs.fromEuler(this._trs, this._eulerAngles) : _valueTypes.Trs.fromAngleZ(this._trs, this._eulerAngles.z); + }, + _initProperties: function _initProperties() { + this._is3DNode && this._update3DFunction(); + var trs = this._trs; + if (trs) { + var desTrs = trs; + trs = this._trs = this._spaceInfo.trs; + 11 === desTrs.length ? trs.set(desTrs.subarray(1)) : trs.set(desTrs); + } else trs = this._trs = this._spaceInfo.trs; + var NodeUtils; + false; + this._fromEuler(); + false; + }, + _onBatchCreated: function _onBatchCreated(dontSyncChildPrefab) { + this._initProperties(); + this._cullingMask = 1 << _getActualGroupIndex(this); + false; + if (!this._activeInHierarchy) { + ActionManagerExist && cc.director.getActionManager().pauseTarget(this); + eventManager.pauseTarget(this); + } + var children = this._children; + for (var i = 0, len = children.length; i < len; i++) { + var child = children[i]; + if (!dontSyncChildPrefab) { + var prefabInfo = child._prefab; + prefabInfo && prefabInfo.sync && prefabInfo.root === child && PrefabHelper.syncWithPrefab(child); + child._updateOrderOfArrival(); + } + child._onBatchCreated(dontSyncChildPrefab); + } + children.length > 0 && (this._renderFlag |= RenderFlow.FLAG_CHILDREN); + false; + }, + _checkListenerMask: function _checkListenerMask() { + if (this._touchListener) { + var mask = this._touchListener.mask = _searchComponentsInParent(this, cc.Mask); + this._mouseListener && (this._mouseListener.mask = mask); + } else this._mouseListener && (this._mouseListener.mask = _searchComponentsInParent(this, cc.Mask)); + }, + _checknSetupSysEvent: function _checknSetupSysEvent(type) { + var newAdded = false; + var forDispatch = false; + if (-1 !== _touchEvents.indexOf(type)) { + if (!this._touchListener) { + this._touchListener = cc.EventListener.create({ + event: cc.EventListener.TOUCH_ONE_BY_ONE, + swallowTouches: true, + owner: this, + mask: _searchComponentsInParent(this, cc.Mask), + onTouchBegan: _touchStartHandler, + onTouchMoved: _touchMoveHandler, + onTouchEnded: _touchEndHandler, + onTouchCancelled: _touchCancelHandler + }); + eventManager.addListener(this._touchListener, this); + newAdded = true; + } + forDispatch = true; + } else if (-1 !== _mouseEvents.indexOf(type)) { + if (!this._mouseListener) { + this._mouseListener = cc.EventListener.create({ + event: cc.EventListener.MOUSE, + _previousIn: false, + owner: this, + mask: _searchComponentsInParent(this, cc.Mask), + onMouseDown: _mouseDownHandler, + onMouseMove: _mouseMoveHandler, + onMouseUp: _mouseUpHandler, + onMouseScroll: _mouseWheelHandler + }); + eventManager.addListener(this._mouseListener, this); + newAdded = true; + } + forDispatch = true; + } + newAdded && !this._activeInHierarchy && cc.director.getScheduler().schedule((function () { + this._activeInHierarchy || eventManager.pauseTarget(this); + }), this, 0, 0, 0, false); + return forDispatch; + }, + on: function on(type, callback, target, useCapture) { + var forDispatch = this._checknSetupSysEvent(type); + if (forDispatch) return this._onDispatch(type, callback, target, useCapture); + switch (type) { + case EventType.POSITION_CHANGED: + this._eventMask |= POSITION_ON; + break; + + case EventType.SCALE_CHANGED: + this._eventMask |= SCALE_ON; + break; + + case EventType.ROTATION_CHANGED: + this._eventMask |= ROTATION_ON; + break; + + case EventType.SIZE_CHANGED: + this._eventMask |= SIZE_ON; + break; + + case EventType.ANCHOR_CHANGED: + this._eventMask |= ANCHOR_ON; + break; + + case EventType.COLOR_CHANGED: + this._eventMask |= COLOR_ON; + } + this._bubblingListeners || (this._bubblingListeners = new EventTarget()); + return this._bubblingListeners.on(type, callback, target); + }, + once: function once(type, callback, target, useCapture) { + var _this = this; + var forDispatch = this._checknSetupSysEvent(type); + var listeners = null; + listeners = forDispatch && useCapture ? this._capturingListeners = this._capturingListeners || new EventTarget() : this._bubblingListeners = this._bubblingListeners || new EventTarget(); + listeners.once(type, callback, target); + listeners.once(type, (function () { + _this.off(type, callback, target); + }), void 0); + }, + _onDispatch: function _onDispatch(type, callback, target, useCapture) { + if ("boolean" === typeof target) { + useCapture = target; + target = void 0; + } else useCapture = !!useCapture; + if (!callback) { + cc.errorID(6800); + return; + } + var listeners = null; + listeners = useCapture ? this._capturingListeners = this._capturingListeners || new EventTarget() : this._bubblingListeners = this._bubblingListeners || new EventTarget(); + if (!listeners.hasEventListener(type, callback, target)) { + listeners.on(type, callback, target); + target && target.__eventTargets && target.__eventTargets.push(this); + } + return callback; + }, + off: function off(type, callback, target, useCapture) { + var touchEvent = -1 !== _touchEvents.indexOf(type); + var mouseEvent = !touchEvent && -1 !== _mouseEvents.indexOf(type); + if (touchEvent || mouseEvent) { + this._offDispatch(type, callback, target, useCapture); + if (touchEvent) { + if (this._touchListener && !_checkListeners(this, _touchEvents)) { + eventManager.removeListener(this._touchListener); + this._touchListener = null; + } + } else if (mouseEvent && this._mouseListener && !_checkListeners(this, _mouseEvents)) { + eventManager.removeListener(this._mouseListener); + this._mouseListener = null; + } + } else if (this._bubblingListeners) { + this._bubblingListeners.off(type, callback, target); + var hasListeners = this._bubblingListeners.hasEventListener(type); + if (!hasListeners) switch (type) { + case EventType.POSITION_CHANGED: + this._eventMask &= ~POSITION_ON; + break; + + case EventType.SCALE_CHANGED: + this._eventMask &= ~SCALE_ON; + break; + + case EventType.ROTATION_CHANGED: + this._eventMask &= ~ROTATION_ON; + break; + + case EventType.SIZE_CHANGED: + this._eventMask &= ~SIZE_ON; + break; + + case EventType.ANCHOR_CHANGED: + this._eventMask &= ~ANCHOR_ON; + break; + + case EventType.COLOR_CHANGED: + this._eventMask &= ~COLOR_ON; + } + } + }, + _offDispatch: function _offDispatch(type, callback, target, useCapture) { + if ("boolean" === typeof target) { + useCapture = target; + target = void 0; + } else useCapture = !!useCapture; + if (callback) { + var listeners = useCapture ? this._capturingListeners : this._bubblingListeners; + if (listeners) { + listeners.off(type, callback, target); + target && target.__eventTargets && js.array.fastRemove(target.__eventTargets, this); + } + } else { + this._capturingListeners && this._capturingListeners.removeAll(type); + this._bubblingListeners && this._bubblingListeners.removeAll(type); + } + }, + targetOff: function targetOff(target) { + var listeners = this._bubblingListeners; + if (listeners) { + listeners.targetOff(target); + this._eventMask & POSITION_ON && !listeners.hasEventListener(EventType.POSITION_CHANGED) && (this._eventMask &= ~POSITION_ON); + this._eventMask & SCALE_ON && !listeners.hasEventListener(EventType.SCALE_CHANGED) && (this._eventMask &= ~SCALE_ON); + this._eventMask & ROTATION_ON && !listeners.hasEventListener(EventType.ROTATION_CHANGED) && (this._eventMask &= ~ROTATION_ON); + this._eventMask & SIZE_ON && !listeners.hasEventListener(EventType.SIZE_CHANGED) && (this._eventMask &= ~SIZE_ON); + this._eventMask & ANCHOR_ON && !listeners.hasEventListener(EventType.ANCHOR_CHANGED) && (this._eventMask &= ~ANCHOR_ON); + this._eventMask & COLOR_ON && !listeners.hasEventListener(EventType.COLOR_CHANGED) && (this._eventMask &= ~COLOR_ON); + } + this._capturingListeners && this._capturingListeners.targetOff(target); + target && target.__eventTargets && js.array.fastRemove(target.__eventTargets, this); + if (this._touchListener && !_checkListeners(this, _touchEvents)) { + eventManager.removeListener(this._touchListener); + this._touchListener = null; + } + if (this._mouseListener && !_checkListeners(this, _mouseEvents)) { + eventManager.removeListener(this._mouseListener); + this._mouseListener = null; + } + }, + hasEventListener: function hasEventListener(type) { + var has = false; + this._bubblingListeners && (has = this._bubblingListeners.hasEventListener(type)); + !has && this._capturingListeners && (has = this._capturingListeners.hasEventListener(type)); + return has; + }, + emit: function emit(type, arg1, arg2, arg3, arg4, arg5) { + this._bubblingListeners && this._bubblingListeners.emit(type, arg1, arg2, arg3, arg4, arg5); + }, + dispatchEvent: function dispatchEvent(event) { + _doDispatchEvent(this, event); + _cachedArray.length = 0; + }, + pauseSystemEvents: function pauseSystemEvents(recursive) { + eventManager.pauseTarget(this, recursive); + }, + resumeSystemEvents: function resumeSystemEvents(recursive) { + eventManager.resumeTarget(this, recursive); + }, + _hitTest: function _hitTest(point, listener) { + var w = this._contentSize.width, h = this._contentSize.height, cameraPt = _htVec3a, testPt = _htVec3b; + var camera = cc.Camera.findCamera(this); + camera ? camera.getScreenToWorldPoint(point, cameraPt) : cameraPt.set(point); + this._updateWorldMatrix(); + if (!_valueTypes.Mat4.invert(_mat4_temp, this._worldMatrix)) return false; + _valueTypes.Vec2.transformMat4(testPt, cameraPt, _mat4_temp); + testPt.x += this._anchorPoint.x * w; + testPt.y += this._anchorPoint.y * h; + var hit = false; + if (testPt.x >= 0 && testPt.y >= 0 && testPt.x <= w && testPt.y <= h) { + hit = true; + if (listener && listener.mask) { + var mask = listener.mask; + var parent = this; + var length = mask ? mask.length : 0; + for (var i = 0, j = 0; parent && j < length; ++i, parent = parent.parent) { + var temp = mask[j]; + if (i === temp.index) { + if (parent !== temp.node) { + mask.length = j; + break; + } + var comp = parent.getComponent(cc.Mask); + if (comp && comp._enabled && !comp._hitTest(cameraPt)) { + hit = false; + break; + } + j++; + } else if (i > temp.index) { + mask.length = j; + break; + } + } + } + } + return hit; + }, + _getCapturingTargets: function _getCapturingTargets(type, array) { + var parent = this.parent; + while (parent) { + parent._capturingListeners && parent._capturingListeners.hasEventListener(type) && array.push(parent); + parent = parent.parent; + } + }, + _getBubblingTargets: function _getBubblingTargets(type, array) { + var parent = this.parent; + while (parent) { + parent._bubblingListeners && parent._bubblingListeners.hasEventListener(type) && array.push(parent); + parent = parent.parent; + } + }, + runAction: ActionManagerExist ? function (action) { + if (!this.active) return; + cc.assertID(action, 1618); + var am = cc.director.getActionManager(); + if (!am._suppressDeprecation) { + am._suppressDeprecation = true; + cc.warnID(1639); + } + am.addAction(action, this, false); + return action; + } : emptyFunc, + pauseAllActions: ActionManagerExist ? function () { + cc.director.getActionManager().pauseTarget(this); + } : emptyFunc, + resumeAllActions: ActionManagerExist ? function () { + cc.director.getActionManager().resumeTarget(this); + } : emptyFunc, + stopAllActions: ActionManagerExist ? function () { + cc.director.getActionManager().removeAllActionsFromTarget(this); + } : emptyFunc, + stopAction: ActionManagerExist ? function (action) { + cc.director.getActionManager().removeAction(action); + } : emptyFunc, + stopActionByTag: ActionManagerExist ? function (tag) { + if (tag === cc.Action.TAG_INVALID) { + cc.logID(1612); + return; + } + cc.director.getActionManager().removeActionByTag(tag, this); + } : emptyFunc, + getActionByTag: ActionManagerExist ? function (tag) { + if (tag === cc.Action.TAG_INVALID) { + cc.logID(1613); + return null; + } + return cc.director.getActionManager().getActionByTag(tag, this); + } : function () { + return null; + }, + getNumberOfRunningActions: ActionManagerExist ? function () { + return cc.director.getActionManager().getNumberOfRunningActionsInTarget(this); + } : function () { + return 0; + }, + getPosition: function getPosition(out) { + out = out || new _valueTypes.Vec3(); + return _valueTypes.Trs.toPosition(out, this._trs); + }, + setPosition: function setPosition(newPosOrX, y, z) { + var x; + if (void 0 === y) { + x = newPosOrX.x; + y = newPosOrX.y; + z = newPosOrX.z; + } else x = newPosOrX; + var trs = this._trs; + void 0 === z && (z = trs[2]); + if (trs[0] === x && trs[1] === y && trs[2] === z) return; + var oldPosition; + false; + trs[0] = x; + trs[1] = y; + trs[2] = z; + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + true, this._renderFlag |= RenderFlow.FLAG_WORLD_TRANSFORM; + if (this._eventMask & POSITION_ON) { + false; + this.emit(EventType.POSITION_CHANGED); + } + }, + getScale: function getScale(out) { + if (void 0 !== out) return _valueTypes.Trs.toScale(out, this._trs); + cc.errorID(1400, "cc.Node.getScale", "cc.Node.scale or cc.Node.getScale(cc.Vec3)"); + return this._trs[7]; + }, + setScale: function setScale(newScaleOrX, y, z) { + var x; + if (newScaleOrX && "number" !== typeof newScaleOrX) { + x = newScaleOrX.x; + y = newScaleOrX.y; + z = newScaleOrX.z; + } else if (void 0 !== newScaleOrX && void 0 === y) { + x = newScaleOrX; + y = newScaleOrX; + z = newScaleOrX; + } else x = newScaleOrX; + var trs = this._trs; + void 0 === z && (z = trs[9]); + if (trs[7] !== x || trs[8] !== y || trs[9] !== z) { + trs[7] = x; + trs[8] = y; + trs[9] = z; + this.setLocalDirty(LocalDirtyFlag.ALL_SCALE); + true, this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + this._eventMask & SCALE_ON && this.emit(EventType.SCALE_CHANGED); + } + }, + getRotation: function getRotation(out) { + if (out instanceof _valueTypes.Quat) return _valueTypes.Trs.toRotation(out, this._trs); + true; + cc.warn("`cc.Node.getRotation()` is deprecated since v2.1.0, please use `-cc.Node.angle` instead. (`this.node.getRotation()` -> `-this.node.angle`)"); + return -this.angle; + }, + setRotation: function setRotation(rotation, y, z, w) { + if ("number" === typeof rotation && void 0 === y) { + true; + cc.warn("`cc.Node.setRotation(degree)` is deprecated since v2.1.0, please set `-cc.Node.angle` instead. (`this.node.setRotation(x)` -> `this.node.angle = -x`)"); + this.angle = -rotation; + } else { + var x = rotation; + if (void 0 === y) { + x = rotation.x; + y = rotation.y; + z = rotation.z; + w = rotation.w; + } + var trs = this._trs; + if (trs[3] !== x || trs[4] !== y || trs[5] !== z || trs[6] !== w) { + trs[3] = x; + trs[4] = y; + trs[5] = z; + trs[6] = w; + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + this._eventMask & ROTATION_ON && this.emit(EventType.ROTATION_CHANGED); + false; + } + } + }, + getContentSize: function getContentSize() { + return cc.size(this._contentSize.width, this._contentSize.height); + }, + setContentSize: function setContentSize(size, height) { + var locContentSize = this._contentSize; + var clone; + if (void 0 === height) { + if (size.width === locContentSize.width && size.height === locContentSize.height) return; + false; + locContentSize.width = size.width; + locContentSize.height = size.height; + } else { + if (size === locContentSize.width && height === locContentSize.height) return; + false; + locContentSize.width = size; + locContentSize.height = height; + } + if (this._eventMask & SIZE_ON) { + false; + this.emit(EventType.SIZE_CHANGED); + } + }, + getAnchorPoint: function getAnchorPoint() { + return cc.v2(this._anchorPoint); + }, + setAnchorPoint: function setAnchorPoint(point, y) { + var locAnchorPoint = this._anchorPoint; + if (void 0 === y) { + if (point.x === locAnchorPoint.x && point.y === locAnchorPoint.y) return; + locAnchorPoint.x = point.x; + locAnchorPoint.y = point.y; + } else { + if (point === locAnchorPoint.x && y === locAnchorPoint.y) return; + locAnchorPoint.x = point; + locAnchorPoint.y = y; + } + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + this._eventMask & ANCHOR_ON && this.emit(EventType.ANCHOR_CHANGED); + }, + _invTransformPoint: function _invTransformPoint(out, pos) { + this._parent ? this._parent._invTransformPoint(out, pos) : _valueTypes.Vec3.copy(out, pos); + var ltrs = this._trs; + _valueTypes.Trs.toPosition(_tpVec3a, ltrs); + _valueTypes.Vec3.sub(out, out, _tpVec3a); + _valueTypes.Trs.toRotation(_tpQuata, ltrs); + _valueTypes.Quat.conjugate(_tpQuatb, _tpQuata); + _valueTypes.Vec3.transformQuat(out, out, _tpQuatb); + _valueTypes.Trs.toScale(_tpVec3a, ltrs); + _valueTypes.Vec3.inverseSafe(_tpVec3b, _tpVec3a); + _valueTypes.Vec3.mul(out, out, _tpVec3b); + return out; + }, + getWorldPosition: function getWorldPosition(out) { + _valueTypes.Trs.toPosition(out, this._trs); + var curr = this._parent; + var ltrs; + while (curr) { + ltrs = curr._trs; + _valueTypes.Trs.toScale(_gwpVec3, ltrs); + _valueTypes.Vec3.mul(out, out, _gwpVec3); + _valueTypes.Trs.toRotation(_gwpQuat, ltrs); + _valueTypes.Vec3.transformQuat(out, out, _gwpQuat); + _valueTypes.Trs.toPosition(_gwpVec3, ltrs); + _valueTypes.Vec3.add(out, out, _gwpVec3); + curr = curr._parent; + } + return out; + }, + setWorldPosition: function setWorldPosition(pos) { + var ltrs = this._trs; + var oldPosition; + false; + this._parent ? this._parent._invTransformPoint(_swpVec3, pos) : _valueTypes.Vec3.copy(_swpVec3, pos); + _valueTypes.Trs.fromPosition(ltrs, _swpVec3); + this.setLocalDirty(LocalDirtyFlag.ALL_POSITION); + if (this._eventMask & POSITION_ON) { + false; + this.emit(EventType.POSITION_CHANGED); + } + }, + getWorldRotation: function getWorldRotation(out) { + _valueTypes.Trs.toRotation(_gwrQuat, this._trs); + _valueTypes.Quat.copy(out, _gwrQuat); + var curr = this._parent; + while (curr) { + _valueTypes.Trs.toRotation(_gwrQuat, curr._trs); + _valueTypes.Quat.mul(out, _gwrQuat, out); + curr = curr._parent; + } + return out; + }, + setWorldRotation: function setWorldRotation(val) { + if (this._parent) { + this._parent.getWorldRotation(_swrQuat); + _valueTypes.Quat.conjugate(_swrQuat, _swrQuat); + _valueTypes.Quat.mul(_swrQuat, _swrQuat, val); + } else _valueTypes.Quat.copy(_swrQuat, val); + _valueTypes.Trs.fromRotation(this._trs, _swrQuat); + false; + this.setLocalDirty(LocalDirtyFlag.ALL_ROTATION); + }, + getWorldScale: function getWorldScale(out) { + _valueTypes.Trs.toScale(_gwsVec3, this._trs); + _valueTypes.Vec3.copy(out, _gwsVec3); + var curr = this._parent; + while (curr) { + _valueTypes.Trs.toScale(_gwsVec3, curr._trs); + _valueTypes.Vec3.mul(out, out, _gwsVec3); + curr = curr._parent; + } + return out; + }, + setWorldScale: function setWorldScale(scale) { + if (this._parent) { + this._parent.getWorldScale(_swsVec3); + _valueTypes.Vec3.div(_swsVec3, scale, _swsVec3); + } else _valueTypes.Vec3.copy(_swsVec3, scale); + _valueTypes.Trs.fromScale(this._trs, _swsVec3); + this.setLocalDirty(LocalDirtyFlag.ALL_SCALE); + }, + getWorldRT: function getWorldRT(out) { + var opos = _gwrtVec3a; + var orot = _gwrtQuata; + var ltrs = this._trs; + _valueTypes.Trs.toPosition(opos, ltrs); + _valueTypes.Trs.toRotation(orot, ltrs); + var curr = this._parent; + while (curr) { + ltrs = curr._trs; + _valueTypes.Trs.toScale(_gwrtVec3b, ltrs); + _valueTypes.Vec3.mul(opos, opos, _gwrtVec3b); + _valueTypes.Trs.toRotation(_gwrtQuatb, ltrs); + _valueTypes.Vec3.transformQuat(opos, opos, _gwrtQuatb); + _valueTypes.Trs.toPosition(_gwrtVec3b, ltrs); + _valueTypes.Vec3.add(opos, opos, _gwrtVec3b); + _valueTypes.Quat.mul(orot, _gwrtQuatb, orot); + curr = curr._parent; + } + _valueTypes.Mat4.fromRT(out, orot, opos); + return out; + }, + lookAt: function lookAt(pos, up) { + this.getWorldPosition(_laVec3); + _valueTypes.Vec3.sub(_laVec3, _laVec3, pos); + _valueTypes.Vec3.normalize(_laVec3, _laVec3); + _valueTypes.Quat.fromViewUp(_laQuat, _laVec3, up); + this.setWorldRotation(_laQuat); + }, + _updateLocalMatrix: updateLocalMatrix2D, + _calculWorldMatrix: function _calculWorldMatrix() { + this._localMatDirty & LocalDirtyFlag.TRSS && this._updateLocalMatrix(); + var parent = this._parent; + parent ? this._mulMat(this._worldMatrix, parent._worldMatrix, this._matrix) : _valueTypes.Mat4.copy(this._worldMatrix, this._matrix); + this._worldMatDirty = false; + }, + _mulMat: mulMat2D, + _updateWorldMatrix: function _updateWorldMatrix() { + this._parent && this._parent._updateWorldMatrix(); + if (this._worldMatDirty) { + this._calculWorldMatrix(); + var children = this._children; + for (var i = 0, l = children.length; i < l; i++) children[i]._worldMatDirty = true; + } + }, + setLocalDirty: function setLocalDirty(flag) { + this._localMatDirty |= flag; + this._worldMatDirty = true; + flag === LocalDirtyFlag.ALL_POSITION || flag === LocalDirtyFlag.POSITION ? this._renderFlag |= RenderFlow.FLAG_WORLD_TRANSFORM : this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + }, + setWorldDirty: function setWorldDirty() { + this._worldMatDirty = true; + }, + getLocalMatrix: function getLocalMatrix(out) { + this._updateLocalMatrix(); + return _valueTypes.Mat4.copy(out, this._matrix); + }, + getWorldMatrix: function getWorldMatrix(out) { + this._updateWorldMatrix(); + return _valueTypes.Mat4.copy(out, this._worldMatrix); + }, + convertToNodeSpaceAR: function convertToNodeSpaceAR(worldPoint, out) { + this._updateWorldMatrix(); + _valueTypes.Mat4.invert(_mat4_temp, this._worldMatrix); + if (worldPoint instanceof cc.Vec2) { + out = out || new cc.Vec2(); + return _valueTypes.Vec2.transformMat4(out, worldPoint, _mat4_temp); + } + out = out || new cc.Vec3(); + return _valueTypes.Vec3.transformMat4(out, worldPoint, _mat4_temp); + }, + convertToWorldSpaceAR: function convertToWorldSpaceAR(nodePoint, out) { + this._updateWorldMatrix(); + if (nodePoint instanceof cc.Vec2) { + out = out || new cc.Vec2(); + return _valueTypes.Vec2.transformMat4(out, nodePoint, this._worldMatrix); + } + out = out || new cc.Vec3(); + return _valueTypes.Vec3.transformMat4(out, nodePoint, this._worldMatrix); + }, + convertToNodeSpace: function convertToNodeSpace(worldPoint) { + this._updateWorldMatrix(); + _valueTypes.Mat4.invert(_mat4_temp, this._worldMatrix); + var out = new cc.Vec2(); + _valueTypes.Vec2.transformMat4(out, worldPoint, _mat4_temp); + out.x += this._anchorPoint.x * this._contentSize.width; + out.y += this._anchorPoint.y * this._contentSize.height; + return out; + }, + convertToWorldSpace: function convertToWorldSpace(nodePoint) { + this._updateWorldMatrix(); + var out = new cc.Vec2(nodePoint.x - this._anchorPoint.x * this._contentSize.width, nodePoint.y - this._anchorPoint.y * this._contentSize.height); + return _valueTypes.Vec2.transformMat4(out, out, this._worldMatrix); + }, + getNodeToParentTransform: function getNodeToParentTransform(out) { + out || (out = AffineTrans.identity()); + this._updateLocalMatrix(); + var contentSize = this._contentSize; + _vec3_temp.x = -this._anchorPoint.x * contentSize.width; + _vec3_temp.y = -this._anchorPoint.y * contentSize.height; + _valueTypes.Mat4.copy(_mat4_temp, this._matrix); + _valueTypes.Mat4.transform(_mat4_temp, _mat4_temp, _vec3_temp); + return AffineTrans.fromMat4(out, _mat4_temp); + }, + getNodeToParentTransformAR: function getNodeToParentTransformAR(out) { + out || (out = AffineTrans.identity()); + this._updateLocalMatrix(); + return AffineTrans.fromMat4(out, this._matrix); + }, + getNodeToWorldTransform: function getNodeToWorldTransform(out) { + out || (out = AffineTrans.identity()); + this._updateWorldMatrix(); + var contentSize = this._contentSize; + _vec3_temp.x = -this._anchorPoint.x * contentSize.width; + _vec3_temp.y = -this._anchorPoint.y * contentSize.height; + _valueTypes.Mat4.copy(_mat4_temp, this._worldMatrix); + _valueTypes.Mat4.transform(_mat4_temp, _mat4_temp, _vec3_temp); + return AffineTrans.fromMat4(out, _mat4_temp); + }, + getNodeToWorldTransformAR: function getNodeToWorldTransformAR(out) { + out || (out = AffineTrans.identity()); + this._updateWorldMatrix(); + return AffineTrans.fromMat4(out, this._worldMatrix); + }, + getParentToNodeTransform: function getParentToNodeTransform(out) { + out || (out = AffineTrans.identity()); + this._updateLocalMatrix(); + _valueTypes.Mat4.invert(_mat4_temp, this._matrix); + return AffineTrans.fromMat4(out, _mat4_temp); + }, + getWorldToNodeTransform: function getWorldToNodeTransform(out) { + out || (out = AffineTrans.identity()); + this._updateWorldMatrix(); + _valueTypes.Mat4.invert(_mat4_temp, this._worldMatrix); + return AffineTrans.fromMat4(out, _mat4_temp); + }, + convertTouchToNodeSpace: function convertTouchToNodeSpace(touch) { + return this.convertToNodeSpace(touch.getLocation()); + }, + convertTouchToNodeSpaceAR: function convertTouchToNodeSpaceAR(touch) { + return this.convertToNodeSpaceAR(touch.getLocation()); + }, + getBoundingBox: function getBoundingBox() { + this._updateLocalMatrix(); + var width = this._contentSize.width; + var height = this._contentSize.height; + var rect = cc.rect(-this._anchorPoint.x * width, -this._anchorPoint.y * height, width, height); + return rect.transformMat4(rect, this._matrix); + }, + getBoundingBoxToWorld: function getBoundingBoxToWorld() { + if (this._parent) { + this._parent._updateWorldMatrix(); + return this._getBoundingBoxTo(); + } + return this.getBoundingBox(); + }, + _getBoundingBoxTo: function _getBoundingBoxTo() { + var width = this._contentSize.width; + var height = this._contentSize.height; + var rect = cc.rect(-this._anchorPoint.x * width, -this._anchorPoint.y * height, width, height); + this._calculWorldMatrix(); + rect.transformMat4(rect, this._worldMatrix); + if (!this._children) return rect; + var locChildren = this._children; + for (var i = 0; i < locChildren.length; i++) { + var child = locChildren[i]; + if (child && child.active) { + var childRect = child._getBoundingBoxTo(); + childRect && rect.union(rect, childRect); + } + } + return rect; + }, + _updateOrderOfArrival: function _updateOrderOfArrival() { + var arrivalOrder = this._parent ? ++this._parent._childArrivalOrder : 0; + this._localZOrder = 4294901760 & this._localZOrder | arrivalOrder; + this.emit(EventType.SIBLING_ORDER_CHANGED); + }, + addChild: function addChild(child, zIndex, name) { + false; + cc.assertID(child, 1606); + cc.assertID(null === child._parent, 1605); + child.parent = this; + void 0 !== zIndex && (child.zIndex = zIndex); + void 0 !== name && (child.name = name); + }, + cleanup: function cleanup() { + ActionManagerExist && cc.director.getActionManager().removeAllActionsFromTarget(this); + eventManager.removeListeners(this); + var i, len = this._children.length, node; + for (i = 0; i < len; ++i) { + node = this._children[i]; + node && node.cleanup(); + } + }, + sortAllChildren: function sortAllChildren() { + if (this._reorderChildDirty) { + this._reorderChildDirty = false; + var _children = this._children, child; + this._childArrivalOrder = 1; + for (var i = 0, len = _children.length; i < len; i++) { + child = _children[i]; + child._updateOrderOfArrival(); + } + eventManager._setDirtyForNode(this); + if (_children.length > 1) { + var _child, child2; + for (var _i2 = 1, count = _children.length; _i2 < count; _i2++) { + _child = _children[_i2]; + var j = _i2; + for (; j > 0 && (child2 = _children[j - 1])._localZOrder > _child._localZOrder; j--) _children[j] = child2; + _children[j] = _child; + } + this.emit(EventType.CHILD_REORDER, this); + } + cc.director.__fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this); + } + }, + _delaySort: function _delaySort() { + if (!this._reorderChildDirty) { + this._reorderChildDirty = true; + cc.director.__fastOn(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this); + } + }, + _restoreProperties: false, + onRestore: false + }; + false; + var Node = cc.Class(NodeDefines); + var _p = Node.prototype; + js.getset(_p, "position", _p.getPosition, _p.setPosition, false, true); + var vec3_tmp; + false; + cc.Node = module.exports = Node; + }), { + "./event-manager": 184, + "./event/event": 187, + "./event/event-target": 186, + "./platform/CCMacro": 244, + "./platform/js": 260, + "./renderer/render-flow": 272, + "./utils/affine-transform": 315, + "./utils/base-node": 316, + "./utils/prefab-helper": 327, + "./utils/trans-pool": 333, + "./value-types": 339 + }], + 74: [(function (require, module, exports) { + "use strict"; + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it; + if ("undefined" === typeof Symbol || null == o[Symbol.iterator]) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && "number" === typeof o.length) { + it && (o = it); + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + it = o[Symbol.iterator](); + return it.next.bind(it); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if ("string" === typeof o) return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + "Object" === n && o.constructor && (n = o.constructor.name); + if ("Map" === n || "Set" === n) return Array.from(o); + if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + (null == len || len > arr.length) && (len = arr.length); + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + var Node = require("./CCNode"); + var RenderFlow = require("./renderer/render-flow"); + var HideInHierarchy = cc.Object.Flags.HideInHierarchy; + var LocalDirtyFlag = Node._LocalDirtyFlag; + var POSITION_ON = 1; + var PrivateNode = cc.Class({ + name: "cc.PrivateNode", + extends: Node, + properties: { + x: { + get: function get() { + return this._originPos.x; + }, + set: function set(value) { + var localPosition = this._originPos; + if (value !== localPosition.x) { + localPosition.x = value; + this._posDirty(true); + } + }, + override: true + }, + y: { + get: function get() { + return this._originPos.y; + }, + set: function set(value) { + var localPosition = this._originPos; + if (value !== localPosition.y) { + localPosition.y = value; + this._posDirty(true); + } + }, + override: true + }, + zIndex: { + get: function get() { + return cc.macro.MIN_ZINDEX; + }, + set: function set() { }, + override: true + }, + showInEditor: { + default: false, + editorOnly: true, + override: true + } + }, + ctor: function ctor(name) { + this._localZOrder = cc.macro.MIN_ZINDEX << 16; + this._originPos = cc.v2(); + false; + }, + _posDirty: function _posDirty(sendEvent) { + this.setLocalDirty(LocalDirtyFlag.POSITION); + true, this._renderFlag |= RenderFlow.FLAG_TRANSFORM; + true === sendEvent && this._eventMask & POSITION_ON && this.emit(Node.EventType.POSITION_CHANGED); + }, + _updateLocalMatrix: function _updateLocalMatrix() { + if (!this._localMatDirty) return; + var parent = this.parent; + if (parent) { + this._trs[0] = this._originPos.x - (parent._anchorPoint.x - .5) * parent._contentSize.width; + this._trs[1] = this._originPos.y - (parent._anchorPoint.y - .5) * parent._contentSize.height; + } + this._super(); + }, + getPosition: function getPosition() { + return new cc.Vec2(this._originPos); + }, + setPosition: function setPosition(x, y) { + if (void 0 === y) { + x = x.x; + y = x.y; + } + var pos = this._originPos; + if (pos.x === x && pos.y === y) return; + pos.x = x; + pos.y = y; + this._posDirty(true); + }, + setParent: function setParent(value) { + var oldParent = this._parent; + this._super(value); + if (oldParent !== value) { + oldParent && oldParent.off(Node.EventType.ANCHOR_CHANGED, this._posDirty, this); + value && value.on(Node.EventType.ANCHOR_CHANGED, this._posDirty, this); + } + }, + _updateOrderOfArrival: function _updateOrderOfArrival() { } + }); + var proto = PrivateNode.prototype; + cc.js.getset(proto, "parent", proto.getParent, proto.setParent); + cc.js.getset(proto, "position", proto.getPosition, proto.setPosition); + false; + cc.PrivateNode = module.exports = PrivateNode; + }), { + "./CCNode": 73, + "./renderer/render-flow": 272 + }], + 75: [(function (require, module, exports) { + "use strict"; + var NIL = function NIL() { }; + cc.Scene = cc.Class({ + name: "cc.Scene", + extends: require("./CCNode"), + properties: { + _is3DNode: { + default: true, + override: true + }, + autoReleaseAssets: false + }, + ctor: function ctor() { + this._anchorPoint.x = 0; + this._anchorPoint.y = 0; + this._activeInHierarchy = false; + this._inited = !cc.game._isCloning; + false; + this.dependAssets = null; + }, + destroy: function destroy() { + if (cc.Object.prototype.destroy.call(this)) { + var children = this._children; + for (var i = 0; i < children.length; ++i) children[i].active = false; + } + this._active = false; + this._activeInHierarchy = false; + }, + _onHierarchyChanged: NIL, + _instantiate: null, + _load: function _load() { + if (!this._inited) { + false; + this._onBatchCreated(false); + this._inited = true; + } + }, + _activate: function _activate(active) { + active = false !== active; + false, false; + cc.director._nodeActivator.activateNode(this, active); + } + }); + module.exports = cc.Scene; + }), { + "./CCNode": 73 + }], + 76: [(function (require, module, exports) { + "use strict"; + var js = require("./platform/js"); + var IdGenerater = require("./platform/id-generater"); + var MAX_POOL_SIZE = 20; + var idGenerater = new IdGenerater("Scheduler"); + var ListEntry = function ListEntry(target, priority, paused, markedForDeletion) { + this.target = target; + this.priority = priority; + this.paused = paused; + this.markedForDeletion = markedForDeletion; + }; + var _listEntries = []; + ListEntry.get = function (target, priority, paused, markedForDeletion) { + var result = _listEntries.pop(); + if (result) { + result.target = target; + result.priority = priority; + result.paused = paused; + result.markedForDeletion = markedForDeletion; + } else result = new ListEntry(target, priority, paused, markedForDeletion); + return result; + }; + ListEntry.put = function (entry) { + if (_listEntries.length < MAX_POOL_SIZE) { + entry.target = null; + _listEntries.push(entry); + } + }; + var HashUpdateEntry = function HashUpdateEntry(list, entry, target, callback) { + this.list = list; + this.entry = entry; + this.target = target; + this.callback = callback; + }; + var _hashUpdateEntries = []; + HashUpdateEntry.get = function (list, entry, target, callback) { + var result = _hashUpdateEntries.pop(); + if (result) { + result.list = list; + result.entry = entry; + result.target = target; + result.callback = callback; + } else result = new HashUpdateEntry(list, entry, target, callback); + return result; + }; + HashUpdateEntry.put = function (entry) { + if (_hashUpdateEntries.length < MAX_POOL_SIZE) { + entry.list = entry.entry = entry.target = entry.callback = null; + _hashUpdateEntries.push(entry); + } + }; + var HashTimerEntry = function HashTimerEntry(timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused) { + var _t = this; + _t.timers = timers; + _t.target = target; + _t.timerIndex = timerIndex; + _t.currentTimer = currentTimer; + _t.currentTimerSalvaged = currentTimerSalvaged; + _t.paused = paused; + }; + var _hashTimerEntries = []; + HashTimerEntry.get = function (timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused) { + var result = _hashTimerEntries.pop(); + if (result) { + result.timers = timers; + result.target = target; + result.timerIndex = timerIndex; + result.currentTimer = currentTimer; + result.currentTimerSalvaged = currentTimerSalvaged; + result.paused = paused; + } else result = new HashTimerEntry(timers, target, timerIndex, currentTimer, currentTimerSalvaged, paused); + return result; + }; + HashTimerEntry.put = function (entry) { + if (_hashTimerEntries.length < MAX_POOL_SIZE) { + entry.timers = entry.target = entry.currentTimer = null; + _hashTimerEntries.push(entry); + } + }; + function CallbackTimer() { + this._lock = false; + this._scheduler = null; + this._elapsed = -1; + this._runForever = false; + this._useDelay = false; + this._timesExecuted = 0; + this._repeat = 0; + this._delay = 0; + this._interval = 0; + this._target = null; + this._callback = null; + } + var proto = CallbackTimer.prototype; + proto.initWithCallback = function (scheduler, callback, target, seconds, repeat, delay) { + this._lock = false; + this._scheduler = scheduler; + this._target = target; + this._callback = callback; + this._elapsed = -1; + this._interval = seconds; + this._delay = delay; + this._useDelay = this._delay > 0; + this._repeat = repeat; + this._runForever = this._repeat === cc.macro.REPEAT_FOREVER; + return true; + }; + proto.getInterval = function () { + return this._interval; + }; + proto.setInterval = function (interval) { + this._interval = interval; + }; + proto.update = function (dt) { + if (-1 === this._elapsed) { + this._elapsed = 0; + this._timesExecuted = 0; + } else { + this._elapsed += dt; + if (this._runForever && !this._useDelay) { + if (this._elapsed >= this._interval) { + this.trigger(); + this._elapsed = 0; + } + } else { + if (this._useDelay) { + if (this._elapsed >= this._delay) { + this.trigger(); + this._elapsed -= this._delay; + this._timesExecuted += 1; + this._useDelay = false; + } + } else if (this._elapsed >= this._interval) { + this.trigger(); + this._elapsed = 0; + this._timesExecuted += 1; + } + this._callback && !this._runForever && this._timesExecuted > this._repeat && this.cancel(); + } + } + }; + proto.getCallback = function () { + return this._callback; + }; + proto.trigger = function () { + if (this._target && this._callback) { + this._lock = true; + this._callback.call(this._target, this._elapsed); + this._lock = false; + } + }; + proto.cancel = function () { + this._scheduler.unschedule(this._callback, this._target); + }; + var _timers = []; + CallbackTimer.get = function () { + return _timers.pop() || new CallbackTimer(); + }; + CallbackTimer.put = function (timer) { + if (_timers.length < MAX_POOL_SIZE && !timer._lock) { + timer._scheduler = timer._target = timer._callback = null; + _timers.push(timer); + } + }; + cc.Scheduler = function () { + this._timeScale = 1; + this._updatesNegList = []; + this._updates0List = []; + this._updatesPosList = []; + this._hashForUpdates = js.createMap(true); + this._hashForTimers = js.createMap(true); + this._currentTarget = null; + this._currentTargetSalvaged = false; + this._updateHashLocked = false; + this._arrayForTimers = []; + }; + cc.Scheduler.prototype = { + constructor: cc.Scheduler, + _removeHashElement: function _removeHashElement(element) { + delete this._hashForTimers[element.target._id]; + var arr = this._arrayForTimers; + for (var i = 0, l = arr.length; i < l; i++) if (arr[i] === element) { + arr.splice(i, 1); + break; + } + HashTimerEntry.put(element); + }, + _removeUpdateFromHash: function _removeUpdateFromHash(entry) { + var targetId = entry.target._id; + var self = this, element = self._hashForUpdates[targetId]; + if (element) { + var list = element.list, listEntry = element.entry; + for (var i = 0, l = list.length; i < l; i++) if (list[i] === listEntry) { + list.splice(i, 1); + break; + } + delete self._hashForUpdates[targetId]; + ListEntry.put(listEntry); + HashUpdateEntry.put(element); + } + }, + _priorityIn: function _priorityIn(ppList, listElement, priority) { + for (var i = 0; i < ppList.length; i++) if (priority < ppList[i].priority) { + ppList.splice(i, 0, listElement); + return; + } + ppList.push(listElement); + }, + _appendIn: function _appendIn(ppList, listElement) { + ppList.push(listElement); + }, + enableForTarget: function enableForTarget(target) { + target._id || (target.__instanceId ? cc.warnID(1513) : target._id = idGenerater.getNewId()); + }, + setTimeScale: function setTimeScale(timeScale) { + this._timeScale = timeScale; + }, + getTimeScale: function getTimeScale() { + return this._timeScale; + }, + update: function update(dt) { + this._updateHashLocked = true; + 1 !== this._timeScale && (dt *= this._timeScale); + var i, list, len, entry; + for (i = 0, list = this._updatesNegList, len = list.length; i < len; i++) { + entry = list[i]; + entry.paused || entry.markedForDeletion || entry.target.update(dt); + } + for (i = 0, list = this._updates0List, len = list.length; i < len; i++) { + entry = list[i]; + entry.paused || entry.markedForDeletion || entry.target.update(dt); + } + for (i = 0, list = this._updatesPosList, len = list.length; i < len; i++) { + entry = list[i]; + entry.paused || entry.markedForDeletion || entry.target.update(dt); + } + var elt, arr = this._arrayForTimers; + for (i = 0; i < arr.length; i++) { + elt = arr[i]; + this._currentTarget = elt; + this._currentTargetSalvaged = false; + if (!elt.paused) for (elt.timerIndex = 0; elt.timerIndex < elt.timers.length; ++elt.timerIndex) { + elt.currentTimer = elt.timers[elt.timerIndex]; + elt.currentTimerSalvaged = false; + elt.currentTimer.update(dt); + elt.currentTimer = null; + } + if (this._currentTargetSalvaged && 0 === this._currentTarget.timers.length) { + this._removeHashElement(this._currentTarget); + --i; + } + } + for (i = 0, list = this._updatesNegList; i < list.length;) { + entry = list[i]; + entry.markedForDeletion ? this._removeUpdateFromHash(entry) : i++; + } + for (i = 0, list = this._updates0List; i < list.length;) { + entry = list[i]; + entry.markedForDeletion ? this._removeUpdateFromHash(entry) : i++; + } + for (i = 0, list = this._updatesPosList; i < list.length;) { + entry = list[i]; + entry.markedForDeletion ? this._removeUpdateFromHash(entry) : i++; + } + this._updateHashLocked = false; + this._currentTarget = null; + }, + schedule: function schedule(callback, target, interval, repeat, delay, paused) { + if ("function" !== typeof callback) { + var tmp = callback; + callback = target; + target = tmp; + } + if (4 === arguments.length || 5 === arguments.length) { + paused = !!repeat; + repeat = cc.macro.REPEAT_FOREVER; + delay = 0; + } + cc.assertID(target, 1502); + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var element = this._hashForTimers[targetId]; + if (element) element.paused !== paused && cc.warnID(1511); else { + element = HashTimerEntry.get(null, target, 0, null, null, paused); + this._arrayForTimers.push(element); + this._hashForTimers[targetId] = element; + } + var timer, i; + if (null == element.timers) element.timers = []; else for (i = 0; i < element.timers.length; ++i) { + timer = element.timers[i]; + if (timer && callback === timer._callback) { + cc.logID(1507, timer.getInterval(), interval); + timer._interval = interval; + return; + } + } + timer = CallbackTimer.get(); + timer.initWithCallback(this, callback, target, interval, repeat, delay); + element.timers.push(timer); + this._currentTarget === element && this._currentTargetSalvaged && (this._currentTargetSalvaged = false); + }, + scheduleUpdate: function scheduleUpdate(target, priority, paused) { + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var hashElement = this._hashForUpdates[targetId]; + if (hashElement && hashElement.entry) { + if (hashElement.entry.priority === priority) { + hashElement.entry.markedForDeletion = false; + hashElement.entry.paused = paused; + return; + } + if (this._updateHashLocked) { + cc.logID(1506); + hashElement.entry.markedForDeletion = false; + hashElement.entry.paused = paused; + return; + } + this.unscheduleUpdate(target); + } + var listElement = ListEntry.get(target, priority, paused, false); + var ppList; + if (0 === priority) { + ppList = this._updates0List; + this._appendIn(ppList, listElement); + } else { + ppList = priority < 0 ? this._updatesNegList : this._updatesPosList; + this._priorityIn(ppList, listElement, priority); + } + this._hashForUpdates[targetId] = HashUpdateEntry.get(ppList, listElement, target, null); + }, + unschedule: function unschedule(callback, target) { + if (!target || !callback) return; + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var self = this, element = self._hashForTimers[targetId]; + if (element) { + var timers = element.timers; + for (var i = 0, li = timers.length; i < li; i++) { + var timer = timers[i]; + if (callback === timer._callback) { + timer !== element.currentTimer || element.currentTimerSalvaged || (element.currentTimerSalvaged = true); + timers.splice(i, 1); + CallbackTimer.put(timer); + element.timerIndex >= i && element.timerIndex--; + 0 === timers.length && (self._currentTarget === element ? self._currentTargetSalvaged = true : self._removeHashElement(element)); + return; + } + } + } + }, + unscheduleUpdate: function unscheduleUpdate(target) { + if (!target) return; + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var element = this._hashForUpdates[targetId]; + element && (this._updateHashLocked ? element.entry.markedForDeletion = true : this._removeUpdateFromHash(element.entry)); + }, + unscheduleAllForTarget: function unscheduleAllForTarget(target) { + if (!target) return; + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var element = this._hashForTimers[targetId]; + if (element) { + var timers = element.timers; + timers.indexOf(element.currentTimer) > -1 && !element.currentTimerSalvaged && (element.currentTimerSalvaged = true); + for (var i = 0, l = timers.length; i < l; i++) CallbackTimer.put(timers[i]); + timers.length = 0; + this._currentTarget === element ? this._currentTargetSalvaged = true : this._removeHashElement(element); + } + this.unscheduleUpdate(target); + }, + unscheduleAll: function unscheduleAll() { + this.unscheduleAllWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM); + }, + unscheduleAllWithMinPriority: function unscheduleAllWithMinPriority(minPriority) { + var i, element, arr = this._arrayForTimers; + for (i = arr.length - 1; i >= 0; i--) { + element = arr[i]; + this.unscheduleAllForTarget(element.target); + } + var entry; + var temp_length = 0; + if (minPriority < 0) for (i = 0; i < this._updatesNegList.length;) { + temp_length = this._updatesNegList.length; + entry = this._updatesNegList[i]; + entry && entry.priority >= minPriority && this.unscheduleUpdate(entry.target); + temp_length == this._updatesNegList.length && i++; + } + if (minPriority <= 0) for (i = 0; i < this._updates0List.length;) { + temp_length = this._updates0List.length; + entry = this._updates0List[i]; + entry && this.unscheduleUpdate(entry.target); + temp_length == this._updates0List.length && i++; + } + for (i = 0; i < this._updatesPosList.length;) { + temp_length = this._updatesPosList.length; + entry = this._updatesPosList[i]; + entry && entry.priority >= minPriority && this.unscheduleUpdate(entry.target); + temp_length == this._updatesPosList.length && i++; + } + }, + isScheduled: function isScheduled(callback, target) { + cc.assertID(callback, 1508); + cc.assertID(target, 1509); + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var element = this._hashForTimers[targetId]; + if (!element) return false; + if (null == element.timers) return false; + var timers = element.timers; + for (var i = 0; i < timers.length; ++i) { + var timer = timers[i]; + if (callback === timer._callback) return true; + } + return false; + }, + pauseAllTargets: function pauseAllTargets() { + return this.pauseAllTargetsWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM); + }, + pauseAllTargetsWithMinPriority: function pauseAllTargetsWithMinPriority(minPriority) { + var idsWithSelectors = []; + var self = this, element, locArrayForTimers = self._arrayForTimers; + var i, li; + for (i = 0, li = locArrayForTimers.length; i < li; i++) { + element = locArrayForTimers[i]; + if (element) { + element.paused = true; + idsWithSelectors.push(element.target); + } + } + var entry; + if (minPriority < 0) for (i = 0; i < this._updatesNegList.length; i++) { + entry = this._updatesNegList[i]; + if (entry && entry.priority >= minPriority) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + if (minPriority <= 0) for (i = 0; i < this._updates0List.length; i++) { + entry = this._updates0List[i]; + if (entry) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + for (i = 0; i < this._updatesPosList.length; i++) { + entry = this._updatesPosList[i]; + if (entry && entry.priority >= minPriority) { + entry.paused = true; + idsWithSelectors.push(entry.target); + } + } + return idsWithSelectors; + }, + resumeTargets: function resumeTargets(targetsToResume) { + if (!targetsToResume) return; + for (var i = 0; i < targetsToResume.length; i++) this.resumeTarget(targetsToResume[i]); + }, + pauseTarget: function pauseTarget(target) { + cc.assertID(target, 1503); + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var self = this, element = self._hashForTimers[targetId]; + element && (element.paused = true); + var elementUpdate = self._hashForUpdates[targetId]; + elementUpdate && (elementUpdate.entry.paused = true); + }, + resumeTarget: function resumeTarget(target) { + cc.assertID(target, 1504); + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var self = this, element = self._hashForTimers[targetId]; + element && (element.paused = false); + var elementUpdate = self._hashForUpdates[targetId]; + elementUpdate && (elementUpdate.entry.paused = false); + }, + isTargetPaused: function isTargetPaused(target) { + cc.assertID(target, 1505); + var targetId = target._id; + if (!targetId) if (target.__instanceId) { + cc.warnID(1513); + targetId = target._id = target.__instanceId; + } else cc.errorID(1510); + var element = this._hashForTimers[targetId]; + if (element) return element.paused; + var elementUpdate = this._hashForUpdates[targetId]; + if (elementUpdate) return elementUpdate.entry.paused; + return false; + } + }; + cc.Scheduler.PRIORITY_SYSTEM = 1 << 31; + cc.Scheduler.PRIORITY_NON_SYSTEM = cc.Scheduler.PRIORITY_SYSTEM + 1; + module.exports = cc.Scheduler; + }), { + "./platform/id-generater": 256, + "./platform/js": 260 + }], + 77: [(function (require, module, exports) { + "use strict"; + var preprocess = require("./preprocess"); + var fetch = require("./fetch"); + var Cache = require("./cache"); + var helper = require("./helper"); + var releaseManager = require("./releaseManager"); + var dependUtil = require("./depend-util"); + var load = require("./load"); + var Pipeline = require("./pipeline"); + var Task = require("./task"); + var RequestItem = require("./request-item"); + var downloader = require("./downloader"); + var parser = require("./parser"); + var packManager = require("./pack-manager"); + var Bundle = require("./bundle"); + var builtins = require("./builtins"); + var factory = require("./factory"); + var _require = require("./urlTransformer"), parse = _require.parse, combine = _require.combine; + var _require2 = require("./utilities"), parseParameters = _require2.parseParameters, asyncify = _require2.asyncify; + var _require3 = require("./shared"), assets = _require3.assets, files = _require3.files, parsed = _require3.parsed, pipeline = _require3.pipeline, transformPipeline = _require3.transformPipeline, fetchPipeline = _require3.fetchPipeline, RequestType = _require3.RequestType, bundles = _require3.bundles, BuiltinBundleName = _require3.BuiltinBundleName; + function AssetManager() { + this._preprocessPipe = preprocess; + this._fetchPipe = fetch; + this._loadPipe = load; + this.pipeline = pipeline.append(preprocess).append(load); + this.fetchPipeline = fetchPipeline.append(preprocess).append(fetch); + this.transformPipeline = transformPipeline.append(parse).append(combine); + this.bundles = bundles; + this.assets = assets; + this._files = files; + this._parsed = parsed; + this.generalImportBase = ""; + this.generalNativeBase = ""; + this.dependUtil = dependUtil; + this._releaseManager = releaseManager; + this.cacheAsset = true; + this.force = false; + this.utils = helper; + this.downloader = downloader; + this.parser = parser; + this.builtins = builtins; + this.packManager = packManager; + this.factory = factory; + this.cacheManager = null; + this.presets = { + default: { + priority: 0 + }, + preload: { + maxConcurrency: 2, + maxRequestsPerFrame: 2, + priority: -1 + }, + scene: { + maxConcurrency: 8, + maxRequestsPerFrame: 8, + priority: 1 + }, + bundle: { + maxConcurrency: 8, + maxRequestsPerFrame: 8, + priority: 2 + }, + remote: { + maxRetryCount: 4 + }, + script: { + maxConcurrency: 1024, + maxRequestsPerFrame: 1024, + priority: 2 + } + }; + } + AssetManager.Pipeline = Pipeline; + AssetManager.Task = Task; + AssetManager.Cache = Cache; + AssetManager.RequestItem = RequestItem; + AssetManager.Bundle = Bundle; + AssetManager.BuiltinBundleName = BuiltinBundleName; + AssetManager.prototype = { + constructor: AssetManager, + get main() { + return bundles.get(BuiltinBundleName.MAIN); + }, + get resources() { + return bundles.get(BuiltinBundleName.RESOURCES); + }, + get internal() { + return bundles.get(BuiltinBundleName.INTERNAL); + }, + init: function init(options) { + options = options || Object.create(null); + this._files.clear(); + this._parsed.clear(); + this._releaseManager.init(); + this.assets.clear(); + this.bundles.clear(); + this.packManager.init(); + this.downloader.init(options.bundleVers, options.server); + this.parser.init(); + this.dependUtil.init(); + this.generalImportBase = options.importBase; + this.generalNativeBase = options.nativeBase; + }, + getBundle: function getBundle(name) { + return bundles.get(name); + }, + removeBundle: function removeBundle(bundle) { + bundle._destroy(); + bundles.remove(bundle.name); + }, + loadAny: function loadAny(requests, options, onProgress, onComplete) { + var _parseParameters = parseParameters(options, onProgress, onComplete), options = _parseParameters.options, onProgress = _parseParameters.onProgress, onComplete = _parseParameters.onComplete; + options.preset = options.preset || "default"; + requests = Array.isArray(requests) ? requests.concat() : requests; + var task = new Task({ + input: requests, + onProgress: onProgress, + onComplete: asyncify(onComplete), + options: options + }); + pipeline.async(task); + }, + preloadAny: function preloadAny(requests, options, onProgress, onComplete) { + var _parseParameters2 = parseParameters(options, onProgress, onComplete), options = _parseParameters2.options, onProgress = _parseParameters2.onProgress, onComplete = _parseParameters2.onComplete; + options.preset = options.preset || "preload"; + requests = Array.isArray(requests) ? requests.concat() : requests; + var task = new Task({ + input: requests, + onProgress: onProgress, + onComplete: asyncify(onComplete), + options: options + }); + fetchPipeline.async(task); + }, + postLoadNative: function postLoadNative(asset, options, onComplete) { + if (!(asset instanceof cc.Asset)) throw new Error("input is not asset"); + var _parseParameters3 = parseParameters(options, void 0, onComplete), options = _parseParameters3.options, onComplete = _parseParameters3.onComplete; + if (!asset._native || asset._nativeAsset) return asyncify(onComplete)(null); + var depend = dependUtil.getNativeDep(asset._uuid); + if (depend) { + if (!bundles.has(depend.bundle)) { + var bundle = bundles.find((function (bundle) { + return bundle.getAssetInfo(asset._uuid); + })); + bundle && (depend.bundle = bundle.name); + } + this.loadAny(depend, options, (function (err, _native) { + err ? cc.error(err.message, err.stack) : asset.isValid && !asset._nativeAsset && (asset._nativeAsset = _native); + onComplete && onComplete(err); + })); + } + }, + loadRemote: function loadRemote(url, options, onComplete) { + var _parseParameters4 = parseParameters(options, void 0, onComplete), options = _parseParameters4.options, onComplete = _parseParameters4.onComplete; + if (this.assets.has(url)) return asyncify(onComplete)(null, this.assets.get(url)); + options.__isNative__ = true; + options.preset = options.preset || "remote"; + this.loadAny({ + url: url + }, options, null, (function (err, data) { + if (err) { + cc.error(err.message, err.stack); + onComplete && onComplete(err, null); + } else factory.create(url, data, options.ext || cc.path.extname(url), options, (function (err, out) { + onComplete && onComplete(err, out); + })); + })); + }, + loadScript: function loadScript(url, options, onComplete) { + var _parseParameters5 = parseParameters(options, void 0, onComplete), options = _parseParameters5.options, onComplete = _parseParameters5.onComplete; + options.__requestType__ = RequestType.URL; + options.preset = options.preset || "script"; + this.loadAny(url, options, onComplete); + }, + loadBundle: function loadBundle(nameOrUrl, options, onComplete) { + var _parseParameters6 = parseParameters(options, void 0, onComplete), options = _parseParameters6.options, onComplete = _parseParameters6.onComplete; + var bundleName = cc.path.basename(nameOrUrl); + if (this.bundles.has(bundleName)) return asyncify(onComplete)(null, this.getBundle(bundleName)); + options.preset = options.preset || "bundle"; + options.ext = "bundle"; + this.loadRemote(nameOrUrl, options, onComplete); + }, + releaseAsset: function releaseAsset(asset) { + releaseManager.tryRelease(asset, true); + }, + releaseUnusedAssets: function releaseUnusedAssets() { + assets.forEach((function (asset) { + releaseManager.tryRelease(asset); + })); + }, + releaseAll: function releaseAll() { + assets.forEach((function (asset) { + releaseManager.tryRelease(asset, true); + })); + }, + _transform: function _transform(input, options) { + var subTask = Task.create({ + input: input, + options: options + }); + var urls = []; + try { + var result = transformPipeline.sync(subTask); + for (var i = 0, l = result.length; i < l; i++) { + var item = result[i]; + var url = item.url; + item.recycle(); + urls.push(url); + } + } catch (e) { + for (var i = 0, l = subTask.output.length; i < l; i++) subTask.output[i].recycle(); + cc.error(e.message, e.stack); + } + subTask.recycle(); + return urls.length > 1 ? urls : urls[0]; + } + }; + cc.AssetManager = AssetManager; + cc.assetManager = new AssetManager(); + Object.defineProperty(cc, "resources", { + get: function get() { + return bundles.get(BuiltinBundleName.RESOURCES); + } + }); + module.exports = cc.assetManager; + }), { + "./builtins": 78, + "./bundle": 79, + "./cache": 80, + "./depend-util": 82, + "./downloader": 89, + "./factory": 90, + "./fetch": 91, + "./helper": 93, + "./load": 95, + "./pack-manager": 96, + "./parser": 97, + "./pipeline": 98, + "./preprocess": 99, + "./releaseManager": 100, + "./request-item": 101, + "./shared": 102, + "./task": 103, + "./urlTransformer": 104, + "./utilities": 105 + }], + 78: [(function (require, module, exports) { + "use strict"; + var Cache = require("./cache"); + var releaseManager = require("./releaseManager"); + var _require = require("./shared"), BuiltinBundleName = _require.BuiltinBundleName; + var builtins = { + _assets: new Cache({ + material: new Cache(), + effect: new Cache() + }), + _loadBuiltins: function _loadBuiltins(name, cb) { + var dirname = name + "s"; + var builtin = this._assets.get(name); + return cc.assetManager.internal.loadDir(dirname, null, null, (function (err, assets) { + if (err) cc.error(err.message, err.stack); else for (var i = 0; i < assets.length; i++) { + var asset = assets[i]; + builtin.add(asset.name, asset.addRef()); + } + cb(); + })); + }, + init: function init(cb) { + var _this = this; + this.clear(); + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS || !cc.assetManager.bundles.has(BuiltinBundleName.INTERNAL)) return cb && cb(); + this._loadBuiltins("effect", (function () { + _this._loadBuiltins("material", cb); + })); + }, + getBuiltin: function getBuiltin(type, name) { + return 0 === arguments.length ? this._assets : 1 === arguments.length ? this._assets.get(type) : this._assets.get(type).get(name); + }, + clear: function clear() { + this._assets.forEach((function (assets) { + assets.forEach((function (asset) { + releaseManager.tryRelease(asset, true); + })); + assets.clear(); + })); + } + }; + module.exports = builtins; + }), { + "./cache": 80, + "./releaseManager": 100, + "./shared": 102 + }], + 79: [(function (require, module, exports) { + "use strict"; + var Config = require("./config"); + var releaseManager = require("./releaseManager"); + var _require = require("./utilities"), parseParameters = _require.parseParameters, parseLoadResArgs = _require.parseLoadResArgs; + var _require2 = require("./shared"), RequestType = _require2.RequestType, assets = _require2.assets, bundles = _require2.bundles; + function Bundle() { + this._config = new Config(); + } + Bundle.prototype = { + constructor: Bundle, + get name() { + return this._config.name; + }, + get deps() { + return this._config.deps; + }, + get base() { + return this._config.base; + }, + getInfoWithPath: function getInfoWithPath(path, type) { + return this._config.getInfoWithPath(path, type); + }, + getDirWithPath: function getDirWithPath(path, type, out) { + return this._config.getDirWithPath(path, type, out); + }, + getAssetInfo: function getAssetInfo(uuid) { + return this._config.getAssetInfo(uuid); + }, + getSceneInfo: function getSceneInfo(name) { + return this._config.getSceneInfo(name); + }, + init: function init(options) { + this._config.init(options); + bundles.add(options.name, this); + }, + load: function load(paths, type, onProgress, onComplete) { + var _parseLoadResArgs = parseLoadResArgs(type, onProgress, onComplete), type = _parseLoadResArgs.type, onProgress = _parseLoadResArgs.onProgress, onComplete = _parseLoadResArgs.onComplete; + cc.assetManager.loadAny(paths, { + __requestType__: RequestType.PATH, + type: type, + bundle: this.name, + __outputAsArray__: Array.isArray(paths) + }, onProgress, onComplete); + }, + preload: function preload(paths, type, onProgress, onComplete) { + var _parseLoadResArgs2 = parseLoadResArgs(type, onProgress, onComplete), type = _parseLoadResArgs2.type, onProgress = _parseLoadResArgs2.onProgress, onComplete = _parseLoadResArgs2.onComplete; + cc.assetManager.preloadAny(paths, { + __requestType__: RequestType.PATH, + type: type, + bundle: this.name + }, onProgress, onComplete); + }, + loadDir: function loadDir(dir, type, onProgress, onComplete) { + var _parseLoadResArgs3 = parseLoadResArgs(type, onProgress, onComplete), type = _parseLoadResArgs3.type, onProgress = _parseLoadResArgs3.onProgress, onComplete = _parseLoadResArgs3.onComplete; + cc.assetManager.loadAny(dir, { + __requestType__: RequestType.DIR, + type: type, + bundle: this.name, + __outputAsArray__: true + }, onProgress, onComplete); + }, + preloadDir: function preloadDir(dir, type, onProgress, onComplete) { + var _parseLoadResArgs4 = parseLoadResArgs(type, onProgress, onComplete), type = _parseLoadResArgs4.type, onProgress = _parseLoadResArgs4.onProgress, onComplete = _parseLoadResArgs4.onComplete; + cc.assetManager.preloadAny(dir, { + __requestType__: RequestType.DIR, + type: type, + bundle: this.name + }, onProgress, onComplete); + }, + loadScene: function loadScene(sceneName, options, onProgress, onComplete) { + var _parseParameters = parseParameters(options, onProgress, onComplete), options = _parseParameters.options, onProgress = _parseParameters.onProgress, onComplete = _parseParameters.onComplete; + options.preset = options.preset || "scene"; + options.bundle = this.name; + cc.assetManager.loadAny({ + scene: sceneName + }, options, onProgress, (function (err, sceneAsset) { + if (err) { + cc.error(err.message, err.stack); + onComplete && onComplete(err); + } else if (sceneAsset instanceof cc.SceneAsset) { + var scene = sceneAsset.scene; + scene._id = sceneAsset._uuid; + scene._name = sceneAsset._name; + onComplete && onComplete(null, sceneAsset); + } else onComplete && onComplete(new Error("The asset " + sceneAsset._uuid + " is not a scene")); + })); + }, + preloadScene: function preloadScene(sceneName, options, onProgress, onComplete) { + var _parseParameters2 = parseParameters(options, onProgress, onComplete), options = _parseParameters2.options, onProgress = _parseParameters2.onProgress, onComplete = _parseParameters2.onComplete; + options.bundle = this.name; + cc.assetManager.preloadAny({ + scene: sceneName + }, options, onProgress, (function (err) { + err && cc.errorID(1210, sceneName, err.message); + onComplete && onComplete(err); + })); + }, + get: function get(path, type) { + var info = this.getInfoWithPath(path, type); + return assets.get(info && info.uuid); + }, + release: function release(path, type) { + releaseManager.tryRelease(this.get(path, type), true); + }, + releaseUnusedAssets: function releaseUnusedAssets() { + var self = this; + assets.forEach((function (asset) { + var info = self.getAssetInfo(asset._uuid); + info && !info.redirect && releaseManager.tryRelease(asset); + })); + }, + releaseAll: function releaseAll() { + var self = this; + assets.forEach((function (asset) { + var info = self.getAssetInfo(asset._uuid); + info && !info.redirect && releaseManager.tryRelease(asset, true); + })); + }, + _destroy: function _destroy() { + this._config.destroy(); + } + }; + module.exports = Bundle; + }), { + "./config": 81, + "./releaseManager": 100, + "./shared": 102, + "./utilities": 105 + }], + 80: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + function Cache(map) { + if (map) { + this._map = map; + this._count = Object.keys(map).length; + } else { + this._map = js.createMap(true); + this._count = 0; + } + } + Cache.prototype = { + constructor: Cache, + add: function add(key, val) { + key in this._map || this._count++; + return this._map[key] = val; + }, + get: function get(key) { + return this._map[key]; + }, + has: function has(key) { + return key in this._map; + }, + remove: function remove(key) { + var out = this._map[key]; + if (key in this._map) { + delete this._map[key]; + this._count--; + } + return out; + }, + clear: function clear() { + if (0 !== this._count) { + this._map = js.createMap(true); + this._count = 0; + } + }, + forEach: function forEach(func) { + for (var key in this._map) func(this._map[key], key); + }, + find: function find(predicate) { + for (var key in this._map) if (predicate(this._map[key], key)) return this._map[key]; + return null; + }, + get count() { + return this._count; + }, + destroy: function destroy() { + this._map = null; + } + }; + module.exports = Cache; + }), { + "../platform/js": 260 + }], + 81: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + var Cache = require("./cache"); + var _require = require("./helper"), normalize = _require.normalize; + var _require2 = require("./utilities"), processOptions = _require2.processOptions; + function Config() { + this.name = ""; + this.base = ""; + this.importBase = ""; + this.nativeBase = ""; + this.deps = null; + this.assetInfos = new Cache(); + this.scenes = new Cache(); + this.paths = new Cache(); + } + Config.prototype = { + constructor: Config, + init: function init(options) { + processOptions(options); + this.importBase = options.importBase || ""; + this.nativeBase = options.nativeBase || ""; + this.base = options.base || ""; + this.name = options.name || ""; + this.deps = options.deps || []; + this._initUuid(options.uuids); + this._initPath(options.paths); + this._initScene(options.scenes); + this._initPackage(options.packs); + this._initVersion(options.versions); + this._initRedirect(options.redirect); + }, + _initUuid: function _initUuid(uuidList) { + if (!uuidList) return; + this.assetInfos.clear(); + for (var i = 0, l = uuidList.length; i < l; i++) { + var uuid = uuidList[i]; + this.assetInfos.add(uuid, { + uuid: uuid + }); + } + }, + _initPath: function _initPath(pathList) { + if (!pathList) return; + var paths = this.paths; + paths.clear(); + for (var uuid in pathList) { + var info = pathList[uuid]; + var path = info[0]; + var type = info[1]; + var isSubAsset = 3 === info.length; + var assetInfo = this.assetInfos.get(uuid); + assetInfo.path = path; + assetInfo.ctor = js._getClassById(type); + paths.has(path) ? isSubAsset ? paths.get(path).push(assetInfo) : paths.get(path).splice(0, 0, assetInfo) : paths.add(path, [assetInfo]); + } + }, + _initScene: function _initScene(sceneList) { + if (!sceneList) return; + var scenes = this.scenes; + scenes.clear(); + var assetInfos = this.assetInfos; + for (var sceneName in sceneList) { + var uuid = sceneList[sceneName]; + var assetInfo = assetInfos.get(uuid); + assetInfo.url = sceneName; + scenes.add(sceneName, assetInfo); + } + }, + _initPackage: function _initPackage(packageList) { + if (!packageList) return; + var assetInfos = this.assetInfos; + for (var packUuid in packageList) { + var uuids = packageList[packUuid]; + var pack = { + uuid: packUuid, + packs: uuids, + ext: ".json" + }; + assetInfos.add(packUuid, pack); + for (var i = 0, l = uuids.length; i < l; i++) { + var uuid = uuids[i]; + var assetInfo = assetInfos.get(uuid); + var assetPacks = assetInfo.packs; + assetPacks ? 1 === l ? assetPacks.splice(0, 0, pack) : assetPacks.push(pack) : assetInfo.packs = [pack]; + } + } + }, + _initVersion: function _initVersion(versions) { + if (!versions) return; + var assetInfos = this.assetInfos; + var entries = versions["import"]; + if (entries) for (var i = 0, l = entries.length; i < l; i += 2) { + var uuid = entries[i]; + var assetInfo = assetInfos.get(uuid); + assetInfo.ver = entries[i + 1]; + } + entries = versions["native"]; + if (entries) for (var i = 0, l = entries.length; i < l; i += 2) { + var uuid = entries[i]; + var assetInfo = assetInfos.get(uuid); + assetInfo.nativeVer = entries[i + 1]; + } + }, + _initRedirect: function _initRedirect(redirect) { + if (!redirect) return; + var assetInfos = this.assetInfos; + for (var i = 0, l = redirect.length; i < l; i += 2) { + var uuid = redirect[i]; + var assetInfo = assetInfos.get(uuid); + assetInfo.redirect = redirect[i + 1]; + } + }, + getInfoWithPath: function getInfoWithPath(path, type) { + if (!path) return null; + path = normalize(path); + var items = this.paths.get(path); + if (items) { + if (!type) return items[0]; + for (var i = 0, l = items.length; i < l; i++) { + var assetInfo = items[i]; + if (js.isChildClassOf(assetInfo.ctor, type)) return assetInfo; + } + } + return null; + }, + getDirWithPath: function getDirWithPath(path, type, out) { + path = normalize(path); + "/" === path[path.length - 1] && (path = path.slice(0, -1)); + var infos = out || []; + function isMatchByWord(path, test) { + if (path.length > test.length) { + var nextAscii = path.charCodeAt(test.length); + return 47 === nextAscii; + } + return true; + } + this.paths.forEach((function (items, p) { + if (p.startsWith(path) && isMatchByWord(p, path) || !path) for (var i = 0, l = items.length; i < l; i++) { + var entry = items[i]; + type && !js.isChildClassOf(entry.ctor, type) || infos.push(entry); + } + })); + return infos; + }, + getAssetInfo: function getAssetInfo(uuid) { + return this.assetInfos.get(uuid); + }, + getSceneInfo: function getSceneInfo(name) { + name.endsWith(".fire") || (name += ".fire"); + "/" === name[0] || name.startsWith("db://") || (name = "/" + name); + var info = this.scenes.find((function (val, key) { + return key.endsWith(name); + })); + return info; + }, + destroy: function destroy() { + this.paths.destroy(); + this.scenes.destroy(); + this.assetInfos.destroy(); + } + }; + false; + module.exports = Config; + }), { + "../platform/js": 260, + "./cache": 80, + "./helper": 93, + "./utilities": 105 + }], + 82: [(function (require, module, exports) { + "use strict"; + var _deserializeCompiled = _interopRequireWildcard(require("../platform/deserialize-compiled")); + function _getRequireWildcardCache() { + if ("function" !== typeof WeakMap) return null; + var cache = new WeakMap(); + _getRequireWildcardCache = function _getRequireWildcardCache() { + return cache; + }; + return cache; + } + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) return obj; + if (null === obj || "object" !== typeof obj && "function" !== typeof obj) return { + default: obj + }; + var cache = _getRequireWildcardCache(); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + desc && (desc.get || desc.set) ? Object.defineProperty(newObj, key, desc) : newObj[key] = obj[key]; + } + newObj["default"] = obj; + cache && cache.set(obj, newObj); + return newObj; + } + var Cache = require("./cache"); + var deserialize = require("./deserialize"); + var _require = require("./shared"), files = _require.files, parsed = _require.parsed; + var dependUtil = { + _depends: new Cache(), + init: function init() { + this._depends.clear(); + }, + getNativeDep: function getNativeDep(uuid) { + var depend = this._depends.get(uuid); + if (depend) return depend.nativeDep && Object.assign({}, depend.nativeDep); + return null; + }, + getDeps: function getDeps(uuid) { + if (this._depends.has(uuid)) return this._depends.get(uuid).deps; + return []; + }, + getDepsRecursively: function getDepsRecursively(uuid) { + var exclude = Object.create(null), depends = []; + this._descend(uuid, exclude, depends); + return depends; + }, + _descend: function _descend(uuid, exclude, depends) { + var deps = this.getDeps(uuid); + for (var i = 0; i < deps.length; i++) { + var depend = deps[i]; + if (!exclude[depend]) { + exclude[depend] = true; + depends.push(depend); + this._descend(depend, exclude, depends); + } + } + }, + remove: function remove(uuid) { + this._depends.remove(uuid); + }, + parse: function parse(uuid, json) { + var out = null; + if (Array.isArray(json) || json.__type__) { + if (out = this._depends.get(uuid)) return out; + if (Array.isArray(json) && (false, !(0, _deserializeCompiled.hasNativeDep)(json))) out = { + deps: this._parseDepsFromJson(json) + }; else try { + var asset = deserialize(json); + out = this._parseDepsFromAsset(asset); + out.nativeDep && (out.nativeDep.uuid = uuid); + parsed.add(uuid + "@import", asset); + } catch (e) { + files.remove(uuid + "@import"); + out = { + deps: [] + }; + } + } else { + if ((true, out = this._depends.get(uuid)) && out.parsedFromExistAsset) return out; + out = this._parseDepsFromAsset(json); + } + this._depends.add(uuid, out); + return out; + }, + _parseDepsFromAsset: function _parseDepsFromAsset(asset) { + var out = { + deps: [], + parsedFromExistAsset: true, + preventPreloadNativeObject: asset.constructor.preventPreloadNativeObject, + preventDeferredLoadDependents: asset.constructor.preventDeferredLoadDependents + }; + var deps = asset.__depends__; + for (var i = 0, l = deps.length; i < l; i++) { + var dep = deps[i].uuid; + out.deps.push(dep); + } + asset.__nativeDepend__ && (out.nativeDep = asset._nativeDep); + return out; + }, + _parseDepsFromJson: (false, function (json) { + var depends = (0, _deserializeCompiled.getDependUuidList)(json); + depends.forEach((function (uuid, index) { + return depends[index] = cc.assetManager.utils.decodeUuid(uuid); + })); + return depends; + }) + }; + module.exports = dependUtil; + }), { + "../platform/deserialize-compiled": 254, + "./cache": 80, + "./deserialize": 84, + "./shared": 102 + }], + 83: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + require("../CCDirector"); + var utilities = require("./utilities"); + var dependUtil = require("./depend-util"); + var releaseManager = require("./releaseManager"); + var downloader = require("./downloader"); + var factory = require("./factory"); + var helper = require("./helper"); + var ImageFmts = [".png", ".jpg", ".bmp", ".jpeg", ".gif", ".ico", ".tiff", ".webp", ".image", ".pvr", ".pkm"]; + var AudioFmts = [".mp3", ".ogg", ".wav", ".m4a"]; + function GetTrue() { + return true; + } + var md5Pipe = { + transformURL: function transformURL(url) { + var uuid = helper.getUuidFromURL(url); + if (!uuid) return url; + var bundle = cc.assetManager.bundles.find((function (b) { + return !!b.getAssetInfo(uuid); + })); + if (!bundle) return url; + var hashValue = ""; + var info = bundle.getAssetInfo(uuid); + hashValue = url.startsWith(bundle.base + bundle._config.nativeBase) ? info.nativeVer || "" : info.ver || ""; + if (!hashValue || -1 !== url.indexOf(hashValue)) return url; + var hashPatchInFolder = false; + ".ttf" === cc.path.extname(url) && (hashPatchInFolder = true); + if (hashPatchInFolder) { + var dirname = cc.path.dirname(url); + var basename = cc.path.basename(url); + url = dirname + "." + hashValue + "/" + basename; + } else url = url.replace(/.*[\/\\][0-9a-fA-F]{2}[\/\\]([0-9a-fA-F-]{8,})/, (function (match, uuid) { + return match + "." + hashValue; + })); + return url; + } + }; + var loader = { + onProgress: null, + _autoReleaseSetting: Object.create(null), + get _cache() { + return cc.assetManager.assets._map; + }, + load: function load(resources, progressCallback, completeCallback) { + if (void 0 === completeCallback && void 0 !== progressCallback) { + completeCallback = progressCallback; + progressCallback = null; + } + resources = Array.isArray(resources) ? resources : [resources]; + for (var i = 0; i < resources.length; i++) { + var item = resources[i]; + if ("string" === typeof item) resources[i] = { + url: item, + __isNative__: true + }; else { + if (item.type) { + item.ext = "." + item.type; + item.type = void 0; + } + item.url && (item.__isNative__ = true); + } + } + var images = []; + var audios = []; + cc.assetManager.loadAny(resources, null, (function (finish, total, item) { + item.content && (ImageFmts.includes(item.ext) ? images.push(item.content) : AudioFmts.includes(item.ext) && audios.push(item.content)); + progressCallback && progressCallback(finish, total, item); + }), (function (err, _native) { + var res = null; + if (!err) { + _native = Array.isArray(_native) ? _native : [_native]; + for (var i = 0; i < _native.length; i++) { + var item = _native[i]; + if (!(item instanceof cc.Asset)) { + var asset = item; + var url = resources[i].url; + images.includes(asset) ? factory.create(url, item, ".png", null, (function (err, image) { + asset = _native[i] = image; + })) : audios.includes(asset) && factory.create(url, item, ".mp3", null, (function (err, audio) { + asset = _native[i] = audio; + })); + cc.assetManager.assets.add(url, asset); + } + } + if (_native.length > 1) { + var map = Object.create(null); + _native.forEach((function (asset) { + map[asset._uuid] = asset; + })); + res = { + isCompleted: GetTrue, + _map: map + }; + } else res = _native[0]; + } + completeCallback && completeCallback(err, res); + })); + }, + getXMLHttpRequest: function getXMLHttpRequest() { + return new XMLHttpRequest(); + }, + _parseLoadResArgs: utilities.parseLoadResArgs, + getItem: function getItem(key) { + return cc.assetManager.assets.has(key) ? { + content: cc.assetManager.assets.get(key) + } : null; + }, + loadRes: function loadRes(url, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr = this._parseLoadResArgs(type, progressCallback, completeCallback), type = _this$_parseLoadResAr.type, onProgress = _this$_parseLoadResAr.onProgress, onComplete = _this$_parseLoadResAr.onComplete; + var extname = cc.path.extname(url); + extname && (url = url.slice(0, -extname.length)); + cc.resources.load(url, type, onProgress, onComplete); + }, + loadResArray: function loadResArray(urls, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr2 = this._parseLoadResArgs(type, progressCallback, completeCallback), type = _this$_parseLoadResAr2.type, onProgress = _this$_parseLoadResAr2.onProgress, onComplete = _this$_parseLoadResAr2.onComplete; + urls.forEach((function (url, i) { + var extname = cc.path.extname(url); + extname && (urls[i] = url.slice(0, -extname.length)); + })); + cc.resources.load(urls, type, onProgress, onComplete); + }, + loadResDir: function loadResDir(url, type, progressCallback, completeCallback) { + var _this$_parseLoadResAr3 = this._parseLoadResArgs(type, progressCallback, completeCallback), type = _this$_parseLoadResAr3.type, onProgress = _this$_parseLoadResAr3.onProgress, onComplete = _this$_parseLoadResAr3.onComplete; + cc.resources.loadDir(url, type, onProgress, (function (err, assets) { + var urls = []; + if (!err) { + var infos = cc.resources.getDirWithPath(url, type); + urls = infos.map((function (info) { + return info.path; + })); + } + onComplete && onComplete(err, assets, urls); + })); + }, + getRes: function getRes(url, type) { + return cc.assetManager.assets.has(url) ? cc.assetManager.assets.get(url) : cc.resources.get(url, type); + }, + getResCount: function getResCount() { + return cc.assetManager.assets.count; + }, + getDependsRecursively: function getDependsRecursively(owner) { + if (!owner) return []; + return dependUtil.getDepsRecursively("string" === typeof owner ? owner : owner._uuid).concat([owner._uuid]); + }, + get assetLoader() { + true; + cc.error("cc.loader.assetLoader was removed, assetLoader and md5Pipe were merged into cc.assetManager.transformPipeline"); + }, + get md5Pipe() { + return md5Pipe; + }, + get downloader() { + return cc.assetManager.downloader; + }, + get loader() { + return cc.assetManager.parser; + }, + addDownloadHandlers: function addDownloadHandlers(extMap) { + true; + cc.warn("`cc.loader.addDownloadHandlers` is deprecated, please use `cc.assetManager.downloader.register` instead"); + var handler = Object.create(null); + for (var type in extMap) { + var func = extMap[type]; + handler["." + type] = function (url, options, onComplete) { + func({ + url: url + }, onComplete); + }; + } + cc.assetManager.downloader.register(handler); + }, + addLoadHandlers: function addLoadHandlers(extMap) { + true; + cc.warn("`cc.loader.addLoadHandlers` is deprecated, please use `cc.assetManager.parser.register` instead"); + var handler = Object.create(null); + for (var type in extMap) { + var func = extMap[type]; + handler["." + type] = function (file, options, onComplete) { + func({ + content: file + }, onComplete); + }; + } + cc.assetManager.parser.register(handler); + }, + flowInDeps: function flowInDeps() { + true; + cc.error("cc.loader.flowInDeps was removed"); + }, + release: function release(asset) { + if (Array.isArray(asset)) for (var i = 0; i < asset.length; i++) { + var key = asset[i]; + "string" === typeof key && (key = cc.assetManager.assets.get(key)); + var isBuiltin = cc.assetManager.builtins._assets.find((function (assets) { + return assets.find((function (builtinAsset) { + return builtinAsset === key; + })); + })); + if (isBuiltin) continue; + cc.assetManager.releaseAsset(key); + } else if (asset) { + "string" === typeof asset && (asset = cc.assetManager.assets.get(asset)); + var _isBuiltin = cc.assetManager.builtins._assets.find((function (assets) { + return assets.find((function (builtinAsset) { + return builtinAsset === asset; + })); + })); + if (_isBuiltin) return; + cc.assetManager.releaseAsset(asset); + } + }, + releaseAsset: function releaseAsset(asset) { + cc.assetManager.releaseAsset(asset); + }, + releaseRes: function releaseRes(url, type) { + cc.resources.release(url, type); + }, + releaseResDir: function releaseResDir() { + true; + cc.error("cc.loader.releaseResDir was removed, please use cc.assetManager.releaseAsset instead"); + }, + releaseAll: function releaseAll() { + cc.assetManager.releaseAll(); + cc.assetManager.assets.clear(); + }, + removeItem: function removeItem(key) { + cc.assetManager.assets.remove(key); + }, + setAutoRelease: function setAutoRelease(asset, autoRelease) { + "object" === typeof asset && (asset = asset._uuid); + this._autoReleaseSetting[asset] = !!autoRelease; + }, + setAutoReleaseRecursively: function setAutoReleaseRecursively(asset, autoRelease) { + "object" === typeof asset && (asset = asset._uuid); + autoRelease = !!autoRelease; + this._autoReleaseSetting[asset] = autoRelease; + var depends = dependUtil.getDepsRecursively(asset); + for (var i = 0; i < depends.length; i++) { + var depend = depends[i]; + this._autoReleaseSetting[depend] = autoRelease; + } + }, + isAutoRelease: function isAutoRelease(asset) { + "object" === typeof asset && (asset = asset._uuid); + return !!this._autoReleaseSetting[asset]; + } + }; + downloader.loadSubpackage = function (name, completeCallback) { + cc.assetManager.loadBundle(name, null, completeCallback); + }; + var AssetLibrary = { + init: function init(options) { + options.importBase = options.libraryPath; + options.nativeBase = options.rawAssetsBase; + cc.assetManager.init(options); + if (options.rawAssets) { + var resources = new cc.AssetManager.Bundle(); + resources.init({ + name: cc.AssetManager.BuiltinBundleName.RESOURCES, + importBase: options.importBase, + nativeBase: options.nativeBase, + paths: options.rawAssets.assets, + uuids: Object.keys(options.rawAssets.assets) + }); + } + }, + loadAsset: function loadAsset(uuid, onComplete) { + cc.assetManager.loadAny(uuid, onComplete); + }, + getLibUrlNoExt: function getLibUrlNoExt() { + true; + cc.error("cc.AssetLibrary.getLibUrlNoExt was removed, if you want to transform url, please use cc.assetManager.utils.getUrlWithUuid instead"); + }, + queryAssetInfo: function queryAssetInfo() { + true; + cc.error("cc.AssetLibrary.queryAssetInfo was removed, only available in the editor by using cc.assetManager.editorExtend.queryAssetInfo"); + } + }; + cc.url = { + normalize: function normalize(url) { + cc.warnID(1400, "cc.url.normalize", "cc.assetManager.utils.normalize"); + return cc.assetManager.utils.normalize(url); + }, + raw: function raw(url) { + cc.warnID(1400, "cc.url.raw", "cc.resources.load"); + if (url.startsWith("resources/")) return cc.assetManager._transform({ + path: cc.path.changeExtname(url.substr(10)), + bundle: cc.AssetManager.BuiltinBundleName.RESOURCES, + __isNative__: true, + ext: cc.path.extname(url) + }); + return ""; + } + }; + var onceWarns = { + loader: true, + assetLibrary: true + }; + Object.defineProperties(cc, { + loader: { + get: function get() { + true; + if (onceWarns.loader) { + onceWarns.loader = false; + cc.log("cc.loader is deprecated, use cc.assetManager instead please. See https://docs.cocos.com/creator/manual/zh/release-notes/asset-manager-upgrade-guide.html"); + } + return loader; + } + }, + AssetLibrary: { + get: function get() { + true; + if (onceWarns.assetLibrary) { + onceWarns.assetLibrary = false; + cc.log("cc.AssetLibrary is deprecated, use cc.assetManager instead please. See https://docs.cocos.com/creator/manual/zh/release-notes/asset-manager-upgrade-guide.html"); + } + return AssetLibrary; + } + }, + LoadingItems: { + get: function get() { + cc.warnID(1400, "cc.LoadingItems", "cc.AssetManager.Task"); + return cc.AssetManager.Task; + } + }, + Pipeline: { + get: function get() { + cc.warnID(1400, "cc.Pipeline", "cc.AssetManager.Pipeline"); + return cc.AssetManager.Pipeline; + } + } + }); + js.obsolete(cc, "cc.RawAsset", "cc.Asset"); + js.obsolete(cc.Asset.prototype, "cc.Asset.url", "nativeUrl"); + Object.defineProperties(cc.macro, { + DOWNLOAD_MAX_CONCURRENT: { + get: function get() { + return cc.assetManager.downloader.maxConcurrency; + }, + set: function set(val) { + cc.assetManager.downloader.maxConcurrency = val; + } + } + }); + Object.assign(cc.director, { + _getSceneUuid: function _getSceneUuid(sceneName) { + cc.assetManager.main.getSceneInfo(sceneName); + } + }); + Object.defineProperties(cc.game, { + _sceneInfos: { + get: function get() { + var scenes = []; + cc.assetManager.main._config.scenes.forEach((function (val) { + scenes.push(val); + })); + return scenes; + } + } + }); + var parseParameters = utilities.parseParameters; + utilities.parseParameters = function (options, onProgress, onComplete) { + var result = parseParameters(options, onProgress, onComplete); + result.onProgress = result.onProgress || loader.onProgress; + return result; + }; + var autoRelease = releaseManager._autoRelease; + releaseManager._autoRelease = function () { + autoRelease.apply(this, arguments); + var releaseSettings = loader._autoReleaseSetting; + var keys = Object.keys(releaseSettings); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (true === releaseSettings[key]) { + var asset = cc.assetManager.assets.get(key); + asset && releaseManager.tryRelease(asset); + } + } + }; + }), { + "../CCDirector": 71, + "../platform/js": 260, + "./depend-util": 82, + "./downloader": 89, + "./factory": 90, + "./helper": 93, + "./releaseManager": 100, + "./utilities": 105 + }], + 84: [(function (require, module, exports) { + "use strict"; + var helper = require("./helper"); + var MissingClass = false; + require("../platform/deserialize"); + function deserialize(json, options) { + var classFinder, missingClass; + false; + classFinder = cc._MissingScript.safeFindClass; + var pool = null; + var _require, deserializeForCompiled; + var deserializeForEditor; + true; + pool = cc.deserialize.Details.pool; + var tdInfo = pool.get(); + var asset; + try { + asset = cc.deserialize(json, tdInfo, { + classFinder: classFinder, + customEnv: options + }); + } catch (e) { + pool.put(tdInfo); + throw e; + } + false; + var uuidList = tdInfo.uuidList; + var objList = tdInfo.uuidObjList; + var propList = tdInfo.uuidPropList; + var depends = []; + for (var i = 0; i < uuidList.length; i++) { + var dependUuid = uuidList[i]; + depends[i] = { + uuid: helper.decodeUuid(dependUuid), + owner: objList[i], + prop: propList[i] + }; + } + asset.__depends__ = depends; + asset._native && (asset.__nativeDepend__ = true); + pool.put(tdInfo); + return asset; + } + module.exports = deserialize; + }), { + "../platform/deserialize": 255, + "../platform/deserialize-compiled": 254, + "../platform/deserialize-editor": void 0, + "./helper": 93 + }], + 85: [(function (require, module, exports) { + "use strict"; + var __audioSupport = cc.sys.__audioSupport; + var _require = require("./utilities"), parseParameters = _require.parseParameters; + function downloadDomAudio(url, options, onComplete) { + var _parseParameters = parseParameters(options, void 0, onComplete), options = _parseParameters.options, onComplete = _parseParameters.onComplete; + var dom = document.createElement("audio"); + dom.src = url; + var clearEvent = function clearEvent() { + clearTimeout(timer); + dom.removeEventListener("canplaythrough", success, false); + dom.removeEventListener("error", failure, false); + __audioSupport.USE_LOADER_EVENT && dom.removeEventListener(__audioSupport.USE_LOADER_EVENT, success, false); + }; + var timer = setTimeout((function () { + 0 === dom.readyState ? failure() : success(); + }), 8e3); + var success = function success() { + clearEvent(); + onComplete && onComplete(null, dom); + }; + var failure = function failure() { + clearEvent(); + var message = "load audio failure - " + url; + cc.log(message); + onComplete && onComplete(new Error(message)); + }; + dom.addEventListener("canplaythrough", success, false); + dom.addEventListener("error", failure, false); + __audioSupport.USE_LOADER_EVENT && dom.addEventListener(__audioSupport.USE_LOADER_EVENT, success, false); + return dom; + } + module.exports = downloadDomAudio; + }), { + "./utilities": 105 + }], + 86: [(function (require, module, exports) { + "use strict"; + var _require = require("./utilities"), parseParameters = _require.parseParameters; + function downloadDomImage(url, options, onComplete) { + var _parseParameters = parseParameters(options, void 0, onComplete), options = _parseParameters.options, onComplete = _parseParameters.onComplete; + var img = new Image(); + "file:" !== window.location.protocol && (img.crossOrigin = "anonymous"); + function loadCallback() { + img.removeEventListener("load", loadCallback); + img.removeEventListener("error", errorCallback); + onComplete && onComplete(null, img); + } + function errorCallback() { + img.removeEventListener("load", loadCallback); + img.removeEventListener("error", errorCallback); + onComplete && onComplete(new Error(cc.debug.getError(4930, url))); + } + img.addEventListener("load", loadCallback); + img.addEventListener("error", errorCallback); + img.src = url; + return img; + } + module.exports = downloadDomImage; + }), { + "./utilities": 105 + }], + 87: [(function (require, module, exports) { + "use strict"; + var _require = require("./utilities"), parseParameters = _require.parseParameters; + function downloadFile(url, options, onProgress, onComplete) { + var _parseParameters = parseParameters(options, onProgress, onComplete), options = _parseParameters.options, onProgress = _parseParameters.onProgress, onComplete = _parseParameters.onComplete; + var xhr = new XMLHttpRequest(), errInfo = "download failed: " + url + ", status: "; + xhr.open("GET", url, true); + void 0 !== options.responseType && (xhr.responseType = options.responseType); + void 0 !== options.withCredentials && (xhr.withCredentials = options.withCredentials); + void 0 !== options.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(options.mimeType); + void 0 !== options.timeout && (xhr.timeout = options.timeout); + if (options.header) for (var header in options.header) xhr.setRequestHeader(header, options.header[header]); + xhr.onload = function () { + 200 === xhr.status || 0 === xhr.status ? onComplete && onComplete(null, xhr.response) : onComplete && onComplete(new Error(errInfo + xhr.status + "(no response)")); + }; + onProgress && (xhr.onprogress = function (e) { + e.lengthComputable && onProgress(e.loaded, e.total); + }); + xhr.onerror = function () { + onComplete && onComplete(new Error(errInfo + xhr.status + "(error)")); + }; + xhr.ontimeout = function () { + onComplete && onComplete(new Error(errInfo + xhr.status + "(time out)")); + }; + xhr.onabort = function () { + onComplete && onComplete(new Error(errInfo + xhr.status + "(abort)")); + }; + xhr.send(null); + return xhr; + } + module.exports = downloadFile; + }), { + "./utilities": 105 + }], + 88: [(function (require, module, exports) { + "use strict"; + var _require = require("./utilities"), parseParameters = _require.parseParameters; + var downloaded = {}; + function downloadScript(url, options, onComplete) { + var _parseParameters = parseParameters(options, void 0, onComplete), options = _parseParameters.options, onComplete = _parseParameters.onComplete; + if (downloaded[url]) return onComplete && onComplete(null); + var d = document, s = document.createElement("script"); + "file:" !== window.location.protocol && (s.crossOrigin = "anonymous"); + s.async = options.async; + s.src = url; + function loadHandler() { + s.parentNode.removeChild(s); + s.removeEventListener("load", loadHandler, false); + s.removeEventListener("error", errorHandler, false); + downloaded[url] = true; + onComplete && onComplete(null); + } + function errorHandler() { + s.parentNode.removeChild(s); + s.removeEventListener("load", loadHandler, false); + s.removeEventListener("error", errorHandler, false); + onComplete && onComplete(new Error(cc.debug.getError(4928, url))); + } + s.addEventListener("load", loadHandler, false); + s.addEventListener("error", errorHandler, false); + d.body.appendChild(s); + } + module.exports = downloadScript; + }), { + "./utilities": 105 + }], + 89: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + var debug = require("../CCDebug"); + var _require = require("./font-loader"), loadFont = _require.loadFont; + var callInNextTick = require("../platform/utils").callInNextTick; + var downloadDomImage = require("./download-dom-image"); + var downloadDomAudio = require("./download-dom-audio"); + var downloadFile = require("./download-file"); + var downloadScript = require("./download-script.js"); + var Cache = require("./cache"); + var _require2 = require("./shared"), files = _require2.files; + var _require3 = require("../platform/CCSys"), __audioSupport = _require3.__audioSupport, capabilities = _require3.capabilities; + var _require4 = require("./utilities"), urlAppendTimestamp = _require4.urlAppendTimestamp, retry = _require4.retry; + var REGEX = /^(?:\w+:\/\/|\.+\/).+/; + var formatSupport = __audioSupport.format || []; + var unsupported = function unsupported(url, options, onComplete) { + onComplete(new Error(debug.getError(4927))); + }; + var downloadAudio = function downloadAudio(url, options, onComplete) { + options.audioLoadMode !== cc.AudioClip.LoadMode.DOM_AUDIO ? downloadArrayBuffer(url, options, onComplete) : downloadDomAudio(url, options, onComplete); + }; + var downloadAudio = 0 === formatSupport.length ? unsupported : __audioSupport.WEB_AUDIO ? downloadAudio : downloadDomAudio; + var downloadImage = function downloadImage(url, options, onComplete) { + var func = capabilities.imageBitmap && cc.macro.ALLOW_IMAGE_BITMAP ? downloadBlob : downloadDomImage; + func.apply(this, arguments); + }; + var downloadBlob = function downloadBlob(url, options, onComplete) { + options.responseType = "blob"; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadJson = function downloadJson(url, options, onComplete) { + options.responseType = "json"; + downloadFile(url, options, options.onFileProgress, (function (err, data) { + if (!err && "string" === typeof data) try { + data = JSON.parse(data); + } catch (e) { + err = e; + } + onComplete && onComplete(err, data); + })); + }; + var downloadArrayBuffer = function downloadArrayBuffer(url, options, onComplete) { + options.responseType = "arraybuffer"; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadText = function downloadText(url, options, onComplete) { + options.responseType = "text"; + downloadFile(url, options, options.onFileProgress, onComplete); + }; + var downloadVideo = function downloadVideo(url, options, onComplete) { + onComplete(null, url); + }; + var downloadBundle = function downloadBundle(nameOrUrl, options, onComplete) { + var bundleName = cc.path.basename(nameOrUrl); + var url = nameOrUrl; + REGEX.test(url) || (url = "./static/cocos-build/web-mobile/assets/" + bundleName); + var version = options.version || downloader.bundleVers[bundleName]; + var count = 0; + var config = url + "/config." + (version ? version + "." : "") + "json"; + var out = null, error = null; + downloadJson(config, options, (function (err, response) { + err && (error = err); + out = response; + out && (out.base = url + "/"); + count++; + 2 === count && onComplete(error, out); + })); + var js = url + "/index." + (version ? version + "." : "") + "js"; + downloadScript(js, options, (function (err) { + err && (error = err); + count++; + 2 === count && onComplete(error, out); + })); + }; + var _downloading = new Cache(); + var _queue = []; + var _queueDirty = false; + var _totalNum = 0; + var _totalNumThisPeriod = 0; + var _lastDate = -1; + var _checkNextPeriod = false; + var updateTime = function updateTime() { + var now = Date.now(); + var interval = cc.director._deltaTime > downloader._maxInterval ? downloader._maxInterval : cc.director._deltaTime; + if (now - _lastDate > 1e3 * interval) { + _totalNumThisPeriod = 0; + _lastDate = now; + } + }; + var handleQueue = function handleQueue(maxConcurrency, maxRequestsPerFrame) { + _checkNextPeriod = false; + updateTime(); + while (_queue.length > 0 && _totalNum < maxConcurrency && _totalNumThisPeriod < maxRequestsPerFrame) { + if (_queueDirty) { + _queue.sort((function (a, b) { + return a.priority - b.priority; + })); + _queueDirty = false; + } + var nextOne = _queue.pop(); + if (!nextOne) break; + _totalNum++; + _totalNumThisPeriod++; + nextOne.invoke(); + } + if (_queue.length > 0 && _totalNum < maxConcurrency) { + callInNextTick(handleQueue, maxConcurrency, maxRequestsPerFrame); + _checkNextPeriod = true; + } + }; + var downloader = { + _remoteServerAddress: "", + _maxInterval: 1 / 30, + get remoteServerAddress() { + return this._remoteServerAddress; + }, + maxConcurrency: 6, + maxRequestsPerFrame: 6, + maxRetryCount: 3, + appendTimeStamp: false, + limited: true, + retryInterval: 2e3, + bundleVers: null, + downloadDomImage: downloadDomImage, + downloadDomAudio: downloadDomAudio, + downloadFile: downloadFile, + downloadScript: downloadScript, + init: function init(bundleVers, remoteServerAddress) { + _downloading.clear(); + _queue.length = 0; + this._remoteServerAddress = remoteServerAddress || ""; + this.bundleVers = bundleVers || Object.create(null); + }, + register: function register(type, handler) { + "object" === typeof type ? js.mixin(downloaders, type) : downloaders[type] = handler; + }, + download: function download(id, url, type, options, onComplete) { + var func = downloaders[type] || downloaders["default"]; + var self = this; + var file, downloadCallbacks; + if (file = files.get(id)) onComplete(null, file); else if (downloadCallbacks = _downloading.get(id)) { + downloadCallbacks.push(onComplete); + for (var i = 0, l = _queue.length; i < l; i++) { + var item = _queue[i]; + if (item.id === id) { + var priority = options.priority || 0; + if (item.priority < priority) { + item.priority = priority; + _queueDirty = true; + } + return; + } + } + } else { + var process = function process(index, callback) { + 0 === index && _downloading.add(id, [onComplete]); + if (!self.limited) return func(urlAppendTimestamp(url), options, callback); + updateTime(); + function invoke() { + func(urlAppendTimestamp(url), options, (function () { + _totalNum--; + if (!_checkNextPeriod && _queue.length > 0) { + callInNextTick(handleQueue, maxConcurrency, maxRequestsPerFrame); + _checkNextPeriod = true; + } + callback.apply(this, arguments); + })); + } + if (_totalNum < maxConcurrency && _totalNumThisPeriod < maxRequestsPerFrame) { + invoke(); + _totalNum++; + _totalNumThisPeriod++; + } else { + _queue.push({ + id: id, + priority: options.priority || 0, + invoke: invoke + }); + _queueDirty = true; + if (!_checkNextPeriod && _totalNum < maxConcurrency) { + callInNextTick(handleQueue, maxConcurrency, maxRequestsPerFrame); + _checkNextPeriod = true; + } + } + }; + var finale = function finale(err, result) { + err || files.add(id, result); + var callbacks = _downloading.remove(id); + for (var _i = 0, _l = callbacks.length; _i < _l; _i++) callbacks[_i](err, result); + }; + var maxRetryCount = "undefined" !== typeof options.maxRetryCount ? options.maxRetryCount : this.maxRetryCount; + var maxConcurrency = "undefined" !== typeof options.maxConcurrency ? options.maxConcurrency : this.maxConcurrency; + var maxRequestsPerFrame = "undefined" !== typeof options.maxRequestsPerFrame ? options.maxRequestsPerFrame : this.maxRequestsPerFrame; + retry(process, maxRetryCount, this.retryInterval, finale); + } + } + }; + var downloaders = { + ".png": downloadImage, + ".jpg": downloadImage, + ".bmp": downloadImage, + ".jpeg": downloadImage, + ".gif": downloadImage, + ".ico": downloadImage, + ".tiff": downloadImage, + ".webp": downloadImage, + ".image": downloadImage, + ".pvr": downloadArrayBuffer, + ".pkm": downloadArrayBuffer, + ".mp3": downloadAudio, + ".ogg": downloadAudio, + ".wav": downloadAudio, + ".m4a": downloadAudio, + ".txt": downloadText, + ".xml": downloadText, + ".vsh": downloadText, + ".fsh": downloadText, + ".atlas": downloadText, + ".tmx": downloadText, + ".tsx": downloadText, + ".json": downloadJson, + ".ExportJson": downloadJson, + ".plist": downloadText, + ".fnt": downloadText, + ".font": loadFont, + ".eot": loadFont, + ".ttf": loadFont, + ".woff": loadFont, + ".svg": loadFont, + ".ttc": loadFont, + ".mp4": downloadVideo, + ".avi": downloadVideo, + ".mov": downloadVideo, + ".mpg": downloadVideo, + ".mpeg": downloadVideo, + ".rm": downloadVideo, + ".rmvb": downloadVideo, + ".binary": downloadArrayBuffer, + ".bin": downloadArrayBuffer, + ".dbbin": downloadArrayBuffer, + ".skel": downloadArrayBuffer, + ".js": downloadScript, + bundle: downloadBundle, + default: downloadText + }; + downloader._downloaders = downloaders; + module.exports = downloader; + }), { + "../CCDebug": 70, + "../platform/CCSys": 248, + "../platform/js": 260, + "../platform/utils": 263, + "./cache": 80, + "./download-dom-audio": 85, + "./download-dom-image": 86, + "./download-file": 87, + "./download-script.js": 88, + "./font-loader": 92, + "./shared": 102, + "./utilities": 105 + }], + 90: [(function (require, module, exports) { + "use strict"; + var Bundle = require("./bundle"); + var Cache = require("./cache"); + var _require = require("./shared"), assets = _require.assets, bundles = _require.bundles; + var _creating = new Cache(); + function createTexture(id, data, options, onComplete) { + var out = null, err = null; + try { + out = new cc.Texture2D(); + out._nativeUrl = id; + out._nativeAsset = data; + } catch (e) { + err = e; + } + onComplete && onComplete(err, out); + } + function createAudioClip(id, data, options, onComplete) { + var out = new cc.AudioClip(); + out._nativeUrl = id; + out._nativeAsset = data; + out.duration = data.duration; + onComplete && onComplete(null, out); + } + function createJsonAsset(id, data, options, onComplete) { + var out = new cc.JsonAsset(); + out.json = data; + onComplete && onComplete(null, out); + } + function createTextAsset(id, data, options, onComplete) { + var out = new cc.TextAsset(); + out.text = data; + onComplete && onComplete(null, out); + } + function createFont(id, data, options, onComplete) { + var out = new cc.TTFFont(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete && onComplete(null, out); + } + function createBufferAsset(id, data, options, onComplete) { + var out = new cc.BufferAsset(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete && onComplete(null, out); + } + function createAsset(id, data, options, onComplete) { + var out = new cc.Asset(); + out._nativeUrl = id; + out._nativeAsset = data; + onComplete && onComplete(null, out); + } + function createBundle(id, data, options, onComplete) { + var bundle = bundles.get(data.name); + if (!bundle) { + bundle = new Bundle(); + data.base = data.base || id + "/"; + bundle.init(data); + } + onComplete && onComplete(null, bundle); + } + var factory = { + register: function register(type, handler) { + "object" === typeof type ? cc.js.mixin(producers, type) : producers[type] = handler; + }, + create: function create(id, data, type, options, onComplete) { + var func = producers[type] || producers["default"]; + var asset, creating; + if (asset = assets.get(id)) onComplete(null, asset); else if (creating = _creating.get(id)) creating.push(onComplete); else { + _creating.add(id, [onComplete]); + func(id, data, options, (function (err, data) { + if (!err && data instanceof cc.Asset) { + data._uuid = id; + assets.add(id, data); + } + var callbacks = _creating.remove(id); + for (var i = 0, l = callbacks.length; i < l; i++) callbacks[i](err, data); + })); + } + } + }; + var producers = { + ".png": createTexture, + ".jpg": createTexture, + ".bmp": createTexture, + ".jpeg": createTexture, + ".gif": createTexture, + ".ico": createTexture, + ".tiff": createTexture, + ".webp": createTexture, + ".image": createTexture, + ".pvr": createTexture, + ".pkm": createTexture, + ".mp3": createAudioClip, + ".ogg": createAudioClip, + ".wav": createAudioClip, + ".m4a": createAudioClip, + ".txt": createTextAsset, + ".xml": createTextAsset, + ".vsh": createTextAsset, + ".fsh": createTextAsset, + ".atlas": createTextAsset, + ".tmx": createTextAsset, + ".tsx": createTextAsset, + ".fnt": createTextAsset, + ".json": createJsonAsset, + ".ExportJson": createJsonAsset, + ".font": createFont, + ".eot": createFont, + ".ttf": createFont, + ".woff": createFont, + ".svg": createFont, + ".ttc": createFont, + ".binary": createBufferAsset, + ".bin": createBufferAsset, + ".dbbin": createBufferAsset, + ".skel": createBufferAsset, + bundle: createBundle, + default: createAsset + }; + module.exports = factory; + }), { + "./bundle": 79, + "./cache": 80, + "./shared": 102 + }], + 91: [(function (require, module, exports) { + "use strict"; + var packManager = require("./pack-manager"); + var Task = require("./task"); + var _require = require("./utilities"), getDepends = _require.getDepends, clear = _require.clear, forEach = _require.forEach; + var _require2 = require("./shared"), assets = _require2.assets, fetchPipeline = _require2.fetchPipeline; + function fetch(task, done) { + var firstTask = false; + if (!task.progress) { + task.progress = { + finish: 0, + total: task.input.length, + canInvoke: true + }; + firstTask = true; + } + var options = task.options, depends = [], progress = task.progress, total = progress.total; + options.__exclude__ = options.__exclude__ || Object.create(null); + task.output = []; + forEach(task.input, (function (item, cb) { + if (!item.isNative && assets.has(item.uuid)) { + var asset = assets.get(item.uuid); + asset.addRef(); + handle(item, task, asset, null, asset.__asyncLoadAssets__, depends, total, done); + return cb(); + } + packManager.load(item, task.options, (function (err, data) { + if (err) { + if (!task.isFinish) if (!cc.assetManager.force || firstTask) { + cc.error(err.message, err.stack); + progress.canInvoke = false; + done(err); + } else handle(item, task, null, null, false, depends, total, done); + } else task.isFinish || handle(item, task, null, data, !item.isNative, depends, total, done); + cb(); + })); + }), (function () { + if (task.isFinish) { + clear(task, true); + return task.dispatch("error"); + } + if (depends.length > 0) { + var subTask = Task.create({ + name: task.name + " dependencies", + input: depends, + progress: progress, + options: options, + onProgress: task.onProgress, + onError: Task.prototype.recycle, + onComplete: function onComplete(err) { + if (!err) { + task.output.push.apply(task.output, this.output); + subTask.recycle(); + } + firstTask && decreaseRef(task); + done(err); + } + }); + fetchPipeline.async(subTask); + return; + } + firstTask && decreaseRef(task); + done(); + })); + } + function decreaseRef(task) { + var output = task.output; + for (var i = 0, l = output.length; i < l; i++) output[i].content && output[i].content.decRef(false); + } + function handle(item, task, content, file, loadDepends, depends, last, done) { + var exclude = task.options.__exclude__; + var progress = task.progress; + item.content = content; + item.file = file; + task.output.push(item); + if (loadDepends) { + exclude[item.uuid] = true; + getDepends(item.uuid, file || content, exclude, depends, true, false, item.config); + progress.total = last + depends.length; + } + progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total, item); + } + module.exports = fetch; + }), { + "./pack-manager": 96, + "./shared": 102, + "./task": 103, + "./utilities": 105 + }], + 92: [(function (require, module, exports) { + "use strict"; + var textUtils = require("../utils/text-utils"); + var _canvasContext = null; + var _testString = "BES bswy:->@123\u4e01\u3041\u1101"; + var _fontFaces = Object.create(null); + var _intervalId = -1; + var _loadingFonts = []; + var _timeout = 3e3; + var useNativeCheck = (function () { + var nativeCheck = void 0; + return function () { + if (void 0 === nativeCheck) if (!window.FontFace) nativeCheck = false; else { + var match = /Gecko.*Firefox\/(\d+)/.exec(window.navigator.userAgent); + var safari10Match = /OS X.*Version\/10\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor); + nativeCheck = match ? parseInt(match[1], 10) > 42 : !safari10Match; + } + return nativeCheck; + }; + })(); + function _checkFontLoaded() { + var allFontsLoaded = true; + var now = Date.now(); + for (var i = _loadingFonts.length - 1; i >= 0; i--) { + var fontLoadHandle = _loadingFonts[i]; + var fontFamily = fontLoadHandle.fontFamilyName; + if (now - fontLoadHandle.startTime > _timeout) { + cc.warnID(4933, fontFamily); + fontLoadHandle.onComplete(null, fontFamily); + _loadingFonts.splice(i, 1); + continue; + } + var oldWidth = fontLoadHandle.refWidth; + var fontDesc = "40px " + fontFamily; + _canvasContext.font = fontDesc; + var newWidth = textUtils.safeMeasureText(_canvasContext, _testString, fontDesc); + if (oldWidth !== newWidth) { + _loadingFonts.splice(i, 1); + fontLoadHandle.onComplete(null, fontFamily); + } else allFontsLoaded = false; + } + if (allFontsLoaded) { + clearInterval(_intervalId); + _intervalId = -1; + } + } + function nativeCheckFontLoaded(start, font, callback) { + var loader = new Promise(function (resolve, reject) { + var check = function check() { + var now = Date.now(); + now - start >= _timeout ? reject() : document.fonts.load("40px " + font).then((function (fonts) { + fonts.length >= 1 ? resolve() : setTimeout(check, 100); + }), (function () { + reject(); + })); + }; + check(); + }); + var timeoutId = null, timer = new Promise(function (resolve, reject) { + timeoutId = setTimeout(reject, _timeout); + }); + Promise.race([timer, loader]).then((function () { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + callback(null, font); + }), (function () { + cc.warnID(4933, font); + callback(null, font); + })); + } + var fontLoader = { + loadFont: function loadFont(url, options, onComplete) { + var fontFamilyName = fontLoader._getFontFamily(url); + if (_fontFaces[fontFamilyName]) return onComplete(null, fontFamilyName); + if (!_canvasContext) { + var labelCanvas = document.createElement("canvas"); + labelCanvas.width = 100; + labelCanvas.height = 100; + _canvasContext = labelCanvas.getContext("2d"); + } + var fontDesc = "40px " + fontFamilyName; + _canvasContext.font = fontDesc; + var refWidth = textUtils.safeMeasureText(_canvasContext, _testString, fontDesc); + var fontStyle = document.createElement("style"); + fontStyle.type = "text/css"; + var fontStr = ""; + isNaN(fontFamilyName - 0) ? fontStr += "@font-face { font-family:" + fontFamilyName + "; src:" : fontStr += "@font-face { font-family:'" + fontFamilyName + "'; src:"; + fontStr += "url('" + url + "');"; + fontStyle.textContent = fontStr + "}"; + document.body.appendChild(fontStyle); + var preloadDiv = document.createElement("div"); + var divStyle = preloadDiv.style; + divStyle.fontFamily = fontFamilyName; + preloadDiv.innerHTML = "."; + divStyle.position = "absolute"; + divStyle.left = "-100px"; + divStyle.top = "-100px"; + document.body.appendChild(preloadDiv); + if (useNativeCheck()) nativeCheckFontLoaded(Date.now(), fontFamilyName, onComplete); else { + var fontLoadHandle = { + fontFamilyName: fontFamilyName, + refWidth: refWidth, + onComplete: onComplete, + startTime: Date.now() + }; + _loadingFonts.push(fontLoadHandle); + -1 === _intervalId && (_intervalId = setInterval(_checkFontLoaded, 100)); + } + _fontFaces[fontFamilyName] = fontStyle; + }, + _getFontFamily: function _getFontFamily(fontHandle) { + var ttfIndex = fontHandle.lastIndexOf(".ttf"); + if (-1 === ttfIndex) return fontHandle; + var slashPos = fontHandle.lastIndexOf("/"); + var fontFamilyName; + fontFamilyName = -1 === slashPos ? fontHandle.substring(0, ttfIndex) + "_LABEL" : fontHandle.substring(slashPos + 1, ttfIndex) + "_LABEL"; + -1 !== fontFamilyName.indexOf(" ") && (fontFamilyName = '"' + fontFamilyName + '"'); + return fontFamilyName; + } + }; + module.exports = fontLoader; + }), { + "../utils/text-utils": 331 + }], + 93: [(function (require, module, exports) { + "use strict"; + var _require = require("./shared"), bundles = _require.bundles; + var helper = { + decodeUuid: require("../utils/decode-uuid"), + getUuidFromURL: (function () { + var _uuidRegex = /.*[\/\\][0-9a-fA-F]{2}[\/\\]([0-9a-fA-F-]{8,})/; + return function (url) { + var matches = url.match(_uuidRegex); + if (matches) return matches[1]; + return ""; + }; + })(), + getUrlWithUuid: function getUrlWithUuid(uuid, options) { + options = options || Object.create(null); + options.__isNative__ = options.isNative; + options.ext = options.nativeExt; + var bundle = bundles.find((function (bundle) { + return bundle.getAssetInfo(uuid); + })); + bundle && (options.bundle = bundle.name); + return cc.assetManager._transform(uuid, options); + }, + isScene: function isScene(asset) { + return asset && (asset.constructor === cc.SceneAsset || asset instanceof cc.Scene); + }, + normalize: function normalize(url) { + url && (46 === url.charCodeAt(0) && 47 === url.charCodeAt(1) ? url = url.slice(2) : 47 === url.charCodeAt(0) && (url = url.slice(1))); + return url; + } + }; + module.exports = helper; + }), { + "../utils/decode-uuid": 319, + "./shared": 102 + }], + 94: [(function (require, module, exports) { + "use strict"; + require("./deprecated"); + require("./CCAssetManager"); + }), { + "./CCAssetManager": 77, + "./deprecated": 83 + }], + 95: [(function (require, module, exports) { + "use strict"; + var packManager = require("./pack-manager"); + var Pipeline = require("./pipeline"); + var parser = require("./parser"); + var _require = require("./utilities"), getDepends = _require.getDepends, cache = _require.cache, gatherAsset = _require.gatherAsset, setProperties = _require.setProperties, forEach = _require.forEach, clear = _require.clear, checkCircleReference = _require.checkCircleReference; + var _require2 = require("./shared"), assets = _require2.assets, files = _require2.files, parsed = _require2.parsed, pipeline = _require2.pipeline; + var Task = require("./task"); + function load(task, done) { + var firstTask = false; + if (!task.progress) { + task.progress = { + finish: 0, + total: task.input.length, + canInvoke: true + }; + firstTask = true; + } + var options = task.options, progress = task.progress; + options.__exclude__ = options.__exclude__ || Object.create(null); + task.output = []; + forEach(task.input, (function (item, cb) { + var subTask = Task.create({ + input: item, + onProgress: task.onProgress, + options: options, + progress: progress, + onComplete: function onComplete(err, item) { + if (err && !task.isFinish) if (!cc.assetManager.force || firstTask) { + true; + cc.error(err.message, err.stack); + progress.canInvoke = false; + done(err); + } else progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total, item); + task.output.push(item); + subTask.recycle(); + cb(); + } + }); + loadOneAssetPipeline.async(subTask); + }), (function () { + options.__exclude__ = null; + if (task.isFinish) { + clear(task, true); + return task.dispatch("error"); + } + gatherAsset(task); + clear(task, true); + done(); + })); + } + var loadOneAssetPipeline = new Pipeline("loadOneAsset", [function fetch(task, done) { + var item = task.output = task.input; + var options = item.options, isNative = item.isNative, uuid = item.uuid, file = item.file; + var reload = options.reload; + if (file || !reload && !isNative && assets.has(uuid)) return done(); + packManager.load(item, task.options, (function (err, data) { + item.file = data; + done(err); + })); + }, function parse(task, done) { + var item = task.output = task.input, progress = task.progress, exclude = task.options.__exclude__; + var id = item.id, file = item.file, options = item.options; + if (item.isNative) parser.parse(id, file, item.ext, options, (function (err, asset) { + if (err) return done(err); + item.content = asset; + progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total, item); + files.remove(id); + parsed.remove(id); + done(); + })); else { + var uuid = item.uuid; + if (uuid in exclude) { + var _exclude$uuid = exclude[uuid], finish = _exclude$uuid.finish, content = _exclude$uuid.content, err = _exclude$uuid.err, callbacks = _exclude$uuid.callbacks; + progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total, item); + if (finish || checkCircleReference(uuid, uuid, exclude)) { + content && content.addRef && content.addRef(); + item.content = content; + done(err); + } else callbacks.push({ + done: done, + item: item + }); + } else if (!options.reload && assets.has(uuid)) { + var asset = assets.get(uuid); + if (options.__asyncLoadAssets__ || !asset.__asyncLoadAssets__) { + item.content = asset.addRef(); + progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total, item); + done(); + } else loadDepends(task, asset, done, false); + } else parser.parse(id, file, "import", options, (function (err, asset) { + if (err) return done(err); + asset._uuid = uuid; + loadDepends(task, asset, done, true); + })); + } + }]); + function loadDepends(task, asset, done, init) { + var item = task.input, progress = task.progress; + var uuid = item.uuid, id = item.id, options = item.options, config = item.config; + var __asyncLoadAssets__ = options.__asyncLoadAssets__, cacheAsset = options.cacheAsset; + var depends = []; + asset.addRef && asset.addRef(); + getDepends(uuid, asset, Object.create(null), depends, false, __asyncLoadAssets__, config); + progress.canInvoke && task.dispatch("progress", ++progress.finish, progress.total += depends.length, item); + var repeatItem = task.options.__exclude__[uuid] = { + content: asset, + finish: false, + callbacks: [{ + done: done, + item: item + }] + }; + var subTask = Task.create({ + input: depends, + options: task.options, + onProgress: task.onProgress, + onError: Task.prototype.recycle, + progress: progress, + onComplete: function onComplete(err) { + asset.decRef && asset.decRef(false); + asset.__asyncLoadAssets__ = __asyncLoadAssets__; + repeatItem.finish = true; + repeatItem.err = err; + if (!err) { + var assets = Array.isArray(subTask.output) ? subTask.output : [subTask.output]; + var map = Object.create(null); + for (var _i = 0, _l = assets.length; _i < _l; _i++) { + var dependAsset = assets[_i]; + dependAsset && (map[dependAsset instanceof cc.Asset ? dependAsset._uuid + "@import" : uuid + "@native"] = dependAsset); + } + if (init) { + var missingAsset = setProperties(uuid, asset, map); + if (!missingAsset && !asset.__onLoadInvoked__) try { + asset.onLoad && asset.onLoad(); + asset.__onLoadInvoked__ = true; + } catch (e) { + cc.error(e.message, e.stack); + } + files.remove(id); + parsed.remove(id); + cache(uuid, asset, void 0 !== cacheAsset ? cacheAsset : cc.assetManager.cacheAsset); + } else if (asset.__nativeDepend__ && !asset._nativeAsset) { + var missingAsset = setProperties(uuid, asset, map); + if (!missingAsset && !asset.__onLoadInvoked__) try { + asset.onLoad && asset.onLoad(); + asset.__onLoadInvoked__ = true; + } catch (e) { + cc.error(e.message, e.stack); + } + } + subTask.recycle(); + } + var callbacks = repeatItem.callbacks; + for (var i = 0, l = callbacks.length; i < l; i++) { + var cb = callbacks[i]; + asset.addRef && asset.addRef(); + cb.item.content = asset; + cb.done(err); + } + callbacks.length = 0; + } + }); + pipeline.async(subTask); + } + module.exports = load; + }), { + "./pack-manager": 96, + "./parser": 97, + "./pipeline": 98, + "./shared": 102, + "./task": 103, + "./utilities": 105 + }], + 96: [(function (require, module, exports) { + "use strict"; + var _deserializeCompiled = require("../platform/deserialize-compiled"); + var downloader = require("./downloader"); + var Cache = require("./cache"); + var js = require("../platform/js"); + var _require = require("./shared"), files = _require.files; + var _loading = new Cache(); + function isLoading(val) { + return _loading.has(val.uuid); + } + var packManager = { + unpackJson: function unpackJson(pack, json, options, onComplete) { + var out = js.createMap(true), err = null; + if (Array.isArray(json)) { + json = (0, _deserializeCompiled.unpackJSONs)(json); + json.length !== pack.length && cc.errorID(4915); + for (var i = 0; i < pack.length; i++) { + var key = pack[i] + "@import"; + out[key] = json[i]; + } + } else { + var textureType = js._getClassId(cc.Texture2D); + if (json.type === textureType) { + if (json.data) { + var datas = json.data.split("|"); + datas.length !== pack.length && cc.errorID(4915); + for (var _i = 0; _i < pack.length; _i++) out[pack[_i] + "@import"] = (0, _deserializeCompiled.packCustomObjData)(textureType, datas[_i], true); + } + } else { + err = new Error("unmatched type pack!"); + out = null; + } + } + onComplete && onComplete(err, out); + }, + init: function init() { + _loading.clear(); + }, + register: function register(type, handler) { + "object" === typeof type ? js.mixin(unpackers, type) : unpackers[type] = handler; + }, + unpack: function unpack(pack, data, type, options, onComplete) { + if (!data) { + onComplete && onComplete(new Error("package data is wrong!")); + return; + } + var unpacker = unpackers[type]; + unpacker(pack, data, options, onComplete); + }, + load: function load(item, options, onComplete) { + if (item.isNative || !item.info || !item.info.packs) return downloader.download(item.id, item.url, item.ext, item.options, onComplete); + if (files.has(item.id)) return onComplete(null, files.get(item.id)); + var packs = item.info.packs; + var pack = packs.find(isLoading); + if (pack) return _loading.get(pack.uuid).push({ + onComplete: onComplete, + id: item.id + }); + pack = packs[0]; + _loading.add(pack.uuid, [{ + onComplete: onComplete, + id: item.id + }]); + var url = cc.assetManager._transform(pack.uuid, { + ext: pack.ext, + bundle: item.config.name + }); + downloader.download(pack.uuid, url, pack.ext, item.options, (function (err, data) { + files.remove(pack.uuid); + err && cc.error(err.message, err.stack); + packManager.unpack(pack.packs, data, pack.ext, item.options, (function (err, result) { + if (!err) for (var id in result) files.add(id, result[id]); + var callbacks = _loading.remove(pack.uuid); + for (var i = 0, l = callbacks.length; i < l; i++) { + var cb = callbacks[i]; + if (err) { + cb.onComplete(err); + continue; + } + var data = result[cb.id]; + data ? cb.onComplete(null, data) : cb.onComplete(new Error("can not retrieve data from package")); + } + })); + })); + } + }; + var unpackers = { + ".json": packManager.unpackJson + }; + module.exports = packManager; + }), { + "../platform/deserialize-compiled": 254, + "../platform/js": 260, + "./cache": 80, + "./downloader": 89, + "./shared": 102 + }], + 97: [(function (require, module, exports) { + "use strict"; + var plistParser = require("../platform/CCSAXParser").plistParser; + var js = require("../platform/js"); + var deserialize = require("./deserialize"); + var Cache = require("./cache"); + var _require = require("./helper"), isScene = _require.isScene; + var _require2 = require("./shared"), parsed = _require2.parsed, files = _require2.files; + var _require3 = require("../platform/CCSys"), __audioSupport = _require3.__audioSupport, capabilities = _require3.capabilities; + var _parsing = new Cache(); + var parser = { + parseImage: function parseImage(file, options, onComplete) { + if (capabilities.imageBitmap && file instanceof Blob) { + var imageOptions = {}; + imageOptions.imageOrientation = options.__flipY__ ? "flipY" : "none"; + imageOptions.premultiplyAlpha = options.__premultiplyAlpha__ ? "premultiply" : "none"; + createImageBitmap(file, imageOptions).then((function (result) { + result.flipY = !!options.__flipY__; + result.premultiplyAlpha = !!options.__premultiplyAlpha__; + onComplete && onComplete(null, result); + }), (function (err) { + onComplete && onComplete(err, null); + })); + } else onComplete && onComplete(null, file); + }, + parseAudio: function parseAudio(file, options, onComplete) { + file instanceof ArrayBuffer ? __audioSupport.context.decodeAudioData(file, (function (buffer) { + onComplete && onComplete(null, buffer); + }), (function (e) { + onComplete && onComplete(e, null); + })) : onComplete && onComplete(null, file); + }, + parsePVRTex: (function () { + var PVR_HEADER_LENGTH = 13; + var PVR_MAGIC = 55727696; + var PVR_HEADER_MAGIC = 0; + var PVR_HEADER_FORMAT = 2; + var PVR_HEADER_HEIGHT = 6; + var PVR_HEADER_WIDTH = 7; + var PVR_HEADER_MIPMAPCOUNT = 11; + var PVR_HEADER_METADATA = 12; + return function (file, options, onComplete) { + var err = null, out = null; + try { + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var header = new Int32Array(buffer, 0, PVR_HEADER_LENGTH); + if (header[PVR_HEADER_MAGIC] != PVR_MAGIC) throw new Error("Invalid magic number in PVR header"); + var width = header[PVR_HEADER_WIDTH]; + var height = header[PVR_HEADER_HEIGHT]; + var dataOffset = header[PVR_HEADER_METADATA] + 52; + var pvrtcData = new Uint8Array(buffer, dataOffset); + out = { + _data: pvrtcData, + _compressed: true, + width: width, + height: height + }; + } catch (e) { + err = e; + } + onComplete && onComplete(err, out); + }; + })(), + parsePKMTex: (function () { + var ETC_PKM_HEADER_SIZE = 16; + var ETC_PKM_FORMAT_OFFSET = 6; + var ETC_PKM_ENCODED_WIDTH_OFFSET = 8; + var ETC_PKM_ENCODED_HEIGHT_OFFSET = 10; + var ETC_PKM_WIDTH_OFFSET = 12; + var ETC_PKM_HEIGHT_OFFSET = 14; + var ETC1_RGB_NO_MIPMAPS = 0; + var ETC2_RGB_NO_MIPMAPS = 1; + var ETC2_RGBA_NO_MIPMAPS = 3; + function readBEUint16(header, offset) { + return header[offset] << 8 | header[offset + 1]; + } + return function (file, options, onComplete) { + var err = null, out = null; + try { + var buffer = file instanceof ArrayBuffer ? file : file.buffer; + var header = new Uint8Array(buffer); + var format = readBEUint16(header, ETC_PKM_FORMAT_OFFSET); + if (format !== ETC1_RGB_NO_MIPMAPS && format !== ETC2_RGB_NO_MIPMAPS && format !== ETC2_RGBA_NO_MIPMAPS) return new Error("Invalid magic number in ETC header"); + var width = readBEUint16(header, ETC_PKM_WIDTH_OFFSET); + var height = readBEUint16(header, ETC_PKM_HEIGHT_OFFSET); + var encodedWidth = readBEUint16(header, ETC_PKM_ENCODED_WIDTH_OFFSET); + var encodedHeight = readBEUint16(header, ETC_PKM_ENCODED_HEIGHT_OFFSET); + var etcData = new Uint8Array(buffer, ETC_PKM_HEADER_SIZE); + out = { + _data: etcData, + _compressed: true, + width: width, + height: height + }; + } catch (e) { + err = e; + } + onComplete && onComplete(err, out); + }; + })(), + parsePlist: function parsePlist(file, options, onComplete) { + var err = null; + var result = plistParser.parse(file); + result || (err = new Error("parse failed")); + onComplete && onComplete(err, result); + }, + parseImport: function parseImport(file, options, onComplete) { + if (!file) return onComplete && onComplete(new Error("Json is empty")); + var result, err = null; + try { + result = deserialize(file, options); + } catch (e) { + err = e; + } + onComplete && onComplete(err, result); + }, + init: function init() { + _parsing.clear(); + }, + register: function register(type, handler) { + "object" === typeof type ? js.mixin(parsers, type) : parsers[type] = handler; + }, + parse: function parse(id, file, type, options, onComplete) { + var parsedAsset, parsing, parseHandler; + if (parsedAsset = parsed.get(id)) onComplete(null, parsedAsset); else if (parsing = _parsing.get(id)) parsing.push(onComplete); else if (parseHandler = parsers[type]) { + _parsing.add(id, [onComplete]); + parseHandler(file, options, (function (err, data) { + err ? files.remove(id) : isScene(data) || parsed.add(id, data); + var callbacks = _parsing.remove(id); + for (var i = 0, l = callbacks.length; i < l; i++) callbacks[i](err, data); + })); + } else onComplete(null, file); + } + }; + var parsers = { + ".png": parser.parseImage, + ".jpg": parser.parseImage, + ".bmp": parser.parseImage, + ".jpeg": parser.parseImage, + ".gif": parser.parseImage, + ".ico": parser.parseImage, + ".tiff": parser.parseImage, + ".webp": parser.parseImage, + ".image": parser.parseImage, + ".pvr": parser.parsePVRTex, + ".pkm": parser.parsePKMTex, + ".mp3": parser.parseAudio, + ".ogg": parser.parseAudio, + ".wav": parser.parseAudio, + ".m4a": parser.parseAudio, + ".plist": parser.parsePlist, + import: parser.parseImport + }; + module.exports = parser; + }), { + "../platform/CCSAXParser": 246, + "../platform/CCSys": 248, + "../platform/js": 260, + "./cache": 80, + "./deserialize": 84, + "./helper": 93, + "./shared": 102 + }], + 98: [(function (require, module, exports) { + "use strict"; + var Task = require("./task"); + var _pipelineId = 0; + function Pipeline(name, funcs) { + if (!Array.isArray(funcs)) { + cc.warn("funcs must be an array"); + return; + } + this.id = _pipelineId++; + this.name = name; + this.pipes = []; + for (var i = 0, l = funcs.length; i < l; i++) "function" === typeof funcs[i] && this.pipes.push(funcs[i]); + } + Pipeline.prototype = { + constructor: Pipeline, + insert: function insert(func, index) { + if ("function" !== typeof func || index > this.pipes.length) { + cc.warnID(4921); + return; + } + this.pipes.splice(index, 0, func); + return this; + }, + append: function append(func) { + if ("function" !== typeof func) return; + this.pipes.push(func); + return this; + }, + remove: function remove(index) { + if ("number" !== typeof index) return; + this.pipes.splice(index, 1); + return this; + }, + sync: function sync(task) { + var pipes = this.pipes; + if (!(task instanceof Task) || 0 === pipes.length) return; + if (null != task.output) { + task.input = task.output; + task.output = null; + } + task._isFinish = false; + for (var i = 0, l = pipes.length; i < l;) { + var pipe = pipes[i]; + var result = pipe(task); + if (result) { + task._isFinish = true; + return result; + } + i++; + if (i !== l) { + task.input = task.output; + task.output = null; + } + } + task._isFinish = true; + return task.output; + }, + async: function async(task) { + var pipes = this.pipes; + if (!(task instanceof Task) || 0 === pipes.length) return; + if (null != task.output) { + task.input = task.output; + task.output = null; + } + task._isFinish = false; + this._flow(0, task); + }, + _flow: function _flow(index, task) { + var self = this; + var pipe = this.pipes[index]; + pipe(task, (function (result) { + if (result) { + task._isFinish = true; + task.onComplete && task.onComplete(result); + } else { + index++; + if (index < self.pipes.length) { + task.input = task.output; + task.output = null; + self._flow(index, task); + } else { + task._isFinish = true; + task.onComplete && task.onComplete(result, task.output); + } + } + })); + } + }; + module.exports = Pipeline; + }), { + "./task": 103 + }], + 99: [(function (require, module, exports) { + "use strict"; + var Task = require("./task"); + var _require = require("./shared"), transformPipeline = _require.transformPipeline, RequestType = _require.RequestType; + function preprocess(task, done) { + var options = task.options, subOptions = Object.create(null), leftOptions = Object.create(null); + for (var op in options) switch (op) { + case RequestType.PATH: + case RequestType.UUID: + case RequestType.DIR: + case RequestType.SCENE: + case RequestType.URL: + break; + + case "__requestType__": + case "__isNative__": + case "ext": + case "type": + case "__nativeName__": + case "audioLoadMode": + case "bundle": + subOptions[op] = options[op]; + break; + + case "__exclude__": + case "__outputAsArray__": + leftOptions[op] = options[op]; + break; + + default: + subOptions[op] = options[op]; + leftOptions[op] = options[op]; + } + task.options = leftOptions; + var subTask = Task.create({ + input: task.input, + options: subOptions + }); + var err = null; + try { + task.output = task.source = transformPipeline.sync(subTask); + } catch (e) { + err = e; + for (var i = 0, l = subTask.output.length; i < l; i++) subTask.output[i].recycle(); + } + subTask.recycle(); + done(err); + } + module.exports = preprocess; + }), { + "./shared": 102, + "./task": 103 + }], + 100: [(function (require, module, exports) { + "use strict"; + var dependUtil = require("./depend-util"); + var Cache = require("./cache"); + require("../assets/CCAsset"); + var _require = require("./shared"), assets = _require.assets; + var _require2 = require("../platform/utils"), callInNextTick = _require2.callInNextTick; + function visitAsset(asset, deps) { + if (!asset._uuid) return; + deps.push(asset._uuid); + } + function visitComponent(comp, deps) { + var props = Object.getOwnPropertyNames(comp); + for (var i = 0; i < props.length; i++) { + var propName = props[i]; + if ("node" === propName || "__eventTargets" === propName) continue; + var value = comp[propName]; + if ("object" === typeof value && value) if (Array.isArray(value)) for (var j = 0; j < value.length; j++) { + var val = value[j]; + val instanceof cc.Asset && visitAsset(val, deps); + } else if (value.constructor && value.constructor !== Object) value instanceof cc.Asset && visitAsset(value, deps); else { + var keys = Object.getOwnPropertyNames(value); + for (var _j = 0; _j < keys.length; _j++) { + var _val = value[keys[_j]]; + _val instanceof cc.Asset && visitAsset(_val, deps); + } + } + } + } + var _temp = []; + function visitNode(node, deps) { + for (var i = 0; i < node._components.length; i++) visitComponent(node._components[i], deps); + for (var _i = 0; _i < node._children.length; _i++) visitNode(node._children[_i], deps); + } + function descendOpRef(asset, refs, exclude, op) { + exclude.push(asset._uuid); + var depends = dependUtil.getDeps(asset._uuid); + for (var i = 0, l = depends.length; i < l; i++) { + var dependAsset = assets.get(depends[i]); + if (dependAsset) { + var uuid = dependAsset._uuid; + uuid in refs ? refs[uuid] += op : refs[uuid] = dependAsset.refCount + op; + if (exclude.includes(uuid)) continue; + descendOpRef(dependAsset, refs, exclude, op); + } + } + } + function checkCircularReference(asset) { + var refs = Object.create(null); + refs[asset._uuid] = asset.refCount; + descendOpRef(asset, refs, _temp, -1); + _temp.length = 0; + if (0 !== refs[asset._uuid]) return refs[asset._uuid]; + for (var uuid in refs) 0 !== refs[uuid] && descendOpRef(assets.get(uuid), refs, _temp, 1); + _temp.length = 0; + return refs[asset._uuid]; + } + var _persistNodeDeps = new Cache(); + var _toDelete = new Cache(); + var eventListener = false; + function freeAssets() { + eventListener = false; + _toDelete.forEach((function (asset) { + releaseManager._free(asset); + })); + _toDelete.clear(); + } + var releaseManager = { + init: function init() { + _persistNodeDeps.clear(); + _toDelete.clear(); + }, + _addPersistNodeRef: function _addPersistNodeRef(node) { + var deps = []; + visitNode(node, deps); + for (var i = 0, l = deps.length; i < l; i++) { + var dependAsset = assets.get(deps[i]); + dependAsset && dependAsset.addRef(); + } + _persistNodeDeps.add(node.uuid, deps); + }, + _removePersistNodeRef: function _removePersistNodeRef(node) { + if (_persistNodeDeps.has(node.uuid)) { + var deps = _persistNodeDeps.get(node.uuid); + for (var i = 0, l = deps.length; i < l; i++) { + var dependAsset = assets.get(deps[i]); + dependAsset && dependAsset.decRef(); + } + _persistNodeDeps.remove(node.uuid); + } + }, + _autoRelease: function _autoRelease(oldScene, newScene, persistNodes) { + if (oldScene) { + var childs = dependUtil.getDeps(oldScene._id); + for (var i = 0, l = childs.length; i < l; i++) { + var asset = assets.get(childs[i]); + asset && asset.decRef((false, oldScene.autoReleaseAssets)); + } + var dependencies = dependUtil._depends.get(oldScene._id); + if (dependencies && dependencies.persistDeps) { + var persistDeps = dependencies.persistDeps; + for (var _i2 = 0, _l = persistDeps.length; _i2 < _l; _i2++) { + var _asset = assets.get(persistDeps[_i2]); + _asset && _asset.decRef((false, oldScene.autoReleaseAssets)); + } + } + oldScene._id !== newScene._id && dependUtil.remove(oldScene._id); + } + var sceneDeps = dependUtil._depends.get(newScene._id); + sceneDeps && (sceneDeps.persistDeps = []); + for (var _i3 = 0, _l2 = persistNodes.length; _i3 < _l2; _i3++) { + var node = persistNodes[_i3]; + var deps = _persistNodeDeps.get(node.uuid); + for (var _i4 = 0, _l3 = deps.length; _i4 < _l3; _i4++) { + var dependAsset = assets.get(deps[_i4]); + dependAsset && dependAsset.addRef(); + } + sceneDeps && sceneDeps.persistDeps.push.apply(sceneDeps.persistDeps, deps); + } + }, + _free: function _free(asset, force) { + _toDelete.remove(asset._uuid); + if (!cc.isValid(asset, true)) return; + if (!force && asset.refCount > 0 && checkCircularReference(asset) > 0) return; + assets.remove(asset._uuid); + var depends = dependUtil.getDeps(asset._uuid); + for (var i = 0, l = depends.length; i < l; i++) { + var dependAsset = assets.get(depends[i]); + if (dependAsset) { + dependAsset.decRef(false); + releaseManager._free(dependAsset, false); + } + } + asset.destroy(); + dependUtil.remove(asset._uuid); + }, + tryRelease: function tryRelease(asset, force) { + if (!(asset instanceof cc.Asset)) return; + if (force) releaseManager._free(asset, force); else { + _toDelete.add(asset._uuid, asset); + if (!eventListener) { + eventListener = true; + callInNextTick(freeAssets); + } + } + } + }; + module.exports = releaseManager; + }), { + "../assets/CCAsset": 106, + "../platform/utils": 263, + "./cache": 80, + "./depend-util": 82, + "./shared": 102 + }], + 101: [(function (require, module, exports) { + "use strict"; + var MAX_DEAD_NUM = 500; + var _deadPool = []; + function RequestItem() { + this._id = ""; + this.uuid = ""; + this.url = ""; + this.ext = ".json"; + this.content = null; + this.file = null; + this.info = null; + this.config = null; + this.isNative = false; + this.options = Object.create(null); + } + RequestItem.prototype = { + constructor: RequestItem, + get id() { + this._id || (this._id = this.uuid + "@" + (this.isNative ? "native" : "import")); + return this._id; + }, + recycle: function recycle() { + if (_deadPool.length === MAX_DEAD_NUM) return; + this._id = ""; + this.uuid = ""; + this.url = ""; + this.ext = ".json"; + this.content = null; + this.file = null; + this.info = null; + this.config = null; + this.isNative = false; + this.options = Object.create(null); + _deadPool.push(this); + } + }; + RequestItem.create = function () { + var out = null; + out = 0 !== _deadPool.length ? _deadPool.pop() : new RequestItem(); + return out; + }; + module.exports = RequestItem; + }), {}], + 102: [(function (require, module, exports) { + "use strict"; + var Cache = require("./cache"); + var Pipeline = require("./pipeline"); + var assets = new Cache(); + var files = new Cache(); + var parsed = new Cache(); + var bundles = new Cache(); + var pipeline = new Pipeline("normal load", []); + var fetchPipeline = new Pipeline("fetch", []); + var transformPipeline = new Pipeline("transform url", []); + var RequestType = { + UUID: "uuid", + PATH: "path", + DIR: "dir", + URL: "url", + SCENE: "scene" + }; + var BuiltinBundleName = { + RESOURCES: "resources", + INTERNAL: "internal", + MAIN: "main", + START_SCENE: "start-scene" + }; + module.exports = { + assets: assets, + files: files, + parsed: parsed, + pipeline: pipeline, + fetchPipeline: fetchPipeline, + transformPipeline: transformPipeline, + RequestType: RequestType, + bundles: bundles, + BuiltinBundleName: BuiltinBundleName + }; + }), { + "./cache": 80, + "./pipeline": 98 + }], + 103: [(function (require, module, exports) { + "use strict"; + var _taskId = 0; + var MAX_DEAD_NUM = 500; + var _deadPool = []; + function Task(options) { + this.id = _taskId++; + this._isFinish = true; + this.onComplete = null; + this.onProgress = null; + this.onError = null; + this.source = null; + this.output = null; + this.input = null; + this.progress = null; + this.options = null; + this.set(options); + } + Task.prototype = { + constructor: Task, + set: function set(options) { + options = options || Object.create(null); + this.onComplete = options.onComplete; + this.onProgress = options.onProgress; + this.onError = options.onError; + this.source = this.input = options.input; + this.output = null; + this.progress = options.progress; + this.options = options.options || Object.create(null); + }, + dispatch: function dispatch(event, param1, param2, param3, param4) { + switch (event) { + case "complete": + this.onComplete && this.onComplete(param1, param2, param3, param4); + break; + + case "progress": + this.onProgress && this.onProgress(param1, param2, param3, param4); + break; + + case "error": + this.onError && this.onError(param1, param2, param3, param4); + break; + + default: + var str = "on" + event[0].toUpperCase() + event.substr(1); + "function" === typeof this[str] && this[str](param1, param2, param3, param4); + } + }, + recycle: function recycle() { + if (_deadPool.length === MAX_DEAD_NUM) return; + this.onComplete = null; + this.onProgress = null; + this.onError = null; + this.source = this.output = this.input = null; + this.progress = null; + this.options = null; + _deadPool.push(this); + }, + get isFinish() { + return this._isFinish; + } + }; + Task.create = function (options) { + var out = null; + if (0 !== _deadPool.length) { + out = _deadPool.pop(); + out.set(options); + } else out = new Task(options); + return out; + }; + module.exports = Task; + }), {}], + 104: [(function (require, module, exports) { + "use strict"; + var _require = require("./helper"), decodeUuid = _require.decodeUuid; + var RequestItem = require("./request-item"); + var _require2 = require("./shared"), RequestType = _require2.RequestType, bundles = _require2.bundles; + function parse(task) { + var input = task.input, options = task.options; + input = Array.isArray(input) ? input : [input]; + task.output = []; + for (var i = 0; i < input.length; i++) { + var item = input[i]; + var out = RequestItem.create(); + if ("string" === typeof item) { + item = Object.create(null); + item[options.__requestType__ || RequestType.UUID] = input[i]; + } + if ("object" === typeof item) { + cc.js.addon(item, options); + item.preset && cc.js.addon(item, cc.assetManager.presets[item.preset]); + for (var key in item) { + switch (key) { + case RequestType.UUID: + var uuid = out.uuid = decodeUuid(item.uuid); + if (bundles.has(item.bundle)) { + var config = bundles.get(item.bundle)._config; + var info = config.getAssetInfo(uuid); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) throw new Error("Please load bundle " + info.redirect + " first"); + config = bundles.get(info.redirect)._config; + info = config.getAssetInfo(uuid); + } + out.config = config; + out.info = info; + } + out.ext = item.ext || ".json"; + break; + + case "__requestType__": + case "ext": + case "bundle": + case "preset": + case "type": + break; + + case RequestType.DIR: + if (bundles.has(item.bundle)) { + var infos = []; + bundles.get(item.bundle)._config.getDirWithPath(item.dir, item.type, infos); + for (var _i = 0, l = infos.length; _i < l; _i++) { + var info = infos[_i]; + input.push({ + uuid: info.uuid, + __isNative__: false, + ext: ".json", + bundle: item.bundle + }); + } + } + out.recycle(); + out = null; + break; + + case RequestType.PATH: + if (bundles.has(item.bundle)) { + var config = bundles.get(item.bundle)._config; + var info = config.getInfoWithPath(item.path, item.type); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) throw new Error("you need to load bundle " + info.redirect + " first"); + config = bundles.get(info.redirect)._config; + info = config.getAssetInfo(info.uuid); + } + if (!info) { + out.recycle(); + throw new Error("Bundle " + item.bundle + " doesn't contain " + item.path); + } + out.config = config; + out.uuid = info.uuid; + out.info = info; + } + out.ext = item.ext || ".json"; + break; + + case RequestType.SCENE: + if (bundles.has(item.bundle)) { + var config = bundles.get(item.bundle)._config; + var info = config.getSceneInfo(item.scene); + if (info && info.redirect) { + if (!bundles.has(info.redirect)) throw new Error("you need to load bundle " + info.redirect + " first"); + config = bundles.get(info.redirect)._config; + info = config.getAssetInfo(info.uuid); + } + if (!info) { + out.recycle(); + throw new Error("Bundle " + config.name + " doesn't contain scene " + item.scene); + } + out.config = config; + out.uuid = info.uuid; + out.info = info; + } + break; + + case "__isNative__": + out.isNative = item.__isNative__; + break; + + case RequestType.URL: + out.url = item.url; + out.uuid = item.uuid || item.url; + out.ext = item.ext || cc.path.extname(item.url); + out.isNative = void 0 === item.__isNative__ || item.__isNative__; + break; + + default: + out.options[key] = item[key]; + } + if (!out) break; + } + } + if (!out) continue; + task.output.push(out); + if (!out.uuid && !out.url) throw new Error("Can not parse this input:" + JSON.stringify(item)); + } + return null; + } + function combine(task) { + var input = task.output = task.input; + for (var i = 0; i < input.length; i++) { + var item = input[i]; + if (item.url) continue; + var url = "", base = ""; + var config = item.config; + base = item.isNative ? config && config.nativeBase ? config.base + config.nativeBase : cc.assetManager.generalNativeBase : config && config.importBase ? config.base + config.importBase : cc.assetManager.generalImportBase; + var uuid = item.uuid; + var ver = ""; + item.info && (ver = item.isNative ? item.info.nativeVer ? "." + item.info.nativeVer : "" : item.info.ver ? "." + item.info.ver : ""); + url = ".ttf" === item.ext ? base + "/" + uuid.slice(0, 2) + "/" + uuid + ver + "/" + item.options.__nativeName__ : base + "/" + uuid.slice(0, 2) + "/" + uuid + ver + item.ext; + item.url = url; + } + return null; + } + module.exports = { + parse: parse, + combine: combine + }; + }), { + "./helper": 93, + "./request-item": 101, + "./shared": 102 + }], + 105: [(function (require, module, exports) { + "use strict"; + var dependUtil = require("./depend-util"); + var _require = require("./helper"), isScene = _require.isScene, decodeUuid = _require.decodeUuid; + var _require2 = require("./shared"), assets = _require2.assets; + var _require3 = require("../platform/utils"), callInNextTick = _require3.callInNextTick; + var MissingObjectReporter = false; + require("../assets/CCAsset"); + var utils = { + processOptions: function processOptions(options) { + false; + var uuids = options.uuids; + var paths = options.paths; + var types = options.types; + var bundles = options.deps; + var realEntries = options.paths = Object.create(null); + if (false === options.debug) { + for (var i = 0, l = uuids.length; i < l; i++) uuids[i] = decodeUuid(uuids[i]); + for (var id in paths) { + var entry = paths[id]; + var type = entry[1]; + entry[1] = types[type]; + } + } else { + var out = Object.create(null); + for (var _i = 0, _l = uuids.length; _i < _l; _i++) { + var uuid = uuids[_i]; + uuids[_i] = out[uuid] = decodeUuid(uuid); + } + uuids = out; + } + for (var _id in paths) { + var _entry = paths[_id]; + realEntries[uuids[_id]] = _entry; + } + var scenes = options.scenes; + for (var name in scenes) { + var _uuid = scenes[name]; + scenes[name] = uuids[_uuid]; + } + var packs = options.packs; + for (var packId in packs) { + var packedIds = packs[packId]; + for (var j = 0; j < packedIds.length; ++j) packedIds[j] = uuids[packedIds[j]]; + } + var versions = options.versions; + if (versions) for (var folder in versions) { + var entries = versions[folder]; + for (var _i2 = 0; _i2 < entries.length; _i2 += 2) { + var _uuid2 = entries[_i2]; + entries[_i2] = uuids[_uuid2] || _uuid2; + } + } + var redirect = options.redirect; + if (redirect) for (var _i3 = 0; _i3 < redirect.length; _i3 += 2) { + redirect[_i3] = uuids[redirect[_i3]]; + redirect[_i3 + 1] = bundles[redirect[_i3 + 1]]; + } + }, + clear: function clear(task, clearRef) { + for (var i = 0, l = task.input.length; i < l; i++) { + var item = task.input[i]; + clearRef && !item.isNative && item.content && item.content.decRef && item.content.decRef(false); + item.recycle(); + } + task.input = null; + }, + urlAppendTimestamp: function urlAppendTimestamp(url) { + if (cc.assetManager.downloader.appendTimeStamp && "string" === typeof url) return /\?/.test(url) ? url + "&_t=" + (new Date() - 0) : url + "?_t=" + (new Date() - 0); + return url; + }, + retry: function retry(process, times, wait, onComplete, index) { + index = index || 0; + process(index, (function (err, result) { + index++; + !err || index > times ? onComplete && onComplete(err, result) : setTimeout((function () { + utils.retry(process, times, wait, onComplete, index); + }), wait); + })); + }, + getDepends: function getDepends(uuid, data, exclude, depends, preload, asyncLoadAssets, config) { + try { + var info = dependUtil.parse(uuid, data); + var includeNative = true; + data instanceof cc.Asset && (!data.__nativeDepend__ || data._nativeAsset) && (includeNative = false); + if (preload) { + for (var _i4 = 0, _l2 = info.deps.length; _i4 < _l2; _i4++) { + var _dep = info.deps[_i4]; + if (!(_dep in exclude)) { + exclude[_dep] = true; + depends.push({ + uuid: _dep, + bundle: config && config.name + }); + } + } + if (includeNative && info.nativeDep) { + config && (info.nativeDep.bundle = config.name); + depends.push(Object.assign({}, info.nativeDep)); + } + } else { + asyncLoadAssets = (true, !!data.asyncLoadAssets || asyncLoadAssets && !info.preventDeferredLoadDependents); + for (var i = 0, l = info.deps.length; i < l; i++) { + var dep = info.deps[i]; + if (!(dep in exclude)) { + exclude[dep] = true; + depends.push({ + uuid: dep, + __asyncLoadAssets__: asyncLoadAssets, + bundle: config && config.name + }); + } + } + if (includeNative && !asyncLoadAssets && !info.preventPreloadNativeObject && info.nativeDep) { + config && (info.nativeDep.bundle = config.name); + depends.push(Object.assign({}, info.nativeDep)); + } + } + } catch (e) { + cc.error(e.message, e.stack); + } + }, + cache: function cache(id, asset, cacheAsset) { + if (!asset) return; + var _isScene = isScene(asset); + !_isScene && cacheAsset && assets.add(id, asset); + _isScene && false; + }, + setProperties: function setProperties(uuid, asset, assetsMap) { + var missingAsset = false; + var depends = asset.__depends__; + if (depends) { + var missingAssetReporter = null; + for (var i = 0, l = depends.length; i < l; i++) { + var depend = depends[i]; + var dependAsset = assetsMap[depend.uuid + "@import"]; + if (dependAsset) depend.owner[depend.prop] = dependAsset.addRef(); else { + false; + cc.error("The asset " + depend.uuid + " is missing!"); + missingAsset = true; + } + } + missingAssetReporter && missingAssetReporter.reportByOwner(); + asset.__depends__ = void 0; + } + if (asset.__nativeDepend__) { + if (!asset._nativeAsset) if (assetsMap[uuid + "@native"]) asset._nativeAsset = assetsMap[uuid + "@native"]; else { + missingAsset = true; + false; + } + asset.__nativeDepend__ = void 0; + } + return missingAsset; + }, + gatherAsset: function gatherAsset(task) { + var source = task.source; + if (task.options.__outputAsArray__ || 1 !== source.length) { + var output = task.output = []; + for (var i = 0, l = source.length; i < l; i++) output.push(source[i].content); + } else task.output = source[0].content; + }, + forEach: function forEach(array, process, onComplete) { + var count = 0; + var errs = []; + 0 === array.length && onComplete && onComplete(errs); + for (var i = 0, l = array.length; i < l; i++) process(array[i], (function (err) { + err && errs.push(err); + count++; + count === l && onComplete && onComplete(errs); + })); + }, + parseParameters: function parseParameters(options, onProgress, onComplete) { + if (void 0 === onComplete) { + var isCallback = "function" === typeof options; + if (onProgress) { + onComplete = onProgress; + isCallback || (onProgress = null); + } else if (void 0 === onProgress && isCallback) { + onComplete = options; + options = null; + onProgress = null; + } + if (void 0 !== onProgress && isCallback) { + onProgress = options; + options = null; + } + } + options = options || Object.create(null); + return { + options: options, + onProgress: onProgress, + onComplete: onComplete + }; + }, + parseLoadResArgs: function parseLoadResArgs(type, onProgress, onComplete) { + if (void 0 === onComplete) { + var isValidType = cc.js.isChildClassOf(type, cc.Asset); + if (onProgress) { + onComplete = onProgress; + isValidType && (onProgress = null); + } else if (void 0 === onProgress && !isValidType) { + onComplete = type; + onProgress = null; + type = null; + } + if (void 0 !== onProgress && !isValidType) { + onProgress = type; + type = null; + } + } + return { + type: type, + onProgress: onProgress, + onComplete: onComplete + }; + }, + checkCircleReference: function checkCircleReference(owner, uuid, map, checked) { + checked || (checked = Object.create(null)); + var item = map[uuid]; + if (!item || checked[uuid]) return false; + checked[uuid] = true; + var result = false; + var deps = dependUtil.getDeps(uuid); + if (deps) for (var i = 0, l = deps.length; i < l; i++) { + var dep = deps[i]; + if (dep === owner || utils.checkCircleReference(owner, dep, map, checked)) { + result = true; + break; + } + } + return result; + }, + asyncify: function asyncify(cb) { + return function (p1, p2) { + if (!cb) return; + var refs = []; + Array.isArray(p2) ? p2.forEach((function (x) { + return x instanceof cc.Asset && refs.push(x.addRef()); + })) : p2 instanceof cc.Asset && refs.push(p2.addRef()); + callInNextTick((function () { + refs.forEach((function (x) { + return x.decRef(false); + })); + cb(p1, p2); + })); + }; + } + }; + module.exports = utils; + }), { + "../assets/CCAsset": 106, + "../platform/utils": 263, + "./depend-util": 82, + "./helper": 93, + "./shared": 102 + }], + 106: [(function (require, module, exports) { + "use strict"; + var CCObject = require("../platform/CCObject"); + cc.Asset = cc.Class({ + name: "cc.Asset", + extends: CCObject, + ctor: function ctor() { + Object.defineProperty(this, "_uuid", { + value: "", + writable: true + }); + this.loaded = true; + this._nativeUrl = ""; + this._ref = 0; + }, + properties: { + nativeUrl: { + get: function get() { + if (!this._nativeUrl && this._native) { + var name = this._native; + if (47 === name.charCodeAt(0)) return name.slice(1); + 46 === name.charCodeAt(0) ? this._nativeUrl = cc.assetManager.utils.getUrlWithUuid(this._uuid, { + nativeExt: name, + isNative: true + }) : this._nativeUrl = cc.assetManager.utils.getUrlWithUuid(this._uuid, { + __nativeName__: name, + nativeExt: cc.path.extname(name), + isNative: true + }); + } + return this._nativeUrl; + }, + visible: false + }, + refCount: { + get: function get() { + return this._ref; + } + }, + _native: "", + _nativeAsset: { + get: function get() { + return this._$nativeAsset; + }, + set: function set(obj) { + this._$nativeAsset = obj; + } + }, + _nativeDep: { + get: function get() { + if (this._native) return { + __isNative__: true, + uuid: this._uuid, + ext: this._native + }; + } + } + }, + statics: { + deserialize: false, + preventDeferredLoadDependents: false, + preventPreloadNativeObject: false + }, + toString: function toString() { + return this.nativeUrl; + }, + serialize: false, + createNode: null, + _setRawAsset: function _setRawAsset(filename, inLibrary) { + this._native = false !== inLibrary ? filename || void 0 : "/" + filename; + }, + addRef: function addRef() { + this._ref++; + return this; + }, + decRef: function decRef(autoRelease) { + this._ref > 0 && this._ref--; + false !== autoRelease && cc.assetManager._releaseManager.tryRelease(this); + return this; + } + }); + module.exports = cc.Asset; + }), { + "../platform/CCObject": 245 + }], + 107: [(function (require, module, exports) { + "use strict"; + var Asset = require("./CCAsset"); + var EventTarget = require("../event/event-target"); + var LoadMode = cc.Enum({ + WEB_AUDIO: 0, + DOM_AUDIO: 1 + }); + var AudioClip = cc.Class({ + name: "cc.AudioClip", + extends: Asset, + mixins: [EventTarget], + ctor: function ctor() { + this._loading = false; + this.loaded = false; + this._audio = null; + }, + properties: { + duration: 0, + loadMode: { + default: LoadMode.WEB_AUDIO, + type: LoadMode + }, + _nativeAsset: { + get: function get() { + return this._audio; + }, + set: function set(value) { + value instanceof cc.AudioClip ? this._audio = value._nativeAsset : this._audio = value; + if (this._audio) { + this.loaded = true; + this.emit("load"); + } + }, + override: true + }, + _nativeDep: { + get: function get() { + return { + uuid: this._uuid, + audioLoadMode: this.loadMode, + ext: cc.path.extname(this._native), + __isNative__: true + }; + }, + override: true + } + }, + statics: { + LoadMode: LoadMode, + _loadByUrl: function _loadByUrl(url, callback) { + var audioClip = cc.assetManager.assets.get(url); + audioClip ? callback(null, audioClip) : cc.assetManager.loadRemote(url, (function (error, data) { + if (error) return callback(error); + callback(null, data); + })); + } + }, + _ensureLoaded: function _ensureLoaded(onComplete) { + if (this.loaded) return onComplete && onComplete(); + onComplete && this.once("load", onComplete); + if (!this._loading) { + this._loading = true; + var self = this; + cc.assetManager.postLoadNative(this, (function (err) { + self._loading = false; + })); + } + }, + destroy: function destroy() { + cc.audioEngine.uncache(this); + this._super(); + } + }); + cc.AudioClip = AudioClip; + module.exports = AudioClip; + }), { + "../event/event-target": 186, + "./CCAsset": 106 + }], + 108: [(function (require, module, exports) { + "use strict"; + var FontLetterDefinition = function FontLetterDefinition() { + this.u = 0; + this.v = 0; + this.w = 0; + this.h = 0; + this.offsetX = 0; + this.offsetY = 0; + this.textureID = 0; + this.valid = false; + this.xAdvance = 0; + }; + var FontAtlas = function FontAtlas(texture) { + this._letterDefinitions = {}; + this._texture = texture; + }; + FontAtlas.prototype = { + constructor: FontAtlas, + addLetterDefinitions: function addLetterDefinitions(letter, letterDefinition) { + this._letterDefinitions[letter] = letterDefinition; + }, + cloneLetterDefinition: function cloneLetterDefinition() { + var copyLetterDefinitions = {}; + for (var key in this._letterDefinitions) { + var value = new FontLetterDefinition(); + cc.js.mixin(value, this._letterDefinitions[key]); + copyLetterDefinitions[key] = value; + } + return copyLetterDefinitions; + }, + getTexture: function getTexture() { + return this._texture; + }, + getLetter: function getLetter(key) { + return this._letterDefinitions[key]; + }, + getLetterDefinitionForChar: function getLetterDefinitionForChar(_char) { + var key = _char.charCodeAt(0); + var hasKey = this._letterDefinitions.hasOwnProperty(key); + var letter; + letter = hasKey ? this._letterDefinitions[key] : null; + return letter; + }, + clear: function clear() { + this._letterDefinitions = {}; + } + }; + var BitmapFont = cc.Class({ + name: "cc.BitmapFont", + extends: cc.Font, + properties: { + fntDataStr: { + default: "" + }, + spriteFrame: { + default: null, + type: cc.SpriteFrame + }, + fontSize: { + default: -1 + }, + _fntConfig: null, + _fontDefDictionary: null + }, + onLoad: function onLoad() { + var spriteFrame = this.spriteFrame; + if (!this._fontDefDictionary) { + this._fontDefDictionary = new FontAtlas(); + spriteFrame && (this._fontDefDictionary._texture = spriteFrame._texture); + } + var fntConfig = this._fntConfig; + if (!fntConfig) return; + var fontDict = fntConfig.fontDefDictionary; + for (var fontDef in fontDict) { + var letter = new FontLetterDefinition(); + var rect = fontDict[fontDef].rect; + letter.offsetX = fontDict[fontDef].xOffset; + letter.offsetY = fontDict[fontDef].yOffset; + letter.w = rect.width; + letter.h = rect.height; + letter.u = rect.x; + letter.v = rect.y; + letter.textureID = 0; + letter.valid = true; + letter.xAdvance = fontDict[fontDef].xAdvance; + this._fontDefDictionary.addLetterDefinitions(fontDef, letter); + } + } + }); + cc.BitmapFont = BitmapFont; + cc.BitmapFont.FontLetterDefinition = FontLetterDefinition; + cc.BitmapFont.FontAtlas = FontAtlas; + module.exports = BitmapFont; + }), {}], + 109: [(function (require, module, exports) { + "use strict"; + var BufferAsset = cc.Class({ + name: "cc.BufferAsset", + extends: cc.Asset, + ctor: function ctor() { + this._buffer = null; + }, + properties: { + _nativeAsset: { + get: function get() { + return this._buffer; + }, + set: function set(bin) { + this._buffer = bin.buffer || bin; + }, + override: true + }, + buffer: function buffer() { + return this._buffer; + } + } + }); + cc.BufferAsset = module.exports = BufferAsset; + }), {}], + 110: [(function (require, module, exports) { + "use strict"; + var Font = cc.Class({ + name: "cc.Font", + extends: cc.Asset + }); + cc.Font = module.exports = Font; + }), {}], + 111: [(function (require, module, exports) { + "use strict"; + var JsonAsset = cc.Class({ + name: "cc.JsonAsset", + extends: cc.Asset, + properties: { + json: null + } + }); + module.exports = cc.JsonAsset = JsonAsset; + }), {}], + 112: [(function (require, module, exports) { + "use strict"; + var LabelAtlas = cc.Class({ + name: "cc.LabelAtlas", + extends: cc.BitmapFont, + onLoad: function onLoad() { + if (!this.spriteFrame) { + cc.warnID(9100, this.name); + return; + } + if (!this._fntConfig) { + cc.warnID(9101, this.name); + return; + } + this._super(); + } + }); + cc.LabelAtlas = LabelAtlas; + module.exports = LabelAtlas; + }), {}], + 113: [(function (require, module, exports) { + "use strict"; + var OptimizationPolicy = cc.Enum({ + AUTO: 0, + SINGLE_INSTANCE: 1, + MULTI_INSTANCE: 2 + }); + var Prefab = cc.Class({ + name: "cc.Prefab", + extends: cc.Asset, + ctor: function ctor() { + this._createFunction = null; + this._instantiatedTimes = 0; + }, + properties: { + data: null, + optimizationPolicy: OptimizationPolicy.AUTO, + asyncLoadAssets: false, + readonly: { + default: false, + editorOnly: true + } + }, + statics: { + OptimizationPolicy: OptimizationPolicy, + OptimizationPolicyThreshold: 3 + }, + createNode: false, + compileCreateFunction: function compileCreateFunction() { + var jit = require("../platform/instantiate-jit"); + this._createFunction = jit.compile(this.data); + }, + _doInstantiate: function _doInstantiate(rootToRedirect) { + this.data._prefab || cc.warnID(3700); + this._createFunction || this.compileCreateFunction(); + return this._createFunction(rootToRedirect); + }, + _instantiate: function _instantiate() { + var node, useJit = false; + true; + useJit = this.optimizationPolicy !== OptimizationPolicy.SINGLE_INSTANCE && (this.optimizationPolicy === OptimizationPolicy.MULTI_INSTANCE || this._instantiatedTimes + 1 >= Prefab.OptimizationPolicyThreshold); + if (useJit) { + node = this._doInstantiate(); + this.data._instantiate(node); + } else node = this.data._instantiate(); + ++this._instantiatedTimes; + var PrefabUtils; + false, false; + return node; + }, + destroy: function destroy() { + this.data && this.data.destroy(); + this._super(); + } + }); + cc.Prefab = module.exports = Prefab; + cc.js.obsolete(cc, "cc._Prefab", "Prefab"); + }), { + "../platform/instantiate-jit": 258 + }], + 114: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var renderer = require("../renderer"); + var Texture2D = require("./CCTexture2D"); + var DepthStencilFormat = cc.Enum({ + RB_FMT_D24S8: _gfx["default"].RB_FMT_D24S8, + RB_FMT_S8: _gfx["default"].RB_FMT_S8, + RB_FMT_D16: _gfx["default"].RB_FMT_D16 + }); + var RenderTexture = cc.Class({ + name: "cc.RenderTexture", + extends: Texture2D, + statics: { + DepthStencilFormat: DepthStencilFormat + }, + ctor: function ctor() { + this._framebuffer = null; + }, + initWithSize: function initWithSize(width, height, depthStencilFormat) { + this.width = Math.floor(width || cc.visibleRect.width); + this.height = Math.floor(height || cc.visibleRect.height); + this._resetUnderlyingMipmaps(); + var opts = { + colors: [this._texture] + }; + this._depthStencilBuffer && this._depthStencilBuffer.destroy(); + var depthStencilBuffer; + if (depthStencilFormat) { + depthStencilBuffer = new _gfx["default"].RenderBuffer(renderer.device, depthStencilFormat, width, height); + depthStencilFormat === _gfx["default"].RB_FMT_D24S8 ? opts.depthStencil = depthStencilBuffer : depthStencilFormat === _gfx["default"].RB_FMT_S8 ? opts.stencil = depthStencilBuffer : depthStencilFormat === _gfx["default"].RB_FMT_D16 && (opts.depth = depthStencilBuffer); + } + this._depthStencilBuffer = depthStencilBuffer; + this._framebuffer && this._framebuffer.destroy(); + this._framebuffer = new _gfx["default"].FrameBuffer(renderer.device, width, height, opts); + this._packable = false; + this.loaded = true; + this.emit("load"); + }, + updateSize: function updateSize(width, height) { + this.width = Math.floor(width || cc.visibleRect.width); + this.height = Math.floor(height || cc.visibleRect.height); + this._resetUnderlyingMipmaps(); + var rbo = this._depthStencilBuffer; + rbo && rbo.update(this.width, this.height); + this._framebuffer._width = width; + this._framebuffer._height = height; + }, + drawTextureAt: function drawTextureAt(texture, x, y) { + if (!texture._image || 0 === texture._image.width) return; + this._texture.updateSubImage({ + x: x, + y: y, + image: texture._image, + width: texture.width, + height: texture.height, + level: 0, + flipY: false, + premultiplyAlpha: texture._premultiplyAlpha + }); + }, + readPixels: function readPixels(data, x, y, w, h) { + if (!this._framebuffer || !this._texture) return data; + x = x || 0; + y = y || 0; + var width = w || this.width; + var height = h || this.height; + data = data || new Uint8Array(width * height * 4); + var gl = cc.game._renderContext; + var oldFBO = gl.getParameter(gl.FRAMEBUFFER_BINDING); + gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer.getHandle()); + gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data); + gl.bindFramebuffer(gl.FRAMEBUFFER, oldFBO); + return data; + }, + destroy: function destroy() { + this._super(); + if (this._framebuffer) { + this._framebuffer.destroy(); + this._framebuffer = null; + } + } + }); + cc.RenderTexture = module.exports = RenderTexture; + }), { + "../../renderer/gfx": 372, + "../renderer": 271, + "./CCTexture2D": 121 + }], + 115: [(function (require, module, exports) { + "use strict"; + var Scene = cc.Class({ + name: "cc.SceneAsset", + extends: cc.Asset, + properties: { + scene: null, + asyncLoadAssets: void 0 + } + }); + cc.SceneAsset = Scene; + module.exports = Scene; + }), {}], + 116: [(function (require, module, exports) { + "use strict"; + var Script = cc.Class({ + name: "cc.Script", + extends: cc.Asset + }); + cc._Script = Script; + var JavaScript = cc.Class({ + name: "cc.JavaScript", + extends: Script + }); + cc._JavaScript = JavaScript; + var TypeScript = cc.Class({ + name: "cc.TypeScript", + extends: Script + }); + cc._TypeScript = TypeScript; + }), {}], + 117: [(function (require, module, exports) { + "use strict"; + var SpriteAtlas = cc.Class({ + name: "cc.SpriteAtlas", + extends: cc.Asset, + properties: { + _spriteFrames: { + default: {} + } + }, + getTexture: function getTexture() { + var keys = Object.keys(this._spriteFrames); + if (keys.length > 0) { + var spriteFrame = this._spriteFrames[keys[0]]; + return spriteFrame ? spriteFrame.getTexture() : null; + } + return null; + }, + getSpriteFrame: function getSpriteFrame(key) { + var sf = this._spriteFrames[key]; + if (!sf) return null; + sf.name || (sf.name = key); + return sf; + }, + getSpriteFrames: function getSpriteFrames() { + var frames = []; + var spriteFrames = this._spriteFrames; + for (var key in spriteFrames) frames.push(this.getSpriteFrame(key)); + return frames; + } + }); + cc.SpriteAtlas = SpriteAtlas; + module.exports = SpriteAtlas; + }), {}], + 118: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("../event/event-target"); + var INSET_LEFT = 0; + var INSET_TOP = 1; + var INSET_RIGHT = 2; + var INSET_BOTTOM = 3; + var temp_uvs = [{ + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }, { + u: 0, + v: 0 + }]; + var SpriteFrame = cc.Class({ + name: "cc.SpriteFrame", + extends: require("../assets/CCAsset"), + mixins: [EventTarget], + properties: { + _textureSetter: { + set: function set(texture) { + if (texture) { + false; + this._texture !== texture && this._refreshTexture(texture); + } + } + }, + insetTop: { + get: function get() { + return this._capInsets[INSET_TOP]; + }, + set: function set(value) { + this._capInsets[INSET_TOP] = value; + this._texture && this._calculateSlicedUV(); + } + }, + insetBottom: { + get: function get() { + return this._capInsets[INSET_BOTTOM]; + }, + set: function set(value) { + this._capInsets[INSET_BOTTOM] = value; + this._texture && this._calculateSlicedUV(); + } + }, + insetLeft: { + get: function get() { + return this._capInsets[INSET_LEFT]; + }, + set: function set(value) { + this._capInsets[INSET_LEFT] = value; + this._texture && this._calculateSlicedUV(); + } + }, + insetRight: { + get: function get() { + return this._capInsets[INSET_RIGHT]; + }, + set: function set(value) { + this._capInsets[INSET_RIGHT] = value; + this._texture && this._calculateSlicedUV(); + } + } + }, + ctor: function ctor() { + EventTarget.call(this); + var filename = arguments[0]; + var rect = arguments[1]; + var rotated = arguments[2]; + var offset = arguments[3]; + var originalSize = arguments[4]; + this._rect = null; + this.uv = []; + this._texture = null; + this._original = null; + this._offset = null; + this._originalSize = null; + this._rotated = false; + this._flipX = false; + this._flipY = false; + this.vertices = null; + this._capInsets = [0, 0, 0, 0]; + this.uvSliced = []; + false; + void 0 !== filename && this.setTexture(filename, rect, rotated, offset, originalSize); + }, + textureLoaded: function textureLoaded() { + return this._texture && this._texture.loaded; + }, + onTextureLoaded: function onTextureLoaded(callback, target) { + if (!this.textureLoaded()) { + this.once("load", callback, target); + this.ensureLoadTexture(); + return false; + } + callback.call(target); + return true; + }, + isRotated: function isRotated() { + return this._rotated; + }, + setRotated: function setRotated(bRotated) { + this._rotated = bRotated; + this._texture && this._calculateUV(); + }, + isFlipX: function isFlipX() { + return this._flipX; + }, + isFlipY: function isFlipY() { + return this._flipY; + }, + setFlipX: function setFlipX(flipX) { + this._flipX = flipX; + this._texture && this._calculateUV(); + }, + setFlipY: function setFlipY(flipY) { + this._flipY = flipY; + this._texture && this._calculateUV(); + }, + getRect: function getRect() { + return cc.rect(this._rect); + }, + setRect: function setRect(rect) { + this._rect = rect; + this._texture && this._calculateUV(); + }, + getOriginalSize: function getOriginalSize() { + return cc.size(this._originalSize); + }, + setOriginalSize: function setOriginalSize(size) { + if (this._originalSize) { + this._originalSize.width = size.width; + this._originalSize.height = size.height; + } else this._originalSize = cc.size(size); + }, + getTexture: function getTexture() { + return this._texture; + }, + _textureLoadedCallback: function _textureLoadedCallback() { + var self = this; + var texture = this._texture; + if (!texture) return; + var w = texture.width, h = texture.height; + self._rect ? self._checkRect(self._texture) : self._rect = cc.rect(0, 0, w, h); + self._originalSize || self.setOriginalSize(cc.size(w, h)); + self._offset || self.setOffset(cc.v2(0, 0)); + self._calculateUV(); + self.emit("load"); + }, + _refreshTexture: function _refreshTexture(texture) { + this._texture = texture; + texture.loaded ? this._textureLoadedCallback() : texture.once("load", this._textureLoadedCallback, this); + }, + getOffset: function getOffset() { + return cc.v2(this._offset); + }, + setOffset: function setOffset(offsets) { + this._offset = cc.v2(offsets); + }, + clone: function clone() { + return new SpriteFrame(this._texture, this.getRect(), this._rotated, this.getOffset(), this.getOriginalSize()); + }, + setTexture: function setTexture(texture, rect, rotated, offset, originalSize) { + if (1 === arguments.length && texture === this._texture) return; + this._rect = rect || null; + offset ? this.setOffset(offset) : this._offset = null; + originalSize ? this.setOriginalSize(originalSize) : this._originalSize = null; + this._rotated = rotated || false; + if ("string" === typeof texture) { + cc.errorID(3401); + return; + } + texture instanceof cc.Texture2D && this._refreshTexture(texture); + return true; + }, + ensureLoadTexture: function ensureLoadTexture() { + if (this._texture && !this._texture.loaded) { + this._refreshTexture(this._texture); + cc.assetManager.postLoadNative(this._texture); + } + }, + _checkRect: function _checkRect(texture) { + var rect = this._rect; + var maxX = rect.x, maxY = rect.y; + if (this._rotated) { + maxX += rect.height; + maxY += rect.width; + } else { + maxX += rect.width; + maxY += rect.height; + } + maxX > texture.width && cc.errorID(3300, texture.nativeUrl + "/" + this.name, maxX, texture.width); + maxY > texture.height && cc.errorID(3400, texture.nativeUrl + "/" + this.name, maxY, texture.height); + }, + _flipXY: function _flipXY(uvs) { + if (this._flipX) { + var tempVal = uvs[0]; + uvs[0] = uvs[1]; + uvs[1] = tempVal; + tempVal = uvs[2]; + uvs[2] = uvs[3]; + uvs[3] = tempVal; + } + if (this._flipY) { + var _tempVal = uvs[0]; + uvs[0] = uvs[2]; + uvs[2] = _tempVal; + _tempVal = uvs[1]; + uvs[1] = uvs[3]; + uvs[3] = _tempVal; + } + }, + _calculateSlicedUV: function _calculateSlicedUV() { + var rect = this._rect; + var atlasWidth = this._texture.width; + var atlasHeight = this._texture.height; + var leftWidth = this._capInsets[INSET_LEFT]; + var rightWidth = this._capInsets[INSET_RIGHT]; + var centerWidth = rect.width - leftWidth - rightWidth; + var topHeight = this._capInsets[INSET_TOP]; + var bottomHeight = this._capInsets[INSET_BOTTOM]; + var centerHeight = rect.height - topHeight - bottomHeight; + var uvSliced = this.uvSliced; + uvSliced.length = 0; + if (this._rotated) { + temp_uvs[0].u = rect.x / atlasWidth; + temp_uvs[1].u = (rect.x + bottomHeight) / atlasWidth; + temp_uvs[2].u = (rect.x + bottomHeight + centerHeight) / atlasWidth; + temp_uvs[3].u = (rect.x + rect.height) / atlasWidth; + temp_uvs[3].v = rect.y / atlasHeight; + temp_uvs[2].v = (rect.y + leftWidth) / atlasHeight; + temp_uvs[1].v = (rect.y + leftWidth + centerWidth) / atlasHeight; + temp_uvs[0].v = (rect.y + rect.width) / atlasHeight; + this._flipXY(temp_uvs); + for (var row = 0; row < 4; ++row) { + var rowD = temp_uvs[row]; + for (var col = 0; col < 4; ++col) { + var colD = temp_uvs[3 - col]; + uvSliced.push({ + u: rowD.u, + v: colD.v + }); + } + } + } else { + temp_uvs[0].u = rect.x / atlasWidth; + temp_uvs[1].u = (rect.x + leftWidth) / atlasWidth; + temp_uvs[2].u = (rect.x + leftWidth + centerWidth) / atlasWidth; + temp_uvs[3].u = (rect.x + rect.width) / atlasWidth; + temp_uvs[3].v = rect.y / atlasHeight; + temp_uvs[2].v = (rect.y + topHeight) / atlasHeight; + temp_uvs[1].v = (rect.y + topHeight + centerHeight) / atlasHeight; + temp_uvs[0].v = (rect.y + rect.height) / atlasHeight; + this._flipXY(temp_uvs); + for (var _row = 0; _row < 4; ++_row) { + var _rowD = temp_uvs[_row]; + for (var _col = 0; _col < 4; ++_col) { + var _colD = temp_uvs[_col]; + uvSliced.push({ + u: _colD.u, + v: _rowD.v + }); + } + } + } + }, + _setDynamicAtlasFrame: function _setDynamicAtlasFrame(frame) { + if (!frame) return; + this._original = { + _texture: this._texture, + _x: this._rect.x, + _y: this._rect.y + }; + this._texture = frame.texture; + this._rect.x = frame.x; + this._rect.y = frame.y; + this._calculateUV(); + }, + _resetDynamicAtlasFrame: function _resetDynamicAtlasFrame() { + if (!this._original) return; + this._rect.x = this._original._x; + this._rect.y = this._original._y; + this._texture = this._original._texture; + this._original = null; + this._calculateUV(); + }, + _calculateUV: function _calculateUV() { + var rect = this._rect, texture = this._texture, uv = this.uv, texw = texture.width, texh = texture.height; + if (this._rotated) { + var l = 0 === texw ? 0 : rect.x / texw; + var r = 0 === texw ? 0 : (rect.x + rect.height) / texw; + var b = 0 === texh ? 0 : (rect.y + rect.width) / texh; + var t = 0 === texh ? 0 : rect.y / texh; + uv[0] = l; + uv[1] = t; + uv[2] = l; + uv[3] = b; + uv[4] = r; + uv[5] = t; + uv[6] = r; + uv[7] = b; + } else { + var _l = 0 === texw ? 0 : rect.x / texw; + var _r = 0 === texw ? 0 : (rect.x + rect.width) / texw; + var _b = 0 === texh ? 0 : (rect.y + rect.height) / texh; + var _t = 0 === texh ? 0 : rect.y / texh; + uv[0] = _l; + uv[1] = _b; + uv[2] = _r; + uv[3] = _b; + uv[4] = _l; + uv[5] = _t; + uv[6] = _r; + uv[7] = _t; + } + if (this._flipX) { + var tempVal = uv[0]; + uv[0] = uv[2]; + uv[2] = tempVal; + tempVal = uv[1]; + uv[1] = uv[3]; + uv[3] = tempVal; + tempVal = uv[4]; + uv[4] = uv[6]; + uv[6] = tempVal; + tempVal = uv[5]; + uv[5] = uv[7]; + uv[7] = tempVal; + } + if (this._flipY) { + var _tempVal2 = uv[0]; + uv[0] = uv[4]; + uv[4] = _tempVal2; + _tempVal2 = uv[1]; + uv[1] = uv[5]; + uv[5] = _tempVal2; + _tempVal2 = uv[2]; + uv[2] = uv[6]; + uv[6] = _tempVal2; + _tempVal2 = uv[3]; + uv[3] = uv[7]; + uv[7] = _tempVal2; + } + var vertices = this.vertices; + if (vertices) { + vertices.nu.length = 0; + vertices.nv.length = 0; + for (var i = 0; i < vertices.u.length; i++) { + vertices.nu[i] = vertices.u[i] / texw; + vertices.nv[i] = vertices.v[i] / texh; + } + } + this._calculateSlicedUV(); + }, + _serialize: (false, false) && function (exporting, ctx) { + var rect = this._rect; + var offset = this._offset; + var size = this._originalSize; + var uuid; + var texture = this._texture; + texture && (uuid = texture._uuid); + if (!uuid) { + var url = this._textureFilename; + url && (uuid = Editor.Utils.UuidCache.urlToUuid(url)); + } + if (uuid && exporting) { + uuid = Editor.Utils.UuidUtils.compressUuid(uuid, true); + ctx.dependsOn("_textureSetter", uuid); + } + var vertices; + this.vertices && (vertices = { + triangles: this.vertices.triangles, + x: this.vertices.x, + y: this.vertices.y, + u: this.vertices.u, + v: this.vertices.v + }); + return { + name: this._name, + texture: !exporting && uuid || void 0, + atlas: exporting ? void 0 : this._atlasUuid, + rect: rect ? [rect.x, rect.y, rect.width, rect.height] : void 0, + offset: offset ? [offset.x, offset.y] : void 0, + originalSize: size ? [size.width, size.height] : void 0, + rotated: this._rotated ? 1 : void 0, + capInsets: this._capInsets, + vertices: vertices + }; + }, + _deserialize: function _deserialize(data, handle) { + var rect = data.rect; + rect && (this._rect = new cc.Rect(rect[0], rect[1], rect[2], rect[3])); + data.offset && this.setOffset(new cc.Vec2(data.offset[0], data.offset[1])); + data.originalSize && this.setOriginalSize(new cc.Size(data.originalSize[0], data.originalSize[1])); + this._rotated = 1 === data.rotated; + this._name = data.name; + var capInsets = data.capInsets; + if (capInsets) { + this._capInsets[INSET_LEFT] = capInsets[INSET_LEFT]; + this._capInsets[INSET_TOP] = capInsets[INSET_TOP]; + this._capInsets[INSET_RIGHT] = capInsets[INSET_RIGHT]; + this._capInsets[INSET_BOTTOM] = capInsets[INSET_BOTTOM]; + } + false; + this.vertices = data.vertices; + if (this.vertices) { + this.vertices.nu = []; + this.vertices.nv = []; + } + var textureUuid; + false; + } + }); + var proto = SpriteFrame.prototype; + proto.copyWithZone = proto.clone; + proto.copy = proto.clone; + proto.initWithTexture = proto.setTexture; + cc.SpriteFrame = SpriteFrame; + module.exports = SpriteFrame; + }), { + "../assets/CCAsset": 106, + "../event/event-target": 186 + }], + 119: [(function (require, module, exports) { + "use strict"; + var Font = require("./CCFont"); + var TTFFont = cc.Class({ + name: "cc.TTFFont", + extends: Font, + properties: { + _fontFamily: null, + _nativeAsset: { + type: cc.String, + get: function get() { + return this._fontFamily; + }, + set: function set(value) { + this._fontFamily = value || "Arial"; + }, + override: true + }, + _nativeDep: { + get: function get() { + return { + uuid: this._uuid, + __nativeName__: this._native, + ext: cc.path.extname(this._native), + __isNative__: true + }; + }, + override: true + } + } + }); + cc.TTFFont = module.exports = TTFFont; + }), { + "./CCFont": 110 + }], + 120: [(function (require, module, exports) { + "use strict"; + var TextAsset = cc.Class({ + name: "cc.TextAsset", + extends: cc.Asset, + properties: { + text: "" + }, + toString: function toString() { + return this.text; + } + }); + module.exports = cc.TextAsset = TextAsset; + }), {}], + 121: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var EventTarget = require("../event/event-target"); + var renderer = require("../renderer"); + require("../platform/CCClass"); + var GL_NEAREST = 9728; + var GL_LINEAR = 9729; + var GL_REPEAT = 10497; + var GL_CLAMP_TO_EDGE = 33071; + var GL_MIRRORED_REPEAT = 33648; + var GL_RGBA = 6408; + var CHAR_CODE_0 = 48; + var CHAR_CODE_1 = 49; + var idGenerater = new (require("../platform/id-generater"))("Tex"); + var CUSTOM_PIXEL_FORMAT = 1024; + var PixelFormat = cc.Enum({ + RGB565: _gfx["default"].TEXTURE_FMT_R5_G6_B5, + RGB5A1: _gfx["default"].TEXTURE_FMT_R5_G5_B5_A1, + RGBA4444: _gfx["default"].TEXTURE_FMT_R4_G4_B4_A4, + RGB888: _gfx["default"].TEXTURE_FMT_RGB8, + RGBA8888: _gfx["default"].TEXTURE_FMT_RGBA8, + RGBA32F: _gfx["default"].TEXTURE_FMT_RGBA32F, + A8: _gfx["default"].TEXTURE_FMT_A8, + I8: _gfx["default"].TEXTURE_FMT_L8, + AI8: _gfx["default"].TEXTURE_FMT_L8_A8, + RGB_PVRTC_2BPPV1: _gfx["default"].TEXTURE_FMT_RGB_PVRTC_2BPPV1, + RGBA_PVRTC_2BPPV1: _gfx["default"].TEXTURE_FMT_RGBA_PVRTC_2BPPV1, + RGB_A_PVRTC_2BPPV1: CUSTOM_PIXEL_FORMAT++, + RGB_PVRTC_4BPPV1: _gfx["default"].TEXTURE_FMT_RGB_PVRTC_4BPPV1, + RGBA_PVRTC_4BPPV1: _gfx["default"].TEXTURE_FMT_RGBA_PVRTC_4BPPV1, + RGB_A_PVRTC_4BPPV1: CUSTOM_PIXEL_FORMAT++, + RGB_ETC1: _gfx["default"].TEXTURE_FMT_RGB_ETC1, + RGBA_ETC1: CUSTOM_PIXEL_FORMAT++, + RGB_ETC2: _gfx["default"].TEXTURE_FMT_RGB_ETC2, + RGBA_ETC2: _gfx["default"].TEXTURE_FMT_RGBA_ETC2 + }); + var WrapMode = cc.Enum({ + REPEAT: GL_REPEAT, + CLAMP_TO_EDGE: GL_CLAMP_TO_EDGE, + MIRRORED_REPEAT: GL_MIRRORED_REPEAT + }); + var Filter = cc.Enum({ + LINEAR: GL_LINEAR, + NEAREST: GL_NEAREST + }); + var FilterIndex = { + 9728: 0, + 9729: 1 + }; + var _images = []; + var _sharedOpts = { + width: void 0, + height: void 0, + minFilter: void 0, + magFilter: void 0, + wrapS: void 0, + wrapT: void 0, + format: void 0, + genMipmaps: void 0, + images: void 0, + image: void 0, + flipY: void 0, + premultiplyAlpha: void 0 + }; + function _getSharedOptions() { + for (var key in _sharedOpts) _sharedOpts[key] = void 0; + _images.length = 0; + _sharedOpts.images = _images; + return _sharedOpts; + } + var Texture2D = cc.Class({ + name: "cc.Texture2D", + extends: require("../assets/CCAsset"), + mixins: [EventTarget], + properties: { + _nativeAsset: { + get: function get() { + return this._image; + }, + set: function set(data) { + data._compressed && data._data ? this.initWithData(data._data, this._format, data.width, data.height) : this.initWithElement(data); + }, + override: true + }, + _format: PixelFormat.RGBA8888, + _premultiplyAlpha: false, + _flipY: false, + _minFilter: Filter.LINEAR, + _magFilter: Filter.LINEAR, + _mipFilter: Filter.LINEAR, + _wrapS: WrapMode.CLAMP_TO_EDGE, + _wrapT: WrapMode.CLAMP_TO_EDGE, + _isAlphaAtlas: false, + _genMipmaps: false, + genMipmaps: { + get: function get() { + return this._genMipmaps; + }, + set: function set(genMipmaps) { + if (this._genMipmaps !== genMipmaps) { + var opts = _getSharedOptions(); + opts.genMipmaps = genMipmaps; + this.update(opts); + } + } + }, + _packable: true, + packable: { + get: function get() { + return this._packable; + }, + set: function set(val) { + this._packable = val; + } + }, + _nativeDep: { + get: function get() { + return { + __isNative__: true, + uuid: this._uuid, + ext: this._native, + __flipY__: this._flipY, + __premultiplyAlpha__: this._premultiplyAlpha + }; + }, + override: true + } + }, + statics: { + PixelFormat: PixelFormat, + WrapMode: WrapMode, + Filter: Filter, + _FilterIndex: FilterIndex, + extnames: [".png", ".jpg", ".jpeg", ".bmp", ".webp", ".pvr", ".pkm"], + _parseExt: function _parseExt(extIdStr, defaultFormat) { + var device = cc.renderer.device; + var extIds = extIdStr.split("_"); + var defaultExt = ""; + var bestExt = ""; + var bestIndex = 999; + var bestFormat = defaultFormat; + var SupportTextureFormats = cc.macro.SUPPORT_TEXTURE_FORMATS; + for (var i = 0; i < extIds.length; i++) { + var extFormat = extIds[i].split("@"); + var tmpExt = extFormat[0]; + tmpExt = Texture2D.extnames[tmpExt.charCodeAt(0) - CHAR_CODE_0] || tmpExt; + var index = SupportTextureFormats.indexOf(tmpExt); + if (-1 !== index && index < bestIndex) { + var tmpFormat = extFormat[1] ? parseInt(extFormat[1]) : defaultFormat; + if (".pvr" === tmpExt && !device.ext("WEBGL_compressed_texture_pvrtc")) continue; + if (!(tmpFormat !== PixelFormat.RGB_ETC1 && tmpFormat !== PixelFormat.RGBA_ETC1 || device.ext("WEBGL_compressed_texture_etc1"))) continue; + if (!(tmpFormat !== PixelFormat.RGB_ETC2 && tmpFormat !== PixelFormat.RGBA_ETC2 || device.ext("WEBGL_compressed_texture_etc"))) continue; + if (".webp" === tmpExt && !cc.sys.capabilities.webp) continue; + bestIndex = index; + bestExt = tmpExt; + bestFormat = tmpFormat; + } else defaultExt || (defaultExt = tmpExt); + } + return { + bestExt: bestExt, + bestFormat: bestFormat, + defaultExt: defaultExt + }; + } + }, + ctor: function ctor() { + this._id = idGenerater.getNewId(); + this.loaded = false; + this.width = 0; + this.height = 0; + this._hashDirty = true; + this._hash = 0; + this._texture = null; + false; + }, + getImpl: function getImpl() { + this._texture || (this._texture = new renderer.Texture2D(renderer.device, {})); + return this._texture; + }, + getId: function getId() { + return this._id; + }, + toString: function toString() { + return this.nativeUrl || ""; + }, + update: function update(options) { + if (options) { + var updateImg = false; + void 0 !== options.width && (this.width = options.width); + void 0 !== options.height && (this.height = options.height); + if (void 0 !== options.minFilter) { + this._minFilter = options.minFilter; + options.minFilter = FilterIndex[options.minFilter]; + } + if (void 0 !== options.magFilter) { + this._magFilter = options.magFilter; + options.magFilter = FilterIndex[options.magFilter]; + } + if (void 0 !== options.mipFilter) { + this._mipFilter = options.mipFilter; + options.mipFilter = FilterIndex[options.mipFilter]; + } + void 0 !== options.wrapS && (this._wrapS = options.wrapS); + void 0 !== options.wrapT && (this._wrapT = options.wrapT); + void 0 !== options.format && (this._format = options.format); + if (void 0 !== options.flipY) { + this._flipY = options.flipY; + updateImg = true; + } + if (void 0 !== options.premultiplyAlpha) { + this._premultiplyAlpha = options.premultiplyAlpha; + updateImg = true; + } + void 0 !== options.genMipmaps && (this._genMipmaps = options.genMipmaps); + cc.sys.capabilities.imageBitmap && this._image instanceof ImageBitmap ? this._checkImageBitmap(this._upload.bind(this, options, updateImg)) : this._upload(options, updateImg); + } + }, + _upload: function _upload(options, updateImg) { + updateImg && this._image && (options.image = this._image); + if (options.images && options.images.length > 0) this._image = options.images[0]; else if (void 0 !== options.image) { + this._image = options.image; + if (!options.images) { + _images.length = 0; + options.images = _images; + } + options.images.push(options.image); + } + this._texture && this._texture.update(options); + this._hashDirty = true; + }, + initWithElement: function initWithElement(element) { + if (!element) return; + this._image = element; + if (element.complete || element instanceof HTMLCanvasElement) this.handleLoadedTexture(); else if (cc.sys.capabilities.imageBitmap && element instanceof ImageBitmap) this._checkImageBitmap(this.handleLoadedTexture.bind(this)); else { + var self = this; + element.addEventListener("load", (function () { + self.handleLoadedTexture(); + })); + element.addEventListener("error", (function (err) { + cc.warnID(3119, err.message); + })); + } + }, + initWithData: function initWithData(data, pixelFormat, pixelsWidth, pixelsHeight) { + var opts = _getSharedOptions(); + opts.image = data; + opts.images = [opts.image]; + opts.genMipmaps = this._genMipmaps; + opts.premultiplyAlpha = this._premultiplyAlpha; + opts.flipY = this._flipY; + opts.minFilter = FilterIndex[this._minFilter]; + opts.magFilter = FilterIndex[this._magFilter]; + opts.wrapS = this._wrapS; + opts.wrapT = this._wrapT; + opts.format = this._getGFXPixelFormat(pixelFormat); + opts.width = pixelsWidth; + opts.height = pixelsHeight; + this._texture ? this._texture.update(opts) : this._texture = new renderer.Texture2D(renderer.device, opts); + this.width = pixelsWidth; + this.height = pixelsHeight; + this._updateFormat(); + this._checkPackable(); + this.loaded = true; + this.emit("load"); + return true; + }, + getHtmlElementObj: function getHtmlElementObj() { + return this._image; + }, + destroy: function destroy() { + cc.sys.capabilities.imageBitmap && this._image instanceof ImageBitmap && this._image.close && this._image.close(); + this._packable && cc.dynamicAtlasManager && cc.dynamicAtlasManager.deleteAtlasTexture(this); + this._image = null; + this._texture && this._texture.destroy(); + this._super(); + }, + getPixelFormat: function getPixelFormat() { + return this._format; + }, + hasPremultipliedAlpha: function hasPremultipliedAlpha() { + return this._premultiplyAlpha || false; + }, + isAlphaAtlas: function isAlphaAtlas() { + return this._isAlphaAtlas; + }, + handleLoadedTexture: function handleLoadedTexture() { + if (!this._image || !this._image.width || !this._image.height) return; + this.width = this._image.width; + this.height = this._image.height; + var opts = _getSharedOptions(); + opts.image = this._image; + opts.images = [opts.image]; + opts.width = this.width; + opts.height = this.height; + opts.genMipmaps = this._genMipmaps; + opts.format = this._getGFXPixelFormat(this._format); + opts.premultiplyAlpha = this._premultiplyAlpha; + opts.flipY = this._flipY; + opts.minFilter = FilterIndex[this._minFilter]; + opts.magFilter = FilterIndex[this._magFilter]; + opts.wrapS = this._wrapS; + opts.wrapT = this._wrapT; + this._texture ? this._texture.update(opts) : this._texture = new renderer.Texture2D(renderer.device, opts); + this._updateFormat(); + this._checkPackable(); + this.loaded = true; + this.emit("load"); + cc.macro.CLEANUP_IMAGE_CACHE && (this._image instanceof HTMLImageElement ? this._clearImage() : cc.sys.capabilities.imageBitmap && this._image instanceof ImageBitmap && this._image.close && this._image.close()); + }, + description: function description() { + return ""; + }, + releaseTexture: function releaseTexture() { + this._image = null; + this._texture && this._texture.destroy(); + }, + setWrapMode: function setWrapMode(wrapS, wrapT) { + if (this._wrapS !== wrapS || this._wrapT !== wrapT) { + var opts = _getSharedOptions(); + opts.wrapS = wrapS; + opts.wrapT = wrapT; + this.update(opts); + } + }, + setFilters: function setFilters(minFilter, magFilter) { + if (this._minFilter !== minFilter || this._magFilter !== magFilter) { + var opts = _getSharedOptions(); + opts.minFilter = minFilter; + opts.magFilter = magFilter; + this.update(opts); + } + }, + setFlipY: function setFlipY(flipY) { + if (this._flipY !== flipY) { + var opts = _getSharedOptions(); + opts.flipY = flipY; + opts.premultiplyAlpha = this._premultiplyAlpha; + this.update(opts); + } + }, + setPremultiplyAlpha: function setPremultiplyAlpha(premultiply) { + if (this._premultiplyAlpha !== premultiply) { + var opts = _getSharedOptions(); + opts.flipY = this._flipY; + opts.premultiplyAlpha = premultiply; + this.update(opts); + } + }, + _updateFormat: function _updateFormat() { + this._isAlphaAtlas = this._format === PixelFormat.RGBA_ETC1 || this._format === PixelFormat.RGB_A_PVRTC_4BPPV1 || this._format === PixelFormat.RGB_A_PVRTC_2BPPV1; + false; + }, + _checkPackable: function _checkPackable() { + var dynamicAtlas = cc.dynamicAtlasManager; + if (!dynamicAtlas) return; + if (this._isCompressed()) { + this._packable = false; + return; + } + var w = this.width, h = this.height; + if (!this._image || w > dynamicAtlas.maxFrameSize || h > dynamicAtlas.maxFrameSize || this._getHash() !== dynamicAtlas.Atlas.DEFAULT_HASH) { + this._packable = false; + return; + } + this._image && this._image instanceof HTMLCanvasElement && (this._packable = true); + }, + _getOpts: function _getOpts() { + var opts = _getSharedOptions(); + opts.width = this.width; + opts.height = this.height; + opts.genMipmaps = this._genMipmaps; + opts.format = this._format; + opts.premultiplyAlpha = this._premultiplyAlpha; + opts.anisotropy = this._anisotropy; + opts.flipY = this._flipY; + opts.minFilter = FilterIndex[this._minFilter]; + opts.magFilter = FilterIndex[this._magFilter]; + opts.mipFilter = FilterIndex[this._mipFilter]; + opts.wrapS = this._wrapS; + opts.wrapT = this._wrapT; + return opts; + }, + _getGFXPixelFormat: function _getGFXPixelFormat(format) { + format === PixelFormat.RGBA_ETC1 ? format = PixelFormat.RGB_ETC1 : format === PixelFormat.RGB_A_PVRTC_4BPPV1 ? format = PixelFormat.RGB_PVRTC_4BPPV1 : format === PixelFormat.RGB_A_PVRTC_2BPPV1 && (format = PixelFormat.RGB_PVRTC_2BPPV1); + return format; + }, + _resetUnderlyingMipmaps: function _resetUnderlyingMipmaps(mipmapSources) { + var opts = this._getOpts(); + opts.images = mipmapSources || [null]; + this._texture ? this._texture.update(opts) : this._texture = new renderer.Texture2D(renderer.device, opts); + }, + _serialize: (false, false) && function () { + var extId = ""; + var exportedExts = this._exportedExts; + !exportedExts && this._native && (exportedExts = [this._native]); + if (exportedExts) { + var exts = []; + for (var i = 0; i < exportedExts.length; i++) { + var _extId = ""; + var ext = exportedExts[i]; + if (ext) { + var extFormat = ext.split("@"); + _extId = Texture2D.extnames.indexOf(extFormat[0]); + _extId < 0 && (_extId = ext); + extFormat[1] && (_extId += "@" + extFormat[1]); + } + exts.push(_extId); + } + extId = exts.join("_"); + } + var asset = extId + "," + this._minFilter + "," + this._magFilter + "," + this._wrapS + "," + this._wrapT + "," + (this._premultiplyAlpha ? 1 : 0) + "," + (this._genMipmaps ? 1 : 0) + "," + (this._packable ? 1 : 0); + return asset; + }, + _deserialize: function _deserialize(data) { + var fields = data.split(","); + var extIdStr = fields[0]; + if (extIdStr) { + var result = Texture2D._parseExt(extIdStr, this._format); + if (result.bestExt) { + this._setRawAsset(result.bestExt); + this._format = result.bestFormat; + } else { + if (!result.defaultExt) throw new Error(cc.debug.getError(3121)); + this._setRawAsset(result.defaultExt); + cc.warnID(3120, result.defaultExt, result.defaultExt); + } + } + if (8 === fields.length) { + this._minFilter = parseInt(fields[1]); + this._magFilter = parseInt(fields[2]); + this._wrapS = parseInt(fields[3]); + this._wrapT = parseInt(fields[4]); + this._premultiplyAlpha = fields[5].charCodeAt(0) === CHAR_CODE_1; + this._genMipmaps = fields[6].charCodeAt(0) === CHAR_CODE_1; + this._packable = fields[7].charCodeAt(0) === CHAR_CODE_1; + } + }, + _getHash: function _getHash() { + if (!this._hashDirty) return this._hash; + var genMipmaps = this._genMipmaps ? 1 : 0; + var premultiplyAlpha = this._premultiplyAlpha ? 1 : 0; + var flipY = this._flipY ? 1 : 0; + var minFilter = this._minFilter === Filter.LINEAR ? 1 : 2; + var magFilter = this._magFilter === Filter.LINEAR ? 1 : 2; + var wrapS = this._wrapS === WrapMode.REPEAT ? 1 : this._wrapS === WrapMode.CLAMP_TO_EDGE ? 2 : 3; + var wrapT = this._wrapT === WrapMode.REPEAT ? 1 : this._wrapT === WrapMode.CLAMP_TO_EDGE ? 2 : 3; + var pixelFormat = this._format; + var image = this._image; + false; + this._hash = Number("" + minFilter + magFilter + pixelFormat + wrapS + wrapT + genMipmaps + premultiplyAlpha + flipY); + this._hashDirty = false; + return this._hash; + }, + _isCompressed: function _isCompressed() { + return this._format < PixelFormat.A8 || this._format > PixelFormat.RGBA32F; + }, + _clearImage: function _clearImage() { + this._image.src = ""; + }, + _checkImageBitmap: function _checkImageBitmap(cb) { + var _this = this; + var image = this._image; + var flipY = this._flipY; + var premultiplyAlpha = this._premultiplyAlpha; + this._flipY !== image.flipY || this._premultiplyAlpha !== image.premultiplyAlpha ? createImageBitmap(image, { + imageOrientation: flipY !== image.flipY ? "flipY" : "none", + premultiplyAlpha: premultiplyAlpha ? "premultiply" : "none" + }).then((function (result) { + image.close && image.close(); + result.flipY = flipY; + result.premultiplyAlpha = premultiplyAlpha; + _this._image = result; + cb(); + }), (function (err) { + cc.error(err.message); + })) : cb(); + } + }); + cc.Texture2D = module.exports = Texture2D; + }), { + "../../renderer/gfx": 372, + "../assets/CCAsset": 106, + "../event/event-target": 186, + "../platform/CCClass": 239, + "../platform/id-generater": 256, + "../renderer": 271 + }], + 122: [(function (require, module, exports) { + "use strict"; + require("./CCAsset"); + require("./CCFont"); + require("./CCPrefab"); + require("./CCAudioClip"); + require("./CCScripts"); + require("./CCSceneAsset"); + require("./CCSpriteFrame"); + require("./CCTexture2D"); + require("./CCRenderTexture"); + require("./CCTTFFont"); + require("./CCSpriteAtlas"); + require("./CCBitmapFont"); + require("./CCLabelAtlas"); + require("./CCTextAsset"); + require("./CCJsonAsset"); + require("./CCBufferAsset"); + require("./material"); + }), { + "./CCAsset": 106, + "./CCAudioClip": 107, + "./CCBitmapFont": 108, + "./CCBufferAsset": 109, + "./CCFont": 110, + "./CCJsonAsset": 111, + "./CCLabelAtlas": 112, + "./CCPrefab": 113, + "./CCRenderTexture": 114, + "./CCSceneAsset": 115, + "./CCScripts": 116, + "./CCSpriteAtlas": 117, + "./CCSpriteFrame": 118, + "./CCTTFFont": 119, + "./CCTextAsset": 120, + "./CCTexture2D": 121, + "./material": 129 + }], + 123: [(function (require, module, exports) { + "use strict"; + var _CCAsset = _interopRequireDefault(require("../CCAsset")); + var _effectParser = require("./effect-parser"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var EffectAsset = cc.Class({ + name: "cc.EffectAsset", + extends: _CCAsset["default"], + ctor: function ctor() { + this._effect = null; + }, + properties: { + properties: Object, + techniques: [], + shaders: [] + }, + onLoad: function onLoad() { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return; + var lib = cc.renderer._forward._programLib; + for (var i = 0; i < this.shaders.length; i++) lib.define(this.shaders[i]); + this._initEffect(); + }, + _initEffect: function _initEffect() { + if (this._effect) return; + this._effect = (0, _effectParser.parseEffect)(this); + Object.freeze(this._effect); + }, + getInstantiatedEffect: function getInstantiatedEffect() { + this._initEffect(); + return this._effect.clone(); + }, + getEffect: function getEffect() { + this._initEffect(); + return this._effect; + } + }); + module.exports = cc.EffectAsset = EffectAsset; + }), { + "../CCAsset": 106, + "./effect-parser": 126 + }], + 124: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var Asset = require("../CCAsset"); + var Texture = require("../CCTexture2D"); + var PixelFormat = Texture.PixelFormat; + var EffectAsset = require("./CCEffectAsset"); + var textureUtil = require("../../utils/texture-util"); + var gfx = cc.gfx; + var BUILTIN_NAME = cc.Enum({ + SPRITE: "2d-sprite", + GRAY_SPRITE: "2d-gray-sprite", + UNLIT: "unlit" + }); + var Material = cc.Class({ + name: "cc.Material", + extends: Asset, + ctor: function ctor() { + this.loaded = false; + this._manualHash = false; + this._dirty = true; + this._effect = null; + }, + properties: { + _defines: { + default: void 0, + type: Object + }, + _props: { + default: void 0, + type: Object + }, + _effectAsset: { + type: EffectAsset, + default: null + }, + _techniqueIndex: 0, + _techniqueData: Object, + effectName: void 0, + effectAsset: { + get: function get() { + return this._effectAsset; + }, + set: function set(asset) { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return; + this._effectAsset = asset; + if (!asset) { + cc.error("Can not set an empty effect asset."); + return; + } + this._effect = this._effectAsset.getInstantiatedEffect(); + } + }, + effect: { + get: function get() { + return this._effect; + } + }, + techniqueIndex: { + get: function get() { + return this._techniqueIndex; + }, + set: function set(v) { + this._techniqueIndex = v; + this._effect.switchTechnique(v); + } + } + }, + statics: { + getBuiltinMaterial: function getBuiltinMaterial(name) { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return new cc.Material(); + return cc.assetManager.builtins.getBuiltin("material", "builtin-" + name); + }, + BUILTIN_NAME: BUILTIN_NAME, + createWithBuiltin: function createWithBuiltin(effectName, techniqueIndex) { + void 0 === techniqueIndex && (techniqueIndex = 0); + var effectAsset = cc.assetManager.builtins.getBuiltin("effect", "builtin-" + effectName); + return Material.create(effectAsset, techniqueIndex); + }, + create: function create(effectAsset, techniqueIndex) { + void 0 === techniqueIndex && (techniqueIndex = 0); + if (!effectAsset) return null; + var material = new Material(); + material.effectAsset = effectAsset; + material.techniqueIndex = techniqueIndex; + return material; + } + }, + setProperty: function setProperty(name, val, passIdx, directly) { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return; + "string" === typeof passIdx && (passIdx = parseInt(passIdx)); + if (val instanceof Texture) { + var isAlphaAtlas = val.isAlphaAtlas(); + var key = "CC_USE_ALPHA_ATLAS_" + name; + var def = this.getDefine(key, passIdx); + (isAlphaAtlas || def) && this.define(key, isAlphaAtlas); + val.loaded || cc.assetManager.postLoadNative(val); + } + this._effect.setProperty(name, val, passIdx, directly); + }, + getProperty: function getProperty(name, passIdx) { + "string" === typeof passIdx && (passIdx = parseInt(passIdx)); + return this._effect.getProperty(name, passIdx); + }, + define: function define(name, val, passIdx, force) { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return; + "string" === typeof passIdx && (passIdx = parseInt(passIdx)); + this._effect.define(name, val, passIdx, force); + }, + getDefine: function getDefine(name, passIdx) { + "string" === typeof passIdx && (passIdx = parseInt(passIdx)); + return this._effect.getDefine(name, passIdx); + }, + setCullMode: function setCullMode(cullMode, passIdx) { + void 0 === cullMode && (cullMode = gfx.CULL_BACK); + this._effect.setCullMode(cullMode, passIdx); + }, + setDepth: function setDepth(depthTest, depthWrite, depthFunc, passIdx) { + void 0 === depthTest && (depthTest = false); + void 0 === depthWrite && (depthWrite = false); + void 0 === depthFunc && (depthFunc = gfx.DS_FUNC_LESS); + this._effect.setDepth(depthTest, depthWrite, depthFunc, passIdx); + }, + setBlend: function setBlend(enabled, blendEq, blendSrc, blendDst, blendAlphaEq, blendSrcAlpha, blendDstAlpha, blendColor, passIdx) { + void 0 === enabled && (enabled = false); + void 0 === blendEq && (blendEq = gfx.BLEND_FUNC_ADD); + void 0 === blendSrc && (blendSrc = gfx.BLEND_SRC_ALPHA); + void 0 === blendDst && (blendDst = gfx.BLEND_ONE_MINUS_SRC_ALPHA); + void 0 === blendAlphaEq && (blendAlphaEq = gfx.BLEND_FUNC_ADD); + void 0 === blendSrcAlpha && (blendSrcAlpha = gfx.BLEND_SRC_ALPHA); + void 0 === blendDstAlpha && (blendDstAlpha = gfx.BLEND_ONE_MINUS_SRC_ALPHA); + void 0 === blendColor && (blendColor = 4294967295); + this._effect.setBlend(enabled, blendEq, blendSrc, blendDst, blendAlphaEq, blendSrcAlpha, blendDstAlpha, blendColor, passIdx); + }, + setStencilEnabled: function setStencilEnabled(stencilTest, passIdx) { + void 0 === stencilTest && (stencilTest = gfx.STENCIL_INHERIT); + this._effect.setStencilEnabled(stencilTest, passIdx); + }, + setStencil: function setStencil(stencilTest, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask, passIdx) { + void 0 === stencilTest && (stencilTest = gfx.STENCIL_INHERIT); + void 0 === stencilFunc && (stencilFunc = gfx.DS_FUNC_ALWAYS); + void 0 === stencilRef && (stencilRef = 0); + void 0 === stencilMask && (stencilMask = 255); + void 0 === stencilFailOp && (stencilFailOp = gfx.STENCIL_OP_KEEP); + void 0 === stencilZFailOp && (stencilZFailOp = gfx.STENCIL_OP_KEEP); + void 0 === stencilZPassOp && (stencilZPassOp = gfx.STENCIL_OP_KEEP); + void 0 === stencilWriteMask && (stencilWriteMask = 255); + this._effect.setStencil(stencilTest, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask, passIdx); + }, + updateHash: function updateHash(hash) { + this._manualHash = hash; + this._effect && this._effect.updateHash(hash); + }, + getHash: function getHash() { + return this._manualHash || this._effect && this._effect.getHash(); + }, + onLoad: function onLoad() { + this.effectAsset = this._effectAsset; + if (!this._effect) return; + this._techniqueIndex && this._effect.switchTechnique(this._techniqueIndex); + this._techniqueData = this._techniqueData || {}; + var passDatas = this._techniqueData; + for (var index in passDatas) { + index = parseInt(index); + var passData = passDatas[index]; + if (!passData) continue; + for (var def in passData.defines) this.define(def, passData.defines[def], index); + for (var prop in passData.props) this.setProperty(prop, passData.props[prop], index); + } + } + }); + var _default = Material; + exports["default"] = _default; + cc.Material = Material; + module.exports = exports["default"]; + }), { + "../../utils/texture-util": 332, + "../CCAsset": 106, + "../CCTexture2D": 121, + "./CCEffectAsset": 123 + }], + 125: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _pass = _interopRequireDefault(require("../../../renderer/core/pass")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var gfx = cc.gfx; + var EffectBase = (function () { + function EffectBase() { + this._dirty = true; + this._name = ""; + this._technique = null; + } + var _proto = EffectBase.prototype; + _proto._createPassProp = function _createPassProp(name, pass) { + var prop = pass._properties[name]; + if (!prop) return; + var uniform = Object.create(null); + uniform.name = name; + uniform.type = prop.type; + prop.value instanceof Float32Array ? uniform.value = new Float32Array(prop.value) : prop.value instanceof Float64Array ? uniform.value = new Float64Array(prop.value) : uniform.value = prop.value; + pass._properties[name] = uniform; + return uniform; + }; + _proto._setPassProperty = function _setPassProperty(name, value, pass, directly) { + var properties = pass._properties; + properties.hasOwnProperty(name) || this._createPassProp(name, pass); + if (properties[name].value === value) return true; + this._dirty = true; + return _pass["default"].prototype.setProperty.call(pass, name, value, directly); + }; + _proto.setProperty = function setProperty(name, value, passIdx, directly) { + var success = false; + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) this._setPassProperty(name, value, passes[i], directly) && (success = true); + success || cc.warnID(9103, this.name, name); + }; + _proto.getProperty = function getProperty(name, passIdx) { + var passes = this.passes; + if (passIdx >= passes.length) return; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) { + var value = passes[i].getProperty(name); + if (void 0 !== value) return value; + } + }; + _proto.define = function define(name, value, passIdx, force) { + var success = false; + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) passes[i].define(name, value, force) && (success = true); + success || cc.warnID(9104, this.name, name); + }; + _proto.getDefine = function getDefine(name, passIdx) { + var passes = this.passes; + if (passIdx >= passes.length) return; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) { + var value = passes[i].getDefine(name); + if (void 0 !== value) return value; + } + }; + _proto.setCullMode = function setCullMode(cullMode, passIdx) { + void 0 === cullMode && (cullMode = gfx.CULL_BACK); + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) passes[i].setCullMode(cullMode); + this._dirty = true; + }; + _proto.setDepth = function setDepth(depthTest, depthWrite, depthFunc, passIdx) { + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) passes[i].setDepth(depthTest, depthWrite, depthFunc); + this._dirty = true; + }; + _proto.setBlend = function setBlend(enabled, blendEq, blendSrc, blendDst, blendAlphaEq, blendSrcAlpha, blendDstAlpha, blendColor, passIdx) { + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) passes[i].setBlend(enabled, blendEq, blendSrc, blendDst, blendAlphaEq, blendSrcAlpha, blendDstAlpha, blendColor); + this._dirty = true; + }; + _proto.setStencilEnabled = function setStencilEnabled(stencilTest, passIdx) { + void 0 === stencilTest && (stencilTest = gfx.STENCIL_INHERIT); + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) passes[i].setStencilEnabled(stencilTest); + this._dirty = true; + }; + _proto.setStencil = function setStencil(enabled, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask, passIdx) { + var passes = this.passes; + var start = 0, end = passes.length; + void 0 !== passIdx && (start = passIdx, end = passIdx + 1); + for (var i = start; i < end; i++) { + var pass = passes[i]; + pass.setStencilFront(enabled, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask); + pass.setStencilBack(enabled, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask); + } + this._dirty = true; + }; + _createClass(EffectBase, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "technique", + get: function get() { + return this._technique; + } + }, { + key: "passes", + get: function get() { + return []; + } + }]); + return EffectBase; + })(); + exports["default"] = EffectBase; + cc.EffectBase = EffectBase; + module.exports = exports["default"]; + }), { + "../../../renderer/core/pass": 363 + }], + 126: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.parseEffect = parseEffect; + var _pass = _interopRequireDefault(require("../../../renderer/core/pass")); + var _types = require("../../../renderer/types"); + var _enums = _interopRequireDefault(require("../../../renderer/enums")); + var _effect = _interopRequireDefault(require("./effect")); + var _technique = _interopRequireDefault(require("../../../renderer/core/technique")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function getInvolvedProgram(programName) { + var lib = cc.renderer._forward._programLib; + return lib.getTemplate(programName); + } + function parseProperties(effectAsset, passJson) { + var propertiesJson = passJson.properties || {}; + var program = getInvolvedProgram(passJson.program); + var _loop = function _loop(prop) { + var uniformInfo = program.uniforms.find((function (u) { + return u.name === prop; + })); + if (!uniformInfo) { + cc.warnID(9107, effectAsset.name, prop); + return "continue"; + } + }; + for (var prop in propertiesJson) { + var _ret = _loop(prop); + if ("continue" === _ret) continue; + } + var properties = {}; + program.uniforms.forEach((function (u) { + var name = u.name, prop = properties[name] = Object.assign({}, u), propInfo = propertiesJson[name]; + var value; + value = propInfo ? propInfo.type === _enums["default"].PARAM_TEXTURE_2D ? null : propInfo.type === _enums["default"].PARAM_INT || propInfo.type === _enums["default"].PARAM_FLOAT ? Array.isArray(propInfo.value) ? propInfo.value[0] : propInfo.value : new Float32Array(propInfo.value) : _types.enums2default[u.type]; + void 0 === value && (value = null); + prop.value = value; + })); + return properties; + } + function passDefines(pass) { + var defines = {}; + var program = getInvolvedProgram(pass.program); + program.defines.forEach((function (d) { + defines[d.name] = _types.enums2default[d.type]; + })); + return defines; + } + function parseTechniques(effectAsset) { + var techNum = effectAsset.techniques.length; + var techniques = new Array(techNum); + for (var j = 0; j < techNum; ++j) { + var tech = effectAsset.techniques[j]; + var techName = tech.name || j; + var passNum = tech.passes.length; + var passes = new Array(passNum); + for (var k = 0; k < passNum; ++k) { + var pass = tech.passes[k]; + var passName = pass.name || k; + var detailName = effectAsset.name + "-" + techName + "-" + passName; + var stage = pass.stage || "opaque"; + var properties = parseProperties(effectAsset, pass); + var defines = passDefines(pass); + var newPass = passes[k] = new _pass["default"](passName, detailName, pass.program, stage, properties, defines); + pass.rasterizerState && newPass.setCullMode(pass.rasterizerState.cullMode); + var blendState = pass.blendState && pass.blendState.targets[0]; + blendState && newPass.setBlend(blendState.blend, blendState.blendEq, blendState.blendSrc, blendState.blendDst, blendState.blendAlphaEq, blendState.blendSrcAlpha, blendState.blendDstAlpha, blendState.blendColor); + var depthStencilState = pass.depthStencilState; + if (depthStencilState) { + newPass.setDepth(depthStencilState.depthTest, depthStencilState.depthWrite, depthStencilState.depthFunc); + newPass.setStencilFront(depthStencilState.stencilTest, depthStencilState.stencilFuncFront, depthStencilState.stencilRefFront, depthStencilState.stencilMaskFront, depthStencilState.stencilFailOpFront, depthStencilState.stencilZFailOpFront, depthStencilState.stencilZPassOpFront, depthStencilState.stencilWriteMaskFront); + newPass.setStencilBack(depthStencilState.stencilTest, depthStencilState.stencilFuncBack, depthStencilState.stencilRefBack, depthStencilState.stencilMaskBack, depthStencilState.stencilFailOpBack, depthStencilState.stencilZFailOpBack, depthStencilState.stencilZPassOpBack, depthStencilState.stencilWriteMaskBack); + } + } + techniques[j] = new _technique["default"](techName, passes); + } + return techniques; + } + function parseEffect(effect) { + var techniques = parseTechniques(effect); + return new _effect["default"](effect.name, techniques, 0, effect); + } + false; + }), { + "../../../renderer/core/pass": 363, + "../../../renderer/core/technique": 365, + "../../../renderer/enums": 367, + "../../../renderer/types": 396, + "./effect": 128 + }], + 127: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _murmurhash2_gc = _interopRequireDefault(require("../../../renderer/murmurhash2_gc")); + var _utils = _interopRequireDefault(require("./utils")); + var _effectBase = _interopRequireDefault(require("./effect-base")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var gfx = cc.gfx; + var EffectVariant = (function (_EffectBase) { + _inheritsLoose(EffectVariant, _EffectBase); + _createClass(EffectVariant, [{ + key: "effect", + get: function get() { + return this._effect; + } + }, { + key: "name", + get: function get() { + return this._effect && this._effect.name + " (variant)"; + } + }, { + key: "passes", + get: function get() { + return this._passes; + } + }, { + key: "stagePasses", + get: function get() { + return this._stagePasses; + } + }]); + function EffectVariant(effect) { + var _this; + _this = _EffectBase.call(this) || this; + _this._effect = void 0; + _this._passes = []; + _this._stagePasses = {}; + _this._hash = 0; + _this.init(effect); + return _this; + } + var _proto = EffectVariant.prototype; + _proto._onEffectChanged = function _onEffectChanged() { }; + _proto.init = function init(effect) { + effect instanceof EffectVariant && (effect = effect.effect); + this._effect = effect; + this._dirty = true; + if (effect) { + var passes = effect.passes; + var variantPasses = this._passes; + variantPasses.length = 0; + var stagePasses = this._stagePasses = {}; + for (var i = 0; i < passes.length; i++) { + var variant = variantPasses[i] = Object.setPrototypeOf({}, passes[i]); + variant._properties = Object.setPrototypeOf({}, passes[i]._properties); + variant._defines = Object.setPrototypeOf({}, passes[i]._defines); + stagePasses[variant._stage] || (stagePasses[variant._stage] = []); + stagePasses[variant._stage].push(variant); + } + } + }; + _proto.updateHash = function updateHash(hash) { }; + _proto.getHash = function getHash() { + if (!this._dirty) return this._hash; + this._dirty = false; + var hash = ""; + hash += _utils["default"].serializePasses(this._passes); + var effect = this._effect; + effect && (hash += _utils["default"].serializePasses(effect.passes)); + this._hash = (0, _murmurhash2_gc["default"])(hash, 666); + this.updateHash(this._hash); + return this._hash; + }; + return EffectVariant; + })(_effectBase["default"]); + exports["default"] = EffectVariant; + cc.EffectVariant = EffectVariant; + module.exports = exports["default"]; + }), { + "../../../renderer/murmurhash2_gc": 390, + "./effect-base": 125, + "./utils": 132 + }], + 128: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _effectBase = _interopRequireDefault(require("./effect-base")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Effect = (function (_EffectBase) { + _inheritsLoose(Effect, _EffectBase); + _createClass(Effect, [{ + key: "technique", + get: function get() { + return this._technique; + } + }, { + key: "passes", + get: function get() { + return this._technique.passes; + } + }]); + function Effect(name, techniques, techniqueIndex, asset) { + var _this; + _this = _EffectBase.call(this) || this; + _this._techniques = []; + _this._asset = null; + _this.init(name, techniques, techniqueIndex, asset, true); + return _this; + } + var _proto = Effect.prototype; + _proto.init = function init(name, techniques, techniqueIndex, asset, createNative) { + this._name = name; + this._techniques = techniques; + this._technique = techniques[techniqueIndex]; + this._asset = asset; + }; + _proto.switchTechnique = function switchTechnique(index) { + if (index >= this._techniques.length) { + cc.warn("Can not switch to technique with index [" + index + "]"); + return; + } + this._technique = this._techniques[index]; + }; + _proto.clear = function clear() { + this._techniques = []; + }; + _proto.clone = function clone() { + var techniques = []; + for (var i = 0; i < this._techniques.length; i++) techniques.push(this._techniques[i].clone()); + var techniqueIndex = this._techniques.indexOf(this._technique); + return new Effect(this._name, techniques, techniqueIndex, this._asset); + }; + return Effect; + })(_effectBase["default"]); + exports["default"] = Effect; + cc.Effect = Effect; + module.exports = exports["default"]; + }), { + "./effect-base": 125 + }], + 129: [(function (require, module, exports) { + "use strict"; + require("./CCEffectAsset"); + require("./CCMaterial"); + require("./material-variant"); + }), { + "./CCEffectAsset": 123, + "./CCMaterial": 124, + "./material-variant": 131 + }], + 130: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _utils = _interopRequireDefault(require("./utils")); + var _pool = _interopRequireDefault(require("../../utils/pool")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var MaterialPool = (function (_Pool) { + _inheritsLoose(MaterialPool, _Pool); + function MaterialPool() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; + _this = _Pool.call.apply(_Pool, [this].concat(args)) || this; + _this.enabled = false; + _this._pool = {}; + return _this; + } + var _proto = MaterialPool.prototype; + _proto.get = function get(exampleMat, renderComponent) { + var pool = this._pool; + if (exampleMat instanceof cc.MaterialVariant) { + if (!exampleMat._owner) { + exampleMat._owner = renderComponent; + return exampleMat; + } + if (exampleMat._owner === renderComponent) return exampleMat; + exampleMat = exampleMat.material; + } + var instance; + if (this.enabled) { + var uuid = exampleMat.effectAsset._uuid; + if (pool[uuid]) { + var key = _utils["default"].serializeDefines(exampleMat._effect._defines) + _utils["default"].serializeTechniques(exampleMat._effect._techniques); + instance = pool[uuid][key] && pool[uuid][key].pop(); + } + } + if (instance) this.count--; else { + instance = new cc.MaterialVariant(exampleMat); + instance._name = exampleMat._name + " (Instance)"; + instance._uuid = exampleMat._uuid; + } + instance._owner = renderComponent; + return instance; + }; + _proto.put = function put(mat) { + if (!this.enabled || !mat._owner) return; + var pool = this._pool; + var uuid = mat.effectAsset._uuid; + pool[uuid] || (pool[uuid] = {}); + var key = _utils["default"].serializeDefines(mat._effect._defines) + _utils["default"].serializeTechniques(mat._effect._techniques); + pool[uuid][key] || (pool[uuid][key] = []); + if (this.count > this.maxSize) return; + this._clean(mat); + pool[uuid][key].push(mat); + this.count++; + }; + _proto.clear = function clear() { + this._pool = {}; + this.count = 0; + }; + _proto._clean = function _clean(mat) { + mat._owner = null; + }; + return MaterialPool; + })(_pool["default"]); + var materialPool = new MaterialPool(); + _pool["default"].register("material", materialPool); + var _default = materialPool; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../../utils/pool": 326, + "./utils": 132 + }], + 131: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _CCMaterial = _interopRequireDefault(require("./CCMaterial")); + var _effectVariant = _interopRequireDefault(require("./effect-variant")); + var _materialPool = _interopRequireDefault(require("./material-pool")); + var _dec, _class, _temp; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var ccclass = cc._decorator.ccclass; + var MaterialVariant = (_dec = ccclass("cc.MaterialVariant"), _dec(_class = (_temp = (function (_Material) { + _inheritsLoose(MaterialVariant, _Material); + MaterialVariant.createWithBuiltin = function createWithBuiltin(materialName, owner) { + return MaterialVariant.create(_CCMaterial["default"].getBuiltinMaterial(materialName), owner); + }; + MaterialVariant.create = function create(material, owner) { + if (!material) return null; + return _materialPool["default"].get(material, owner); + }; + _createClass(MaterialVariant, [{ + key: "uuid", + get: function get() { + return this._material._uuid; + } + }, { + key: "owner", + get: function get() { + return this._owner; + } + }, { + key: "material", + get: function get() { + return this._material; + } + }]); + function MaterialVariant(material) { + var _this; + _this = _Material.call(this) || this; + _this._owner = null; + _this._material = null; + _this.init(material); + return _this; + } + var _proto = MaterialVariant.prototype; + _proto.init = function init(material) { + this._effect = new _effectVariant["default"](material.effect); + this._effectAsset = material._effectAsset; + this._material = material; + }; + return MaterialVariant; + })(_CCMaterial["default"]), _temp)) || _class); + exports["default"] = MaterialVariant; + cc.MaterialVariant = MaterialVariant; + module.exports = exports["default"]; + }), { + "./CCMaterial": 124, + "./effect-variant": 127, + "./material-pool": 130 + }], + 132: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = _interopRequireDefault(require("../../../renderer/enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function serializeDefines(defines) { + var str = ""; + for (var name in defines) str += name + defines[name]; + return str; + } + function serializePass(pass, excludeProperties) { + var str = pass._programName + pass._cullMode; + pass._blend && (str += pass._blendEq + pass._blendAlphaEq + pass._blendSrc + pass._blendDst + pass._blendSrcAlpha + pass._blendDstAlpha + pass._blendColor); + pass._depthTest && (str += pass._depthWrite + pass._depthFunc); + pass._stencilTest && (str += pass._stencilFuncFront + pass._stencilRefFront + pass._stencilMaskFront + pass._stencilFailOpFront + pass._stencilZFailOpFront + pass._stencilZPassOpFront + pass._stencilWriteMaskFront + pass._stencilFuncBack + pass._stencilRefBack + pass._stencilMaskBack + pass._stencilFailOpBack + pass._stencilZFailOpBack + pass._stencilZPassOpBack + pass._stencilWriteMaskBack); + excludeProperties || (str += serializeUniforms(pass._properties)); + str += serializeDefines(pass._defines); + return str; + } + function serializePasses(passes) { + var hashData = ""; + for (var i = 0; i < passes.length; i++) hashData += serializePass(passes[i]); + return hashData; + } + function serializeUniforms(uniforms) { + var hashData = ""; + for (var name in uniforms) { + var param = uniforms[name]; + var prop = param.value; + if (!prop) continue; + param.type === _enums["default"].PARAM_TEXTURE_2D || param.type === _enums["default"].PARAM_TEXTURE_CUBE ? hashData += prop._id + ";" : hashData += prop.toString() + ";"; + } + return hashData; + } + var _default = { + serializeDefines: serializeDefines, + serializePasses: serializePasses, + serializeUniforms: serializeUniforms + }; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../../../renderer/enums": 367 + }], + 133: [(function (require, module, exports) { + "use strict"; + var Event; + true; + Event = require("../CCNode").EventType; + var TOP = 1; + var MID = 2; + var BOT = 4; + var LEFT = 8; + var CENTER = 16; + var RIGHT = 32; + var HORIZONTAL = LEFT | CENTER | RIGHT; + var VERTICAL = TOP | MID | BOT; + var AlignMode = cc.Enum({ + ONCE: 0, + ON_WINDOW_RESIZE: 1, + ALWAYS: 2 + }); + function getReadonlyNodeSize(parent) { + return parent instanceof cc.Scene ? cc.visibleRect : parent._contentSize; + } + function computeInverseTransForTarget(widgetNode, target, out_inverseTranslate, out_inverseScale) { + var scaleX = widgetNode._parent.scaleX; + var scaleY = widgetNode._parent.scaleY; + var translateX = 0; + var translateY = 0; + for (var node = widgetNode._parent; ;) { + translateX += node.x; + translateY += node.y; + node = node._parent; + if (!node) { + out_inverseTranslate.x = out_inverseTranslate.y = 0; + out_inverseScale.x = out_inverseScale.y = 1; + return; + } + if (node === target) break; + var sx = node.scaleX; + var sy = node.scaleY; + translateX *= sx; + translateY *= sy; + scaleX *= sx; + scaleY *= sy; + } + out_inverseScale.x = 0 !== scaleX ? 1 / scaleX : 1; + out_inverseScale.y = 0 !== scaleY ? 1 / scaleY : 1; + out_inverseTranslate.x = -translateX; + out_inverseTranslate.y = -translateY; + } + var tInverseTranslate = cc.Vec2.ZERO; + var tInverseScale = cc.Vec2.ONE; + function align(node, widget) { + var hasTarget = widget._target; + var target; + var inverseTranslate, inverseScale; + if (hasTarget) { + target = hasTarget; + inverseTranslate = tInverseTranslate; + inverseScale = tInverseScale; + computeInverseTransForTarget(node, target, inverseTranslate, inverseScale); + } else target = node._parent; + var targetSize = getReadonlyNodeSize(target); + var targetAnchor = target._anchorPoint; + var isRoot = (true, target instanceof cc.Scene); + var x = node.x, y = node.y; + var anchor = node._anchorPoint; + if (widget._alignFlags & HORIZONTAL) { + var localLeft, localRight, targetWidth = targetSize.width; + if (isRoot) { + localLeft = cc.visibleRect.left.x; + localRight = cc.visibleRect.right.x; + } else { + localLeft = -targetAnchor.x * targetWidth; + localRight = localLeft + targetWidth; + } + localLeft += widget._isAbsLeft ? widget._left : widget._left * targetWidth; + localRight -= widget._isAbsRight ? widget._right : widget._right * targetWidth; + if (hasTarget) { + localLeft += inverseTranslate.x; + localLeft *= inverseScale.x; + localRight += inverseTranslate.x; + localRight *= inverseScale.x; + } + var width, anchorX = anchor.x, scaleX = node.scaleX; + if (scaleX < 0) { + anchorX = 1 - anchorX; + scaleX = -scaleX; + } + if (widget.isStretchWidth) { + width = localRight - localLeft; + 0 !== scaleX && (node.width = width / scaleX); + x = localLeft + anchorX * width; + } else { + width = node.width * scaleX; + if (widget.isAlignHorizontalCenter) { + var localHorizontalCenter = widget._isAbsHorizontalCenter ? widget._horizontalCenter : widget._horizontalCenter * targetWidth; + var targetCenter = (.5 - targetAnchor.x) * targetSize.width; + if (hasTarget) { + localHorizontalCenter *= inverseScale.x; + targetCenter += inverseTranslate.x; + targetCenter *= inverseScale.x; + } + x = targetCenter + (anchorX - .5) * width + localHorizontalCenter; + } else x = widget.isAlignLeft ? localLeft + anchorX * width : localRight + (anchorX - 1) * width; + } + } + if (widget._alignFlags & VERTICAL) { + var localTop, localBottom, targetHeight = targetSize.height; + if (isRoot) { + localBottom = cc.visibleRect.bottom.y; + localTop = cc.visibleRect.top.y; + } else { + localBottom = -targetAnchor.y * targetHeight; + localTop = localBottom + targetHeight; + } + localBottom += widget._isAbsBottom ? widget._bottom : widget._bottom * targetHeight; + localTop -= widget._isAbsTop ? widget._top : widget._top * targetHeight; + if (hasTarget) { + localBottom += inverseTranslate.y; + localBottom *= inverseScale.y; + localTop += inverseTranslate.y; + localTop *= inverseScale.y; + } + var height, anchorY = anchor.y, scaleY = node.scaleY; + if (scaleY < 0) { + anchorY = 1 - anchorY; + scaleY = -scaleY; + } + if (widget.isStretchHeight) { + height = localTop - localBottom; + 0 !== scaleY && (node.height = height / scaleY); + y = localBottom + anchorY * height; + } else { + height = node.height * scaleY; + if (widget.isAlignVerticalCenter) { + var localVerticalCenter = widget._isAbsVerticalCenter ? widget._verticalCenter : widget._verticalCenter * targetHeight; + var targetMiddle = (.5 - targetAnchor.y) * targetSize.height; + if (hasTarget) { + localVerticalCenter *= inverseScale.y; + targetMiddle += inverseTranslate.y; + targetMiddle *= inverseScale.y; + } + y = targetMiddle + (anchorY - .5) * height + localVerticalCenter; + } else y = widget.isAlignBottom ? localBottom + anchorY * height : localTop + (anchorY - 1) * height; + } + } + node.setPosition(x, y); + } + function visitNode(node) { + var widget = node._widget; + if (widget) { + false; + align(node, widget); + true, widget.alignMode !== AlignMode.ALWAYS ? widgetManager.remove(widget) : activeWidgets.push(widget); + } + var children = node._children; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + child._active && visitNode(child); + } + } + var animationState; + false; + function refreshScene() { + var AnimUtils; + var EditMode; + var nowPreviewing; + var component; + var animation; + var _component; + var _animation; + false; + var scene = cc.director.getScene(); + if (scene) { + widgetManager.isAligning = true; + if (widgetManager._nodesOrderDirty) { + activeWidgets.length = 0; + visitNode(scene); + widgetManager._nodesOrderDirty = false; + } else { + var i, widget, iterator = widgetManager._activeWidgetsIterator; + var AnimUtils; + var editingNode; + var node; + false; + for (iterator.i = 0; iterator.i < activeWidgets.length; ++iterator.i) { + widget = activeWidgets[iterator.i]; + align(widget.node, widget); + } + } + widgetManager.isAligning = false; + } + false; + } + var adjustWidgetToAllowMovingInEditor = false; + var adjustWidgetToAllowResizingInEditor = false; + var activeWidgets = []; + function updateAlignment(node) { + var parent = node._parent; + cc.Node.isNode(parent) && updateAlignment(parent); + var widget = node._widget || node.getComponent(cc.Widget); + widget && parent && align(node, widget); + } + var widgetManager = cc._widgetManager = module.exports = { + _AlignFlags: { + TOP: TOP, + MID: MID, + BOT: BOT, + LEFT: LEFT, + CENTER: CENTER, + RIGHT: RIGHT + }, + isAligning: false, + _nodesOrderDirty: false, + _activeWidgetsIterator: new cc.js.array.MutableForwardIterator(activeWidgets), + init: function init(director) { + director.on(cc.Director.EVENT_AFTER_UPDATE, refreshScene); + false; + var thisOnResized = this.onResized.bind(this); + cc.view.on("canvas-resize", thisOnResized); + window.addEventListener("orientationchange", thisOnResized); + }, + add: function add(widget) { + widget.node._widget = widget; + this._nodesOrderDirty = true; + false; + }, + remove: function remove(widget) { + widget.node._widget = null; + this._activeWidgetsIterator.remove(widget); + false; + }, + onResized: function onResized() { + var scene = cc.director.getScene(); + scene && this.refreshWidgetOnResized(scene); + }, + refreshWidgetOnResized: function refreshWidgetOnResized(node) { + var widget = cc.Node.isNode(node) && node.getComponent(cc.Widget); + widget && widget.enabled && widget.alignMode === AlignMode.ON_WINDOW_RESIZE && this.add(widget); + var children = node._children; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + this.refreshWidgetOnResized(child); + } + }, + updateAlignment: updateAlignment, + AlignMode: AlignMode + }; + false; + }), { + "../CCNode": 73 + }], + 134: [(function (require, module, exports) { + "use strict"; + var _valueTypes = require("../value-types"); + var _geomUtils = require("../geom-utils"); + var AffineTrans = require("../utils/affine-transform"); + var renderer = require("../renderer/index"); + var RenderFlow = require("../renderer/render-flow"); + var game = require("../CCGame"); + var RendererCamera = null; + false; + RendererCamera = require("../../renderer/scene/camera"); + var _mat4_temp_1 = cc.mat4(); + var _mat4_temp_2 = cc.mat4(); + var _v3_temp_1 = cc.v3(); + var _v3_temp_2 = cc.v3(); + var _v3_temp_3 = cc.v3(); + var _cameras = []; + function updateMainCamera() { + for (var i = 0, minDepth = Number.MAX_VALUE; i < _cameras.length; i++) { + var camera = _cameras[i]; + if (camera._depth < minDepth) { + Camera.main = camera; + minDepth = camera._depth; + } + } + } + var _debugCamera = null; + function repositionDebugCamera() { + if (!_debugCamera) return; + var node = _debugCamera.getNode(); + var canvas = cc.game.canvas; + node.z = canvas.height / 1.1566; + node.x = canvas.width / 2; + node.y = canvas.height / 2; + } + var ClearFlags = cc.Enum({ + COLOR: 1, + DEPTH: 2, + STENCIL: 4 + }); + var StageFlags = cc.Enum({ + OPAQUE: 1, + TRANSPARENT: 2 + }); + var Camera = cc.Class({ + name: "cc.Camera", + extends: cc.Component, + ctor: function ctor() { + if (game.renderType !== game.RENDER_TYPE_CANVAS) { + var camera = new RendererCamera(); + camera.setStages(["opaque"]); + camera.dirty = true; + this._inited = false; + this._camera = camera; + } else this._inited = true; + }, + editor: false, + properties: { + _cullingMask: 4294967295, + _clearFlags: ClearFlags.DEPTH | ClearFlags.STENCIL, + _backgroundColor: cc.color(0, 0, 0, 255), + _depth: 0, + _zoomRatio: 1, + _targetTexture: null, + _fov: 60, + _orthoSize: 10, + _nearClip: 1, + _farClip: 4096, + _ortho: true, + _rect: cc.rect(0, 0, 1, 1), + _renderStages: 1, + _alignWithScreen: true, + zoomRatio: { + get: function get() { + return this._zoomRatio; + }, + set: function set(value) { + this._zoomRatio = value; + }, + tooltip: false + }, + fov: { + get: function get() { + return this._fov; + }, + set: function set(v) { + this._fov = v; + }, + tooltip: false + }, + orthoSize: { + get: function get() { + return this._orthoSize; + }, + set: function set(v) { + this._orthoSize = v; + }, + tooltip: false + }, + nearClip: { + get: function get() { + return this._nearClip; + }, + set: function set(v) { + this._nearClip = v; + this._updateClippingpPlanes(); + }, + tooltip: false + }, + farClip: { + get: function get() { + return this._farClip; + }, + set: function set(v) { + this._farClip = v; + this._updateClippingpPlanes(); + }, + tooltip: false + }, + ortho: { + get: function get() { + return this._ortho; + }, + set: function set(v) { + this._ortho = v; + this._updateProjection(); + }, + tooltip: false + }, + rect: { + get: function get() { + return this._rect; + }, + set: function set(v) { + this._rect = v; + this._updateRect(); + }, + tooltip: false + }, + cullingMask: { + get: function get() { + return this._cullingMask; + }, + set: function set(value) { + this._cullingMask = value; + this._updateCameraMask(); + }, + tooltip: false + }, + clearFlags: { + get: function get() { + return this._clearFlags; + }, + set: function set(value) { + this._clearFlags = value; + this._camera && this._camera.setClearFlags(value); + }, + tooltip: false + }, + backgroundColor: { + get: function get() { + return this._backgroundColor; + }, + set: function set(value) { + if (!this._backgroundColor.equals(value)) { + this._backgroundColor.set(value); + this._updateBackgroundColor(); + } + }, + tooltip: false + }, + depth: { + get: function get() { + return this._depth; + }, + set: function set(value) { + Camera.main === this ? this._depth < value && updateMainCamera() : Camera.main && value < Camera.main._depth && _cameras.includes(this) && (Camera.main = this); + this._depth = value; + this._camera && this._camera.setPriority(value); + }, + tooltip: false + }, + targetTexture: { + get: function get() { + return this._targetTexture; + }, + set: function set(value) { + this._targetTexture = value; + this._updateTargetTexture(); + }, + tooltip: false + }, + renderStages: { + get: function get() { + return this._renderStages; + }, + set: function set(val) { + this._renderStages = val; + this._updateStages(); + }, + tooltip: false + }, + alignWithScreen: { + get: function get() { + return this._alignWithScreen; + }, + set: function set(v) { + this._alignWithScreen = v; + } + }, + _is3D: { + get: function get() { + return this.node && this.node._is3DNode; + } + } + }, + statics: { + main: null, + cameras: _cameras, + ClearFlags: ClearFlags, + findCamera: function findCamera(node) { + for (var i = 0, l = _cameras.length; i < l; i++) { + var camera = _cameras[i]; + if (camera.containsNode(node)) return camera; + } + return null; + }, + _findRendererCamera: function _findRendererCamera(node) { + var cameras = renderer.scene._cameras; + for (var i = 0; i < cameras._count; i++) if (cameras._data[i]._cullingMask & node._cullingMask) return cameras._data[i]; + return null; + }, + _setupDebugCamera: function _setupDebugCamera() { + if (_debugCamera) return; + if (game.renderType === game.RENDER_TYPE_CANVAS) return; + var camera = new RendererCamera(); + _debugCamera = camera; + camera.setStages(["opaque"]); + camera.setFov(60 * Math.PI / 180); + camera.setNear(.1); + camera.setFar(4096); + camera.dirty = true; + camera.cullingMask = 1 << cc.Node.BuiltinGroupIndex.DEBUG; + camera.setPriority(cc.macro.MAX_ZINDEX); + camera.setClearFlags(0); + camera.setColor(0, 0, 0, 0); + var node = new cc.Node(); + camera.setNode(node); + repositionDebugCamera(); + cc.view.on("design-resolution-changed", repositionDebugCamera); + renderer.scene.addCamera(camera); + } + }, + _updateCameraMask: function _updateCameraMask() { + if (this._camera) { + var mask = this._cullingMask & ~(1 << cc.Node.BuiltinGroupIndex.DEBUG); + this._camera.cullingMask = mask; + } + }, + _updateBackgroundColor: function _updateBackgroundColor() { + if (!this._camera) return; + var color = this._backgroundColor; + this._camera.setColor(color.r / 255, color.g / 255, color.b / 255, color.a / 255); + }, + _updateTargetTexture: function _updateTargetTexture() { + if (!this._camera) return; + var texture = this._targetTexture; + this._camera.setFrameBuffer(texture ? texture._framebuffer : null); + }, + _updateClippingpPlanes: function _updateClippingpPlanes() { + if (!this._camera) return; + this._camera.setNear(this._nearClip); + this._camera.setFar(this._farClip); + }, + _updateProjection: function _updateProjection() { + if (!this._camera) return; + var type = this._ortho ? 1 : 0; + this._camera.setType(type); + }, + _updateRect: function _updateRect() { + if (!this._camera) return; + var rect = this._rect; + this._camera.setRect(rect.x, rect.y, rect.width, rect.height); + }, + _updateStages: function _updateStages() { + var flags = this._renderStages; + var stages = []; + flags & StageFlags.OPAQUE && stages.push("opaque"); + flags & StageFlags.TRANSPARENT && stages.push("transparent"); + this._camera.setStages(stages); + }, + _init: function _init() { + if (this._inited) return; + this._inited = true; + var camera = this._camera; + if (!camera) return; + camera.setNode(this.node); + camera.setClearFlags(this._clearFlags); + camera.setPriority(this._depth); + this._updateBackgroundColor(); + this._updateCameraMask(); + this._updateTargetTexture(); + this._updateClippingpPlanes(); + this._updateProjection(); + this._updateStages(); + this._updateRect(); + true; + this.beforeDraw(); + }, + __preload: function __preload() { + this._init(); + }, + onEnable: function onEnable() { + if (true, game.renderType !== game.RENDER_TYPE_CANVAS) { + cc.director.on(cc.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this); + renderer.scene.addCamera(this._camera); + } + _cameras.push(this); + (!Camera.main || this._depth < Camera.main._depth) && (Camera.main = this); + }, + onDisable: function onDisable() { + if (true, game.renderType !== game.RENDER_TYPE_CANVAS) { + cc.director.off(cc.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this); + renderer.scene.removeCamera(this._camera); + } + cc.js.array.fastRemove(_cameras, this); + if (Camera.main === this) { + Camera.main = null; + updateMainCamera(); + } + }, + getScreenToWorldMatrix2D: function getScreenToWorldMatrix2D(out) { + this.getWorldToScreenMatrix2D(out); + _valueTypes.Mat4.invert(out, out); + return out; + }, + getWorldToScreenMatrix2D: function getWorldToScreenMatrix2D(out) { + this.node.getWorldRT(_mat4_temp_1); + var zoomRatio = this.zoomRatio; + var _mat4_temp_1m = _mat4_temp_1.m; + _mat4_temp_1m[0] *= zoomRatio; + _mat4_temp_1m[1] *= zoomRatio; + _mat4_temp_1m[4] *= zoomRatio; + _mat4_temp_1m[5] *= zoomRatio; + var m12 = _mat4_temp_1m[12]; + var m13 = _mat4_temp_1m[13]; + var center = cc.visibleRect.center; + _mat4_temp_1m[12] = center.x - (_mat4_temp_1m[0] * m12 + _mat4_temp_1m[4] * m13); + _mat4_temp_1m[13] = center.y - (_mat4_temp_1m[1] * m12 + _mat4_temp_1m[5] * m13); + out !== _mat4_temp_1 && _valueTypes.Mat4.copy(out, _mat4_temp_1); + return out; + }, + getScreenToWorldPoint: function getScreenToWorldPoint(screenPosition, out) { + if (this.node.is3DNode) { + out = out || new cc.Vec3(); + this._camera.screenToWorld(out, screenPosition, cc.visibleRect.width, cc.visibleRect.height); + } else { + out = out || new cc.Vec2(); + this.getScreenToWorldMatrix2D(_mat4_temp_1); + _valueTypes.Vec2.transformMat4(out, screenPosition, _mat4_temp_1); + } + return out; + }, + getWorldToScreenPoint: function getWorldToScreenPoint(worldPosition, out) { + if (this.node.is3DNode) { + out = out || new cc.Vec3(); + this._camera.worldToScreen(out, worldPosition, cc.visibleRect.width, cc.visibleRect.height); + } else { + out = out || new cc.Vec2(); + this.getWorldToScreenMatrix2D(_mat4_temp_1); + _valueTypes.Vec2.transformMat4(out, worldPosition, _mat4_temp_1); + } + return out; + }, + getRay: function getRay(screenPos) { + if (!cc.geomUtils) return screenPos; + _valueTypes.Vec3.set(_v3_temp_3, screenPos.x, screenPos.y, 1); + this._camera.screenToWorld(_v3_temp_2, _v3_temp_3, cc.visibleRect.width, cc.visibleRect.height); + if (this.ortho) { + _valueTypes.Vec3.set(_v3_temp_3, screenPos.x, screenPos.y, -1); + this._camera.screenToWorld(_v3_temp_1, _v3_temp_3, cc.visibleRect.width, cc.visibleRect.height); + } else this.node.getWorldPosition(_v3_temp_1); + return _geomUtils.Ray.fromPoints(new _geomUtils.Ray(), _v3_temp_1, _v3_temp_2); + }, + containsNode: function containsNode(node) { + return (node._cullingMask & this.cullingMask) > 0; + }, + render: function render(rootNode) { + rootNode = rootNode || cc.director.getScene(); + if (!rootNode) return null; + this.node.getWorldMatrix(_mat4_temp_1); + this.beforeDraw(); + RenderFlow.renderCamera(this._camera, rootNode); + }, + _onAlignWithScreen: function _onAlignWithScreen() { + var height = cc.game.canvas.height / cc.view._scaleY; + var targetTexture = this._targetTexture; + if (targetTexture) { + false; + height = cc.visibleRect.height; + } + var fov = this._fov * cc.macro.RAD; + this.node.z = height / (2 * Math.tan(fov / 2)); + fov = 2 * Math.atan(Math.tan(fov / 2) / this.zoomRatio); + this._camera.setFov(fov); + this._camera.setOrthoHeight(height / 2 / this.zoomRatio); + this.node.setRotation(0, 0, 0, 1); + }, + beforeDraw: function beforeDraw() { + if (!this._camera) return; + if (this._alignWithScreen) this._onAlignWithScreen(); else { + var fov = this._fov * cc.macro.RAD; + fov = 2 * Math.atan(Math.tan(fov / 2) / this.zoomRatio); + this._camera.setFov(fov); + this._camera.setOrthoHeight(this._orthoSize / this.zoomRatio); + } + this._camera.dirty = true; + } + }); + cc.js.mixin(Camera.prototype, { + getNodeToCameraTransform: function getNodeToCameraTransform(node) { + var out = AffineTrans.identity(); + node.getWorldMatrix(_mat4_temp_2); + if (this.containsNode(node)) { + this.getWorldToCameraMatrix(_mat4_temp_1); + _valueTypes.Mat4.mul(_mat4_temp_2, _mat4_temp_2, _mat4_temp_1); + } + AffineTrans.fromMat4(out, _mat4_temp_2); + return out; + }, + getCameraToWorldPoint: function getCameraToWorldPoint(point, out) { + return this.getScreenToWorldPoint(point, out); + }, + getWorldToCameraPoint: function getWorldToCameraPoint(point, out) { + return this.getWorldToScreenPoint(point, out); + }, + getCameraToWorldMatrix: function getCameraToWorldMatrix(out) { + return this.getScreenToWorldMatrix2D(out); + }, + getWorldToCameraMatrix: function getWorldToCameraMatrix(out) { + return this.getWorldToScreenMatrix2D(out); + } + }); + module.exports = cc.Camera = Camera; + }), { + "../../renderer/scene/camera": 392, + "../CCGame": 72, + "../geom-utils": 194, + "../renderer/index": 271, + "../renderer/render-flow": 272, + "../utils/affine-transform": 315, + "../value-types": 339 + }], + 135: [(function (require, module, exports) { + "use strict"; + cc.Collider.Box = cc.Class({ + properties: { + _offset: cc.v2(0, 0), + _size: cc.size(100, 100), + offset: { + tooltip: false, + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset = value; + }, + type: cc.Vec2 + }, + size: { + tooltip: false, + get: function get() { + return this._size; + }, + set: function set(value) { + this._size.width = value.width < 0 ? 0 : value.width; + this._size.height = value.height < 0 ? 0 : value.height; + }, + type: cc.Size + } + }, + resetInEditor: false + }); + var BoxCollider = cc.Class({ + name: "cc.BoxCollider", + extends: cc.Collider, + mixins: [cc.Collider.Box], + editor: false + }); + cc.BoxCollider = module.exports = BoxCollider; + }), {}], + 136: [(function (require, module, exports) { + "use strict"; + cc.Collider.Circle = cc.Class({ + properties: { + _offset: cc.v2(0, 0), + _radius: 50, + offset: { + tooltip: false, + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset = value; + }, + type: cc.Vec2 + }, + radius: { + tooltip: false, + get: function get() { + return this._radius; + }, + set: function set(value) { + this._radius = value < 0 ? 0 : value; + } + } + }, + resetInEditor: false + }); + var CircleCollider = cc.Class({ + name: "cc.CircleCollider", + extends: cc.Collider, + mixins: [cc.Collider.Circle], + editor: false + }); + cc.CircleCollider = module.exports = CircleCollider; + }), {}], + 137: [(function (require, module, exports) { + "use strict"; + var Collider = cc.Class({ + name: "cc.Collider", + extends: cc.Component, + properties: { + editing: { + default: false, + serializable: false, + tooltip: false + }, + tag: { + tooltip: false, + default: 0, + range: [0, 1e7], + type: cc.Integer + } + }, + onDisable: function onDisable() { + cc.director.getCollisionManager().removeCollider(this); + }, + onEnable: function onEnable() { + cc.director.getCollisionManager().addCollider(this); + } + }); + cc.Collider = module.exports = Collider; + }), {}], + 138: [(function (require, module, exports) { + "use strict"; + var _vec = _interopRequireDefault(require("../value-types/vec2")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Contact = require("./CCContact"); + var CollisionType = Contact.CollisionType; + var NodeEvent = require("../CCNode").EventType; + var _vec2 = new _vec["default"](); + function obbApplyMatrix(rect, mat4, out_bl, out_tl, out_tr, out_br) { + var x = rect.x; + var y = rect.y; + var width = rect.width; + var height = rect.height; + var mat4m = mat4.m; + var m00 = mat4m[0], m01 = mat4m[1], m04 = mat4m[4], m05 = mat4m[5]; + var m12 = mat4m[12], m13 = mat4m[13]; + var tx = m00 * x + m04 * y + m12; + var ty = m01 * x + m05 * y + m13; + var xa = m00 * width; + var xb = m01 * width; + var yc = m04 * height; + var yd = m05 * height; + out_tl.x = tx; + out_tl.y = ty; + out_tr.x = xa + tx; + out_tr.y = xb + ty; + out_bl.x = yc + tx; + out_bl.y = yd + ty; + out_br.x = xa + yc + tx; + out_br.y = xb + yd + ty; + } + var CollisionManager = cc.Class({ + mixins: [cc.EventTarget], + properties: { + enabled: false, + enabledDrawBoundingBox: false + }, + ctor: function ctor() { + this._contacts = []; + this._colliders = []; + this._debugDrawer = null; + this._enabledDebugDraw = false; + cc.director._scheduler && cc.director._scheduler.enableForTarget(this); + }, + update: function update(dt) { + if (!this.enabled) return; + var i, l; + var colliders = this._colliders; + for (i = 0, l = colliders.length; i < l; i++) this.updateCollider(colliders[i]); + var contacts = this._contacts; + var results = []; + for (i = 0, l = contacts.length; i < l; i++) { + var collisionType = contacts[i].updateState(); + if (collisionType === CollisionType.None) continue; + results.push([collisionType, contacts[i]]); + } + for (i = 0, l = results.length; i < l; i++) { + var result = results[i]; + this._doCollide(result[0], result[1]); + } + this.drawColliders(); + }, + _doCollide: function _doCollide(collisionType, contact) { + var contactFunc; + switch (collisionType) { + case CollisionType.CollisionEnter: + contactFunc = "onCollisionEnter"; + break; + + case CollisionType.CollisionStay: + contactFunc = "onCollisionStay"; + break; + + case CollisionType.CollisionExit: + contactFunc = "onCollisionExit"; + } + var collider1 = contact.collider1; + var collider2 = contact.collider2; + var comps1 = collider1.node._components; + var comps2 = collider2.node._components; + var i, l, comp; + for (i = 0, l = comps1.length; i < l; i++) { + comp = comps1[i]; + comp[contactFunc] && comp[contactFunc](collider2, collider1); + } + for (i = 0, l = comps2.length; i < l; i++) { + comp = comps2[i]; + comp[contactFunc] && comp[contactFunc](collider1, collider2); + } + }, + shouldCollide: function shouldCollide(c1, c2) { + var node1 = c1.node, node2 = c2.node; + var collisionMatrix = cc.game.collisionMatrix; + return node1 !== node2 && collisionMatrix[node1.groupIndex][node2.groupIndex]; + }, + initCollider: function initCollider(collider) { + if (!collider.world) { + var world = collider.world = {}; + world.aabb = cc.rect(); + world.preAabb = cc.rect(); + world.matrix = cc.mat4(); + world.radius = 0; + if (collider instanceof cc.BoxCollider) { + world.position = null; + world.points = [cc.v2(), cc.v2(), cc.v2(), cc.v2()]; + } else if (collider instanceof cc.PolygonCollider) { + world.position = null; + world.points = collider.points.map((function (p) { + return cc.v2(p.x, p.y); + })); + } else if (collider instanceof cc.CircleCollider) { + world.position = cc.v2(); + world.points = null; + } + } + }, + updateCollider: function updateCollider(collider) { + var offset = collider.offset; + var world = collider.world; + var aabb = world.aabb; + var m = world.matrix; + collider.node.getWorldMatrix(m); + var preAabb = world.preAabb; + preAabb.x = aabb.x; + preAabb.y = aabb.y; + preAabb.width = aabb.width; + preAabb.height = aabb.height; + if (collider instanceof cc.BoxCollider) { + var size = collider.size; + aabb.x = offset.x - size.width / 2; + aabb.y = offset.y - size.height / 2; + aabb.width = size.width; + aabb.height = size.height; + var wps = world.points; + var wp0 = wps[0], wp1 = wps[1], wp2 = wps[2], wp3 = wps[3]; + obbApplyMatrix(aabb, m, wp0, wp1, wp2, wp3); + var minx = Math.min(wp0.x, wp1.x, wp2.x, wp3.x); + var miny = Math.min(wp0.y, wp1.y, wp2.y, wp3.y); + var maxx = Math.max(wp0.x, wp1.x, wp2.x, wp3.x); + var maxy = Math.max(wp0.y, wp1.y, wp2.y, wp3.y); + aabb.x = minx; + aabb.y = miny; + aabb.width = maxx - minx; + aabb.height = maxy - miny; + } else if (collider instanceof cc.CircleCollider) { + _vec["default"].transformMat4(_vec2, collider.offset, m); + world.position.x = _vec2.x; + world.position.y = _vec2.y; + var mm = m.m; + var tempx = mm[12], tempy = mm[13]; + mm[12] = mm[13] = 0; + _vec2.x = collider.radius; + _vec2.y = 0; + _vec["default"].transformMat4(_vec2, _vec2, m); + var d = Math.sqrt(_vec2.x * _vec2.x + _vec2.y * _vec2.y); + world.radius = d; + aabb.x = world.position.x - d; + aabb.y = world.position.y - d; + aabb.width = 2 * d; + aabb.height = 2 * d; + mm[12] = tempx; + mm[13] = tempy; + } else if (collider instanceof cc.PolygonCollider) { + var points = collider.points; + var worldPoints = world.points; + worldPoints.length = points.length; + var _minx = 1e6, _miny = 1e6, _maxx = -1e6, _maxy = -1e6; + for (var i = 0, l = points.length; i < l; i++) { + worldPoints[i] || (worldPoints[i] = cc.v2()); + _vec2.x = points[i].x + offset.x; + _vec2.y = points[i].y + offset.y; + _vec["default"].transformMat4(_vec2, _vec2, m); + var x = _vec2.x; + var y = _vec2.y; + worldPoints[i].x = x; + worldPoints[i].y = y; + x > _maxx && (_maxx = x); + x < _minx && (_minx = x); + y > _maxy && (_maxy = y); + y < _miny && (_miny = y); + } + aabb.x = _minx; + aabb.y = _miny; + aabb.width = _maxx - _minx; + aabb.height = _maxy - _miny; + } + }, + addCollider: function addCollider(collider) { + var colliders = this._colliders; + var index = colliders.indexOf(collider); + if (-1 === index) { + for (var i = 0, l = colliders.length; i < l; i++) { + var other = colliders[i]; + if (this.shouldCollide(collider, other)) { + var contact = new Contact(collider, other); + this._contacts.push(contact); + } + } + colliders.push(collider); + this.initCollider(collider); + } + collider.node.on(NodeEvent.GROUP_CHANGED, this.onNodeGroupChanged, this); + }, + removeCollider: function removeCollider(collider) { + var colliders = this._colliders; + var index = colliders.indexOf(collider); + if (index >= 0) { + colliders.splice(index, 1); + var contacts = this._contacts; + for (var i = contacts.length - 1; i >= 0; i--) { + var contact = contacts[i]; + if (contact.collider1 === collider || contact.collider2 === collider) { + contact.touching && this._doCollide(CollisionType.CollisionExit, contact); + contacts.splice(i, 1); + } + } + collider.node.off(NodeEvent.GROUP_CHANGED, this.onNodeGroupChanged, this); + } else cc.errorID(6600); + }, + onNodeGroupChanged: function onNodeGroupChanged(node) { + var colliders = node.getComponents(cc.Collider); + for (var i = 0, l = colliders.length; i < l; i++) { + var collider = colliders[i]; + if (cc.PhysicsCollider && collider instanceof cc.PhysicsCollider) continue; + this.removeCollider(collider); + this.addCollider(collider); + } + }, + drawColliders: function drawColliders() { + if (!this._enabledDebugDraw) return; + this._checkDebugDrawValid(); + var debugDrawer = this._debugDrawer; + debugDrawer.clear(); + var colliders = this._colliders; + for (var i = 0, l = colliders.length; i < l; i++) { + var collider = colliders[i]; + debugDrawer.strokeColor = cc.Color.WHITE; + if (collider instanceof cc.BoxCollider || collider instanceof cc.PolygonCollider) { + var ps = collider.world.points; + if (ps.length > 0) { + debugDrawer.moveTo(ps[0].x, ps[0].y); + for (var j = 1; j < ps.length; j++) debugDrawer.lineTo(ps[j].x, ps[j].y); + debugDrawer.close(); + debugDrawer.stroke(); + } + } else if (collider instanceof cc.CircleCollider) { + debugDrawer.circle(collider.world.position.x, collider.world.position.y, collider.world.radius); + debugDrawer.stroke(); + } + if (this.enabledDrawBoundingBox) { + var aabb = collider.world.aabb; + debugDrawer.strokeColor = cc.Color.BLUE; + debugDrawer.moveTo(aabb.xMin, aabb.yMin); + debugDrawer.lineTo(aabb.xMin, aabb.yMax); + debugDrawer.lineTo(aabb.xMax, aabb.yMax); + debugDrawer.lineTo(aabb.xMax, aabb.yMin); + debugDrawer.close(); + debugDrawer.stroke(); + } + } + }, + _checkDebugDrawValid: function _checkDebugDrawValid() { + if (!this._debugDrawer || !this._debugDrawer.isValid) { + var node = new cc.Node("COLLISION_MANAGER_DEBUG_DRAW"); + node.zIndex = cc.macro.MAX_ZINDEX; + cc.game.addPersistRootNode(node); + this._debugDrawer = node.addComponent(cc.Graphics); + } + } + }); + cc.js.getset(CollisionManager.prototype, "enabledDebugDraw", (function () { + return this._enabledDebugDraw; + }), (function (value) { + if (value && !this._enabledDebugDraw) { + this._checkDebugDrawValid(); + this._debugDrawer.node.active = true; + } else if (!value && this._enabledDebugDraw) { + this._debugDrawer.clear(true); + this._debugDrawer.node.active = false; + } + this._enabledDebugDraw = value; + })); + cc.CollisionManager = module.exports = CollisionManager; + }), { + "../CCNode": 73, + "../value-types/vec2": 348, + "./CCContact": 139 + }], + 139: [(function (require, module, exports) { + "use strict"; + var Intersection = require("./CCIntersection"); + var CollisionType = cc.Enum({ + None: 0, + CollisionEnter: 1, + CollisionStay: 2, + CollisionExit: 3 + }); + function Contact(collider1, collider2) { + this.collider1 = collider1; + this.collider2 = collider2; + this.touching = false; + var isCollider1Polygon = collider1 instanceof cc.BoxCollider || collider1 instanceof cc.PolygonCollider; + var isCollider2Polygon = collider2 instanceof cc.BoxCollider || collider2 instanceof cc.PolygonCollider; + var isCollider1Circle = collider1 instanceof cc.CircleCollider; + var isCollider2Circle = collider2 instanceof cc.CircleCollider; + if (isCollider1Polygon && isCollider2Polygon) this.testFunc = Intersection.polygonPolygon; else if (isCollider1Circle && isCollider2Circle) this.testFunc = Intersection.circleCircle; else if (isCollider1Polygon && isCollider2Circle) this.testFunc = Intersection.polygonCircle; else if (isCollider1Circle && isCollider2Polygon) { + this.testFunc = Intersection.polygonCircle; + this.collider1 = collider2; + this.collider2 = collider1; + } else cc.errorID(6601, cc.js.getClassName(collider1), cc.js.getClassName(collider2)); + } + Contact.prototype.test = function () { + var world1 = this.collider1.world; + var world2 = this.collider2.world; + if (!world1.aabb.intersects(world2.aabb)) return false; + if (this.testFunc === Intersection.polygonPolygon) return this.testFunc(world1.points, world2.points); + if (this.testFunc === Intersection.circleCircle) return this.testFunc(world1, world2); + if (this.testFunc === Intersection.polygonCircle) return this.testFunc(world1.points, world2); + return false; + }; + Contact.prototype.updateState = function () { + var result = this.test(); + var type = CollisionType.None; + if (result && !this.touching) { + this.touching = true; + type = CollisionType.CollisionEnter; + } else if (result && this.touching) type = CollisionType.CollisionStay; else if (!result && this.touching) { + this.touching = false; + type = CollisionType.CollisionExit; + } + return type; + }; + Contact.CollisionType = CollisionType; + module.exports = Contact; + }), { + "./CCIntersection": 140 + }], + 140: [(function (require, module, exports) { + "use strict"; + var Intersection = {}; + function lineLine(a1, a2, b1, b2) { + var ua_t = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x); + var ub_t = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x); + var u_b = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y); + if (0 !== u_b) { + var ua = ua_t / u_b; + var ub = ub_t / u_b; + if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) return true; + } + return false; + } + Intersection.lineLine = lineLine; + function lineRect(a1, a2, b) { + var r0 = new cc.Vec2(b.x, b.y); + var r1 = new cc.Vec2(b.x, b.yMax); + var r2 = new cc.Vec2(b.xMax, b.yMax); + var r3 = new cc.Vec2(b.xMax, b.y); + if (lineLine(a1, a2, r0, r1)) return true; + if (lineLine(a1, a2, r1, r2)) return true; + if (lineLine(a1, a2, r2, r3)) return true; + if (lineLine(a1, a2, r3, r0)) return true; + return false; + } + Intersection.lineRect = lineRect; + function linePolygon(a1, a2, b) { + var length = b.length; + for (var i = 0; i < length; ++i) { + var b1 = b[i]; + var b2 = b[(i + 1) % length]; + if (lineLine(a1, a2, b1, b2)) return true; + } + return false; + } + Intersection.linePolygon = linePolygon; + function rectRect(a, b) { + var a_min_x = a.x; + var a_min_y = a.y; + var a_max_x = a.x + a.width; + var a_max_y = a.y + a.height; + var b_min_x = b.x; + var b_min_y = b.y; + var b_max_x = b.x + b.width; + var b_max_y = b.y + b.height; + return a_min_x <= b_max_x && a_max_x >= b_min_x && a_min_y <= b_max_y && a_max_y >= b_min_y; + } + Intersection.rectRect = rectRect; + function rectPolygon(a, b) { + var i, l; + var r0 = new cc.Vec2(a.x, a.y); + var r1 = new cc.Vec2(a.x, a.yMax); + var r2 = new cc.Vec2(a.xMax, a.yMax); + var r3 = new cc.Vec2(a.xMax, a.y); + if (linePolygon(r0, r1, b)) return true; + if (linePolygon(r1, r2, b)) return true; + if (linePolygon(r2, r3, b)) return true; + if (linePolygon(r3, r0, b)) return true; + for (i = 0, l = b.length; i < l; ++i) if (pointInPolygon(b[i], a)) return true; + if (pointInPolygon(r0, b)) return true; + if (pointInPolygon(r1, b)) return true; + if (pointInPolygon(r2, b)) return true; + if (pointInPolygon(r3, b)) return true; + return false; + } + Intersection.rectPolygon = rectPolygon; + function polygonPolygon(a, b) { + var i, l; + for (i = 0, l = a.length; i < l; ++i) { + var a1 = a[i]; + var a2 = a[(i + 1) % l]; + if (linePolygon(a1, a2, b)) return true; + } + for (i = 0, l = b.length; i < l; ++i) if (pointInPolygon(b[i], a)) return true; + for (i = 0, l = a.length; i < l; ++i) if (pointInPolygon(a[i], b)) return true; + return false; + } + Intersection.polygonPolygon = polygonPolygon; + function circleCircle(a, b) { + var distance = a.position.sub(b.position).mag(); + return distance < a.radius + b.radius; + } + Intersection.circleCircle = circleCircle; + function polygonCircle(polygon, circle) { + var position = circle.position; + if (pointInPolygon(position, polygon)) return true; + for (var i = 0, l = polygon.length; i < l; i++) { + var start = 0 === i ? polygon[polygon.length - 1] : polygon[i - 1]; + var end = polygon[i]; + if (pointLineDistance(position, start, end, true) < circle.radius) return true; + } + return false; + } + Intersection.polygonCircle = polygonCircle; + function pointInPolygon(point, polygon) { + var inside = false; + var x = point.x; + var y = point.y; + var length = polygon.length; + for (var i = 0, j = length - 1; i < length; j = i++) { + var xi = polygon[i].x, yi = polygon[i].y, xj = polygon[j].x, yj = polygon[j].y, intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; + intersect && (inside = !inside); + } + return inside; + } + Intersection.pointInPolygon = pointInPolygon; + function pointLineDistance(point, start, end, isSegment) { + var dx = end.x - start.x; + var dy = end.y - start.y; + var d = dx * dx + dy * dy; + var t = ((point.x - start.x) * dx + (point.y - start.y) * dy) / d; + var p; + p = isSegment ? d ? t < 0 ? start : t > 1 ? end : cc.v2(start.x + t * dx, start.y + t * dy) : start : cc.v2(start.x + t * dx, start.y + t * dy); + dx = point.x - p.x; + dy = point.y - p.y; + return Math.sqrt(dx * dx + dy * dy); + } + Intersection.pointLineDistance = pointLineDistance; + cc.Intersection = module.exports = Intersection; + }), {}], + 141: [(function (require, module, exports) { + "use strict"; + cc.Collider.Polygon = cc.Class({ + properties: { + threshold: { + default: 1, + serializable: false, + visible: false + }, + _offset: cc.v2(0, 0), + offset: { + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset = value; + }, + type: cc.Vec2 + }, + points: { + tooltip: false, + default: function _default() { + return [cc.v2(-50, -50), cc.v2(50, -50), cc.v2(50, 50), cc.v2(-50, 50)]; + }, + type: [cc.Vec2] + } + }, + resetPointsByContour: false + }); + var PolygonCollider = cc.Class({ + name: "cc.PolygonCollider", + extends: cc.Collider, + mixins: [cc.Collider.Polygon], + editor: false + }); + cc.PolygonCollider = module.exports = PolygonCollider; + }), {}], + 142: [(function (require, module, exports) { + "use strict"; + require("./CCCollisionManager"); + require("./CCCollider"); + require("./CCBoxCollider"); + require("./CCCircleCollider"); + require("./CCPolygonCollider"); + }), { + "./CCBoxCollider": 135, + "./CCCircleCollider": 136, + "./CCCollider": 137, + "./CCCollisionManager": 138, + "./CCPolygonCollider": 141 + }], + 143: [(function (require, module, exports) { + "use strict"; + require("./platform/CCClass"); + var Flags = require("./platform/CCObject").Flags; + var jsArray = require("./platform/js").array; + var IsStartCalled = Flags.IsStartCalled; + var IsOnEnableCalled = Flags.IsOnEnableCalled; + var IsEditorOnEnableCalled = Flags.IsEditorOnEnableCalled; + var callerFunctor = false; + var callOnEnableInTryCatch = false; + var callOnDisableInTryCatch = false; + function sortedIndex(array, comp) { + var order = comp.constructor._executionOrder; + var id = comp._id; + for (var l = 0, h = array.length - 1, m = h >>> 1; l <= h; m = l + h >>> 1) { + var test = array[m]; + var testOrder = test.constructor._executionOrder; + if (testOrder > order) h = m - 1; else if (testOrder < order) l = m + 1; else { + var testId = test._id; + if (testId > id) h = m - 1; else { + if (!(testId < id)) return m; + l = m + 1; + } + } + } + return ~l; + } + function stableRemoveInactive(iterator, flagToClear) { + var array = iterator.array; + var next = iterator.i + 1; + while (next < array.length) { + var comp = array[next]; + if (comp._enabled && comp.node._activeInHierarchy) ++next; else { + iterator.removeAt(next); + flagToClear && (comp._objFlags &= ~flagToClear); + } + } + } + var LifeCycleInvoker = cc.Class({ + __ctor__: function __ctor__(invokeFunc) { + var Iterator = jsArray.MutableForwardIterator; + this._zero = new Iterator([]); + this._neg = new Iterator([]); + this._pos = new Iterator([]); + false; + this._invoke = invokeFunc; + }, + statics: { + stableRemoveInactive: stableRemoveInactive + }, + add: null, + remove: null, + invoke: null + }); + function compareOrder(a, b) { + return a.constructor._executionOrder - b.constructor._executionOrder; + } + var OneOffInvoker = cc.Class({ + extends: LifeCycleInvoker, + add: function add(comp) { + var order = comp.constructor._executionOrder; + (0 === order ? this._zero : order < 0 ? this._neg : this._pos).array.push(comp); + }, + remove: function remove(comp) { + var order = comp.constructor._executionOrder; + (0 === order ? this._zero : order < 0 ? this._neg : this._pos).fastRemove(comp); + }, + cancelInactive: function cancelInactive(flagToClear) { + stableRemoveInactive(this._zero, flagToClear); + stableRemoveInactive(this._neg, flagToClear); + stableRemoveInactive(this._pos, flagToClear); + }, + invoke: function invoke() { + var compsNeg = this._neg; + if (compsNeg.array.length > 0) { + compsNeg.array.sort(compareOrder); + this._invoke(compsNeg); + compsNeg.array.length = 0; + } + this._invoke(this._zero); + this._zero.array.length = 0; + var compsPos = this._pos; + if (compsPos.array.length > 0) { + compsPos.array.sort(compareOrder); + this._invoke(compsPos); + compsPos.array.length = 0; + } + } + }); + var ReusableInvoker = cc.Class({ + extends: LifeCycleInvoker, + add: function add(comp) { + var order = comp.constructor._executionOrder; + if (0 === order) this._zero.array.push(comp); else { + var array = order < 0 ? this._neg.array : this._pos.array; + var i = sortedIndex(array, comp); + i < 0 && array.splice(~i, 0, comp); + } + }, + remove: function remove(comp) { + var order = comp.constructor._executionOrder; + if (0 === order) this._zero.fastRemove(comp); else { + var iterator = order < 0 ? this._neg : this._pos; + var i = sortedIndex(iterator.array, comp); + i >= 0 && iterator.removeAt(i); + } + }, + invoke: function invoke(dt) { + this._neg.array.length > 0 && this._invoke(this._neg, dt); + this._invoke(this._zero, dt); + this._pos.array.length > 0 && this._invoke(this._pos, dt); + } + }); + function enableInEditor(comp) { + if (!(comp._objFlags & IsEditorOnEnableCalled)) { + cc.engine.emit("component-enabled", comp.uuid); + comp._objFlags |= IsEditorOnEnableCalled; + } + } + function createInvokeImpl(indiePath, useDt, ensureFlag, fastPath) { + true; + var body = "var a=it.array;for(it.i=0;it.i= 0) { + jsArray.fastRemoveAt(this._deferredComps, index); + return; + } + !comp.start || comp._objFlags & IsStartCalled || this.startInvoker.remove(comp); + comp.update && this.updateInvoker.remove(comp); + comp.lateUpdate && this.lateUpdateInvoker.remove(comp); + }, + enableComp: function (comp, invoker) { + if (!(comp._objFlags & IsOnEnableCalled)) { + if (comp.onEnable) { + if (invoker) { + invoker.add(comp); + return; + } + comp.onEnable(); + var deactivatedDuringOnEnable = !comp.node._activeInHierarchy; + if (deactivatedDuringOnEnable) return; + } + this._onEnabled(comp); + } + }, + disableComp: function (comp) { + if (comp._objFlags & IsOnEnableCalled) { + comp.onDisable && comp.onDisable(); + this._onDisabled(comp); + } + }, + _scheduleImmediate: function _scheduleImmediate(comp) { + "function" !== typeof comp.start || comp._objFlags & IsStartCalled || this.startInvoker.add(comp); + "function" === typeof comp.update && this.updateInvoker.add(comp); + "function" === typeof comp.lateUpdate && this.lateUpdateInvoker.add(comp); + }, + _deferredSchedule: function _deferredSchedule() { + var comps = this._deferredComps; + for (var i = 0, len = comps.length; i < len; i++) this._scheduleImmediate(comps[i]); + comps.length = 0; + }, + _startForNewComps: function _startForNewComps() { + if (this._deferredComps.length > 0) { + this._deferredSchedule(); + this.startInvoker.invoke(); + } + }, + startPhase: function startPhase() { + this._updating = true; + this.startInvoker.invoke(); + this._startForNewComps(); + }, + updatePhase: function updatePhase(dt) { + this.updateInvoker.invoke(dt); + }, + lateUpdatePhase: function lateUpdatePhase(dt) { + this.lateUpdateInvoker.invoke(dt); + this._updating = false; + this._startForNewComps(); + } + }); + module.exports = ComponentScheduler; + }), { + "./platform/CCClass": 239, + "./platform/CCObject": 245, + "./platform/js": 260, + "./utils/misc": 324 + }], + 144: [(function (require, module, exports) { + "use strict"; + var AnimationAnimator = require("../../animation/animation-animator"); + var AnimationClip = require("../../animation/animation-clip"); + var EventTarget = require("../event/event-target"); + var js = require("../platform/js"); + var equalClips = function (clip1, clip2) { + return clip1 === clip2; + }; + var EventType = cc.Enum({ + PLAY: "play", + STOP: "stop", + PAUSE: "pause", + RESUME: "resume", + LASTFRAME: "lastframe", + FINISHED: "finished" + }); + var Animation = cc.Class({ + name: "cc.Animation", + extends: require("./CCComponent"), + mixins: [EventTarget], + editor: false, + statics: { + EventType: EventType + }, + ctor: function ctor() { + cc.EventTarget.call(this); + this._animator = null; + this._nameToState = js.createMap(true); + this._didInit = false; + this._currentClip = null; + }, + properties: { + _defaultClip: { + default: null, + type: AnimationClip + }, + defaultClip: { + type: AnimationClip, + get: function get() { + return this._defaultClip; + }, + set: function set(value) { + true; + return; + }, + tooltip: false + }, + currentClip: { + get: function get() { + return this._currentClip; + }, + set: function set(value) { + this._currentClip = value; + }, + type: AnimationClip, + visible: false + }, + _writableClips: { + get: function get() { + return this._clips; + }, + set: function set(val) { + this._didInit = false; + this._clips = val; + this._init(); + }, + type: [AnimationClip] + }, + _clips: { + default: [], + type: [AnimationClip], + tooltip: false, + visible: true + }, + playOnLoad: { + default: false, + tooltip: false + } + }, + start: function start() { + if ((true, this.playOnLoad) && this._defaultClip) { + var isPlaying = this._animator && this._animator.isPlaying; + if (!isPlaying) { + var state = this.getAnimationState(this._defaultClip.name); + this._animator.playState(state); + } + } + }, + onEnable: function onEnable() { + this._animator && this._animator.resume(); + }, + onDisable: function onDisable() { + this._animator && this._animator.pause(); + }, + onDestroy: function onDestroy() { + this.stop(); + }, + getClips: function getClips() { + return this._clips; + }, + play: function play(name, startTime) { + var state = this.playAdditive(name, startTime); + this._animator.stopStatesExcept(state); + return state; + }, + playAdditive: function playAdditive(name, startTime) { + this._init(); + var state = this.getAnimationState(name || this._defaultClip && this._defaultClip.name); + if (state) { + this.enabled = true; + var animator = this._animator; + if (animator.isPlaying && state.isPlaying) if (state.isPaused) animator.resumeState(state); else { + animator.stopState(state); + animator.playState(state, startTime); + } else animator.playState(state, startTime); + this.enabledInHierarchy || animator.pause(); + this.currentClip = state.clip; + } + return state; + }, + stop: function stop(name) { + if (!this._didInit) return; + if (name) { + var state = this._nameToState[name]; + state && this._animator.stopState(state); + } else this._animator.stop(); + }, + pause: function pause(name) { + if (!this._didInit) return; + if (name) { + var state = this._nameToState[name]; + state && this._animator.pauseState(state); + } else this.enabled = false; + }, + resume: function resume(name) { + if (!this._didInit) return; + if (name) { + var state = this.getAnimationState(name); + state && this._animator.resumeState(state); + } else this.enabled = true; + }, + setCurrentTime: function setCurrentTime(time, name) { + this._init(); + if (name) { + var state = this.getAnimationState(name); + state && this._animator.setStateTime(state, time); + } else this._animator.setStateTime(time); + }, + getAnimationState: function getAnimationState(name) { + this._init(); + var state = this._nameToState[name]; + false; + state && !state.curveLoaded && this._animator._reloadClip(state); + return state || null; + }, + addClip: function addClip(clip, newName) { + if (!clip) { + cc.warnID(3900); + return; + } + this._init(); + cc.js.array.contains(this._clips, clip) || this._clips.push(clip); + newName = newName || clip.name; + var oldState = this._nameToState[newName]; + if (oldState) { + if (oldState.clip === clip) return oldState; + var index = this._clips.indexOf(oldState.clip); + -1 !== index && this._clips.splice(index, 1); + } + var newState = new cc.AnimationState(clip, newName); + this._nameToState[newName] = newState; + return newState; + }, + removeClip: function removeClip(clip, force) { + if (!clip) { + cc.warnID(3901); + return; + } + this._init(); + var state; + for (var name in this._nameToState) { + state = this._nameToState[name]; + if (equalClips(state.clip, clip)) break; + } + if (clip === this._defaultClip) { + if (!force) { + true; + cc.warnID(3902); + return; + } + this._defaultClip = null; + } + if (state && state.isPlaying) { + if (!force) { + true; + cc.warnID(3903); + return; + } + this.stop(state.name); + } + this._clips = this._clips.filter((function (item) { + return !equalClips(item, clip); + })); + state && delete this._nameToState[state.name]; + }, + sample: function sample(name) { + this._init(); + if (name) { + var state = this.getAnimationState(name); + state && state.sample(); + } else this._animator.sample(); + }, + on: function on(type, callback, target, useCapture) { + this._init(); + var ret = this._EventTargetOn(type, callback, target, useCapture); + if ("lastframe" === type) { + var states = this._nameToState; + for (var name in states) states[name]._lastframeEventOn = true; + } + return ret; + }, + off: function off(type, callback, target, useCapture) { + this._init(); + if ("lastframe" === type) { + var states = this._nameToState; + for (var name in states) states[name]._lastframeEventOn = false; + } + this._EventTargetOff(type, callback, target, useCapture); + }, + _init: function _init() { + if (this._didInit) return; + this._didInit = true; + this._animator = new AnimationAnimator(this.node, this); + this._createStates(); + }, + _createStates: function _createStates() { + this._nameToState = js.createMap(true); + var state = null; + var defaultClipState = false; + for (var i = 0; i < this._clips.length; ++i) { + var clip = this._clips[i]; + if (clip) { + state = new cc.AnimationState(clip); + false; + this._nameToState[state.name] = state; + equalClips(this._defaultClip, clip) && (defaultClipState = state); + } + } + if (this._defaultClip && !defaultClipState) { + state = new cc.AnimationState(this._defaultClip); + false; + this._nameToState[state.name] = state; + } + } + }); + Animation.prototype._EventTargetOn = EventTarget.prototype.on; + Animation.prototype._EventTargetOff = EventTarget.prototype.off; + cc.Animation = module.exports = Animation; + }), { + "../../animation/animation-animator": 10, + "../../animation/animation-clip": 11, + "../event/event-target": 186, + "../platform/js": 260, + "./CCComponent": 149 + }], + 145: [(function (require, module, exports) { + "use strict"; + var misc = require("../utils/misc"); + var Component = require("./CCComponent"); + var AudioClip = require("../assets/CCAudioClip"); + var AudioSource = cc.Class({ + name: "cc.AudioSource", + extends: Component, + editor: false, + ctor: function ctor() { + this.audio = new cc._Audio(); + }, + properties: { + _clip: { + default: null, + type: AudioClip + }, + _volume: 1, + _mute: false, + _loop: false, + _pausedFlag: { + default: false, + serializable: false + }, + _firstlyEnabled: true, + isPlaying: { + get: function get() { + var state = this.audio.getState(); + return state === cc._Audio.State.PLAYING; + }, + visible: false + }, + clip: { + get: function get() { + return this._clip; + }, + set: function set(value) { + if (value === this._clip) return; + if (!(value instanceof AudioClip)) return cc.error("Wrong type of AudioClip."); + this._clip = value; + this.audio.stop(); + this.audio.src = this._clip; + this.preload && this._clip._ensureLoaded(); + }, + type: AudioClip, + tooltip: false, + animatable: false + }, + volume: { + get: function get() { + return this._volume; + }, + set: function set(value) { + value = misc.clamp01(value); + this._volume = value; + this._mute || this.audio.setVolume(value); + return value; + }, + tooltip: false + }, + mute: { + get: function get() { + return this._mute; + }, + set: function set(value) { + this._mute = value; + this.audio.setVolume(value ? 0 : this._volume); + return value; + }, + animatable: false, + tooltip: false + }, + loop: { + get: function get() { + return this._loop; + }, + set: function set(value) { + this._loop = value; + this.audio.setLoop(value); + return value; + }, + animatable: false, + tooltip: false + }, + playOnLoad: { + default: false, + tooltip: false, + animatable: false + }, + preload: { + default: false, + animatable: false + } + }, + _pausedCallback: function _pausedCallback() { + var state = this.audio.getState(); + if (state === cc._Audio.State.PLAYING) { + this.audio.pause(); + this._pausedFlag = true; + } + }, + _restoreCallback: function _restoreCallback() { + this._pausedFlag && this.audio.resume(); + this._pausedFlag = false; + }, + onLoad: function onLoad() { + this.audio.src || (this.audio.src = this._clip); + this.preload && this._clip._ensureLoaded(); + }, + onEnable: function onEnable() { + if (this.playOnLoad && this._firstlyEnabled) { + this._firstlyEnabled = false; + this.play(); + } + cc.game.on(cc.game.EVENT_HIDE, this._pausedCallback, this); + cc.game.on(cc.game.EVENT_SHOW, this._restoreCallback, this); + }, + onDisable: function onDisable() { + this.stop(); + cc.game.off(cc.game.EVENT_HIDE, this._pausedCallback, this); + cc.game.off(cc.game.EVENT_SHOW, this._restoreCallback, this); + }, + onDestroy: function onDestroy() { + this.audio.destroy(); + }, + play: function play() { + if (!this._clip) return; + var audio = this.audio; + audio.setVolume(this._mute ? 0 : this._volume); + audio.setLoop(this._loop); + audio.setCurrentTime(0); + audio.play(); + }, + stop: function stop() { + this.audio.stop(); + }, + pause: function pause() { + this.audio.pause(); + }, + resume: function resume() { + this.audio.resume(); + }, + rewind: function rewind() { + this.audio.setCurrentTime(0); + }, + getCurrentTime: function getCurrentTime() { + return this.audio.getCurrentTime(); + }, + setCurrentTime: function setCurrentTime(time) { + this.audio.setCurrentTime(time); + return time; + }, + getDuration: function getDuration() { + return this.audio.getDuration(); + } + }); + cc.AudioSource = module.exports = AudioSource; + }), { + "../assets/CCAudioClip": 107, + "../utils/misc": 324, + "./CCComponent": 149 + }], + 146: [(function (require, module, exports) { + "use strict"; + var BlockEvents = ["touchstart", "touchmove", "touchend", "mousedown", "mousemove", "mouseup", "mouseenter", "mouseleave", "mousewheel"]; + function stopPropagation(event) { + event.stopPropagation(); + } + var BlockInputEvents = cc.Class({ + name: "cc.BlockInputEvents", + extends: require("./CCComponent"), + editor: { + menu: "i18n:MAIN_MENU.component.ui/Block Input Events", + inspector: "packages://inspector/inspectors/comps/block-input-events.js", + help: "i18n:COMPONENT.help_url.block_input_events" + }, + onEnable: function onEnable() { + for (var i = 0; i < BlockEvents.length; i++) this.node.on(BlockEvents[i], stopPropagation, this); + }, + onDisable: function onDisable() { + for (var i = 0; i < BlockEvents.length; i++) this.node.off(BlockEvents[i], stopPropagation, this); + } + }); + cc.BlockInputEvents = module.exports = BlockInputEvents; + }), { + "./CCComponent": 149 + }], + 147: [(function (require, module, exports) { + "use strict"; + var Component = require("./CCComponent"); + var GraySpriteState = require("../utils/gray-sprite-state"); + var Transition = cc.Enum({ + NONE: 0, + COLOR: 1, + SPRITE: 2, + SCALE: 3 + }); + var State = cc.Enum({ + NORMAL: 0, + HOVER: 1, + PRESSED: 2, + DISABLED: 3 + }); + var Button = cc.Class({ + name: "cc.Button", + extends: Component, + mixins: [GraySpriteState], + ctor: function ctor() { + this._pressed = false; + this._hovered = false; + this._fromColor = null; + this._toColor = null; + this._time = 0; + this._transitionFinished = true; + this._fromScale = cc.Vec2.ZERO; + this._toScale = cc.Vec2.ZERO; + this._originalScale = null; + this._graySpriteMaterial = null; + this._spriteMaterial = null; + this._sprite = null; + }, + editor: false, + properties: { + interactable: { + default: true, + tooltip: false, + notify: function notify() { + this._updateState(); + this.interactable || this._resetState(); + }, + animatable: false + }, + _resizeToTarget: { + animatable: false, + set: function set(value) { + value && this._resizeNodeToTargetNode(); + } + }, + enableAutoGrayEffect: { + default: false, + tooltip: false, + notify: function notify() { + this._updateDisabledState(true); + } + }, + transition: { + default: Transition.NONE, + tooltip: false, + type: Transition, + animatable: false, + notify: function notify(oldValue) { + this._updateTransition(oldValue); + }, + formerlySerializedAs: "transition" + }, + normalColor: { + default: cc.Color.WHITE, + displayName: "Normal", + tooltip: false, + notify: function notify() { + this.transition === Transition.Color && this._getButtonState() === State.NORMAL && (this._getTarget().opacity = this.normalColor.a); + this._updateState(); + } + }, + pressedColor: { + default: cc.color(211, 211, 211), + displayName: "Pressed", + tooltip: false, + notify: function notify() { + this.transition === Transition.Color && this._getButtonState() === State.PRESSED && (this._getTarget().opacity = this.pressedColor.a); + this._updateState(); + }, + formerlySerializedAs: "pressedColor" + }, + hoverColor: { + default: cc.Color.WHITE, + displayName: "Hover", + tooltip: false, + notify: function notify() { + this.transition === Transition.Color && this._getButtonState() === State.HOVER && (this._getTarget().opacity = this.hoverColor.a); + this._updateState(); + }, + formerlySerializedAs: "hoverColor" + }, + disabledColor: { + default: cc.color(124, 124, 124), + displayName: "Disabled", + tooltip: false, + notify: function notify() { + this.transition === Transition.Color && this._getButtonState() === State.DISABLED && (this._getTarget().opacity = this.disabledColor.a); + this._updateState(); + } + }, + duration: { + default: .1, + range: [0, 10], + tooltip: false + }, + zoomScale: { + default: 1.2, + tooltip: false + }, + normalSprite: { + default: null, + type: cc.SpriteFrame, + displayName: "Normal", + tooltip: false, + notify: function notify() { + this._updateState(); + } + }, + pressedSprite: { + default: null, + type: cc.SpriteFrame, + displayName: "Pressed", + tooltip: false, + formerlySerializedAs: "pressedSprite", + notify: function notify() { + this._updateState(); + } + }, + hoverSprite: { + default: null, + type: cc.SpriteFrame, + displayName: "Hover", + tooltip: false, + formerlySerializedAs: "hoverSprite", + notify: function notify() { + this._updateState(); + } + }, + disabledSprite: { + default: null, + type: cc.SpriteFrame, + displayName: "Disabled", + tooltip: false, + notify: function notify() { + this._updateState(); + } + }, + target: { + default: null, + type: cc.Node, + tooltip: false, + notify: function notify(oldValue) { + this._applyTarget(); + oldValue && this.target !== oldValue && this._unregisterTargetEvent(oldValue); + } + }, + clickEvents: { + default: [], + type: cc.Component.EventHandler, + tooltip: false + } + }, + statics: { + Transition: Transition + }, + __preload: function __preload() { + this._applyTarget(); + this._resetState(); + }, + _resetState: function _resetState() { + this._pressed = false; + this._hovered = false; + var target = this._getTarget(); + var transition = this.transition; + var originalScale = this._originalScale; + transition === Transition.COLOR && this.interactable ? this._setTargetColor(this.normalColor) : transition === Transition.SCALE && originalScale && target.setScale(originalScale.x, originalScale.y); + this._transitionFinished = true; + }, + onEnable: function onEnable() { + this.normalSprite && this.normalSprite.ensureLoadTexture(); + this.hoverSprite && this.hoverSprite.ensureLoadTexture(); + this.pressedSprite && this.pressedSprite.ensureLoadTexture(); + this.disabledSprite && this.disabledSprite.ensureLoadTexture(); + true; + this._registerNodeEvent(); + this._updateState(); + }, + onDisable: function onDisable() { + this._resetState(); + true; + this._unregisterNodeEvent(); + }, + _getTarget: function _getTarget() { + return this.target ? this.target : this.node; + }, + _onTargetSpriteFrameChanged: function _onTargetSpriteFrameChanged(comp) { + this.transition === Transition.SPRITE && this._setCurrentStateSprite(comp.spriteFrame); + }, + _onTargetColorChanged: function _onTargetColorChanged(color) { + this.transition === Transition.COLOR && this._setCurrentStateColor(color); + }, + _onTargetScaleChanged: function _onTargetScaleChanged() { + var target = this._getTarget(); + if (this._originalScale && (this.transition !== Transition.SCALE || this._transitionFinished)) { + this._originalScale.x = target.scaleX; + this._originalScale.y = target.scaleY; + } + }, + _setTargetColor: function _setTargetColor(color) { + var target = this._getTarget(); + var cloneColor = color.clone(); + target.opacity = cloneColor.a; + cloneColor.a = 255; + target.color = cloneColor; + }, + _getStateColor: function _getStateColor(state) { + switch (state) { + case State.NORMAL: + return this.normalColor; + + case State.HOVER: + return this.hoverColor; + + case State.PRESSED: + return this.pressedColor; + + case State.DISABLED: + return this.disabledColor; + } + }, + _getStateSprite: function _getStateSprite(state) { + switch (state) { + case State.NORMAL: + return this.normalSprite; + + case State.HOVER: + return this.hoverSprite; + + case State.PRESSED: + return this.pressedSprite; + + case State.DISABLED: + return this.disabledSprite; + } + }, + _setCurrentStateColor: function _setCurrentStateColor(color) { + switch (this._getButtonState()) { + case State.NORMAL: + this.normalColor = color; + break; + + case State.HOVER: + this.hoverColor = color; + break; + + case State.PRESSED: + this.pressedColor = color; + break; + + case State.DISABLED: + this.disabledColor = color; + } + }, + _setCurrentStateSprite: function _setCurrentStateSprite(spriteFrame) { + switch (this._getButtonState()) { + case State.NORMAL: + this.normalSprite = spriteFrame; + break; + + case State.HOVER: + this.hoverSprite = spriteFrame; + break; + + case State.PRESSED: + this.pressedSprite = spriteFrame; + break; + + case State.DISABLED: + this.disabledSprite = spriteFrame; + } + }, + update: function update(dt) { + var target = this._getTarget(); + if (this._transitionFinished) return; + if (this.transition !== Transition.COLOR && this.transition !== Transition.SCALE) return; + this.time += dt; + var ratio = 1; + this.duration > 0 && (ratio = this.time / this.duration); + ratio >= 1 && (ratio = 1); + if (this.transition === Transition.COLOR) { + var color = this._fromColor.lerp(this._toColor, ratio); + this._setTargetColor(color); + } else this.transition === Transition.SCALE && this._originalScale && (target.scale = this._fromScale.lerp(this._toScale, ratio)); + 1 === ratio && (this._transitionFinished = true); + }, + _registerNodeEvent: function _registerNodeEvent() { + this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this); + this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this); + this.node.on(cc.Node.EventType.MOUSE_ENTER, this._onMouseMoveIn, this); + this.node.on(cc.Node.EventType.MOUSE_LEAVE, this._onMouseMoveOut, this); + }, + _unregisterNodeEvent: function _unregisterNodeEvent() { + this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this); + this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this); + this.node.off(cc.Node.EventType.MOUSE_ENTER, this._onMouseMoveIn, this); + this.node.off(cc.Node.EventType.MOUSE_LEAVE, this._onMouseMoveOut, this); + }, + _registerTargetEvent: function _registerTargetEvent(target) { + false; + target.on(cc.Node.EventType.SCALE_CHANGED, this._onTargetScaleChanged, this); + }, + _unregisterTargetEvent: function _unregisterTargetEvent(target) { + false; + target.off(cc.Node.EventType.SCALE_CHANGED, this._onTargetScaleChanged, this); + }, + _getTargetSprite: function _getTargetSprite(target) { + var sprite = null; + target && (sprite = target.getComponent(cc.Sprite)); + return sprite; + }, + _applyTarget: function _applyTarget() { + var target = this._getTarget(); + this._sprite = this._getTargetSprite(target); + this._originalScale || (this._originalScale = cc.Vec2.ZERO); + this._originalScale.x = target.scaleX; + this._originalScale.y = target.scaleY; + this._registerTargetEvent(target); + }, + _onTouchBegan: function _onTouchBegan(event) { + if (!this.interactable || !this.enabledInHierarchy) return; + this._pressed = true; + this._updateState(); + event.stopPropagation(); + }, + _onTouchMove: function _onTouchMove(event) { + if (!this.interactable || !this.enabledInHierarchy || !this._pressed) return; + var touch = event.touch; + var hit = this.node._hitTest(touch.getLocation()); + var target = this._getTarget(); + var originalScale = this._originalScale; + if (this.transition === Transition.SCALE && originalScale) if (hit) { + this._fromScale.x = originalScale.x; + this._fromScale.y = originalScale.y; + this._toScale.x = originalScale.x * this.zoomScale; + this._toScale.y = originalScale.y * this.zoomScale; + this._transitionFinished = false; + } else { + this.time = 0; + this._transitionFinished = true; + target.setScale(originalScale.x, originalScale.y); + } else { + var state; + state = hit ? State.PRESSED : State.NORMAL; + this._applyTransition(state); + } + event.stopPropagation(); + }, + _onTouchEnded: function _onTouchEnded(event) { + if (!this.interactable || !this.enabledInHierarchy) return; + if (this._pressed) { + cc.Component.EventHandler.emitEvents(this.clickEvents, event); + this.node.emit("click", this); + } + this._pressed = false; + this._updateState(); + event.stopPropagation(); + }, + _onTouchCancel: function _onTouchCancel() { + if (!this.interactable || !this.enabledInHierarchy) return; + this._pressed = false; + this._updateState(); + }, + _onMouseMoveIn: function _onMouseMoveIn() { + if (this._pressed || !this.interactable || !this.enabledInHierarchy) return; + if (this.transition === Transition.SPRITE && !this.hoverSprite) return; + if (!this._hovered) { + this._hovered = true; + this._updateState(); + } + }, + _onMouseMoveOut: function _onMouseMoveOut() { + if (this._hovered) { + this._hovered = false; + this._updateState(); + } + }, + _updateState: function _updateState() { + var state = this._getButtonState(); + this._applyTransition(state); + this._updateDisabledState(); + }, + _getButtonState: function _getButtonState() { + var state; + state = this.interactable ? this._pressed ? State.PRESSED : this._hovered ? State.HOVER : State.NORMAL : State.DISABLED; + return state; + }, + _updateColorTransitionImmediately: function _updateColorTransitionImmediately(state) { + var color = this._getStateColor(state); + this._setTargetColor(color); + this._fromColor = color.clone(); + this._toColor = color; + }, + _updateColorTransition: function _updateColorTransition(state) { + if (false, state === State.DISABLED) this._updateColorTransitionImmediately(state); else { + var target = this._getTarget(); + var color = this._getStateColor(state); + this._fromColor = target.color.clone(); + this._toColor = color; + this.time = 0; + this._transitionFinished = false; + } + }, + _updateSpriteTransition: function _updateSpriteTransition(state) { + var sprite = this._getStateSprite(state); + this._sprite && sprite && (this._sprite.spriteFrame = sprite); + }, + _updateScaleTransition: function _updateScaleTransition(state) { + state === State.PRESSED ? this._zoomUp() : this._zoomBack(); + }, + _zoomUp: function _zoomUp() { + if (!this._originalScale) return; + this._fromScale.x = this._originalScale.x; + this._fromScale.y = this._originalScale.y; + this._toScale.x = this._originalScale.x * this.zoomScale; + this._toScale.y = this._originalScale.y * this.zoomScale; + this.time = 0; + this._transitionFinished = false; + }, + _zoomBack: function _zoomBack() { + if (!this._originalScale) return; + var target = this._getTarget(); + this._fromScale.x = target.scaleX; + this._fromScale.y = target.scaleY; + this._toScale.x = this._originalScale.x; + this._toScale.y = this._originalScale.y; + this.time = 0; + this._transitionFinished = false; + }, + _updateTransition: function _updateTransition(oldTransition) { + oldTransition === Transition.COLOR ? this._updateColorTransitionImmediately(State.NORMAL) : oldTransition === Transition.SPRITE && this._updateSpriteTransition(State.NORMAL); + this._updateState(); + }, + _applyTransition: function _applyTransition(state) { + var transition = this.transition; + transition === Transition.COLOR ? this._updateColorTransition(state) : transition === Transition.SPRITE ? this._updateSpriteTransition(state) : transition === Transition.SCALE && this._updateScaleTransition(state); + }, + _resizeNodeToTargetNode: false, + _updateDisabledState: function _updateDisabledState(force) { + if (!this._sprite) return; + if (this.enableAutoGrayEffect || force) { + var useGrayMaterial = false; + this.transition === Transition.SPRITE && this.disabledSprite || (useGrayMaterial = this.enableAutoGrayEffect && !this.interactable); + this._switchGrayMaterial(useGrayMaterial, this._sprite); + } + } + }); + cc.Button = module.exports = Button; + }), { + "../utils/gray-sprite-state": 321, + "./CCComponent": 149 + }], + 148: [(function (require, module, exports) { + "use strict"; + var Camera = require("../camera/CCCamera"); + var Component = require("./CCComponent"); + function resetWidgetComponent(canvas) { + var widget = canvas.node.getComponent(cc.Widget); + widget || (widget = canvas.node.addComponent(cc.Widget)); + widget.isAlignTop = true; + widget.isAlignBottom = true; + widget.isAlignLeft = true; + widget.isAlignRight = true; + widget.top = 0; + widget.bottom = 0; + widget.left = 0; + widget.right = 0; + } + var Canvas = cc.Class({ + name: "cc.Canvas", + extends: Component, + editor: false, + resetInEditor: false, + statics: { + instance: null + }, + properties: { + _designResolution: cc.size(960, 640), + designResolution: { + get: function get() { + return cc.size(this._designResolution); + }, + set: function set(value) { + this._designResolution.width = value.width; + this._designResolution.height = value.height; + this.applySettings(); + }, + tooltip: false + }, + _fitWidth: false, + _fitHeight: true, + fitHeight: { + get: function get() { + return this._fitHeight; + }, + set: function set(value) { + if (this._fitHeight !== value) { + this._fitHeight = value; + this.applySettings(); + } + }, + tooltip: false + }, + fitWidth: { + get: function get() { + return this._fitWidth; + }, + set: function set(value) { + if (this._fitWidth !== value) { + this._fitWidth = value; + this.applySettings(); + } + }, + tooltip: false + } + }, + _fitDesignResolution: false, + __preload: function __preload() { + var Flags; + false; + if (Canvas.instance) return cc.warnID(6700, this.node.name, Canvas.instance.node.name); + Canvas.instance = this; + this.applySettings(); + var widget = this.getComponent(cc.Widget); + !!widget && widget.updateAlignment(); + false; + }, + start: function start() { + if (!Camera.main && cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) { + var cameraNode = new cc.Node("Main Camera"); + cameraNode.parent = this.node; + cameraNode.setSiblingIndex(0); + var camera = cameraNode.addComponent(Camera); + var ClearFlags = Camera.ClearFlags; + camera.clearFlags = ClearFlags.COLOR | ClearFlags.DEPTH | ClearFlags.STENCIL; + camera.depth = -1; + } + }, + onDestroy: function onDestroy() { + false; + Canvas.instance === this && (Canvas.instance = null); + }, + applySettings: function applySettings() { + var ResolutionPolicy = cc.ResolutionPolicy; + var policy; + policy = this.fitHeight && this.fitWidth ? ResolutionPolicy.SHOW_ALL : this.fitHeight || this.fitWidth ? this.fitWidth ? ResolutionPolicy.FIXED_WIDTH : ResolutionPolicy.FIXED_HEIGHT : ResolutionPolicy.NO_BORDER; + var designRes = this._designResolution; + false; + cc.view.setDesignResolutionSize(designRes.width, designRes.height, policy); + } + }); + cc.Canvas = module.exports = Canvas; + }), { + "../camera/CCCamera": 134, + "./CCComponent": 149 + }], + 149: [(function (require, module, exports) { + "use strict"; + var CCObject = require("../platform/CCObject"); + var js = require("../platform/js"); + var idGenerater = new (require("../platform/id-generater"))("Comp"); + var IsOnEnableCalled = CCObject.Flags.IsOnEnableCalled; + var IsOnLoadCalled = CCObject.Flags.IsOnLoadCalled; + var ActionManagerExist = !!cc.ActionManager; + var Component = cc.Class({ + name: "cc.Component", + extends: CCObject, + ctor: function () { + this._id = idGenerater.getNewId(); + this.__eventTargets = []; + }, + properties: { + node: { + default: null, + visible: false + }, + name: { + get: function get() { + if (this._name) return this._name; + var className = cc.js.getClassName(this); + var trimLeft = className.lastIndexOf("."); + trimLeft >= 0 && (className = className.slice(trimLeft + 1)); + return this.node.name + "<" + className + ">"; + }, + set: function set(value) { + this._name = value; + }, + visible: false + }, + uuid: { + get: function get() { + return this._id; + }, + visible: false + }, + __scriptAsset: false, + _enabled: true, + enabled: { + get: function get() { + return this._enabled; + }, + set: function set(value) { + if (this._enabled !== value) { + this._enabled = value; + if (this.node._activeInHierarchy) { + var compScheduler = cc.director._compScheduler; + value ? compScheduler.enableComp(this) : compScheduler.disableComp(this); + } + } + }, + visible: false, + animatable: true + }, + enabledInHierarchy: { + get: function get() { + return this._enabled && this.node._activeInHierarchy; + }, + visible: false + }, + _isOnLoadCalled: { + get: function get() { + return this._objFlags & IsOnLoadCalled; + } + } + }, + update: null, + lateUpdate: null, + __preload: null, + onLoad: null, + start: null, + onEnable: null, + onDisable: null, + onDestroy: null, + onFocusInEditor: null, + onLostFocusInEditor: null, + resetInEditor: null, + addComponent: function addComponent(typeOrClassName) { + return this.node.addComponent(typeOrClassName); + }, + getComponent: function getComponent(typeOrClassName) { + return this.node.getComponent(typeOrClassName); + }, + getComponents: function getComponents(typeOrClassName) { + return this.node.getComponents(typeOrClassName); + }, + getComponentInChildren: function getComponentInChildren(typeOrClassName) { + return this.node.getComponentInChildren(typeOrClassName); + }, + getComponentsInChildren: function getComponentsInChildren(typeOrClassName) { + return this.node.getComponentsInChildren(typeOrClassName); + }, + _getLocalBounds: null, + onRestore: null, + destroy: function destroy() { + var depend; + false; + this._super() && this._enabled && this.node._activeInHierarchy && cc.director._compScheduler.disableComp(this); + }, + _onPreDestroy: function _onPreDestroy() { + ActionManagerExist && cc.director.getActionManager().removeAllActionsFromTarget(this); + this.unscheduleAllCallbacks(); + var eventTargets = this.__eventTargets; + for (var i = eventTargets.length - 1; i >= 0; --i) { + var target = eventTargets[i]; + target && target.targetOff(this); + } + eventTargets.length = 0; + false; + cc.director._nodeActivator.destroyComp(this); + this.node._removeComponent(this); + }, + _instantiate: function _instantiate(cloned) { + cloned || (cloned = cc.instantiate._clone(this, this)); + cloned.node = null; + return cloned; + }, + schedule: function schedule(callback, interval, repeat, delay) { + cc.assertID(callback, 1619); + interval = interval || 0; + cc.assertID(interval >= 0, 1620); + repeat = isNaN(repeat) ? cc.macro.REPEAT_FOREVER : repeat; + delay = delay || 0; + var scheduler = cc.director.getScheduler(); + var paused = scheduler.isTargetPaused(this); + scheduler.schedule(callback, this, interval, repeat, delay, paused); + }, + scheduleOnce: function scheduleOnce(callback, delay) { + this.schedule(callback, 0, 0, delay); + }, + unschedule: function unschedule(callback_fn) { + if (!callback_fn) return; + cc.director.getScheduler().unschedule(callback_fn, this); + }, + unscheduleAllCallbacks: function unscheduleAllCallbacks() { + cc.director.getScheduler().unscheduleAllForTarget(this); + } + }); + Component._requireComponent = null; + Component._executionOrder = 0; + false; + false, false; + js.value(Component, "_registerEditorProps", (function (cls, props) { + var reqComp = props.requireComponent; + reqComp && (cls._requireComponent = reqComp); + var order = props.executionOrder; + order && "number" === typeof order && (cls._executionOrder = order); + (false, false) && "disallowMultiple" in props && (cls._disallowMultiple = cls); + var name; + var key; + var val; + var willExecuteInEditMode; + false, false; + })); + Component.prototype.__scriptUuid = ""; + cc.Component = module.exports = Component; + }), { + "../platform/CCObject": 245, + "../platform/id-generater": 256, + "../platform/js": 260 + }], + 150: [(function (require, module, exports) { + "use strict"; + cc.Component.EventHandler = cc.Class({ + name: "cc.ClickEvent", + properties: { + target: { + default: null, + type: cc.Node + }, + component: "", + _componentId: "", + _componentName: { + get: function get() { + this._genCompIdIfNeeded(); + return this._compId2Name(this._componentId); + }, + set: function set(value) { + this._componentId = this._compName2Id(value); + } + }, + handler: { + default: "" + }, + customEventData: { + default: "" + } + }, + statics: { + emitEvents: function emitEvents(events) { + var args; + if (arguments.length > 0) { + args = new Array(arguments.length - 1); + for (var i = 0, l = args.length; i < l; i++) args[i] = arguments[i + 1]; + } + for (var _i = 0, _l = events.length; _i < _l; _i++) { + var event = events[_i]; + if (!(event instanceof cc.Component.EventHandler)) continue; + event.emit(args); + } + } + }, + emit: function emit(params) { + var target = this.target; + if (!cc.isValid(target)) return; + this._genCompIdIfNeeded(); + var compType = cc.js._getClassById(this._componentId); + var comp = target.getComponent(compType); + if (!cc.isValid(comp)) return; + var handler = comp[this.handler]; + if ("function" !== typeof handler) return; + if (null != this.customEventData && "" !== this.customEventData) { + params = params.slice(); + params.push(this.customEventData); + } + handler.apply(comp, params); + }, + _compName2Id: function _compName2Id(compName) { + var comp = cc.js.getClassByName(compName); + return cc.js._getClassId(comp); + }, + _compId2Name: function _compId2Name(compId) { + var comp = cc.js._getClassById(compId); + return cc.js.getClassName(comp); + }, + _genCompIdIfNeeded: function _genCompIdIfNeeded() { + if (!this._componentId) { + this._componentName = this.component; + this.component = ""; + } + } + }); + }), {}], + 151: [(function (require, module, exports) { + "use strict"; + var macro = require("../platform/CCMacro"); + var RenderComponent = require("./CCRenderComponent"); + var Material = require("../assets/material/CCMaterial"); + var LabelFrame = require("../renderer/utils/label/label-frame"); + var BlendFunc = require("../utils/blend-func"); + var deleteFromDynamicAtlas = require("../renderer/utils/utils").deleteFromDynamicAtlas; + var HorizontalAlign = macro.TextAlignment; + var VerticalAlign = macro.VerticalTextAlignment; + var Overflow = cc.Enum({ + NONE: 0, + CLAMP: 1, + SHRINK: 2, + RESIZE_HEIGHT: 3 + }); + var CacheMode = cc.Enum({ + NONE: 0, + BITMAP: 1, + CHAR: 2 + }); + var BOLD_FLAG = 1; + var ITALIC_FLAG = 2; + var UNDERLINE_FLAG = 4; + var Label = cc.Class({ + name: "cc.Label", + extends: RenderComponent, + mixins: [BlendFunc], + ctor: function ctor() { + false; + this._actualFontSize = 0; + this._assemblerData = null; + this._frame = null; + this._ttfTexture = null; + this._letterTexture = null; + cc.game.renderType === cc.game.RENDER_TYPE_CANVAS ? this._updateMaterial = this._updateMaterialCanvas : this._updateMaterial = this._updateMaterialWebgl; + }, + editor: false, + properties: { + _string: { + default: "", + formerlySerializedAs: "_N$string" + }, + string: { + get: function get() { + return this._string; + }, + set: function set(value) { + var oldValue = this._string; + this._string = "" + value; + this.string !== oldValue && this.setVertsDirty(); + this._checkStringEmpty(); + }, + multiline: true, + tooltip: false + }, + horizontalAlign: { + default: HorizontalAlign.LEFT, + type: HorizontalAlign, + tooltip: false, + notify: function notify(oldValue) { + if (this.horizontalAlign === oldValue) return; + this.setVertsDirty(); + }, + animatable: false + }, + verticalAlign: { + default: VerticalAlign.TOP, + type: VerticalAlign, + tooltip: false, + notify: function notify(oldValue) { + if (this.verticalAlign === oldValue) return; + this.setVertsDirty(); + }, + animatable: false + }, + actualFontSize: { + displayName: "Actual Font Size", + animatable: false, + readonly: true, + get: function get() { + return this._actualFontSize; + }, + tooltip: false + }, + _fontSize: 40, + fontSize: { + get: function get() { + return this._fontSize; + }, + set: function set(value) { + if (this._fontSize === value) return; + this._fontSize = value; + this.setVertsDirty(); + }, + range: [0, 512], + tooltip: false + }, + fontFamily: { + default: "Arial", + tooltip: false, + notify: function notify(oldValue) { + if (this.fontFamily === oldValue) return; + this.setVertsDirty(); + }, + animatable: false + }, + _lineHeight: 40, + lineHeight: { + get: function get() { + return this._lineHeight; + }, + set: function set(value) { + if (this._lineHeight === value) return; + this._lineHeight = value; + this.setVertsDirty(); + }, + tooltip: false + }, + overflow: { + default: Overflow.NONE, + type: Overflow, + tooltip: false, + notify: function notify(oldValue) { + if (this.overflow === oldValue) return; + this.setVertsDirty(); + }, + animatable: false + }, + _enableWrapText: true, + enableWrapText: { + get: function get() { + return this._enableWrapText; + }, + set: function set(value) { + if (this._enableWrapText === value) return; + this._enableWrapText = value; + this.setVertsDirty(); + }, + animatable: false, + tooltip: false + }, + _N$file: null, + font: { + get: function get() { + return this._N$file; + }, + set: function set(value) { + if (this.font === value) return; + value || (this._isSystemFontUsed = true); + false; + this._N$file = value; + value && this._isSystemFontUsed && (this._isSystemFontUsed = false); + if (!this.enabledInHierarchy) return; + this._forceUpdateRenderData(); + }, + type: cc.Font, + tooltip: false, + animatable: false + }, + _isSystemFontUsed: true, + useSystemFont: { + get: function get() { + return this._isSystemFontUsed; + }, + set: function set(value) { + if (this._isSystemFontUsed === value) return; + this._isSystemFontUsed = !!value; + false; + if (value) { + this.font = null; + if (!this.enabledInHierarchy) return; + this._forceUpdateRenderData(); + } + this.markForValidate(); + }, + animatable: false, + tooltip: false + }, + _bmFontOriginalSize: { + displayName: "BMFont Original Size", + get: function get() { + return this._N$file instanceof cc.BitmapFont ? this._N$file.fontSize : -1; + }, + visible: true, + animatable: false + }, + _spacingX: 0, + spacingX: { + get: function get() { + return this._spacingX; + }, + set: function set(value) { + this._spacingX = value; + this.setVertsDirty(); + }, + tooltip: false + }, + _batchAsBitmap: false, + cacheMode: { + default: CacheMode.NONE, + type: CacheMode, + tooltip: false, + notify: function notify(oldValue) { + if (this.cacheMode === oldValue) return; + oldValue !== CacheMode.BITMAP || this.font instanceof cc.BitmapFont || this._frame && this._frame._resetDynamicAtlasFrame(); + oldValue === CacheMode.CHAR && (this._ttfTexture = null); + if (!this.enabledInHierarchy) return; + this._forceUpdateRenderData(); + }, + animatable: false + }, + _styleFlags: 0, + enableBold: { + get: function get() { + return !!(this._styleFlags & BOLD_FLAG); + }, + set: function set(value) { + value ? this._styleFlags |= BOLD_FLAG : this._styleFlags &= ~BOLD_FLAG; + this.setVertsDirty(); + }, + animatable: false, + tooltip: false + }, + enableItalic: { + get: function get() { + return !!(this._styleFlags & ITALIC_FLAG); + }, + set: function set(value) { + value ? this._styleFlags |= ITALIC_FLAG : this._styleFlags &= ~ITALIC_FLAG; + this.setVertsDirty(); + }, + animatable: false, + tooltip: false + }, + enableUnderline: { + get: function get() { + return !!(this._styleFlags & UNDERLINE_FLAG); + }, + set: function set(value) { + value ? this._styleFlags |= UNDERLINE_FLAG : this._styleFlags &= ~UNDERLINE_FLAG; + this.setVertsDirty(); + }, + animatable: false, + tooltip: false + }, + _underlineHeight: 0, + underlineHeight: { + get: function get() { + return this._underlineHeight; + }, + set: function set(value) { + if (this._underlineHeight === value) return; + this._underlineHeight = value; + this.setVertsDirty(); + }, + tooltip: false + } + }, + statics: { + HorizontalAlign: HorizontalAlign, + VerticalAlign: VerticalAlign, + Overflow: Overflow, + CacheMode: CacheMode, + _shareAtlas: null, + clearCharCache: function clearCharCache() { + Label._shareAtlas && Label._shareAtlas.clearAllCache(); + } + }, + onLoad: function onLoad() { + if (this._batchAsBitmap && this.cacheMode === CacheMode.NONE) { + this.cacheMode = CacheMode.BITMAP; + this._batchAsBitmap = false; + } + cc.game.renderType === cc.game.RENDER_TYPE_CANVAS && (this.cacheMode = CacheMode.NONE); + }, + onEnable: function onEnable() { + this._super(); + this.node.on(cc.Node.EventType.SIZE_CHANGED, this._nodeSizeChanged, this); + this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this.setVertsDirty, this); + this.node.on(cc.Node.EventType.COLOR_CHANGED, this._nodeColorChanged, this); + this._forceUpdateRenderData(); + }, + onDisable: function onDisable() { + this._super(); + this.node.off(cc.Node.EventType.SIZE_CHANGED, this._nodeSizeChanged, this); + this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this.setVertsDirty, this); + this.node.off(cc.Node.EventType.COLOR_CHANGED, this._nodeColorChanged, this); + }, + onDestroy: function onDestroy() { + this._assembler && this._assembler._resetAssemblerData && this._assembler._resetAssemblerData(this._assemblerData); + this._assemblerData = null; + this._letterTexture = null; + if (this._ttfTexture) { + this._ttfTexture.destroy(); + this._ttfTexture = null; + } + this._super(); + }, + _nodeSizeChanged: function _nodeSizeChanged() { + (false, this.overflow !== Overflow.NONE) && this.setVertsDirty(); + }, + _nodeColorChanged: function _nodeColorChanged() { + this.font instanceof cc.BitmapFont || this.setVertsDirty(); + }, + setVertsDirty: function setVertsDirty() { + false; + this._super(); + }, + _updateColor: function _updateColor() { + this.font instanceof cc.BitmapFont || this._srcBlendFactor === cc.macro.BlendFactor.SRC_ALPHA && this.node._renderFlag & cc.RenderFlow.FLAG_OPACITY || this.setVertsDirty(); + RenderComponent.prototype._updateColor.call(this); + }, + _validateRender: function _validateRender() { + if (!this.string) { + this.disableRender(); + return; + } + if (this._materials[0]) { + var font = this.font; + if (!(font instanceof cc.BitmapFont)) return; + var spriteFrame = font.spriteFrame; + if (spriteFrame && spriteFrame.textureLoaded() && font._fntConfig) return; + } + this.disableRender(); + }, + _resetAssembler: function _resetAssembler() { + this._resetFrame(); + RenderComponent.prototype._resetAssembler.call(this); + }, + _resetFrame: function _resetFrame() { + if (this._frame && !(this.font instanceof cc.BitmapFont)) { + deleteFromDynamicAtlas(this, this._frame); + this._frame = null; + } + }, + _checkStringEmpty: function _checkStringEmpty() { + this.markForRender(!!this.string); + }, + _on3DNodeChanged: function _on3DNodeChanged() { + this._resetAssembler(); + this._applyFontTexture(); + }, + _onBMFontTextureLoaded: function _onBMFontTextureLoaded() { + this._frame._texture = this.font.spriteFrame._texture; + this.markForRender(true); + this._updateMaterial(); + this._assembler && this._assembler.updateRenderData(this); + }, + _onBlendChanged: function _onBlendChanged() { + if (!this.useSystemFont || !this.enabledInHierarchy) return; + this._forceUpdateRenderData(); + }, + _applyFontTexture: function _applyFontTexture() { + var font = this.font; + if (font instanceof cc.BitmapFont) { + var spriteFrame = font.spriteFrame; + this._frame = spriteFrame; + spriteFrame && spriteFrame.onTextureLoaded(this._onBMFontTextureLoaded, this); + } else { + if (!this._nativeTTF()) { + this._frame || (this._frame = new LabelFrame()); + if (this.cacheMode === CacheMode.CHAR) { + this._letterTexture = this._assembler._getAssemblerData(); + this._frame._refreshTexture(this._letterTexture); + } else if (!this._ttfTexture) { + this._ttfTexture = new cc.Texture2D(); + this._assemblerData = this._assembler._getAssemblerData(); + this._ttfTexture.initWithElement(this._assemblerData.canvas); + } + if (this.cacheMode !== CacheMode.CHAR) { + this._frame._resetDynamicAtlasFrame(); + this._frame._refreshTexture(this._ttfTexture); + this._srcBlendFactor === cc.macro.BlendFactor.ONE && true && this._ttfTexture.setPremultiplyAlpha(true); + } + this._updateMaterial(); + } + this._assembler && this._assembler.updateRenderData(this); + } + this.markForValidate(); + }, + _updateMaterialCanvas: function _updateMaterialCanvas() { + if (!this._frame) return; + this._frame._texture._nativeUrl = this.uuid + "_texture"; + }, + _updateMaterialWebgl: function _updateMaterialWebgl() { + var material = this.getMaterial(0); + if (this._nativeTTF()) { + material && this._assembler._updateTTFMaterial(this); + return; + } + if (!this._frame) return; + material && material.setProperty("texture", this._frame._texture); + BlendFunc.prototype._updateMaterial.call(this); + }, + _forceUseCanvas: false, + _useNativeTTF: function _useNativeTTF() { + return cc.macro.ENABLE_NATIVE_TTF_RENDERER && !this._forceUseCanvas; + }, + _nativeTTF: function _nativeTTF() { + return this._useNativeTTF() && !!this._assembler && !!this._assembler._updateTTFMaterial; + }, + _forceUpdateRenderData: function _forceUpdateRenderData() { + this.setVertsDirty(); + this._resetAssembler(); + this._applyFontTexture(); + }, + _enableBold: function _enableBold(enabled) { + true; + cc.warn("`label._enableBold` is deprecated, use `label.enableBold = true` instead please"); + this.enableBold = !!enabled; + }, + _enableItalics: function _enableItalics(enabled) { + true; + cc.warn("`label._enableItalics` is deprecated, use `label.enableItalics = true` instead please"); + this.enableItalic = !!enabled; + }, + _enableUnderline: function _enableUnderline(enabled) { + true; + cc.warn("`label._enableUnderline` is deprecated, use `label.enableUnderline = true` instead please"); + this.enableUnderline = !!enabled; + } + }); + cc.Label = module.exports = Label; + }), { + "../assets/material/CCMaterial": 124, + "../platform/CCMacro": 244, + "../renderer/utils/label/label-frame": 276, + "../renderer/utils/utils": 279, + "../utils/blend-func": 318, + "./CCRenderComponent": 160 + }], + 152: [(function (require, module, exports) { + "use strict"; + var LabelOutline = cc.Class({ + name: "cc.LabelOutline", + extends: require("./CCComponent"), + editor: false, + properties: { + _color: cc.Color.WHITE, + _width: 1, + color: { + tooltip: false, + get: function get() { + return this._color.clone(); + }, + set: function set(value) { + this._color.equals(value) || this._color.set(value); + this._updateRenderData(); + } + }, + width: { + tooltip: false, + get: function get() { + return this._width; + }, + set: function set(value) { + if (this._width === value) return; + this._width = value; + this._updateRenderData(); + }, + range: [0, 512] + } + }, + onEnable: function onEnable() { + this._updateRenderData(); + }, + onDisable: function onDisable() { + this._updateRenderData(); + }, + _updateRenderData: function _updateRenderData() { + var label = this.node.getComponent(cc.Label); + label && label.setVertsDirty(); + } + }); + cc.LabelOutline = module.exports = LabelOutline; + }), { + "./CCComponent": 149 + }], + 153: [(function (require, module, exports) { + "use strict"; + var LabelShadow = cc.Class({ + name: "cc.LabelShadow", + extends: require("./CCComponent"), + editor: false, + properties: { + _color: cc.Color.WHITE, + _offset: cc.v2(2, 2), + _blur: 2, + color: { + tooltip: false, + get: function get() { + return this._color.clone(); + }, + set: function set(value) { + this._color.equals(value) || this._color.set(value); + this._updateRenderData(); + } + }, + offset: { + tooltip: false, + get: function get() { + return this._offset; + }, + set: function set(value) { + this._offset = value; + this._updateRenderData(); + } + }, + blur: { + tooltip: false, + get: function get() { + return this._blur; + }, + set: function set(value) { + this._blur = value; + this._updateRenderData(); + }, + range: [0, 1024] + } + }, + onEnable: function onEnable() { + this._updateRenderData(); + }, + onDisable: function onDisable() { + this._updateRenderData(); + }, + _updateRenderData: function _updateRenderData() { + var label = this.node.getComponent(cc.Label); + label && label.markForRender(true); + } + }); + cc.LabelShadow = module.exports = LabelShadow; + }), { + "./CCComponent": 149 + }], + 154: [(function (require, module, exports) { + "use strict"; + var NodeEvent = require("../CCNode").EventType; + var Type = cc.Enum({ + NONE: 0, + HORIZONTAL: 1, + VERTICAL: 2, + GRID: 3 + }); + var ResizeMode = cc.Enum({ + NONE: 0, + CONTAINER: 1, + CHILDREN: 2 + }); + var AxisDirection = cc.Enum({ + HORIZONTAL: 0, + VERTICAL: 1 + }); + var VerticalDirection = cc.Enum({ + BOTTOM_TO_TOP: 0, + TOP_TO_BOTTOM: 1 + }); + var HorizontalDirection = cc.Enum({ + LEFT_TO_RIGHT: 0, + RIGHT_TO_LEFT: 1 + }); + var Layout = cc.Class({ + name: "cc.Layout", + extends: require("./CCComponent"), + editor: false, + properties: { + _layoutSize: cc.size(300, 200), + _layoutDirty: { + default: true, + serializable: false + }, + _resize: ResizeMode.NONE, + _N$layoutType: Type.NONE, + type: { + type: Type, + get: function get() { + return this._N$layoutType; + }, + set: function set(value) { + this._N$layoutType = value; + var reLayouted; + false; + this._doLayoutDirty(); + }, + tooltip: false, + animatable: false + }, + resizeMode: { + type: ResizeMode, + tooltip: false, + animatable: false, + get: function get() { + return this._resize; + }, + set: function set(value) { + if (this.type === Type.NONE && value === ResizeMode.CHILDREN) return; + this._resize = value; + var reLayouted; + false; + this._doLayoutDirty(); + } + }, + cellSize: { + default: cc.size(40, 40), + tooltip: false, + type: cc.Size, + notify: function notify() { + this._doLayoutDirty(); + } + }, + startAxis: { + default: AxisDirection.HORIZONTAL, + tooltip: false, + type: AxisDirection, + notify: function notify() { + var reLayouted; + false; + this._doLayoutDirty(); + }, + animatable: false + }, + paddingLeft: { + default: 0, + tooltip: false, + notify: function notify() { + this._doLayoutDirty(); + } + }, + paddingRight: { + default: 0, + tooltip: false, + notify: function notify() { + this._doLayoutDirty(); + } + }, + paddingTop: { + default: 0, + tooltip: false, + notify: function notify() { + this._doLayoutDirty(); + } + }, + paddingBottom: { + default: 0, + tooltip: false, + notify: function notify() { + this._doLayoutDirty(); + } + }, + spacingX: { + default: 0, + notify: function notify() { + this._doLayoutDirty(); + }, + tooltip: false + }, + spacingY: { + default: 0, + notify: function notify() { + this._doLayoutDirty(); + }, + tooltip: false + }, + verticalDirection: { + default: VerticalDirection.TOP_TO_BOTTOM, + type: VerticalDirection, + notify: function notify() { + this._doLayoutDirty(); + }, + tooltip: false, + animatable: false + }, + horizontalDirection: { + default: HorizontalDirection.LEFT_TO_RIGHT, + type: HorizontalDirection, + notify: function notify() { + this._doLayoutDirty(); + }, + tooltip: false, + animatable: false + }, + affectedByScale: { + default: false, + notify: function notify() { + this._doLayoutDirty(); + }, + animatable: false, + tooltip: false + } + }, + statics: { + Type: Type, + VerticalDirection: VerticalDirection, + HorizontalDirection: HorizontalDirection, + ResizeMode: ResizeMode, + AxisDirection: AxisDirection + }, + onEnable: function onEnable() { + this._addEventListeners(); + this.node.getContentSize().equals(cc.size(0, 0)) && this.node.setContentSize(this._layoutSize); + this._doLayoutDirty(); + }, + onDisable: function onDisable() { + this._removeEventListeners(); + }, + _doLayoutDirty: function _doLayoutDirty() { + this._layoutDirty = true; + }, + _doScaleDirty: function _doScaleDirty() { + this._layoutDirty = this._layoutDirty || this.affectedByScale; + }, + _addEventListeners: function _addEventListeners() { + cc.director.on(cc.Director.EVENT_AFTER_UPDATE, this.updateLayout, this); + this.node.on(NodeEvent.SIZE_CHANGED, this._resized, this); + this.node.on(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + this.node.on(NodeEvent.CHILD_ADDED, this._childAdded, this); + this.node.on(NodeEvent.CHILD_REMOVED, this._childRemoved, this); + this.node.on(NodeEvent.CHILD_REORDER, this._doLayoutDirty, this); + this._addChildrenEventListeners(); + }, + _removeEventListeners: function _removeEventListeners() { + cc.director.off(cc.Director.EVENT_AFTER_UPDATE, this.updateLayout, this); + this.node.off(NodeEvent.SIZE_CHANGED, this._resized, this); + this.node.off(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + this.node.off(NodeEvent.CHILD_ADDED, this._childAdded, this); + this.node.off(NodeEvent.CHILD_REMOVED, this._childRemoved, this); + this.node.off(NodeEvent.CHILD_REORDER, this._doLayoutDirty, this); + this._removeChildrenEventListeners(); + }, + _addChildrenEventListeners: function _addChildrenEventListeners() { + var children = this.node.children; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.on(NodeEvent.SCALE_CHANGED, this._doScaleDirty, this); + child.on(NodeEvent.SIZE_CHANGED, this._doLayoutDirty, this); + child.on(NodeEvent.POSITION_CHANGED, this._doLayoutDirty, this); + child.on(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.on("active-in-hierarchy-changed", this._doLayoutDirty, this); + } + }, + _removeChildrenEventListeners: function _removeChildrenEventListeners() { + var children = this.node.children; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.off(NodeEvent.SCALE_CHANGED, this._doScaleDirty, this); + child.off(NodeEvent.SIZE_CHANGED, this._doLayoutDirty, this); + child.off(NodeEvent.POSITION_CHANGED, this._doLayoutDirty, this); + child.off(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.off("active-in-hierarchy-changed", this._doLayoutDirty, this); + } + }, + _childAdded: function _childAdded(child) { + child.on(NodeEvent.SCALE_CHANGED, this._doScaleDirty, this); + child.on(NodeEvent.SIZE_CHANGED, this._doLayoutDirty, this); + child.on(NodeEvent.POSITION_CHANGED, this._doLayoutDirty, this); + child.on(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.on("active-in-hierarchy-changed", this._doLayoutDirty, this); + this._doLayoutDirty(); + }, + _childRemoved: function _childRemoved(child) { + child.off(NodeEvent.SCALE_CHANGED, this._doScaleDirty, this); + child.off(NodeEvent.SIZE_CHANGED, this._doLayoutDirty, this); + child.off(NodeEvent.POSITION_CHANGED, this._doLayoutDirty, this); + child.off(NodeEvent.ANCHOR_CHANGED, this._doLayoutDirty, this); + child.off("active-in-hierarchy-changed", this._doLayoutDirty, this); + this._doLayoutDirty(); + }, + _resized: function _resized() { + this._layoutSize = this.node.getContentSize(); + this._doLayoutDirty(); + }, + _doLayoutHorizontally: function _doLayoutHorizontally(baseWidth, rowBreak, fnPositionY, applyChildren) { + var layoutAnchor = this.node.getAnchorPoint(); + var children = this.node.children; + var sign = 1; + var paddingX = this.paddingLeft; + var leftBoundaryOfLayout = -layoutAnchor.x * baseWidth; + if (this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + leftBoundaryOfLayout = (1 - layoutAnchor.x) * baseWidth; + paddingX = this.paddingRight; + } + var nextX = leftBoundaryOfLayout + sign * paddingX - sign * this.spacingX; + var rowMaxHeight = 0; + var tempMaxHeight = 0; + var secondMaxHeight = 0; + var row = 0; + var containerResizeBoundary = 0; + var maxHeightChildAnchorY = 0; + var activeChildCount = 0; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.activeInHierarchy && activeChildCount++; + } + var newChildWidth = this.cellSize.width; + this.type !== Type.GRID && this.resizeMode === ResizeMode.CHILDREN && (newChildWidth = (baseWidth - (this.paddingLeft + this.paddingRight) - (activeChildCount - 1) * this.spacingX) / activeChildCount); + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + var childScaleX = this._getUsedScaleValue(child.scaleX); + var childScaleY = this._getUsedScaleValue(child.scaleY); + if (!child.activeInHierarchy) continue; + if (this._resize === ResizeMode.CHILDREN) { + child.width = newChildWidth / childScaleX; + this.type === Type.GRID && (child.height = this.cellSize.height / childScaleY); + } + var anchorX = child.anchorX; + var childBoundingBoxWidth = child.width * childScaleX; + var childBoundingBoxHeight = child.height * childScaleY; + secondMaxHeight > tempMaxHeight && (tempMaxHeight = secondMaxHeight); + if (childBoundingBoxHeight >= tempMaxHeight) { + secondMaxHeight = tempMaxHeight; + tempMaxHeight = childBoundingBoxHeight; + maxHeightChildAnchorY = child.getAnchorPoint().y; + } + this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT && (anchorX = 1 - child.anchorX); + nextX = nextX + sign * anchorX * childBoundingBoxWidth + sign * this.spacingX; + var rightBoundaryOfChild = sign * (1 - anchorX) * childBoundingBoxWidth; + if (rowBreak) { + var rowBreakBoundary = nextX + rightBoundaryOfChild + sign * (sign > 0 ? this.paddingRight : this.paddingLeft); + var leftToRightRowBreak = this.horizontalDirection === HorizontalDirection.LEFT_TO_RIGHT && rowBreakBoundary > (1 - layoutAnchor.x) * baseWidth; + var rightToLeftRowBreak = this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT && rowBreakBoundary < -layoutAnchor.x * baseWidth; + if (leftToRightRowBreak || rightToLeftRowBreak) { + if (childBoundingBoxHeight >= tempMaxHeight) { + 0 === secondMaxHeight && (secondMaxHeight = tempMaxHeight); + rowMaxHeight += secondMaxHeight; + secondMaxHeight = tempMaxHeight; + } else { + rowMaxHeight += tempMaxHeight; + secondMaxHeight = childBoundingBoxHeight; + tempMaxHeight = 0; + } + nextX = leftBoundaryOfLayout + sign * (paddingX + anchorX * childBoundingBoxWidth); + row++; + } + } + var finalPositionY = fnPositionY(child, rowMaxHeight, row); + baseWidth >= childBoundingBoxWidth + this.paddingLeft + this.paddingRight && applyChildren && child.setPosition(cc.v2(nextX, finalPositionY)); + var signX = 1; + var tempFinalPositionY; + var topMarign = 0 === tempMaxHeight ? childBoundingBoxHeight : tempMaxHeight; + if (this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + containerResizeBoundary = containerResizeBoundary || this.node._contentSize.height; + signX = -1; + tempFinalPositionY = finalPositionY + signX * (topMarign * maxHeightChildAnchorY + this.paddingBottom); + tempFinalPositionY < containerResizeBoundary && (containerResizeBoundary = tempFinalPositionY); + } else { + containerResizeBoundary = containerResizeBoundary || -this.node._contentSize.height; + tempFinalPositionY = finalPositionY + signX * (topMarign * maxHeightChildAnchorY + this.paddingTop); + tempFinalPositionY > containerResizeBoundary && (containerResizeBoundary = tempFinalPositionY); + } + nextX += rightBoundaryOfChild; + } + return containerResizeBoundary; + }, + _getVerticalBaseHeight: function _getVerticalBaseHeight(children) { + var newHeight = 0; + var activeChildCount = 0; + if (this.resizeMode === ResizeMode.CONTAINER) { + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + if (child.activeInHierarchy) { + activeChildCount++; + newHeight += child.height * this._getUsedScaleValue(child.scaleY); + } + } + newHeight += (activeChildCount - 1) * this.spacingY + this.paddingBottom + this.paddingTop; + } else newHeight = this.node.getContentSize().height; + return newHeight; + }, + _doLayoutVertically: function _doLayoutVertically(baseHeight, columnBreak, fnPositionX, applyChildren) { + var layoutAnchor = this.node.getAnchorPoint(); + var children = this.node.children; + var sign = 1; + var paddingY = this.paddingBottom; + var bottomBoundaryOfLayout = -layoutAnchor.y * baseHeight; + if (this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + bottomBoundaryOfLayout = (1 - layoutAnchor.y) * baseHeight; + paddingY = this.paddingTop; + } + var nextY = bottomBoundaryOfLayout + sign * paddingY - sign * this.spacingY; + var columnMaxWidth = 0; + var tempMaxWidth = 0; + var secondMaxWidth = 0; + var column = 0; + var containerResizeBoundary = 0; + var maxWidthChildAnchorX = 0; + var activeChildCount = 0; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.activeInHierarchy && activeChildCount++; + } + var newChildHeight = this.cellSize.height; + this.type !== Type.GRID && this.resizeMode === ResizeMode.CHILDREN && (newChildHeight = (baseHeight - (this.paddingTop + this.paddingBottom) - (activeChildCount - 1) * this.spacingY) / activeChildCount); + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + var childScaleX = this._getUsedScaleValue(child.scaleX); + var childScaleY = this._getUsedScaleValue(child.scaleY); + if (!child.activeInHierarchy) continue; + if (this.resizeMode === ResizeMode.CHILDREN) { + child.height = newChildHeight / childScaleY; + this.type === Type.GRID && (child.width = this.cellSize.width / childScaleX); + } + var anchorY = child.anchorY; + var childBoundingBoxWidth = child.width * childScaleX; + var childBoundingBoxHeight = child.height * childScaleY; + secondMaxWidth > tempMaxWidth && (tempMaxWidth = secondMaxWidth); + if (childBoundingBoxWidth >= tempMaxWidth) { + secondMaxWidth = tempMaxWidth; + tempMaxWidth = childBoundingBoxWidth; + maxWidthChildAnchorX = child.getAnchorPoint().x; + } + this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM && (anchorY = 1 - child.anchorY); + nextY = nextY + sign * anchorY * childBoundingBoxHeight + sign * this.spacingY; + var topBoundaryOfChild = sign * (1 - anchorY) * childBoundingBoxHeight; + if (columnBreak) { + var columnBreakBoundary = nextY + topBoundaryOfChild + sign * (sign > 0 ? this.paddingTop : this.paddingBottom); + var bottomToTopColumnBreak = this.verticalDirection === VerticalDirection.BOTTOM_TO_TOP && columnBreakBoundary > (1 - layoutAnchor.y) * baseHeight; + var topToBottomColumnBreak = this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM && columnBreakBoundary < -layoutAnchor.y * baseHeight; + if (bottomToTopColumnBreak || topToBottomColumnBreak) { + if (childBoundingBoxWidth >= tempMaxWidth) { + 0 === secondMaxWidth && (secondMaxWidth = tempMaxWidth); + columnMaxWidth += secondMaxWidth; + secondMaxWidth = tempMaxWidth; + } else { + columnMaxWidth += tempMaxWidth; + secondMaxWidth = childBoundingBoxWidth; + tempMaxWidth = 0; + } + nextY = bottomBoundaryOfLayout + sign * (paddingY + anchorY * childBoundingBoxHeight); + column++; + } + } + var finalPositionX = fnPositionX(child, columnMaxWidth, column); + baseHeight >= childBoundingBoxHeight + (this.paddingTop + this.paddingBottom) && applyChildren && child.setPosition(cc.v2(finalPositionX, nextY)); + var signX = 1; + var tempFinalPositionX; + var rightMarign = 0 === tempMaxWidth ? childBoundingBoxWidth : tempMaxWidth; + if (this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + signX = -1; + containerResizeBoundary = containerResizeBoundary || this.node._contentSize.width; + tempFinalPositionX = finalPositionX + signX * (rightMarign * maxWidthChildAnchorX + this.paddingLeft); + tempFinalPositionX < containerResizeBoundary && (containerResizeBoundary = tempFinalPositionX); + } else { + containerResizeBoundary = containerResizeBoundary || -this.node._contentSize.width; + tempFinalPositionX = finalPositionX + signX * (rightMarign * maxWidthChildAnchorX + this.paddingRight); + tempFinalPositionX > containerResizeBoundary && (containerResizeBoundary = tempFinalPositionX); + } + nextY += topBoundaryOfChild; + } + return containerResizeBoundary; + }, + _doLayoutBasic: function _doLayoutBasic() { + var children = this.node.children; + var allChildrenBoundingBox = null; + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + child.activeInHierarchy && (allChildrenBoundingBox ? allChildrenBoundingBox.union(allChildrenBoundingBox, child.getBoundingBoxToWorld()) : allChildrenBoundingBox = child.getBoundingBoxToWorld()); + } + if (allChildrenBoundingBox) { + var leftBottomSpace = this.node.convertToNodeSpaceAR(cc.v2(allChildrenBoundingBox.x, allChildrenBoundingBox.y)); + leftBottomSpace = cc.v2(leftBottomSpace.x - this.paddingLeft, leftBottomSpace.y - this.paddingBottom); + var rightTopSpace = this.node.convertToNodeSpaceAR(cc.v2(allChildrenBoundingBox.xMax, allChildrenBoundingBox.yMax)); + rightTopSpace = cc.v2(rightTopSpace.x + this.paddingRight, rightTopSpace.y + this.paddingTop); + var newSize = rightTopSpace.sub(leftBottomSpace); + newSize = cc.size(parseFloat(newSize.x.toFixed(2)), parseFloat(newSize.y.toFixed(2))); + if (0 !== newSize.width) { + var newAnchorX = -leftBottomSpace.x / newSize.width; + this.node.anchorX = parseFloat(newAnchorX.toFixed(2)); + } + if (0 !== newSize.height) { + var newAnchorY = -leftBottomSpace.y / newSize.height; + this.node.anchorY = parseFloat(newAnchorY.toFixed(2)); + } + this.node.setContentSize(newSize); + } + }, + _doLayoutGridAxisHorizontal: function _doLayoutGridAxisHorizontal(layoutAnchor, layoutSize) { + var baseWidth = layoutSize.width; + var sign = 1; + var bottomBoundaryOfLayout = -layoutAnchor.y * layoutSize.height; + var paddingY = this.paddingBottom; + if (this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + bottomBoundaryOfLayout = (1 - layoutAnchor.y) * layoutSize.height; + paddingY = this.paddingTop; + } + var fnPositionY = function (child, topOffset, row) { + return bottomBoundaryOfLayout + sign * (topOffset + child.anchorY * child.height * this._getUsedScaleValue(child.scaleY) + paddingY + row * this.spacingY); + }.bind(this); + var newHeight = 0; + if (this.resizeMode === ResizeMode.CONTAINER) { + var boundary = this._doLayoutHorizontally(baseWidth, true, fnPositionY, false); + newHeight = bottomBoundaryOfLayout - boundary; + newHeight < 0 && (newHeight *= -1); + bottomBoundaryOfLayout = -layoutAnchor.y * newHeight; + if (this.verticalDirection === VerticalDirection.TOP_TO_BOTTOM) { + sign = -1; + bottomBoundaryOfLayout = (1 - layoutAnchor.y) * newHeight; + } + } + this._doLayoutHorizontally(baseWidth, true, fnPositionY, true); + this.resizeMode === ResizeMode.CONTAINER && this.node.setContentSize(baseWidth, newHeight); + }, + _doLayoutGridAxisVertical: function _doLayoutGridAxisVertical(layoutAnchor, layoutSize) { + var baseHeight = layoutSize.height; + var sign = 1; + var leftBoundaryOfLayout = -layoutAnchor.x * layoutSize.width; + var paddingX = this.paddingLeft; + if (this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + leftBoundaryOfLayout = (1 - layoutAnchor.x) * layoutSize.width; + paddingX = this.paddingRight; + } + var fnPositionX = function (child, leftOffset, column) { + return leftBoundaryOfLayout + sign * (leftOffset + child.anchorX * child.width * this._getUsedScaleValue(child.scaleX) + paddingX + column * this.spacingX); + }.bind(this); + var newWidth = 0; + if (this.resizeMode === ResizeMode.CONTAINER) { + var boundary = this._doLayoutVertically(baseHeight, true, fnPositionX, false); + newWidth = leftBoundaryOfLayout - boundary; + newWidth < 0 && (newWidth *= -1); + leftBoundaryOfLayout = -layoutAnchor.x * newWidth; + if (this.horizontalDirection === HorizontalDirection.RIGHT_TO_LEFT) { + sign = -1; + leftBoundaryOfLayout = (1 - layoutAnchor.x) * newWidth; + } + } + this._doLayoutVertically(baseHeight, true, fnPositionX, true); + this.resizeMode === ResizeMode.CONTAINER && this.node.setContentSize(newWidth, baseHeight); + }, + _doLayoutGrid: function _doLayoutGrid() { + var layoutAnchor = this.node.getAnchorPoint(); + var layoutSize = this.node.getContentSize(); + this.startAxis === AxisDirection.HORIZONTAL ? this._doLayoutGridAxisHorizontal(layoutAnchor, layoutSize) : this.startAxis === AxisDirection.VERTICAL && this._doLayoutGridAxisVertical(layoutAnchor, layoutSize); + }, + _getHorizontalBaseWidth: function _getHorizontalBaseWidth(children) { + var newWidth = 0; + var activeChildCount = 0; + if (this.resizeMode === ResizeMode.CONTAINER) { + for (var i = 0; i < children.length; ++i) { + var child = children[i]; + if (child.activeInHierarchy) { + activeChildCount++; + newWidth += child.width * this._getUsedScaleValue(child.scaleX); + } + } + newWidth += (activeChildCount - 1) * this.spacingX + this.paddingLeft + this.paddingRight; + } else newWidth = this.node.getContentSize().width; + return newWidth; + }, + _doLayout: function _doLayout() { + if (this.type === Type.HORIZONTAL) { + var newWidth = this._getHorizontalBaseWidth(this.node.children); + var fnPositionY = function fnPositionY(child) { + return child.y; + }; + this._doLayoutHorizontally(newWidth, false, fnPositionY, true); + this.node.width = newWidth; + } else if (this.type === Type.VERTICAL) { + var newHeight = this._getVerticalBaseHeight(this.node.children); + var fnPositionX = function fnPositionX(child) { + return child.x; + }; + this._doLayoutVertically(newHeight, false, fnPositionX, true); + this.node.height = newHeight; + } else this.type === Type.NONE ? this.resizeMode === ResizeMode.CONTAINER && this._doLayoutBasic() : this.type === Type.GRID && this._doLayoutGrid(); + }, + _getUsedScaleValue: function _getUsedScaleValue(value) { + return this.affectedByScale ? Math.abs(value) : 1; + }, + updateLayout: function updateLayout() { + if (this._layoutDirty && this.node.children.length > 0) { + this._doLayout(); + this._layoutDirty = false; + } + } + }); + cc.Layout = module.exports = Layout; + }), { + "../CCNode": 73, + "./CCComponent": 149 + }], + 155: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _mat = _interopRequireDefault(require("../value-types/mat4")); + var _vec = _interopRequireDefault(require("../value-types/vec2")); + var _materialVariant = _interopRequireDefault(require("../assets/material/material-variant")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var misc = require("../utils/misc"); + var RenderComponent = require("./CCRenderComponent"); + var RenderFlow = require("../renderer/render-flow"); + var Graphics = require("../graphics/graphics"); + var _vec2_temp = new _vec["default"](); + var _mat4_temp = new _mat["default"](); + var _circlepoints = []; + function _calculateCircle(center, radius, segements) { + _circlepoints.length = 0; + var anglePerStep = 2 * Math.PI / segements; + for (var step = 0; step < segements; ++step) _circlepoints.push(cc.v2(radius.x * Math.cos(anglePerStep * step) + center.x, radius.y * Math.sin(anglePerStep * step) + center.y)); + return _circlepoints; + } + var MaskType = cc.Enum({ + RECT: 0, + ELLIPSE: 1, + IMAGE_STENCIL: 2 + }); + var SEGEMENTS_MIN = 3; + var SEGEMENTS_MAX = 1e4; + var Mask = cc.Class({ + name: "cc.Mask", + extends: RenderComponent, + editor: false, + ctor: function ctor() { + this._graphics = null; + this._enableMaterial = null; + this._exitMaterial = null; + this._clearMaterial = null; + }, + properties: { + _spriteFrame: { + default: null, + type: cc.SpriteFrame + }, + _type: MaskType.RECT, + type: { + get: function get() { + return this._type; + }, + set: function set(value) { + this._type !== value && this._resetAssembler(); + this._type = value; + if (this._type !== MaskType.IMAGE_STENCIL) { + this.spriteFrame = null; + this.alphaThreshold = 0; + this._updateGraphics(); + } + this._activateMaterial(); + }, + type: MaskType, + tooltip: false + }, + spriteFrame: { + type: cc.SpriteFrame, + tooltip: false, + get: function get() { + return this._spriteFrame; + }, + set: function set(value) { + var lastSprite = this._spriteFrame; + false; + if (lastSprite === value) return; + this._spriteFrame = value; + this.setVertsDirty(); + this._updateMaterial(); + } + }, + alphaThreshold: { + default: .1, + type: cc.Float, + range: [0, 1, .1], + slide: true, + tooltip: false, + notify: function notify() { + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) { + cc.warnID(4201); + return; + } + this._updateMaterial(); + } + }, + inverted: { + default: false, + type: cc.Boolean, + tooltip: false, + notify: function notify() { + cc.game.renderType === cc.game.RENDER_TYPE_CANVAS && cc.warnID(4202); + } + }, + _segments: 64, + segements: { + get: function get() { + return this._segments; + }, + set: function set(value) { + this._segments = misc.clampf(value, SEGEMENTS_MIN, SEGEMENTS_MAX); + this._updateGraphics(); + }, + type: cc.Integer, + tooltip: false + }, + _resizeToTarget: { + animatable: false, + set: function set(value) { + value && this._resizeNodeToTargetNode(); + } + } + }, + statics: { + Type: MaskType + }, + onRestore: function onRestore() { + this._activateMaterial(); + }, + onEnable: function onEnable() { + this._super(); + this._type !== MaskType.IMAGE_STENCIL && this._updateGraphics(); + this.node.on(cc.Node.EventType.POSITION_CHANGED, this._updateGraphics, this); + this.node.on(cc.Node.EventType.ROTATION_CHANGED, this._updateGraphics, this); + this.node.on(cc.Node.EventType.SCALE_CHANGED, this._updateGraphics, this); + this.node.on(cc.Node.EventType.SIZE_CHANGED, this._updateGraphics, this); + this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._updateGraphics, this); + }, + onDisable: function onDisable() { + this._super(); + this.node.off(cc.Node.EventType.POSITION_CHANGED, this._updateGraphics, this); + this.node.off(cc.Node.EventType.ROTATION_CHANGED, this._updateGraphics, this); + this.node.off(cc.Node.EventType.SCALE_CHANGED, this._updateGraphics, this); + this.node.off(cc.Node.EventType.SIZE_CHANGED, this._updateGraphics, this); + this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._updateGraphics, this); + this.node._renderFlag &= ~RenderFlow.FLAG_POST_RENDER; + }, + onDestroy: function onDestroy() { + this._super(); + this._removeGraphics(); + }, + _resizeNodeToTargetNode: false, + _validateRender: function _validateRender() { + if (this._type !== MaskType.IMAGE_STENCIL) return; + var spriteFrame = this._spriteFrame; + if (spriteFrame && spriteFrame.textureLoaded()) return; + this.disableRender(); + }, + _activateMaterial: function _activateMaterial() { + this._createGraphics(); + var material = this._materials[0]; + material = material ? _materialVariant["default"].create(material, this) : _materialVariant["default"].createWithBuiltin("2d-sprite", this); + material.define("USE_ALPHA_TEST", true); + if (this._type === MaskType.IMAGE_STENCIL) { + material.define("CC_USE_MODEL", false); + material.define("USE_TEXTURE", true); + } else { + material.define("CC_USE_MODEL", true); + material.define("USE_TEXTURE", false); + } + this._enableMaterial || (this._enableMaterial = _materialVariant["default"].createWithBuiltin("2d-sprite", this)); + if (!this._exitMaterial) { + this._exitMaterial = _materialVariant["default"].createWithBuiltin("2d-sprite", this); + this._exitMaterial.setStencilEnabled(_gfx["default"].STENCIL_DISABLE); + } + this._clearMaterial || (this._clearMaterial = _materialVariant["default"].createWithBuiltin("clear-stencil", this)); + this.setMaterial(0, material); + this._graphics._materials[0] = material; + this._updateMaterial(); + }, + _updateMaterial: function _updateMaterial() { + var material = this._materials[0]; + if (!material) return; + if (this._type === MaskType.IMAGE_STENCIL && this.spriteFrame) { + var texture = this.spriteFrame.getTexture(); + material.setProperty("texture", texture); + } + material.setProperty("alphaThreshold", this.alphaThreshold); + }, + _createGraphics: function _createGraphics() { + if (!this._graphics) { + this._graphics = new Graphics(); + cc.Assembler.init(this._graphics); + this._graphics.node = this.node; + this._graphics.lineWidth = 0; + this._graphics.strokeColor = cc.color(0, 0, 0, 0); + } + }, + _updateGraphics: function _updateGraphics() { + if (!this.enabledInHierarchy) return; + var node = this.node; + var graphics = this._graphics; + graphics.clear(false); + var width = node._contentSize.width; + var height = node._contentSize.height; + var x = -width * node._anchorPoint.x; + var y = -height * node._anchorPoint.y; + if (this._type === MaskType.RECT) graphics.rect(x, y, width, height); else if (this._type === MaskType.ELLIPSE) { + var center = cc.v2(x + width / 2, y + height / 2); + var radius = { + x: width / 2, + y: height / 2 + }; + var points = _calculateCircle(center, radius, this._segments); + for (var i = 0; i < points.length; ++i) { + var point = points[i]; + 0 === i ? graphics.moveTo(point.x, point.y) : graphics.lineTo(point.x, point.y); + } + graphics.close(); + } + cc.game.renderType === cc.game.RENDER_TYPE_CANVAS ? graphics.stroke() : graphics.fill(); + }, + _removeGraphics: function _removeGraphics() { + if (this._graphics) { + this._graphics.destroy(); + this._graphics._destroyImmediate(); + this._graphics = null; + } + }, + _hitTest: function _hitTest(cameraPt) { + var node = this.node; + var size = node.getContentSize(), w = size.width, h = size.height, testPt = _vec2_temp; + node._updateWorldMatrix(); + if (!_mat["default"].invert(_mat4_temp, node._worldMatrix)) return false; + _vec["default"].transformMat4(testPt, cameraPt, _mat4_temp); + testPt.x += node._anchorPoint.x * w; + testPt.y += node._anchorPoint.y * h; + var result = false; + if (this.type === MaskType.RECT || this.type === MaskType.IMAGE_STENCIL) result = testPt.x >= 0 && testPt.y >= 0 && testPt.x <= w && testPt.y <= h; else if (this.type === MaskType.ELLIPSE) { + var rx = w / 2, ry = h / 2; + var px = testPt.x - .5 * w, py = testPt.y - .5 * h; + result = px * px / (rx * rx) + py * py / (ry * ry) < 1; + } + this.inverted && (result = !result); + return result; + }, + markForRender: function markForRender(enable) { + var flag = RenderFlow.FLAG_RENDER | RenderFlow.FLAG_UPDATE_RENDER_DATA | RenderFlow.FLAG_POST_RENDER; + if (enable) { + this.node._renderFlag |= flag; + this.markForValidate(); + } else enable || (this.node._renderFlag &= ~flag); + }, + disableRender: function disableRender() { + this.node._renderFlag &= ~(RenderFlow.FLAG_RENDER | RenderFlow.FLAG_UPDATE_RENDER_DATA | RenderFlow.FLAG_POST_RENDER); + } + }); + cc.Mask = module.exports = Mask; + }), { + "../../renderer/gfx": 372, + "../assets/material/material-variant": 131, + "../graphics/graphics": 202, + "../renderer/render-flow": 272, + "../utils/misc": 324, + "../value-types/mat4": 341, + "../value-types/vec2": 348, + "./CCRenderComponent": 160 + }], + 156: [(function (require, module, exports) { + "use strict"; + var RenderComponent = require("../components/CCRenderComponent"); + var BlendFunc = require("../../core/utils/blend-func"); + var MotionStreak = cc.Class({ + name: "cc.MotionStreak", + extends: RenderComponent, + mixins: [BlendFunc], + editor: false, + ctor: function ctor() { + this._points = []; + }, + properties: { + preview: { + default: false, + editorOnly: true, + notify: false, + animatable: false + }, + _fadeTime: 1, + fadeTime: { + get: function get() { + return this._fadeTime; + }, + set: function set(value) { + this._fadeTime = value; + this.reset(); + }, + animatable: false, + tooltip: false + }, + _minSeg: 1, + minSeg: { + get: function get() { + return this._minSeg; + }, + set: function set(value) { + this._minSeg = value; + }, + animatable: false, + tooltip: false + }, + _stroke: 64, + stroke: { + get: function get() { + return this._stroke; + }, + set: function set(value) { + this._stroke = value; + }, + animatable: false, + tooltip: false + }, + _texture: { + default: null, + type: cc.Texture2D + }, + texture: { + get: function get() { + return this._texture; + }, + set: function set(value) { + if (this._texture === value) return; + this._texture = value; + this._updateMaterial(); + }, + type: cc.Texture2D, + animatable: false, + tooltip: false + }, + _color: cc.Color.WHITE, + color: { + get: function get() { + return this._color.clone(); + }, + set: function set(value) { + this._color.equals(value) || this._color.set(value); + }, + type: cc.Color, + tooltip: false + }, + _fastMode: false, + fastMode: { + get: function get() { + return this._fastMode; + }, + set: function set(value) { + this._fastMode = value; + }, + animatable: false, + tooltip: false + } + }, + onEnable: function onEnable() { + this._super(); + this.reset(); + }, + _updateMaterial: function _updateMaterial() { + var material = this.getMaterial(0); + material && material.setProperty("texture", this._texture); + BlendFunc.prototype._updateMaterial.call(this); + }, + onFocusInEditor: false, + onLostFocusInEditor: false, + reset: function reset() { + this._points.length = 0; + this._assembler && this._assembler._renderData.clear(); + false; + }, + lateUpdate: function lateUpdate(dt) { + this._assembler && this._assembler.update(this, dt); + } + }); + cc.MotionStreak = module.exports = MotionStreak; + }), { + "../../core/utils/blend-func": 318, + "../components/CCRenderComponent": 160 + }], + 157: [(function (require, module, exports) { + "use strict"; + var SizeMode = cc.Enum({ + Unified: 0, + Free: 1 + }); + var Direction = cc.Enum({ + Horizontal: 0, + Vertical: 1 + }); + var EventType = cc.Enum({ + PAGE_TURNING: 0 + }); + var PageView = cc.Class({ + name: "cc.PageView", + extends: cc.ScrollView, + editor: false, + ctor: function ctor() { + this._curPageIdx = 0; + this._lastPageIdx = 0; + this._pages = []; + this._initContentPos = cc.v2(); + this._scrollCenterOffsetX = []; + this._scrollCenterOffsetY = []; + }, + properties: { + sizeMode: { + default: SizeMode.Unified, + type: SizeMode, + tooltip: false, + notify: function notify() { + this._syncSizeMode(); + } + }, + direction: { + default: Direction.Horizontal, + type: Direction, + tooltip: false, + notify: function notify() { + this._syncScrollDirection(); + } + }, + scrollThreshold: { + default: .5, + type: cc.Float, + slide: true, + range: [0, 1, .01], + tooltip: false + }, + autoPageTurningThreshold: { + default: 100, + type: cc.Float, + tooltip: false + }, + pageTurningEventTiming: { + default: .1, + type: cc.Float, + range: [0, 1, .01], + tooltip: false + }, + indicator: { + default: null, + type: cc.PageViewIndicator, + tooltip: false, + notify: function notify() { + this.indicator && this.indicator.setPageView(this); + } + }, + pageTurningSpeed: { + default: .3, + type: cc.Float, + tooltip: false + }, + pageEvents: { + default: [], + type: cc.Component.EventHandler, + tooltip: false + } + }, + statics: { + SizeMode: SizeMode, + Direction: Direction, + EventType: EventType + }, + onEnable: function onEnable() { + this._super(); + this.node.on(cc.Node.EventType.SIZE_CHANGED, this._updateAllPagesSize, this); + true; + this.node.on("scroll-ended-with-threshold", this._dispatchPageTurningEvent, this); + }, + onDisable: function onDisable() { + this._super(); + this.node.off(cc.Node.EventType.SIZE_CHANGED, this._updateAllPagesSize, this); + true; + this.node.off("scroll-ended-with-threshold", this._dispatchPageTurningEvent, this); + }, + onLoad: function onLoad() { + this._initPages(); + this.indicator && this.indicator.setPageView(this); + }, + getCurrentPageIndex: function getCurrentPageIndex() { + return this._curPageIdx; + }, + setCurrentPageIndex: function setCurrentPageIndex(index) { + this.scrollToPage(index, true); + }, + getPages: function getPages() { + return this._pages; + }, + addPage: function addPage(page) { + if (!page || -1 !== this._pages.indexOf(page) || !this.content) return; + this.content.addChild(page); + this._pages.push(page); + this._updatePageView(); + }, + insertPage: function insertPage(page, index) { + if (index < 0 || !page || -1 !== this._pages.indexOf(page) || !this.content) return; + var pageCount = this._pages.length; + if (index >= pageCount) this.addPage(page); else { + this._pages.splice(index, 0, page); + this.content.addChild(page); + this._updatePageView(); + } + }, + removePage: function removePage(page) { + if (!page || !this.content) return; + var index = this._pages.indexOf(page); + if (-1 === index) { + cc.warnID(4300, page.name); + return; + } + this.removePageAtIndex(index); + }, + removePageAtIndex: function removePageAtIndex(index) { + var pageList = this._pages; + if (index < 0 || index >= pageList.length) return; + var page = pageList[index]; + if (!page) return; + this.content.removeChild(page); + pageList.splice(index, 1); + this._updatePageView(); + }, + removeAllPages: function removeAllPages() { + if (!this.content) return; + var locPages = this._pages; + for (var i = 0, len = locPages.length; i < len; i++) this.content.removeChild(locPages[i]); + this._pages.length = 0; + this._updatePageView(); + }, + scrollToPage: function scrollToPage(idx, timeInSecond) { + if (idx < 0 || idx >= this._pages.length) return; + timeInSecond = void 0 !== timeInSecond ? timeInSecond : .3; + this._curPageIdx = idx; + this.scrollToOffset(this._moveOffsetValue(idx), timeInSecond, true); + this.indicator && this.indicator._changedState(); + }, + getScrollEndedEventTiming: function getScrollEndedEventTiming() { + return this.pageTurningEventTiming; + }, + _syncScrollDirection: function _syncScrollDirection() { + this.horizontal = this.direction === Direction.Horizontal; + this.vertical = this.direction === Direction.Vertical; + }, + _syncSizeMode: function _syncSizeMode() { + if (!this.content) return; + var layout = this.content.getComponent(cc.Layout); + if (layout) { + if (this.sizeMode === SizeMode.Free && this._pages.length > 0) { + var lastPage = this._pages[this._pages.length - 1]; + if (this.direction === Direction.Horizontal) { + layout.paddingLeft = (this._view.width - this._pages[0].width) / 2; + layout.paddingRight = (this._view.width - lastPage.width) / 2; + } else if (this.direction === Direction.Vertical) { + layout.paddingTop = (this._view.height - this._pages[0].height) / 2; + layout.paddingBottom = (this._view.height - lastPage.height) / 2; + } + } + layout.updateLayout(); + } + }, + _updatePageView: function _updatePageView() { + var layout = this.content.getComponent(cc.Layout); + layout && layout.enabled && layout.updateLayout(); + var pageCount = this._pages.length; + if (this._curPageIdx >= pageCount) { + this._curPageIdx = 0 === pageCount ? 0 : pageCount - 1; + this._lastPageIdx = this._curPageIdx; + } + var contentPos = this._initContentPos; + for (var i = 0; i < pageCount; ++i) { + var page = this._pages[i]; + page.setSiblingIndex(i); + this.direction === Direction.Horizontal ? this._scrollCenterOffsetX[i] = Math.abs(contentPos.x + page.x) : this._scrollCenterOffsetY[i] = Math.abs(contentPos.y + page.y); + } + this.indicator && this.indicator._refresh(); + }, + _updateAllPagesSize: function _updateAllPagesSize() { + if (this.sizeMode !== SizeMode.Unified || !this._view) return; + var locPages = this._pages; + var selfSize = this._view.getContentSize(); + for (var i = 0, len = locPages.length; i < len; i++) locPages[i].setContentSize(selfSize); + }, + _initPages: function _initPages() { + if (!this.content) return; + this._initContentPos = this.content.position; + var children = this.content.children; + for (var i = 0; i < children.length; ++i) { + var page = children[i]; + if (this._pages.indexOf(page) >= 0) continue; + this._pages.push(page); + } + this._syncScrollDirection(); + this._syncSizeMode(); + this._updatePageView(); + }, + _dispatchPageTurningEvent: function _dispatchPageTurningEvent() { + if (this._lastPageIdx === this._curPageIdx) return; + this._lastPageIdx = this._curPageIdx; + cc.Component.EventHandler.emitEvents(this.pageEvents, this, EventType.PAGE_TURNING); + this.node.emit("page-turning", this); + }, + _isScrollable: function _isScrollable(offset, index, nextIndex) { + if (this.sizeMode === SizeMode.Free) { + var curPageCenter, nextPageCenter; + if (this.direction === Direction.Horizontal) { + curPageCenter = this._scrollCenterOffsetX[index]; + nextPageCenter = this._scrollCenterOffsetX[nextIndex]; + return Math.abs(offset.x) >= Math.abs(curPageCenter - nextPageCenter) * this.scrollThreshold; + } + if (this.direction === Direction.Vertical) { + curPageCenter = this._scrollCenterOffsetY[index]; + nextPageCenter = this._scrollCenterOffsetY[nextIndex]; + return Math.abs(offset.y) >= Math.abs(curPageCenter - nextPageCenter) * this.scrollThreshold; + } + } else { + if (this.direction === Direction.Horizontal) return Math.abs(offset.x) >= this._view.width * this.scrollThreshold; + if (this.direction === Direction.Vertical) return Math.abs(offset.y) >= this._view.height * this.scrollThreshold; + } + }, + _isQuicklyScrollable: function _isQuicklyScrollable(touchMoveVelocity) { + if (this.direction === Direction.Horizontal) { + if (Math.abs(touchMoveVelocity.x) > this.autoPageTurningThreshold) return true; + } else if (this.direction === Direction.Vertical && Math.abs(touchMoveVelocity.y) > this.autoPageTurningThreshold) return true; + return false; + }, + _moveOffsetValue: function _moveOffsetValue(idx) { + var offset = cc.v2(0, 0); + this.sizeMode === SizeMode.Free ? this.direction === Direction.Horizontal ? offset.x = this._scrollCenterOffsetX[idx] : this.direction === Direction.Vertical && (offset.y = this._scrollCenterOffsetY[idx]) : this.direction === Direction.Horizontal ? offset.x = idx * this._view.width : this.direction === Direction.Vertical && (offset.y = idx * this._view.height); + return offset; + }, + _getDragDirection: function _getDragDirection(moveOffset) { + if (this.direction === Direction.Horizontal) { + if (0 === moveOffset.x) return 0; + return moveOffset.x > 0 ? 1 : -1; + } + if (this.direction === Direction.Vertical) { + if (0 === moveOffset.y) return 0; + return moveOffset.y < 0 ? 1 : -1; + } + }, + _handleReleaseLogic: function _handleReleaseLogic(touch) { + this._autoScrollToPage(); + if (this._scrolling) { + this._scrolling = false; + this._autoScrolling || this._dispatchEvent("scroll-ended"); + } + }, + _autoScrollToPage: function _autoScrollToPage() { + var bounceBackStarted = this._startBounceBackIfNeeded(); + if (bounceBackStarted) { + var bounceBackAmount = this._getHowMuchOutOfBoundary(); + bounceBackAmount = this._clampDelta(bounceBackAmount); + (bounceBackAmount.x > 0 || bounceBackAmount.y < 0) && (this._curPageIdx = 0 === this._pages.length ? 0 : this._pages.length - 1); + (bounceBackAmount.x < 0 || bounceBackAmount.y > 0) && (this._curPageIdx = 0); + this.indicator && this.indicator._changedState(); + } else { + var moveOffset = this._touchBeganPosition.sub(this._touchEndPosition); + var index = this._curPageIdx, nextIndex = index + this._getDragDirection(moveOffset); + var timeInSecond = this.pageTurningSpeed * Math.abs(index - nextIndex); + if (nextIndex < this._pages.length) { + if (this._isScrollable(moveOffset, index, nextIndex)) { + this.scrollToPage(nextIndex, timeInSecond); + return; + } + var touchMoveVelocity = this._calculateTouchMoveVelocity(); + if (this._isQuicklyScrollable(touchMoveVelocity)) { + this.scrollToPage(nextIndex, timeInSecond); + return; + } + } + this.scrollToPage(index, timeInSecond); + } + }, + _onTouchBegan: function _onTouchBegan(event, captureListeners) { + this._touchBeganPosition = event.touch.getLocation(); + this._super(event, captureListeners); + }, + _onTouchMoved: function _onTouchMoved(event, captureListeners) { + this._super(event, captureListeners); + }, + _onTouchEnded: function _onTouchEnded(event, captureListeners) { + this._touchEndPosition = event.touch.getLocation(); + this._super(event, captureListeners); + }, + _onTouchCancelled: function _onTouchCancelled(event, captureListeners) { + this._touchEndPosition = event.touch.getLocation(); + this._super(event, captureListeners); + }, + _onMouseWheel: function _onMouseWheel() { } + }); + cc.PageView = module.exports = PageView; + }), {}], + 158: [(function (require, module, exports) { + "use strict"; + var Direction = cc.Enum({ + HORIZONTAL: 0, + VERTICAL: 1 + }); + var PageViewIndicator = cc.Class({ + name: "cc.PageViewIndicator", + extends: require("./CCComponent"), + editor: false, + properties: { + _layout: null, + _pageView: null, + _indicators: [], + spriteFrame: { + default: null, + type: cc.SpriteFrame, + tooltip: false + }, + direction: { + default: Direction.HORIZONTAL, + type: Direction, + tooltip: false + }, + cellSize: { + default: cc.size(20, 20), + tooltip: false + }, + spacing: { + default: 0, + tooltip: false + } + }, + statics: { + Direction: Direction + }, + onLoad: function onLoad() { + this._updateLayout(); + }, + setPageView: function setPageView(target) { + this._pageView = target; + this._refresh(); + }, + _updateLayout: function _updateLayout() { + this._layout = this.getComponent(cc.Layout); + this._layout || (this._layout = this.addComponent(cc.Layout)); + if (this.direction === Direction.HORIZONTAL) { + this._layout.type = cc.Layout.Type.HORIZONTAL; + this._layout.spacingX = this.spacing; + } else if (this.direction === Direction.VERTICAL) { + this._layout.type = cc.Layout.Type.VERTICAL; + this._layout.spacingY = this.spacing; + } + this._layout.resizeMode = cc.Layout.ResizeMode.CONTAINER; + }, + _createIndicator: function _createIndicator() { + var node = new cc.Node(); + var sprite = node.addComponent(cc.Sprite); + sprite.spriteFrame = this.spriteFrame; + sprite.sizeMode = cc.Sprite.SizeMode.CUSTOM; + node.parent = this.node; + node.width = this.cellSize.width; + node.height = this.cellSize.height; + return node; + }, + _changedState: function _changedState() { + var indicators = this._indicators; + if (0 === indicators.length) return; + var idx = this._pageView._curPageIdx; + if (idx >= indicators.length) return; + for (var i = 0; i < indicators.length; ++i) { + var node = indicators[i]; + node.opacity = 127.5; + } + indicators[idx].opacity = 255; + }, + _refresh: function _refresh() { + if (!this._pageView) return; + var indicators = this._indicators; + var pages = this._pageView.getPages(); + if (pages.length === indicators.length) return; + var i = 0; + if (pages.length > indicators.length) for (i = 0; i < pages.length; ++i) indicators[i] || (indicators[i] = this._createIndicator()); else { + var count = indicators.length - pages.length; + for (i = count; i > 0; --i) { + var node = indicators[i - 1]; + this.node.removeChild(node); + indicators.splice(i - 1, 1); + } + } + this._layout && this._layout.enabledInHierarchy && this._layout.updateLayout(); + this._changedState(); + } + }); + cc.PageViewIndicator = module.exports = PageViewIndicator; + }), { + "./CCComponent": 149 + }], + 159: [(function (require, module, exports) { + "use strict"; + var misc = require("../utils/misc"); + var Component = require("./CCComponent"); + var Mode = cc.Enum({ + HORIZONTAL: 0, + VERTICAL: 1, + FILLED: 2 + }); + var ProgressBar = cc.Class({ + name: "cc.ProgressBar", + extends: Component, + editor: false, + _initBarSprite: function _initBarSprite() { + if (this.barSprite) { + var entity = this.barSprite.node; + if (!entity) return; + var nodeSize = this.node.getContentSize(); + var nodeAnchor = this.node.getAnchorPoint(); + var entitySize = entity.getContentSize(); + entity.parent === this.node && this.node.setContentSize(entitySize); + this.barSprite.fillType === cc.Sprite.FillType.RADIAL && (this.mode = Mode.FILLED); + var barSpriteSize = entity.getContentSize(); + this.mode === Mode.HORIZONTAL ? this.totalLength = barSpriteSize.width : this.mode === Mode.VERTICAL ? this.totalLength = barSpriteSize.height : this.totalLength = this.barSprite.fillRange; + if (entity.parent === this.node) { + var x = -nodeSize.width * nodeAnchor.x; + var y = 0; + entity.setPosition(cc.v2(x, y)); + } + } + }, + _updateBarStatus: function _updateBarStatus() { + if (this.barSprite) { + var entity = this.barSprite.node; + if (!entity) return; + var entityAnchorPoint = entity.getAnchorPoint(); + var entitySize = entity.getContentSize(); + var entityPosition = entity.getPosition(); + var anchorPoint = cc.v2(0, .5); + var progress = misc.clamp01(this.progress); + var actualLenth = this.totalLength * progress; + var finalContentSize; + var totalWidth; + var totalHeight; + switch (this.mode) { + case Mode.HORIZONTAL: + this.reverse && (anchorPoint = cc.v2(1, .5)); + finalContentSize = cc.size(actualLenth, entitySize.height); + totalWidth = this.totalLength; + totalHeight = entitySize.height; + break; + + case Mode.VERTICAL: + anchorPoint = this.reverse ? cc.v2(.5, 1) : cc.v2(.5, 0); + finalContentSize = cc.size(entitySize.width, actualLenth); + totalWidth = entitySize.width; + totalHeight = this.totalLength; + } + if (this.mode === Mode.FILLED) if (this.barSprite.type !== cc.Sprite.Type.FILLED) cc.warn("ProgressBar FILLED mode only works when barSprite's Type is FILLED!"); else { + this.reverse && (actualLenth *= -1); + this.barSprite.fillRange = actualLenth; + } else if (this.barSprite.type !== cc.Sprite.Type.FILLED) { + var anchorOffsetX = anchorPoint.x - entityAnchorPoint.x; + var anchorOffsetY = anchorPoint.y - entityAnchorPoint.y; + var finalPosition = cc.v2(totalWidth * anchorOffsetX, totalHeight * anchorOffsetY); + entity.setPosition(entityPosition.x + finalPosition.x, entityPosition.y + finalPosition.y); + entity.setAnchorPoint(anchorPoint); + entity.setContentSize(finalContentSize); + } else cc.warn("ProgressBar non-FILLED mode only works when barSprite's Type is non-FILLED!"); + } + }, + properties: { + barSprite: { + default: null, + type: cc.Sprite, + tooltip: false, + notify: function notify() { + this._initBarSprite(); + }, + animatable: false + }, + mode: { + default: Mode.HORIZONTAL, + type: Mode, + tooltip: false, + notify: function notify() { + if (this.barSprite) { + var entity = this.barSprite.node; + if (!entity) return; + var entitySize = entity.getContentSize(); + this.mode === Mode.HORIZONTAL ? this.totalLength = entitySize.width : this.mode === Mode.VERTICAL ? this.totalLength = entitySize.height : this.mode === Mode.FILLED && (this.totalLength = this.barSprite.fillRange); + } + }, + animatable: false + }, + _N$totalLength: 1, + totalLength: { + range: [0, Number.MAX_VALUE], + tooltip: false, + get: function get() { + return this._N$totalLength; + }, + set: function set(value) { + this.mode === Mode.FILLED && (value = misc.clamp01(value)); + this._N$totalLength = value; + this._updateBarStatus(); + } + }, + progress: { + default: 1, + type: cc.Float, + range: [0, 1, .1], + slide: true, + tooltip: false, + notify: function notify() { + this._updateBarStatus(); + } + }, + reverse: { + default: false, + tooltip: false, + notify: function notify() { + this.barSprite && (this.barSprite.fillStart = 1 - this.barSprite.fillStart); + this._updateBarStatus(); + }, + animatable: false + } + }, + statics: { + Mode: Mode + } + }); + cc.ProgressBar = module.exports = ProgressBar; + }), { + "../utils/misc": 324, + "./CCComponent": 149 + }], + 160: [(function (require, module, exports) { + "use strict"; + var _assembler = _interopRequireDefault(require("../renderer/assembler")); + var _materialVariant = _interopRequireDefault(require("../assets/material/material-variant")); + var _valueTypes = require("../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Component = require("./CCComponent"); + var RenderFlow = require("../renderer/render-flow"); + var Material = require("../assets/material/CCMaterial"); + var _temp_color = new _valueTypes.Color(); + var RenderComponent = cc.Class({ + name: "RenderComponent", + extends: Component, + editor: false, + properties: { + _materials: { + default: [], + type: Material + }, + materials: { + get: function get() { + return this._materials; + }, + set: function set(val) { + this._materials = val; + this._activateMaterial(); + }, + type: [Material], + displayName: "Materials", + animatable: false + } + }, + ctor: function ctor() { + this._vertsDirty = true; + this._assembler = null; + }, + _resetAssembler: function _resetAssembler() { + _assembler["default"].init(this); + this._updateColor(); + this.setVertsDirty(); + }, + __preload: function __preload() { + this._resetAssembler(); + this._activateMaterial(); + }, + onEnable: function onEnable() { + this.node._renderComponent && (this.node._renderComponent.enabled = false); + this.node._renderComponent = this; + this.node._renderFlag |= RenderFlow.FLAG_OPACITY_COLOR; + this.setVertsDirty(); + }, + onDisable: function onDisable() { + this.node._renderComponent = null; + this.disableRender(); + }, + onDestroy: function onDestroy() { + var materials = this._materials; + for (var i = 0; i < materials.length; i++) cc.pool.material.put(materials[i]); + materials.length = 0; + cc.pool.assembler.put(this._assembler); + }, + setVertsDirty: function setVertsDirty() { + this._vertsDirty = true; + this.markForRender(true); + }, + _on3DNodeChanged: function _on3DNodeChanged() { + this._resetAssembler(); + }, + _validateRender: function _validateRender() { }, + markForValidate: function markForValidate() { + cc.RenderFlow.registerValidate(this); + }, + markForRender: function markForRender(enable) { + var flag = RenderFlow.FLAG_RENDER | RenderFlow.FLAG_UPDATE_RENDER_DATA; + if (enable) { + this.node._renderFlag |= flag; + this.markForValidate(); + } else this.node._renderFlag &= ~flag; + }, + disableRender: function disableRender() { + this.node._renderFlag &= ~(RenderFlow.FLAG_RENDER | RenderFlow.FLAG_UPDATE_RENDER_DATA); + }, + getMaterial: function getMaterial(index) { + if (index < 0 || index >= this._materials.length) return null; + var material = this._materials[index]; + if (!material) return null; + var instantiated = _materialVariant["default"].create(material, this); + instantiated !== material && this.setMaterial(index, instantiated); + return instantiated; + }, + getMaterials: function getMaterials() { + var materials = this._materials; + for (var i = 0; i < materials.length; i++) materials[i] = _materialVariant["default"].create(materials[i], this); + return materials; + }, + setMaterial: function setMaterial(index, material) { + if (material !== this._materials[index]) { + material = _materialVariant["default"].create(material, this); + this._materials[index] = material; + } + this._updateMaterial(); + this.markForRender(true); + return material; + }, + _getDefaultMaterial: function _getDefaultMaterial() { + return Material.getBuiltinMaterial("2d-sprite"); + }, + _activateMaterial: function _activateMaterial() { + var materials = this._materials; + if (!materials[0]) { + var material = this._getDefaultMaterial(); + materials[0] = material; + } + for (var i = 0; i < materials.length; i++) materials[i] = _materialVariant["default"].create(materials[i], this); + this._updateMaterial(); + }, + _updateMaterial: function _updateMaterial() { }, + _updateColor: function _updateColor() { + if (this._assembler.updateColor) { + var premultiply = this.srcBlendFactor === cc.macro.BlendFactor.ONE; + premultiply && _valueTypes.Color.premultiplyAlpha(_temp_color, this.node._color); + var color = premultiply ? _temp_color._val : null; + this._assembler.updateColor(this, color); + } + }, + _checkBacth: function _checkBacth(renderer, cullingMask) { + var material = this._materials[0]; + if (material && material.getHash() !== renderer.material.getHash() || renderer.cullingMask !== cullingMask) { + renderer._flush(); + renderer.node = material.getDefine("CC_USE_MODEL") ? this.node : renderer._dummyNode; + renderer.material = material; + renderer.cullingMask = cullingMask; + } + } + }); + cc.RenderComponent = module.exports = RenderComponent; + }), { + "../assets/material/CCMaterial": 124, + "../assets/material/material-variant": 131, + "../renderer/assembler": 268, + "../renderer/render-flow": 272, + "../value-types": 339, + "./CCComponent": 149 + }], + 161: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + var macro = require("../platform/CCMacro"); + var textUtils = require("../utils/text-utils"); + var HtmlTextParser = require("../utils/html-text-parser"); + var _htmlTextParser = new HtmlTextParser(); + var HorizontalAlign = macro.TextAlignment; + var VerticalAlign = macro.VerticalTextAlignment; + var RichTextChildName = "RICHTEXT_CHILD"; + var RichTextChildImageName = "RICHTEXT_Image_CHILD"; + var CacheMode = cc.Label.CacheMode; + function debounce(func, wait, immediate) { + var timeout; + return function () { + var context = this; + var later = function later() { + timeout = null; + immediate || func.apply(context, arguments); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + callNow && func.apply(context, arguments); + }; + } + var pool = new js.Pool(function (node) { + false; + false; + if (!cc.isValid(node)) return false; + var outline = node.getComponent(cc.LabelOutline); + outline && (outline.width = 0); + return true; + }, 20); + pool.get = function (string, richtext) { + var labelNode = this._get(); + labelNode || (labelNode = new cc.PrivateNode(RichTextChildName)); + labelNode.setPosition(0, 0); + labelNode.setAnchorPoint(.5, .5); + labelNode.skewX = 0; + var labelComponent = labelNode.getComponent(cc.Label); + labelComponent || (labelComponent = labelNode.addComponent(cc.Label)); + labelComponent.string = ""; + labelComponent.horizontalAlign = HorizontalAlign.LEFT; + labelComponent.verticalAlign = VerticalAlign.CENTER; + labelComponent._forceUseCanvas = true; + return labelNode; + }; + var RichText = cc.Class({ + name: "cc.RichText", + extends: cc.Component, + ctor: function ctor() { + this._textArray = null; + this._labelSegments = []; + this._labelSegmentsCache = []; + this._linesWidth = []; + false; + this._updateRichTextStatus = this._updateRichText; + }, + editor: false, + properties: { + string: { + default: "RichText", + multiline: true, + tooltip: false, + notify: function notify() { + this._updateRichTextStatus(); + } + }, + horizontalAlign: { + default: HorizontalAlign.LEFT, + type: HorizontalAlign, + tooltip: false, + animatable: false, + notify: function notify(oldValue) { + if (this.horizontalAlign === oldValue) return; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, + fontSize: { + default: 40, + tooltip: false, + notify: function notify(oldValue) { + if (this.fontSize === oldValue) return; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, + _fontFamily: "Arial", + fontFamily: { + tooltip: false, + get: function get() { + return this._fontFamily; + }, + set: function set(value) { + if (this._fontFamily === value) return; + this._fontFamily = value; + this._layoutDirty = true; + this._updateRichTextStatus(); + }, + animatable: false + }, + font: { + default: null, + type: cc.TTFFont, + tooltip: false, + notify: function notify(oldValue) { + if (this.font === oldValue) return; + this._layoutDirty = true; + if (this.font) { + false; + this.useSystemFont = false; + this._onTTFLoaded(); + } else this.useSystemFont = true; + this._updateRichTextStatus(); + } + }, + _isSystemFontUsed: true, + useSystemFont: { + get: function get() { + return this._isSystemFontUsed; + }, + set: function set(value) { + if (this._isSystemFontUsed === value) return; + this._isSystemFontUsed = value; + false; + this._layoutDirty = true; + this._updateRichTextStatus(); + }, + animatable: false, + tooltip: false + }, + cacheMode: { + default: CacheMode.NONE, + type: CacheMode, + tooltip: false, + notify: function notify(oldValue) { + if (this.cacheMode === oldValue) return; + this._updateRichTextStatus(); + }, + animatable: false + }, + maxWidth: { + default: 0, + tooltip: false, + notify: function notify(oldValue) { + if (this.maxWidth === oldValue) return; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, + lineHeight: { + default: 40, + tooltip: false, + notify: function notify(oldValue) { + if (this.lineHeight === oldValue) return; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, + imageAtlas: { + default: null, + type: cc.SpriteAtlas, + tooltip: false, + notify: function notify(oldValue) { + if (this.imageAtlas === oldValue) return; + this._layoutDirty = true; + this._updateRichTextStatus(); + } + }, + handleTouchEvent: { + default: true, + tooltip: false, + notify: function notify(oldValue) { + if (this.handleTouchEvent === oldValue) return; + this.enabledInHierarchy && (this.handleTouchEvent ? this._addEventListeners() : this._removeEventListeners()); + } + } + }, + statics: { + HorizontalAlign: HorizontalAlign, + VerticalAlign: VerticalAlign + }, + onEnable: function onEnable() { + this.handleTouchEvent && this._addEventListeners(); + this._updateRichText(); + this._activateChildren(true); + }, + onDisable: function onDisable() { + this.handleTouchEvent && this._removeEventListeners(); + this._activateChildren(false); + }, + start: function start() { + this._onTTFLoaded(); + }, + _onColorChanged: function _onColorChanged(parentColor) { + var children = this.node.children; + children.forEach((function (childNode) { + childNode.color = parentColor; + })); + }, + _addEventListeners: function _addEventListeners() { + this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(cc.Node.EventType.COLOR_CHANGED, this._onColorChanged, this); + }, + _removeEventListeners: function _removeEventListeners() { + this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(cc.Node.EventType.COLOR_CHANGED, this._onColorChanged, this); + }, + _updateLabelSegmentTextAttributes: function _updateLabelSegmentTextAttributes() { + this._labelSegments.forEach(function (item) { + this._applyTextAttribute(item, null, true); + }.bind(this)); + }, + _createFontLabel: function _createFontLabel(string) { + return pool.get(string, this); + }, + _onTTFLoaded: function _onTTFLoaded() { + if (this.font instanceof cc.TTFFont) if (this.font._nativeAsset) { + this._layoutDirty = true; + this._updateRichText(); + } else { + var self = this; + cc.assetManager.postLoadNative(this.font, (function (err) { + self._layoutDirty = true; + self._updateRichText(); + })); + } else { + this._layoutDirty = true; + this._updateRichText(); + } + }, + _measureText: function _measureText(styleIndex, string) { + var self = this; + var func = function func(string) { + var label; + if (0 === self._labelSegmentsCache.length) { + label = self._createFontLabel(string); + self._labelSegmentsCache.push(label); + } else label = self._labelSegmentsCache[0]; + label._styleIndex = styleIndex; + self._applyTextAttribute(label, string, true); + var labelSize = label.getContentSize(); + return labelSize.width; + }; + return string ? func(string) : func; + }, + _onTouchEnded: function _onTouchEnded(event) { + var _this = this; + var components = this.node.getComponents(cc.Component); + var _loop = function _loop(i) { + var labelSegment = _this._labelSegments[i]; + var clickHandler = labelSegment._clickHandler; + var clickParam = labelSegment._clickParam; + if (clickHandler && _this._containsTouchLocation(labelSegment, event.touch.getLocation())) { + components.forEach((function (component) { + component.enabledInHierarchy && component[clickHandler] && component[clickHandler](event, clickParam); + })); + event.stopPropagation(); + } + }; + for (var i = 0; i < this._labelSegments.length; ++i) _loop(i); + }, + _containsTouchLocation: function _containsTouchLocation(label, point) { + var myRect = label.getBoundingBoxToWorld(); + return myRect.contains(point); + }, + _resetState: function _resetState() { + var children = this.node.children; + for (var i = children.length - 1; i >= 0; i--) { + var child = children[i]; + if (child.name === RichTextChildName || child.name === RichTextChildImageName) { + child.parent === this.node ? child.parent = null : children.splice(i, 1); + child.name === RichTextChildName && pool.put(child); + } + } + this._labelSegments.length = 0; + this._labelSegmentsCache.length = 0; + this._linesWidth.length = 0; + this._lineOffsetX = 0; + this._lineCount = 1; + this._labelWidth = 0; + this._labelHeight = 0; + this._layoutDirty = true; + }, + onRestore: false, + _activateChildren: function _activateChildren(active) { + for (var i = this.node.children.length - 1; i >= 0; i--) { + var child = this.node.children[i]; + child.name !== RichTextChildName && child.name !== RichTextChildImageName || (child.active = active); + } + }, + _addLabelSegment: function _addLabelSegment(stringToken, styleIndex) { + var labelSegment; + labelSegment = 0 === this._labelSegmentsCache.length ? this._createFontLabel(stringToken) : this._labelSegmentsCache.pop(); + labelSegment._styleIndex = styleIndex; + labelSegment._lineCount = this._lineCount; + labelSegment.active = this.node.active; + labelSegment.setAnchorPoint(0, 0); + this._applyTextAttribute(labelSegment, stringToken); + this.node.addChild(labelSegment); + this._labelSegments.push(labelSegment); + return labelSegment; + }, + _updateRichTextWithMaxWidth: function _updateRichTextWithMaxWidth(labelString, labelWidth, styleIndex) { + var fragmentWidth = labelWidth; + var labelSegment; + if (this._lineOffsetX > 0 && fragmentWidth + this._lineOffsetX > this.maxWidth) { + var checkStartIndex = 0; + while (this._lineOffsetX <= this.maxWidth) { + var checkEndIndex = this._getFirstWordLen(labelString, checkStartIndex, labelString.length); + var checkString = labelString.substr(checkStartIndex, checkEndIndex); + var checkStringWidth = this._measureText(styleIndex, checkString); + if (!(this._lineOffsetX + checkStringWidth <= this.maxWidth)) { + if (checkStartIndex > 0) { + var remainingString = labelString.substr(0, checkStartIndex); + this._addLabelSegment(remainingString, styleIndex); + labelString = labelString.substr(checkStartIndex, labelString.length); + fragmentWidth = this._measureText(styleIndex, labelString); + } + this._updateLineInfo(); + break; + } + this._lineOffsetX += checkStringWidth; + checkStartIndex += checkEndIndex; + } + } + if (fragmentWidth > this.maxWidth) { + var fragments = textUtils.fragmentText(labelString, fragmentWidth, this.maxWidth, this._measureText(styleIndex)); + for (var k = 0; k < fragments.length; ++k) { + var splitString = fragments[k]; + labelSegment = this._addLabelSegment(splitString, styleIndex); + var labelSize = labelSegment.getContentSize(); + this._lineOffsetX += labelSize.width; + fragments.length > 1 && k < fragments.length - 1 && this._updateLineInfo(); + } + } else { + this._lineOffsetX += fragmentWidth; + this._addLabelSegment(labelString, styleIndex); + } + }, + _isLastComponentCR: function _isLastComponentCR(stringToken) { + return stringToken.length - 1 === stringToken.lastIndexOf("\n"); + }, + _updateLineInfo: function _updateLineInfo() { + this._linesWidth.push(this._lineOffsetX); + this._lineOffsetX = 0; + this._lineCount++; + }, + _needsUpdateTextLayout: function _needsUpdateTextLayout(newTextArray) { + if (this._layoutDirty || !this._textArray || !newTextArray) return true; + if (this._textArray.length !== newTextArray.length) return true; + for (var i = 0; i < this._textArray.length; ++i) { + var oldItem = this._textArray[i]; + var newItem = newTextArray[i]; + if (oldItem.text !== newItem.text) return true; + var oldStyle = oldItem.style, newStyle = newItem.style; + if (oldStyle) { + if (newStyle) { + if (!oldStyle.outline !== !newStyle.outline) return true; + if (oldStyle.size !== newStyle.size || !oldStyle.italic !== !newStyle.italic || oldStyle.isImage !== newStyle.isImage) return true; + if (oldStyle.src !== newStyle.src || oldStyle.imageAlign !== newStyle.imageAlign || oldStyle.imageHeight !== newStyle.imageHeight || oldStyle.imageWidth !== newStyle.imageWidth || oldStyle.imageOffset !== newStyle.imageOffset) return true; + } else if (oldStyle.size || oldStyle.italic || oldStyle.isImage || oldStyle.outline) return true; + } else if (newStyle && (newStyle.size || newStyle.italic || newStyle.isImage || newStyle.outline)) return true; + } + return false; + }, + _addRichTextImageElement: function _addRichTextImageElement(richTextElement) { + var spriteFrameName = richTextElement.style.src; + var spriteFrame = this.imageAtlas.getSpriteFrame(spriteFrameName); + if (spriteFrame) { + var spriteNode = new cc.PrivateNode(RichTextChildImageName); + var spriteComponent = spriteNode.addComponent(cc.Sprite); + switch (richTextElement.style.imageAlign) { + case "top": + spriteNode.setAnchorPoint(0, 1); + break; + + case "center": + spriteNode.setAnchorPoint(0, .5); + break; + + default: + spriteNode.setAnchorPoint(0, 0); + } + richTextElement.style.imageOffset && (spriteNode._imageOffset = richTextElement.style.imageOffset); + spriteComponent.type = cc.Sprite.Type.SLICED; + spriteComponent.sizeMode = cc.Sprite.SizeMode.CUSTOM; + this.node.addChild(spriteNode); + this._labelSegments.push(spriteNode); + var spriteRect = spriteFrame.getRect(); + var scaleFactor = 1; + var spriteWidth = spriteRect.width; + var spriteHeight = spriteRect.height; + var expectWidth = richTextElement.style.imageWidth; + var expectHeight = richTextElement.style.imageHeight; + if (expectHeight > 0) { + scaleFactor = expectHeight / spriteHeight; + spriteWidth *= scaleFactor; + spriteHeight *= scaleFactor; + } else { + scaleFactor = this.lineHeight / spriteHeight; + spriteWidth *= scaleFactor; + spriteHeight *= scaleFactor; + } + expectWidth > 0 && (spriteWidth = expectWidth); + if (this.maxWidth > 0) { + this._lineOffsetX + spriteWidth > this.maxWidth && this._updateLineInfo(); + this._lineOffsetX += spriteWidth; + } else { + this._lineOffsetX += spriteWidth; + this._lineOffsetX > this._labelWidth && (this._labelWidth = this._lineOffsetX); + } + spriteComponent.spriteFrame = spriteFrame; + spriteNode.setContentSize(spriteWidth, spriteHeight); + spriteNode._lineCount = this._lineCount; + if (richTextElement.style.event) { + richTextElement.style.event.click && (spriteNode._clickHandler = richTextElement.style.event.click); + richTextElement.style.event.param ? spriteNode._clickParam = richTextElement.style.event.param : spriteNode._clickParam = ""; + } else spriteNode._clickHandler = null; + } else cc.warnID(4400); + }, + _updateRichText: function _updateRichText() { + if (!this.enabledInHierarchy) return; + var newTextArray = _htmlTextParser.parse(this.string); + if (!this._needsUpdateTextLayout(newTextArray)) { + this._textArray = newTextArray; + this._updateLabelSegmentTextAttributes(); + return; + } + this._textArray = newTextArray; + this._resetState(); + var lastEmptyLine = false; + var label; + var labelSize; + for (var i = 0; i < this._textArray.length; ++i) { + var richTextElement = this._textArray[i]; + var text = richTextElement.text; + if ("" === text) { + if (richTextElement.style && richTextElement.style.newline) { + this._updateLineInfo(); + continue; + } + if (richTextElement.style && richTextElement.style.isImage && this.imageAtlas) { + this._addRichTextImageElement(richTextElement); + continue; + } + } + var multilineTexts = text.split("\n"); + for (var j = 0; j < multilineTexts.length; ++j) { + var labelString = multilineTexts[j]; + if ("" === labelString) { + if (this._isLastComponentCR(text) && j === multilineTexts.length - 1) continue; + this._updateLineInfo(); + lastEmptyLine = true; + continue; + } + lastEmptyLine = false; + if (this.maxWidth > 0) { + var labelWidth = this._measureText(i, labelString); + this._updateRichTextWithMaxWidth(labelString, labelWidth, i); + multilineTexts.length > 1 && j < multilineTexts.length - 1 && this._updateLineInfo(); + } else { + label = this._addLabelSegment(labelString, i); + labelSize = label.getContentSize(); + this._lineOffsetX += labelSize.width; + this._lineOffsetX > this._labelWidth && (this._labelWidth = this._lineOffsetX); + multilineTexts.length > 1 && j < multilineTexts.length - 1 && this._updateLineInfo(); + } + } + } + lastEmptyLine || this._linesWidth.push(this._lineOffsetX); + this.maxWidth > 0 && (this._labelWidth = this.maxWidth); + this._labelHeight = (this._lineCount + textUtils.BASELINE_RATIO) * this.lineHeight; + this.node.setContentSize(this._labelWidth, this._labelHeight); + this._updateRichTextPosition(); + this._layoutDirty = false; + }, + _getFirstWordLen: function _getFirstWordLen(text, startIndex, textLen) { + var character = text.charAt(startIndex); + if (textUtils.isUnicodeCJK(character) || textUtils.isUnicodeSpace(character)) return 1; + var len = 1; + for (var index = startIndex + 1; index < textLen; ++index) { + character = text.charAt(index); + if (textUtils.isUnicodeSpace(character) || textUtils.isUnicodeCJK(character)) break; + len++; + } + return len; + }, + _updateRichTextPosition: function _updateRichTextPosition() { + var nextTokenX = 0; + var nextLineIndex = 1; + var totalLineCount = this._lineCount; + for (var i = 0; i < this._labelSegments.length; ++i) { + var label = this._labelSegments[i]; + var lineCount = label._lineCount; + if (lineCount > nextLineIndex) { + nextTokenX = 0; + nextLineIndex = lineCount; + } + var lineOffsetX = 0; + switch (this.horizontalAlign) { + case HorizontalAlign.LEFT: + lineOffsetX = -this._labelWidth / 2; + break; + + case HorizontalAlign.CENTER: + lineOffsetX = -this._linesWidth[lineCount - 1] / 2; + break; + + case HorizontalAlign.RIGHT: + lineOffsetX = this._labelWidth / 2 - this._linesWidth[lineCount - 1]; + } + label.x = nextTokenX + lineOffsetX; + var labelSize = label.getContentSize(); + label.y = this.lineHeight * (totalLineCount - lineCount) - this._labelHeight / 2; + lineCount === nextLineIndex && (nextTokenX += labelSize.width); + var sprite = label.getComponent(cc.Sprite); + if (sprite) { + var lineHeightSet = this.lineHeight; + var lineHeightReal = this.lineHeight * (1 + textUtils.BASELINE_RATIO); + switch (label.anchorY) { + case 1: + label.y += lineHeightSet + (lineHeightReal - lineHeightSet) / 2; + break; + + case .5: + label.y += lineHeightReal / 2; + break; + + default: + label.y += (lineHeightReal - lineHeightSet) / 2; + } + if (label._imageOffset) { + var offsets = label._imageOffset.split(","); + if (1 === offsets.length && offsets[0]) { + var offsetY = parseFloat(offsets[0]); + Number.isInteger(offsetY) && (label.y += offsetY); + } else if (2 === offsets.length) { + var offsetX = parseFloat(offsets[0]); + var _offsetY = parseFloat(offsets[1]); + Number.isInteger(offsetX) && (label.x += offsetX); + Number.isInteger(_offsetY) && (label.y += _offsetY); + } + } + } + var outline = label.getComponent(cc.LabelOutline); + outline && outline.width && (label.y = label.y - outline.width); + } + }, + _convertLiteralColorValue: function _convertLiteralColorValue(color) { + var colorValue = color.toUpperCase(); + if (cc.Color[colorValue]) return cc.Color[colorValue]; + var out = cc.color(); + return out.fromHEX(color); + }, + _applyTextAttribute: function _applyTextAttribute(labelNode, string, force) { + var labelComponent = labelNode.getComponent(cc.Label); + if (!labelComponent) return; + var index = labelNode._styleIndex; + var textStyle = null; + this._textArray[index] && (textStyle = this._textArray[index].style); + textStyle && textStyle.color ? labelNode.color = this._convertLiteralColorValue(textStyle.color) : labelNode.color = this.node.color; + labelComponent.cacheMode = this.cacheMode; + var isAsset = this.font instanceof cc.Font; + isAsset && !this._isSystemFontUsed ? labelComponent.font = this.font : labelComponent.fontFamily = this.fontFamily; + labelComponent.useSystemFont = this._isSystemFontUsed; + labelComponent.lineHeight = this.lineHeight; + labelComponent.enableBold = textStyle && textStyle.bold; + labelComponent.enableItalics = textStyle && textStyle.italic; + textStyle && textStyle.italic && (labelNode.skewX = 12); + labelComponent.enableUnderline = textStyle && textStyle.underline; + if (textStyle && textStyle.outline) { + var labelOutlineComponent = labelNode.getComponent(cc.LabelOutline); + labelOutlineComponent || (labelOutlineComponent = labelNode.addComponent(cc.LabelOutline)); + labelOutlineComponent.color = this._convertLiteralColorValue(textStyle.outline.color); + labelOutlineComponent.width = textStyle.outline.width; + } + textStyle && textStyle.size ? labelComponent.fontSize = textStyle.size : labelComponent.fontSize = this.fontSize; + if (null !== string) { + "string" !== typeof string && (string = "" + string); + labelComponent.string = string; + } + force && labelComponent._forceUpdateRenderData(); + if (textStyle && textStyle.event) { + textStyle.event.click && (labelNode._clickHandler = textStyle.event.click); + textStyle.event.param ? labelNode._clickParam = textStyle.event.param : labelNode._clickParam = ""; + } else labelNode._clickHandler = null; + }, + onDestroy: function onDestroy() { + for (var i = 0; i < this._labelSegments.length; ++i) { + this._labelSegments[i].removeFromParent(); + pool.put(this._labelSegments[i]); + } + } + }); + cc.RichText = module.exports = RichText; + }), { + "../platform/CCMacro": 244, + "../platform/js": 260, + "../utils/html-text-parser": 322, + "../utils/text-utils": 331 + }], + 162: [(function (require, module, exports) { + "use strict"; + var Widget = require("./CCWidget"); + var WidgetManager = require("../base-ui/CCWidgetManager"); + var SafeArea = cc.Class({ + name: "cc.SafeArea", + extends: require("./CCComponent"), + editor: false, + onEnable: function onEnable() { + this.updateArea(); + cc.view.on("canvas-resize", this.updateArea, this); + }, + onDisable: function onDisable() { + cc.view.off("canvas-resize", this.updateArea, this); + }, + updateArea: function updateArea() { + var widget = this.node.getComponent(Widget); + if (!widget) return; + false; + widget.updateAlignment(); + var lastPos = this.node.position; + var lastAnchorPoint = this.node.getAnchorPoint(); + widget.isAlignTop = widget.isAlignBottom = widget.isAlignLeft = widget.isAlignRight = true; + var screenWidth = cc.winSize.width, screenHeight = cc.winSize.height; + var safeArea = cc.sys.getSafeAreaRect(); + widget.top = screenHeight - safeArea.y - safeArea.height; + widget.bottom = safeArea.y; + widget.left = safeArea.x; + widget.right = screenWidth - safeArea.x - safeArea.width; + widget.updateAlignment(); + var curPos = this.node.position; + var anchorX = lastAnchorPoint.x - (curPos.x - lastPos.x) / this.node.width; + var anchorY = lastAnchorPoint.y - (curPos.y - lastPos.y) / this.node.height; + this.node.setAnchorPoint(anchorX, anchorY); + WidgetManager.add(widget); + } + }); + cc.SafeArea = module.exports = SafeArea; + }), { + "../base-ui/CCWidgetManager": 133, + "./CCComponent": 149, + "./CCWidget": 172 + }], + 163: [(function (require, module, exports) { + "use strict"; + var misc = require("../utils/misc"); + var Component = require("./CCComponent"); + var GETTINGSHORTERFACTOR = 20; + var Direction = cc.Enum({ + HORIZONTAL: 0, + VERTICAL: 1 + }); + var Scrollbar = cc.Class({ + name: "cc.Scrollbar", + extends: require("./CCComponent"), + editor: false, + properties: { + _scrollView: null, + _touching: false, + _autoHideRemainingTime: { + default: 0, + serializable: false + }, + _opacity: 255, + handle: { + default: null, + type: cc.Sprite, + tooltip: false, + notify: function notify() { + this._onScroll(cc.v2(0, 0)); + }, + animatable: false + }, + direction: { + default: Direction.HORIZONTAL, + type: Direction, + tooltip: false, + notify: function notify() { + this._onScroll(cc.v2(0, 0)); + }, + animatable: false + }, + enableAutoHide: { + default: true, + animatable: false, + tooltip: false + }, + autoHideTime: { + default: 1, + animatable: false, + tooltip: false + } + }, + statics: { + Direction: Direction + }, + setTargetScrollView: function setTargetScrollView(scrollView) { + this._scrollView = scrollView; + }, + _convertToScrollViewSpace: function _convertToScrollViewSpace(content) { + var scrollViewNode = this._scrollView.node; + var worldSpacePos = content.convertToWorldSpaceAR(cc.v2(-content.anchorX * content.width, -content.anchorY * content.height)); + var scrollViewSpacePos = scrollViewNode.convertToNodeSpaceAR(worldSpacePos); + scrollViewSpacePos.x += scrollViewNode.anchorX * scrollViewNode.width; + scrollViewSpacePos.y += scrollViewNode.anchorY * scrollViewNode.height; + return scrollViewSpacePos; + }, + _setOpacity: function _setOpacity(opacity) { + if (this.handle) { + this.node.opacity = opacity; + this.handle.node.opacity = opacity; + } + }, + _onScroll: function _onScroll(outOfBoundary) { + if (this._scrollView) { + var content = this._scrollView.content; + if (content) { + var contentSize = content.getContentSize(); + var scrollViewSize = this._scrollView.node.getContentSize(); + var handleNodeSize = this.node.getContentSize(); + if (this._conditionalDisableScrollBar(contentSize, scrollViewSize)) return; + if (this.enableAutoHide) { + this._autoHideRemainingTime = this.autoHideTime; + this._setOpacity(this._opacity); + } + var contentMeasure = 0; + var scrollViewMeasure = 0; + var outOfBoundaryValue = 0; + var contentPosition = 0; + var handleNodeMeasure = 0; + if (this.direction === Direction.HORIZONTAL) { + contentMeasure = contentSize.width; + scrollViewMeasure = scrollViewSize.width; + handleNodeMeasure = handleNodeSize.width; + outOfBoundaryValue = outOfBoundary.x; + contentPosition = -this._convertToScrollViewSpace(content).x; + } else if (this.direction === Direction.VERTICAL) { + contentMeasure = contentSize.height; + scrollViewMeasure = scrollViewSize.height; + handleNodeMeasure = handleNodeSize.height; + outOfBoundaryValue = outOfBoundary.y; + contentPosition = -this._convertToScrollViewSpace(content).y; + } + var length = this._calculateLength(contentMeasure, scrollViewMeasure, handleNodeMeasure, outOfBoundaryValue); + var position = this._calculatePosition(contentMeasure, scrollViewMeasure, handleNodeMeasure, contentPosition, outOfBoundaryValue, length); + this._updateLength(length); + this._updateHanlderPosition(position); + } + } + }, + _updateHanlderPosition: function _updateHanlderPosition(position) { + if (this.handle) { + var oldPosition = this._fixupHandlerPosition(); + this.handle.node.setPosition(position.x + oldPosition.x, position.y + oldPosition.y); + } + }, + _fixupHandlerPosition: function _fixupHandlerPosition() { + var barSize = this.node.getContentSize(); + var barAnchor = this.node.getAnchorPoint(); + var handleSize = this.handle.node.getContentSize(); + var handleParent = this.handle.node.parent; + var leftBottomWorldPosition = this.node.convertToWorldSpaceAR(cc.v2(-barSize.width * barAnchor.x, -barSize.height * barAnchor.y)); + var fixupPosition = handleParent.convertToNodeSpaceAR(leftBottomWorldPosition); + this.direction === Direction.HORIZONTAL ? fixupPosition = cc.v2(fixupPosition.x, fixupPosition.y + (barSize.height - handleSize.height) / 2) : this.direction === Direction.VERTICAL && (fixupPosition = cc.v2(fixupPosition.x + (barSize.width - handleSize.width) / 2, fixupPosition.y)); + this.handle.node.setPosition(fixupPosition); + return fixupPosition; + }, + _onTouchBegan: function _onTouchBegan() { + if (!this.enableAutoHide) return; + this._touching = true; + }, + _conditionalDisableScrollBar: function _conditionalDisableScrollBar(contentSize, scrollViewSize) { + if (contentSize.width <= scrollViewSize.width && this.direction === Direction.HORIZONTAL) return true; + if (contentSize.height <= scrollViewSize.height && this.direction === Direction.VERTICAL) return true; + return false; + }, + _onTouchEnded: function _onTouchEnded() { + if (!this.enableAutoHide) return; + this._touching = false; + if (this.autoHideTime <= 0) return; + if (this._scrollView) { + var content = this._scrollView.content; + if (content) { + var contentSize = content.getContentSize(); + var scrollViewSize = this._scrollView.node.getContentSize(); + if (this._conditionalDisableScrollBar(contentSize, scrollViewSize)) return; + } + } + this._autoHideRemainingTime = this.autoHideTime; + }, + _calculateLength: function _calculateLength(contentMeasure, scrollViewMeasure, handleNodeMeasure, outOfBoundary) { + var denominatorValue = contentMeasure; + outOfBoundary && (denominatorValue += (outOfBoundary > 0 ? outOfBoundary : -outOfBoundary) * GETTINGSHORTERFACTOR); + var lengthRation = scrollViewMeasure / denominatorValue; + return handleNodeMeasure * lengthRation; + }, + _calculatePosition: function _calculatePosition(contentMeasure, scrollViewMeasure, handleNodeMeasure, contentPosition, outOfBoundary, actualLenth) { + var denominatorValue = contentMeasure - scrollViewMeasure; + outOfBoundary && (denominatorValue += Math.abs(outOfBoundary)); + var positionRatio = 0; + if (denominatorValue) { + positionRatio = contentPosition / denominatorValue; + positionRatio = misc.clamp01(positionRatio); + } + var position = (handleNodeMeasure - actualLenth) * positionRatio; + return this.direction === Direction.VERTICAL ? cc.v2(0, position) : cc.v2(position, 0); + }, + _updateLength: function _updateLength(length) { + if (this.handle) { + var handleNode = this.handle.node; + var handleNodeSize = handleNode.getContentSize(); + handleNode.setAnchorPoint(cc.v2(0, 0)); + this.direction === Direction.HORIZONTAL ? handleNode.setContentSize(length, handleNodeSize.height) : handleNode.setContentSize(handleNodeSize.width, length); + } + }, + _processAutoHide: function _processAutoHide(deltaTime) { + if (!this.enableAutoHide || this._autoHideRemainingTime <= 0) return; + if (this._touching) return; + this._autoHideRemainingTime -= deltaTime; + if (this._autoHideRemainingTime <= this.autoHideTime) { + this._autoHideRemainingTime = Math.max(0, this._autoHideRemainingTime); + var opacity = this._opacity * (this._autoHideRemainingTime / this.autoHideTime); + this._setOpacity(opacity); + } + }, + start: function start() { + this.enableAutoHide && this._setOpacity(0); + }, + hide: function hide() { + this._autoHideRemainingTime = 0; + this._setOpacity(0); + }, + show: function show() { + this._autoHideRemainingTime = this.autoHideTime; + this._setOpacity(this._opacity); + }, + update: function update(dt) { + this._processAutoHide(dt); + } + }); + cc.Scrollbar = module.exports = Scrollbar; + }), { + "../utils/misc": 324, + "./CCComponent": 149 + }], + 164: [(function (require, module, exports) { + "use strict"; + var NodeEvent = require("../CCNode").EventType; + var NUMBER_OF_GATHERED_TOUCHES_FOR_MOVE_SPEED = 5; + var OUT_OF_BOUNDARY_BREAKING_FACTOR = .05; + var EPSILON = 1e-4; + var MOVEMENT_FACTOR = .7; + var _tempPoint = cc.v2(); + var _tempPrevPoint = cc.v2(); + var quintEaseOut = function quintEaseOut(time) { + time -= 1; + return time * time * time * time * time + 1; + }; + var getTimeInMilliseconds = function getTimeInMilliseconds() { + var currentTime = new Date(); + return currentTime.getMilliseconds(); + }; + var EventType = cc.Enum({ + SCROLL_TO_TOP: 0, + SCROLL_TO_BOTTOM: 1, + SCROLL_TO_LEFT: 2, + SCROLL_TO_RIGHT: 3, + SCROLLING: 4, + BOUNCE_TOP: 5, + BOUNCE_BOTTOM: 6, + BOUNCE_LEFT: 7, + BOUNCE_RIGHT: 8, + SCROLL_ENDED: 9, + TOUCH_UP: 10, + AUTOSCROLL_ENDED_WITH_THRESHOLD: 11, + SCROLL_BEGAN: 12 + }); + var eventMap = { + "scroll-to-top": EventType.SCROLL_TO_TOP, + "scroll-to-bottom": EventType.SCROLL_TO_BOTTOM, + "scroll-to-left": EventType.SCROLL_TO_LEFT, + "scroll-to-right": EventType.SCROLL_TO_RIGHT, + scrolling: EventType.SCROLLING, + "bounce-bottom": EventType.BOUNCE_BOTTOM, + "bounce-left": EventType.BOUNCE_LEFT, + "bounce-right": EventType.BOUNCE_RIGHT, + "bounce-top": EventType.BOUNCE_TOP, + "scroll-ended": EventType.SCROLL_ENDED, + "touch-up": EventType.TOUCH_UP, + "scroll-ended-with-threshold": EventType.AUTOSCROLL_ENDED_WITH_THRESHOLD, + "scroll-began": EventType.SCROLL_BEGAN + }; + var ScrollView = cc.Class({ + name: "cc.ScrollView", + extends: require("./CCViewGroup"), + editor: false, + ctor: function ctor() { + this._topBoundary = 0; + this._bottomBoundary = 0; + this._leftBoundary = 0; + this._rightBoundary = 0; + this._touchMoveDisplacements = []; + this._touchMoveTimeDeltas = []; + this._touchMovePreviousTimestamp = 0; + this._touchMoved = false; + this._autoScrolling = false; + this._autoScrollAttenuate = false; + this._autoScrollStartPosition = cc.v2(0, 0); + this._autoScrollTargetDelta = cc.v2(0, 0); + this._autoScrollTotalTime = 0; + this._autoScrollAccumulatedTime = 0; + this._autoScrollCurrentlyOutOfBoundary = false; + this._autoScrollBraking = false; + this._autoScrollBrakingStartPosition = cc.v2(0, 0); + this._outOfBoundaryAmount = cc.v2(0, 0); + this._outOfBoundaryAmountDirty = true; + this._stopMouseWheel = false; + this._mouseWheelEventElapsedTime = 0; + this._isScrollEndedWithThresholdEventFired = false; + this._scrollEventEmitMask = 0; + this._isBouncing = false; + this._scrolling = false; + }, + properties: { + content: { + default: void 0, + type: cc.Node, + tooltip: false, + formerlySerializedAs: "content", + notify: function notify(oldValue) { + this._calculateBoundary(); + } + }, + horizontal: { + default: true, + animatable: false, + tooltip: false + }, + vertical: { + default: true, + animatable: false, + tooltip: false + }, + inertia: { + default: true, + tooltip: false + }, + brake: { + default: .5, + type: cc.Float, + range: [0, 1, .1], + tooltip: false + }, + elastic: { + default: true, + animatable: false, + tooltip: false + }, + bounceDuration: { + default: 1, + range: [0, 10], + tooltip: false + }, + horizontalScrollBar: { + default: void 0, + type: cc.Scrollbar, + tooltip: false, + notify: function notify() { + if (this.horizontalScrollBar) { + this.horizontalScrollBar.setTargetScrollView(this); + this._updateScrollBar(0); + } + }, + animatable: false + }, + verticalScrollBar: { + default: void 0, + type: cc.Scrollbar, + tooltip: false, + notify: function notify() { + if (this.verticalScrollBar) { + this.verticalScrollBar.setTargetScrollView(this); + this._updateScrollBar(0); + } + }, + animatable: false + }, + scrollEvents: { + default: [], + type: cc.Component.EventHandler, + tooltip: false + }, + cancelInnerEvents: { + default: true, + animatable: false, + tooltip: false + }, + _view: { + get: function get() { + if (this.content) return this.content.parent; + } + } + }, + statics: { + EventType: EventType + }, + scrollToBottom: function scrollToBottom(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, 0), + applyToHorizontal: false, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta, true); + }, + scrollToTop: function scrollToTop(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, 1), + applyToHorizontal: false, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToLeft: function scrollToLeft(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, 0), + applyToHorizontal: true, + applyToVertical: false + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToRight: function scrollToRight(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(1, 0), + applyToHorizontal: true, + applyToVertical: false + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToTopLeft: function scrollToTopLeft(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, 1), + applyToHorizontal: true, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToTopRight: function scrollToTopRight(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(1, 1), + applyToHorizontal: true, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToBottomLeft: function scrollToBottomLeft(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, 0), + applyToHorizontal: true, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToBottomRight: function scrollToBottomRight(timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(1, 0), + applyToHorizontal: true, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToOffset: function scrollToOffset(offset, timeInSecond, attenuated) { + var maxScrollOffset = this.getMaxScrollOffset(); + var anchor = cc.v2(0, 0); + 0 === maxScrollOffset.x ? anchor.x = 0 : anchor.x = offset.x / maxScrollOffset.x; + 0 === maxScrollOffset.y ? anchor.y = 1 : anchor.y = (maxScrollOffset.y - offset.y) / maxScrollOffset.y; + this.scrollTo(anchor, timeInSecond, attenuated); + }, + getScrollOffset: function getScrollOffset() { + var topDelta = this._getContentTopBoundary() - this._topBoundary; + var leftDeta = this._getContentLeftBoundary() - this._leftBoundary; + return cc.v2(leftDeta, topDelta); + }, + getMaxScrollOffset: function getMaxScrollOffset() { + var viewSize = this._view.getContentSize(); + var contentSize = this.content.getContentSize(); + var horizontalMaximizeOffset = contentSize.width - viewSize.width; + var verticalMaximizeOffset = contentSize.height - viewSize.height; + horizontalMaximizeOffset = horizontalMaximizeOffset >= 0 ? horizontalMaximizeOffset : 0; + verticalMaximizeOffset = verticalMaximizeOffset >= 0 ? verticalMaximizeOffset : 0; + return cc.v2(horizontalMaximizeOffset, verticalMaximizeOffset); + }, + scrollToPercentHorizontal: function scrollToPercentHorizontal(percent, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(percent, 0), + applyToHorizontal: true, + applyToVertical: false + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollTo: function scrollTo(anchor, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(anchor), + applyToHorizontal: true, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + scrollToPercentVertical: function scrollToPercentVertical(percent, timeInSecond, attenuated) { + var moveDelta = this._calculateMovePercentDelta({ + anchor: cc.v2(0, percent), + applyToHorizontal: false, + applyToVertical: true + }); + timeInSecond ? this._startAutoScroll(moveDelta, timeInSecond, false !== attenuated) : this._moveContent(moveDelta); + }, + stopAutoScroll: function stopAutoScroll() { + this._autoScrolling = false; + this._autoScrollAccumulatedTime = this._autoScrollTotalTime; + }, + setContentPosition: function setContentPosition(position) { + if (position.fuzzyEquals(this.getContentPosition(), EPSILON)) return; + this.content.setPosition(position); + this._outOfBoundaryAmountDirty = true; + }, + getContentPosition: function getContentPosition() { + return this.content.getPosition(); + }, + isScrolling: function isScrolling() { + return this._scrolling; + }, + isAutoScrolling: function isAutoScrolling() { + return this._autoScrolling; + }, + _registerEvent: function _registerEvent() { + this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this, true); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this, true); + this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this, true); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this, true); + this.node.on(cc.Node.EventType.MOUSE_WHEEL, this._onMouseWheel, this, true); + }, + _unregisterEvent: function _unregisterEvent() { + this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this, true); + this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this, true); + this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this, true); + this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this, true); + this.node.off(cc.Node.EventType.MOUSE_WHEEL, this._onMouseWheel, this, true); + }, + _onMouseWheel: function _onMouseWheel(event, captureListeners) { + if (!this.enabledInHierarchy) return; + if (this._hasNestedViewGroup(event, captureListeners)) return; + var deltaMove = cc.v2(0, 0); + var wheelPrecision = -.1; + false, false; + this.vertical ? deltaMove = cc.v2(0, event.getScrollY() * wheelPrecision) : this.horizontal && (deltaMove = cc.v2(event.getScrollY() * wheelPrecision, 0)); + this._mouseWheelEventElapsedTime = 0; + this._processDeltaMove(deltaMove); + if (!this._stopMouseWheel) { + this._handlePressLogic(); + this.schedule(this._checkMouseWheel, 1 / 60); + this._stopMouseWheel = true; + } + this._stopPropagationIfTargetIsMe(event); + }, + _checkMouseWheel: function _checkMouseWheel(dt) { + var currentOutOfBoundary = this._getHowMuchOutOfBoundary(); + var maxElapsedTime = .1; + if (!currentOutOfBoundary.fuzzyEquals(cc.v2(0, 0), EPSILON)) { + this._processInertiaScroll(); + this.unschedule(this._checkMouseWheel); + this._dispatchEvent("scroll-ended"); + this._stopMouseWheel = false; + return; + } + this._mouseWheelEventElapsedTime += dt; + if (this._mouseWheelEventElapsedTime > maxElapsedTime) { + this._onScrollBarTouchEnded(); + this.unschedule(this._checkMouseWheel); + this._dispatchEvent("scroll-ended"); + this._stopMouseWheel = false; + } + }, + _calculateMovePercentDelta: function _calculateMovePercentDelta(options) { + var anchor = options.anchor; + var applyToHorizontal = options.applyToHorizontal; + var applyToVertical = options.applyToVertical; + this._calculateBoundary(); + anchor = anchor.clampf(cc.v2(0, 0), cc.v2(1, 1)); + var scrollSize = this._view.getContentSize(); + var contentSize = this.content.getContentSize(); + var bottomDeta = this._getContentBottomBoundary() - this._bottomBoundary; + bottomDeta = -bottomDeta; + var leftDeta = this._getContentLeftBoundary() - this._leftBoundary; + leftDeta = -leftDeta; + var moveDelta = cc.v2(0, 0); + var totalScrollDelta = 0; + if (applyToHorizontal) { + totalScrollDelta = contentSize.width - scrollSize.width; + moveDelta.x = leftDeta - totalScrollDelta * anchor.x; + } + if (applyToVertical) { + totalScrollDelta = contentSize.height - scrollSize.height; + moveDelta.y = bottomDeta - totalScrollDelta * anchor.y; + } + return moveDelta; + }, + _moveContentToTopLeft: function _moveContentToTopLeft(scrollViewSize) { + var contentSize = this.content.getContentSize(); + var bottomDeta = this._getContentBottomBoundary() - this._bottomBoundary; + bottomDeta = -bottomDeta; + var moveDelta = cc.v2(0, 0); + var totalScrollDelta = 0; + var leftDeta = this._getContentLeftBoundary() - this._leftBoundary; + leftDeta = -leftDeta; + if (contentSize.height < scrollViewSize.height) { + totalScrollDelta = contentSize.height - scrollViewSize.height; + moveDelta.y = bottomDeta - totalScrollDelta; + } + if (contentSize.width < scrollViewSize.width) { + totalScrollDelta = contentSize.width - scrollViewSize.width; + moveDelta.x = leftDeta; + } + this._updateScrollBarState(); + this._moveContent(moveDelta); + this._adjustContentOutOfBoundary(); + }, + _calculateBoundary: function _calculateBoundary() { + if (this.content) { + var layout = this.content.getComponent(cc.Layout); + layout && layout.enabledInHierarchy && layout.updateLayout(); + var viewSize = this._view.getContentSize(); + var anchorX = viewSize.width * this._view.anchorX; + var anchorY = viewSize.height * this._view.anchorY; + this._leftBoundary = -anchorX; + this._bottomBoundary = -anchorY; + this._rightBoundary = this._leftBoundary + viewSize.width; + this._topBoundary = this._bottomBoundary + viewSize.height; + this._moveContentToTopLeft(viewSize); + } + }, + _hasNestedViewGroup: function _hasNestedViewGroup(event, captureListeners) { + if (event.eventPhase !== cc.Event.CAPTURING_PHASE) return; + if (captureListeners) for (var i = 0; i < captureListeners.length; ++i) { + var item = captureListeners[i]; + if (this.node === item) { + if (event.target.getComponent(cc.ViewGroup)) return true; + return false; + } + if (item.getComponent(cc.ViewGroup)) return true; + } + return false; + }, + _stopPropagationIfTargetIsMe: function _stopPropagationIfTargetIsMe(event) { + event.eventPhase === cc.Event.AT_TARGET && event.target === this.node && event.stopPropagation(); + }, + _onTouchBegan: function _onTouchBegan(event, captureListeners) { + if (!this.enabledInHierarchy) return; + if (this._hasNestedViewGroup(event, captureListeners)) return; + var touch = event.touch; + this.content && this._handlePressLogic(touch); + this._touchMoved = false; + this._stopPropagationIfTargetIsMe(event); + }, + _onTouchMoved: function _onTouchMoved(event, captureListeners) { + if (!this.enabledInHierarchy) return; + if (this._hasNestedViewGroup(event, captureListeners)) return; + var touch = event.touch; + this.content && this._handleMoveLogic(touch); + if (!this.cancelInnerEvents) return; + var deltaMove = touch.getLocation().sub(touch.getStartLocation()); + if (deltaMove.mag() > 7 && !this._touchMoved && event.target !== this.node) { + var cancelEvent = new cc.Event.EventTouch(event.getTouches(), event.bubbles); + cancelEvent.type = cc.Node.EventType.TOUCH_CANCEL; + cancelEvent.touch = event.touch; + cancelEvent.simulate = true; + event.target.dispatchEvent(cancelEvent); + this._touchMoved = true; + } + this._stopPropagationIfTargetIsMe(event); + }, + _onTouchEnded: function _onTouchEnded(event, captureListeners) { + if (!this.enabledInHierarchy) return; + if (this._hasNestedViewGroup(event, captureListeners)) return; + this._dispatchEvent("touch-up"); + var touch = event.touch; + this.content && this._handleReleaseLogic(touch); + this._touchMoved ? event.stopPropagation() : this._stopPropagationIfTargetIsMe(event); + }, + _onTouchCancelled: function _onTouchCancelled(event, captureListeners) { + if (!this.enabledInHierarchy) return; + if (this._hasNestedViewGroup(event, captureListeners)) return; + if (!event.simulate) { + var touch = event.touch; + this.content && this._handleReleaseLogic(touch); + } + this._stopPropagationIfTargetIsMe(event); + }, + _processDeltaMove: function _processDeltaMove(deltaMove) { + this._scrollChildren(deltaMove); + this._gatherTouchMove(deltaMove); + }, + _getLocalAxisAlignDelta: function _getLocalAxisAlignDelta(touch) { + this.node.convertToNodeSpaceAR(touch.getLocation(), _tempPoint); + this.node.convertToNodeSpaceAR(touch.getPreviousLocation(), _tempPrevPoint); + return _tempPoint.sub(_tempPrevPoint); + }, + _handleMoveLogic: function _handleMoveLogic(touch) { + var deltaMove = this._getLocalAxisAlignDelta(touch); + this._processDeltaMove(deltaMove); + }, + _scrollChildren: function _scrollChildren(deltaMove) { + deltaMove = this._clampDelta(deltaMove); + var realMove = deltaMove; + var outOfBoundary; + if (this.elastic) { + outOfBoundary = this._getHowMuchOutOfBoundary(); + realMove.x *= 0 === outOfBoundary.x ? 1 : .5; + realMove.y *= 0 === outOfBoundary.y ? 1 : .5; + } + if (!this.elastic) { + outOfBoundary = this._getHowMuchOutOfBoundary(realMove); + realMove = realMove.add(outOfBoundary); + } + var scrollEventType = -1; + if (realMove.y > 0) { + var icBottomPos = this.content.y - this.content.anchorY * this.content.height; + icBottomPos + realMove.y >= this._bottomBoundary && (scrollEventType = "scroll-to-bottom"); + } else if (realMove.y < 0) { + var icTopPos = this.content.y - this.content.anchorY * this.content.height + this.content.height; + icTopPos + realMove.y <= this._topBoundary && (scrollEventType = "scroll-to-top"); + } + if (realMove.x < 0) { + var icRightPos = this.content.x - this.content.anchorX * this.content.width + this.content.width; + icRightPos + realMove.x <= this._rightBoundary && (scrollEventType = "scroll-to-right"); + } else if (realMove.x > 0) { + var icLeftPos = this.content.x - this.content.anchorX * this.content.width; + icLeftPos + realMove.x >= this._leftBoundary && (scrollEventType = "scroll-to-left"); + } + this._moveContent(realMove, false); + if (0 !== realMove.x || 0 !== realMove.y) { + if (!this._scrolling) { + this._scrolling = true; + this._dispatchEvent("scroll-began"); + } + this._dispatchEvent("scrolling"); + } + -1 !== scrollEventType && this._dispatchEvent(scrollEventType); + }, + _handlePressLogic: function _handlePressLogic() { + this._autoScrolling && this._dispatchEvent("scroll-ended"); + this._autoScrolling = false; + this._isBouncing = false; + this._touchMovePreviousTimestamp = getTimeInMilliseconds(); + this._touchMoveDisplacements.length = 0; + this._touchMoveTimeDeltas.length = 0; + this._onScrollBarTouchBegan(); + }, + _clampDelta: function _clampDelta(delta) { + var contentSize = this.content.getContentSize(); + var scrollViewSize = this._view.getContentSize(); + contentSize.width < scrollViewSize.width && (delta.x = 0); + contentSize.height < scrollViewSize.height && (delta.y = 0); + return delta; + }, + _gatherTouchMove: function _gatherTouchMove(delta) { + delta = this._clampDelta(delta); + while (this._touchMoveDisplacements.length >= NUMBER_OF_GATHERED_TOUCHES_FOR_MOVE_SPEED) { + this._touchMoveDisplacements.shift(); + this._touchMoveTimeDeltas.shift(); + } + this._touchMoveDisplacements.push(delta); + var timeStamp = getTimeInMilliseconds(); + this._touchMoveTimeDeltas.push((timeStamp - this._touchMovePreviousTimestamp) / 1e3); + this._touchMovePreviousTimestamp = timeStamp; + }, + _startBounceBackIfNeeded: function _startBounceBackIfNeeded() { + if (!this.elastic) return false; + var bounceBackAmount = this._getHowMuchOutOfBoundary(); + bounceBackAmount = this._clampDelta(bounceBackAmount); + if (bounceBackAmount.fuzzyEquals(cc.v2(0, 0), EPSILON)) return false; + var bounceBackTime = Math.max(this.bounceDuration, 0); + this._startAutoScroll(bounceBackAmount, bounceBackTime, true); + if (!this._isBouncing) { + bounceBackAmount.y > 0 && this._dispatchEvent("bounce-top"); + bounceBackAmount.y < 0 && this._dispatchEvent("bounce-bottom"); + bounceBackAmount.x > 0 && this._dispatchEvent("bounce-right"); + bounceBackAmount.x < 0 && this._dispatchEvent("bounce-left"); + this._isBouncing = true; + } + return true; + }, + _processInertiaScroll: function _processInertiaScroll() { + var bounceBackStarted = this._startBounceBackIfNeeded(); + if (!bounceBackStarted && this.inertia) { + var touchMoveVelocity = this._calculateTouchMoveVelocity(); + !touchMoveVelocity.fuzzyEquals(cc.v2(0, 0), EPSILON) && this.brake < 1 && this._startInertiaScroll(touchMoveVelocity); + } + this._onScrollBarTouchEnded(); + }, + _handleReleaseLogic: function _handleReleaseLogic(touch) { + var delta = this._getLocalAxisAlignDelta(touch); + this._gatherTouchMove(delta); + this._processInertiaScroll(); + if (this._scrolling) { + this._scrolling = false; + this._autoScrolling || this._dispatchEvent("scroll-ended"); + } + }, + _isOutOfBoundary: function _isOutOfBoundary() { + var outOfBoundary = this._getHowMuchOutOfBoundary(); + return !outOfBoundary.fuzzyEquals(cc.v2(0, 0), EPSILON); + }, + _isNecessaryAutoScrollBrake: function _isNecessaryAutoScrollBrake() { + if (this._autoScrollBraking) return true; + if (this._isOutOfBoundary()) { + if (!this._autoScrollCurrentlyOutOfBoundary) { + this._autoScrollCurrentlyOutOfBoundary = true; + this._autoScrollBraking = true; + this._autoScrollBrakingStartPosition = this.getContentPosition(); + return true; + } + } else this._autoScrollCurrentlyOutOfBoundary = false; + return false; + }, + getScrollEndedEventTiming: function getScrollEndedEventTiming() { + return EPSILON; + }, + _processAutoScrolling: function _processAutoScrolling(dt) { + var isAutoScrollBrake = this._isNecessaryAutoScrollBrake(); + var brakingFactor = isAutoScrollBrake ? OUT_OF_BOUNDARY_BREAKING_FACTOR : 1; + this._autoScrollAccumulatedTime += dt * (1 / brakingFactor); + var percentage = Math.min(1, this._autoScrollAccumulatedTime / this._autoScrollTotalTime); + this._autoScrollAttenuate && (percentage = quintEaseOut(percentage)); + var newPosition = this._autoScrollStartPosition.add(this._autoScrollTargetDelta.mul(percentage)); + var reachedEnd = Math.abs(percentage - 1) <= EPSILON; + var fireEvent = Math.abs(percentage - 1) <= this.getScrollEndedEventTiming(); + if (fireEvent && !this._isScrollEndedWithThresholdEventFired) { + this._dispatchEvent("scroll-ended-with-threshold"); + this._isScrollEndedWithThresholdEventFired = true; + } + if (this.elastic) { + var brakeOffsetPosition = newPosition.sub(this._autoScrollBrakingStartPosition); + isAutoScrollBrake && (brakeOffsetPosition = brakeOffsetPosition.mul(brakingFactor)); + newPosition = this._autoScrollBrakingStartPosition.add(brakeOffsetPosition); + } else { + var moveDelta = newPosition.sub(this.getContentPosition()); + var outOfBoundary = this._getHowMuchOutOfBoundary(moveDelta); + if (!outOfBoundary.fuzzyEquals(cc.v2(0, 0), EPSILON)) { + newPosition = newPosition.add(outOfBoundary); + reachedEnd = true; + } + } + reachedEnd && (this._autoScrolling = false); + var deltaMove = newPosition.sub(this.getContentPosition()); + this._moveContent(this._clampDelta(deltaMove), reachedEnd); + this._dispatchEvent("scrolling"); + if (!this._autoScrolling) { + this._isBouncing = false; + this._scrolling = false; + this._dispatchEvent("scroll-ended"); + } + }, + _startInertiaScroll: function _startInertiaScroll(touchMoveVelocity) { + var inertiaTotalMovement = touchMoveVelocity.mul(MOVEMENT_FACTOR); + this._startAttenuatingAutoScroll(inertiaTotalMovement, touchMoveVelocity); + }, + _calculateAttenuatedFactor: function _calculateAttenuatedFactor(distance) { + if (this.brake <= 0) return 1 - this.brake; + return (1 - this.brake) * (1 / (1 + 14e-6 * distance + distance * distance * 8e-9)); + }, + _startAttenuatingAutoScroll: function _startAttenuatingAutoScroll(deltaMove, initialVelocity) { + var time = this._calculateAutoScrollTimeByInitalSpeed(initialVelocity.mag()); + var targetDelta = deltaMove.normalize(); + var contentSize = this.content.getContentSize(); + var scrollviewSize = this._view.getContentSize(); + var totalMoveWidth = contentSize.width - scrollviewSize.width; + var totalMoveHeight = contentSize.height - scrollviewSize.height; + var attenuatedFactorX = this._calculateAttenuatedFactor(totalMoveWidth); + var attenuatedFactorY = this._calculateAttenuatedFactor(totalMoveHeight); + targetDelta = cc.v2(targetDelta.x * totalMoveWidth * (1 - this.brake) * attenuatedFactorX, targetDelta.y * totalMoveHeight * attenuatedFactorY * (1 - this.brake)); + var originalMoveLength = deltaMove.mag(); + var factor = targetDelta.mag() / originalMoveLength; + targetDelta = targetDelta.add(deltaMove); + if (this.brake > 0 && factor > 7) { + factor = Math.sqrt(factor); + targetDelta = deltaMove.mul(factor).add(deltaMove); + } + if (this.brake > 0 && factor > 3) { + factor = 3; + time *= factor; + } + 0 === this.brake && factor > 1 && (time *= factor); + this._startAutoScroll(targetDelta, time, true); + }, + _calculateAutoScrollTimeByInitalSpeed: function _calculateAutoScrollTimeByInitalSpeed(initalSpeed) { + return Math.sqrt(Math.sqrt(initalSpeed / 5)); + }, + _startAutoScroll: function _startAutoScroll(deltaMove, timeInSecond, attenuated) { + var adjustedDeltaMove = this._flattenVectorByDirection(deltaMove); + this._autoScrolling = true; + this._autoScrollTargetDelta = adjustedDeltaMove; + this._autoScrollAttenuate = attenuated; + this._autoScrollStartPosition = this.getContentPosition(); + this._autoScrollTotalTime = timeInSecond; + this._autoScrollAccumulatedTime = 0; + this._autoScrollBraking = false; + this._isScrollEndedWithThresholdEventFired = false; + this._autoScrollBrakingStartPosition = cc.v2(0, 0); + var currentOutOfBoundary = this._getHowMuchOutOfBoundary(); + currentOutOfBoundary.fuzzyEquals(cc.v2(0, 0), EPSILON) || (this._autoScrollCurrentlyOutOfBoundary = true); + }, + _calculateTouchMoveVelocity: function _calculateTouchMoveVelocity() { + var totalTime = 0; + totalTime = this._touchMoveTimeDeltas.reduce((function (a, b) { + return a + b; + }), totalTime); + if (totalTime <= 0 || totalTime >= .5) return cc.v2(0, 0); + var totalMovement = cc.v2(0, 0); + totalMovement = this._touchMoveDisplacements.reduce((function (a, b) { + return a.add(b); + }), totalMovement); + return cc.v2(totalMovement.x * (1 - this.brake) / totalTime, totalMovement.y * (1 - this.brake) / totalTime); + }, + _flattenVectorByDirection: function _flattenVectorByDirection(vector) { + var result = vector; + result.x = this.horizontal ? result.x : 0; + result.y = this.vertical ? result.y : 0; + return result; + }, + _moveContent: function _moveContent(deltaMove, canStartBounceBack) { + var adjustedMove = this._flattenVectorByDirection(deltaMove); + var newPosition = this.getContentPosition().add(adjustedMove); + this.setContentPosition(newPosition); + var outOfBoundary = this._getHowMuchOutOfBoundary(); + this._updateScrollBar(outOfBoundary); + this.elastic && canStartBounceBack && this._startBounceBackIfNeeded(); + }, + _getContentLeftBoundary: function _getContentLeftBoundary() { + var contentPos = this.getContentPosition(); + return contentPos.x - this.content.getAnchorPoint().x * this.content.getContentSize().width; + }, + _getContentRightBoundary: function _getContentRightBoundary() { + var contentSize = this.content.getContentSize(); + return this._getContentLeftBoundary() + contentSize.width; + }, + _getContentTopBoundary: function _getContentTopBoundary() { + var contentSize = this.content.getContentSize(); + return this._getContentBottomBoundary() + contentSize.height; + }, + _getContentBottomBoundary: function _getContentBottomBoundary() { + var contentPos = this.getContentPosition(); + return contentPos.y - this.content.getAnchorPoint().y * this.content.getContentSize().height; + }, + _getHowMuchOutOfBoundary: function _getHowMuchOutOfBoundary(addition) { + addition = addition || cc.v2(0, 0); + if (addition.fuzzyEquals(cc.v2(0, 0), EPSILON) && !this._outOfBoundaryAmountDirty) return this._outOfBoundaryAmount; + var outOfBoundaryAmount = cc.v2(0, 0); + this._getContentLeftBoundary() + addition.x > this._leftBoundary ? outOfBoundaryAmount.x = this._leftBoundary - (this._getContentLeftBoundary() + addition.x) : this._getContentRightBoundary() + addition.x < this._rightBoundary && (outOfBoundaryAmount.x = this._rightBoundary - (this._getContentRightBoundary() + addition.x)); + this._getContentTopBoundary() + addition.y < this._topBoundary ? outOfBoundaryAmount.y = this._topBoundary - (this._getContentTopBoundary() + addition.y) : this._getContentBottomBoundary() + addition.y > this._bottomBoundary && (outOfBoundaryAmount.y = this._bottomBoundary - (this._getContentBottomBoundary() + addition.y)); + if (addition.fuzzyEquals(cc.v2(0, 0), EPSILON)) { + this._outOfBoundaryAmount = outOfBoundaryAmount; + this._outOfBoundaryAmountDirty = false; + } + outOfBoundaryAmount = this._clampDelta(outOfBoundaryAmount); + return outOfBoundaryAmount; + }, + _updateScrollBarState: function _updateScrollBarState() { + if (!this.content) return; + var contentSize = this.content.getContentSize(); + var scrollViewSize = this._view.getContentSize(); + this.verticalScrollBar && (contentSize.height < scrollViewSize.height ? this.verticalScrollBar.hide() : this.verticalScrollBar.show()); + this.horizontalScrollBar && (contentSize.width < scrollViewSize.width ? this.horizontalScrollBar.hide() : this.horizontalScrollBar.show()); + }, + _updateScrollBar: function _updateScrollBar(outOfBoundary) { + this.horizontalScrollBar && this.horizontalScrollBar._onScroll(outOfBoundary); + this.verticalScrollBar && this.verticalScrollBar._onScroll(outOfBoundary); + }, + _onScrollBarTouchBegan: function _onScrollBarTouchBegan() { + this.horizontalScrollBar && this.horizontalScrollBar._onTouchBegan(); + this.verticalScrollBar && this.verticalScrollBar._onTouchBegan(); + }, + _onScrollBarTouchEnded: function _onScrollBarTouchEnded() { + this.horizontalScrollBar && this.horizontalScrollBar._onTouchEnded(); + this.verticalScrollBar && this.verticalScrollBar._onTouchEnded(); + }, + _dispatchEvent: function _dispatchEvent(event) { + if ("scroll-ended" === event) this._scrollEventEmitMask = 0; else if ("scroll-to-top" === event || "scroll-to-bottom" === event || "scroll-to-left" === event || "scroll-to-right" === event) { + var flag = 1 << eventMap[event]; + if (this._scrollEventEmitMask & flag) return; + this._scrollEventEmitMask |= flag; + } + cc.Component.EventHandler.emitEvents(this.scrollEvents, this, eventMap[event]); + this.node.emit(event, this); + }, + _adjustContentOutOfBoundary: function _adjustContentOutOfBoundary() { + this._outOfBoundaryAmountDirty = true; + if (this._isOutOfBoundary()) { + var outOfBoundary = this._getHowMuchOutOfBoundary(cc.v2(0, 0)); + var newPosition = this.getContentPosition().add(outOfBoundary); + if (this.content) { + this.content.setPosition(newPosition); + this._updateScrollBar(0); + } + } + }, + start: function start() { + this._calculateBoundary(); + this.content && cc.director.once(cc.Director.EVENT_BEFORE_DRAW, this._adjustContentOutOfBoundary, this); + }, + _hideScrollbar: function _hideScrollbar() { + this.horizontalScrollBar && this.horizontalScrollBar.hide(); + this.verticalScrollBar && this.verticalScrollBar.hide(); + }, + onDisable: function onDisable() { + true; + this._unregisterEvent(); + if (this.content) { + this.content.off(NodeEvent.SIZE_CHANGED, this._calculateBoundary, this); + this.content.off(NodeEvent.SCALE_CHANGED, this._calculateBoundary, this); + if (this._view) { + this._view.off(NodeEvent.POSITION_CHANGED, this._calculateBoundary, this); + this._view.off(NodeEvent.SCALE_CHANGED, this._calculateBoundary, this); + this._view.off(NodeEvent.SIZE_CHANGED, this._calculateBoundary, this); + } + } + this._hideScrollbar(); + this.stopAutoScroll(); + }, + onEnable: function onEnable() { + true; + this._registerEvent(); + if (this.content) { + this.content.on(NodeEvent.SIZE_CHANGED, this._calculateBoundary, this); + this.content.on(NodeEvent.SCALE_CHANGED, this._calculateBoundary, this); + if (this._view) { + this._view.on(NodeEvent.POSITION_CHANGED, this._calculateBoundary, this); + this._view.on(NodeEvent.SCALE_CHANGED, this._calculateBoundary, this); + this._view.on(NodeEvent.SIZE_CHANGED, this._calculateBoundary, this); + } + } + this._updateScrollBarState(); + }, + update: function update(dt) { + this._autoScrolling && this._processAutoScrolling(dt); + } + }); + cc.ScrollView = module.exports = ScrollView; + }), { + "../CCNode": 73, + "./CCViewGroup": 171 + }], + 165: [(function (require, module, exports) { + "use strict"; + var misc = require("../utils/misc"); + var Component = require("./CCComponent"); + var Direction = cc.Enum({ + Horizontal: 0, + Vertical: 1 + }); + var Slider = cc.Class({ + name: "cc.Slider", + extends: Component, + editor: false, + ctor: function ctor() { + this._offset = cc.v2(); + this._touchHandle = false; + this._dragging = false; + }, + properties: { + handle: { + default: null, + type: cc.Button, + tooltip: false, + notify: function notify() { + false; + } + }, + direction: { + default: Direction.Horizontal, + type: Direction, + tooltip: false + }, + progress: { + default: .5, + type: cc.Float, + range: [0, 1, .1], + slide: true, + tooltip: false, + notify: function notify() { + this._updateHandlePosition(); + } + }, + slideEvents: { + default: [], + type: cc.Component.EventHandler, + tooltip: false + } + }, + statics: { + Direction: Direction + }, + __preload: function __preload() { + this._updateHandlePosition(); + }, + onEnable: function onEnable() { + this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this); + this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this); + if (this.handle && this.handle.isValid) { + this.handle.node.on(cc.Node.EventType.TOUCH_START, this._onHandleDragStart, this); + this.handle.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this); + this.handle.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + } + }, + onDisable: function onDisable() { + this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this); + this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this); + if (this.handle && this.handle.isValid) { + this.handle.node.off(cc.Node.EventType.TOUCH_START, this._onHandleDragStart, this); + this.handle.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this); + this.handle.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + } + }, + _onHandleDragStart: function _onHandleDragStart(event) { + this._dragging = true; + this._touchHandle = true; + this._offset = this.handle.node.convertToNodeSpaceAR(event.touch.getLocation()); + event.stopPropagation(); + }, + _onTouchBegan: function _onTouchBegan(event) { + if (!this.handle) return; + this._dragging = true; + this._touchHandle || this._handleSliderLogic(event.touch); + event.stopPropagation(); + }, + _onTouchMoved: function _onTouchMoved(event) { + if (!this._dragging) return; + this._handleSliderLogic(event.touch); + event.stopPropagation(); + }, + _onTouchEnded: function _onTouchEnded(event) { + this._dragging = false; + this._touchHandle = false; + this._offset = cc.v2(); + event.stopPropagation(); + }, + _onTouchCancelled: function _onTouchCancelled(event) { + this._dragging = false; + event.stopPropagation(); + }, + _handleSliderLogic: function _handleSliderLogic(touch) { + this._updateProgress(touch); + this._emitSlideEvent(); + }, + _emitSlideEvent: function _emitSlideEvent() { + cc.Component.EventHandler.emitEvents(this.slideEvents, this); + this.node.emit("slide", this); + }, + _updateProgress: function _updateProgress(touch) { + if (!this.handle) return; + var node = this.node; + var localTouchPos = node.convertToNodeSpaceAR(touch.getLocation()); + this.direction === Direction.Horizontal ? this.progress = misc.clamp01((localTouchPos.x - this._offset.x + node.anchorX * node.width) / node.width) : this.progress = misc.clamp01((localTouchPos.y - this._offset.y + node.anchorY * node.height) / node.height); + }, + _updateHandlePosition: function _updateHandlePosition() { + if (!this.handle) return; + var handlelocalPos; + handlelocalPos = this.direction === Direction.Horizontal ? cc.v2(-this.node.width * this.node.anchorX + this.progress * this.node.width, 0) : cc.v2(0, -this.node.height * this.node.anchorY + this.progress * this.node.height); + var worldSpacePos = this.node.convertToWorldSpaceAR(handlelocalPos); + this.handle.node.position = this.handle.node.parent.convertToNodeSpaceAR(worldSpacePos); + } + }); + cc.Slider = module.exports = Slider; + }), { + "../utils/misc": 324, + "./CCComponent": 149 + }], + 166: [(function (require, module, exports) { + "use strict"; + var misc = require("../utils/misc"); + var NodeEvent = require("../CCNode").EventType; + var RenderComponent = require("./CCRenderComponent"); + var BlendFunc = require("../utils/blend-func"); + var SpriteType = cc.Enum({ + SIMPLE: 0, + SLICED: 1, + TILED: 2, + FILLED: 3, + MESH: 4 + }); + var FillType = cc.Enum({ + HORIZONTAL: 0, + VERTICAL: 1, + RADIAL: 2 + }); + var SizeMode = cc.Enum({ + CUSTOM: 0, + TRIMMED: 1, + RAW: 2 + }); + var State = cc.Enum({ + NORMAL: 0, + GRAY: 1 + }); + var Sprite = cc.Class({ + name: "cc.Sprite", + extends: RenderComponent, + mixins: [BlendFunc], + editor: false, + properties: { + _spriteFrame: { + default: null, + type: cc.SpriteFrame + }, + _type: SpriteType.SIMPLE, + _sizeMode: SizeMode.TRIMMED, + _fillType: 0, + _fillCenter: cc.v2(0, 0), + _fillStart: 0, + _fillRange: 0, + _isTrimmedMode: true, + _atlas: { + default: null, + type: cc.SpriteAtlas, + tooltip: false, + editorOnly: true, + visible: true, + animatable: false + }, + spriteFrame: { + get: function get() { + return this._spriteFrame; + }, + set: function set(value, force) { + var lastSprite = this._spriteFrame; + false; + if (lastSprite === value) return; + this._spriteFrame = value; + this._applySpriteFrame(lastSprite); + false; + }, + type: cc.SpriteFrame + }, + type: { + get: function get() { + return this._type; + }, + set: function set(value) { + if (this._type !== value) { + this._type = value; + this.setVertsDirty(); + this._resetAssembler(); + } + }, + type: SpriteType, + animatable: false, + tooltip: false + }, + fillType: { + get: function get() { + return this._fillType; + }, + set: function set(value) { + if (value !== this._fillType) { + this._fillType = value; + this.setVertsDirty(); + this._resetAssembler(); + } + }, + type: FillType, + tooltip: false + }, + fillCenter: { + get: function get() { + return this._fillCenter; + }, + set: function set(value) { + this._fillCenter.x = value.x; + this._fillCenter.y = value.y; + this._type === SpriteType.FILLED && this.setVertsDirty(); + }, + tooltip: false + }, + fillStart: { + get: function get() { + return this._fillStart; + }, + set: function set(value) { + this._fillStart = misc.clampf(value, -1, 1); + this._type === SpriteType.FILLED && this.setVertsDirty(); + }, + tooltip: false + }, + fillRange: { + get: function get() { + return this._fillRange; + }, + set: function set(value) { + this._fillRange = misc.clampf(value, -1, 1); + this._type === SpriteType.FILLED && this.setVertsDirty(); + }, + tooltip: false + }, + trim: { + get: function get() { + return this._isTrimmedMode; + }, + set: function set(value) { + if (this._isTrimmedMode !== value) { + this._isTrimmedMode = value; + this._type !== SpriteType.SIMPLE && this._type !== SpriteType.MESH || this.setVertsDirty(); + } + }, + animatable: false, + tooltip: false + }, + sizeMode: { + get: function get() { + return this._sizeMode; + }, + set: function set(value) { + this._sizeMode = value; + value !== SizeMode.CUSTOM && this._applySpriteSize(); + }, + animatable: false, + type: SizeMode, + tooltip: false + } + }, + statics: { + FillType: FillType, + Type: SpriteType, + SizeMode: SizeMode, + State: State + }, + setVisible: function setVisible(visible) { + this.enabled = visible; + }, + setState: function setState() { }, + getState: function getState() { }, + __preload: function __preload() { + this._super(); + false; + this._applySpriteFrame(); + }, + onEnable: function onEnable() { + this._super(); + this._spriteFrame && this._spriteFrame.ensureLoadTexture(); + this.node.on(cc.Node.EventType.SIZE_CHANGED, this.setVertsDirty, this); + this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this.setVertsDirty, this); + }, + onDisable: function onDisable() { + this._super(); + this.node.off(cc.Node.EventType.SIZE_CHANGED, this.setVertsDirty, this); + this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this.setVertsDirty, this); + }, + _updateMaterial: function _updateMaterial() { + var texture = this._spriteFrame && this._spriteFrame.getTexture(); + var material = this.getMaterial(0); + if (material) { + void 0 !== material.getDefine("USE_TEXTURE") && material.define("USE_TEXTURE", true); + void 0 !== material.getProperty("texture") && material.setProperty("texture", texture); + } + BlendFunc.prototype._updateMaterial.call(this); + }, + _applyAtlas: false, + _validateRender: function _validateRender() { + var spriteFrame = this._spriteFrame; + if (this._materials[0] && spriteFrame && spriteFrame.textureLoaded()) return; + this.disableRender(); + }, + _applySpriteSize: function _applySpriteSize() { + if (!this._spriteFrame || !this.isValid) return; + if (SizeMode.RAW === this._sizeMode) { + var size = this._spriteFrame._originalSize; + this.node.setContentSize(size); + } else if (SizeMode.TRIMMED === this._sizeMode) { + var rect = this._spriteFrame._rect; + this.node.setContentSize(rect.width, rect.height); + } + this.setVertsDirty(); + }, + _applySpriteFrame: function _applySpriteFrame(oldFrame) { + if (!this.isValid) return; + var oldTexture = oldFrame && oldFrame.getTexture(); + oldTexture && !oldTexture.loaded && oldFrame.off("load", this._applySpriteSize, this); + this._updateMaterial(); + var spriteFrame = this._spriteFrame; + if (spriteFrame) { + var newTexture = spriteFrame.getTexture(); + if (newTexture && newTexture.loaded) this._applySpriteSize(); else { + this.disableRender(); + spriteFrame.once("load", this._applySpriteSize, this); + } + } else this.disableRender(); + false; + } + }); + false; + cc.Sprite = module.exports = Sprite; + }), { + "../CCNode": 73, + "../utils/blend-func": 318, + "../utils/misc": 324, + "./CCRenderComponent": 160 + }], + 167: [(function (require, module, exports) { + "use strict"; + var ComponentType = cc.Enum({ + NONE: 0, + CHECKBOX: 1, + TEXT_ATLAS: 2, + SLIDER_BAR: 3, + LIST_VIEW: 4, + PAGE_VIEW: 5 + }); + var ListDirection = cc.Enum({ + VERTICAL: 0, + HORIZONTAL: 1 + }); + var VerticalAlign = cc.Enum({ + TOP: 0, + CENTER: 1, + BOTTOM: 2 + }); + var HorizontalAlign = cc.Enum({ + LEFT: 0, + CENTER: 1, + RIGHT: 2 + }); + var StudioComponent = cc.Class({ + name: "cc.StudioComponent", + extends: cc.Component, + editor: false, + properties: false, + statics: { + ComponentType: ComponentType, + ListDirection: ListDirection, + VerticalAlign: VerticalAlign, + HorizontalAlign: HorizontalAlign + } + }); + cc.StudioComponent = module.exports = StudioComponent; + var StudioWidget = cc.Class({ + name: "cc.StudioWidget", + extends: cc.Widget, + editor: false, + _validateTargetInDEV: function _validateTargetInDEV() { } + }); + cc.StudioWidget = module.exports = StudioWidget; + }), {}], + 168: [(function (require, module, exports) { + "use strict"; + var GraySpriteState = require("../utils/gray-sprite-state"); + var Toggle = cc.Class({ + name: "cc.Toggle", + extends: require("./CCButton"), + mixins: [GraySpriteState], + editor: false, + properties: { + _N$isChecked: true, + isChecked: { + get: function get() { + return this._N$isChecked; + }, + set: function set(value) { + if (value === this._N$isChecked) return; + var group = this.toggleGroup || this._toggleContainer; + if (group && group.enabled && this._N$isChecked && !group.allowSwitchOff) return; + this._N$isChecked = value; + this._updateCheckMark(); + group && group.enabled && group.updateToggles(this); + cc.Toggle._triggerEventInScript_isChecked && this._emitToggleEvents(); + }, + tooltip: false + }, + toggleGroup: { + default: null, + tooltip: false, + type: require("./CCToggleGroup") + }, + checkMark: { + default: null, + type: cc.Sprite, + tooltip: false + }, + checkEvents: { + default: [], + type: cc.Component.EventHandler + }, + _resizeToTarget: { + animatable: false, + set: function set(value) { + value && this._resizeNodeToTargetNode(); + } + } + }, + statics: { + _triggerEventInScript_check: false, + _triggerEventInScript_isChecked: false + }, + onEnable: function onEnable() { + this._super(); + true; + this._registerToggleEvent(); + this.toggleGroup && this.toggleGroup.enabledInHierarchy && this.toggleGroup.addToggle(this); + }, + onDisable: function onDisable() { + this._super(); + true; + this._unregisterToggleEvent(); + this.toggleGroup && this.toggleGroup.enabledInHierarchy && this.toggleGroup.removeToggle(this); + }, + _hideCheckMark: function _hideCheckMark() { + this._N$isChecked = false; + this._updateCheckMark(); + }, + toggle: function toggle(event) { + this.isChecked = !this.isChecked; + cc.Toggle._triggerEventInScript_isChecked || !cc.Toggle._triggerEventInScript_check && !event || this._emitToggleEvents(); + }, + check: function check() { + this.isChecked = true; + !cc.Toggle._triggerEventInScript_isChecked && cc.Toggle._triggerEventInScript_check && this._emitToggleEvents(); + }, + uncheck: function uncheck() { + this.isChecked = false; + !cc.Toggle._triggerEventInScript_isChecked && cc.Toggle._triggerEventInScript_check && this._emitToggleEvents(); + }, + _updateCheckMark: function _updateCheckMark() { + this.checkMark && (this.checkMark.node.active = !!this.isChecked); + }, + _updateDisabledState: function _updateDisabledState() { + this._super(); + if (this.enableAutoGrayEffect && this.checkMark) { + var useGrayMaterial = !this.interactable; + this._switchGrayMaterial(useGrayMaterial, this.checkMark); + } + }, + _registerToggleEvent: function _registerToggleEvent() { + this.node.on("click", this.toggle, this); + }, + _unregisterToggleEvent: function _unregisterToggleEvent() { + this.node.off("click", this.toggle, this); + }, + _emitToggleEvents: function _emitToggleEvents() { + this.node.emit("toggle", this); + this.checkEvents && cc.Component.EventHandler.emitEvents(this.checkEvents, this); + } + }); + cc.Toggle = module.exports = Toggle; + var js = require("../platform/js"); + js.get(Toggle.prototype, "_toggleContainer", (function () { + var parent = this.node.parent; + if (cc.Node.isNode(parent)) return parent.getComponent(cc.ToggleContainer); + return null; + })); + }), { + "../platform/js": 260, + "../utils/gray-sprite-state": 321, + "./CCButton": 147, + "./CCToggleGroup": 170 + }], + 169: [(function (require, module, exports) { + "use strict"; + var ToggleContainer = cc.Class({ + name: "cc.ToggleContainer", + extends: cc.Component, + editor: false, + properties: { + allowSwitchOff: { + tooltip: false, + default: false + }, + checkEvents: { + default: [], + type: cc.Component.EventHandler + } + }, + updateToggles: function updateToggles(toggle) { + if (!this.enabledInHierarchy) return; + if (toggle.isChecked) { + this.toggleItems.forEach((function (item) { + item !== toggle && item.isChecked && item.enabled && item._hideCheckMark(); + })); + this.checkEvents && cc.Component.EventHandler.emitEvents(this.checkEvents, toggle); + } + }, + _allowOnlyOneToggleChecked: function _allowOnlyOneToggleChecked() { + var isChecked = false; + this.toggleItems.forEach((function (item) { + isChecked ? item._hideCheckMark() : item.isChecked && (isChecked = true); + })); + return isChecked; + }, + _makeAtLeastOneToggleChecked: function _makeAtLeastOneToggleChecked() { + var isChecked = this._allowOnlyOneToggleChecked(); + if (!isChecked && !this.allowSwitchOff) { + var toggleItems = this.toggleItems; + toggleItems.length > 0 && toggleItems[0].check(); + } + }, + onEnable: function onEnable() { + this._makeAtLeastOneToggleChecked(); + this.node.on("child-added", this._allowOnlyOneToggleChecked, this); + this.node.on("child-removed", this._makeAtLeastOneToggleChecked, this); + }, + onDisable: function onDisable() { + this.node.off("child-added", this._allowOnlyOneToggleChecked, this); + this.node.off("child-removed", this._makeAtLeastOneToggleChecked, this); + } + }); + var js = require("../platform/js"); + js.get(ToggleContainer.prototype, "toggleItems", (function () { + return this.node._children.map((function (item) { + return item.getComponent(cc.Toggle); + })).filter(Boolean); + })); + cc.ToggleContainer = module.exports = ToggleContainer; + }), { + "../platform/js": 260 + }], + 170: [(function (require, module, exports) { + "use strict"; + var ToggleGroup = cc.Class({ + name: "cc.ToggleGroup", + extends: cc.Component, + ctor: function ctor() { + this._toggleItems = []; + }, + editor: false, + properties: { + allowSwitchOff: { + tooltip: false, + default: false + }, + toggleItems: { + get: function get() { + return this._toggleItems; + } + } + }, + updateToggles: function updateToggles(toggle) { + if (!this.enabledInHierarchy) return; + this._toggleItems.forEach((function (item) { + toggle.isChecked && item !== toggle && item.isChecked && item.enabled && item._hideCheckMark(); + })); + }, + addToggle: function addToggle(toggle) { + var index = this._toggleItems.indexOf(toggle); + -1 === index && this._toggleItems.push(toggle); + this._allowOnlyOneToggleChecked(); + }, + removeToggle: function removeToggle(toggle) { + var index = this._toggleItems.indexOf(toggle); + index > -1 && this._toggleItems.splice(index, 1); + this._makeAtLeastOneToggleChecked(); + }, + _allowOnlyOneToggleChecked: function _allowOnlyOneToggleChecked() { + var isChecked = false; + this._toggleItems.forEach((function (item) { + isChecked && item.enabled && item._hideCheckMark(); + item.isChecked && item.enabled && (isChecked = true); + })); + return isChecked; + }, + _makeAtLeastOneToggleChecked: function _makeAtLeastOneToggleChecked() { + var isChecked = this._allowOnlyOneToggleChecked(); + isChecked || this.allowSwitchOff || this._toggleItems.length > 0 && (this._toggleItems[0].isChecked = true); + }, + start: function start() { + this._makeAtLeastOneToggleChecked(); + } + }); + var js = require("../platform/js"); + var showed = false; + js.get(cc, "ToggleGroup", (function () { + if (!showed) { + cc.errorID(1405, "cc.ToggleGroup", "cc.ToggleContainer"); + showed = true; + } + return ToggleGroup; + })); + module.exports = ToggleGroup; + }), { + "../platform/js": 260 + }], + 171: [(function (require, module, exports) { + "use strict"; + var ViewGroup = cc.Class({ + name: "cc.ViewGroup", + extends: require("./CCComponent") + }); + cc.ViewGroup = module.exports = ViewGroup; + }), { + "./CCComponent": 149 + }], + 172: [(function (require, module, exports) { + "use strict"; + var WidgetManager = require("../base-ui/CCWidgetManager"); + var AlignMode = WidgetManager.AlignMode; + var AlignFlags = WidgetManager._AlignFlags; + var TOP = AlignFlags.TOP; + var MID = AlignFlags.MID; + var BOT = AlignFlags.BOT; + var LEFT = AlignFlags.LEFT; + var CENTER = AlignFlags.CENTER; + var RIGHT = AlignFlags.RIGHT; + var TOP_BOT = TOP | BOT; + var LEFT_RIGHT = LEFT | RIGHT; + var Widget = cc.Class({ + name: "cc.Widget", + extends: require("./CCComponent"), + editor: false, + properties: { + target: { + get: function get() { + return this._target; + }, + set: function set(value) { + this._target = value; + false; + }, + type: cc.Node, + tooltip: false + }, + isAlignTop: { + get: function get() { + return (this._alignFlags & TOP) > 0; + }, + set: function set(value) { + this._setAlign(TOP, value); + }, + animatable: false, + tooltip: false + }, + isAlignVerticalCenter: { + get: function get() { + return (this._alignFlags & MID) > 0; + }, + set: function set(value) { + if (value) { + this.isAlignTop = false; + this.isAlignBottom = false; + this._alignFlags |= MID; + } else this._alignFlags &= ~MID; + }, + animatable: false, + tooltip: false + }, + isAlignBottom: { + get: function get() { + return (this._alignFlags & BOT) > 0; + }, + set: function set(value) { + this._setAlign(BOT, value); + }, + animatable: false, + tooltip: false + }, + isAlignLeft: { + get: function get() { + return (this._alignFlags & LEFT) > 0; + }, + set: function set(value) { + this._setAlign(LEFT, value); + }, + animatable: false, + tooltip: false + }, + isAlignHorizontalCenter: { + get: function get() { + return (this._alignFlags & CENTER) > 0; + }, + set: function set(value) { + if (value) { + this.isAlignLeft = false; + this.isAlignRight = false; + this._alignFlags |= CENTER; + } else this._alignFlags &= ~CENTER; + }, + animatable: false, + tooltip: false + }, + isAlignRight: { + get: function get() { + return (this._alignFlags & RIGHT) > 0; + }, + set: function set(value) { + this._setAlign(RIGHT, value); + }, + animatable: false, + tooltip: false + }, + isStretchWidth: { + get: function get() { + return (this._alignFlags & LEFT_RIGHT) === LEFT_RIGHT; + }, + visible: false + }, + isStretchHeight: { + get: function get() { + return (this._alignFlags & TOP_BOT) === TOP_BOT; + }, + visible: false + }, + top: { + get: function get() { + return this._top; + }, + set: function set(value) { + this._top = value; + }, + tooltip: false + }, + bottom: { + get: function get() { + return this._bottom; + }, + set: function set(value) { + this._bottom = value; + }, + tooltip: false + }, + left: { + get: function get() { + return this._left; + }, + set: function set(value) { + this._left = value; + }, + tooltip: false + }, + right: { + get: function get() { + return this._right; + }, + set: function set(value) { + this._right = value; + }, + tooltip: false + }, + horizontalCenter: { + get: function get() { + return this._horizontalCenter; + }, + set: function set(value) { + this._horizontalCenter = value; + }, + tooltip: false + }, + verticalCenter: { + get: function get() { + return this._verticalCenter; + }, + set: function set(value) { + this._verticalCenter = value; + }, + tooltip: false + }, + isAbsoluteHorizontalCenter: { + get: function get() { + return this._isAbsHorizontalCenter; + }, + set: function set(value) { + this._isAbsHorizontalCenter = value; + }, + animatable: false + }, + isAbsoluteVerticalCenter: { + get: function get() { + return this._isAbsVerticalCenter; + }, + set: function set(value) { + this._isAbsVerticalCenter = value; + }, + animatable: false + }, + isAbsoluteTop: { + get: function get() { + return this._isAbsTop; + }, + set: function set(value) { + this._isAbsTop = value; + }, + animatable: false + }, + isAbsoluteBottom: { + get: function get() { + return this._isAbsBottom; + }, + set: function set(value) { + this._isAbsBottom = value; + }, + animatable: false + }, + isAbsoluteLeft: { + get: function get() { + return this._isAbsLeft; + }, + set: function set(value) { + this._isAbsLeft = value; + }, + animatable: false + }, + isAbsoluteRight: { + get: function get() { + return this._isAbsRight; + }, + set: function set(value) { + this._isAbsRight = value; + }, + animatable: false + }, + alignMode: { + default: AlignMode.ON_WINDOW_RESIZE, + type: AlignMode, + tooltip: false + }, + _wasAlignOnce: { + default: void 0, + formerlySerializedAs: "isAlignOnce" + }, + _target: null, + _alignFlags: 0, + _left: 0, + _right: 0, + _top: 0, + _bottom: 0, + _verticalCenter: 0, + _horizontalCenter: 0, + _isAbsLeft: true, + _isAbsRight: true, + _isAbsTop: true, + _isAbsBottom: true, + _isAbsHorizontalCenter: true, + _isAbsVerticalCenter: true, + _originalWidth: 0, + _originalHeight: 0 + }, + statics: { + AlignMode: AlignMode + }, + onLoad: function onLoad() { + if (void 0 !== this._wasAlignOnce) { + this.alignMode = this._wasAlignOnce ? AlignMode.ONCE : AlignMode.ALWAYS; + this._wasAlignOnce = void 0; + } + }, + onEnable: function onEnable() { + WidgetManager.add(this); + }, + onDisable: function onDisable() { + WidgetManager.remove(this); + }, + _validateTargetInDEV: false, + _setAlign: function _setAlign(flag, isAlign) { + var current = (this._alignFlags & flag) > 0; + if (isAlign === current) return; + var isHorizontal = (flag & LEFT_RIGHT) > 0; + if (isAlign) { + this._alignFlags |= flag; + if (isHorizontal) { + this.isAlignHorizontalCenter = false; + if (this.isStretchWidth) { + this._originalWidth = this.node.width; + false; + } + } else { + this.isAlignVerticalCenter = false; + if (this.isStretchHeight) { + this._originalHeight = this.node.height; + false; + } + } + false; + } else { + isHorizontal ? this.isStretchWidth && (this.node.width = this._originalWidth) : this.isStretchHeight && (this.node.height = this._originalHeight); + this._alignFlags &= ~flag; + } + }, + updateAlignment: function updateAlignment() { + WidgetManager.updateAlignment(this.node); + } + }); + Object.defineProperty(Widget.prototype, "isAlignOnce", { + get: function get() { + true; + cc.warn("`widget.isAlignOnce` is deprecated, use `widget.alignMode === cc.Widget.AlignMode.ONCE` instead please."); + return this.alignMode === AlignMode.ONCE; + }, + set: function set(value) { + true; + cc.warn("`widget.isAlignOnce` is deprecated, use `widget.alignMode = cc.Widget.AlignMode.*` instead please."); + this.alignMode = value ? AlignMode.ONCE : AlignMode.ALWAYS; + } + }); + cc.Widget = module.exports = Widget; + }), { + "../base-ui/CCWidgetManager": 133, + "./CCComponent": 149 + }], + 173: [(function (require, module, exports) { + "use strict"; + var macro = require("../../platform/CCMacro"); + var EditBoxImplBase = require("../editbox/EditBoxImplBase"); + var Label = require("../CCLabel"); + var Types = require("./types"); + var InputMode = Types.InputMode; + var InputFlag = Types.InputFlag; + var KeyboardReturnType = Types.KeyboardReturnType; + function capitalize(string) { + return string.replace(/(?:^|\s)\S/g, (function (a) { + return a.toUpperCase(); + })); + } + function capitalizeFirstLetter(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + var EditBox = cc.Class({ + name: "cc.EditBox", + extends: cc.Component, + editor: false, + properties: { + _string: "", + string: { + tooltip: false, + get: function get() { + return this._string; + }, + set: function set(value) { + value = "" + value; + this.maxLength >= 0 && value.length >= this.maxLength && (value = value.slice(0, this.maxLength)); + this._string = value; + this._updateString(value); + } + }, + textLabel: { + tooltip: false, + default: null, + type: Label, + notify: function notify(oldValue) { + if (this.textLabel && this.textLabel !== oldValue) { + this._updateTextLabel(); + this._updateLabels(); + } + } + }, + placeholderLabel: { + tooltip: false, + default: null, + type: Label, + notify: function notify(oldValue) { + if (this.placeholderLabel && this.placeholderLabel !== oldValue) { + this._updatePlaceholderLabel(); + this._updateLabels(); + } + } + }, + background: { + tooltip: false, + default: null, + type: cc.Sprite, + notify: function notify(oldValue) { + this.background && this.background !== oldValue && this._updateBackgroundSprite(); + } + }, + _N$backgroundImage: { + default: void 0, + type: cc.SpriteFrame + }, + backgroundImage: { + get: function get() { + if (!this.background) return null; + return this.background.spriteFrame; + }, + set: function set(value) { + this.background && (this.background.spriteFrame = value); + } + }, + returnType: { + default: KeyboardReturnType.DEFAULT, + tooltip: false, + displayName: "KeyboardReturnType", + type: KeyboardReturnType + }, + _N$returnType: { + default: void 0, + type: cc.Float + }, + inputFlag: { + tooltip: false, + default: InputFlag.DEFAULT, + type: InputFlag, + notify: function notify() { + this._updateString(this._string); + } + }, + inputMode: { + tooltip: false, + default: InputMode.ANY, + type: InputMode, + notify: function notify(oldValue) { + if (this.inputMode !== oldValue) { + this._updateTextLabel(); + this._updatePlaceholderLabel(); + } + } + }, + fontSize: { + get: function get() { + if (!this.textLabel) return 0; + return this.textLabel.fontSize; + }, + set: function set(value) { + this.textLabel && (this.textLabel.fontSize = value); + } + }, + _N$fontSize: { + default: void 0, + type: cc.Float + }, + lineHeight: { + get: function get() { + if (!this.textLabel) return 0; + return this.textLabel.lineHeight; + }, + set: function set(value) { + this.textLabel && (this.textLabel.lineHeight = value); + } + }, + _N$lineHeight: { + default: void 0, + type: cc.Float + }, + fontColor: { + get: function get() { + if (!this.textLabel) return cc.Color.BLACK; + return this.textLabel.node.color; + }, + set: function set(value) { + if (this.textLabel) { + this.textLabel.node.color = value; + this.textLabel.node.opacity = value.a; + } + } + }, + _N$fontColor: void 0, + placeholder: { + tooltip: false, + get: function get() { + if (!this.placeholderLabel) return ""; + return this.placeholderLabel.string; + }, + set: function set(value) { + this.placeholderLabel && (this.placeholderLabel.string = value); + } + }, + _N$placeholder: { + default: void 0, + type: cc.String + }, + placeholderFontSize: { + get: function get() { + if (!this.placeholderLabel) return 0; + return this.placeholderLabel.fontSize; + }, + set: function set(value) { + this.placeholderLabel && (this.placeholderLabel.fontSize = value); + } + }, + _N$placeholderFontSize: { + default: void 0, + type: cc.Float + }, + placeholderFontColor: { + get: function get() { + if (!this.placeholderLabel) return cc.Color.BLACK; + return this.placeholderLabel.node.color; + }, + set: function set(value) { + if (this.placeholderLabel) { + this.placeholderLabel.node.color = value; + this.placeholderLabel.node.opacity = value.a; + } + } + }, + _N$placeholderFontColor: void 0, + maxLength: { + tooltip: false, + default: 20 + }, + _N$maxLength: { + default: void 0, + type: cc.Float + }, + stayOnTop: { + default: false, + notify: function notify() { + cc.warn("editBox.stayOnTop is removed since v2.1."); + } + }, + _tabIndex: 0, + tabIndex: { + tooltip: false, + get: function get() { + return this._tabIndex; + }, + set: function set(value) { + if (this._tabIndex !== value) { + this._tabIndex = value; + this._impl && this._impl.setTabIndex(value); + } + } + }, + editingDidBegan: { + default: [], + type: cc.Component.EventHandler + }, + textChanged: { + default: [], + type: cc.Component.EventHandler + }, + editingDidEnded: { + default: [], + type: cc.Component.EventHandler + }, + editingReturn: { + default: [], + type: cc.Component.EventHandler + } + }, + statics: { + _ImplClass: EditBoxImplBase, + KeyboardReturnType: KeyboardReturnType, + InputFlag: InputFlag, + InputMode: InputMode + }, + _init: function _init() { + this._upgradeComp(); + this._isLabelVisible = true; + this.node.on(cc.Node.EventType.SIZE_CHANGED, this._syncSize, this); + var impl = this._impl = new EditBox._ImplClass(); + impl.init(this); + this._updateString(this._string); + this._syncSize(); + }, + _updateBackgroundSprite: function _updateBackgroundSprite() { + var background = this.background; + if (!background) { + var node = this.node.getChildByName("BACKGROUND_SPRITE"); + node || (node = new cc.Node("BACKGROUND_SPRITE")); + background = node.getComponent(cc.Sprite); + background || (background = node.addComponent(cc.Sprite)); + node.parent = this.node; + this.background = background; + } + background.type = cc.Sprite.Type.SLICED; + if (void 0 !== this._N$backgroundImage) { + background.spriteFrame = this._N$backgroundImage; + this._N$backgroundImage = void 0; + } + }, + _updateTextLabel: function _updateTextLabel() { + var textLabel = this.textLabel; + if (!textLabel) { + var node = this.node.getChildByName("TEXT_LABEL"); + node || (node = new cc.Node("TEXT_LABEL")); + textLabel = node.getComponent(Label); + textLabel || (textLabel = node.addComponent(Label)); + node.parent = this.node; + this.textLabel = textLabel; + } + textLabel.node.setAnchorPoint(0, 1); + textLabel.overflow = Label.Overflow.CLAMP; + if (this.inputMode === InputMode.ANY) { + textLabel.verticalAlign = macro.VerticalTextAlignment.TOP; + textLabel.enableWrapText = true; + } else { + textLabel.verticalAlign = macro.VerticalTextAlignment.CENTER; + textLabel.enableWrapText = false; + } + textLabel.string = this._updateLabelStringStyle(this._string); + if (void 0 !== this._N$fontColor) { + textLabel.node.color = this._N$fontColor; + textLabel.node.opacity = this._N$fontColor.a; + this._N$fontColor = void 0; + } + if (void 0 !== this._N$fontSize) { + textLabel.fontSize = this._N$fontSize; + this._N$fontSize = void 0; + } + if (void 0 !== this._N$lineHeight) { + textLabel.lineHeight = this._N$lineHeight; + this._N$lineHeight = void 0; + } + }, + _updatePlaceholderLabel: function _updatePlaceholderLabel() { + var placeholderLabel = this.placeholderLabel; + if (!placeholderLabel) { + var node = this.node.getChildByName("PLACEHOLDER_LABEL"); + node || (node = new cc.Node("PLACEHOLDER_LABEL")); + placeholderLabel = node.getComponent(Label); + placeholderLabel || (placeholderLabel = node.addComponent(Label)); + node.parent = this.node; + this.placeholderLabel = placeholderLabel; + } + placeholderLabel.node.setAnchorPoint(0, 1); + placeholderLabel.overflow = Label.Overflow.CLAMP; + if (this.inputMode === InputMode.ANY) { + placeholderLabel.verticalAlign = macro.VerticalTextAlignment.TOP; + placeholderLabel.enableWrapText = true; + } else { + placeholderLabel.verticalAlign = macro.VerticalTextAlignment.CENTER; + placeholderLabel.enableWrapText = false; + } + placeholderLabel.string = this.placeholder; + if (void 0 !== this._N$placeholderFontColor) { + placeholderLabel.node.color = this._N$placeholderFontColor; + placeholderLabel.node.opacity = this._N$placeholderFontColor.a; + this._N$placeholderFontColor = void 0; + } + if (void 0 !== this._N$placeholderFontSize) { + placeholderLabel.fontSize = this._N$placeholderFontSize; + this._N$placeholderFontSize = void 0; + } + }, + _upgradeComp: function _upgradeComp() { + if (void 0 !== this._N$returnType) { + this.returnType = this._N$returnType; + this._N$returnType = void 0; + } + if (void 0 !== this._N$maxLength) { + this.maxLength = this._N$maxLength; + this._N$maxLength = void 0; + } + void 0 !== this._N$backgroundImage && this._updateBackgroundSprite(); + void 0 === this._N$fontColor && void 0 === this._N$fontSize && void 0 === this._N$lineHeight || this._updateTextLabel(); + void 0 === this._N$placeholderFontColor && void 0 === this._N$placeholderFontSize || this._updatePlaceholderLabel(); + if (void 0 !== this._N$placeholder) { + this.placeholder = this._N$placeholder; + this._N$placeholder = void 0; + } + }, + _syncSize: function _syncSize() { + if (this._impl) { + var size = this.node.getContentSize(); + this._impl.setSize(size.width, size.height); + } + }, + _showLabels: function _showLabels() { + this._isLabelVisible = true; + this._updateLabels(); + }, + _hideLabels: function _hideLabels() { + this._isLabelVisible = false; + this.textLabel && (this.textLabel.node.active = false); + this.placeholderLabel && (this.placeholderLabel.node.active = false); + }, + _updateLabels: function _updateLabels() { + if (this._isLabelVisible) { + var content = this._string; + this.textLabel && (this.textLabel.node.active = "" !== content); + this.placeholderLabel && (this.placeholderLabel.node.active = "" === content); + } + }, + _updateString: function _updateString(text) { + var textLabel = this.textLabel; + if (!textLabel) return; + var displayText = text; + displayText && (displayText = this._updateLabelStringStyle(displayText)); + textLabel.string = displayText; + this._updateLabels(); + }, + _updateLabelStringStyle: function _updateLabelStringStyle(text, ignorePassword) { + var inputFlag = this.inputFlag; + if (ignorePassword || inputFlag !== InputFlag.PASSWORD) inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS ? text = text.toUpperCase() : inputFlag === InputFlag.INITIAL_CAPS_WORD ? text = capitalize(text) : inputFlag === InputFlag.INITIAL_CAPS_SENTENCE && (text = capitalizeFirstLetter(text)); else { + var passwordString = ""; + var len = text.length; + for (var i = 0; i < len; ++i) passwordString += "\u25cf"; + text = passwordString; + } + return text; + }, + editBoxEditingDidBegan: function editBoxEditingDidBegan() { + cc.Component.EventHandler.emitEvents(this.editingDidBegan, this); + this.node.emit("editing-did-began", this); + }, + editBoxEditingDidEnded: function editBoxEditingDidEnded() { + cc.Component.EventHandler.emitEvents(this.editingDidEnded, this); + this.node.emit("editing-did-ended", this); + }, + editBoxTextChanged: function editBoxTextChanged(text) { + text = this._updateLabelStringStyle(text, true); + this.string = text; + cc.Component.EventHandler.emitEvents(this.textChanged, text, this); + this.node.emit("text-changed", this); + }, + editBoxEditingReturn: function editBoxEditingReturn() { + cc.Component.EventHandler.emitEvents(this.editingReturn, this); + this.node.emit("editing-return", this); + }, + onEnable: function onEnable() { + true; + this._registerEvent(); + this._impl && this._impl.enable(); + }, + onDisable: function onDisable() { + true; + this._unregisterEvent(); + this._impl && this._impl.disable(); + }, + onDestroy: function onDestroy() { + this._impl && this._impl.clear(); + }, + __preload: function __preload() { + this._init(); + }, + _registerEvent: function _registerEvent() { + this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + }, + _unregisterEvent: function _unregisterEvent() { + this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this); + this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this); + }, + _onTouchBegan: function _onTouchBegan(event) { + event.stopPropagation(); + }, + _onTouchCancel: function _onTouchCancel(event) { + event.stopPropagation(); + }, + _onTouchEnded: function _onTouchEnded(event) { + this._impl && this._impl.beginEditing(); + event.stopPropagation(); + }, + setFocus: function setFocus() { + cc.errorID(1400, "setFocus()", "focus()"); + this._impl && this._impl.setFocus(true); + }, + focus: function focus() { + this._impl && this._impl.setFocus(true); + }, + blur: function blur() { + this._impl && this._impl.setFocus(false); + }, + isFocused: function isFocused() { + return !!this._impl && this._impl.isFocused(); + }, + update: function update() { + this._impl && this._impl.update(); + } + }); + cc.EditBox = module.exports = EditBox; + cc.sys.isBrowser && require("./WebEditBoxImpl"); + }), { + "../../platform/CCMacro": 244, + "../CCLabel": 151, + "../editbox/EditBoxImplBase": 174, + "./WebEditBoxImpl": 175, + "./types": 177 + }], + 174: [(function (require, module, exports) { + "use strict"; + var EditBoxImplBase = cc.Class({ + ctor: function ctor() { + this._delegate = null; + this._editing = false; + }, + init: function init(delegate) { }, + enable: function enable() { }, + disable: function disable() { + this._editing && this.endEditing(); + }, + clear: function clear() { }, + update: function update() { }, + setTabIndex: function setTabIndex(index) { }, + setSize: function setSize(width, height) { }, + setFocus: function setFocus(value) { + value ? this.beginEditing() : this.endEditing(); + }, + isFocused: function isFocused() { + return this._editing; + }, + beginEditing: function beginEditing() { }, + endEditing: function endEditing() { } + }); + module.exports = EditBoxImplBase; + }), {}], + 175: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var utils = require("../../platform/utils"); + var macro = require("../../platform/CCMacro"); + var Types = require("./types"); + var Label = require("../CCLabel"); + var tabIndexUtil = require("./tabIndexUtil"); + var EditBox = cc.EditBox; + var js = cc.js; + var InputMode = Types.InputMode; + var InputFlag = Types.InputFlag; + var KeyboardReturnType = Types.KeyboardReturnType; + var polyfill = { + zoomInvalid: false + }; + cc.sys.OS_ANDROID !== cc.sys.os || cc.sys.browserType !== cc.sys.BROWSER_TYPE_SOUGOU && cc.sys.browserType !== cc.sys.BROWSER_TYPE_360 || (polyfill.zoomInvalid = true); + var DELAY_TIME = 800; + var SCROLLY = 100; + var LEFT_PADDING = 2; + var _domCount = 0; + var _vec3 = cc.v3(); + var _currentEditBoxImpl = null; + var _fullscreen = false; + var _autoResize = false; + var BaseClass = EditBox._ImplClass; + function WebEditBoxImpl() { + BaseClass.call(this); + this._domId = "EditBoxId_" + ++_domCount; + this._placeholderStyleSheet = null; + this._elem = null; + this._isTextArea = false; + this._worldMat = new _mat["default"](); + this._cameraMat = new _mat["default"](); + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._w = 0; + this._h = 0; + this._cacheViewportRect = cc.rect(0, 0, 0, 0); + this._inputMode = null; + this._inputFlag = null; + this._returnType = null; + this._eventListeners = {}; + this._textLabelFont = null; + this._textLabelFontSize = null; + this._textLabelFontColor = null; + this._textLabelAlign = null; + this._placeholderLabelFont = null; + this._placeholderLabelFontSize = null; + this._placeholderLabelFontColor = null; + this._placeholderLabelAlign = null; + this._placeholderLineHeight = null; + } + js.extend(WebEditBoxImpl, BaseClass); + EditBox._ImplClass = WebEditBoxImpl; + Object.assign(WebEditBoxImpl.prototype, { + init: function init(delegate) { + if (!delegate) return; + this._delegate = delegate; + delegate.inputMode === InputMode.ANY ? this._createTextArea() : this._createInput(); + tabIndexUtil.add(this); + this.setTabIndex(delegate.tabIndex); + this._initStyleSheet(); + this._registerEventListeners(); + this._addDomToGameContainer(); + _fullscreen = cc.view.isAutoFullScreenEnabled(); + _autoResize = cc.view._resizeWithBrowserSize; + }, + clear: function clear() { + this._removeEventListeners(); + this._removeDomFromGameContainer(); + tabIndexUtil.remove(this); + _currentEditBoxImpl === this && (_currentEditBoxImpl = null); + }, + update: function update() { + this._updateMatrix(); + }, + setTabIndex: function setTabIndex(index) { + this._elem.tabIndex = index; + tabIndexUtil.resort(); + }, + setSize: function setSize(width, height) { + var elem = this._elem; + elem.style.width = width + "px"; + elem.style.height = height + "px"; + }, + beginEditing: function beginEditing() { + _currentEditBoxImpl && _currentEditBoxImpl !== this && _currentEditBoxImpl.setFocus(false); + this._editing = true; + _currentEditBoxImpl = this; + this._delegate.editBoxEditingDidBegan(); + this._showDom(); + this._elem.focus(); + }, + endEditing: function endEditing() { + this._elem && this._elem.blur(); + }, + _createInput: function _createInput() { + this._isTextArea = false; + this._elem = document.createElement("input"); + }, + _createTextArea: function _createTextArea() { + this._isTextArea = true; + this._elem = document.createElement("textarea"); + }, + _addDomToGameContainer: function _addDomToGameContainer() { + cc.game.container.appendChild(this._elem); + document.head.appendChild(this._placeholderStyleSheet); + }, + _removeDomFromGameContainer: function _removeDomFromGameContainer() { + var hasElem = utils.contains(cc.game.container, this._elem); + hasElem && cc.game.container.removeChild(this._elem); + var hasStyleSheet = utils.contains(document.head, this._placeholderStyleSheet); + hasStyleSheet && document.head.removeChild(this._placeholderStyleSheet); + delete this._elem; + delete this._placeholderStyleSheet; + }, + _showDom: function _showDom() { + this._updateMaxLength(); + this._updateInputType(); + this._updateStyleSheet(); + this._elem.style.display = ""; + this._delegate._hideLabels(); + cc.sys.isMobile && this._showDomOnMobile(); + }, + _hideDom: function _hideDom() { + var elem = this._elem; + elem.style.display = "none"; + this._delegate._showLabels(); + cc.sys.isMobile && this._hideDomOnMobile(); + }, + _showDomOnMobile: function _showDomOnMobile() { + if (cc.sys.os !== cc.sys.OS_ANDROID) return; + if (_fullscreen) { + cc.view.enableAutoFullScreen(false); + cc.screen.exitFullScreen(); + } + _autoResize && cc.view.resizeWithBrowserSize(false); + this._adjustWindowScroll(); + }, + _hideDomOnMobile: function _hideDomOnMobile() { + if (cc.sys.os === cc.sys.OS_ANDROID) { + _autoResize && cc.view.resizeWithBrowserSize(true); + setTimeout((function () { + _currentEditBoxImpl || _fullscreen && cc.view.enableAutoFullScreen(true); + }), DELAY_TIME); + } + this._scrollBackWindow(); + }, + _adjustWindowScroll: function _adjustWindowScroll() { + var self = this; + setTimeout((function () { + window.scrollY < SCROLLY && self._elem.scrollIntoView({ + block: "start", + inline: "nearest", + behavior: "smooth" + }); + }), DELAY_TIME); + }, + _scrollBackWindow: function _scrollBackWindow() { + setTimeout((function () { + var sys = cc.sys; + if (sys.browserType === sys.BROWSER_TYPE_WECHAT && sys.os === sys.OS_IOS) { + window.top && window.top.scrollTo(0, 0); + return; + } + window.scrollTo(0, 0); + }), DELAY_TIME); + }, + _updateCameraMatrix: function _updateCameraMatrix() { + var node = this._delegate.node; + node.getWorldMatrix(this._worldMat); + var worldMat = this._worldMat; + var nodeContentSize = node._contentSize, nodeAnchorPoint = node._anchorPoint; + _vec3.x = -nodeAnchorPoint.x * nodeContentSize.width; + _vec3.y = -nodeAnchorPoint.y * nodeContentSize.height; + _mat["default"].transform(worldMat, worldMat, _vec3); + false; + var camera = cc.Camera.findCamera(node); + if (!camera) return false; + camera.getWorldToScreenMatrix2D(this._cameraMat); + _mat["default"].mul(this._cameraMat, this._cameraMat, worldMat); + return true; + }, + _updateMatrix: function _updateMatrix() { + if (false, !this._updateCameraMatrix()) return; + var cameraMatm = this._cameraMat.m; + var node = this._delegate.node; + var localView = cc.view; + if (this._m00 === cameraMatm[0] && this._m01 === cameraMatm[1] && this._m04 === cameraMatm[4] && this._m05 === cameraMatm[5] && this._m12 === cameraMatm[12] && this._m13 === cameraMatm[13] && this._w === node._contentSize.width && this._h === node._contentSize.height && this._cacheViewportRect.equals(localView._viewportRect)) return; + this._m00 = cameraMatm[0]; + this._m01 = cameraMatm[1]; + this._m04 = cameraMatm[4]; + this._m05 = cameraMatm[5]; + this._m12 = cameraMatm[12]; + this._m13 = cameraMatm[13]; + this._w = node._contentSize.width; + this._h = node._contentSize.height; + this._cacheViewportRect.set(localView._viewportRect); + var scaleX = localView._scaleX, scaleY = localView._scaleY, viewport = localView._viewportRect, dpr = localView._devicePixelRatio; + scaleX /= dpr; + scaleY /= dpr; + var container = cc.game.container; + var a = cameraMatm[0] * scaleX, b = cameraMatm[1], c = cameraMatm[4], d = cameraMatm[5] * scaleY; + var offsetX = container && container.style.paddingLeft && parseInt(container.style.paddingLeft); + offsetX += viewport.x / dpr; + var offsetY = container && container.style.paddingBottom && parseInt(container.style.paddingBottom); + offsetY += viewport.y / dpr; + var tx = cameraMatm[12] * scaleX + offsetX, ty = cameraMatm[13] * scaleY + offsetY; + if (polyfill.zoomInvalid) { + this.setSize(node.width * a, node.height * d); + a = 1; + d = 1; + } + var elem = this._elem; + var matrix = "matrix(" + a + "," + -b + "," + -c + "," + d + "," + tx + "," + -ty + ")"; + elem.style["transform"] = matrix; + elem.style["-webkit-transform"] = matrix; + elem.style["transform-origin"] = "0px 100% 0px"; + elem.style["-webkit-transform-origin"] = "0px 100% 0px"; + }, + _updateInputType: function _updateInputType() { + var delegate = this._delegate, inputMode = delegate.inputMode, inputFlag = delegate.inputFlag, returnType = delegate.returnType, elem = this._elem; + if (this._inputMode === inputMode && this._inputFlag === inputFlag && this._returnType === returnType) return; + this._inputMode = inputMode; + this._inputFlag = inputFlag; + this._returnType = returnType; + if (this._isTextArea) { + var _textTransform = "none"; + inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS ? _textTransform = "uppercase" : inputFlag === InputFlag.INITIAL_CAPS_WORD && (_textTransform = "capitalize"); + elem.style.textTransform = _textTransform; + return; + } + if (inputFlag === InputFlag.PASSWORD) { + elem.type = "password"; + elem.style.textTransform = "none"; + return; + } + var type = elem.type; + if (inputMode === InputMode.EMAIL_ADDR) type = "email"; else if (inputMode === InputMode.NUMERIC || inputMode === InputMode.DECIMAL) type = "number"; else if (inputMode === InputMode.PHONE_NUMBER) { + type = "number"; + elem.pattern = "[0-9]*"; + } else if (inputMode === InputMode.URL) type = "url"; else { + type = "text"; + returnType === KeyboardReturnType.SEARCH && (type = "search"); + } + elem.type = type; + var textTransform = "none"; + inputFlag === InputFlag.INITIAL_CAPS_ALL_CHARACTERS ? textTransform = "uppercase" : inputFlag === InputFlag.INITIAL_CAPS_WORD && (textTransform = "capitalize"); + elem.style.textTransform = textTransform; + }, + _updateMaxLength: function _updateMaxLength() { + var maxLength = this._delegate.maxLength; + maxLength < 0 && (maxLength = 65535); + this._elem.maxLength = maxLength; + }, + _initStyleSheet: function _initStyleSheet() { + var elem = this._elem; + elem.style.display = "none"; + elem.style.border = 0; + elem.style.background = "transparent"; + elem.style.width = "100%"; + elem.style.height = "100%"; + elem.style.active = 0; + elem.style.outline = "medium"; + elem.style.padding = "0"; + elem.style.textTransform = "none"; + elem.style.position = "absolute"; + elem.style.bottom = "0px"; + elem.style.left = LEFT_PADDING + "px"; + elem.className = "cocosEditBox"; + elem.id = this._domId; + if (this._isTextArea) { + elem.style.resize = "none"; + elem.style.overflow_y = "scroll"; + } else { + elem.type = "text"; + elem.style["-moz-appearance"] = "textfield"; + } + this._placeholderStyleSheet = document.createElement("style"); + }, + _updateStyleSheet: function _updateStyleSheet() { + var delegate = this._delegate, elem = this._elem; + elem.value = delegate.string; + elem.placeholder = delegate.placeholder; + this._updateTextLabel(delegate.textLabel); + this._updatePlaceholderLabel(delegate.placeholderLabel); + }, + _updateTextLabel: function _updateTextLabel(textLabel) { + if (!textLabel) return; + var font = textLabel.font; + font = !font || font instanceof cc.BitmapFont ? textLabel.fontFamily : font._fontFamily; + var fontSize = textLabel.fontSize * textLabel.node.scaleY; + if (this._textLabelFont === font && this._textLabelFontSize === fontSize && this._textLabelFontColor === textLabel.fontColor && this._textLabelAlign === textLabel.horizontalAlign) return; + this._textLabelFont = font; + this._textLabelFontSize = fontSize; + this._textLabelFontColor = textLabel.fontColor; + this._textLabelAlign = textLabel.horizontalAlign; + var elem = this._elem; + elem.style.fontSize = fontSize + "px"; + elem.style.color = textLabel.node.color.toCSS(); + elem.style.fontFamily = font; + switch (textLabel.horizontalAlign) { + case Label.HorizontalAlign.LEFT: + elem.style.textAlign = "left"; + break; + + case Label.HorizontalAlign.CENTER: + elem.style.textAlign = "center"; + break; + + case Label.HorizontalAlign.RIGHT: + elem.style.textAlign = "right"; + } + }, + _updatePlaceholderLabel: function _updatePlaceholderLabel(placeholderLabel) { + if (!placeholderLabel) return; + var font = placeholderLabel.font; + font = !font || font instanceof cc.BitmapFont ? placeholderLabel.fontFamily : placeholderLabel.font._fontFamily; + var fontSize = placeholderLabel.fontSize * placeholderLabel.node.scaleY; + if (this._placeholderLabelFont === font && this._placeholderLabelFontSize === fontSize && this._placeholderLabelFontColor === placeholderLabel.fontColor && this._placeholderLabelAlign === placeholderLabel.horizontalAlign && this._placeholderLineHeight === placeholderLabel.fontSize) return; + this._placeholderLabelFont = font; + this._placeholderLabelFontSize = fontSize; + this._placeholderLabelFontColor = placeholderLabel.fontColor; + this._placeholderLabelAlign = placeholderLabel.horizontalAlign; + this._placeholderLineHeight = placeholderLabel.fontSize; + var styleEl = this._placeholderStyleSheet; + var fontColor = placeholderLabel.node.color.toCSS(); + var lineHeight = placeholderLabel.fontSize; + var horizontalAlign; + switch (placeholderLabel.horizontalAlign) { + case Label.HorizontalAlign.LEFT: + horizontalAlign = "left"; + break; + + case Label.HorizontalAlign.CENTER: + horizontalAlign = "center"; + break; + + case Label.HorizontalAlign.RIGHT: + horizontalAlign = "right"; + } + styleEl.innerHTML = "#" + this._domId + "::-webkit-input-placeholder,#" + this._domId + "::-moz-placeholder,#" + this._domId + ":-ms-input-placeholder{text-transform: initial; font-family: " + font + "; font-size: " + fontSize + "px; color: " + fontColor + "; line-height: " + lineHeight + "px; text-align: " + horizontalAlign + ";}"; + cc.sys.browserType === cc.sys.BROWSER_TYPE_EDGE && (styleEl.innerHTML += "#" + this._domId + "::-ms-clear{display: none;}"); + }, + _registerEventListeners: function _registerEventListeners() { + var impl = this, elem = this._elem, inputLock = false, cbs = this._eventListeners; + cbs.compositionStart = function () { + inputLock = true; + }; + cbs.compositionEnd = function () { + inputLock = false; + impl._delegate.editBoxTextChanged(elem.value); + }; + cbs.onInput = function () { + if (inputLock) return; + var maxLength = impl._delegate.maxLength; + maxLength >= 0 && (elem.value = elem.value.slice(0, maxLength)); + impl._delegate.editBoxTextChanged(elem.value); + }; + cbs.onClick = function (e) { + impl._editing && cc.sys.isMobile && impl._adjustWindowScroll(); + }; + cbs.onKeydown = function (e) { + if (e.keyCode === macro.KEY.enter) { + e.stopPropagation(); + impl._delegate.editBoxEditingReturn(); + impl._isTextArea || elem.blur(); + } else if (e.keyCode === macro.KEY.tab) { + e.stopPropagation(); + e.preventDefault(); + tabIndexUtil.next(impl); + } + }; + cbs.onBlur = function () { + cc.sys.isMobile && inputLock && cbs.compositionEnd(); + impl._editing = false; + _currentEditBoxImpl = null; + impl._hideDom(); + impl._delegate.editBoxEditingDidEnded(); + }; + elem.addEventListener("compositionstart", cbs.compositionStart); + elem.addEventListener("compositionend", cbs.compositionEnd); + elem.addEventListener("input", cbs.onInput); + elem.addEventListener("keydown", cbs.onKeydown); + elem.addEventListener("blur", cbs.onBlur); + elem.addEventListener("touchstart", cbs.onClick); + }, + _removeEventListeners: function _removeEventListeners() { + var elem = this._elem, cbs = this._eventListeners; + elem.removeEventListener("compositionstart", cbs.compositionStart); + elem.removeEventListener("compositionend", cbs.compositionEnd); + elem.removeEventListener("input", cbs.onInput); + elem.removeEventListener("keydown", cbs.onKeydown); + elem.removeEventListener("blur", cbs.onBlur); + elem.removeEventListener("touchstart", cbs.onClick); + cbs.compositionStart = null; + cbs.compositionEnd = null; + cbs.onInput = null; + cbs.onKeydown = null; + cbs.onBlur = null; + cbs.onClick = null; + } + }); + }), { + "../../platform/CCMacro": 244, + "../../platform/utils": 263, + "../../value-types/mat4": 341, + "../CCLabel": 151, + "./tabIndexUtil": 176, + "./types": 177 + }], + 176: [(function (require, module, exports) { + "use strict"; + var tabIndexUtil = { + _tabIndexList: [], + add: function add(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + -1 === index && list.push(editBoxImpl); + }, + remove: function remove(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + -1 !== index && list.splice(index, 1); + }, + resort: function resort() { + this._tabIndexList.sort((function (a, b) { + return a._delegate._tabIndex - b._delegate._tabIndex; + })); + }, + next: function next(editBoxImpl) { + var list = this._tabIndexList; + var index = list.indexOf(editBoxImpl); + editBoxImpl.setFocus(false); + if (-1 !== index) { + var nextImpl = list[index + 1]; + nextImpl && nextImpl._delegate._tabIndex >= 0 && nextImpl.setFocus(true); + } + } + }; + module.exports = tabIndexUtil; + }), {}], + 177: [(function (require, module, exports) { + "use strict"; + var KeyboardReturnType = cc.Enum({ + DEFAULT: 0, + DONE: 1, + SEND: 2, + SEARCH: 3, + GO: 4, + NEXT: 5 + }); + var InputMode = cc.Enum({ + ANY: 0, + EMAIL_ADDR: 1, + NUMERIC: 2, + PHONE_NUMBER: 3, + URL: 4, + DECIMAL: 5, + SINGLE_LINE: 6 + }); + var InputFlag = cc.Enum({ + PASSWORD: 0, + SENSITIVE: 1, + INITIAL_CAPS_WORD: 2, + INITIAL_CAPS_SENTENCE: 3, + INITIAL_CAPS_ALL_CHARACTERS: 4, + DEFAULT: 5 + }); + module.exports = { + KeyboardReturnType: KeyboardReturnType, + InputMode: InputMode, + InputFlag: InputFlag + }; + }), {}], + 178: [(function (require, module, exports) { + "use strict"; + require("./CCComponent"); + require("./CCComponentEventHandler"); + require("./missing-script"); + var SubContextView = require("./SubContextView"); + if (!SubContextView) { + SubContextView = cc.Class({ + name: "cc.SubContextView", + extends: cc.Component + }); + cc.SubContextView = cc.WXSubContextView = cc.SwanSubContextView = SubContextView; + } + var components = [require("./CCSprite"), require("./CCWidget"), require("./CCCanvas"), require("./CCAudioSource"), require("./CCAnimation"), require("./CCButton"), require("./CCLabel"), require("./CCProgressBar"), require("./CCMask"), require("./CCScrollBar"), require("./CCScrollView"), require("./CCPageViewIndicator"), require("./CCPageView"), require("./CCSlider"), require("./CCLayout"), require("./editbox/CCEditBox"), require("./CCLabelOutline"), require("./CCLabelShadow"), require("./CCRichText"), require("./CCToggleContainer"), require("./CCToggleGroup"), require("./CCToggle"), require("./CCBlockInputEvents"), require("./CCMotionStreak"), require("./CCSafeArea"), SubContextView]; + module.exports = components; + }), { + "./CCAnimation": 144, + "./CCAudioSource": 145, + "./CCBlockInputEvents": 146, + "./CCButton": 147, + "./CCCanvas": 148, + "./CCComponent": 149, + "./CCComponentEventHandler": 150, + "./CCLabel": 151, + "./CCLabelOutline": 152, + "./CCLabelShadow": 153, + "./CCLayout": 154, + "./CCMask": 155, + "./CCMotionStreak": 156, + "./CCPageView": 157, + "./CCPageViewIndicator": 158, + "./CCProgressBar": 159, + "./CCRichText": 161, + "./CCSafeArea": 162, + "./CCScrollBar": 163, + "./CCScrollView": 164, + "./CCSlider": 165, + "./CCSprite": 166, + "./CCToggle": 168, + "./CCToggleContainer": 169, + "./CCToggleGroup": 170, + "./CCWidget": 172, + "./SubContextView": void 0, + "./editbox/CCEditBox": 173, + "./missing-script": 179 + }], + 179: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var MissingScript = cc.Class({ + name: "cc.MissingScript", + extends: cc.Component, + editor: { + inspector: "packages://inspector/inspectors/comps/missing-script.js" + }, + properties: { + compiled: { + default: false, + serializable: false + }, + _$erialized: { + default: null, + visible: false, + editorOnly: true + } + }, + ctor: false, + statics: { + safeFindClass: function safeFindClass(id) { + var cls = js._getClassById(id); + if (cls) return cls; + cc.deserialize.reportMissingClass(id); + return MissingScript; + } + }, + onLoad: function onLoad() { + cc.warnID(4600, this.node.name); + } + }); + cc._MissingScript = module.exports = MissingScript; + }), {}], + 180: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + require("../event/event"); + var EventMouse = function EventMouse(eventType, bubbles) { + cc.Event.call(this, cc.Event.MOUSE, bubbles); + this._eventType = eventType; + this._button = 0; + this._x = 0; + this._y = 0; + this._prevX = 0; + this._prevY = 0; + this._scrollX = 0; + this._scrollY = 0; + }; + js.extend(EventMouse, cc.Event); + var proto = EventMouse.prototype; + proto.setScrollData = function (scrollX, scrollY) { + this._scrollX = scrollX; + this._scrollY = scrollY; + }; + proto.getScrollX = function () { + return this._scrollX; + }; + proto.getScrollY = function () { + return this._scrollY; + }; + proto.setLocation = function (x, y) { + this._x = x; + this._y = y; + }; + proto.getLocation = function () { + return cc.v2(this._x, this._y); + }; + proto.getLocationInView = function () { + return cc.v2(this._x, cc.view._designResolutionSize.height - this._y); + }; + proto._setPrevCursor = function (x, y) { + this._prevX = x; + this._prevY = y; + }; + proto.getPreviousLocation = function () { + return cc.v2(this._prevX, this._prevY); + }; + proto.getDelta = function () { + return cc.v2(this._x - this._prevX, this._y - this._prevY); + }; + proto.getDeltaX = function () { + return this._x - this._prevX; + }; + proto.getDeltaY = function () { + return this._y - this._prevY; + }; + proto.setButton = function (button) { + this._button = button; + }; + proto.getButton = function () { + return this._button; + }; + proto.getLocationX = function () { + return this._x; + }; + proto.getLocationY = function () { + return this._y; + }; + EventMouse.NONE = 0; + EventMouse.DOWN = 1; + EventMouse.UP = 2; + EventMouse.MOVE = 3; + EventMouse.SCROLL = 4; + EventMouse.BUTTON_LEFT = 0; + EventMouse.BUTTON_RIGHT = 2; + EventMouse.BUTTON_MIDDLE = 1; + EventMouse.BUTTON_4 = 3; + EventMouse.BUTTON_5 = 4; + EventMouse.BUTTON_6 = 5; + EventMouse.BUTTON_7 = 6; + EventMouse.BUTTON_8 = 7; + var EventTouch = function EventTouch(touchArr, bubbles) { + cc.Event.call(this, cc.Event.TOUCH, bubbles); + this._eventCode = 0; + this._touches = touchArr || []; + this.touch = null; + this.currentTouch = null; + }; + js.extend(EventTouch, cc.Event); + proto = EventTouch.prototype; + proto.getEventCode = function () { + return this._eventCode; + }; + proto.getTouches = function () { + return this._touches; + }; + proto._setEventCode = function (eventCode) { + this._eventCode = eventCode; + }; + proto._setTouches = function (touches) { + this._touches = touches; + }; + proto.setLocation = function (x, y) { + this.touch && this.touch.setTouchInfo(this.touch.getID(), x, y); + }; + proto.getLocation = function () { + return this.touch ? this.touch.getLocation() : cc.v2(); + }; + proto.getLocationInView = function () { + return this.touch ? this.touch.getLocationInView() : cc.v2(); + }; + proto.getPreviousLocation = function () { + return this.touch ? this.touch.getPreviousLocation() : cc.v2(); + }; + proto.getStartLocation = function () { + return this.touch ? this.touch.getStartLocation() : cc.v2(); + }; + proto.getID = function () { + return this.touch ? this.touch.getID() : null; + }; + proto.getDelta = function () { + return this.touch ? this.touch.getDelta() : cc.v2(); + }; + proto.getDeltaX = function () { + return this.touch ? this.touch.getDelta().x : 0; + }; + proto.getDeltaY = function () { + return this.touch ? this.touch.getDelta().y : 0; + }; + proto.getLocationX = function () { + return this.touch ? this.touch.getLocationX() : 0; + }; + proto.getLocationY = function () { + return this.touch ? this.touch.getLocationY() : 0; + }; + EventTouch.MAX_TOUCHES = 5; + EventTouch.BEGAN = 0; + EventTouch.MOVED = 1; + EventTouch.ENDED = 2; + EventTouch.CANCELED = 3; + var EventAcceleration = function EventAcceleration(acc, bubbles) { + cc.Event.call(this, cc.Event.ACCELERATION, bubbles); + this.acc = acc; + }; + js.extend(EventAcceleration, cc.Event); + var EventKeyboard = function EventKeyboard(keyCode, isPressed, bubbles) { + cc.Event.call(this, cc.Event.KEYBOARD, bubbles); + this.keyCode = keyCode; + this.isPressed = isPressed; + }; + js.extend(EventKeyboard, cc.Event); + cc.Event.EventMouse = EventMouse; + cc.Event.EventTouch = EventTouch; + cc.Event.EventAcceleration = EventAcceleration; + cc.Event.EventKeyboard = EventKeyboard; + module.exports = cc.Event; + }), { + "../event/event": 187 + }], + 181: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + cc.EventListener = function (type, listenerID, callback) { + this._onEvent = callback; + this._type = type || 0; + this._listenerID = listenerID || ""; + this._registered = false; + this._fixedPriority = 0; + this._node = null; + this._target = null; + this._paused = true; + this._isEnabled = true; + }; + cc.EventListener.prototype = { + constructor: cc.EventListener, + _setPaused: function _setPaused(paused) { + this._paused = paused; + }, + _isPaused: function _isPaused() { + return this._paused; + }, + _setRegistered: function _setRegistered(registered) { + this._registered = registered; + }, + _isRegistered: function _isRegistered() { + return this._registered; + }, + _getType: function _getType() { + return this._type; + }, + _getListenerID: function _getListenerID() { + return this._listenerID; + }, + _setFixedPriority: function _setFixedPriority(fixedPriority) { + this._fixedPriority = fixedPriority; + }, + _getFixedPriority: function _getFixedPriority() { + return this._fixedPriority; + }, + _setSceneGraphPriority: function _setSceneGraphPriority(node) { + this._target = node; + this._node = node; + }, + _getSceneGraphPriority: function _getSceneGraphPriority() { + return this._node; + }, + checkAvailable: function checkAvailable() { + return null !== this._onEvent; + }, + clone: function clone() { + return null; + }, + setEnabled: function setEnabled(enabled) { + this._isEnabled = enabled; + }, + isEnabled: function isEnabled() { + return this._isEnabled; + }, + retain: function retain() { }, + release: function release() { } + }; + cc.EventListener.UNKNOWN = 0; + cc.EventListener.TOUCH_ONE_BY_ONE = 1; + cc.EventListener.TOUCH_ALL_AT_ONCE = 2; + cc.EventListener.KEYBOARD = 3; + cc.EventListener.MOUSE = 4; + cc.EventListener.ACCELERATION = 6; + cc.EventListener.CUSTOM = 8; + var ListenerID = cc.EventListener.ListenerID = { + MOUSE: "__cc_mouse", + TOUCH_ONE_BY_ONE: "__cc_touch_one_by_one", + TOUCH_ALL_AT_ONCE: "__cc_touch_all_at_once", + KEYBOARD: "__cc_keyboard", + ACCELERATION: "__cc_acceleration" + }; + var Custom = function Custom(listenerId, callback) { + this._onCustomEvent = callback; + cc.EventListener.call(this, cc.EventListener.CUSTOM, listenerId, this._callback); + }; + js.extend(Custom, cc.EventListener); + js.mixin(Custom.prototype, { + _onCustomEvent: null, + _callback: function _callback(event) { + null !== this._onCustomEvent && this._onCustomEvent(event); + }, + checkAvailable: function checkAvailable() { + return cc.EventListener.prototype.checkAvailable.call(this) && null !== this._onCustomEvent; + }, + clone: function clone() { + return new Custom(this._listenerID, this._onCustomEvent); + } + }); + var Mouse = function Mouse() { + cc.EventListener.call(this, cc.EventListener.MOUSE, ListenerID.MOUSE, this._callback); + }; + js.extend(Mouse, cc.EventListener); + js.mixin(Mouse.prototype, { + onMouseDown: null, + onMouseUp: null, + onMouseMove: null, + onMouseScroll: null, + _callback: function _callback(event) { + var eventType = cc.Event.EventMouse; + switch (event._eventType) { + case eventType.DOWN: + this.onMouseDown && this.onMouseDown(event); + break; + + case eventType.UP: + this.onMouseUp && this.onMouseUp(event); + break; + + case eventType.MOVE: + this.onMouseMove && this.onMouseMove(event); + break; + + case eventType.SCROLL: + this.onMouseScroll && this.onMouseScroll(event); + } + }, + clone: function clone() { + var eventListener = new Mouse(); + eventListener.onMouseDown = this.onMouseDown; + eventListener.onMouseUp = this.onMouseUp; + eventListener.onMouseMove = this.onMouseMove; + eventListener.onMouseScroll = this.onMouseScroll; + return eventListener; + }, + checkAvailable: function checkAvailable() { + return true; + } + }); + var TouchOneByOne = function TouchOneByOne() { + cc.EventListener.call(this, cc.EventListener.TOUCH_ONE_BY_ONE, ListenerID.TOUCH_ONE_BY_ONE, null); + this._claimedTouches = []; + }; + js.extend(TouchOneByOne, cc.EventListener); + js.mixin(TouchOneByOne.prototype, { + constructor: TouchOneByOne, + _claimedTouches: null, + swallowTouches: false, + onTouchBegan: null, + onTouchMoved: null, + onTouchEnded: null, + onTouchCancelled: null, + setSwallowTouches: function setSwallowTouches(needSwallow) { + this.swallowTouches = needSwallow; + }, + isSwallowTouches: function isSwallowTouches() { + return this.swallowTouches; + }, + clone: function clone() { + var eventListener = new TouchOneByOne(); + eventListener.onTouchBegan = this.onTouchBegan; + eventListener.onTouchMoved = this.onTouchMoved; + eventListener.onTouchEnded = this.onTouchEnded; + eventListener.onTouchCancelled = this.onTouchCancelled; + eventListener.swallowTouches = this.swallowTouches; + return eventListener; + }, + checkAvailable: function checkAvailable() { + if (!this.onTouchBegan) { + cc.logID(1801); + return false; + } + return true; + } + }); + var TouchAllAtOnce = function TouchAllAtOnce() { + cc.EventListener.call(this, cc.EventListener.TOUCH_ALL_AT_ONCE, ListenerID.TOUCH_ALL_AT_ONCE, null); + }; + js.extend(TouchAllAtOnce, cc.EventListener); + js.mixin(TouchAllAtOnce.prototype, { + constructor: TouchAllAtOnce, + onTouchesBegan: null, + onTouchesMoved: null, + onTouchesEnded: null, + onTouchesCancelled: null, + clone: function clone() { + var eventListener = new TouchAllAtOnce(); + eventListener.onTouchesBegan = this.onTouchesBegan; + eventListener.onTouchesMoved = this.onTouchesMoved; + eventListener.onTouchesEnded = this.onTouchesEnded; + eventListener.onTouchesCancelled = this.onTouchesCancelled; + return eventListener; + }, + checkAvailable: function checkAvailable() { + if (null === this.onTouchesBegan && null === this.onTouchesMoved && null === this.onTouchesEnded && null === this.onTouchesCancelled) { + cc.logID(1802); + return false; + } + return true; + } + }); + var Acceleration = function Acceleration(callback) { + this._onAccelerationEvent = callback; + cc.EventListener.call(this, cc.EventListener.ACCELERATION, ListenerID.ACCELERATION, this._callback); + }; + js.extend(Acceleration, cc.EventListener); + js.mixin(Acceleration.prototype, { + constructor: Acceleration, + _onAccelerationEvent: null, + _callback: function _callback(event) { + this._onAccelerationEvent(event.acc, event); + }, + checkAvailable: function checkAvailable() { + cc.assertID(this._onAccelerationEvent, 1803); + return true; + }, + clone: function clone() { + return new Acceleration(this._onAccelerationEvent); + } + }); + var Keyboard = function Keyboard() { + cc.EventListener.call(this, cc.EventListener.KEYBOARD, ListenerID.KEYBOARD, this._callback); + }; + js.extend(Keyboard, cc.EventListener); + js.mixin(Keyboard.prototype, { + constructor: Keyboard, + onKeyPressed: null, + onKeyReleased: null, + _callback: function _callback(event) { + event.isPressed ? this.onKeyPressed && this.onKeyPressed(event.keyCode, event) : this.onKeyReleased && this.onKeyReleased(event.keyCode, event); + }, + clone: function clone() { + var eventListener = new Keyboard(); + eventListener.onKeyPressed = this.onKeyPressed; + eventListener.onKeyReleased = this.onKeyReleased; + return eventListener; + }, + checkAvailable: function checkAvailable() { + if (null === this.onKeyPressed && null === this.onKeyReleased) { + cc.logID(1800); + return false; + } + return true; + } + }); + cc.EventListener.create = function (argObj) { + cc.assertID(argObj && argObj.event, 1900); + var listenerType = argObj.event; + delete argObj.event; + var listener = null; + if (listenerType === cc.EventListener.TOUCH_ONE_BY_ONE) listener = new TouchOneByOne(); else if (listenerType === cc.EventListener.TOUCH_ALL_AT_ONCE) listener = new TouchAllAtOnce(); else if (listenerType === cc.EventListener.MOUSE) listener = new Mouse(); else if (listenerType === cc.EventListener.CUSTOM) { + listener = new Custom(argObj.eventName, argObj.callback); + delete argObj.eventName; + delete argObj.callback; + } else if (listenerType === cc.EventListener.KEYBOARD) listener = new Keyboard(); else if (listenerType === cc.EventListener.ACCELERATION) { + listener = new Acceleration(argObj.callback); + delete argObj.callback; + } + for (var key in argObj) listener[key] = argObj[key]; + return listener; + }; + module.exports = cc.EventListener; + }), { + "../platform/js": 260 + }], + 182: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + require("./CCEventListener"); + var ListenerID = cc.EventListener.ListenerID; + var _EventListenerVector = function _EventListenerVector() { + this._fixedListeners = []; + this._sceneGraphListeners = []; + this.gt0Index = 0; + }; + _EventListenerVector.prototype = { + constructor: _EventListenerVector, + size: function size() { + return this._fixedListeners.length + this._sceneGraphListeners.length; + }, + empty: function empty() { + return 0 === this._fixedListeners.length && 0 === this._sceneGraphListeners.length; + }, + push: function push(listener) { + 0 === listener._getFixedPriority() ? this._sceneGraphListeners.push(listener) : this._fixedListeners.push(listener); + }, + clearSceneGraphListeners: function clearSceneGraphListeners() { + this._sceneGraphListeners.length = 0; + }, + clearFixedListeners: function clearFixedListeners() { + this._fixedListeners.length = 0; + }, + clear: function clear() { + this._sceneGraphListeners.length = 0; + this._fixedListeners.length = 0; + }, + getFixedPriorityListeners: function getFixedPriorityListeners() { + return this._fixedListeners; + }, + getSceneGraphPriorityListeners: function getSceneGraphPriorityListeners() { + return this._sceneGraphListeners; + } + }; + var __getListenerID = function __getListenerID(event) { + var eventType = cc.Event, type = event.type; + if (type === eventType.ACCELERATION) return ListenerID.ACCELERATION; + if (type === eventType.KEYBOARD) return ListenerID.KEYBOARD; + if (type.startsWith(eventType.MOUSE)) return ListenerID.MOUSE; + type.startsWith(eventType.TOUCH) && cc.logID(2e3); + return ""; + }; + var eventManager = { + DIRTY_NONE: 0, + DIRTY_FIXED_PRIORITY: 1, + DIRTY_SCENE_GRAPH_PRIORITY: 2, + DIRTY_ALL: 3, + _listenersMap: {}, + _priorityDirtyFlagMap: {}, + _nodeListenersMap: {}, + _toAddedListeners: [], + _toRemovedListeners: [], + _dirtyListeners: {}, + _inDispatch: 0, + _isEnabled: false, + _currentTouch: null, + _currentTouchListener: null, + _internalCustomListenerIDs: [], + _setDirtyForNode: function _setDirtyForNode(node) { + var selListeners = this._nodeListenersMap[node._id]; + if (void 0 !== selListeners) for (var j = 0, len = selListeners.length; j < len; j++) { + var selListener = selListeners[j]; + var listenerID = selListener._getListenerID(); + null == this._dirtyListeners[listenerID] && (this._dirtyListeners[listenerID] = true); + } + if (node.childrenCount > 0) { + var children = node._children; + for (var i = 0, _len = children.length; i < _len; i++) this._setDirtyForNode(children[i]); + } + }, + pauseTarget: function pauseTarget(node, recursive) { + if (!(node instanceof cc._BaseNode)) { + cc.warnID(3506); + return; + } + var listeners = this._nodeListenersMap[node._id], i, len; + if (listeners) for (i = 0, len = listeners.length; i < len; i++) listeners[i]._setPaused(true); + if (true === recursive) { + var locChildren = node._children; + for (i = 0, len = locChildren ? locChildren.length : 0; i < len; i++) this.pauseTarget(locChildren[i], true); + } + }, + resumeTarget: function resumeTarget(node, recursive) { + if (!(node instanceof cc._BaseNode)) { + cc.warnID(3506); + return; + } + var listeners = this._nodeListenersMap[node._id], i, len; + if (listeners) for (i = 0, len = listeners.length; i < len; i++) listeners[i]._setPaused(false); + this._setDirtyForNode(node); + if (true === recursive) { + var locChildren = node._children; + for (i = 0, len = locChildren ? locChildren.length : 0; i < len; i++) this.resumeTarget(locChildren[i], true); + } + }, + _addListener: function _addListener(listener) { + 0 === this._inDispatch ? this._forceAddEventListener(listener) : this._toAddedListeners.push(listener); + }, + _forceAddEventListener: function _forceAddEventListener(listener) { + var listenerID = listener._getListenerID(); + var listeners = this._listenersMap[listenerID]; + if (!listeners) { + listeners = new _EventListenerVector(); + this._listenersMap[listenerID] = listeners; + } + listeners.push(listener); + if (0 === listener._getFixedPriority()) { + this._setDirty(listenerID, this.DIRTY_SCENE_GRAPH_PRIORITY); + var node = listener._getSceneGraphPriority(); + null === node && cc.logID(3507); + this._associateNodeAndEventListener(node, listener); + node.activeInHierarchy && this.resumeTarget(node); + } else this._setDirty(listenerID, this.DIRTY_FIXED_PRIORITY); + }, + _getListeners: function _getListeners(listenerID) { + return this._listenersMap[listenerID]; + }, + _updateDirtyFlagForSceneGraph: function _updateDirtyFlagForSceneGraph() { + var locDirtyListeners = this._dirtyListeners; + for (var selKey in locDirtyListeners) this._setDirty(selKey, this.DIRTY_SCENE_GRAPH_PRIORITY); + this._dirtyListeners = {}; + }, + _removeAllListenersInVector: function _removeAllListenersInVector(listenerVector) { + if (!listenerVector) return; + var selListener; + for (var i = listenerVector.length - 1; i >= 0; i--) { + selListener = listenerVector[i]; + selListener._setRegistered(false); + if (null != selListener._getSceneGraphPriority()) { + this._dissociateNodeAndEventListener(selListener._getSceneGraphPriority(), selListener); + selListener._setSceneGraphPriority(null); + } + 0 === this._inDispatch && cc.js.array.removeAt(listenerVector, i); + } + }, + _removeListenersForListenerID: function _removeListenersForListenerID(listenerID) { + var listeners = this._listenersMap[listenerID], i; + if (listeners) { + var fixedPriorityListeners = listeners.getFixedPriorityListeners(); + var sceneGraphPriorityListeners = listeners.getSceneGraphPriorityListeners(); + this._removeAllListenersInVector(sceneGraphPriorityListeners); + this._removeAllListenersInVector(fixedPriorityListeners); + delete this._priorityDirtyFlagMap[listenerID]; + if (!this._inDispatch) { + listeners.clear(); + delete this._listenersMap[listenerID]; + } + } + var locToAddedListeners = this._toAddedListeners, listener; + for (i = locToAddedListeners.length - 1; i >= 0; i--) { + listener = locToAddedListeners[i]; + listener && listener._getListenerID() === listenerID && cc.js.array.removeAt(locToAddedListeners, i); + } + }, + _sortEventListeners: function _sortEventListeners(listenerID) { + var dirtyFlag = this.DIRTY_NONE, locFlagMap = this._priorityDirtyFlagMap; + locFlagMap[listenerID] && (dirtyFlag = locFlagMap[listenerID]); + if (dirtyFlag !== this.DIRTY_NONE) { + locFlagMap[listenerID] = this.DIRTY_NONE; + dirtyFlag & this.DIRTY_FIXED_PRIORITY && this._sortListenersOfFixedPriority(listenerID); + if (dirtyFlag & this.DIRTY_SCENE_GRAPH_PRIORITY) { + var rootEntity = cc.director.getScene(); + rootEntity && this._sortListenersOfSceneGraphPriority(listenerID); + } + } + }, + _sortListenersOfSceneGraphPriority: function _sortListenersOfSceneGraphPriority(listenerID) { + var listeners = this._getListeners(listenerID); + if (!listeners) return; + var sceneGraphListener = listeners.getSceneGraphPriorityListeners(); + if (!sceneGraphListener || 0 === sceneGraphListener.length) return; + listeners.getSceneGraphPriorityListeners().sort(this._sortEventListenersOfSceneGraphPriorityDes); + }, + _sortEventListenersOfSceneGraphPriorityDes: function _sortEventListenersOfSceneGraphPriorityDes(l1, l2) { + var node1 = l1._getSceneGraphPriority(), node2 = l2._getSceneGraphPriority(); + if (!(l2 && node2 && node2._activeInHierarchy && null !== node2._parent)) return -1; + if (!l1 || !node1 || !node1._activeInHierarchy || null === node1._parent) return 1; + var p1 = node1, p2 = node2, ex = false; + while (p1._parent._id !== p2._parent._id) { + p1 = null === p1._parent._parent ? (ex = true) && node2 : p1._parent; + p2 = null === p2._parent._parent ? (ex = true) && node1 : p2._parent; + } + if (p1._id === p2._id) { + if (p1._id === node2._id) return -1; + if (p1._id === node1._id) return 1; + } + return ex ? p1._localZOrder - p2._localZOrder : p2._localZOrder - p1._localZOrder; + }, + _sortListenersOfFixedPriority: function _sortListenersOfFixedPriority(listenerID) { + var listeners = this._listenersMap[listenerID]; + if (!listeners) return; + var fixedListeners = listeners.getFixedPriorityListeners(); + if (!fixedListeners || 0 === fixedListeners.length) return; + fixedListeners.sort(this._sortListenersOfFixedPriorityAsc); + var index = 0; + for (var len = fixedListeners.length; index < len;) { + if (fixedListeners[index]._getFixedPriority() >= 0) break; + ++index; + } + listeners.gt0Index = index; + }, + _sortListenersOfFixedPriorityAsc: function _sortListenersOfFixedPriorityAsc(l1, l2) { + return l1._getFixedPriority() - l2._getFixedPriority(); + }, + _onUpdateListeners: function _onUpdateListeners(listeners) { + var fixedPriorityListeners = listeners.getFixedPriorityListeners(); + var sceneGraphPriorityListeners = listeners.getSceneGraphPriorityListeners(); + var i, selListener, idx, toRemovedListeners = this._toRemovedListeners; + if (sceneGraphPriorityListeners) for (i = sceneGraphPriorityListeners.length - 1; i >= 0; i--) { + selListener = sceneGraphPriorityListeners[i]; + if (!selListener._isRegistered()) { + cc.js.array.removeAt(sceneGraphPriorityListeners, i); + idx = toRemovedListeners.indexOf(selListener); + -1 !== idx && toRemovedListeners.splice(idx, 1); + } + } + if (fixedPriorityListeners) for (i = fixedPriorityListeners.length - 1; i >= 0; i--) { + selListener = fixedPriorityListeners[i]; + if (!selListener._isRegistered()) { + cc.js.array.removeAt(fixedPriorityListeners, i); + idx = toRemovedListeners.indexOf(selListener); + -1 !== idx && toRemovedListeners.splice(idx, 1); + } + } + sceneGraphPriorityListeners && 0 === sceneGraphPriorityListeners.length && listeners.clearSceneGraphListeners(); + fixedPriorityListeners && 0 === fixedPriorityListeners.length && listeners.clearFixedListeners(); + }, + frameUpdateListeners: function frameUpdateListeners() { + var locListenersMap = this._listenersMap, locPriorityDirtyFlagMap = this._priorityDirtyFlagMap; + for (var selKey in locListenersMap) if (locListenersMap[selKey].empty()) { + delete locPriorityDirtyFlagMap[selKey]; + delete locListenersMap[selKey]; + } + var locToAddedListeners = this._toAddedListeners; + if (0 !== locToAddedListeners.length) { + for (var i = 0, len = locToAddedListeners.length; i < len; i++) this._forceAddEventListener(locToAddedListeners[i]); + locToAddedListeners.length = 0; + } + 0 !== this._toRemovedListeners.length && this._cleanToRemovedListeners(); + }, + _updateTouchListeners: function _updateTouchListeners(event) { + var locInDispatch = this._inDispatch; + cc.assertID(locInDispatch > 0, 3508); + if (locInDispatch > 1) return; + var listeners; + listeners = this._listenersMap[ListenerID.TOUCH_ONE_BY_ONE]; + listeners && this._onUpdateListeners(listeners); + listeners = this._listenersMap[ListenerID.TOUCH_ALL_AT_ONCE]; + listeners && this._onUpdateListeners(listeners); + cc.assertID(1 === locInDispatch, 3509); + var locToAddedListeners = this._toAddedListeners; + if (0 !== locToAddedListeners.length) { + for (var i = 0, len = locToAddedListeners.length; i < len; i++) this._forceAddEventListener(locToAddedListeners[i]); + this._toAddedListeners.length = 0; + } + 0 !== this._toRemovedListeners.length && this._cleanToRemovedListeners(); + }, + _cleanToRemovedListeners: function _cleanToRemovedListeners() { + var toRemovedListeners = this._toRemovedListeners; + for (var i = 0; i < toRemovedListeners.length; i++) { + var selListener = toRemovedListeners[i]; + var listeners = this._listenersMap[selListener._getListenerID()]; + if (!listeners) continue; + var idx, fixedPriorityListeners = listeners.getFixedPriorityListeners(), sceneGraphPriorityListeners = listeners.getSceneGraphPriorityListeners(); + if (sceneGraphPriorityListeners) { + idx = sceneGraphPriorityListeners.indexOf(selListener); + -1 !== idx && sceneGraphPriorityListeners.splice(idx, 1); + } + if (fixedPriorityListeners) { + idx = fixedPriorityListeners.indexOf(selListener); + -1 !== idx && fixedPriorityListeners.splice(idx, 1); + } + } + toRemovedListeners.length = 0; + }, + _onTouchEventCallback: function _onTouchEventCallback(listener, argsObj) { + if (!listener._isRegistered()) return false; + var event = argsObj.event, selTouch = event.currentTouch; + event.currentTarget = listener._node; + var isClaimed = false, removedIdx; + var getCode = event.getEventCode(), EventTouch = cc.Event.EventTouch; + if (getCode === EventTouch.BEGAN) { + if (!cc.macro.ENABLE_MULTI_TOUCH && eventManager._currentTouch) { + var node = eventManager._currentTouchListener._node; + if (node && node.activeInHierarchy) return false; + } + if (listener.onTouchBegan) { + isClaimed = listener.onTouchBegan(selTouch, event); + if (isClaimed && listener._registered) { + listener._claimedTouches.push(selTouch); + eventManager._currentTouchListener = listener; + eventManager._currentTouch = selTouch; + } + } + } else if (listener._claimedTouches.length > 0 && -1 !== (removedIdx = listener._claimedTouches.indexOf(selTouch))) { + isClaimed = true; + if (!cc.macro.ENABLE_MULTI_TOUCH && eventManager._currentTouch && eventManager._currentTouch !== selTouch) return false; + if (getCode === EventTouch.MOVED && listener.onTouchMoved) listener.onTouchMoved(selTouch, event); else if (getCode === EventTouch.ENDED) { + listener.onTouchEnded && listener.onTouchEnded(selTouch, event); + listener._registered && listener._claimedTouches.splice(removedIdx, 1); + eventManager._clearCurTouch(); + } else if (getCode === EventTouch.CANCELED) { + listener.onTouchCancelled && listener.onTouchCancelled(selTouch, event); + listener._registered && listener._claimedTouches.splice(removedIdx, 1); + eventManager._clearCurTouch(); + } + } + if (event.isStopped()) { + eventManager._updateTouchListeners(event); + return true; + } + if (isClaimed && listener.swallowTouches) { + argsObj.needsMutableSet && argsObj.touches.splice(selTouch, 1); + return true; + } + return false; + }, + _dispatchTouchEvent: function _dispatchTouchEvent(event) { + this._sortEventListeners(ListenerID.TOUCH_ONE_BY_ONE); + this._sortEventListeners(ListenerID.TOUCH_ALL_AT_ONCE); + var oneByOneListeners = this._getListeners(ListenerID.TOUCH_ONE_BY_ONE); + var allAtOnceListeners = this._getListeners(ListenerID.TOUCH_ALL_AT_ONCE); + if (null === oneByOneListeners && null === allAtOnceListeners) return; + var originalTouches = event.getTouches(), mutableTouches = cc.js.array.copy(originalTouches); + var oneByOneArgsObj = { + event: event, + needsMutableSet: oneByOneListeners && allAtOnceListeners, + touches: mutableTouches, + selTouch: null + }; + if (oneByOneListeners) for (var i = 0; i < originalTouches.length; i++) { + event.currentTouch = originalTouches[i]; + event._propagationStopped = event._propagationImmediateStopped = false; + this._dispatchEventToListeners(oneByOneListeners, this._onTouchEventCallback, oneByOneArgsObj); + } + if (allAtOnceListeners && mutableTouches.length > 0) { + this._dispatchEventToListeners(allAtOnceListeners, this._onTouchesEventCallback, { + event: event, + touches: mutableTouches + }); + if (event.isStopped()) return; + } + this._updateTouchListeners(event); + }, + _onTouchesEventCallback: function _onTouchesEventCallback(listener, callbackParams) { + if (!listener._registered) return false; + var EventTouch = cc.Event.EventTouch, event = callbackParams.event, touches = callbackParams.touches, getCode = event.getEventCode(); + event.currentTarget = listener._node; + getCode === EventTouch.BEGAN && listener.onTouchesBegan ? listener.onTouchesBegan(touches, event) : getCode === EventTouch.MOVED && listener.onTouchesMoved ? listener.onTouchesMoved(touches, event) : getCode === EventTouch.ENDED && listener.onTouchesEnded ? listener.onTouchesEnded(touches, event) : getCode === EventTouch.CANCELED && listener.onTouchesCancelled && listener.onTouchesCancelled(touches, event); + if (event.isStopped()) { + eventManager._updateTouchListeners(event); + return true; + } + return false; + }, + _associateNodeAndEventListener: function _associateNodeAndEventListener(node, listener) { + var listeners = this._nodeListenersMap[node._id]; + if (!listeners) { + listeners = []; + this._nodeListenersMap[node._id] = listeners; + } + listeners.push(listener); + }, + _dissociateNodeAndEventListener: function _dissociateNodeAndEventListener(node, listener) { + var listeners = this._nodeListenersMap[node._id]; + if (listeners) { + cc.js.array.remove(listeners, listener); + 0 === listeners.length && delete this._nodeListenersMap[node._id]; + } + }, + _dispatchEventToListeners: function _dispatchEventToListeners(listeners, onEvent, eventOrArgs) { + var shouldStopPropagation = false; + var fixedPriorityListeners = listeners.getFixedPriorityListeners(); + var sceneGraphPriorityListeners = listeners.getSceneGraphPriorityListeners(); + var i = 0, j, selListener; + if (fixedPriorityListeners && 0 !== fixedPriorityListeners.length) for (; i < listeners.gt0Index; ++i) { + selListener = fixedPriorityListeners[i]; + if (selListener.isEnabled() && !selListener._isPaused() && selListener._isRegistered() && onEvent(selListener, eventOrArgs)) { + shouldStopPropagation = true; + break; + } + } + if (sceneGraphPriorityListeners && !shouldStopPropagation) for (j = 0; j < sceneGraphPriorityListeners.length; j++) { + selListener = sceneGraphPriorityListeners[j]; + if (selListener.isEnabled() && !selListener._isPaused() && selListener._isRegistered() && onEvent(selListener, eventOrArgs)) { + shouldStopPropagation = true; + break; + } + } + if (fixedPriorityListeners && !shouldStopPropagation) for (; i < fixedPriorityListeners.length; ++i) { + selListener = fixedPriorityListeners[i]; + if (selListener.isEnabled() && !selListener._isPaused() && selListener._isRegistered() && onEvent(selListener, eventOrArgs)) { + shouldStopPropagation = true; + break; + } + } + }, + _setDirty: function _setDirty(listenerID, flag) { + var locDirtyFlagMap = this._priorityDirtyFlagMap; + null == locDirtyFlagMap[listenerID] ? locDirtyFlagMap[listenerID] = flag : locDirtyFlagMap[listenerID] = flag | locDirtyFlagMap[listenerID]; + }, + _sortNumberAsc: function _sortNumberAsc(a, b) { + return a - b; + }, + hasEventListener: function hasEventListener(listenerID) { + return !!this._getListeners(listenerID); + }, + addListener: function addListener(listener, nodeOrPriority) { + cc.assertID(listener && nodeOrPriority, 3503); + if (!(cc.js.isNumber(nodeOrPriority) || nodeOrPriority instanceof cc._BaseNode)) { + cc.warnID(3506); + return; + } + if (listener instanceof cc.EventListener) { + if (listener._isRegistered()) { + cc.logID(3505); + return; + } + } else { + cc.assertID(!cc.js.isNumber(nodeOrPriority), 3504); + listener = cc.EventListener.create(listener); + } + if (!listener.checkAvailable()) return; + if (cc.js.isNumber(nodeOrPriority)) { + if (0 === nodeOrPriority) { + cc.logID(3500); + return; + } + listener._setSceneGraphPriority(null); + listener._setFixedPriority(nodeOrPriority); + listener._setRegistered(true); + listener._setPaused(false); + this._addListener(listener); + } else { + listener._setSceneGraphPriority(nodeOrPriority); + listener._setFixedPriority(0); + listener._setRegistered(true); + this._addListener(listener); + } + return listener; + }, + addCustomListener: function addCustomListener(eventName, callback) { + var listener = new cc.EventListener.create({ + event: cc.EventListener.CUSTOM, + eventName: eventName, + callback: callback + }); + this.addListener(listener, 1); + return listener; + }, + removeListener: function removeListener(listener) { + if (null == listener) return; + var isFound, locListener = this._listenersMap; + for (var selKey in locListener) { + var listeners = locListener[selKey]; + var fixedPriorityListeners = listeners.getFixedPriorityListeners(), sceneGraphPriorityListeners = listeners.getSceneGraphPriorityListeners(); + isFound = this._removeListenerInVector(sceneGraphPriorityListeners, listener); + if (isFound) this._setDirty(listener._getListenerID(), this.DIRTY_SCENE_GRAPH_PRIORITY); else { + isFound = this._removeListenerInVector(fixedPriorityListeners, listener); + isFound && this._setDirty(listener._getListenerID(), this.DIRTY_FIXED_PRIORITY); + } + if (listeners.empty()) { + delete this._priorityDirtyFlagMap[listener._getListenerID()]; + delete locListener[selKey]; + } + if (isFound) break; + } + if (!isFound) { + var locToAddedListeners = this._toAddedListeners; + for (var i = locToAddedListeners.length - 1; i >= 0; i--) { + var selListener = locToAddedListeners[i]; + if (selListener === listener) { + cc.js.array.removeAt(locToAddedListeners, i); + selListener._setRegistered(false); + break; + } + } + } + this._currentTouchListener === listener && this._clearCurTouch(); + }, + _clearCurTouch: function _clearCurTouch() { + this._currentTouchListener = null; + this._currentTouch = null; + }, + _removeListenerInCallback: function _removeListenerInCallback(listeners, callback) { + if (null == listeners) return false; + for (var i = listeners.length - 1; i >= 0; i--) { + var selListener = listeners[i]; + if (selListener._onCustomEvent === callback || selListener._onEvent === callback) { + selListener._setRegistered(false); + if (null != selListener._getSceneGraphPriority()) { + this._dissociateNodeAndEventListener(selListener._getSceneGraphPriority(), selListener); + selListener._setSceneGraphPriority(null); + } + 0 === this._inDispatch ? cc.js.array.removeAt(listeners, i) : this._toRemovedListeners.push(selListener); + return true; + } + } + return false; + }, + _removeListenerInVector: function _removeListenerInVector(listeners, listener) { + if (null == listeners) return false; + for (var i = listeners.length - 1; i >= 0; i--) { + var selListener = listeners[i]; + if (selListener === listener) { + selListener._setRegistered(false); + if (null != selListener._getSceneGraphPriority()) { + this._dissociateNodeAndEventListener(selListener._getSceneGraphPriority(), selListener); + selListener._setSceneGraphPriority(null); + } + 0 === this._inDispatch ? cc.js.array.removeAt(listeners, i) : this._toRemovedListeners.push(selListener); + return true; + } + } + return false; + }, + removeListeners: function removeListeners(listenerType, recursive) { + var i, _t = this; + if (!(cc.js.isNumber(listenerType) || listenerType instanceof cc._BaseNode)) { + cc.warnID(3506); + return; + } + if (void 0 !== listenerType._id) { + var listeners = _t._nodeListenersMap[listenerType._id], i; + if (listeners) { + var listenersCopy = cc.js.array.copy(listeners); + for (i = 0; i < listenersCopy.length; i++) _t.removeListener(listenersCopy[i]); + delete _t._nodeListenersMap[listenerType._id]; + } + var locToAddedListeners = _t._toAddedListeners; + for (i = 0; i < locToAddedListeners.length;) { + var listener = locToAddedListeners[i]; + if (listener._getSceneGraphPriority() === listenerType) { + listener._setSceneGraphPriority(null); + listener._setRegistered(false); + locToAddedListeners.splice(i, 1); + } else ++i; + } + if (true === recursive) { + var locChildren = listenerType.children, len; + for (i = 0, len = locChildren.length; i < len; i++) _t.removeListeners(locChildren[i], true); + } + } else listenerType === cc.EventListener.TOUCH_ONE_BY_ONE ? _t._removeListenersForListenerID(ListenerID.TOUCH_ONE_BY_ONE) : listenerType === cc.EventListener.TOUCH_ALL_AT_ONCE ? _t._removeListenersForListenerID(ListenerID.TOUCH_ALL_AT_ONCE) : listenerType === cc.EventListener.MOUSE ? _t._removeListenersForListenerID(ListenerID.MOUSE) : listenerType === cc.EventListener.ACCELERATION ? _t._removeListenersForListenerID(ListenerID.ACCELERATION) : listenerType === cc.EventListener.KEYBOARD ? _t._removeListenersForListenerID(ListenerID.KEYBOARD) : cc.logID(3501); + }, + removeCustomListeners: function removeCustomListeners(customEventName) { + this._removeListenersForListenerID(customEventName); + }, + removeAllListeners: function removeAllListeners() { + var locListeners = this._listenersMap, locInternalCustomEventIDs = this._internalCustomListenerIDs; + for (var selKey in locListeners) -1 === locInternalCustomEventIDs.indexOf(selKey) && this._removeListenersForListenerID(selKey); + }, + setPriority: function setPriority(listener, fixedPriority) { + if (null == listener) return; + var locListeners = this._listenersMap; + for (var selKey in locListeners) { + var selListeners = locListeners[selKey]; + var fixedPriorityListeners = selListeners.getFixedPriorityListeners(); + if (fixedPriorityListeners) { + var found = fixedPriorityListeners.indexOf(listener); + if (-1 !== found) { + null != listener._getSceneGraphPriority() && cc.logID(3502); + if (listener._getFixedPriority() !== fixedPriority) { + listener._setFixedPriority(fixedPriority); + this._setDirty(listener._getListenerID(), this.DIRTY_FIXED_PRIORITY); + } + return; + } + } + } + }, + setEnabled: function setEnabled(enabled) { + this._isEnabled = enabled; + }, + isEnabled: function isEnabled() { + return this._isEnabled; + }, + dispatchEvent: function dispatchEvent(event) { + if (!this._isEnabled) return; + this._updateDirtyFlagForSceneGraph(); + this._inDispatch++; + if (!event || !event.getType) { + cc.errorID(3511); + return; + } + if (event.getType().startsWith(cc.Event.TOUCH)) { + this._dispatchTouchEvent(event); + this._inDispatch--; + return; + } + var listenerID = __getListenerID(event); + this._sortEventListeners(listenerID); + var selListeners = this._listenersMap[listenerID]; + if (null != selListeners) { + this._dispatchEventToListeners(selListeners, this._onListenerCallback, event); + this._onUpdateListeners(selListeners); + } + this._inDispatch--; + }, + _onListenerCallback: function _onListenerCallback(listener, event) { + event.currentTarget = listener._target; + listener._onEvent(event); + return event.isStopped(); + }, + dispatchCustomEvent: function dispatchCustomEvent(eventName, optionalUserData) { + var ev = new cc.Event.EventCustom(eventName); + ev.setUserData(optionalUserData); + this.dispatchEvent(ev); + } + }; + js.get(cc, "eventManager", (function () { + cc.errorID(1405, "cc.eventManager", "cc.EventTarget or cc.systemEvent"); + return eventManager; + })); + module.exports = cc.internal.eventManager = eventManager; + }), { + "../platform/js": 260, + "./CCEventListener": 181 + }], + 183: [(function (require, module, exports) { + "use strict"; + cc.Touch = function (x, y, id) { + this._lastModified = 0; + this.setTouchInfo(id, x, y); + }; + cc.Touch.prototype = { + constructor: cc.Touch, + getLocation: function getLocation() { + return cc.v2(this._point.x, this._point.y); + }, + getLocationX: function getLocationX() { + return this._point.x; + }, + getLocationY: function getLocationY() { + return this._point.y; + }, + getPreviousLocation: function getPreviousLocation() { + return cc.v2(this._prevPoint.x, this._prevPoint.y); + }, + getStartLocation: function getStartLocation() { + return cc.v2(this._startPoint.x, this._startPoint.y); + }, + getDelta: function getDelta() { + return this._point.sub(this._prevPoint); + }, + getLocationInView: function getLocationInView() { + return cc.v2(this._point.x, cc.view._designResolutionSize.height - this._point.y); + }, + getPreviousLocationInView: function getPreviousLocationInView() { + return cc.v2(this._prevPoint.x, cc.view._designResolutionSize.height - this._prevPoint.y); + }, + getStartLocationInView: function getStartLocationInView() { + return cc.v2(this._startPoint.x, cc.view._designResolutionSize.height - this._startPoint.y); + }, + getID: function getID() { + return this._id; + }, + setTouchInfo: function setTouchInfo(id, x, y) { + this._prevPoint = this._point; + this._point = cc.v2(x || 0, y || 0); + this._id = id; + if (!this._startPointCaptured) { + this._startPoint = cc.v2(this._point); + cc.view._convertPointWithScale(this._startPoint); + this._startPointCaptured = true; + } + }, + _setPoint: function _setPoint(x, y) { + if (void 0 === y) { + this._point.x = x.x; + this._point.y = x.y; + } else { + this._point.x = x; + this._point.y = y; + } + }, + _setPrevPoint: function _setPrevPoint(x, y) { + this._prevPoint = void 0 === y ? cc.v2(x.x, x.y) : cc.v2(x || 0, y || 0); + } + }; + }), {}], + 184: [(function (require, module, exports) { + "use strict"; + require("./CCEvent"); + require("./CCTouch"); + require("./CCEventListener"); + var eventManager = require("./CCEventManager"); + module.exports = eventManager; + false; + }), { + "./CCEvent": 180, + "./CCEventListener": 181, + "./CCEventManager": 182, + "./CCTouch": 183 + }], + 185: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + var CallbacksInvoker = require("../platform/callbacks-invoker"); + function EventListeners() { + CallbacksInvoker.call(this); + } + js.extend(EventListeners, CallbacksInvoker); + EventListeners.prototype.emit = function (event, captureListeners) { + var key = event.type; + var list = this._callbackTable[key]; + if (list) { + var rootInvoker = !list.isInvoking; + list.isInvoking = true; + var infos = list.callbackInfos; + for (var i = 0, len = infos.length; i < len; ++i) { + var info = infos[i]; + if (info && info.callback) { + info.callback.call(info.target, event, captureListeners); + if (event._propagationImmediateStopped) break; + } + } + if (rootInvoker) { + list.isInvoking = false; + list.containCanceled && list.purgeCanceled(); + } + } + }; + module.exports = EventListeners; + false; + }), { + "../platform/callbacks-invoker": 252 + }], + 186: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + var CallbacksInvoker = require("../platform/callbacks-invoker"); + var fastRemove = js.array.fastRemove; + function EventTarget() { + CallbacksInvoker.call(this); + } + js.extend(EventTarget, CallbacksInvoker); + var proto = EventTarget.prototype; + proto.__on = proto.on; + proto.on = function (type, callback, target, once) { + if (!callback) { + cc.errorID(6800); + return; + } + if (!this.hasEventListener(type, callback, target)) { + this.__on(type, callback, target, once); + target && target.__eventTargets && target.__eventTargets.push(this); + } + return callback; + }; + proto.__off = proto.off; + proto.off = function (type, callback, target) { + if (callback) { + this.__off(type, callback, target); + target && target.__eventTargets && fastRemove(target.__eventTargets, this); + } else { + var list = this._callbackTable[type]; + if (!list) return; + var infos = list.callbackInfos; + for (var i = 0; i < infos.length; ++i) { + var _target = infos[i] && infos[i].target; + _target && _target.__eventTargets && fastRemove(_target.__eventTargets, this); + } + this.removeAll(type); + } + }; + proto.targetOff = function (target) { + this.removeAll(target); + target && target.__eventTargets && fastRemove(target.__eventTargets, this); + }; + proto.once = function (type, callback, target) { + this.on(type, callback, target, true); + }; + proto.dispatchEvent = function (event) { + this.emit(event.type, event); + }; + proto.clear = function () { + for (var key in this._callbackTable) { + var list = this._callbackTable[key]; + var infos = list.callbackInfos; + for (var i = infos.length - 1; i >= 0; i--) { + var info = infos[i]; + info && this.off(key, info.callback, info.target); + } + } + }; + cc.EventTarget = module.exports = EventTarget; + }), { + "../platform/callbacks-invoker": 252, + "../platform/js": 260 + }], + 187: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + cc.Event = function (type, bubbles) { + this.type = type; + this.bubbles = !!bubbles; + this.target = null; + this.currentTarget = null; + this.eventPhase = 0; + this._propagationStopped = false; + this._propagationImmediateStopped = false; + }; + cc.Event.prototype = { + constructor: cc.Event, + unuse: function unuse() { + this.type = cc.Event.NO_TYPE; + this.target = null; + this.currentTarget = null; + this.eventPhase = cc.Event.NONE; + this._propagationStopped = false; + this._propagationImmediateStopped = false; + }, + reuse: function reuse(type, bubbles) { + this.type = type; + this.bubbles = bubbles || false; + }, + stopPropagation: function stopPropagation() { + this._propagationStopped = true; + }, + stopPropagationImmediate: function stopPropagationImmediate() { + this._propagationImmediateStopped = true; + }, + isStopped: function isStopped() { + return this._propagationStopped || this._propagationImmediateStopped; + }, + getCurrentTarget: function getCurrentTarget() { + return this.currentTarget; + }, + getType: function getType() { + return this.type; + } + }; + cc.Event.NO_TYPE = "no_type"; + cc.Event.TOUCH = "touch"; + cc.Event.MOUSE = "mouse"; + cc.Event.KEYBOARD = "keyboard"; + cc.Event.ACCELERATION = "acceleration"; + cc.Event.NONE = 0; + cc.Event.CAPTURING_PHASE = 1; + cc.Event.AT_TARGET = 2; + cc.Event.BUBBLING_PHASE = 3; + var EventCustom = function EventCustom(type, bubbles) { + cc.Event.call(this, type, bubbles); + this.detail = null; + }; + js.extend(EventCustom, cc.Event); + EventCustom.prototype.reset = EventCustom; + EventCustom.prototype.setUserData = function (data) { + this.detail = data; + }; + EventCustom.prototype.getUserData = function () { + return this.detail; + }; + EventCustom.prototype.getEventName = cc.Event.prototype.getType; + var MAX_POOL_SIZE = 10; + var _eventPool = new js.Pool(MAX_POOL_SIZE); + EventCustom.put = function (event) { + _eventPool.put(event); + }; + EventCustom.get = function (type, bubbles) { + var event = _eventPool._get(); + event ? event.reset(type, bubbles) : event = new EventCustom(type, bubbles); + return event; + }; + cc.Event.EventCustom = EventCustom; + module.exports = cc.Event; + }), { + "../platform/js": 260 + }], + 188: [(function (require, module, exports) { + "use strict"; + require("./event"); + require("./event-listeners"); + require("./event-target"); + require("./system-event"); + }), { + "./event": 187, + "./event-listeners": 185, + "./event-target": 186, + "./system-event": 189 + }], + 189: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("../event/event-target"); + var eventManager = require("../event-manager"); + var inputManger = require("../platform/CCInputManager"); + var EventType = cc.Enum({ + KEY_DOWN: "keydown", + KEY_UP: "keyup", + DEVICEMOTION: "devicemotion" + }); + var keyboardListener = null; + var accelerationListener = null; + var SystemEvent = cc.Class({ + name: "SystemEvent", + extends: EventTarget, + statics: { + EventType: EventType + }, + setAccelerometerEnabled: function setAccelerometerEnabled(isEnable) { + false; + isEnable && window.DeviceMotionEvent && "function" === typeof DeviceMotionEvent.requestPermission ? DeviceMotionEvent.requestPermission().then((function (response) { + console.log("Device Motion Event request permission: " + response); + inputManger.setAccelerometerEnabled("granted" === response); + })) : inputManger.setAccelerometerEnabled(isEnable); + }, + setAccelerometerInterval: function setAccelerometerInterval(interval) { + false; + inputManger.setAccelerometerInterval(interval); + }, + on: function on(type, callback, target, once) { + false; + this._super(type, callback, target, once); + if (type === EventType.KEY_DOWN || type === EventType.KEY_UP) { + keyboardListener || (keyboardListener = cc.EventListener.create({ + event: cc.EventListener.KEYBOARD, + onKeyPressed: function onKeyPressed(keyCode, event) { + event.type = EventType.KEY_DOWN; + cc.systemEvent.dispatchEvent(event); + }, + onKeyReleased: function onKeyReleased(keyCode, event) { + event.type = EventType.KEY_UP; + cc.systemEvent.dispatchEvent(event); + } + })); + eventManager.hasEventListener(cc.EventListener.ListenerID.KEYBOARD) || eventManager.addListener(keyboardListener, 1); + } + if (type === EventType.DEVICEMOTION) { + accelerationListener || (accelerationListener = cc.EventListener.create({ + event: cc.EventListener.ACCELERATION, + callback: function callback(acc, event) { + event.type = EventType.DEVICEMOTION; + cc.systemEvent.dispatchEvent(event); + } + })); + eventManager.hasEventListener(cc.EventListener.ListenerID.ACCELERATION) || eventManager.addListener(accelerationListener, 1); + } + }, + off: function off(type, callback, target) { + false; + this._super(type, callback, target); + if (keyboardListener && (type === EventType.KEY_DOWN || type === EventType.KEY_UP)) { + var hasKeyDownEventListener = this.hasEventListener(EventType.KEY_DOWN); + var hasKeyUpEventListener = this.hasEventListener(EventType.KEY_UP); + hasKeyDownEventListener || hasKeyUpEventListener || eventManager.removeListener(keyboardListener); + } + accelerationListener && type === EventType.DEVICEMOTION && eventManager.removeListener(accelerationListener); + } + }); + cc.SystemEvent = module.exports = SystemEvent; + cc.systemEvent = new cc.SystemEvent(); + }), { + "../event-manager": 184, + "../event/event-target": 186, + "../platform/CCInputManager": 243 + }], + 190: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../value-types/vec3")); + var _mat = _interopRequireDefault(require("../value-types/mat3")); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _v3_tmp = new _vec["default"](); + var _v3_tmp2 = new _vec["default"](); + var _m3_tmp = new _mat["default"](); + var transform_extent_m4 = function transform_extent_m4(out, extent, m4) { + var _m3_tmpm = _m3_tmp.m, m4m = m4.m; + _m3_tmpm[0] = Math.abs(m4m[0]); + _m3_tmpm[1] = Math.abs(m4m[1]); + _m3_tmpm[2] = Math.abs(m4m[2]); + _m3_tmpm[3] = Math.abs(m4m[4]); + _m3_tmpm[4] = Math.abs(m4m[5]); + _m3_tmpm[5] = Math.abs(m4m[6]); + _m3_tmpm[6] = Math.abs(m4m[8]); + _m3_tmpm[7] = Math.abs(m4m[9]); + _m3_tmpm[8] = Math.abs(m4m[10]); + _vec["default"].transformMat3(out, extent, _m3_tmp); + }; + var aabb = (function () { + aabb.create = function create(px, py, pz, w, h, l) { + return new aabb(px, py, pz, w, h, l); + }; + aabb.clone = function clone(a) { + return new aabb(a.center.x, a.center.y, a.center.z, a.halfExtents.x, a.halfExtents.y, a.halfExtents.z); + }; + aabb.copy = function copy(out, a) { + _vec["default"].copy(out.center, a.center); + _vec["default"].copy(out.halfExtents, a.halfExtents); + return out; + }; + aabb.fromPoints = function fromPoints(out, minPos, maxPos) { + _vec["default"].scale(out.center, _vec["default"].add(_v3_tmp, minPos, maxPos), .5); + _vec["default"].scale(out.halfExtents, _vec["default"].sub(_v3_tmp2, maxPos, minPos), .5); + return out; + }; + aabb.set = function set(out, px, py, pz, w, h, l) { + _vec["default"].set(out.center, px, py, pz); + _vec["default"].set(out.halfExtents, w, h, l); + return out; + }; + function aabb(px, py, pz, w, h, l) { + this.center = void 0; + this.halfExtents = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_AABB; + this.center = new _vec["default"](px, py, pz); + this.halfExtents = new _vec["default"](w, h, l); + } + var _proto = aabb.prototype; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + _vec["default"].sub(minPos, this.center, this.halfExtents); + _vec["default"].add(maxPos, this.center, this.halfExtents); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + out || (out = this); + _vec["default"].transformMat4(out.center, this.center, m); + transform_extent_m4(out.halfExtents, this.halfExtents, m); + }; + return aabb; + })(); + exports["default"] = aabb; + module.exports = exports["default"]; + }), { + "../value-types/mat3": 340, + "../value-types/vec3": 349, + "./enums": 192 + }], + 191: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.point_plane = point_plane; + exports.pt_point_plane = pt_point_plane; + exports.pt_point_aabb = pt_point_aabb; + exports.pt_point_obb = pt_point_obb; + var _valueTypes = require("../value-types"); + var X = new _valueTypes.Vec3(); + var Y = new _valueTypes.Vec3(); + var Z = new _valueTypes.Vec3(); + var d = new _valueTypes.Vec3(); + var min = new _valueTypes.Vec3(); + var max = new _valueTypes.Vec3(); + var u = new Array(3); + var e = new Array(3); + function point_plane(point, plane_) { + return _valueTypes.Vec3.dot(plane_.n, point) - plane_.d; + } + function pt_point_plane(out, point, plane_) { + var t = point_plane(point, plane_); + return _valueTypes.Vec3.subtract(out, point, _valueTypes.Vec3.multiplyScalar(out, plane_.n, t)); + } + function pt_point_aabb(out, point, aabb_) { + _valueTypes.Vec3.copy(out, point); + _valueTypes.Vec3.subtract(min, aabb_.center, aabb_.halfExtents); + _valueTypes.Vec3.add(max, aabb_.center, aabb_.halfExtents); + out.x = out.x < min.x ? min.x : out.x; + out.y = out.y < min.x ? min.y : out.y; + out.z = out.z < min.x ? min.z : out.z; + out.x = out.x > max.x ? max.x : out.x; + out.y = out.y > max.x ? max.y : out.y; + out.z = out.z > max.x ? max.z : out.z; + return out; + } + function pt_point_obb(out, point, obb_) { + var obbm = obb_.orientation.m; + _valueTypes.Vec3.set(X, obbm[0], obbm[1], obbm[2]); + _valueTypes.Vec3.set(Y, obbm[3], obbm[4], obbm[5]); + _valueTypes.Vec3.set(Z, obbm[6], obbm[7], obbm[8]); + u[0] = X; + u[1] = Y; + u[2] = Z; + e[0] = obb_.halfExtents.x; + e[1] = obb_.halfExtents.y; + e[2] = obb_.halfExtents.z; + _valueTypes.Vec3.subtract(d, point, obb_.center); + _valueTypes.Vec3.set(out, obb_.center.x, obb_.center.y, obb_.center.z); + for (var i = 0; i < 3; i++) { + var dist = _valueTypes.Vec3.dot(d, u[i]); + dist > e[i] && (dist = e[i]); + dist < -e[i] && (dist = -e[i]); + out.x += dist * u[i].x; + out.y += dist * u[i].y; + out.z += dist * u[i].z; + } + return out; + } + }), { + "../value-types": 339 + }], + 192: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _default = { + SHAPE_RAY: 1, + SHAPE_LINE: 2, + SHAPE_SPHERE: 4, + SHAPE_AABB: 8, + SHAPE_OBB: 16, + SHAPE_PLANE: 32, + SHAPE_TRIANGLE: 64, + SHAPE_FRUSTUM: 128, + SHAPE_FRUSTUM_ACCURATE: 256 + }; + exports["default"] = _default; + module.exports = exports["default"]; + }), {}], + 193: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + var _plane = _interopRequireDefault(require("./plane")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var _v = new Array(8); + _v[0] = new _valueTypes.Vec3(1, 1, 1); + _v[1] = new _valueTypes.Vec3(-1, 1, 1); + _v[2] = new _valueTypes.Vec3(-1, -1, 1); + _v[3] = new _valueTypes.Vec3(1, -1, 1); + _v[4] = new _valueTypes.Vec3(1, 1, -1); + _v[5] = new _valueTypes.Vec3(-1, 1, -1); + _v[6] = new _valueTypes.Vec3(-1, -1, -1); + _v[7] = new _valueTypes.Vec3(1, -1, -1); + var frustum = (function () { + frustum.create = function create() { + return new frustum(); + }; + frustum.clone = function clone(f) { + return frustum.copy(new frustum(), f); + }; + frustum.copy = function copy(out, f) { + out._type = f._type; + for (var i = 0; i < 6; ++i) _plane["default"].copy(out.planes[i], f.planes[i]); + for (var _i = 0; _i < 8; ++_i) _valueTypes.Vec3.copy(out.vertices[_i], f.vertices[_i]); + return out; + }; + _createClass(frustum, [{ + key: "accurate", + set: function set(b) { + this._type = b ? _enums["default"].SHAPE_FRUSTUM_ACCURATE : _enums["default"].SHAPE_FRUSTUM; + } + }]); + function frustum() { + this.planes = void 0; + this.vertices = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_FRUSTUM; + this.planes = new Array(6); + for (var i = 0; i < 6; ++i) this.planes[i] = _plane["default"].create(0, 0, 0, 0); + this.vertices = new Array(8); + for (var _i2 = 0; _i2 < 8; ++_i2) this.vertices[_i2] = new _valueTypes.Vec3(); + } + var _proto = frustum.prototype; + _proto.update = function update(m, inv) { + var mm = m.m; + _valueTypes.Vec3.set(this.planes[0].n, mm[3] + mm[0], mm[7] + mm[4], mm[11] + mm[8]); + this.planes[0].d = -(mm[15] + mm[12]); + _valueTypes.Vec3.set(this.planes[1].n, mm[3] - mm[0], mm[7] - mm[4], mm[11] - mm[8]); + this.planes[1].d = -(mm[15] - mm[12]); + _valueTypes.Vec3.set(this.planes[2].n, mm[3] + mm[1], mm[7] + mm[5], mm[11] + mm[9]); + this.planes[2].d = -(mm[15] + mm[13]); + _valueTypes.Vec3.set(this.planes[3].n, mm[3] - mm[1], mm[7] - mm[5], mm[11] - mm[9]); + this.planes[3].d = -(mm[15] - mm[13]); + _valueTypes.Vec3.set(this.planes[4].n, mm[3] + mm[2], mm[7] + mm[6], mm[11] + mm[10]); + this.planes[4].d = -(mm[15] + mm[14]); + _valueTypes.Vec3.set(this.planes[5].n, mm[3] - mm[2], mm[7] - mm[6], mm[11] - mm[10]); + this.planes[5].d = -(mm[15] - mm[14]); + if (this._type !== _enums["default"].SHAPE_FRUSTUM_ACCURATE) return; + for (var i = 0; i < 6; i++) { + var pl = this.planes[i]; + var invDist = 1 / pl.n.length(); + _valueTypes.Vec3.multiplyScalar(pl.n, pl.n, invDist); + pl.d *= invDist; + } + for (var _i3 = 0; _i3 < 8; _i3++) _valueTypes.Vec3.transformMat4(this.vertices[_i3], _v[_i3], inv); + }; + _proto.transform = function transform(mat) { + if (this._type !== _enums["default"].SHAPE_FRUSTUM_ACCURATE) return; + for (var i = 0; i < 8; i++) _valueTypes.Vec3.transformMat4(this.vertices[i], this.vertices[i], mat); + _plane["default"].fromPoints(this.planes[0], this.vertices[1], this.vertices[5], this.vertices[6]); + _plane["default"].fromPoints(this.planes[1], this.vertices[3], this.vertices[7], this.vertices[4]); + _plane["default"].fromPoints(this.planes[2], this.vertices[6], this.vertices[7], this.vertices[3]); + _plane["default"].fromPoints(this.planes[3], this.vertices[0], this.vertices[4], this.vertices[5]); + _plane["default"].fromPoints(this.planes[4], this.vertices[2], this.vertices[3], this.vertices[0]); + _plane["default"].fromPoints(this.planes[0], this.vertices[7], this.vertices[6], this.vertices[5]); + }; + return frustum; + })(); + exports["default"] = frustum; + frustum.createOrtho = (function () { + var _temp_v3 = new _valueTypes.Vec3(); + return function (out, width, height, near, far, transform) { + var halfWidth = width / 2; + var halfHeight = height / 2; + _valueTypes.Vec3.set(_temp_v3, halfWidth, halfHeight, near); + _valueTypes.Vec3.transformMat4(out.vertices[0], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, -halfWidth, halfHeight, near); + _valueTypes.Vec3.transformMat4(out.vertices[1], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, -halfWidth, -halfHeight, near); + _valueTypes.Vec3.transformMat4(out.vertices[2], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, halfWidth, -halfHeight, near); + _valueTypes.Vec3.transformMat4(out.vertices[3], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, halfWidth, halfHeight, far); + _valueTypes.Vec3.transformMat4(out.vertices[4], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, -halfWidth, halfHeight, far); + _valueTypes.Vec3.transformMat4(out.vertices[5], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, -halfWidth, -halfHeight, far); + _valueTypes.Vec3.transformMat4(out.vertices[6], _temp_v3, transform); + _valueTypes.Vec3.set(_temp_v3, halfWidth, -halfHeight, far); + _valueTypes.Vec3.transformMat4(out.vertices[7], _temp_v3, transform); + _plane["default"].fromPoints(out.planes[0], out.vertices[1], out.vertices[6], out.vertices[5]); + _plane["default"].fromPoints(out.planes[1], out.vertices[3], out.vertices[4], out.vertices[7]); + _plane["default"].fromPoints(out.planes[2], out.vertices[6], out.vertices[3], out.vertices[7]); + _plane["default"].fromPoints(out.planes[3], out.vertices[0], out.vertices[5], out.vertices[4]); + _plane["default"].fromPoints(out.planes[4], out.vertices[2], out.vertices[0], out.vertices[3]); + _plane["default"].fromPoints(out.planes[0], out.vertices[7], out.vertices[5], out.vertices[6]); + }; + })(); + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192, + "./plane": 198 + }], + 194: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + var _exportNames = { + enums: true, + Triangle: true, + Aabb: true, + Ray: true, + intersect: true, + Sphere: true, + Obb: true, + Frustum: true, + Line: true, + Plane: true + }; + exports.Plane = exports.Line = exports.Frustum = exports.Obb = exports.Sphere = exports.intersect = exports.Ray = exports.Aabb = exports.Triangle = exports.enums = void 0; + var _enums = _interopRequireDefault(require("./enums")); + exports.enums = _enums["default"]; + var _triangle = _interopRequireDefault(require("./triangle")); + exports.Triangle = _triangle["default"]; + var _aabb = _interopRequireDefault(require("./aabb")); + exports.Aabb = _aabb["default"]; + var _ray = _interopRequireDefault(require("./ray")); + exports.Ray = _ray["default"]; + var _intersect = _interopRequireDefault(require("./intersect")); + exports.intersect = _intersect["default"]; + var _sphere = _interopRequireDefault(require("./sphere")); + exports.Sphere = _sphere["default"]; + var _obb = _interopRequireDefault(require("./obb")); + exports.Obb = _obb["default"]; + var _frustum = _interopRequireDefault(require("./frustum")); + exports.Frustum = _frustum["default"]; + var _line = _interopRequireDefault(require("./line")); + exports.Line = _line["default"]; + var _plane = _interopRequireDefault(require("./plane")); + exports.Plane = _plane["default"]; + var _distance = require("./distance"); + Object.keys(_distance).forEach((function (key) { + if ("default" === key || "__esModule" === key) return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _distance[key]) return; + exports[key] = _distance[key]; + })); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + cc.geomUtils = module.exports; + }), { + "./aabb": 190, + "./distance": 191, + "./enums": 192, + "./frustum": 193, + "./intersect": 195, + "./line": 196, + "./obb": 197, + "./plane": 198, + "./ray": 199, + "./sphere": 200, + "./triangle": 201 + }], + 195: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _recyclePool = _interopRequireDefault(require("../../renderer/memop/recycle-pool")); + var _valueTypes = require("../value-types"); + var _aabb = _interopRequireDefault(require("./aabb")); + var distance = _interopRequireWildcard(require("./distance")); + var _enums = _interopRequireDefault(require("./enums")); + var _ray = _interopRequireDefault(require("./ray")); + var _triangle = _interopRequireDefault(require("./triangle")); + function _getRequireWildcardCache() { + if ("function" !== typeof WeakMap) return null; + var cache = new WeakMap(); + _getRequireWildcardCache = function _getRequireWildcardCache() { + return cache; + }; + return cache; + } + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) return obj; + if (null === obj || "object" !== typeof obj && "function" !== typeof obj) return { + default: obj + }; + var cache = _getRequireWildcardCache(); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + desc && (desc.get || desc.set) ? Object.defineProperty(newObj, key, desc) : newObj[key] = obj[key]; + } + newObj["default"] = obj; + cache && cache.set(obj, newObj); + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ray_mesh = (function () { + var tri = _triangle["default"].create(); + var minDist = Infinity; + function getVec3(out, data, idx, stride) { + _valueTypes.Vec3.set(out, data[idx * stride], data[idx * stride + 1], data[idx * stride + 2]); + } + return function (ray, mesh) { + minDist = Infinity; + var subMeshes = mesh._subMeshes; + for (var i = 0; i < subMeshes.length; i++) { + if (subMeshes[i]._primitiveType !== _gfx["default"].PT_TRIANGLES) continue; + var subData = mesh._subDatas[i] || mesh._subDatas[0]; + var posData = mesh._getAttrMeshData(i, _gfx["default"].ATTR_POSITION); + var iData = subData.getIData(Uint16Array); + var format = subData.vfm; + var fmt = format.element(_gfx["default"].ATTR_POSITION); + var num = fmt.num; + for (var _i = 0; _i < iData.length; _i += 3) { + getVec3(tri.a, posData, iData[_i], num); + getVec3(tri.b, posData, iData[_i + 1], num); + getVec3(tri.c, posData, iData[_i + 2], num); + var dist = ray_triangle(ray, tri); + dist > 0 && dist < minDist && (minDist = dist); + } + } + return minDist; + }; + })(); + var rayMesh = ray_mesh; + var ray_cast = (function () { + function traversal(node, cb) { + var children = node.children; + for (var i = children.length - 1; i >= 0; i--) { + var child = children[i]; + traversal(child, cb); + } + cb(node); + } + function cmp(a, b) { + return a.distance - b.distance; + } + function transformMat4Normal(out, a, m) { + var mm = m.m; + var x = a.x, y = a.y, z = a.z, rhw = mm[3] * x + mm[7] * y + mm[11] * z; + rhw = rhw ? 1 / rhw : 1; + out.x = (mm[0] * x + mm[4] * y + mm[8] * z) * rhw; + out.y = (mm[1] * x + mm[5] * y + mm[9] * z) * rhw; + out.z = (mm[2] * x + mm[6] * y + mm[10] * z) * rhw; + return out; + } + var resultsPool = new _recyclePool["default"](function () { + return { + distance: 0, + node: null + }; + }, 1); + var results = []; + var nodeAabb = _aabb["default"].create(); + var minPos = new _valueTypes.Vec3(); + var maxPos = new _valueTypes.Vec3(); + var modelRay = new _ray["default"](); + var m4_1 = cc.mat4(); + var m4_2 = cc.mat4(); + var d = new _valueTypes.Vec3(); + function distanceValid(distance) { + return distance > 0 && distance < Infinity; + } + return function (root, worldRay, handler, filter) { + resultsPool.reset(); + results.length = 0; + root = root || cc.director.getScene(); + traversal(root, (function (node) { + if (filter && !filter(node)) return; + _valueTypes.Mat4.invert(m4_2, node.getWorldMatrix(m4_1)); + _valueTypes.Vec3.transformMat4(modelRay.o, worldRay.o, m4_2); + _valueTypes.Vec3.normalize(modelRay.d, transformMat4Normal(modelRay.d, worldRay.d, m4_2)); + var distance = Infinity; + var component = node._renderComponent; + if (component instanceof cc.MeshRenderer) distance = ray_aabb(modelRay, component._boundingBox); else if (node.width && node.height) { + _valueTypes.Vec3.set(minPos, -node.width * node.anchorX, -node.height * node.anchorY, node.z); + _valueTypes.Vec3.set(maxPos, node.width * (1 - node.anchorX), node.height * (1 - node.anchorY), node.z); + _aabb["default"].fromPoints(nodeAabb, minPos, maxPos); + distance = ray_aabb(modelRay, nodeAabb); + } + if (!distanceValid(distance)) return; + handler && (distance = handler(modelRay, node, distance)); + if (distanceValid(distance)) { + _valueTypes.Vec3.scale(d, modelRay.d, distance); + transformMat4Normal(d, d, m4_1); + var res = resultsPool.add(); + res.node = node; + res.distance = _valueTypes.Vec3.mag(d); + results.push(res); + } + })); + results.sort(cmp); + return results; + }; + })(); + var raycast = ray_cast; + var ray_plane = (function () { + var pt = new _valueTypes.Vec3(0, 0, 0); + return function (ray, plane) { + var denom = _valueTypes.Vec3.dot(ray.d, plane.n); + if (Math.abs(denom) < Number.EPSILON) return 0; + _valueTypes.Vec3.multiplyScalar(pt, plane.n, plane.d); + var t = _valueTypes.Vec3.dot(_valueTypes.Vec3.subtract(pt, pt, ray.o), plane.n) / denom; + if (t < 0) return 0; + return t; + }; + })(); + var line_plane = (function () { + var ab = new _valueTypes.Vec3(0, 0, 0); + return function (line, plane) { + _valueTypes.Vec3.subtract(ab, line.e, line.s); + var t = (plane.d - _valueTypes.Vec3.dot(line.s, plane.n)) / _valueTypes.Vec3.dot(ab, plane.n); + if (t < 0 || t > 1) return 0; + return t; + }; + })(); + var ray_triangle = (function () { + var ab = new _valueTypes.Vec3(0, 0, 0); + var ac = new _valueTypes.Vec3(0, 0, 0); + var pvec = new _valueTypes.Vec3(0, 0, 0); + var tvec = new _valueTypes.Vec3(0, 0, 0); + var qvec = new _valueTypes.Vec3(0, 0, 0); + return function (ray, triangle, doubleSided) { + _valueTypes.Vec3.subtract(ab, triangle.b, triangle.a); + _valueTypes.Vec3.subtract(ac, triangle.c, triangle.a); + _valueTypes.Vec3.cross(pvec, ray.d, ac); + var det = _valueTypes.Vec3.dot(ab, pvec); + if (det < Number.EPSILON && (!doubleSided || det > -Number.EPSILON)) return 0; + var inv_det = 1 / det; + _valueTypes.Vec3.subtract(tvec, ray.o, triangle.a); + var u = _valueTypes.Vec3.dot(tvec, pvec) * inv_det; + if (u < 0 || u > 1) return 0; + _valueTypes.Vec3.cross(qvec, tvec, ab); + var v = _valueTypes.Vec3.dot(ray.d, qvec) * inv_det; + if (v < 0 || u + v > 1) return 0; + var t = _valueTypes.Vec3.dot(ac, qvec) * inv_det; + return t < 0 ? 0 : t; + }; + })(); + var rayTriangle = ray_triangle; + var line_triangle = (function () { + var ab = new _valueTypes.Vec3(0, 0, 0); + var ac = new _valueTypes.Vec3(0, 0, 0); + var qp = new _valueTypes.Vec3(0, 0, 0); + var ap = new _valueTypes.Vec3(0, 0, 0); + var n = new _valueTypes.Vec3(0, 0, 0); + var e = new _valueTypes.Vec3(0, 0, 0); + return function (line, triangle, outPt) { + _valueTypes.Vec3.subtract(ab, triangle.b, triangle.a); + _valueTypes.Vec3.subtract(ac, triangle.c, triangle.a); + _valueTypes.Vec3.subtract(qp, line.s, line.e); + _valueTypes.Vec3.cross(n, ab, ac); + var det = _valueTypes.Vec3.dot(qp, n); + if (det <= 0) return 0; + _valueTypes.Vec3.subtract(ap, line.s, triangle.a); + var t = _valueTypes.Vec3.dot(ap, n); + if (t < 0 || t > det) return 0; + _valueTypes.Vec3.cross(e, qp, ap); + var v = _valueTypes.Vec3.dot(ac, e); + if (v < 0 || v > det) return 0; + var w = -_valueTypes.Vec3.dot(ab, e); + if (w < 0 || v + w > det) return 0; + if (outPt) { + var invDet = 1 / det; + v *= invDet; + w *= invDet; + var u = 1 - v - w; + _valueTypes.Vec3.set(outPt, triangle.a.x * u + triangle.b.x * v + triangle.c.x * w, triangle.a.y * u + triangle.b.y * v + triangle.c.y * w, triangle.a.z * u + triangle.b.z * v + triangle.c.z * w); + } + return 1; + }; + })(); + var line_quad = (function () { + var pq = new _valueTypes.Vec3(0, 0, 0); + var pa = new _valueTypes.Vec3(0, 0, 0); + var pb = new _valueTypes.Vec3(0, 0, 0); + var pc = new _valueTypes.Vec3(0, 0, 0); + var pd = new _valueTypes.Vec3(0, 0, 0); + var m = new _valueTypes.Vec3(0, 0, 0); + var tmp = new _valueTypes.Vec3(0, 0, 0); + return function (p, q, a, b, c, d, outPt) { + _valueTypes.Vec3.subtract(pq, q, p); + _valueTypes.Vec3.subtract(pa, a, p); + _valueTypes.Vec3.subtract(pb, b, p); + _valueTypes.Vec3.subtract(pc, c, p); + _valueTypes.Vec3.cross(m, pc, pq); + var v = _valueTypes.Vec3.dot(pa, m); + if (v >= 0) { + var u = -_valueTypes.Vec3.dot(pb, m); + if (u < 0) return 0; + var w = _valueTypes.Vec3.dot(_valueTypes.Vec3.cross(tmp, pq, pb), pa); + if (w < 0) return 0; + if (outPt) { + var denom = 1 / (u + v + w); + u *= denom; + v *= denom; + w *= denom; + _valueTypes.Vec3.set(outPt, a.x * u + b.x * v + c.x * w, a.y * u + b.y * v + c.y * w, a.z * u + b.z * v + c.z * w); + } + } else { + _valueTypes.Vec3.subtract(pd, d, p); + var _u = _valueTypes.Vec3.dot(pd, m); + if (_u < 0) return 0; + var _w = _valueTypes.Vec3.dot(_valueTypes.Vec3.cross(tmp, pq, pa), pd); + if (_w < 0) return 0; + if (outPt) { + v = -v; + var _denom = 1 / (_u + v + _w); + _u *= _denom; + v *= _denom; + _w *= _denom; + _valueTypes.Vec3.set(outPt, a.x * _u + d.x * v + c.x * _w, a.y * _u + d.y * v + c.y * _w, a.z * _u + d.z * v + c.z * _w); + } + } + return 1; + }; + })(); + var ray_sphere = (function () { + var e = new _valueTypes.Vec3(0, 0, 0); + return function (ray, sphere) { + var r = sphere.radius; + var c = sphere.center; + var o = ray.o; + var d = ray.d; + var rSq = r * r; + _valueTypes.Vec3.subtract(e, c, o); + var eSq = e.lengthSqr(); + var aLength = _valueTypes.Vec3.dot(e, d); + var fSq = rSq - (eSq - aLength * aLength); + if (fSq < 0) return 0; + var f = Math.sqrt(fSq); + var t = eSq < rSq ? aLength + f : aLength - f; + if (t < 0) return 0; + return t; + }; + })(); + var ray_aabb = (function () { + var min = new _valueTypes.Vec3(); + var max = new _valueTypes.Vec3(); + return function (ray, aabb) { + var o = ray.o, d = ray.d; + var ix = 1 / d.x, iy = 1 / d.y, iz = 1 / d.z; + _valueTypes.Vec3.subtract(min, aabb.center, aabb.halfExtents); + _valueTypes.Vec3.add(max, aabb.center, aabb.halfExtents); + var t1 = (min.x - o.x) * ix; + var t2 = (max.x - o.x) * ix; + var t3 = (min.y - o.y) * iy; + var t4 = (max.y - o.y) * iy; + var t5 = (min.z - o.z) * iz; + var t6 = (max.z - o.z) * iz; + var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6)); + var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); + if (tmax < 0 || tmin > tmax) return 0; + return tmin; + }; + })(); + var rayAabb = ray_aabb; + var ray_obb = (function () { + var center = new _valueTypes.Vec3(); + var o = new _valueTypes.Vec3(); + var d = new _valueTypes.Vec3(); + var X = new _valueTypes.Vec3(); + var Y = new _valueTypes.Vec3(); + var Z = new _valueTypes.Vec3(); + var p = new _valueTypes.Vec3(); + var size = new Array(3); + var f = new Array(3); + var e = new Array(3); + var t = new Array(6); + return function (ray, obb) { + size[0] = obb.halfExtents.x; + size[1] = obb.halfExtents.y; + size[2] = obb.halfExtents.z; + center = obb.center; + o = ray.o; + d = ray.d; + var obbm = obb.orientation.m; + _valueTypes.Vec3.set(X, obbm[0], obbm[1], obbm[2]); + _valueTypes.Vec3.set(Y, obbm[3], obbm[4], obbm[5]); + _valueTypes.Vec3.set(Z, obbm[6], obbm[7], obbm[8]); + _valueTypes.Vec3.subtract(p, center, o); + f[0] = _valueTypes.Vec3.dot(X, d); + f[1] = _valueTypes.Vec3.dot(Y, d); + f[2] = _valueTypes.Vec3.dot(Z, d); + e[0] = _valueTypes.Vec3.dot(X, p); + e[1] = _valueTypes.Vec3.dot(Y, p); + e[2] = _valueTypes.Vec3.dot(Z, p); + for (var i = 0; i < 3; ++i) { + if (0 === f[i]) { + if (-e[i] - size[i] > 0 || -e[i] + size[i] < 0) return 0; + f[i] = 1e-7; + } + t[2 * i + 0] = (e[i] + size[i]) / f[i]; + t[2 * i + 1] = (e[i] - size[i]) / f[i]; + } + var tmin = Math.max(Math.max(Math.min(t[0], t[1]), Math.min(t[2], t[3])), Math.min(t[4], t[5])); + var tmax = Math.min(Math.min(Math.max(t[0], t[1]), Math.max(t[2], t[3])), Math.max(t[4], t[5])); + if (tmax < 0 || tmin > tmax || tmin < 0) return 0; + return tmin; + }; + })(); + var aabb_aabb = (function () { + var aMin = new _valueTypes.Vec3(); + var aMax = new _valueTypes.Vec3(); + var bMin = new _valueTypes.Vec3(); + var bMax = new _valueTypes.Vec3(); + return function (aabb1, aabb2) { + _valueTypes.Vec3.subtract(aMin, aabb1.center, aabb1.halfExtents); + _valueTypes.Vec3.add(aMax, aabb1.center, aabb1.halfExtents); + _valueTypes.Vec3.subtract(bMin, aabb2.center, aabb2.halfExtents); + _valueTypes.Vec3.add(bMax, aabb2.center, aabb2.halfExtents); + return aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z; + }; + })(); + function getAABBVertices(min, max, out) { + _valueTypes.Vec3.set(out[0], min.x, max.y, max.z); + _valueTypes.Vec3.set(out[1], min.x, max.y, min.z); + _valueTypes.Vec3.set(out[2], min.x, min.y, max.z); + _valueTypes.Vec3.set(out[3], min.x, min.y, min.z); + _valueTypes.Vec3.set(out[4], max.x, max.y, max.z); + _valueTypes.Vec3.set(out[5], max.x, max.y, min.z); + _valueTypes.Vec3.set(out[6], max.x, min.y, max.z); + _valueTypes.Vec3.set(out[7], max.x, min.y, min.z); + } + function getOBBVertices(c, e, a1, a2, a3, out) { + _valueTypes.Vec3.set(out[0], c.x + a1.x * e.x + a2.x * e.y + a3.x * e.z, c.y + a1.y * e.x + a2.y * e.y + a3.y * e.z, c.z + a1.z * e.x + a2.z * e.y + a3.z * e.z); + _valueTypes.Vec3.set(out[1], c.x - a1.x * e.x + a2.x * e.y + a3.x * e.z, c.y - a1.y * e.x + a2.y * e.y + a3.y * e.z, c.z - a1.z * e.x + a2.z * e.y + a3.z * e.z); + _valueTypes.Vec3.set(out[2], c.x + a1.x * e.x - a2.x * e.y + a3.x * e.z, c.y + a1.y * e.x - a2.y * e.y + a3.y * e.z, c.z + a1.z * e.x - a2.z * e.y + a3.z * e.z); + _valueTypes.Vec3.set(out[3], c.x + a1.x * e.x + a2.x * e.y - a3.x * e.z, c.y + a1.y * e.x + a2.y * e.y - a3.y * e.z, c.z + a1.z * e.x + a2.z * e.y - a3.z * e.z); + _valueTypes.Vec3.set(out[4], c.x - a1.x * e.x - a2.x * e.y - a3.x * e.z, c.y - a1.y * e.x - a2.y * e.y - a3.y * e.z, c.z - a1.z * e.x - a2.z * e.y - a3.z * e.z); + _valueTypes.Vec3.set(out[5], c.x + a1.x * e.x - a2.x * e.y - a3.x * e.z, c.y + a1.y * e.x - a2.y * e.y - a3.y * e.z, c.z + a1.z * e.x - a2.z * e.y - a3.z * e.z); + _valueTypes.Vec3.set(out[6], c.x - a1.x * e.x + a2.x * e.y - a3.x * e.z, c.y - a1.y * e.x + a2.y * e.y - a3.y * e.z, c.z - a1.z * e.x + a2.z * e.y - a3.z * e.z); + _valueTypes.Vec3.set(out[7], c.x - a1.x * e.x - a2.x * e.y + a3.x * e.z, c.y - a1.y * e.x - a2.y * e.y + a3.y * e.z, c.z - a1.z * e.x - a2.z * e.y + a3.z * e.z); + } + function getInterval(vertices, axis) { + var min = _valueTypes.Vec3.dot(axis, vertices[0]), max = min; + for (var i = 1; i < 8; ++i) { + var projection = _valueTypes.Vec3.dot(axis, vertices[i]); + min = projection < min ? projection : min; + max = projection > max ? projection : max; + } + return [min, max]; + } + var aabb_obb = (function () { + var test = new Array(15); + for (var i = 0; i < 15; i++) test[i] = new _valueTypes.Vec3(0, 0, 0); + var vertices = new Array(8); + var vertices2 = new Array(8); + for (var _i2 = 0; _i2 < 8; _i2++) { + vertices[_i2] = new _valueTypes.Vec3(0, 0, 0); + vertices2[_i2] = new _valueTypes.Vec3(0, 0, 0); + } + var min = new _valueTypes.Vec3(); + var max = new _valueTypes.Vec3(); + return function (aabb, obb) { + var obbm = obb.orientation.m; + _valueTypes.Vec3.set(test[0], 1, 0, 0); + _valueTypes.Vec3.set(test[1], 0, 1, 0); + _valueTypes.Vec3.set(test[2], 0, 0, 1); + _valueTypes.Vec3.set(test[3], obbm[0], obbm[1], obbm[2]); + _valueTypes.Vec3.set(test[4], obbm[3], obbm[4], obbm[5]); + _valueTypes.Vec3.set(test[5], obbm[6], obbm[7], obbm[8]); + for (var _i3 = 0; _i3 < 3; ++_i3) { + _valueTypes.Vec3.cross(test[6 + 3 * _i3 + 0], test[_i3], test[0]); + _valueTypes.Vec3.cross(test[6 + 3 * _i3 + 1], test[_i3], test[1]); + _valueTypes.Vec3.cross(test[6 + 3 * _i3 + 1], test[_i3], test[2]); + } + _valueTypes.Vec3.subtract(min, aabb.center, aabb.halfExtents); + _valueTypes.Vec3.add(max, aabb.center, aabb.halfExtents); + getAABBVertices(min, max, vertices); + getOBBVertices(obb.center, obb.halfExtents, test[3], test[4], test[5], vertices2); + for (var j = 0; j < 15; ++j) { + var a = getInterval(vertices, test[j]); + var b = getInterval(vertices2, test[j]); + if (b[0] > a[1] || a[0] > b[1]) return 0; + } + return 1; + }; + })(); + var aabb_plane = function aabb_plane(aabb, plane) { + var r = aabb.halfExtents.x * Math.abs(plane.n.x) + aabb.halfExtents.y * Math.abs(plane.n.y) + aabb.halfExtents.z * Math.abs(plane.n.z); + var dot = _valueTypes.Vec3.dot(plane.n, aabb.center); + if (dot + r < plane.d) return -1; + if (dot - r > plane.d) return 0; + return 1; + }; + var aabb_frustum = function aabb_frustum(aabb, frustum) { + for (var i = 0; i < frustum.planes.length; i++) if (-1 === aabb_plane(aabb, frustum.planes[i])) return 0; + return 1; + }; + var aabb_frustum_accurate = (function () { + var tmp = new Array(8); + var out1 = 0, out2 = 0; + for (var i = 0; i < tmp.length; i++) tmp[i] = new _valueTypes.Vec3(0, 0, 0); + return function (aabb, frustum) { + var result = 0, intersects = false; + for (var _i4 = 0; _i4 < frustum.planes.length; _i4++) { + result = aabb_plane(aabb, frustum.planes[_i4]); + if (-1 === result) return 0; + 1 === result && (intersects = true); + } + if (!intersects) return 1; + for (var _i5 = 0; _i5 < frustum.vertices.length; _i5++) _valueTypes.Vec3.subtract(tmp[_i5], frustum.vertices[_i5], aabb.center); + out1 = 0, out2 = 0; + for (var _i6 = 0; _i6 < frustum.vertices.length; _i6++) tmp[_i6].x > aabb.halfExtents.x ? out1++ : tmp[_i6].x < -aabb.halfExtents.x && out2++; + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + out1 = 0; + out2 = 0; + for (var _i7 = 0; _i7 < frustum.vertices.length; _i7++) tmp[_i7].y > aabb.halfExtents.y ? out1++ : tmp[_i7].y < -aabb.halfExtents.y && out2++; + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + out1 = 0; + out2 = 0; + for (var _i8 = 0; _i8 < frustum.vertices.length; _i8++) tmp[_i8].z > aabb.halfExtents.z ? out1++ : tmp[_i8].z < -aabb.halfExtents.z && out2++; + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + return 1; + }; + })(); + var obb_point = (function () { + var tmp = new _valueTypes.Vec3(0, 0, 0), m3 = new _valueTypes.Mat3(); + var lessThan = function lessThan(a, b) { + return Math.abs(a.x) < b.x && Math.abs(a.y) < b.y && Math.abs(a.z) < b.z; + }; + return function (obb, point) { + _valueTypes.Vec3.subtract(tmp, point, obb.center); + _valueTypes.Vec3.transformMat3(tmp, tmp, _valueTypes.Mat3.transpose(m3, obb.orientation)); + return lessThan(tmp, obb.halfExtents); + }; + })(); + var obb_plane = (function () { + var absDot = function absDot(n, x, y, z) { + return Math.abs(n.x * x + n.y * y + n.z * z); + }; + return function (obb, plane) { + var obbm = obb.orientation.m; + var r = obb.halfExtents.x * absDot(plane.n, obbm[0], obbm[1], obbm[2]) + obb.halfExtents.y * absDot(plane.n, obbm[3], obbm[4], obbm[5]) + obb.halfExtents.z * absDot(plane.n, obbm[6], obbm[7], obbm[8]); + var dot = _valueTypes.Vec3.dot(plane.n, obb.center); + if (dot + r < plane.d) return -1; + if (dot - r > plane.d) return 0; + return 1; + }; + })(); + var obb_frustum = function obb_frustum(obb, frustum) { + for (var i = 0; i < frustum.planes.length; i++) if (-1 === obb_plane(obb, frustum.planes[i])) return 0; + return 1; + }; + var obb_frustum_accurate = (function () { + var tmp = new Array(8); + var dist = 0, out1 = 0, out2 = 0; + for (var i = 0; i < tmp.length; i++) tmp[i] = new _valueTypes.Vec3(0, 0, 0); + var dot = function dot(n, x, y, z) { + return n.x * x + n.y * y + n.z * z; + }; + return function (obb, frustum) { + var result = 0, intersects = false; + for (var _i9 = 0; _i9 < frustum.planes.length; _i9++) { + result = obb_plane(obb, frustum.planes[_i9]); + if (-1 === result) return 0; + 1 === result && (intersects = true); + } + if (!intersects) return 1; + for (var _i10 = 0; _i10 < frustum.vertices.length; _i10++) _valueTypes.Vec3.subtract(tmp[_i10], frustum.vertices[_i10], obb.center); + out1 = 0, out2 = 0; + var obbm = obb.orientation.m; + for (var _i11 = 0; _i11 < frustum.vertices.length; _i11++) { + dist = dot(tmp[_i11], obbm[0], obbm[1], obbm[2]); + dist > obb.halfExtents.x ? out1++ : dist < -obb.halfExtents.x && out2++; + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + out1 = 0; + out2 = 0; + for (var _i12 = 0; _i12 < frustum.vertices.length; _i12++) { + dist = dot(tmp[_i12], obbm[3], obbm[4], obbm[5]); + dist > obb.halfExtents.y ? out1++ : dist < -obb.halfExtents.y && out2++; + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + out1 = 0; + out2 = 0; + for (var _i13 = 0; _i13 < frustum.vertices.length; _i13++) { + dist = dot(tmp[_i13], obbm[6], obbm[7], obbm[8]); + dist > obb.halfExtents.z ? out1++ : dist < -obb.halfExtents.z && out2++; + } + if (out1 === frustum.vertices.length || out2 === frustum.vertices.length) return 0; + return 1; + }; + })(); + var obb_obb = (function () { + var test = new Array(15); + for (var i = 0; i < 15; i++) test[i] = new _valueTypes.Vec3(0, 0, 0); + var vertices = new Array(8); + var vertices2 = new Array(8); + for (var _i14 = 0; _i14 < 8; _i14++) { + vertices[_i14] = new _valueTypes.Vec3(0, 0, 0); + vertices2[_i14] = new _valueTypes.Vec3(0, 0, 0); + } + return function (obb1, obb2) { + var obb1m = obb1.orientation.m; + var obb2m = obb2.orientation.m; + _valueTypes.Vec3.set(test[0], obb1m[0], obb1m[1], obb1m[2]); + _valueTypes.Vec3.set(test[1], obb1m[3], obb1m[4], obb1m[5]); + _valueTypes.Vec3.set(test[2], obb1m[6], obb1m[7], obb1m[8]); + _valueTypes.Vec3.set(test[3], obb2m[0], obb2m[1], obb2m[2]); + _valueTypes.Vec3.set(test[4], obb2m[3], obb2m[4], obb2m[5]); + _valueTypes.Vec3.set(test[5], obb2m[6], obb2m[7], obb2m[8]); + for (var _i15 = 0; _i15 < 3; ++_i15) { + _valueTypes.Vec3.cross(test[6 + 3 * _i15 + 0], test[_i15], test[0]); + _valueTypes.Vec3.cross(test[6 + 3 * _i15 + 1], test[_i15], test[1]); + _valueTypes.Vec3.cross(test[6 + 3 * _i15 + 1], test[_i15], test[2]); + } + getOBBVertices(obb1.center, obb1.halfExtents, test[0], test[1], test[2], vertices); + getOBBVertices(obb2.center, obb2.halfExtents, test[3], test[4], test[5], vertices2); + for (var _i16 = 0; _i16 < 15; ++_i16) { + var a = getInterval(vertices, test[_i16]); + var b = getInterval(vertices2, test[_i16]); + if (b[0] > a[1] || a[0] > b[1]) return 0; + } + return 1; + }; + })(); + var sphere_plane = function sphere_plane(sphere, plane) { + var dot = _valueTypes.Vec3.dot(plane.n, sphere.center); + var r = sphere.radius * plane.n.length(); + if (dot + r < plane.d) return -1; + if (dot - r > plane.d) return 0; + return 1; + }; + var sphere_frustum = function sphere_frustum(sphere, frustum) { + for (var i = 0; i < frustum.planes.length; i++) if (-1 === sphere_plane(sphere, frustum.planes[i])) return 0; + return 1; + }; + var sphere_frustum_accurate = (function () { + var pt = new _valueTypes.Vec3(0, 0, 0), map = [1, -1, 1, -1, 1, -1]; + return function (sphere, frustum) { + for (var i = 0; i < 6; i++) { + var plane = frustum.planes[i]; + var r = sphere.radius, c = sphere.center; + var n = plane.n, d = plane.d; + var dot = _valueTypes.Vec3.dot(n, c); + if (dot + r < d) return 0; + if (dot - r > d) continue; + _valueTypes.Vec3.add(pt, c, _valueTypes.Vec3.multiplyScalar(pt, n, r)); + for (var j = 0; j < 6; j++) { + if (j === i || j === i + map[i]) continue; + var test = frustum.planes[j]; + if (_valueTypes.Vec3.dot(test.n, pt) < test.d) return 0; + } + } + return 1; + }; + })(); + var sphere_sphere = function sphere_sphere(sphere0, sphere1) { + var r = sphere0.radius + sphere1.radius; + return _valueTypes.Vec3.squaredDistance(sphere0.center, sphere1.center) < r * r; + }; + var sphere_aabb = (function () { + var pt = new _valueTypes.Vec3(); + return function (sphere, aabb) { + distance.pt_point_aabb(pt, sphere.center, aabb); + return _valueTypes.Vec3.squaredDistance(sphere.center, pt) < sphere.radius * sphere.radius; + }; + })(); + var sphere_obb = (function () { + var pt = new _valueTypes.Vec3(); + return function (sphere, obb) { + distance.pt_point_obb(pt, sphere.center, obb); + return _valueTypes.Vec3.squaredDistance(sphere.center, pt) < sphere.radius * sphere.radius; + }; + })(); + var intersect = { + rayAabb: rayAabb, + rayMesh: rayMesh, + raycast: raycast, + rayTriangle: rayTriangle, + ray_sphere: ray_sphere, + ray_aabb: ray_aabb, + ray_obb: ray_obb, + ray_plane: ray_plane, + ray_triangle: ray_triangle, + line_plane: line_plane, + line_triangle: line_triangle, + line_quad: line_quad, + sphere_sphere: sphere_sphere, + sphere_aabb: sphere_aabb, + sphere_obb: sphere_obb, + sphere_plane: sphere_plane, + sphere_frustum: sphere_frustum, + sphere_frustum_accurate: sphere_frustum_accurate, + aabb_aabb: aabb_aabb, + aabb_obb: aabb_obb, + aabb_plane: aabb_plane, + aabb_frustum: aabb_frustum, + aabb_frustum_accurate: aabb_frustum_accurate, + obb_obb: obb_obb, + obb_plane: obb_plane, + obb_frustum: obb_frustum, + obb_frustum_accurate: obb_frustum_accurate, + obb_point: obb_point, + resolve: function resolve(g1, g2, outPt) { + void 0 === outPt && (outPt = null); + var type1 = g1._type, type2 = g2._type; + var resolver = this[type1 | type2]; + return type1 < type2 ? resolver(g1, g2, outPt) : resolver(g2, g1, outPt); + } + }; + intersect[_enums["default"].SHAPE_RAY | _enums["default"].SHAPE_SPHERE] = ray_sphere; + intersect[_enums["default"].SHAPE_RAY | _enums["default"].SHAPE_AABB] = ray_aabb; + intersect[_enums["default"].SHAPE_RAY | _enums["default"].SHAPE_OBB] = ray_obb; + intersect[_enums["default"].SHAPE_RAY | _enums["default"].SHAPE_PLANE] = ray_plane; + intersect[_enums["default"].SHAPE_RAY | _enums["default"].SHAPE_TRIANGLE] = ray_triangle; + intersect[_enums["default"].SHAPE_LINE | _enums["default"].SHAPE_PLANE] = line_plane; + intersect[_enums["default"].SHAPE_LINE | _enums["default"].SHAPE_TRIANGLE] = line_triangle; + intersect[_enums["default"].SHAPE_SPHERE] = sphere_sphere; + intersect[_enums["default"].SHAPE_SPHERE | _enums["default"].SHAPE_AABB] = sphere_aabb; + intersect[_enums["default"].SHAPE_SPHERE | _enums["default"].SHAPE_OBB] = sphere_obb; + intersect[_enums["default"].SHAPE_SPHERE | _enums["default"].SHAPE_PLANE] = sphere_plane; + intersect[_enums["default"].SHAPE_SPHERE | _enums["default"].SHAPE_FRUSTUM] = sphere_frustum; + intersect[_enums["default"].SHAPE_SPHERE | _enums["default"].SHAPE_FRUSTUM_ACCURATE] = sphere_frustum_accurate; + intersect[_enums["default"].SHAPE_AABB] = aabb_aabb; + intersect[_enums["default"].SHAPE_AABB | _enums["default"].SHAPE_OBB] = aabb_obb; + intersect[_enums["default"].SHAPE_AABB | _enums["default"].SHAPE_PLANE] = aabb_plane; + intersect[_enums["default"].SHAPE_AABB | _enums["default"].SHAPE_FRUSTUM] = aabb_frustum; + intersect[_enums["default"].SHAPE_AABB | _enums["default"].SHAPE_FRUSTUM_ACCURATE] = aabb_frustum_accurate; + intersect[_enums["default"].SHAPE_OBB] = obb_obb; + intersect[_enums["default"].SHAPE_OBB | _enums["default"].SHAPE_PLANE] = obb_plane; + intersect[_enums["default"].SHAPE_OBB | _enums["default"].SHAPE_FRUSTUM] = obb_frustum; + intersect[_enums["default"].SHAPE_OBB | _enums["default"].SHAPE_FRUSTUM_ACCURATE] = obb_frustum_accurate; + var _default = intersect; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../../renderer/gfx": 372, + "../../renderer/memop/recycle-pool": 387, + "../value-types": 339, + "./aabb": 190, + "./distance": 191, + "./enums": 192, + "./ray": 199, + "./triangle": 201 + }], + 196: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var line = (function () { + line.create = function create(sx, sy, sz, ex, ey, ez) { + return new line(sx, sy, sz, ex, ey, ez); + }; + line.clone = function clone(a) { + return new line(a.s.x, a.s.y, a.s.z, a.e.x, a.e.y, a.e.z); + }; + line.copy = function copy(out, a) { + _valueTypes.Vec3.copy(out.s, a.s); + _valueTypes.Vec3.copy(out.e, a.e); + return out; + }; + line.fromPoints = function fromPoints(out, start, end) { + _valueTypes.Vec3.copy(out.s, start); + _valueTypes.Vec3.copy(out.e, end); + return out; + }; + line.set = function set(out, sx, sy, sz, ex, ey, ez) { + out.s.x = sx; + out.s.y = sy; + out.s.z = sz; + out.e.x = ex; + out.e.y = ey; + out.e.z = ez; + return out; + }; + line.len = function len(a) { + return _valueTypes.Vec3.distance(a.s, a.e); + }; + function line(sx, sy, sz, ex, ey, ez) { + void 0 === sx && (sx = 0); + void 0 === sy && (sy = 0); + void 0 === sz && (sz = 0); + void 0 === ex && (ex = 0); + void 0 === ey && (ey = 0); + void 0 === ez && (ez = -1); + this.s = void 0; + this.e = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_LINE; + this.s = new _valueTypes.Vec3(sx, sy, sz); + this.e = new _valueTypes.Vec3(ex, ey, ez); + } + var _proto = line.prototype; + _proto.length = function length() { + return _valueTypes.Vec3.distance(this.s, this.e); + }; + return line; + })(); + exports["default"] = line; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192 + }], + 197: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var _v3_tmp = new _valueTypes.Vec3(); + var _v3_tmp2 = new _valueTypes.Vec3(); + var _m3_tmp = new _valueTypes.Mat3(); + var transform_extent_m3 = function transform_extent_m3(out, extent, m3) { + var m3_tmpm = _m3_tmp.m, m3m = m3.m; + m3_tmpm[0] = Math.abs(m3m[0]); + m3_tmpm[1] = Math.abs(m3m[1]); + m3_tmpm[2] = Math.abs(m3m[2]); + m3_tmpm[3] = Math.abs(m3m[3]); + m3_tmpm[4] = Math.abs(m3m[4]); + m3_tmpm[5] = Math.abs(m3m[5]); + m3_tmpm[6] = Math.abs(m3m[6]); + m3_tmpm[7] = Math.abs(m3m[7]); + m3_tmpm[8] = Math.abs(m3m[8]); + _valueTypes.Vec3.transformMat3(out, extent, _m3_tmp); + }; + var obb = (function () { + obb.create = function create(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + return new obb(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + }; + obb.clone = function clone(a) { + var aom = a.orientation.m; + return new obb(a.center.x, a.center.y, a.center.z, a.halfExtents.x, a.halfExtents.y, a.halfExtents.z, aom[0], aom[1], aom[2], aom[3], aom[4], aom[5], aom[6], aom[7], aom[8]); + }; + obb.copy = function copy(out, a) { + _valueTypes.Vec3.copy(out.center, a.center); + _valueTypes.Vec3.copy(out.halfExtents, a.halfExtents); + _valueTypes.Mat3.copy(out.orientation, a.orientation); + return out; + }; + obb.fromPoints = function fromPoints(out, minPos, maxPos) { + _valueTypes.Vec3.multiplyScalar(out.center, _valueTypes.Vec3.add(_v3_tmp, minPos, maxPos), .5); + _valueTypes.Vec3.multiplyScalar(out.halfExtents, _valueTypes.Vec3.subtract(_v3_tmp2, maxPos, minPos), .5); + _valueTypes.Mat3.identity(out.orientation); + return out; + }; + obb.set = function set(out, cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + _valueTypes.Vec3.set(out.center, cx, cy, cz); + _valueTypes.Vec3.set(out.halfExtents, hw, hh, hl); + _valueTypes.Mat3.set(out.orientation, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + return out; + }; + _createClass(obb, [{ + key: "type", + get: function get() { + return this._type; + } + }]); + function obb(cx, cy, cz, hw, hh, hl, ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3) { + void 0 === cx && (cx = 0); + void 0 === cy && (cy = 0); + void 0 === cz && (cz = 0); + void 0 === hw && (hw = 1); + void 0 === hh && (hh = 1); + void 0 === hl && (hl = 1); + void 0 === ox_1 && (ox_1 = 1); + void 0 === ox_2 && (ox_2 = 0); + void 0 === ox_3 && (ox_3 = 0); + void 0 === oy_1 && (oy_1 = 0); + void 0 === oy_2 && (oy_2 = 1); + void 0 === oy_3 && (oy_3 = 0); + void 0 === oz_1 && (oz_1 = 0); + void 0 === oz_2 && (oz_2 = 0); + void 0 === oz_3 && (oz_3 = 1); + this.center = void 0; + this.halfExtents = void 0; + this.orientation = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_OBB; + this.center = new _valueTypes.Vec3(cx, cy, cz); + this.halfExtents = new _valueTypes.Vec3(hw, hh, hl); + this.orientation = new _valueTypes.Mat3(ox_1, ox_2, ox_3, oy_1, oy_2, oy_3, oz_1, oz_2, oz_3); + } + var _proto = obb.prototype; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + transform_extent_m3(_v3_tmp, this.halfExtents, this.orientation); + _valueTypes.Vec3.subtract(minPos, this.center, _v3_tmp); + _valueTypes.Vec3.add(maxPos, this.center, _v3_tmp); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + _valueTypes.Vec3.transformMat4(out.center, this.center, m); + _valueTypes.Mat3.fromQuat(out.orientation, rot); + _valueTypes.Vec3.multiply(out.halfExtents, this.halfExtents, scale); + }; + _proto.translateAndRotate = function translateAndRotate(m, rot, out) { + _valueTypes.Vec3.transformMat4(out.center, this.center, m); + _valueTypes.Mat3.fromQuat(out.orientation, rot); + }; + _proto.setScale = function setScale(scale, out) { + _valueTypes.Vec3.multiply(out.halfExtents, this.halfExtents, scale); + }; + return obb; + })(); + exports["default"] = obb; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192 + }], + 198: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var v1 = new _valueTypes.Vec3(0, 0, 0); + var v2 = new _valueTypes.Vec3(0, 0, 0); + var temp_mat = cc.mat4(); + var temp_vec4 = cc.v4(); + var plane = (function () { + plane.create = function create(nx, ny, nz, d) { + return new plane(nx, ny, nz, d); + }; + plane.clone = function clone(p) { + return new plane(p.n.x, p.n.y, p.n.z, p.d); + }; + plane.copy = function copy(out, p) { + _valueTypes.Vec3.copy(out.n, p.n); + out.d = p.d; + return out; + }; + plane.fromPoints = function fromPoints(out, a, b, c) { + _valueTypes.Vec3.subtract(v1, b, a); + _valueTypes.Vec3.subtract(v2, c, a); + _valueTypes.Vec3.normalize(out.n, _valueTypes.Vec3.cross(out.n, v1, v2)); + out.d = _valueTypes.Vec3.dot(out.n, a); + return out; + }; + plane.set = function set(out, nx, ny, nz, d) { + out.n.x = nx; + out.n.y = ny; + out.n.z = nz; + out.d = d; + return out; + }; + plane.fromNormalAndPoint = function fromNormalAndPoint(out, normal, point) { + _valueTypes.Vec3.copy(out.n, normal); + out.d = _valueTypes.Vec3.dot(normal, point); + return out; + }; + plane.normalize = function normalize(out, a) { + var len = a.n.len(); + _valueTypes.Vec3.normalize(out.n, a.n); + len > 0 && (out.d = a.d / len); + return out; + }; + function plane(nx, ny, nz, d) { + void 0 === nx && (nx = 0); + void 0 === ny && (ny = 1); + void 0 === nz && (nz = 0); + void 0 === d && (d = 0); + this.n = void 0; + this.d = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_PLANE; + this.n = new _valueTypes.Vec3(nx, ny, nz); + this.d = d; + } + var _proto = plane.prototype; + _proto.transform = function transform(mat) { + _valueTypes.Mat4.invert(temp_mat, mat); + _valueTypes.Mat4.transpose(temp_mat, temp_mat); + _valueTypes.Vec4.set(temp_vec4, this.n.x, this.n.y, this.n.z, this.d); + _valueTypes.Vec4.transformMat4(temp_vec4, temp_vec4, temp_mat); + _valueTypes.Vec3.set(this.n, temp_vec4.x, temp_vec4.y, temp_vec4.z); + this.d = temp_vec4.w; + }; + return plane; + })(); + exports["default"] = plane; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192 + }], + 199: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ray = (function () { + ray.create = function create(ox, oy, oz, dx, dy, dz) { + void 0 === ox && (ox = 0); + void 0 === oy && (oy = 0); + void 0 === oz && (oz = 0); + void 0 === dx && (dx = 0); + void 0 === dy && (dy = 0); + void 0 === dz && (dz = 1); + return new ray(ox, oy, oz, dx, dy, dz); + }; + ray.clone = function clone(a) { + return new ray(a.o.x, a.o.y, a.o.z, a.d.x, a.d.y, a.d.z); + }; + ray.copy = function copy(out, a) { + _valueTypes.Vec3.copy(out.o, a.o); + _valueTypes.Vec3.copy(out.d, a.d); + return out; + }; + ray.fromPoints = function fromPoints(out, origin, target) { + _valueTypes.Vec3.copy(out.o, origin); + _valueTypes.Vec3.normalize(out.d, _valueTypes.Vec3.subtract(out.d, target, origin)); + return out; + }; + ray.set = function set(out, ox, oy, oz, dx, dy, dz) { + out.o.x = ox; + out.o.y = oy; + out.o.z = oz; + out.d.x = dx; + out.d.y = dy; + out.d.z = dz; + return out; + }; + function ray(ox, oy, oz, dx, dy, dz) { + void 0 === ox && (ox = 0); + void 0 === oy && (oy = 0); + void 0 === oz && (oz = 0); + void 0 === dx && (dx = 0); + void 0 === dy && (dy = 0); + void 0 === dz && (dz = -1); + this.o = void 0; + this.d = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_RAY; + this.o = new _valueTypes.Vec3(ox, oy, oz); + this.d = new _valueTypes.Vec3(dx, dy, dz); + } + var _proto = ray.prototype; + _proto.computeHit = function computeHit(out, distance) { + _valueTypes.Vec3.normalize(out, this.d); + _valueTypes.Vec3.scaleAndAdd(out, this.o, out, distance); + }; + return ray; + })(); + exports["default"] = ray; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192 + }], + 200: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../value-types"); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _v3_tmp = new _valueTypes.Vec3(); + var sphere = (function () { + sphere.create = function create(cx, cy, cz, r) { + return new sphere(cx, cy, cz, r); + }; + sphere.clone = function clone(p) { + return new sphere(p.center.x, p.center.y, p.center.z, p.radius); + }; + sphere.copy = function copy(out, p) { + _valueTypes.Vec3.copy(out.center, p.center); + out.radius = p.radius; + return out; + }; + sphere.fromPoints = function fromPoints(out, minPos, maxPos) { + _valueTypes.Vec3.multiplyScalar(out.center, _valueTypes.Vec3.add(_v3_tmp, minPos, maxPos), .5); + out.radius = .5 * _valueTypes.Vec3.subtract(_v3_tmp, maxPos, minPos).len(); + return out; + }; + sphere.set = function set(out, cx, cy, cz, r) { + out.center.x = cx; + out.center.y = cy; + out.center.z = cz; + out.radius = r; + return out; + }; + function sphere(cx, cy, cz, r) { + void 0 === cx && (cx = 0); + void 0 === cy && (cy = 0); + void 0 === cz && (cz = 0); + void 0 === r && (r = 1); + this.center = void 0; + this.radius = void 0; + this._type = void 0; + this._type = _enums["default"].SHAPE_SPHERE; + this.center = new _valueTypes.Vec3(cx, cy, cz); + this.radius = r; + } + var _proto = sphere.prototype; + _proto.clone = function clone() { + return sphere.clone(this); + }; + _proto.copy = function copy(a) { + return sphere.copy(this, a); + }; + _proto.getBoundary = function getBoundary(minPos, maxPos) { + _valueTypes.Vec3.set(minPos, this.center.x - this.radius, this.center.y - this.radius, this.center.z - this.radius); + _valueTypes.Vec3.set(maxPos, this.center.x + this.radius, this.center.y + this.radius, this.center.z + this.radius); + }; + _proto.transform = function transform(m, pos, rot, scale, out) { + _valueTypes.Vec3.transformMat4(out.center, this.center, m); + out.radius = this.radius * scale.maxAxis(); + }; + _proto.translateAndRotate = function translateAndRotate(m, rot, out) { + _valueTypes.Vec3.transformMat4(out.center, this.center, m); + }; + _proto.setScale = function setScale(scale, out) { + out.radius = this.radius * scale.maxAxis(); + }; + return sphere; + })(); + exports["default"] = sphere; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./enums": 192 + }], + 201: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../value-types/vec3")); + var _enums = _interopRequireDefault(require("./enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var triangle = (function () { + triangle.create = function create(ax, ay, az, bx, by, bz, cx, cy, cz) { + return new triangle(ax, ay, az, bx, by, bz, cx, cy, cz); + }; + triangle.clone = function clone(t) { + return new triangle(t.a.x, t.a.y, t.a.z, t.b.x, t.b.y, t.b.z, t.c.x, t.c.y, t.c.z); + }; + triangle.copy = function copy(out, t) { + _vec["default"].copy(out.a, t.a); + _vec["default"].copy(out.b, t.b); + _vec["default"].copy(out.c, t.c); + return out; + }; + triangle.fromPoints = function fromPoints(out, a, b, c) { + _vec["default"].copy(out.a, a); + _vec["default"].copy(out.b, b); + _vec["default"].copy(out.c, c); + return out; + }; + triangle.set = function set(out, ax, ay, az, bx, by, bz, cx, cy, cz) { + out.a.x = ax; + out.a.y = ay; + out.a.z = az; + out.b.x = bx; + out.b.y = by; + out.b.z = bz; + out.c.x = cx; + out.c.y = cy; + out.c.z = cz; + return out; + }; + function triangle(ax, ay, az, bx, by, bz, cx, cy, cz) { + this.a = void 0; + this.b = void 0; + this.c = void 0; + this._type = void 0; + this.a = new _vec["default"](ax, ay, az); + this.b = new _vec["default"](bx, by, bz); + this.c = new _vec["default"](cx, cy, cz); + this._type = _enums["default"].SHAPE_TRIANGLE; + } + return triangle; + })(); + exports["default"] = triangle; + module.exports = exports["default"]; + }), { + "../value-types/vec3": 349, + "./enums": 192 + }], + 202: [(function (require, module, exports) { + "use strict"; + var RenderComponent = require("../components/CCRenderComponent"); + var Material = require("../assets/material/CCMaterial"); + var Types = require("./types"); + var LineCap = Types.LineCap; + var LineJoin = Types.LineJoin; + var Graphics = cc.Class({ + name: "cc.Graphics", + extends: RenderComponent, + editor: false, + ctor: function ctor() { + this._impl = new Graphics._Impl(this); + }, + properties: { + _lineWidth: 2, + _strokeColor: cc.Color.BLACK, + _lineJoin: LineJoin.MITER, + _lineCap: LineCap.BUTT, + _fillColor: cc.Color.WHITE, + _miterLimit: 10, + lineWidth: { + get: function get() { + return this._lineWidth; + }, + set: function set(value) { + this._lineWidth = value; + this._impl.lineWidth = value; + } + }, + lineJoin: { + get: function get() { + return this._lineJoin; + }, + set: function set(value) { + this._lineJoin = value; + this._impl.lineJoin = value; + }, + type: LineJoin + }, + lineCap: { + get: function get() { + return this._lineCap; + }, + set: function set(value) { + this._lineCap = value; + this._impl.lineCap = value; + }, + type: LineCap + }, + strokeColor: { + get: function get() { + return this._strokeColor; + }, + set: function set(value) { + this._impl.strokeColor = this._strokeColor = cc.color(value); + } + }, + fillColor: { + get: function get() { + return this._fillColor; + }, + set: function set(value) { + this._impl.fillColor = this._fillColor = cc.color(value); + } + }, + miterLimit: { + get: function get() { + return this._miterLimit; + }, + set: function set(value) { + this._miterLimit = value; + this._impl.miterLimit = value; + } + } + }, + statics: { + LineJoin: LineJoin, + LineCap: LineCap + }, + onRestore: function onRestore() { + this._impl || (this._impl = new Graphics._Impl(this)); + }, + onDestroy: function onDestroy() { + this.clear(true); + this._super(); + this._impl = null; + }, + _getDefaultMaterial: function _getDefaultMaterial() { + return Material.getBuiltinMaterial("2d-graphics"); + }, + _updateMaterial: function _updateMaterial() { + var material = this._materials[0]; + if (!material) return; + void 0 !== material.getDefine("CC_USE_MODEL") && material.define("CC_USE_MODEL", true); + void 0 !== material.getDefine("CC_SUPPORT_standard_derivatives") && cc.sys.glExtension("OES_standard_derivatives") && material.define("CC_SUPPORT_standard_derivatives", true); + }, + moveTo: function moveTo(x, y) { + if (true, x instanceof cc.Vec2) { + cc.warn("[moveTo] : Can not pass Vec2 as [x, y] value, please check it."); + return; + } + this._impl.moveTo(x, y); + }, + lineTo: function lineTo(x, y) { + if (true, x instanceof cc.Vec2) { + cc.warn("[moveTo] : Can not pass Vec2 as [x, y] value, please check it."); + return; + } + this._impl.lineTo(x, y); + }, + bezierCurveTo: function bezierCurveTo(c1x, c1y, c2x, c2y, x, y) { + this._impl.bezierCurveTo(c1x, c1y, c2x, c2y, x, y); + }, + quadraticCurveTo: function quadraticCurveTo(cx, cy, x, y) { + this._impl.quadraticCurveTo(cx, cy, x, y); + }, + arc: function arc(cx, cy, r, startAngle, endAngle, counterclockwise) { + this._impl.arc(cx, cy, r, startAngle, endAngle, counterclockwise); + }, + ellipse: function ellipse(cx, cy, rx, ry) { + this._impl.ellipse(cx, cy, rx, ry); + }, + circle: function circle(cx, cy, r) { + this._impl.circle(cx, cy, r); + }, + rect: function rect(x, y, w, h) { + this._impl.rect(x, y, w, h); + }, + roundRect: function roundRect(x, y, w, h, r) { + this._impl.roundRect(x, y, w, h, r); + }, + fillRect: function fillRect(x, y, w, h) { + this.rect(x, y, w, h); + this.fill(); + }, + clear: function clear(clean) { + this._impl.clear(clean); + this._assembler && this._assembler.clear(clean); + }, + close: function close() { + this._impl.close(); + }, + stroke: function stroke() { + this._assembler || this._resetAssembler(); + this._assembler.stroke(this); + }, + fill: function fill() { + this._assembler || this._resetAssembler(); + this._assembler.fill(this); + } + }); + cc.Graphics = module.exports = Graphics; + cc.Graphics.Types = Types; + cc.Graphics.Helper = require("./helper"); + }), { + "../assets/material/CCMaterial": 124, + "../components/CCRenderComponent": 160, + "./helper": 203, + "./types": 205 + }], + 203: [(function (require, module, exports) { + "use strict"; + var PointFlags = require("./types").PointFlags; + var PI = Math.PI; + var min = Math.min; + var max = Math.max; + var cos = Math.cos; + var sin = Math.sin; + var abs = Math.abs; + var sign = Math.sign; + var KAPPA90 = .5522847493; + function arc(ctx, cx, cy, r, startAngle, endAngle, counterclockwise) { + counterclockwise = counterclockwise || false; + var a = 0, da = 0, hda = 0, kappa = 0; + var dx = 0, dy = 0, x = 0, y = 0, tanx = 0, tany = 0; + var px = 0, py = 0, ptanx = 0, ptany = 0; + var i, ndivs; + da = endAngle - startAngle; + if (counterclockwise) if (abs(da) >= 2 * PI) da = 2 * PI; else while (da < 0) da += 2 * PI; else if (abs(da) >= 2 * PI) da = 2 * -PI; else while (da > 0) da -= 2 * PI; + ndivs = 0 | max(1, min(abs(da) / (.5 * PI) + .5, 5)); + hda = da / ndivs / 2; + kappa = abs(4 / 3 * (1 - cos(hda)) / sin(hda)); + counterclockwise || (kappa = -kappa); + for (i = 0; i <= ndivs; i++) { + a = startAngle + da * (i / ndivs); + dx = cos(a); + dy = sin(a); + x = cx + dx * r; + y = cy + dy * r; + tanx = -dy * r * kappa; + tany = dx * r * kappa; + 0 === i ? ctx.moveTo(x, y) : ctx.bezierCurveTo(px + ptanx, py + ptany, x - tanx, y - tany, x, y); + px = x; + py = y; + ptanx = tanx; + ptany = tany; + } + } + function ellipse(ctx, cx, cy, rx, ry) { + ctx.moveTo(cx - rx, cy); + ctx.bezierCurveTo(cx - rx, cy + ry * KAPPA90, cx - rx * KAPPA90, cy + ry, cx, cy + ry); + ctx.bezierCurveTo(cx + rx * KAPPA90, cy + ry, cx + rx, cy + ry * KAPPA90, cx + rx, cy); + ctx.bezierCurveTo(cx + rx, cy - ry * KAPPA90, cx + rx * KAPPA90, cy - ry, cx, cy - ry); + ctx.bezierCurveTo(cx - rx * KAPPA90, cy - ry, cx - rx, cy - ry * KAPPA90, cx - rx, cy); + ctx.close(); + } + function roundRect(ctx, x, y, w, h, r) { + if (r < .1) { + ctx.rect(x, y, w, h); + return; + } + var rx = min(r, .5 * abs(w)) * sign(w), ry = min(r, .5 * abs(h)) * sign(h); + ctx.moveTo(x, y + ry); + ctx.lineTo(x, y + h - ry); + ctx.bezierCurveTo(x, y + h - ry * (1 - KAPPA90), x + rx * (1 - KAPPA90), y + h, x + rx, y + h); + ctx.lineTo(x + w - rx, y + h); + ctx.bezierCurveTo(x + w - rx * (1 - KAPPA90), y + h, x + w, y + h - ry * (1 - KAPPA90), x + w, y + h - ry); + ctx.lineTo(x + w, y + ry); + ctx.bezierCurveTo(x + w, y + ry * (1 - KAPPA90), x + w - rx * (1 - KAPPA90), y, x + w - rx, y); + ctx.lineTo(x + rx, y); + ctx.bezierCurveTo(x + rx * (1 - KAPPA90), y, x, y + ry * (1 - KAPPA90), x, y + ry); + ctx.close(); + } + function tesselateBezier(ctx, x1, y1, x2, y2, x3, y3, x4, y4, level, type) { + var x12, y12, x23, y23, x34, y34, x123, y123, x234, y234, x1234, y1234; + var dx, dy, d2, d3; + if (level > 10) return; + x12 = .5 * (x1 + x2); + y12 = .5 * (y1 + y2); + x23 = .5 * (x2 + x3); + y23 = .5 * (y2 + y3); + x34 = .5 * (x3 + x4); + y34 = .5 * (y3 + y4); + x123 = .5 * (x12 + x23); + y123 = .5 * (y12 + y23); + dx = x4 - x1; + dy = y4 - y1; + d2 = abs((x2 - x4) * dy - (y2 - y4) * dx); + d3 = abs((x3 - x4) * dy - (y3 - y4) * dx); + if ((d2 + d3) * (d2 + d3) < ctx._tessTol * (dx * dx + dy * dy)) { + ctx._addPoint(x4, y4, 0 === type ? type | PointFlags.PT_BEVEL : type); + return; + } + x234 = .5 * (x23 + x34); + y234 = .5 * (y23 + y34); + x1234 = .5 * (x123 + x234); + y1234 = .5 * (y123 + y234); + tesselateBezier(ctx, x1, y1, x12, y12, x123, y123, x1234, y1234, level + 1, 0); + tesselateBezier(ctx, x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1, type); + } + module.exports = { + arc: arc, + ellipse: ellipse, + roundRect: roundRect, + tesselateBezier: tesselateBezier + }; + }), { + "./types": 205 + }], + 204: [(function (require, module, exports) { + "use strict"; + require("./graphics"); + }), { + "./graphics": 202 + }], + 205: [(function (require, module, exports) { + "use strict"; + var LineCap = cc.Enum({ + BUTT: 0, + ROUND: 1, + SQUARE: 2 + }); + var LineJoin = cc.Enum({ + BEVEL: 0, + ROUND: 1, + MITER: 2 + }); + var PointFlags = cc.Enum({ + PT_CORNER: 1, + PT_LEFT: 2, + PT_BEVEL: 4, + PT_INNERBEVEL: 8 + }); + module.exports = { + LineCap: LineCap, + LineJoin: LineJoin, + PointFlags: PointFlags + }; + }), {}], + 206: [(function (require, module, exports) { + "use strict"; + require("./platform"); + require("./assets"); + true; + require("./CCNode"); + require("./CCPrivateNode"); + require("./CCScene"); + require("./components"); + require("./graphics"); + require("./collider"); + require("./collider/CCIntersection"); + require("./physics"); + require("./camera/CCCamera"); + require("./geom-utils"); + require("./mesh"); + require("./3d"); + require("./base-ui/CCWidgetManager"); + }), { + "./3d": 30, + "./CCNode": 73, + "./CCPrivateNode": 74, + "./CCScene": 75, + "./assets": 122, + "./base-ui/CCWidgetManager": 133, + "./camera/CCCamera": 134, + "./collider": 142, + "./collider/CCIntersection": 140, + "./components": 178, + "./geom-utils": 194, + "./graphics": 204, + "./mesh": 209, + "./physics": 224, + "./platform": 257 + }], + 207: [(function (require, module, exports) { + "use strict"; + var _inputAssembler = _interopRequireDefault(require("../../renderer/core/input-assembler")); + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _meshData = require("./mesh-data"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var renderer = require("../renderer"); + var EventTarget = require("../event/event-target"); + function applyColor(data, offset, value) { + data[offset] = value._val; + } + function applyVec2(data, offset, value) { + data[offset] = value.x; + data[offset + 1] = value.y; + } + function applyVec3(data, offset, value) { + data[offset] = value.x; + data[offset + 1] = value.y; + data[offset + 2] = value.z; + } + var _compType2fn = { + 5120: "getInt8", + 5121: "getUint8", + 5122: "getInt16", + 5123: "getUint16", + 5124: "getInt32", + 5125: "getUint32", + 5126: "getFloat32" + }; + var _compType2write = { + 5120: "setInt8", + 5121: "setUint8", + 5122: "setInt16", + 5123: "setUint16", + 5124: "setInt32", + 5125: "setUint32", + 5126: "setFloat32" + }; + var littleEndian = (function () { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 256, true); + return 256 === new Int16Array(buffer)[0]; + })(); + var Mesh = cc.Class({ + name: "cc.Mesh", + extends: cc.Asset, + mixins: [EventTarget], + properties: { + _nativeAsset: { + override: true, + get: function get() { + return this._buffer; + }, + set: function set(bin) { + this._buffer = ArrayBuffer.isView(bin) ? bin.buffer : bin; + this.initWithBuffer(); + } + }, + _vertexBundles: { + default: null, + type: _meshData.VertexBundle + }, + _primitives: { + default: null, + Primitive: _meshData.Primitive + }, + _minPos: cc.v3(), + _maxPos: cc.v3(), + subMeshes: { + get: function get() { + return this._subMeshes; + }, + set: function set(v) { + this._subMeshes = v; + } + }, + subDatas: { + get: function get() { + return this._subDatas; + } + } + }, + ctor: function ctor() { + this._subMeshes = []; + this._subDatas = []; + this.loaded = false; + }, + initWithBuffer: function initWithBuffer() { + this._subMeshes.length = 0; + var primitives = this._primitives; + for (var i = 0; i < primitives.length; i++) { + var primitive = primitives[i]; + var ibrange = primitive.data; + var ibData = new Uint8Array(this._buffer, ibrange.offset, ibrange.length); + var vertexBundle = this._vertexBundles[primitive.vertexBundleIndices[0]]; + var vbRange = vertexBundle.data; + var gfxVFmt = new _gfx["default"].VertexFormat(vertexBundle.formats); + var vbData = new Uint8Array(this._buffer, vbRange.offset, vbRange.length); + var canBatch = this._canVertexFormatBatch(gfxVFmt); + var meshData = new _meshData.MeshData(); + meshData.vData = vbData; + meshData.iData = ibData; + meshData.vfm = gfxVFmt; + meshData.offset = vbRange.offset; + meshData.canBatch = canBatch; + this._subDatas.push(meshData); + false; + var vbBuffer = new _gfx["default"].VertexBuffer(renderer.device, gfxVFmt, _gfx["default"].USAGE_STATIC, vbData); + var ibBuffer = new _gfx["default"].IndexBuffer(renderer.device, primitive.indexUnit, _gfx["default"].USAGE_STATIC, ibData); + this._subMeshes.push(new _inputAssembler["default"](vbBuffer, ibBuffer)); + } + this.loaded = true; + this.emit("load"); + }, + _canVertexFormatBatch: function _canVertexFormatBatch(format) { + var aPosition = format._attr2el[_gfx["default"].ATTR_POSITION]; + var canBatch = !aPosition || aPosition.type === _gfx["default"].ATTR_TYPE_FLOAT32 && format._bytes % 4 === 0; + return canBatch; + }, + init: function init(vertexFormat, vertexCount, dynamic, index) { + void 0 === dynamic && (dynamic = false); + void 0 === index && (index = 0); + var data = new Uint8Array(vertexFormat._bytes * vertexCount); + var meshData = new _meshData.MeshData(); + meshData.vData = data; + meshData.vfm = vertexFormat; + meshData.vDirty = true; + meshData.canBatch = this._canVertexFormatBatch(vertexFormat); + true; + var vb = new _gfx["default"].VertexBuffer(renderer.device, vertexFormat, dynamic ? _gfx["default"].USAGE_DYNAMIC : _gfx["default"].USAGE_STATIC, data); + meshData.vb = vb; + this._subMeshes[index] = new _inputAssembler["default"](meshData.vb); + var oldSubData = this._subDatas[index]; + if (oldSubData) { + oldSubData.vb && oldSubData.vb.destroy(); + oldSubData.ib && oldSubData.ib.destroy(); + } + this._subDatas[index] = meshData; + this.loaded = true; + this.emit("load"); + this.emit("init-format"); + }, + setVertices: function setVertices(name, values, index) { + index = index || 0; + var subData = this._subDatas[index]; + var el = subData.vfm.element(name); + if (!el) return cc.warn("Cannot find " + name + " attribute in vertex defines."); + var isFlatMode = "number" === typeof values[0]; + var elNum = el.num; + var verticesCount = isFlatMode ? values.length / elNum | 0 : values.length; + subData.vData.byteLength < verticesCount * el.stride && subData.setVData(new Uint8Array(verticesCount * subData.vfm._bytes)); + var data; + var bytes = 4; + if (name === _gfx["default"].ATTR_COLOR) if (isFlatMode) { + data = subData.getVData(); + bytes = 1; + } else data = subData.getVData(Uint32Array); else data = subData.getVData(Float32Array); + var stride = el.stride / bytes; + var offset = el.offset / bytes; + if (isFlatMode) for (var i = 0, l = values.length / elNum; i < l; i++) { + var sOffset = i * elNum; + var dOffset = i * stride + offset; + for (var j = 0; j < elNum; j++) data[dOffset + j] = values[sOffset + j]; + } else { + var applyFunc; + applyFunc = name === _gfx["default"].ATTR_COLOR ? applyColor : 2 === elNum ? applyVec2 : applyVec3; + for (var _i = 0, _l = values.length; _i < _l; _i++) { + var v = values[_i]; + var vOffset = _i * stride + offset; + applyFunc(data, vOffset, v); + } + } + subData.vDirty = true; + }, + setIndices: function setIndices(indices, index, dynamic) { + index = index || 0; + var iData = indices; + if (indices instanceof Uint16Array) iData = new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength); else if (Array.isArray(indices)) { + iData = new Uint16Array(indices); + iData = new Uint8Array(iData.buffer, iData.byteOffset, iData.byteLength); + } + var usage = dynamic ? _gfx["default"].USAGE_DYNAMIC : _gfx["default"].USAGE_STATIC; + var subData = this._subDatas[index]; + if (subData.ib) { + subData.iData = iData; + subData.iDirty = true; + } else { + subData.iData = iData; + true; + var buffer = new _gfx["default"].IndexBuffer(renderer.device, _gfx["default"].INDEX_FMT_UINT16, usage, iData, iData.byteLength / _gfx["default"].IndexBuffer.BYTES_PER_INDEX[_gfx["default"].INDEX_FMT_UINT16]); + subData.ib = buffer; + this._subMeshes[index]._indexBuffer = subData.ib; + } + }, + setPrimitiveType: function setPrimitiveType(type, index) { + index = index || 0; + var subMesh = this._subMeshes[index]; + if (!subMesh) { + cc.warn("Do not have sub mesh at index " + index); + return; + } + this._subMeshes[index]._primitiveType = type; + }, + clear: function clear() { + this._subMeshes.length = 0; + var subDatas = this._subDatas; + for (var i = 0, len = subDatas.length; i < len; i++) { + var vb = subDatas[i].vb; + vb && vb.destroy(); + var ib = subDatas[i].ib; + ib && ib.destroy(); + } + subDatas.length = 0; + }, + setBoundingBox: function setBoundingBox(min, max) { + this._minPos = min; + this._maxPos = max; + }, + destroy: function destroy() { + this.clear(); + }, + _uploadData: function _uploadData() { + var subDatas = this._subDatas; + for (var i = 0, len = subDatas.length; i < len; i++) { + var subData = subDatas[i]; + if (subData.vDirty) { + var buffer = subData.vb, data = subData.vData; + buffer.update(0, data); + subData.vDirty = false; + } + if (subData.iDirty) { + var _buffer = subData.ib, _data = subData.iData; + _buffer.update(0, _data); + subData.iDirty = false; + } + } + }, + _getAttrMeshData: function _getAttrMeshData(subDataIndex, name) { + var subData = this._subDatas[subDataIndex]; + if (!subData) return []; + var format = subData.vfm; + var fmt = format.element(name); + if (!fmt) return []; + subData.attrDatas || (subData.attrDatas = {}); + var attrDatas = subData.attrDatas; + var data = attrDatas[name]; + if (data) return data; + data = attrDatas[name] = []; + var vbData = subData.vData; + var dv = new DataView(vbData.buffer, vbData.byteOffset, vbData.byteLength); + var stride = fmt.stride; + var eleOffset = fmt.offset; + var eleNum = fmt.num; + var eleByte = fmt.bytes / eleNum; + var fn = _compType2fn[fmt.type]; + var vertexCount = vbData.byteLength / format._bytes; + for (var i = 0; i < vertexCount; i++) { + var offset = i * stride + eleOffset; + for (var j = 0; j < eleNum; j++) { + var v = dv[fn](offset + j * eleByte, littleEndian); + data.push(v); + } + } + return data; + }, + copyAttribute: function copyAttribute(primitiveIndex, attributeName, buffer, stride, offset) { + var written = false; + var subData = this._subDatas[primitiveIndex]; + if (!subData) return written; + var format = subData.vfm; + var fmt = format.element(attributeName); + if (!fmt) return written; + var writter = _compType2write[fmt.type]; + if (!writter) return written; + var data = this._getAttrMeshData(primitiveIndex, attributeName); + var vertexCount = subData.vData.byteLength / format._bytes; + var eleByte = fmt.bytes / fmt.num; + if (data.length > 0) { + var outputView = new DataView(buffer, offset); + var outputStride = stride; + var num = fmt.num; + for (var i = 0; i < vertexCount; ++i) { + var index = i * num; + for (var j = 0; j < num; ++j) { + var inputOffset = index + j; + var outputOffset = outputStride * i + eleByte * j; + outputView[writter](outputOffset, data[inputOffset], littleEndian); + } + } + written = true; + } + return written; + }, + copyIndices: function copyIndices(primitiveIndex, outputArray) { + var subData = this._subDatas[primitiveIndex]; + if (!subData) return false; + var iData = subData.iData; + var indexCount = iData.length / 2; + var dv = new DataView(iData.buffer, iData.byteOffset, iData.byteLength); + var fn = _compType2fn[_gfx["default"].INDEX_FMT_UINT8]; + for (var i = 0; i < indexCount; ++i) outputArray[i] = dv[fn](2 * i); + return true; + } + }); + cc.Mesh = module.exports = Mesh; + }), { + "../../renderer/core/input-assembler": 362, + "../../renderer/gfx": 372, + "../event/event-target": 186, + "../renderer": 271, + "./mesh-data": 210 + }], + 208: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _inputAssembler = _interopRequireDefault(require("../../renderer/core/input-assembler")); + var _aabb = _interopRequireDefault(require("../geom-utils/aabb")); + var _vec = _interopRequireDefault(require("../value-types/vec3")); + var _mat = _interopRequireDefault(require("../value-types/mat4")); + var _materialVariant = _interopRequireDefault(require("../assets/material/material-variant")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var RenderComponent = require("../components/CCRenderComponent"); + var Mesh = require("./CCMesh"); + var RenderFlow = require("../renderer/render-flow"); + var Renderer = require("../renderer"); + var Material = require("../assets/material/CCMaterial"); + var ShadowCastingMode = cc.Enum({ + OFF: 0, + ON: 1 + }); + var MeshRenderer = cc.Class({ + name: "cc.MeshRenderer", + extends: RenderComponent, + editor: false, + properties: { + _mesh: { + default: null, + type: Mesh + }, + _receiveShadows: false, + _shadowCastingMode: ShadowCastingMode.OFF, + _enableAutoBatch: false, + mesh: { + get: function get() { + return this._mesh; + }, + set: function set(v) { + if (this._mesh === v) return; + this._setMesh(v); + if (!v) { + this.disableRender(); + return; + } + this.markForRender(true); + this.node._renderFlag |= RenderFlow.FLAG_TRANSFORM; + }, + type: Mesh, + animatable: false + }, + textures: { + default: [], + type: cc.Texture2D, + visible: false + }, + receiveShadows: { + get: function get() { + return this._receiveShadows; + }, + set: function set(val) { + this._receiveShadows = val; + this._updateReceiveShadow(); + }, + animatable: false + }, + shadowCastingMode: { + get: function get() { + return this._shadowCastingMode; + }, + set: function set(val) { + this._shadowCastingMode = val; + this._updateCastShadow(); + }, + type: ShadowCastingMode, + animatable: false + }, + enableAutoBatch: { + get: function get() { + return this._enableAutoBatch; + }, + set: function set(val) { + this._enableAutoBatch = val; + } + } + }, + statics: { + ShadowCastingMode: ShadowCastingMode + }, + ctor: function ctor() { + this._boundingBox = cc.geomUtils && new _aabb["default"](); + true; + this._debugDatas = { + wireFrame: [], + normal: [] + }; + }, + onEnable: function onEnable() { + var _this = this; + this._super(); + if (this._mesh && !this._mesh.loaded) { + this.disableRender(); + this._mesh.once("load", (function () { + if (!_this.isValid) return; + _this._setMesh(_this._mesh); + _this.markForRender(true); + })); + cc.assetManager.postLoadNative(this._mesh); + } else this._setMesh(this._mesh); + this._updateRenderNode(); + this._updateMaterial(); + }, + onDestroy: function onDestroy() { + this._setMesh(null); + cc.pool.assembler.put(this._assembler); + }, + _updateRenderNode: function _updateRenderNode() { + this._assembler.setRenderNode(this.node); + }, + _setMesh: function _setMesh(mesh) { + cc.geomUtils && mesh && _aabb["default"].fromPoints(this._boundingBox, mesh._minPos, mesh._maxPos); + this._mesh && this._mesh.off("init-format", this._updateMeshAttribute, this); + mesh && mesh.on("init-format", this._updateMeshAttribute, this); + this._mesh = mesh; + this._assembler && (this._assembler._worldDatas = {}); + this._updateMeshAttribute(); + }, + _getDefaultMaterial: function _getDefaultMaterial() { + return Material.getBuiltinMaterial("unlit"); + }, + _validateRender: function _validateRender() { + var mesh = this._mesh; + if (mesh && mesh._subDatas.length > 0) return; + this.disableRender(); + }, + _updateMaterial: function _updateMaterial() { + var textures = this.textures; + if (textures && textures.length > 0) { + var defaultMaterial = this._getDefaultMaterial(); + for (var i = 0; i < textures.length; i++) { + var material = this._materials[i]; + if (material && material._uuid !== defaultMaterial._uuid) continue; + if (!material) { + material = _materialVariant["default"].create(defaultMaterial, this); + this.setMaterial(i, material); + } + material.setProperty("diffuseTexture", textures[i]); + } + } + this._updateReceiveShadow(); + this._updateCastShadow(); + this._updateMeshAttribute(); + }, + _updateReceiveShadow: function _updateReceiveShadow() { + var materials = this.getMaterials(); + for (var i = 0; i < materials.length; i++) materials[i].define("CC_USE_SHADOW_MAP", this._receiveShadows, void 0, true); + }, + _updateCastShadow: function _updateCastShadow() { + var materials = this.getMaterials(); + for (var i = 0; i < materials.length; i++) materials[i].define("CC_CASTING_SHADOW", this._shadowCastingMode === ShadowCastingMode.ON, void 0, true); + }, + _updateMeshAttribute: function _updateMeshAttribute() { + var subDatas = this._mesh && this._mesh.subDatas; + if (!subDatas) return; + var materials = this.getMaterials(); + for (var i = 0; i < materials.length; i++) { + if (!subDatas[i]) break; + var vfm = subDatas[i].vfm; + var material = materials[i]; + material.define("CC_USE_ATTRIBUTE_COLOR", !!vfm.element(_gfx["default"].ATTR_COLOR), void 0, true); + material.define("CC_USE_ATTRIBUTE_UV0", !!vfm.element(_gfx["default"].ATTR_UV0), void 0, true); + material.define("CC_USE_ATTRIBUTE_NORMAL", !!vfm.element(_gfx["default"].ATTR_NORMAL), void 0, true); + material.define("CC_USE_ATTRIBUTE_TANGENT", !!vfm.element(_gfx["default"].ATTR_TANGENT), void 0, true); + } + true; + for (var name in this._debugDatas) this._debugDatas[name].length = 0; + false; + }, + _checkBacth: function _checkBacth() { } + }); + true; + var BLACK_COLOR = cc.Color.BLACK; + var RED_COLOR = cc.Color.RED; + var v3_tmp = [cc.v3(), cc.v3()]; + var mat4_tmp = cc.mat4(); + var createDebugDataFns = { + normal: function normal(comp, ia, subData, subIndex) { + var oldVfm = subData.vfm; + var normalEle = oldVfm.element(_gfx["default"].ATTR_NORMAL); + var posEle = oldVfm.element(_gfx["default"].ATTR_POSITION); + var jointEle = oldVfm.element(_gfx["default"].ATTR_JOINTS); + var weightEle = oldVfm.element(_gfx["default"].ATTR_WEIGHTS); + if (!normalEle || !posEle) return; + var indices = []; + var vbData = []; + var lineLength = 100; + _vec["default"].set(v3_tmp[0], 5, 0, 0); + _mat["default"].invert(mat4_tmp, comp.node._worldMatrix); + _vec["default"].transformMat4Normal(v3_tmp[0], v3_tmp[0], mat4_tmp); + lineLength = v3_tmp[0].mag(); + var mesh = comp.mesh; + var posData = mesh._getAttrMeshData(subIndex, _gfx["default"].ATTR_POSITION); + var normalData = mesh._getAttrMeshData(subIndex, _gfx["default"].ATTR_NORMAL); + var jointData = mesh._getAttrMeshData(subIndex, _gfx["default"].ATTR_JOINTS); + var weightData = mesh._getAttrMeshData(subIndex, _gfx["default"].ATTR_WEIGHTS); + var vertexCount = posData.length / posEle.num; + for (var i = 0; i < vertexCount; i++) { + var normalIndex = i * normalEle.num; + var posIndex = i * posEle.num; + _vec["default"].set(v3_tmp[0], normalData[normalIndex], normalData[normalIndex + 1], normalData[normalIndex + 2]); + _vec["default"].set(v3_tmp[1], posData[posIndex], posData[posIndex + 1], posData[posIndex + 2]); + _vec["default"].scaleAndAdd(v3_tmp[0], v3_tmp[1], v3_tmp[0], lineLength); + for (var lineIndex = 0; lineIndex < 2; lineIndex++) { + vbData.push(v3_tmp[lineIndex].x, v3_tmp[lineIndex].y, v3_tmp[lineIndex].z); + if (jointEle) { + var jointIndex = i * jointEle.num; + for (var j = 0; j < jointEle.num; j++) vbData.push(jointData[jointIndex + j]); + } + if (weightEle) { + var weightIndex = i * weightEle.num; + for (var _j = 0; _j < weightEle.num; _j++) vbData.push(weightData[weightIndex + _j]); + } + } + indices.push(2 * i, 2 * i + 1); + } + var formatOpts = [{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }]; + jointEle && formatOpts.push({ + name: _gfx["default"].ATTR_JOINTS, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: jointEle.num + }); + weightEle && formatOpts.push({ + name: _gfx["default"].ATTR_WEIGHTS, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: weightEle.num + }); + var gfxVFmt = new _gfx["default"].VertexFormat(formatOpts); + var vb = new _gfx["default"].VertexBuffer(Renderer.device, gfxVFmt, _gfx["default"].USAGE_STATIC, new Float32Array(vbData)); + var ibData = new Uint16Array(indices); + var ib = new _gfx["default"].IndexBuffer(Renderer.device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_STATIC, ibData, ibData.length); + var m = _materialVariant["default"].createWithBuiltin("unlit"); + m.setProperty("diffuseColor", RED_COLOR); + return { + material: m, + ia: new _inputAssembler["default"](vb, ib, _gfx["default"].PT_LINES) + }; + }, + wireFrame: function wireFrame(comp, ia, subData) { + var oldIbData = subData.getIData(Uint16Array); + var m = _materialVariant["default"].createWithBuiltin("unlit"); + m.setProperty("diffuseColor", BLACK_COLOR); + var indices = []; + for (var i = 0; i < oldIbData.length; i += 3) { + var a = oldIbData[i + 0]; + var b = oldIbData[i + 1]; + var c = oldIbData[i + 2]; + indices.push(a, b, b, c, c, a); + } + var ibData = new Uint16Array(indices); + var ib = new _gfx["default"].IndexBuffer(Renderer.device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_STATIC, ibData, ibData.length); + return { + material: m, + ia: new _inputAssembler["default"](ia._vertexBuffer, ib, _gfx["default"].PT_LINES) + }; + } + }; + var _proto = MeshRenderer.prototype; + _proto._updateDebugDatas = function () { + var debugDatas = this._debugDatas; + var subMeshes = this._mesh.subMeshes; + var subDatas = this._mesh._subDatas; + for (var name in debugDatas) { + var debugData = debugDatas[name]; + if (debugData.length === subMeshes.length) continue; + if (!cc.macro["SHOW_MESH_" + name.toUpperCase()]) continue; + debugData.length = subMeshes.length; + for (var i = 0; i < subMeshes.length; i++) debugData[i] = createDebugDataFns[name](this, subMeshes[i], subDatas[i], i); + } + }; + cc.MeshRenderer = module.exports = MeshRenderer; + }), { + "../../renderer/core/input-assembler": 362, + "../../renderer/gfx": 372, + "../assets/material/CCMaterial": 124, + "../assets/material/material-variant": 131, + "../components/CCRenderComponent": 160, + "../geom-utils/aabb": 190, + "../renderer": 271, + "../renderer/render-flow": 272, + "../value-types/mat4": 341, + "../value-types/vec3": 349, + "./CCMesh": 207 + }], + 209: [(function (require, module, exports) { + "use strict"; + require("./CCMesh"); + true; + require("./CCMeshRenderer"); + require("./mesh-renderer"); + }), { + "./CCMesh": 207, + "./CCMeshRenderer": 208, + "./mesh-renderer": 211 + }], + 210: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.MeshData = MeshData; + exports.Primitive = exports.VertexBundle = exports.VertexFormat = exports.BufferRange = void 0; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var BufferRange = cc.Class({ + name: "cc.BufferRange", + properties: { + offset: 0, + length: 0 + } + }); + exports.BufferRange = BufferRange; + var VertexFormat = cc.Class({ + name: "cc.mesh.VertexFormat", + properties: { + name: "", + type: -1, + num: -1, + normalize: false + } + }); + exports.VertexFormat = VertexFormat; + var VertexBundle = cc.Class({ + name: "cc.mesh.VertexBundle", + properties: { + data: { + default: null, + type: BufferRange + }, + formats: { + default: [], + type: VertexFormat + }, + verticesCount: 0 + } + }); + exports.VertexBundle = VertexBundle; + var Primitive = cc.Class({ + name: "cc.mesh.Primitive", + properties: { + vertexBundleIndices: { + default: [], + type: cc.Float + }, + data: { + default: null, + type: BufferRange + }, + indexUnit: _gfx["default"].INDEX_FMT_UINT16, + topology: _gfx["default"].PT_TRIANGLES + } + }); + exports.Primitive = Primitive; + function MeshData() { + this.vData = null; + this.float32VData = null; + this.uint32VData = null; + this.iData = null; + this.uint16IData = null; + this.vfm = null; + this.offset = 0; + this.vb = null; + this.ib = null; + this.vDirty = false; + this.iDirty = false; + this.enable = true; + } + MeshData.prototype.setVData = function (data) { + this.vData = data; + this.float32VData = null; + this.uint32VData = null; + }; + MeshData.prototype.getVData = function (format) { + if (format === Float32Array) { + this.float32VData || (this.float32VData = new Float32Array(this.vData.buffer, this.vData.byteOffset, this.vData.byteLength / 4)); + return this.float32VData; + } + if (format === Uint32Array) { + this.uint32VData || (this.uint32VData = new Uint32Array(this.vData.buffer, this.vData.byteOffset, this.vData.byteLength / 4)); + return this.uint32VData; + } + return this.vData; + }; + MeshData.prototype.getIData = function (format) { + if (format === Uint16Array) { + this.uint16IData || (this.uint16IData = new Uint16Array(this.iData.buffer, this.iData.byteOffset, this.iData.byteLength / 2)); + return this.uint16IData; + } + return this.iData; + }; + }), { + "../../renderer/gfx": 372 + }], + 211: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("../renderer/assembler")); + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _vec = _interopRequireDefault(require("../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var MeshRenderer = require("./CCMeshRenderer"); + var _tmp_vec3 = new _vec["default"](); + var MeshRendererAssembler = (function (_Assembler) { + _inheritsLoose(MeshRendererAssembler, _Assembler); + function MeshRendererAssembler() { + return _Assembler.apply(this, arguments) || this; + } + var _proto = MeshRendererAssembler.prototype; + _proto.init = function init(renderComp) { + _Assembler.prototype.init.call(this, renderComp); + this._worldDatas = {}; + this._renderNode = null; + }; + _proto.setRenderNode = function setRenderNode(node) { + this._renderNode = node; + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + if (!comp.mesh) return; + comp.mesh._uploadData(); + var isCullingMaskSame = renderer.cullingMask === comp.node._cullingMask; + var enableAutoBatch = comp.enableAutoBatch; + var materials = comp._materials; + var submeshes = comp.mesh._subMeshes; + var subDatas = comp.mesh.subDatas; + for (var i = 0; i < submeshes.length; i++) { + var ia = submeshes[i]; + var meshData = subDatas[i]; + var material = materials[i] || materials[0]; + if (!enableAutoBatch || !meshData.canBatch || ia._primitiveType !== _gfx["default"].PT_TRIANGLES) { + renderer._flush(); + renderer.material = material; + renderer.cullingMask = comp.node._cullingMask; + renderer.node = this._renderNode; + renderer._flushIA(ia); + continue; + } + isCullingMaskSame && material.getHash() === renderer.material.getHash() || renderer._flush(); + renderer.material = material; + renderer.cullingMask = comp.node._cullingMask; + renderer.node = renderer._dummyNode; + this._fillBuffer(comp, meshData, renderer, i); + } + if ((true, cc.macro.SHOW_MESH_WIREFRAME || cc.macro.SHOW_MESH_NORMAL) && !(comp.node._cullingMask & 1 << cc.Node.BuiltinGroupIndex.DEBUG)) { + renderer._flush(); + renderer.node = this._renderNode; + comp._updateDebugDatas(); + cc.macro.SHOW_MESH_WIREFRAME && this._drawDebugDatas(comp, renderer, "wireFrame"); + cc.macro.SHOW_MESH_NORMAL && this._drawDebugDatas(comp, renderer, "normal"); + } + }; + _proto._fillBuffer = function _fillBuffer(comp, meshData, renderer, dataIndex) { + var vData = meshData.getVData(Float32Array); + var vtxFormat = meshData.vfm; + var vertexCount = vData.byteLength / vtxFormat._bytes | 0; + var indices = meshData.getIData(Uint16Array); + var indicesCount = indices.length; + var buffer = renderer.getBuffer("mesh", vtxFormat); + var offsetInfo = buffer.request(vertexCount, indicesCount); + var indiceOffset = offsetInfo.indiceOffset, vertexOffset = offsetInfo.byteOffset >> 2, vertexId = offsetInfo.vertexOffset, vbuf = buffer._vData, ibuf = buffer._iData; + !renderer.worldMatDirty && this._worldDatas[dataIndex] || this._updateWorldVertices(dataIndex, vertexCount, vData, vtxFormat, comp.node._worldMatrix); + vbuf.set(this._worldDatas[dataIndex], vertexOffset); + for (var i = 0; i < indicesCount; i++) ibuf[indiceOffset + i] = vertexId + indices[i]; + }; + _proto._updateWorldVertices = function _updateWorldVertices(dataIndex, vertexCount, local, vtxFormat, wolrdMatrix) { + var world = this._worldDatas[dataIndex]; + if (!world) { + world = this._worldDatas[dataIndex] = new Float32Array(local.length); + world.set(local); + } + var floatCount = vtxFormat._bytes / 4; + var elements = vtxFormat._elements; + for (var i = 0, n = elements.length; i < n; i++) { + var element = elements[i]; + var attrOffset = element.offset / 4; + if (element.name === _gfx["default"].ATTR_POSITION || element.name === _gfx["default"].ATTR_NORMAL) { + var transformMat4 = element.name === _gfx["default"].ATTR_NORMAL ? _vec["default"].transformMat4Normal : _vec["default"].transformMat4; + for (var j = 0; j < vertexCount; j++) { + var offset = j * floatCount + attrOffset; + _tmp_vec3.x = local[offset]; + _tmp_vec3.y = local[offset + 1]; + _tmp_vec3.z = local[offset + 2]; + transformMat4(_tmp_vec3, _tmp_vec3, wolrdMatrix); + world[offset] = _tmp_vec3.x; + world[offset + 1] = _tmp_vec3.y; + world[offset + 2] = _tmp_vec3.z; + } + } + } + }; + _proto._drawDebugDatas = function _drawDebugDatas(comp, renderer, name) { + var debugDatas = comp._debugDatas[name]; + if (!debugDatas) return; + for (var i = 0; i < debugDatas.length; i++) { + var debugData = debugDatas[i]; + if (!debugData) continue; + var material = debugData.material; + renderer.material = material; + renderer._flushIA(debugData.ia); + } + }; + return MeshRendererAssembler; + })(_assembler["default"]); + exports["default"] = MeshRendererAssembler; + _assembler["default"].register(MeshRenderer, MeshRendererAssembler); + module.exports = exports["default"]; + }), { + "../../renderer/gfx": 372, + "../renderer/assembler": 268, + "../value-types/vec3": 349, + "./CCMeshRenderer": 208 + }], + 212: [(function (require, module, exports) { + "use strict"; + var CompScheduler = require("./component-scheduler"); + var Flags = require("./platform/CCObject").Flags; + var js = require("./platform/js"); + var callerFunctor = false; + var MAX_POOL_SIZE = 4; + var IsPreloadStarted = Flags.IsPreloadStarted; + var IsOnLoadStarted = Flags.IsOnLoadStarted; + var IsOnLoadCalled = Flags.IsOnLoadCalled; + var Deactivating = Flags.Deactivating; + var callPreloadInTryCatch = false; + var callOnLoadInTryCatch = false; + var callOnDestroyInTryCatch = false; + var callOnFocusInTryCatch = false; + var callOnLostFocusInTryCatch = false; + var UnsortedInvoker = cc.Class({ + extends: CompScheduler.LifeCycleInvoker, + add: function add(comp) { + this._zero.array.push(comp); + }, + remove: function remove(comp) { + this._zero.fastRemove(comp); + }, + cancelInactive: function cancelInactive(flagToClear) { + CompScheduler.LifeCycleInvoker.stableRemoveInactive(this._zero, flagToClear); + }, + invoke: function invoke() { + this._invoke(this._zero); + this._zero.array.length = 0; + } + }); + var invokePreload = CompScheduler.createInvokeImpl("c.__preload();"); + var invokeOnLoad = CompScheduler.createInvokeImpl("c.onLoad();c._objFlags|=" + IsOnLoadCalled, false, IsOnLoadCalled); + var activateTasksPool = new js.Pool(MAX_POOL_SIZE); + activateTasksPool.get = function getActivateTask() { + var task = this._get() || { + preload: new UnsortedInvoker(invokePreload), + onLoad: new CompScheduler.OneOffInvoker(invokeOnLoad), + onEnable: new CompScheduler.OneOffInvoker(CompScheduler.invokeOnEnable) + }; + task.preload._zero.i = -1; + var invoker = task.onLoad; + invoker._zero.i = -1; + invoker._neg.i = -1; + invoker._pos.i = -1; + invoker = task.onEnable; + invoker._zero.i = -1; + invoker._neg.i = -1; + invoker._pos.i = -1; + return task; + }; + function _componentCorrupted(node, comp, index) { + false; + comp ? node._removeComponent(comp) : js.array.removeAt(node._components, index); + } + function _onLoadInEditor(comp) { + if (comp.onLoad && !cc.engine._isPlaying) { + var focused = Editor.Selection.curActivate("node") === comp.node.uuid; + focused ? comp.onFocusInEditor && callOnFocusInTryCatch(comp) : comp.onLostFocusInEditor && callOnLostFocusInTryCatch(comp); + } + true; + _Scene.AssetsWatcher.start(comp); + } + function ctor() { + this._activatingStack = []; + } + var NodeActivator = cc.Class({ + ctor: ctor, + reset: ctor, + _activateNodeRecursively: function _activateNodeRecursively(node, preloadInvoker, onLoadInvoker, onEnableInvoker) { + if (node._objFlags & Deactivating) { + cc.errorID(3816, node.name); + return; + } + node._activeInHierarchy = true; + var originCount = node._components.length; + for (var i = 0; i < originCount; ++i) { + var component = node._components[i]; + if (component instanceof cc.Component) this.activateComp(component, preloadInvoker, onLoadInvoker, onEnableInvoker); else { + _componentCorrupted(node, component, i); + --i; + --originCount; + } + } + node._childArrivalOrder = node._children.length; + for (var _i = 0, len = node._children.length; _i < len; ++_i) { + var child = node._children[_i]; + child._localZOrder = 4294901760 & child._localZOrder | _i + 1; + child._active && this._activateNodeRecursively(child, preloadInvoker, onLoadInvoker, onEnableInvoker); + } + node._onPostActivated(true); + }, + _deactivateNodeRecursively: function _deactivateNodeRecursively(node) { + false; + node._objFlags |= Deactivating; + node._activeInHierarchy = false; + var originCount = node._components.length; + for (var c = 0; c < originCount; ++c) { + var component = node._components[c]; + if (component._enabled) { + cc.director._compScheduler.disableComp(component); + if (node._activeInHierarchy) { + node._objFlags &= ~Deactivating; + return; + } + } + } + for (var i = 0, len = node._children.length; i < len; ++i) { + var child = node._children[i]; + if (child._activeInHierarchy) { + this._deactivateNodeRecursively(child); + if (node._activeInHierarchy) { + node._objFlags &= ~Deactivating; + return; + } + } + } + node._onPostActivated(false); + node._objFlags &= ~Deactivating; + }, + activateNode: function activateNode(node, active) { + if (active) { + var task = activateTasksPool.get(); + this._activatingStack.push(task); + this._activateNodeRecursively(node, task.preload, task.onLoad, task.onEnable); + task.preload.invoke(); + task.onLoad.invoke(); + task.onEnable.invoke(); + this._activatingStack.pop(); + activateTasksPool.put(task); + } else { + this._deactivateNodeRecursively(node); + var stack = this._activatingStack; + for (var i = 0; i < stack.length; i++) { + var lastTask = stack[i]; + lastTask.preload.cancelInactive(IsPreloadStarted); + lastTask.onLoad.cancelInactive(IsOnLoadStarted); + lastTask.onEnable.cancelInactive(); + } + } + node.emit("active-in-hierarchy-changed", node); + }, + activateComp: function (comp, preloadInvoker, onLoadInvoker, onEnableInvoker) { + if (!cc.isValid(comp, true)) return; + if (!(comp._objFlags & IsPreloadStarted)) { + comp._objFlags |= IsPreloadStarted; + comp.__preload && (preloadInvoker ? preloadInvoker.add(comp) : comp.__preload()); + } + if (!(comp._objFlags & IsOnLoadStarted)) { + comp._objFlags |= IsOnLoadStarted; + if (comp.onLoad) if (onLoadInvoker) onLoadInvoker.add(comp); else { + comp.onLoad(); + comp._objFlags |= IsOnLoadCalled; + } else comp._objFlags |= IsOnLoadCalled; + } + if (comp._enabled) { + var deactivatedOnLoading = !comp.node._activeInHierarchy; + if (deactivatedOnLoading) return; + cc.director._compScheduler.enableComp(comp, onEnableInvoker); + } + }, + destroyComp: function (comp) { + cc.director._compScheduler.disableComp(comp); + comp.onDestroy && comp._objFlags & IsOnLoadCalled && comp.onDestroy(); + }, + resetComp: false + }); + module.exports = NodeActivator; + }), { + "./component-scheduler": 143, + "./platform/CCObject": 245, + "./platform/js": 260, + "./utils/misc": 324 + }], + 213: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("./CCPhysicsTypes").PTM_RATIO; + var ContactType = require("./CCPhysicsTypes").ContactType; + var pools = []; + var pointCache = [cc.v2(), cc.v2()]; + var b2worldmanifold = new b2.WorldManifold(); + var worldmanifold = { + points: [], + separations: [], + normal: cc.v2() + }; + function ManifoldPoint() { + this.localPoint = cc.v2(); + this.normalImpulse = 0; + this.tangentImpulse = 0; + } + var manifoldPointCache = [new ManifoldPoint(), new ManifoldPoint()]; + var b2manifold = new b2.Manifold(); + var manifold = { + type: 0, + localPoint: cc.v2(), + localNormal: cc.v2(), + points: [] + }; + var impulse = { + normalImpulses: [], + tangentImpulses: [] + }; + function PhysicsContact() { } + PhysicsContact.prototype.init = function (b2contact) { + this.colliderA = b2contact.GetFixtureA().collider; + this.colliderB = b2contact.GetFixtureB().collider; + this.disabled = false; + this.disabledOnce = false; + this._impulse = null; + this._inverted = false; + this._b2contact = b2contact; + b2contact._contact = this; + }; + PhysicsContact.prototype.reset = function () { + this.setTangentSpeed(0); + this.resetFriction(); + this.resetRestitution(); + this.colliderA = null; + this.colliderB = null; + this.disabled = false; + this._impulse = null; + this._b2contact._contact = null; + this._b2contact = null; + }; + PhysicsContact.prototype.getWorldManifold = function () { + var points = worldmanifold.points; + var separations = worldmanifold.separations; + var normal = worldmanifold.normal; + this._b2contact.GetWorldManifold(b2worldmanifold); + var b2points = b2worldmanifold.points; + var b2separations = b2worldmanifold.separations; + var count = this._b2contact.GetManifold().pointCount; + points.length = separations.length = count; + for (var i = 0; i < count; i++) { + var p = pointCache[i]; + p.x = b2points[i].x * PTM_RATIO; + p.y = b2points[i].y * PTM_RATIO; + points[i] = p; + separations[i] = b2separations[i] * PTM_RATIO; + } + normal.x = b2worldmanifold.normal.x; + normal.y = b2worldmanifold.normal.y; + if (this._inverted) { + normal.x *= -1; + normal.y *= -1; + } + return worldmanifold; + }; + PhysicsContact.prototype.getManifold = function () { + var points = manifold.points; + var localNormal = manifold.localNormal; + var localPoint = manifold.localPoint; + var b2manifold = this._b2contact.GetManifold(); + var b2points = b2manifold.points; + var count = points.length = b2manifold.pointCount; + for (var i = 0; i < count; i++) { + var p = manifoldPointCache[i]; + var b2p = b2points[i]; + p.localPoint.x = b2p.localPoint.x * PTM_RATIO; + p.localPoint.Y = b2p.localPoint.Y * PTM_RATIO; + p.normalImpulse = b2p.normalImpulse * PTM_RATIO; + p.tangentImpulse = b2p.tangentImpulse; + points[i] = p; + } + localPoint.x = b2manifold.localPoint.x * PTM_RATIO; + localPoint.y = b2manifold.localPoint.y * PTM_RATIO; + localNormal.x = b2manifold.localNormal.x; + localNormal.y = b2manifold.localNormal.y; + manifold.type = b2manifold.type; + if (this._inverted) { + localNormal.x *= -1; + localNormal.y *= -1; + } + return manifold; + }; + PhysicsContact.prototype.getImpulse = function () { + var b2impulse = this._impulse; + if (!b2impulse) return null; + var normalImpulses = impulse.normalImpulses; + var tangentImpulses = impulse.tangentImpulses; + var count = b2impulse.count; + for (var i = 0; i < count; i++) { + normalImpulses[i] = b2impulse.normalImpulses[i] * PTM_RATIO; + tangentImpulses[i] = b2impulse.tangentImpulses[i]; + } + tangentImpulses.length = normalImpulses.length = count; + return impulse; + }; + PhysicsContact.prototype.emit = function (contactType) { + var func; + switch (contactType) { + case ContactType.BEGIN_CONTACT: + func = "onBeginContact"; + break; + + case ContactType.END_CONTACT: + func = "onEndContact"; + break; + + case ContactType.PRE_SOLVE: + func = "onPreSolve"; + break; + + case ContactType.POST_SOLVE: + func = "onPostSolve"; + } + var colliderA = this.colliderA; + var colliderB = this.colliderB; + var bodyA = colliderA.body; + var bodyB = colliderB.body; + var comps; + var i, l, comp; + if (bodyA.enabledContactListener) { + comps = bodyA.node._components; + this._inverted = false; + for (i = 0, l = comps.length; i < l; i++) { + comp = comps[i]; + comp[func] && comp[func](this, colliderA, colliderB); + } + } + if (bodyB.enabledContactListener) { + comps = bodyB.node._components; + this._inverted = true; + for (i = 0, l = comps.length; i < l; i++) { + comp = comps[i]; + comp[func] && comp[func](this, colliderB, colliderA); + } + } + if (this.disabled || this.disabledOnce) { + this.setEnabled(false); + this.disabledOnce = false; + } + }; + PhysicsContact.get = function (b2contact) { + var c; + c = 0 === pools.length ? new cc.PhysicsContact() : pools.pop(); + c.init(b2contact); + return c; + }; + PhysicsContact.put = function (b2contact) { + var c = b2contact._contact; + if (!c) return; + pools.push(c); + c.reset(); + }; + var _p = PhysicsContact.prototype; + _p.setEnabled = function (value) { + this._b2contact.SetEnabled(value); + }; + _p.isTouching = function () { + return this._b2contact.IsTouching(); + }; + _p.setTangentSpeed = function (value) { + this._b2contact.SetTangentSpeed(value / PTM_RATIO); + }; + _p.getTangentSpeed = function () { + return this._b2contact.GetTangentSpeed() * PTM_RATIO; + }; + _p.setFriction = function (value) { + this._b2contact.SetFriction(value); + }; + _p.getFriction = function () { + return this._b2contact.GetFriction(); + }; + _p.resetFriction = function () { + return this._b2contact.ResetFriction(); + }; + _p.setRestitution = function (value) { + this._b2contact.SetRestitution(value); + }; + _p.getRestitution = function () { + return this._b2contact.GetRestitution(); + }; + _p.resetRestitution = function () { + return this._b2contact.ResetRestitution(); + }; + PhysicsContact.ContactType = ContactType; + cc.PhysicsContact = module.exports = PhysicsContact; + }), { + "./CCPhysicsTypes": 215 + }], + 214: [(function (require, module, exports) { + "use strict"; + var PhysicsTypes = require("./CCPhysicsTypes"); + var ContactType = PhysicsTypes.ContactType; + var BodyType = PhysicsTypes.BodyType; + var RayCastType = PhysicsTypes.RayCastType; + var DrawBits = PhysicsTypes.DrawBits; + var PTM_RATIO = PhysicsTypes.PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = PhysicsTypes.ANGLE_TO_PHYSICS_ANGLE; + var PHYSICS_ANGLE_TO_ANGLE = PhysicsTypes.PHYSICS_ANGLE_TO_ANGLE; + var convertToNodeRotation = require("./utils").convertToNodeRotation; + var DebugDraw = require("./platform/CCPhysicsDebugDraw"); + var b2_aabb_tmp = new b2.AABB(); + var b2_vec2_tmp1 = new b2.Vec2(); + var b2_vec2_tmp2 = new b2.Vec2(); + var vec2_tmp = cc.v2(); + var PhysicsManager = cc.Class({ + mixins: [cc.EventTarget], + statics: { + DrawBits: DrawBits, + PTM_RATIO: PTM_RATIO, + VELOCITY_ITERATIONS: 10, + POSITION_ITERATIONS: 10, + FIXED_TIME_STEP: 1 / 60, + MAX_ACCUMULATOR: .2 + }, + ctor: function ctor() { + this._debugDrawFlags = 0; + this._debugDrawer = null; + this._world = null; + this._bodies = []; + this._joints = []; + this._contactMap = {}; + this._contactID = 0; + this._delayEvents = []; + this._accumulator = 0; + cc.director._scheduler && cc.director._scheduler.enableForTarget(this); + this.enabledAccumulator = false; + }, + pushDelayEvent: function pushDelayEvent(target, func, args) { + this._steping ? this._delayEvents.push({ + target: target, + func: func, + args: args + }) : target[func].apply(target, args); + }, + update: function update(dt) { + var world = this._world; + if (!world || !this.enabled) return; + this.emit("before-step"); + this._steping = true; + var velocityIterations = PhysicsManager.VELOCITY_ITERATIONS; + var positionIterations = PhysicsManager.POSITION_ITERATIONS; + if (this.enabledAccumulator) { + this._accumulator += dt; + var FIXED_TIME_STEP = PhysicsManager.FIXED_TIME_STEP; + var MAX_ACCUMULATOR = PhysicsManager.MAX_ACCUMULATOR; + this._accumulator > MAX_ACCUMULATOR && (this._accumulator = MAX_ACCUMULATOR); + while (this._accumulator > FIXED_TIME_STEP) { + world.Step(FIXED_TIME_STEP, velocityIterations, positionIterations); + this._accumulator -= FIXED_TIME_STEP; + } + } else { + var timeStep = 1 / cc.game.config["frameRate"]; + world.Step(timeStep, velocityIterations, positionIterations); + } + if (this.debugDrawFlags) { + this._checkDebugDrawValid(); + this._debugDrawer.clear(); + world.DrawDebugData(); + } + this._steping = false; + var events = this._delayEvents; + for (var i = 0, l = events.length; i < l; i++) { + var event = events[i]; + event.target[event.func].apply(event.target, event.args); + } + events.length = 0; + this._syncNode(); + }, + testPoint: function testPoint(point) { + var x = b2_vec2_tmp1.x = point.x / PTM_RATIO; + var y = b2_vec2_tmp1.y = point.y / PTM_RATIO; + var d = .2 / PTM_RATIO; + b2_aabb_tmp.lowerBound.x = x - d; + b2_aabb_tmp.lowerBound.y = y - d; + b2_aabb_tmp.upperBound.x = x + d; + b2_aabb_tmp.upperBound.y = y + d; + var callback = this._aabbQueryCallback; + callback.init(b2_vec2_tmp1); + this._world.QueryAABB(callback, b2_aabb_tmp); + var fixture = callback.getFixture(); + if (fixture) return fixture.collider; + return null; + }, + testAABB: function testAABB(rect) { + b2_aabb_tmp.lowerBound.x = rect.xMin / PTM_RATIO; + b2_aabb_tmp.lowerBound.y = rect.yMin / PTM_RATIO; + b2_aabb_tmp.upperBound.x = rect.xMax / PTM_RATIO; + b2_aabb_tmp.upperBound.y = rect.yMax / PTM_RATIO; + var callback = this._aabbQueryCallback; + callback.init(); + this._world.QueryAABB(callback, b2_aabb_tmp); + var fixtures = callback.getFixtures(); + var colliders = fixtures.map((function (fixture) { + return fixture.collider; + })); + return colliders; + }, + rayCast: function rayCast(p1, p2, type) { + if (p1.equals(p2)) return []; + type = type || RayCastType.Closest; + b2_vec2_tmp1.x = p1.x / PTM_RATIO; + b2_vec2_tmp1.y = p1.y / PTM_RATIO; + b2_vec2_tmp2.x = p2.x / PTM_RATIO; + b2_vec2_tmp2.y = p2.y / PTM_RATIO; + var callback = this._raycastQueryCallback; + callback.init(type); + this._world.RayCast(callback, b2_vec2_tmp1, b2_vec2_tmp2); + var fixtures = callback.getFixtures(); + if (fixtures.length > 0) { + var points = callback.getPoints(); + var normals = callback.getNormals(); + var fractions = callback.getFractions(); + var results = []; + for (var i = 0, l = fixtures.length; i < l; i++) { + var fixture = fixtures[i]; + var collider = fixture.collider; + if (type === RayCastType.AllClosest) { + var result = results.find((function (result) { + return result.collider === collider; + })); + if (result) { + if (fractions[i] < result.fraction) { + result.fixtureIndex = collider._getFixtureIndex(fixture); + result.point.x = points[i].x * PTM_RATIO; + result.point.y = points[i].y * PTM_RATIO; + result.normal.x = normals[i].x; + result.normal.y = normals[i].y; + result.fraction = fractions[i]; + } + continue; + } + } + results.push({ + collider: collider, + fixtureIndex: collider._getFixtureIndex(fixture), + point: cc.v2(points[i].x * PTM_RATIO, points[i].y * PTM_RATIO), + normal: cc.v2(normals[i]), + fraction: fractions[i] + }); + } + return results; + } + return []; + }, + syncPosition: function syncPosition() { + var bodies = this._bodies; + for (var i = 0; i < bodies.length; i++) bodies[i].syncPosition(); + }, + syncRotation: function syncRotation() { + var bodies = this._bodies; + for (var i = 0; i < bodies.length; i++) bodies[i].syncRotation(); + }, + _registerContactFixture: function _registerContactFixture(fixture) { + this._contactListener.registerContactFixture(fixture); + }, + _unregisterContactFixture: function _unregisterContactFixture(fixture) { + this._contactListener.unregisterContactFixture(fixture); + }, + _addBody: function _addBody(body, bodyDef) { + var world = this._world; + var node = body.node; + if (!world || !node) return; + body._b2Body = world.CreateBody(bodyDef); + body._b2Body.body = body; + this._bodies.push(body); + }, + _removeBody: function _removeBody(body) { + var world = this._world; + if (!world) return; + body._b2Body.body = null; + world.DestroyBody(body._b2Body); + body._b2Body = null; + cc.js.array.remove(this._bodies, body); + }, + _addJoint: function _addJoint(joint, jointDef) { + var b2joint = this._world.CreateJoint(jointDef); + if (!b2joint) return; + b2joint._joint = joint; + joint._joint = b2joint; + this._joints.push(joint); + }, + _removeJoint: function _removeJoint(joint) { + joint._isValid() && this._world.DestroyJoint(joint._joint); + joint._joint && (joint._joint._joint = null); + cc.js.array.remove(this._joints, joint); + }, + _initCallback: function _initCallback() { + if (!this._world) { + cc.warn("Please init PhysicsManager first"); + return; + } + if (this._contactListener) return; + var listener = new cc.PhysicsContactListener(); + listener.setBeginContact(this._onBeginContact); + listener.setEndContact(this._onEndContact); + listener.setPreSolve(this._onPreSolve); + listener.setPostSolve(this._onPostSolve); + this._world.SetContactListener(listener); + this._contactListener = listener; + this._aabbQueryCallback = new cc.PhysicsAABBQueryCallback(); + this._raycastQueryCallback = new cc.PhysicsRayCastCallback(); + }, + _init: function _init() { + this.enabled = true; + this.debugDrawFlags = DrawBits.e_shapeBit; + }, + _getWorld: function _getWorld() { + return this._world; + }, + _syncNode: function _syncNode() { + var bodies = this._bodies; + for (var i = 0, l = bodies.length; i < l; i++) { + var body = bodies[i]; + var node = body.node; + var b2body = body._b2Body; + var pos = b2body.GetPosition(); + vec2_tmp.x = pos.x * PTM_RATIO; + vec2_tmp.y = pos.y * PTM_RATIO; + var angle = b2body.GetAngle() * PHYSICS_ANGLE_TO_ANGLE; + if (null !== node.parent.parent) { + vec2_tmp = node.parent.convertToNodeSpaceAR(vec2_tmp); + angle = convertToNodeRotation(node.parent, angle); + } + var tempMask = node._eventMask; + node._eventMask = 0; + node.position = vec2_tmp; + node.angle = -angle; + node._eventMask = tempMask; + body.type === BodyType.Animated && body.resetVelocity(); + } + }, + _onBeginContact: function _onBeginContact(b2contact) { + var c = cc.PhysicsContact.get(b2contact); + c.emit(ContactType.BEGIN_CONTACT); + }, + _onEndContact: function _onEndContact(b2contact) { + var c = b2contact._contact; + if (!c) return; + c.emit(ContactType.END_CONTACT); + cc.PhysicsContact.put(b2contact); + }, + _onPreSolve: function _onPreSolve(b2contact) { + var c = b2contact._contact; + if (!c) return; + c.emit(ContactType.PRE_SOLVE); + }, + _onPostSolve: function _onPostSolve(b2contact, impulse) { + var c = b2contact._contact; + if (!c) return; + c._impulse = impulse; + c.emit(ContactType.POST_SOLVE); + c._impulse = null; + }, + _checkDebugDrawValid: function _checkDebugDrawValid() { + if (!this._debugDrawer || !this._debugDrawer.isValid) { + var node = new cc.Node("PHYSICS_MANAGER_DEBUG_DRAW"); + node.zIndex = cc.macro.MAX_ZINDEX; + cc.game.addPersistRootNode(node); + this._debugDrawer = node.addComponent(cc.Graphics); + var debugDraw = new DebugDraw(this._debugDrawer); + debugDraw.SetFlags(this.debugDrawFlags); + this._world.SetDebugDraw(debugDraw); + } + } + }); + cc.js.getset(PhysicsManager.prototype, "enabled", (function () { + return this._enabled; + }), (function (value) { + false; + if (value && !this._world) { + var world = new b2.World(new b2.Vec2(0, -10)); + world.SetAllowSleeping(true); + this._world = world; + this._initCallback(); + } + this._enabled = value; + })); + cc.js.getset(PhysicsManager.prototype, "debugDrawFlags", (function () { + return this._debugDrawFlags; + }), (function (value) { + false; + value && !this._debugDrawFlags ? this._debugDrawer && this._debugDrawer.node && (this._debugDrawer.node.active = true) : !value && this._debugDrawFlags && this._debugDrawer && this._debugDrawer.node && (this._debugDrawer.node.active = false); + if (value) { + this._checkDebugDrawValid(); + this._world.m_debugDraw.SetFlags(value); + } + this._debugDrawFlags = value; + if (value) { + this._checkDebugDrawValid(); + this._world.m_debugDraw.SetFlags(value); + } + })); + cc.js.getset(PhysicsManager.prototype, "gravity", (function () { + if (this._world) { + var g = this._world.GetGravity(); + return cc.v2(g.x * PTM_RATIO, g.y * PTM_RATIO); + } + return cc.v2(); + }), (function (value) { + this._world && this._world.SetGravity(new b2.Vec2(value.x / PTM_RATIO, value.y / PTM_RATIO)); + })); + cc.PhysicsManager = module.exports = PhysicsManager; + }), { + "./CCPhysicsTypes": 215, + "./platform/CCPhysicsDebugDraw": 236, + "./utils": 238 + }], + 215: [(function (require, module, exports) { + "use strict"; + var ContactType = { + BEGIN_CONTACT: "begin-contact", + END_CONTACT: "end-contact", + PRE_SOLVE: "pre-solve", + POST_SOLVE: "post-solve" + }; + var BodyType = cc.Enum({ + Static: 0, + Kinematic: 1, + Dynamic: 2, + Animated: 3 + }); + cc.RigidBodyType = BodyType; + var RayCastType = cc.Enum({ + Closest: 0, + Any: 1, + AllClosest: 2, + All: 3 + }); + cc.RayCastType = RayCastType; + module.exports = { + BodyType: BodyType, + ContactType: ContactType, + RayCastType: RayCastType, + DrawBits: b2.DrawFlags, + PTM_RATIO: 32, + ANGLE_TO_PHYSICS_ANGLE: -Math.PI / 180, + PHYSICS_ANGLE_TO_ANGLE: -180 / Math.PI + }; + }), {}], + 216: [(function (require, module, exports) { + "use strict"; + function At(i, vertices) { + var s = vertices.length; + return vertices[i < 0 ? s - -i % s : i % s]; + } + function Copy(i, j, vertices) { + var p = []; + while (j < i) j += vertices.length; + for (; i <= j; ++i) p.push(At(i, vertices)); + return p; + } + function ConvexPartition(vertices) { + ForceCounterClockWise(vertices); + var list = []; + var d, lowerDist, upperDist; + var p; + var lowerInt = cc.v2(); + var upperInt = cc.v2(); + var lowerIndex = 0, upperIndex = 0; + var lowerPoly, upperPoly; + for (var i = 0; i < vertices.length; ++i) if (Reflex(i, vertices)) { + lowerDist = upperDist = 1e8; + for (var j = 0; j < vertices.length; ++j) { + if (Left(At(i - 1, vertices), At(i, vertices), At(j, vertices)) && RightOn(At(i - 1, vertices), At(i, vertices), At(j - 1, vertices))) { + p = LineIntersect(At(i - 1, vertices), At(i, vertices), At(j, vertices), At(j - 1, vertices)); + if (Right(At(i + 1, vertices), At(i, vertices), p)) { + d = SquareDist(At(i, vertices), p); + if (d < lowerDist) { + lowerDist = d; + lowerInt = p; + lowerIndex = j; + } + } + } + if (Left(At(i + 1, vertices), At(i, vertices), At(j + 1, vertices)) && RightOn(At(i + 1, vertices), At(i, vertices), At(j, vertices))) { + p = LineIntersect(At(i + 1, vertices), At(i, vertices), At(j, vertices), At(j + 1, vertices)); + if (Left(At(i - 1, vertices), At(i, vertices), p)) { + d = SquareDist(At(i, vertices), p); + if (d < upperDist) { + upperDist = d; + upperIndex = j; + upperInt = p; + } + } + } + } + if (lowerIndex == (upperIndex + 1) % vertices.length) { + var sp = lowerInt.add(upperInt).div(2); + lowerPoly = Copy(i, upperIndex, vertices); + lowerPoly.push(sp); + upperPoly = Copy(lowerIndex, i, vertices); + upperPoly.push(sp); + } else { + var highestScore = 0, bestIndex = lowerIndex; + while (upperIndex < lowerIndex) upperIndex += vertices.length; + for (var j = lowerIndex; j <= upperIndex; ++j) if (CanSee(i, j, vertices)) { + var score = 1 / (SquareDist(At(i, vertices), At(j, vertices)) + 1); + Reflex(j, vertices) ? RightOn(At(j - 1, vertices), At(j, vertices), At(i, vertices)) && LeftOn(At(j + 1, vertices), At(j, vertices), At(i, vertices)) ? score += 3 : score += 2 : score += 1; + if (score > highestScore) { + bestIndex = j; + highestScore = score; + } + } + lowerPoly = Copy(i, bestIndex, vertices); + upperPoly = Copy(bestIndex, i, vertices); + } + list = list.concat(ConvexPartition(lowerPoly)); + list = list.concat(ConvexPartition(upperPoly)); + return list; + } + list.push(vertices); + for (var i = list.length - 1; i >= 0; i--) 0 == list[i].length && list.splice(i, 0); + return list; + } + function CanSee(i, j, vertices) { + if (Reflex(i, vertices)) { + if (LeftOn(At(i, vertices), At(i - 1, vertices), At(j, vertices)) && RightOn(At(i, vertices), At(i + 1, vertices), At(j, vertices))) return false; + } else if (RightOn(At(i, vertices), At(i + 1, vertices), At(j, vertices)) || LeftOn(At(i, vertices), At(i - 1, vertices), At(j, vertices))) return false; + if (Reflex(j, vertices)) { + if (LeftOn(At(j, vertices), At(j - 1, vertices), At(i, vertices)) && RightOn(At(j, vertices), At(j + 1, vertices), At(i, vertices))) return false; + } else if (RightOn(At(j, vertices), At(j + 1, vertices), At(i, vertices)) || LeftOn(At(j, vertices), At(j - 1, vertices), At(i, vertices))) return false; + for (var k = 0; k < vertices.length; ++k) { + if ((k + 1) % vertices.length == i || k == i || (k + 1) % vertices.length == j || k == j) continue; + var intersectionPoint = cc.v2(); + if (LineIntersect2(At(i, vertices), At(j, vertices), At(k, vertices), At(k + 1, vertices), intersectionPoint)) return false; + } + return true; + } + function Reflex(i, vertices) { + return Right(i, vertices); + } + function Right(a, b, c) { + if ("undefined" === typeof c) { + var i = a, vertices = b; + a = At(i - 1, vertices); + b = At(i, vertices); + c = At(i + 1, vertices); + } + return Area(a, b, c) < 0; + } + function Left(a, b, c) { + return Area(a, b, c) > 0; + } + function LeftOn(a, b, c) { + return Area(a, b, c) >= 0; + } + function RightOn(a, b, c) { + return Area(a, b, c) <= 0; + } + function SquareDist(a, b) { + var dx = b.x - a.x; + var dy = b.y - a.y; + return dx * dx + dy * dy; + } + function ForceCounterClockWise(vertices) { + IsCounterClockWise(vertices) || vertices.reverse(); + } + function IsCounterClockWise(vertices) { + if (vertices.length < 3) return true; + return GetSignedArea(vertices) > 0; + } + function GetSignedArea(vertices) { + var i; + var area = 0; + for (i = 0; i < vertices.length; i++) { + var j = (i + 1) % vertices.length; + area += vertices[i].x * vertices[j].y; + area -= vertices[i].y * vertices[j].x; + } + area /= 2; + return area; + } + function LineIntersect(p1, p2, q1, q2) { + var i = cc.v2(); + var a1 = p2.y - p1.y; + var b1 = p1.x - p2.x; + var c1 = a1 * p1.x + b1 * p1.y; + var a2 = q2.y - q1.y; + var b2 = q1.x - q2.x; + var c2 = a2 * q1.x + b2 * q1.y; + var det = a1 * b2 - a2 * b1; + if (!FloatEquals(det, 0)) { + i.x = (b2 * c1 - b1 * c2) / det; + i.y = (a1 * c2 - a2 * c1) / det; + } + return i; + } + function LineIntersect2(a0, a1, b0, b1, intersectionPoint) { + if (a0 == b0 || a0 == b1 || a1 == b0 || a1 == b1) return false; + var x1 = a0.x; + var y1 = a0.y; + var x2 = a1.x; + var y2 = a1.y; + var x3 = b0.x; + var y3 = b0.y; + var x4 = b1.x; + var y4 = b1.y; + if (Math.max(x1, x2) < Math.min(x3, x4) || Math.max(x3, x4) < Math.min(x1, x2)) return false; + if (Math.max(y1, y2) < Math.min(y3, y4) || Math.max(y3, y4) < Math.min(y1, y2)) return false; + var ua = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3); + var ub = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3); + var denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); + if (Math.abs(denom) < 1e-6) return false; + ua /= denom; + ub /= denom; + if (0 < ua && ua < 1 && 0 < ub && ub < 1) { + intersectionPoint.x = x1 + ua * (x2 - x1); + intersectionPoint.y = y1 + ua * (y2 - y1); + return true; + } + return false; + } + function FloatEquals(value1, value2) { + return Math.abs(value1 - value2) <= 1e-6; + } + function Area(a, b, c) { + return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y); + } + module.exports = { + ConvexPartition: ConvexPartition, + ForceCounterClockWise: ForceCounterClockWise, + IsCounterClockWise: IsCounterClockWise + }; + }), {}], + 217: [(function (require, module, exports) { + "use strict"; + var NodeEvent = require("../CCNode").EventType; + var PTM_RATIO = require("./CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("./CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var PHYSICS_ANGLE_TO_ANGLE = require("./CCPhysicsTypes").PHYSICS_ANGLE_TO_ANGLE; + var getWorldRotation = require("./utils").getWorldRotation; + var BodyType = require("./CCPhysicsTypes").BodyType; + var tempb2Vec21 = new b2.Vec2(); + var tempb2Vec22 = new b2.Vec2(); + var VEC2_ZERO = cc.Vec2.ZERO; + var RigidBody = cc.Class({ + name: "cc.RigidBody", + extends: cc.Component, + editor: false, + properties: { + _type: BodyType.Dynamic, + _allowSleep: true, + _gravityScale: 1, + _linearDamping: 0, + _angularDamping: 0, + _linearVelocity: cc.v2(0, 0), + _angularVelocity: 0, + _fixedRotation: false, + enabled: { + get: function get() { + return this._enabled; + }, + set: function set() { + cc.warnID(8200); + }, + visible: false, + override: true + }, + enabledContactListener: { + default: false, + tooltip: false + }, + bullet: { + default: false, + tooltip: false + }, + type: { + type: BodyType, + tooltip: false, + get: function get() { + return this._type; + }, + set: function set(value) { + this._type = value; + this._b2Body && (value === BodyType.Animated ? this._b2Body.SetType(BodyType.Kinematic) : this._b2Body.SetType(value)); + } + }, + allowSleep: { + tooltip: false, + get: function get() { + if (this._b2Body) return this._b2Body.IsSleepingAllowed(); + return this._allowSleep; + }, + set: function set(value) { + this._allowSleep = value; + this._b2Body && this._b2Body.SetSleepingAllowed(value); + } + }, + gravityScale: { + tooltip: false, + get: function get() { + return this._gravityScale; + }, + set: function set(value) { + this._gravityScale = value; + this._b2Body && this._b2Body.SetGravityScale(value); + } + }, + linearDamping: { + tooltip: false, + get: function get() { + return this._linearDamping; + }, + set: function set(value) { + this._linearDamping = value; + this._b2Body && this._b2Body.SetLinearDamping(this._linearDamping); + } + }, + angularDamping: { + tooltip: false, + get: function get() { + return this._angularDamping; + }, + set: function set(value) { + this._angularDamping = value; + this._b2Body && this._b2Body.SetAngularDamping(value); + } + }, + linearVelocity: { + tooltip: false, + type: cc.Vec2, + get: function get() { + var lv = this._linearVelocity; + if (this._b2Body) { + var velocity = this._b2Body.GetLinearVelocity(); + lv.x = velocity.x * PTM_RATIO; + lv.y = velocity.y * PTM_RATIO; + } + return lv; + }, + set: function set(value) { + this._linearVelocity = value; + var b2body = this._b2Body; + if (b2body) { + var temp = b2body.m_linearVelocity; + temp.Set(value.x / PTM_RATIO, value.y / PTM_RATIO); + b2body.SetLinearVelocity(temp); + } + } + }, + angularVelocity: { + tooltip: false, + get: function get() { + if (this._b2Body) return this._b2Body.GetAngularVelocity() * PHYSICS_ANGLE_TO_ANGLE; + return this._angularVelocity; + }, + set: function set(value) { + this._angularVelocity = value; + this._b2Body && this._b2Body.SetAngularVelocity(value * ANGLE_TO_PHYSICS_ANGLE); + } + }, + fixedRotation: { + tooltip: false, + get: function get() { + return this._fixedRotation; + }, + set: function set(value) { + this._fixedRotation = value; + this._b2Body && this._b2Body.SetFixedRotation(value); + } + }, + awake: { + visible: false, + tooltip: false, + get: function get() { + return !!this._b2Body && this._b2Body.IsAwake(); + }, + set: function set(value) { + this._b2Body && this._b2Body.SetAwake(value); + } + }, + awakeOnLoad: { + default: true, + tooltip: false, + animatable: false + }, + active: { + visible: false, + get: function get() { + return !!this._b2Body && this._b2Body.IsActive(); + }, + set: function set(value) { + this._b2Body && this._b2Body.SetActive(value); + } + } + }, + getLocalPoint: function getLocalPoint(worldPoint, out) { + out = out || cc.v2(); + if (this._b2Body) { + tempb2Vec21.Set(worldPoint.x / PTM_RATIO, worldPoint.y / PTM_RATIO); + var pos = this._b2Body.GetLocalPoint(tempb2Vec21, out); + out.x = pos.x * PTM_RATIO; + out.y = pos.y * PTM_RATIO; + } + return out; + }, + getWorldPoint: function getWorldPoint(localPoint, out) { + out = out || cc.v2(); + if (this._b2Body) { + tempb2Vec21.Set(localPoint.x / PTM_RATIO, localPoint.y / PTM_RATIO); + var pos = this._b2Body.GetWorldPoint(tempb2Vec21, out); + out.x = pos.x * PTM_RATIO; + out.y = pos.y * PTM_RATIO; + } + return out; + }, + getWorldVector: function getWorldVector(localVector, out) { + out = out || cc.v2(); + if (this._b2Body) { + tempb2Vec21.Set(localVector.x / PTM_RATIO, localVector.y / PTM_RATIO); + var vector = this._b2Body.GetWorldVector(tempb2Vec21, out); + out.x = vector.x * PTM_RATIO; + out.y = vector.y * PTM_RATIO; + } + return out; + }, + getLocalVector: function getLocalVector(worldVector, out) { + out = out || cc.v2(); + if (this._b2Body) { + tempb2Vec21.Set(worldVector.x / PTM_RATIO, worldVector.y / PTM_RATIO); + var vector = this._b2Body.GetLocalVector(tempb2Vec21, out); + out.x = vector.x * PTM_RATIO; + out.y = vector.y * PTM_RATIO; + } + return out; + }, + getWorldPosition: function getWorldPosition(out) { + out = out || cc.v2(); + if (this._b2Body) { + var pos = this._b2Body.GetPosition(); + out.x = pos.x * PTM_RATIO; + out.y = pos.y * PTM_RATIO; + } + return out; + }, + getWorldRotation: function getWorldRotation() { + if (this._b2Body) return this._b2Body.GetAngle() * PHYSICS_ANGLE_TO_ANGLE; + return 0; + }, + getLocalCenter: function getLocalCenter(out) { + out = out || cc.v2(); + if (this._b2Body) { + var pos = this._b2Body.GetLocalCenter(); + out.x = pos.x * PTM_RATIO; + out.y = pos.y * PTM_RATIO; + } + return out; + }, + getWorldCenter: function getWorldCenter(out) { + out = out || cc.v2(); + if (this._b2Body) { + var pos = this._b2Body.GetWorldCenter(); + out.x = pos.x * PTM_RATIO; + out.y = pos.y * PTM_RATIO; + } + return out; + }, + getLinearVelocityFromWorldPoint: function getLinearVelocityFromWorldPoint(worldPoint, out) { + out = out || cc.v2(); + if (this._b2Body) { + tempb2Vec21.Set(worldPoint.x / PTM_RATIO, worldPoint.y / PTM_RATIO); + var velocity = this._b2Body.GetLinearVelocityFromWorldPoint(tempb2Vec21, out); + out.x = velocity.x * PTM_RATIO; + out.y = velocity.y * PTM_RATIO; + } + return out; + }, + getMass: function getMass() { + return this._b2Body ? this._b2Body.GetMass() : 0; + }, + getInertia: function getInertia() { + return this._b2Body ? this._b2Body.GetInertia() * PTM_RATIO * PTM_RATIO : 0; + }, + getJointList: function getJointList() { + if (!this._b2Body) return []; + var joints = []; + var list = this._b2Body.GetJointList(); + if (!list) return []; + joints.push(list.joint._joint); + var prev = list.prev; + while (prev) { + joints.push(prev.joint._joint); + prev = prev.prev; + } + var next = list.next; + while (next) { + joints.push(next.joint._joint); + next = next.next; + } + return joints; + }, + applyForce: function applyForce(force, point, wake) { + if (this._b2Body) { + tempb2Vec21.Set(force.x / PTM_RATIO, force.y / PTM_RATIO); + tempb2Vec22.Set(point.x / PTM_RATIO, point.y / PTM_RATIO); + this._b2Body.ApplyForce(tempb2Vec21, tempb2Vec22, wake); + } + }, + applyForceToCenter: function applyForceToCenter(force, wake) { + if (this._b2Body) { + tempb2Vec21.Set(force.x / PTM_RATIO, force.y / PTM_RATIO); + this._b2Body.ApplyForceToCenter(tempb2Vec21, wake); + } + }, + applyTorque: function applyTorque(torque, wake) { + this._b2Body && this._b2Body.ApplyTorque(torque / PTM_RATIO, wake); + }, + applyLinearImpulse: function applyLinearImpulse(impulse, point, wake) { + if (this._b2Body) { + tempb2Vec21.Set(impulse.x / PTM_RATIO, impulse.y / PTM_RATIO); + tempb2Vec22.Set(point.x / PTM_RATIO, point.y / PTM_RATIO); + this._b2Body.ApplyLinearImpulse(tempb2Vec21, tempb2Vec22, wake); + } + }, + applyAngularImpulse: function applyAngularImpulse(impulse, wake) { + this._b2Body && this._b2Body.ApplyAngularImpulse(impulse / PTM_RATIO / PTM_RATIO, wake); + }, + syncPosition: function syncPosition(enableAnimated) { + var b2body = this._b2Body; + if (!b2body) return; + var pos = this.node.convertToWorldSpaceAR(VEC2_ZERO); + var temp; + temp = this.type === BodyType.Animated ? b2body.GetLinearVelocity() : b2body.GetPosition(); + temp.x = pos.x / PTM_RATIO; + temp.y = pos.y / PTM_RATIO; + if (this.type === BodyType.Animated && enableAnimated) { + var b2Pos = b2body.GetPosition(); + var timeStep = cc.game.config["frameRate"]; + temp.x = (temp.x - b2Pos.x) * timeStep; + temp.y = (temp.y - b2Pos.y) * timeStep; + b2body.SetAwake(true); + b2body.SetLinearVelocity(temp); + } else b2body.SetTransformVec(temp, b2body.GetAngle()); + }, + syncRotation: function syncRotation(enableAnimated) { + var b2body = this._b2Body; + if (!b2body) return; + var rotation = ANGLE_TO_PHYSICS_ANGLE * getWorldRotation(this.node); + if (this.type === BodyType.Animated && enableAnimated) { + var b2Rotation = b2body.GetAngle(); + var timeStep = cc.game.config["frameRate"]; + b2body.SetAwake(true); + b2body.SetAngularVelocity((rotation - b2Rotation) * timeStep); + } else b2body.SetTransformVec(b2body.GetPosition(), rotation); + }, + resetVelocity: function resetVelocity() { + var b2body = this._b2Body; + if (!b2body) return; + var temp = b2body.m_linearVelocity; + temp.Set(0, 0); + b2body.SetLinearVelocity(temp); + b2body.SetAngularVelocity(0); + }, + onEnable: function onEnable() { + this._init(); + }, + onDisable: function onDisable() { + this._destroy(); + }, + _registerNodeEvents: function _registerNodeEvents() { + var node = this.node; + node.on(NodeEvent.POSITION_CHANGED, this._onNodePositionChanged, this); + node.on(NodeEvent.ROTATION_CHANGED, this._onNodeRotationChanged, this); + node.on(NodeEvent.SCALE_CHANGED, this._onNodeScaleChanged, this); + }, + _unregisterNodeEvents: function _unregisterNodeEvents() { + var node = this.node; + node.off(NodeEvent.POSITION_CHANGED, this._onNodePositionChanged, this); + node.off(NodeEvent.ROTATION_CHANGED, this._onNodeRotationChanged, this); + node.off(NodeEvent.SCALE_CHANGED, this._onNodeScaleChanged, this); + }, + _onNodePositionChanged: function _onNodePositionChanged() { + this.syncPosition(true); + }, + _onNodeRotationChanged: function _onNodeRotationChanged(event) { + this.syncRotation(true); + }, + _onNodeScaleChanged: function _onNodeScaleChanged(event) { + if (this._b2Body) { + var colliders = this.getComponents(cc.PhysicsCollider); + for (var i = 0; i < colliders.length; i++) colliders[i].apply(); + } + }, + _init: function _init() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []); + }, + _destroy: function _destroy() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []); + }, + __init: function __init() { + if (this._inited) return; + this._registerNodeEvents(); + var bodyDef = new b2.BodyDef(); + this.type === BodyType.Animated ? bodyDef.type = BodyType.Kinematic : bodyDef.type = this.type; + bodyDef.allowSleep = this.allowSleep; + bodyDef.gravityScale = this.gravityScale; + bodyDef.linearDamping = this.linearDamping; + bodyDef.angularDamping = this.angularDamping; + var linearVelocity = this.linearVelocity; + bodyDef.linearVelocity = new b2.Vec2(linearVelocity.x / PTM_RATIO, linearVelocity.y / PTM_RATIO); + bodyDef.angularVelocity = this.angularVelocity * ANGLE_TO_PHYSICS_ANGLE; + bodyDef.fixedRotation = this.fixedRotation; + bodyDef.bullet = this.bullet; + var node = this.node; + var pos = node.convertToWorldSpaceAR(VEC2_ZERO); + bodyDef.position = new b2.Vec2(pos.x / PTM_RATIO, pos.y / PTM_RATIO); + bodyDef.angle = -Math.PI / 180 * getWorldRotation(node); + bodyDef.awake = this.awakeOnLoad; + cc.director.getPhysicsManager()._addBody(this, bodyDef); + this._inited = true; + }, + __destroy: function __destroy() { + if (!this._inited) return; + cc.director.getPhysicsManager()._removeBody(this); + this._unregisterNodeEvents(); + this._inited = false; + }, + _getBody: function _getBody() { + return this._b2Body; + } + }); + cc.RigidBody = module.exports = RigidBody; + }), { + "../CCNode": 73, + "./CCPhysicsTypes": 215, + "./utils": 238 + }], + 218: [(function (require, module, exports) { + "use strict"; + var box2d = require("../../../external/box2d/box2d"); + window.b2 = {}; + for (var key in box2d) { + if (-1 !== key.indexOf("b2_")) continue; + var newKey = key.replace("b2", ""); + b2[newKey] = box2d[key]; + } + b2.maxPolygonVertices = 8; + }), { + "../../../external/box2d/box2d": 435 + }], + 219: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var PhysicsBoxCollider = cc.Class({ + name: "cc.PhysicsBoxCollider", + extends: cc.PhysicsCollider, + mixins: [cc.Collider.Box], + editor: { + menu: false, + requireComponent: cc.RigidBody + }, + _createShape: function _createShape(scale) { + var scaleX = Math.abs(scale.x); + var scaleY = Math.abs(scale.y); + var width = this.size.width / 2 / PTM_RATIO * scaleX; + var height = this.size.height / 2 / PTM_RATIO * scaleY; + var offsetX = this.offset.x / PTM_RATIO * scaleX; + var offsetY = this.offset.y / PTM_RATIO * scaleY; + var shape = new b2.PolygonShape(); + shape.SetAsBox(width, height, new b2.Vec2(offsetX, offsetY), 0); + return shape; + } + }); + cc.PhysicsBoxCollider = module.exports = PhysicsBoxCollider; + }), { + "../CCPhysicsTypes": 215 + }], + 220: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var PhysicsChainCollider = cc.Class({ + name: "cc.PhysicsChainCollider", + extends: cc.PhysicsCollider, + editor: { + menu: false, + inspector: false, + requireComponent: cc.RigidBody + }, + properties: { + loop: false, + points: { + default: function _default() { + return [cc.v2(-50, 0), cc.v2(50, 0)]; + }, + type: [cc.Vec2] + }, + threshold: { + default: 1, + serializable: false, + visible: false + } + }, + _createShape: function _createShape(scale) { + var shape = new b2.ChainShape(); + var points = this.points; + var vertices = []; + for (var i = 0; i < points.length; i++) { + var p = points[i]; + vertices.push(new b2.Vec2(p.x / PTM_RATIO * scale.x, p.y / PTM_RATIO * scale.y)); + } + this.loop ? shape.CreateLoop(vertices, vertices.length) : shape.CreateChain(vertices, vertices.length); + return shape; + }, + resetInEditor: false, + resetPointsByContour: false + }); + cc.PhysicsChainCollider = module.exports = PhysicsChainCollider; + }), { + "../CCPhysicsTypes": 215 + }], + 221: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var PhysicsCircleCollider = cc.Class({ + name: "cc.PhysicsCircleCollider", + extends: cc.PhysicsCollider, + mixins: [cc.Collider.Circle], + editor: { + menu: false, + requireComponent: cc.RigidBody + }, + _createShape: function _createShape(scale) { + var scaleX = Math.abs(scale.x); + var scaleY = Math.abs(scale.y); + var offsetX = this.offset.x / PTM_RATIO * scaleX; + var offsetY = this.offset.y / PTM_RATIO * scaleY; + var shape = new b2.CircleShape(); + shape.m_radius = this.radius / PTM_RATIO * scaleX; + shape.m_p = new b2.Vec2(offsetX, offsetY); + return shape; + } + }); + cc.PhysicsCircleCollider = module.exports = PhysicsCircleCollider; + }), { + "../CCPhysicsTypes": 215 + }], + 222: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var getWorldScale = require("../utils").getWorldScale; + var b2_aabb_tmp = new b2.AABB(); + var PhysicsCollider = cc.Class({ + name: "cc.PhysicsCollider", + extends: cc.Collider, + ctor: function ctor() { + this._fixtures = []; + this._shapes = []; + this._inited = false; + this._rect = cc.rect(); + }, + properties: { + _density: 1, + _sensor: false, + _friction: .2, + _restitution: 0, + density: { + tooltip: false, + get: function get() { + return this._density; + }, + set: function set(value) { + this._density = value; + } + }, + sensor: { + tooltip: false, + get: function get() { + return this._sensor; + }, + set: function set(value) { + this._sensor = value; + } + }, + friction: { + tooltip: false, + get: function get() { + return this._friction; + }, + set: function set(value) { + this._friction = value; + } + }, + restitution: { + tooltip: false, + get: function get() { + return this._restitution; + }, + set: function set(value) { + this._restitution = value; + } + }, + body: { + default: null, + type: cc.RigidBody, + visible: false + } + }, + onDisable: function onDisable() { + this._destroy(); + }, + onEnable: function onEnable() { + this._init(); + }, + start: function start() { + this._init(); + }, + _getFixtureIndex: function _getFixtureIndex(fixture) { + return this._fixtures.indexOf(fixture); + }, + _init: function _init() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []); + }, + _destroy: function _destroy() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []); + }, + __init: function __init() { + if (this._inited) return; + var body = this.body || this.getComponent(cc.RigidBody); + if (!body) return; + var innerBody = body._getBody(); + if (!innerBody) return; + var node = body.node; + var scale = getWorldScale(node); + this._scale = scale; + var shapes = 0 === scale.x && 0 === scale.y ? [] : this._createShape(scale); + shapes instanceof Array || (shapes = [shapes]); + var categoryBits = 1 << node.groupIndex; + var maskBits = 0; + var bits = cc.game.collisionMatrix[node.groupIndex]; + for (var i = 0; i < bits.length; i++) { + if (!bits[i]) continue; + maskBits |= 1 << i; + } + var filter = { + categoryBits: categoryBits, + maskBits: maskBits, + groupIndex: 0 + }; + var manager = cc.director.getPhysicsManager(); + for (var _i = 0; _i < shapes.length; _i++) { + var shape = shapes[_i]; + var fixDef = new b2.FixtureDef(); + fixDef.density = this.density; + fixDef.isSensor = this.sensor; + fixDef.friction = this.friction; + fixDef.restitution = this.restitution; + fixDef.shape = shape; + fixDef.filter = filter; + var fixture = innerBody.CreateFixture(fixDef); + fixture.collider = this; + body.enabledContactListener && manager._registerContactFixture(fixture); + this._shapes.push(shape); + this._fixtures.push(fixture); + } + this.body = body; + this._inited = true; + }, + __destroy: function __destroy() { + if (!this._inited) return; + var fixtures = this._fixtures; + var body = this.body._getBody(); + var manager = cc.director.getPhysicsManager(); + for (var i = fixtures.length - 1; i >= 0; i--) { + var fixture = fixtures[i]; + fixture.collider = null; + manager._unregisterContactFixture(fixture); + body && body.DestroyFixture(fixture); + } + this.body = null; + this._fixtures.length = 0; + this._shapes.length = 0; + this._inited = false; + }, + _createShape: function _createShape() { }, + apply: function apply() { + this._destroy(); + this._init(); + }, + getAABB: function getAABB() { + var MAX = 1e7; + var minX = MAX, minY = MAX; + var maxX = -MAX, maxY = -MAX; + var xf = this.body._getBody().GetTransform(); + var fixtures = this._fixtures; + for (var i = 0; i < fixtures.length; i++) { + var shape = fixtures[i].GetShape(); + var count = shape.GetChildCount(); + for (var j = 0; j < count; j++) { + shape.ComputeAABB(b2_aabb_tmp, xf, j); + b2_aabb_tmp.lowerBound.x < minX && (minX = b2_aabb_tmp.lowerBound.x); + b2_aabb_tmp.lowerBound.y < minY && (minY = b2_aabb_tmp.lowerBound.y); + b2_aabb_tmp.upperBound.x > maxX && (maxX = b2_aabb_tmp.upperBound.x); + b2_aabb_tmp.upperBound.y > maxY && (maxY = b2_aabb_tmp.upperBound.y); + } + } + minX *= PTM_RATIO; + minY *= PTM_RATIO; + maxX *= PTM_RATIO; + maxY *= PTM_RATIO; + var r = this._rect; + r.x = minX; + r.y = minY; + r.width = maxX - minX; + r.height = maxY - minY; + return r; + } + }); + cc.PhysicsCollider = module.exports = PhysicsCollider; + }), { + "../CCPhysicsTypes": 215, + "../utils": 238 + }], + 223: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var PolygonSeparator = require("../CCPolygonSeparator"); + var PhysicsPolygonCollider = cc.Class({ + name: "cc.PhysicsPolygonCollider", + extends: cc.PhysicsCollider, + mixins: [cc.Collider.Polygon], + editor: { + menu: false, + inspector: false, + requireComponent: cc.RigidBody + }, + _createShape: function _createShape(scale) { + var shapes = []; + var points = this.points; + points.length > 0 && points[0].equals(points[points.length - 1]) && (points.length -= 1); + var polys = PolygonSeparator.ConvexPartition(points); + var offset = this.offset; + for (var i = 0; i < polys.length; i++) { + var poly = polys[i]; + var shape = null, vertices = []; + var firstVertice = null; + for (var j = 0, l = poly.length; j < l; j++) { + shape || (shape = new b2.PolygonShape()); + var p = poly[j]; + var x = (p.x + offset.x) / PTM_RATIO * scale.x; + var y = (p.y + offset.y) / PTM_RATIO * scale.y; + var v = new b2.Vec2(x, y); + vertices.push(v); + firstVertice || (firstVertice = v); + if (vertices.length === b2.maxPolygonVertices) { + shape.Set(vertices, vertices.length); + shapes.push(shape); + shape = null; + j < l - 1 && (vertices = [firstVertice, vertices[vertices.length - 1]]); + } + } + if (shape) { + shape.Set(vertices, vertices.length); + shapes.push(shape); + } + } + return shapes; + } + }); + cc.PhysicsPolygonCollider = module.exports = PhysicsPolygonCollider; + }), { + "../CCPhysicsTypes": 215, + "../CCPolygonSeparator": 216 + }], + 224: [(function (require, module, exports) { + "use strict"; + require("./box2d-adapter"); + require("./CCPhysicsManager"); + require("./CCRigidBody"); + require("./CCPhysicsContact"); + require("./collider/CCPhysicsCollider"); + require("./collider/CCPhysicsChainCollider"); + require("./collider/CCPhysicsCircleCollider"); + require("./collider/CCPhysicsBoxCollider"); + require("./collider/CCPhysicsPolygonCollider"); + require("./joint/CCJoint"); + require("./joint/CCDistanceJoint"); + require("./joint/CCRevoluteJoint"); + require("./joint/CCMouseJoint"); + require("./joint/CCMotorJoint"); + require("./joint/CCPrismaticJoint"); + require("./joint/CCWeldJoint"); + require("./joint/CCWheelJoint"); + require("./joint/CCRopeJoint"); + require("./platform/CCPhysicsContactListner"); + require("./platform/CCPhysicsAABBQueryCallback"); + require("./platform/CCPhysicsRayCastCallback"); + }), { + "./CCPhysicsContact": 213, + "./CCPhysicsManager": 214, + "./CCRigidBody": 217, + "./box2d-adapter": 218, + "./collider/CCPhysicsBoxCollider": 219, + "./collider/CCPhysicsChainCollider": 220, + "./collider/CCPhysicsCircleCollider": 221, + "./collider/CCPhysicsCollider": 222, + "./collider/CCPhysicsPolygonCollider": 223, + "./joint/CCDistanceJoint": 225, + "./joint/CCJoint": 226, + "./joint/CCMotorJoint": 227, + "./joint/CCMouseJoint": 228, + "./joint/CCPrismaticJoint": 229, + "./joint/CCRevoluteJoint": 230, + "./joint/CCRopeJoint": 231, + "./joint/CCWeldJoint": 232, + "./joint/CCWheelJoint": 233, + "./platform/CCPhysicsAABBQueryCallback": 234, + "./platform/CCPhysicsContactListner": 235, + "./platform/CCPhysicsRayCastCallback": 237 + }], + 225: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var DistanceJoint = cc.Class({ + name: "cc.DistanceJoint", + extends: cc.Joint, + editor: false, + properties: { + _distance: 1, + _frequency: 0, + _dampingRatio: 0, + distance: { + tooltip: false, + get: function get() { + return this._distance; + }, + set: function set(value) { + this._distance = value; + this._joint && this._joint.SetLength(value); + } + }, + frequency: { + tooltip: false, + get: function get() { + return this._frequency; + }, + set: function set(value) { + this._frequency = value; + this._joint && this._joint.SetFrequency(value); + } + }, + dampingRatio: { + tooltip: false, + get: function get() { + return this._dampingRatio; + }, + set: function set(value) { + this._dampingRatio = value; + this._joint && this._joint.SetDampingRatio(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.DistanceJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.length = this.distance / PTM_RATIO; + def.dampingRatio = this.dampingRatio; + def.frequencyHz = this.frequency; + return def; + } + }); + cc.DistanceJoint = module.exports = DistanceJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 226: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var Joint = cc.Class({ + name: "cc.Joint", + extends: cc.Component, + editor: { + requireComponent: cc.RigidBody + }, + properties: { + anchor: { + default: cc.v2(0, 0), + tooltip: false + }, + connectedAnchor: { + default: cc.v2(0, 0), + tooltip: false + }, + connectedBody: { + default: null, + type: cc.RigidBody, + tooltip: false + }, + collideConnected: { + default: false, + tooltip: false + } + }, + onDisable: function onDisable() { + this._destroy(); + }, + onEnable: function onEnable() { + this._init(); + }, + start: function start() { + this._init(); + }, + apply: function apply() { + this._destroy(); + this._init(); + }, + getWorldAnchor: function getWorldAnchor() { + if (this._joint) { + var anchor = this._joint.GetAnchorA(); + return cc.v2(anchor.x * PTM_RATIO, anchor.y * PTM_RATIO); + } + return cc.Vec2.ZERO; + }, + getWorldConnectedAnchor: function getWorldConnectedAnchor() { + if (this._joint) { + var anchor = this._joint.GetAnchorB(); + return cc.v2(anchor.x * PTM_RATIO, anchor.y * PTM_RATIO); + } + return cc.Vec2.ZERO; + }, + getReactionForce: function getReactionForce(timeStep) { + var out = cc.v2(); + if (this._joint) return this._joint.GetReactionForce(timeStep, out); + return out; + }, + getReactionTorque: function getReactionTorque(timeStep) { + if (this._joint) return this._joint.GetReactionTorque(timeStep); + return 0; + }, + _init: function _init() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []); + }, + _destroy: function _destroy() { + cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []); + }, + __init: function __init() { + if (this._inited) return; + this.body = this.getComponent(cc.RigidBody); + if (this._isValid()) { + var def = this._createJointDef(); + if (!def) return; + def.bodyA = this.body._getBody(); + def.bodyB = this.connectedBody._getBody(); + def.collideConnected = this.collideConnected; + cc.director.getPhysicsManager()._addJoint(this, def); + this._inited = true; + } + }, + __destroy: function __destroy() { + if (!this._inited) return; + cc.director.getPhysicsManager()._removeJoint(this); + this._joint = null; + this._inited = false; + }, + _createJointDef: function _createJointDef() { + return null; + }, + _isValid: function _isValid() { + return this.body && this.body._getBody() && this.connectedBody && this.connectedBody._getBody(); + } + }); + cc.Joint = module.exports = Joint; + }), { + "../CCPhysicsTypes": 215 + }], + 227: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var MotorJoint = cc.Class({ + name: "cc.MotorJoint", + extends: cc.Joint, + editor: false, + properties: { + _linearOffset: cc.v2(0, 0), + _angularOffset: 0, + _maxForce: 1, + _maxTorque: 1, + _correctionFactor: .3, + anchor: { + tooltip: false, + default: cc.v2(0, 0), + override: true, + visible: false + }, + connectedAnchor: { + tooltip: false, + default: cc.v2(0, 0), + override: true, + visible: false + }, + linearOffset: { + tooltip: false, + get: function get() { + return this._linearOffset; + }, + set: function set(value) { + this._linearOffset = value; + this._joint && this._joint.SetLinearOffset(new b2.Vec2(value.x / PTM_RATIO, value.y / PTM_RATIO)); + } + }, + angularOffset: { + tooltip: false, + get: function get() { + return this._angularOffset; + }, + set: function set(value) { + this._angularOffset = value; + this._joint && this._joint.SetAngularOffset(value); + } + }, + maxForce: { + tooltip: false, + get: function get() { + return this._maxForce; + }, + set: function set(value) { + this._maxForce = value; + this._joint && this._joint.SetMaxForce(value); + } + }, + maxTorque: { + tooltip: false, + get: function get() { + return this._maxTorque; + }, + set: function set(value) { + this._maxTorque = value; + this._joint && this._joint.SetMaxTorque(value); + } + }, + correctionFactor: { + tooltip: false, + get: function get() { + return this._correctionFactor; + }, + set: function set(value) { + this._correctionFactor = value; + this._joint && this._joint.SetCorrectionFactor(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.MotorJointDef(); + def.linearOffset = new b2.Vec2(this.linearOffset.x / PTM_RATIO, this.linearOffset.y / PTM_RATIO); + def.angularOffset = this.angularOffset * ANGLE_TO_PHYSICS_ANGLE; + def.maxForce = this.maxForce; + def.maxTorque = this.maxTorque; + def.correctionFactor = this.correctionFactor; + return def; + } + }); + cc.MotorJoint = module.exports = MotorJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 228: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var tempB2Vec2 = new b2.Vec2(); + var MouseJoint = cc.Class({ + name: "cc.MouseJoint", + extends: cc.Joint, + editor: false, + properties: { + _target: 1, + _frequency: 5, + _dampingRatio: .7, + _maxForce: 0, + connectedBody: { + default: null, + type: cc.RigidBody, + visible: false, + override: true + }, + collideConnected: { + default: true, + visible: false, + override: true + }, + anchor: { + tooltip: false, + default: cc.v2(0, 0), + override: true, + visible: false + }, + connectedAnchor: { + tooltip: false, + default: cc.v2(0, 0), + override: true, + visible: false + }, + mouseRegion: { + tooltip: false, + default: null, + type: cc.Node + }, + target: { + tooltip: false, + visible: false, + get: function get() { + return this._target; + }, + set: function set(value) { + this._target = value; + if (this._joint) { + tempB2Vec2.x = value.x / PTM_RATIO; + tempB2Vec2.y = value.y / PTM_RATIO; + this._joint.SetTarget(tempB2Vec2); + } + } + }, + frequency: { + tooltip: false, + get: function get() { + return this._frequency; + }, + set: function set(value) { + this._frequency = value; + this._joint && this._joint.SetFrequency(value); + } + }, + dampingRatio: { + tooltip: false, + get: function get() { + return this._dampingRatio; + }, + set: function set(value) { + this._dampingRatio = value; + this._joint && this._joint.SetDampingRatio(value); + } + }, + maxForce: { + tooltip: false, + visible: false, + get: function get() { + return this._maxForce; + }, + set: function set(value) { + this._maxForce = value; + this._joint && this._joint.SetMaxForce(value); + } + } + }, + onLoad: function onLoad() { + var mouseRegion = this.mouseRegion || this.node; + mouseRegion.on(cc.Node.EventType.TOUCH_START, this.onTouchBegan, this); + mouseRegion.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this); + mouseRegion.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this); + mouseRegion.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchEnd, this); + }, + onEnable: function onEnable() { }, + start: function start() { }, + onTouchBegan: function onTouchBegan(event) { + var manager = cc.director.getPhysicsManager(); + var target = this._pressPoint = event.touch.getLocation(); + cc.Camera && cc.Camera.main && (target = cc.Camera.main.getScreenToWorldPoint(target)); + var collider = manager.testPoint(target); + if (!collider) return; + var body = this.connectedBody = collider.body; + body.awake = true; + this.maxForce = 1e3 * this.connectedBody.getMass(); + this.target = target; + this._init(); + }, + onTouchMove: function onTouchMove(event) { + this._pressPoint = event.touch.getLocation(); + }, + onTouchEnd: function onTouchEnd(event) { + this._destroy(); + this._pressPoint = null; + }, + _createJointDef: function _createJointDef() { + var def = new b2.MouseJointDef(); + tempB2Vec2.x = this.target.x / PTM_RATIO; + tempB2Vec2.y = this.target.y / PTM_RATIO; + def.target = tempB2Vec2; + def.maxForce = this.maxForce; + def.dampingRatio = this.dampingRatio; + def.frequencyHz = this.frequency; + return def; + }, + update: function update() { + if (!this._pressPoint || !this._isValid()) return; + var camera = cc.Camera.findCamera(this.node); + this.target = camera ? camera.getScreenToWorldPoint(this._pressPoint) : this._pressPoint; + } + }); + cc.MouseJoint = module.exports = MouseJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 229: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var PrismaticJoint = cc.Class({ + name: "cc.PrismaticJoint", + extends: cc.Joint, + editor: false, + properties: { + localAxisA: { + default: cc.v2(1, 0), + tooltip: false + }, + referenceAngle: { + default: 0, + tooltip: false + }, + enableLimit: { + default: false, + tooltip: false + }, + enableMotor: { + default: false, + tooltip: false + }, + lowerLimit: { + default: 0, + tooltip: false + }, + upperLimit: { + default: 0, + tooltip: false + }, + _maxMotorForce: 0, + _motorSpeed: 0, + maxMotorForce: { + tooltip: false, + get: function get() { + return this._maxMotorForce; + }, + set: function set(value) { + this._maxMotorForce = value; + this._joint && this._joint.SetMaxMotorForce(value); + } + }, + motorSpeed: { + tooltip: false, + get: function get() { + return this._motorSpeed; + }, + set: function set(value) { + this._motorSpeed = value; + this._joint && this._joint.SetMotorSpeed(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.PrismaticJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.localAxisA = new b2.Vec2(this.localAxisA.x, this.localAxisA.y); + def.referenceAngle = this.referenceAngle * ANGLE_TO_PHYSICS_ANGLE; + def.enableLimit = this.enableLimit; + def.lowerTranslation = this.lowerLimit / PTM_RATIO; + def.upperTranslation = this.upperLimit / PTM_RATIO; + def.enableMotor = this.enableMotor; + def.maxMotorForce = this.maxMotorForce; + def.motorSpeed = this.motorSpeed; + return def; + } + }); + cc.PrismaticJoint = module.exports = PrismaticJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 230: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var PHYSICS_ANGLE_TO_ANGLE = require("../CCPhysicsTypes").PHYSICS_ANGLE_TO_ANGLE; + var RevoluteJoint = cc.Class({ + name: "cc.RevoluteJoint", + extends: cc.Joint, + editor: false, + properties: { + _maxMotorTorque: 0, + _motorSpeed: 0, + _enableLimit: false, + _enableMotor: false, + referenceAngle: { + default: 0, + tooltip: false + }, + lowerAngle: { + default: 0, + tooltip: false + }, + upperAngle: { + default: 0, + tooltip: false + }, + maxMotorTorque: { + tooltip: false, + get: function get() { + return this._maxMotorTorque; + }, + set: function set(value) { + this._maxMotorTorque = value; + this._joint && this._joint.SetMaxMotorTorque(value); + } + }, + motorSpeed: { + tooltip: false, + get: function get() { + return this._motorSpeed; + }, + set: function set(value) { + this._motorSpeed = value; + this._joint && this._joint.SetMotorSpeed(value * ANGLE_TO_PHYSICS_ANGLE); + } + }, + enableLimit: { + tooltip: false, + get: function get() { + return this._enableLimit; + }, + set: function set(value) { + this._enableLimit = value; + this._joint && this._joint.EnableLimit(value); + } + }, + enableMotor: { + tooltip: false, + get: function get() { + return this._enableMotor; + }, + set: function set(value) { + this._enableMotor = value; + this._joint && this._joint.EnableMotor(value); + } + } + }, + getJointAngle: function getJointAngle() { + if (this._joint) return this._joint.GetJointAngle() * PHYSICS_ANGLE_TO_ANGLE; + return 0; + }, + setLimits: function setLimits(lower, upper) { + if (this._joint) return this._joint.SetLimits(lower * ANGLE_TO_PHYSICS_ANGLE, upper * ANGLE_TO_PHYSICS_ANGLE); + }, + _createJointDef: function _createJointDef() { + var def = new b2.RevoluteJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.lowerAngle = this.upperAngle * ANGLE_TO_PHYSICS_ANGLE; + def.upperAngle = this.lowerAngle * ANGLE_TO_PHYSICS_ANGLE; + def.maxMotorTorque = this.maxMotorTorque; + def.motorSpeed = this.motorSpeed * ANGLE_TO_PHYSICS_ANGLE; + def.enableLimit = this.enableLimit; + def.enableMotor = this.enableMotor; + def.referenceAngle = this.referenceAngle * ANGLE_TO_PHYSICS_ANGLE; + return def; + } + }); + cc.RevoluteJoint = module.exports = RevoluteJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 231: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var RopeJoint = cc.Class({ + name: "cc.RopeJoint", + extends: cc.Joint, + editor: false, + properties: { + _maxLength: 1, + maxLength: { + tooltip: false, + get: function get() { + return this._maxLength; + }, + set: function set(value) { + this._maxLength = value; + this._joint && this._joint.SetMaxLength(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.RopeJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.maxLength = this.maxLength / PTM_RATIO; + return def; + } + }); + cc.RopeJoint = module.exports = RopeJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 232: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var WeldJoint = cc.Class({ + name: "cc.WeldJoint", + extends: cc.Joint, + editor: false, + properties: { + referenceAngle: { + default: 0, + tooltip: false + }, + _frequency: 0, + _dampingRatio: 0, + frequency: { + tooltip: false, + get: function get() { + return this._frequency; + }, + set: function set(value) { + this._frequency = value; + this._joint && this._joint.SetFrequency(value); + } + }, + dampingRatio: { + tooltip: false, + get: function get() { + return this._dampingRatio; + }, + set: function set(value) { + this._dampingRatio = value; + this._joint && this._joint.SetDampingRatio(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.WeldJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.referenceAngle = this.referenceAngle * ANGLE_TO_PHYSICS_ANGLE; + def.frequencyHz = this.frequency; + def.dampingRatio = this.dampingRatio; + return def; + } + }); + cc.WeldJoint = module.exports = WeldJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 233: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var ANGLE_TO_PHYSICS_ANGLE = require("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE; + var WheelJoint = cc.Class({ + name: "cc.WheelJoint", + extends: cc.Joint, + editor: false, + properties: { + _maxMotorTorque: 0, + _motorSpeed: 0, + _enableMotor: false, + _frequency: 2, + _dampingRatio: .7, + localAxisA: { + default: cc.v2(1, 0), + tooltip: false + }, + maxMotorTorque: { + tooltip: false, + get: function get() { + return this._maxMotorTorque; + }, + set: function set(value) { + this._maxMotorTorque = value; + this._joint && this._joint.SetMaxMotorTorque(value); + } + }, + motorSpeed: { + tooltip: false, + get: function get() { + return this._motorSpeed; + }, + set: function set(value) { + this._motorSpeed = value; + this._joint && this._joint.SetMotorSpeed(value * ANGLE_TO_PHYSICS_ANGLE); + } + }, + enableMotor: { + tooltip: false, + get: function get() { + return this._enableMotor; + }, + set: function set(value) { + this._enableMotor = value; + this._joint && this._joint.EnableMotor(value); + } + }, + frequency: { + tooltip: false, + get: function get() { + return this._frequency; + }, + set: function set(value) { + this._frequency = value; + this._joint && this._joint.SetSpringFrequencyHz(value); + } + }, + dampingRatio: { + tooltip: false, + get: function get() { + return this._dampingRatio; + }, + set: function set(value) { + this._dampingRatio = value; + this._joint && this._joint.SetDampingRatio(value); + } + } + }, + _createJointDef: function _createJointDef() { + var def = new b2.WheelJointDef(); + def.localAnchorA = new b2.Vec2(this.anchor.x / PTM_RATIO, this.anchor.y / PTM_RATIO); + def.localAnchorB = new b2.Vec2(this.connectedAnchor.x / PTM_RATIO, this.connectedAnchor.y / PTM_RATIO); + def.localAxisA = new b2.Vec2(this.localAxisA.x, this.localAxisA.y); + def.maxMotorTorque = this.maxMotorTorque; + def.motorSpeed = this.motorSpeed * ANGLE_TO_PHYSICS_ANGLE; + def.enableMotor = this.enableMotor; + def.dampingRatio = this.dampingRatio; + def.frequencyHz = this.frequency; + return def; + } + }); + cc.WheelJoint = module.exports = WheelJoint; + }), { + "../CCPhysicsTypes": 215 + }], + 234: [(function (require, module, exports) { + "use strict"; + var BodyType = require("../CCPhysicsTypes").BodyType; + function PhysicsAABBQueryCallback() { + this._point = new b2.Vec2(); + this._isPoint = false; + this._fixtures = []; + } + PhysicsAABBQueryCallback.prototype.init = function (point) { + if (point) { + this._isPoint = true; + this._point.x = point.x; + this._point.y = point.y; + } else this._isPoint = false; + this._fixtures.length = 0; + }; + PhysicsAABBQueryCallback.prototype.ReportFixture = function (fixture) { + var body = fixture.GetBody(); + if (body.GetType() === BodyType.Dynamic) if (this._isPoint) { + if (fixture.TestPoint(this._point)) { + this._fixtures.push(fixture); + return false; + } + } else this._fixtures.push(fixture); + return true; + }; + PhysicsAABBQueryCallback.prototype.getFixture = function () { + return this._fixtures[0]; + }; + PhysicsAABBQueryCallback.prototype.getFixtures = function () { + return this._fixtures; + }; + cc.PhysicsAABBQueryCallback = module.exports = PhysicsAABBQueryCallback; + }), { + "../CCPhysicsTypes": 215 + }], + 235: [(function (require, module, exports) { + "use strict"; + function PhysicsContactListener() { + this._contactFixtures = []; + } + PhysicsContactListener.prototype.setBeginContact = function (cb) { + this._BeginContact = cb; + }; + PhysicsContactListener.prototype.setEndContact = function (cb) { + this._EndContact = cb; + }; + PhysicsContactListener.prototype.setPreSolve = function (cb) { + this._PreSolve = cb; + }; + PhysicsContactListener.prototype.setPostSolve = function (cb) { + this._PostSolve = cb; + }; + PhysicsContactListener.prototype.BeginContact = function (contact) { + if (!this._BeginContact) return; + var fixtureA = contact.GetFixtureA(); + var fixtureB = contact.GetFixtureB(); + var fixtures = this._contactFixtures; + contact._shouldReport = false; + if (-1 !== fixtures.indexOf(fixtureA) || -1 !== fixtures.indexOf(fixtureB)) { + contact._shouldReport = true; + this._BeginContact(contact); + } + }; + PhysicsContactListener.prototype.EndContact = function (contact) { + if (this._EndContact && contact._shouldReport) { + contact._shouldReport = false; + this._EndContact(contact); + } + }; + PhysicsContactListener.prototype.PreSolve = function (contact, oldManifold) { + this._PreSolve && contact._shouldReport && this._PreSolve(contact, oldManifold); + }; + PhysicsContactListener.prototype.PostSolve = function (contact, impulse) { + this._PostSolve && contact._shouldReport && this._PostSolve(contact, impulse); + }; + PhysicsContactListener.prototype.registerContactFixture = function (fixture) { + this._contactFixtures.push(fixture); + }; + PhysicsContactListener.prototype.unregisterContactFixture = function (fixture) { + cc.js.array.remove(this._contactFixtures, fixture); + }; + cc.PhysicsContactListener = module.exports = PhysicsContactListener; + }), {}], + 236: [(function (require, module, exports) { + "use strict"; + var PTM_RATIO = require("../CCPhysicsTypes").PTM_RATIO; + var _tmp_vec2 = cc.v2(); + var GREEN_COLOR = cc.Color.GREEN; + var RED_COLOR = cc.Color.RED; + function PhysicsDebugDraw(drawer) { + b2.Draw.call(this); + this._drawer = drawer; + this._xf = this._dxf = new b2.Transform(); + } + cc.js.extend(PhysicsDebugDraw, b2.Draw); + cc.js.mixin(PhysicsDebugDraw.prototype, { + _DrawPolygon: function _DrawPolygon(vertices, vertexCount) { + var drawer = this._drawer; + for (var i = 0; i < vertexCount; i++) { + b2.Transform.MulXV(this._xf, vertices[i], _tmp_vec2); + var x = _tmp_vec2.x * PTM_RATIO, y = _tmp_vec2.y * PTM_RATIO; + 0 === i ? drawer.moveTo(x, y) : drawer.lineTo(x, y); + } + drawer.close(); + }, + DrawPolygon: function DrawPolygon(vertices, vertexCount, color) { + this._applyStrokeColor(color); + this._DrawPolygon(vertices, vertexCount); + this._drawer.stroke(); + }, + DrawSolidPolygon: function DrawSolidPolygon(vertices, vertexCount, color) { + this._applyFillColor(color); + this._DrawPolygon(vertices, vertexCount); + this._drawer.fill(); + this._drawer.stroke(); + }, + _DrawCircle: function _DrawCircle(center, radius) { + var p = this._xf.p; + this._drawer.circle((center.x + p.x) * PTM_RATIO, (center.y + p.y) * PTM_RATIO, radius * PTM_RATIO); + }, + DrawCircle: function DrawCircle(center, radius, color) { + this._applyStrokeColor(color); + this._DrawCircle(center, radius); + this._drawer.stroke(); + }, + DrawSolidCircle: function DrawSolidCircle(center, radius, axis, color) { + this._applyFillColor(color); + this._DrawCircle(center, radius); + this._drawer.fill(); + }, + DrawSegment: function DrawSegment(p1, p2, color) { + var drawer = this._drawer; + if (p1.x === p2.x && p1.y === p2.y) { + this._applyFillColor(color); + this._DrawCircle(p1, 2 / PTM_RATIO); + drawer.fill(); + return; + } + this._applyStrokeColor(color); + b2.Transform.MulXV(this._xf, p1, _tmp_vec2); + drawer.moveTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + b2.Transform.MulXV(this._xf, p2, _tmp_vec2); + drawer.lineTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + drawer.stroke(); + }, + DrawTransform: function DrawTransform(xf) { + var drawer = this._drawer; + drawer.strokeColor = RED_COLOR; + _tmp_vec2.x = _tmp_vec2.y = 0; + b2.Transform.MulXV(xf, _tmp_vec2, _tmp_vec2); + drawer.moveTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + _tmp_vec2.x = 1; + _tmp_vec2.y = 0; + b2.Transform.MulXV(xf, _tmp_vec2, _tmp_vec2); + drawer.lineTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + drawer.stroke(); + drawer.strokeColor = GREEN_COLOR; + _tmp_vec2.x = _tmp_vec2.y = 0; + b2.Transform.MulXV(xf, _tmp_vec2, _tmp_vec2); + drawer.moveTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + _tmp_vec2.x = 0; + _tmp_vec2.y = 1; + b2.Transform.MulXV(xf, _tmp_vec2, _tmp_vec2); + drawer.lineTo(_tmp_vec2.x * PTM_RATIO, _tmp_vec2.y * PTM_RATIO); + drawer.stroke(); + }, + DrawPoint: function DrawPoint(center, radius, color) { }, + _applyStrokeColor: function _applyStrokeColor(color) { + var strokeColor = this._drawer.strokeColor; + strokeColor.r = 255 * color.r; + strokeColor.g = 255 * color.g; + strokeColor.b = 255 * color.b; + strokeColor.a = 150; + this._drawer.strokeColor = strokeColor; + }, + _applyFillColor: function _applyFillColor(color) { + var fillColor = this._drawer.fillColor; + fillColor.r = 255 * color.r; + fillColor.g = 255 * color.g; + fillColor.b = 255 * color.b; + fillColor.a = 150; + this._drawer.fillColor = fillColor; + }, + PushTransform: function PushTransform(xf) { + this._xf = xf; + }, + PopTransform: function PopTransform() { + this._xf = this._dxf; + } + }); + module.exports = PhysicsDebugDraw; + }), { + "../CCPhysicsTypes": 215 + }], + 237: [(function (require, module, exports) { + "use strict"; + function PhysicsRayCastCallback() { + this._type = 0; + this._fixtures = []; + this._points = []; + this._normals = []; + this._fractions = []; + } + PhysicsRayCastCallback.prototype.init = function (type) { + this._type = type; + this._fixtures.length = 0; + this._points.length = 0; + this._normals.length = 0; + this._fractions.length = 0; + }; + PhysicsRayCastCallback.prototype.ReportFixture = function (fixture, point, normal, fraction) { + if (0 === this._type) { + this._fixtures[0] = fixture; + this._points[0] = point; + this._normals[0] = normal; + this._fractions[0] = fraction; + return fraction; + } + this._fixtures.push(fixture); + this._points.push(cc.v2(point)); + this._normals.push(cc.v2(normal)); + this._fractions.push(fraction); + if (1 === this._type) return 0; + if (this._type >= 2) return 1; + return fraction; + }; + PhysicsRayCastCallback.prototype.getFixtures = function () { + return this._fixtures; + }; + PhysicsRayCastCallback.prototype.getPoints = function () { + return this._points; + }; + PhysicsRayCastCallback.prototype.getNormals = function () { + return this._normals; + }; + PhysicsRayCastCallback.prototype.getFractions = function () { + return this._fractions; + }; + cc.PhysicsRayCastCallback = module.exports = PhysicsRayCastCallback; + }), {}], + 238: [(function (require, module, exports) { + "use strict"; + function getWorldRotation(node) { + var rot = node.angle; + var parent = node.parent; + while (parent.parent) { + rot += parent.angle; + parent = parent.parent; + } + return -rot; + } + function getWorldScale(node) { + var scaleX = node.scaleX; + var scaleY = node.scaleY; + var parent = node.parent; + while (parent.parent) { + scaleX *= parent.scaleX; + scaleY *= parent.scaleY; + parent = parent.parent; + } + return cc.v2(scaleX, scaleY); + } + function convertToNodeRotation(node, rotation) { + rotation -= -node.angle; + var parent = node.parent; + while (parent.parent) { + rotation -= -parent.angle; + parent = parent.parent; + } + return rotation; + } + module.exports = { + getWorldRotation: getWorldRotation, + getWorldScale: getWorldScale, + convertToNodeRotation: convertToNodeRotation + }; + }), {}], + 239: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + var Enum = require("./CCEnum"); + var utils = require("./utils"); + var _isPlainEmptyObj_DEV = utils.isPlainEmptyObj_DEV; + var _cloneable_DEV = utils.cloneable_DEV; + var Attr = require("./attribute"); + var DELIMETER = Attr.DELIMETER; + var preprocess = require("./preprocess-class"); + require("./requiring-frame"); + var BUILTIN_ENTRIES = ["name", "extends", "mixins", "ctor", "__ctor__", "properties", "statics", "editor", "__ES6__"]; + var INVALID_STATICS_DEV = false; + function pushUnique(array, item) { + array.indexOf(item) < 0 && array.push(item); + } + var deferredInitializer = { + datas: null, + push: function push(data) { + if (this.datas) this.datas.push(data); else { + this.datas = [data]; + var self = this; + setTimeout((function () { + self.init(); + }), 0); + } + }, + init: function init() { + var datas = this.datas; + if (datas) { + for (var i = 0; i < datas.length; ++i) { + var data = datas[i]; + var cls = data.cls; + var properties = data.props; + "function" === typeof properties && (properties = properties()); + var name = js.getClassName(cls); + properties ? declareProperties(cls, name, properties, cls.$super, data.mixins) : cc.errorID(3633, name); + } + this.datas = null; + } + } + }; + function appendProp(cls, name) { + false; + pushUnique(cls.__props__, name); + } + function defineProp(cls, className, propName, val, es6) { + var defaultValue = val["default"]; + false; + Attr.setClassAttr(cls, propName, "default", defaultValue); + appendProp(cls, propName); + parseAttributes(cls, val, className, propName, false); + var i; + false, false; + } + function defineGetSet(cls, name, propName, val, es6) { + var getter = val.get; + var setter = val.set; + var proto = cls.prototype; + var d = Object.getOwnPropertyDescriptor(proto, propName); + var setterUndefined = !d; + if (getter) { + false; + parseAttributes(cls, val, name, propName, true); + false, false; + Attr.setClassAttr(cls, propName, "serializable", false); + false; + es6 || js.get(proto, propName, getter, setterUndefined, setterUndefined); + false, false; + } + if (setter) { + if (!es6) { + false; + js.set(proto, propName, setter, setterUndefined, setterUndefined); + } + false, false; + } + } + function getDefault(defaultVal) { + if ("function" === typeof defaultVal) { + false; + return defaultVal(); + } + return defaultVal; + } + function mixinWithInherited(dest, src, filter) { + for (var prop in src) dest.hasOwnProperty(prop) || filter && !filter(prop) || Object.defineProperty(dest, prop, js.getPropertyDescriptor(src, prop)); + } + function doDefine(className, baseClass, mixins, options) { + var shouldAddProtoCtor; + var __ctor__ = options.__ctor__; + var ctor = options.ctor; + var __es6__ = options.__ES6__; + var ctorToUse; + false; + var ctors; + var fireClass; + if (__es6__) { + ctors = [ctor]; + fireClass = ctor; + } else { + ctors = __ctor__ ? [__ctor__] : _getAllCtors(baseClass, mixins, options); + fireClass = _createCtor(ctors, baseClass, className, options); + js.value(fireClass, "extend", (function (options) { + options["extends"] = this; + return CCClass(options); + }), true); + } + js.value(fireClass, "__ctors__", ctors.length > 0 ? ctors : null, true); + var prototype = fireClass.prototype; + if (baseClass) { + if (!__es6__) { + js.extend(fireClass, baseClass); + prototype = fireClass.prototype; + } + fireClass.$super = baseClass; + false; + } + if (mixins) { + for (var m = mixins.length - 1; m >= 0; m--) { + var mixin = mixins[m]; + mixinWithInherited(prototype, mixin.prototype); + mixinWithInherited(fireClass, mixin, (function (prop) { + return mixin.hasOwnProperty(prop) && true; + })); + CCClass._isCCClass(mixin) && mixinWithInherited(Attr.getClassAttrs(fireClass), Attr.getClassAttrs(mixin)); + } + prototype.constructor = fireClass; + } + __es6__ || (prototype.__initProps__ = compileProps); + js.setClassName(className, fireClass); + return fireClass; + } + function define(className, baseClass, mixins, options) { + var Component = cc.Component; + var frame = cc._RF.peek(); + if (frame && js.isChildClassOf(baseClass, Component)) { + if (js.isChildClassOf(frame.cls, Component)) { + cc.errorID(3615); + return null; + } + false; + className = className || frame.script; + } + var cls = doDefine(className, baseClass, mixins, options); + if (frame) if (js.isChildClassOf(baseClass, Component)) { + var uuid = frame.uuid; + if (uuid) { + js._setClassId(uuid, cls); + false; + } + frame.cls = cls; + } else js.isChildClassOf(frame.cls, Component) || (frame.cls = cls); + return cls; + } + function normalizeClassName_DEV(className) { + var DefaultName = "CCClass"; + if (className) { + className = className.replace(/^[^$A-Za-z_]/, "_").replace(/[^0-9A-Za-z_$]/g, "_"); + try { + Function("function " + className + "(){}")(); + return className; + } catch (e) { } + } + return DefaultName; + } + function getNewValueTypeCodeJit(value) { + var clsName = js.getClassName(value); + var type = value.constructor; + var res = "new " + clsName + "("; + for (var i = 0; i < type.__props__.length; i++) { + var prop = type.__props__[i]; + var propVal = value[prop]; + false; + res += propVal; + i < type.__props__.length - 1 && (res += ","); + } + return res + ")"; + } + function escapeForJS(s) { + return JSON.stringify(s).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + function getInitPropsJit(attrs, propList) { + var F = []; + var func = ""; + for (var i = 0; i < propList.length; i++) { + var prop = propList[i]; + var attrKey = prop + DELIMETER + "default"; + if (attrKey in attrs) { + var statement; + statement = IDENTIFIER_RE.test(prop) ? "this." + prop + "=" : "this[" + escapeForJS(prop) + "]="; + var expression; + var def = attrs[attrKey]; + if ("object" === typeof def && def) expression = def instanceof cc.ValueType ? getNewValueTypeCodeJit(def) : Array.isArray(def) ? "[]" : "{}"; else if ("function" === typeof def) { + var index = F.length; + F.push(def); + expression = "F[" + index + "]()"; + false; + } else expression = "string" === typeof def ? escapeForJS(def) : def; + statement = statement + expression + ";\n"; + func += statement; + } + } + var initProps; + initProps = 0 === F.length ? Function(func) : Function("F", "return (function(){\n" + func + "})")(F); + return initProps; + } + function getInitProps(attrs, propList) { + var props = null; + var simpleEnd = 0; + var valueTypeEnd = 0; + (function () { + var simples = null; + var valueTypes = null; + var advanceds = null; + for (var i = 0; i < propList.length; ++i) { + var prop = propList[i]; + var attrKey = prop + DELIMETER + "default"; + if (attrKey in attrs) { + var def = attrs[attrKey]; + if ("object" === typeof def && def || "function" === typeof def) if (def instanceof cc.ValueType) { + valueTypes || (valueTypes = []); + valueTypes.push(prop, def); + } else { + advanceds || (advanceds = []); + advanceds.push(prop, def); + } else { + simples || (simples = []); + simples.push(prop, def); + } + } + } + simpleEnd = simples ? simples.length : 0; + valueTypeEnd = simpleEnd + (valueTypes ? valueTypes.length : 0); + var totalLength = valueTypeEnd + (advanceds ? advanceds.length : 0); + props = new Array(totalLength); + for (var _i = 0; _i < simpleEnd; ++_i) props[_i] = simples[_i]; + for (var _i2 = simpleEnd; _i2 < valueTypeEnd; ++_i2) props[_i2] = valueTypes[_i2 - simpleEnd]; + for (var _i3 = valueTypeEnd; _i3 < totalLength; ++_i3) props[_i3] = advanceds[_i3 - valueTypeEnd]; + })(); + return function () { + var i = 0; + for (; i < simpleEnd; i += 2) this[props[i]] = props[i + 1]; + for (; i < valueTypeEnd; i += 2) this[props[i]] = props[i + 1].clone(); + for (; i < props.length; i += 2) { + var def = props[i + 1]; + if (Array.isArray(def)) this[props[i]] = []; else { + var value; + if ("object" === typeof def) value = {}; else { + false; + value = def(); + } + this[props[i]] = value; + } + } + }; + } + var IDENTIFIER_RE = /^[A-Za-z_$][0-9A-Za-z_$]*$/; + function compileProps(actualClass) { + var attrs = Attr.getClassAttrs(actualClass); + var propList = actualClass.__props__; + if (null === propList) { + deferredInitializer.init(); + propList = actualClass.__props__; + } + var initProps = getInitPropsJit(attrs, propList); + actualClass.prototype.__initProps__ = initProps; + initProps.call(this); + } + var _createCtor = function (ctors, baseClass, className, options) { + var superCallBounded = baseClass && boundSuperCalls(baseClass, options, className); + var ctorName = "CCClass"; + var body = "return function " + ctorName + "(){\n"; + superCallBounded && (body += "this._super=null;\n"); + body += "this.__initProps__(" + ctorName + ");\n"; + var ctorLen = ctors.length; + if (ctorLen > 0) { + var useTryCatch = false; + useTryCatch && (body += "try{\n"); + var SNIPPET = "].apply(this,arguments);\n"; + if (1 === ctorLen) body += ctorName + ".__ctors__[0" + SNIPPET; else { + body += "var cs=" + ctorName + ".__ctors__;\n"; + for (var i = 0; i < ctorLen; i++) body += "cs[" + i + SNIPPET; + } + useTryCatch && (body += "}catch(e){\ncc._throw(e);\n}\n"); + } + body += "}"; + return Function(body)(); + }; + function _validateCtor_DEV(ctor, baseClass, className, options) { + var originCtor; + false; + !(ctor.length > 0) || className && className.startsWith("cc.") || cc.warnID(3617, className); + return ctor; + } + function _getAllCtors(baseClass, mixins, options) { + function getCtors(cls) { + return CCClass._isCCClass(cls) ? cls.__ctors__ || [] : [cls]; + } + var ctors = []; + var baseOrMixins = [baseClass].concat(mixins); + for (var b = 0; b < baseOrMixins.length; b++) { + var baseOrMixin = baseOrMixins[b]; + if (baseOrMixin) { + var baseCtors = getCtors(baseOrMixin); + for (var c = 0; c < baseCtors.length; c++) pushUnique(ctors, baseCtors[c]); + } + } + var ctor = options.ctor; + ctor && ctors.push(ctor); + return ctors; + } + var SuperCallReg = /xyz/.test((function () { + xyz; + })) ? /\b\._super\b/ : /.*/; + var SuperCallRegStrict = /xyz/.test((function () { + xyz; + })) ? /this\._super\s*\(/ : /(NONE){99}/; + function boundSuperCalls(baseClass, options, className) { + var hasSuperCall = false; + for (var funcName in options) { + if (BUILTIN_ENTRIES.indexOf(funcName) >= 0) continue; + var func = options[funcName]; + if ("function" !== typeof func) continue; + var pd = js.getPropertyDescriptor(baseClass.prototype, funcName); + if (pd) { + var superFunc = pd.value; + if ("function" === typeof superFunc) { + if (SuperCallReg.test(func)) { + hasSuperCall = true; + options[funcName] = (function (superFunc, func) { + return function () { + var tmp = this._super; + this._super = superFunc; + var ret = func.apply(this, arguments); + this._super = tmp; + return ret; + }; + })(superFunc, func); + } + continue; + } + } + false; + } + return hasSuperCall; + } + function declareProperties(cls, className, properties, baseClass, mixins, es6) { + cls.__props__ = []; + baseClass && baseClass.__props__ && (cls.__props__ = baseClass.__props__.slice()); + if (mixins) for (var m = 0; m < mixins.length; ++m) { + var mixin = mixins[m]; + mixin.__props__ && (cls.__props__ = cls.__props__.concat(mixin.__props__.filter((function (x) { + return cls.__props__.indexOf(x) < 0; + })))); + } + if (properties) { + preprocess.preprocessAttrs(properties, className, cls, es6); + for (var propName in properties) { + var val = properties[propName]; + "default" in val ? defineProp(cls, className, propName, val, es6) : defineGetSet(cls, className, propName, val, es6); + } + } + var attrs = Attr.getClassAttrs(cls); + cls.__values__ = cls.__props__.filter((function (prop) { + return false !== attrs[prop + DELIMETER + "serializable"]; + })); + } + function CCClass(options) { + options = options || {}; + var name = options.name; + var base = options["extends"]; + var mixins = options.mixins; + var cls = define(name, base, mixins, options); + name || (name = cc.js.getClassName(cls)); + cls._sealed = true; + base && (base._sealed = false); + var properties = options.properties; + if ("function" === typeof properties || base && null === base.__props__ || mixins && mixins.some((function (x) { + return null === x.__props__; + }))) { + false; + deferredInitializer.push({ + cls: cls, + props: properties, + mixins: mixins + }); + cls.__props__ = cls.__values__ = null; + } else declareProperties(cls, name, properties, base, options.mixins, options.__ES6__); + var statics = options.statics; + if (statics) { + var staticPropName; + false; + for (staticPropName in statics) cls[staticPropName] = statics[staticPropName]; + } + for (var funcName in options) { + if (BUILTIN_ENTRIES.indexOf(funcName) >= 0) continue; + var func = options[funcName]; + if (!preprocess.validateMethodWithProps(func, funcName, name, cls, base)) continue; + js.value(cls.prototype, funcName, func, true, true); + } + var editor = options.editor; + editor && !!js.isChildClassOf(base, cc.Component) && cc.Component._registerEditorProps(cls, editor); + return cls; + } + CCClass._isCCClass = function (constructor) { + return constructor && constructor.hasOwnProperty("__ctors__"); + }; + CCClass._fastDefine = function (className, constructor, serializableFields) { + js.setClassName(className, constructor); + var props = constructor.__props__ = constructor.__values__ = Object.keys(serializableFields); + var attrs = Attr.getClassAttrs(constructor); + for (var i = 0; i < props.length; i++) { + var key = props[i]; + attrs[key + DELIMETER + "visible"] = false; + attrs[key + DELIMETER + "default"] = serializableFields[key]; + } + }; + CCClass.Attr = Attr; + CCClass.attr = Attr.attr; + CCClass.getInheritanceChain = function (klass) { + var chain = []; + for (; ;) { + klass = js.getSuper(klass); + if (!klass) break; + klass !== Object && chain.push(klass); + } + return chain; + }; + var PrimitiveTypes = { + Integer: "Number", + Float: "Number", + Boolean: "Boolean", + String: "String" + }; + var onAfterProps_ET = []; + function parseAttributes(cls, attributes, className, propName, usedInGetter) { + var ERR_Type = ""; + var attrs = null; + var propNamePrefix = ""; + function initAttrs() { + propNamePrefix = propName + DELIMETER; + return attrs = Attr.getClassAttrs(cls); + } + false, false; + var type = attributes.type; + if (type) { + var primitiveType = PrimitiveTypes[type]; + if (primitiveType) { + (attrs || initAttrs())[propNamePrefix + "type"] = type; + (false, false) && !attributes._short && onAfterProps_ET.push(Attr.getTypeChecker_ET(primitiveType, "cc." + type)); + } else if ("Object" === type) false; else if (type === Attr.ScriptUuid) { + (attrs || initAttrs())[propNamePrefix + "type"] = "Script"; + attrs[propNamePrefix + "ctor"] = cc.ScriptAsset; + } else if ("object" === typeof type) if (Enum.isEnum(type)) { + (attrs || initAttrs())[propNamePrefix + "type"] = "Enum"; + attrs[propNamePrefix + "enumList"] = Enum.getList(type); + } else false; else if ("function" === typeof type) { + (attrs || initAttrs())[propNamePrefix + "type"] = "Object"; + attrs[propNamePrefix + "ctor"] = type; + (false, false) && !attributes._short && onAfterProps_ET.push(Attr.getObjTypeChecker_ET(type)); + } else false; + } + function parseSimpleAttr(attrName, expectType) { + if (attrName in attributes) { + var val = attributes[attrName]; + typeof val === expectType && ((attrs || initAttrs())[propNamePrefix + attrName] = val); + } + } + if (attributes.editorOnly) { + false; + (attrs || initAttrs())[propNamePrefix + "editorOnly"] = true; + } + false; + if (false === attributes.serializable) { + false; + (attrs || initAttrs())[propNamePrefix + "serializable"] = false; + } + parseSimpleAttr("formerlySerializedAs", "string"); + false; + var visible; + var startsWithUS; + false; + var range = attributes.range; + if (range) if (Array.isArray(range)) if (range.length >= 2) { + (attrs || initAttrs())[propNamePrefix + "min"] = range[0]; + attrs[propNamePrefix + "max"] = range[1]; + range.length > 2 && (attrs[propNamePrefix + "step"] = range[2]); + } else false; else false; + parseSimpleAttr("min", "number"); + parseSimpleAttr("max", "number"); + parseSimpleAttr("step", "number"); + } + cc.Class = CCClass; + module.exports = { + isArray: function isArray(defaultVal) { + defaultVal = getDefault(defaultVal); + return Array.isArray(defaultVal); + }, + fastDefine: CCClass._fastDefine, + getNewValueTypeCode: (true, getNewValueTypeCodeJit), + IDENTIFIER_RE: IDENTIFIER_RE, + escapeForJS: escapeForJS, + getDefault: getDefault + }; + false; + }), { + "./CCEnum": 241, + "./attribute": 251, + "./js": 260, + "./preprocess-class": 261, + "./requiring-frame": 262, + "./utils": 263 + }], + 240: [(function (require, module, exports) { + "use strict"; + require("./CCClass"); + var Preprocess = require("./preprocess-class"); + var js = require("./js"); + var isPlainEmptyObj_DEV = false; + var CACHE_KEY = "__ccclassCache__"; + function fNOP(ctor) { + return ctor; + } + function getSubDict(obj, key) { + return obj[key] || (obj[key] = {}); + } + function checkCtorArgument(decorate) { + return function (target) { + if ("function" === typeof target) return decorate(target); + return function (ctor) { + return decorate(ctor, target); + }; + }; + } + function _checkNormalArgument(validator_DEV, decorate, decoratorName) { + return function (target) { + false; + return function (ctor) { + return decorate(ctor, target); + }; + }; + } + var checkCompArgument = _checkNormalArgument.bind(null, false); + function _argumentChecker(type) { + return _checkNormalArgument.bind(null, false); + } + var checkStringArgument = _argumentChecker("string"); + var checkNumberArgument = _argumentChecker("number"); + function getClassCache(ctor, decoratorName) { + false; + return getSubDict(ctor, CACHE_KEY); + } + function getDefaultFromInitializer(initializer) { + var value; + try { + value = initializer(); + } catch (e) { + return initializer; + } + return "object" !== typeof value || null === value ? value : initializer; + } + function extractActualDefaultValues(ctor) { + var dummyObj; + try { + dummyObj = new ctor(); + } catch (e) { + false; + return {}; + } + return dummyObj; + } + function genProperty(ctor, properties, propName, options, desc, cache) { + var fullOptions; + var isGetset = desc && (desc.get || desc.set); + options && (fullOptions = Preprocess.getFullFormOfProperty(options, isGetset)); + var existsProperty = properties[propName]; + var prop = js.mixin(existsProperty || {}, fullOptions || options || {}); + if (isGetset) { + var errorProps; + false; + desc.get && (prop.get = desc.get); + desc.set && (prop.set = desc.set); + } else { + false; + var defaultValue = void 0; + var isDefaultValueSpecified = false; + if (desc) { + if (desc.initializer) { + defaultValue = getDefaultFromInitializer(desc.initializer); + isDefaultValueSpecified = true; + } + } else { + var actualDefaultValues = cache["default"] || (cache["default"] = extractActualDefaultValues(ctor)); + if (actualDefaultValues.hasOwnProperty(propName)) { + defaultValue = actualDefaultValues[propName]; + isDefaultValueSpecified = true; + } + } + false, false; + prop["default"] = defaultValue; + } + properties[propName] = prop; + } + var ccclass = checkCtorArgument((function (ctor, name) { + var base = js.getSuper(ctor); + base === Object && (base = null); + var proto = { + name: name, + extends: base, + ctor: ctor, + __ES6__: true + }; + var cache = ctor[CACHE_KEY]; + if (cache) { + var decoratedProto = cache.proto; + decoratedProto && js.mixin(proto, decoratedProto); + ctor[CACHE_KEY] = void 0; + } + var res = cc.Class(proto); + var propNames; + var i; + var prop; + var desc; + var func; + false; + return res; + })); + function property(ctorProtoOrOptions, propName, desc) { + var options = null; + function normalized(ctorProto, propName, desc) { + var cache = getClassCache(ctorProto.constructor); + if (cache) { + var ccclassProto = getSubDict(cache, "proto"); + var properties = getSubDict(ccclassProto, "properties"); + genProperty(ctorProto.constructor, properties, propName, options, desc, cache); + } + } + if ("undefined" === typeof propName) { + options = ctorProtoOrOptions; + return normalized; + } + normalized(ctorProtoOrOptions, propName, desc); + } + function createEditorDecorator(argCheckFunc, editorPropName, staticValue) { + return argCheckFunc((function (ctor, decoratedValue) { + var cache = getClassCache(ctor, editorPropName); + if (cache) { + var value = void 0 !== staticValue ? staticValue : decoratedValue; + var proto = getSubDict(cache, "proto"); + getSubDict(proto, "editor")[editorPropName] = value; + } + }), editorPropName); + } + function createDummyDecorator(argCheckFunc) { + return argCheckFunc(fNOP); + } + var executeInEditMode = createDummyDecorator(checkCtorArgument, "executeInEditMode", true); + var requireComponent = createEditorDecorator(checkCompArgument, "requireComponent"); + var menu = createDummyDecorator(checkStringArgument, "menu"); + var executionOrder = createEditorDecorator(checkNumberArgument, "executionOrder"); + var disallowMultiple = createDummyDecorator(checkCtorArgument, "disallowMultiple"); + var playOnFocus = createDummyDecorator(checkCtorArgument, "playOnFocus", true); + var inspector = createDummyDecorator(checkStringArgument, "inspector"); + var icon = createDummyDecorator(checkStringArgument, "icon"); + var help = createDummyDecorator(checkStringArgument, "help"); + function mixins() { + var mixins = []; + for (var i = 0; i < arguments.length; i++) mixins[i] = arguments[i]; + return function (ctor) { + var cache = getClassCache(ctor, "mixins"); + cache && (getSubDict(cache, "proto").mixins = mixins); + }; + } + cc._decorator = module.exports = { + ccclass: ccclass, + property: property, + executeInEditMode: executeInEditMode, + requireComponent: requireComponent, + menu: menu, + executionOrder: executionOrder, + disallowMultiple: disallowMultiple, + playOnFocus: playOnFocus, + inspector: inspector, + icon: icon, + help: help, + mixins: mixins + }; + }), { + "./CCClass": 239, + "./js": 260, + "./preprocess-class": 261, + "./utils": 263 + }], + 241: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + function Enum(obj) { + if ("__enums__" in obj) return obj; + js.value(obj, "__enums__", null, true); + var lastIndex = -1; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = obj[key]; + if (-1 === val) { + val = ++lastIndex; + obj[key] = val; + } else if ("number" === typeof val) lastIndex = val; else if ("string" === typeof val && Number.isInteger(parseFloat(key))) continue; + var reverseKey = "" + val; + if (key !== reverseKey) { + if ((false, false) && reverseKey in obj && obj[reverseKey] !== key) { + cc.errorID(7100, reverseKey); + continue; + } + js.value(obj, reverseKey, key); + } + } + return obj; + } + Enum.isEnum = function (enumType) { + return enumType && enumType.hasOwnProperty("__enums__"); + }; + Enum.getList = function (enumDef) { + if (enumDef.__enums__) return enumDef.__enums__; + var enums = enumDef.__enums__ = []; + for (var name in enumDef) { + var value = enumDef[name]; + Number.isInteger(value) && enums.push({ + name: name, + value: value + }); + } + enums.sort((function (a, b) { + return a.value - b.value; + })); + return enums; + }; + var _TestEnum; + false; + module.exports = cc.Enum = Enum; + }), { + "./js": 260 + }], + 242: [(function (require, module, exports) { + "use strict"; + var eventManager = require("../event-manager"); + var inputManager = require("./CCInputManager"); + var PORTRAIT = 0; + var LANDSCAPE_LEFT = -90; + var PORTRAIT_UPSIDE_DOWN = 180; + var LANDSCAPE_RIGHT = 90; + var _didAccelerateFun; + cc.Acceleration = function (x, y, z, timestamp) { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.timestamp = timestamp || 0; + }; + inputManager.setAccelerometerEnabled = function (isEnable) { + var _t = this; + if (_t._accelEnabled === isEnable) return; + _t._accelEnabled = isEnable; + var scheduler = cc.director.getScheduler(); + scheduler.enableForTarget(_t); + if (_t._accelEnabled) { + _t._registerAccelerometerEvent(); + _t._accelCurTime = 0; + scheduler.scheduleUpdate(_t); + } else { + _t._unregisterAccelerometerEvent(); + _t._accelCurTime = 0; + scheduler.unscheduleUpdate(_t); + } + false, false; + }; + inputManager.setAccelerometerInterval = function (interval) { + if (this._accelInterval !== interval) { + this._accelInterval = interval; + false, false; + } + }; + inputManager._registerKeyboardEvent = function () { + cc.game.canvas.addEventListener("keydown", (function (e) { + eventManager.dispatchEvent(new cc.Event.EventKeyboard(e.keyCode, true)); + e.stopPropagation(); + e.preventDefault(); + }), false); + cc.game.canvas.addEventListener("keyup", (function (e) { + eventManager.dispatchEvent(new cc.Event.EventKeyboard(e.keyCode, false)); + e.stopPropagation(); + e.preventDefault(); + }), false); + }; + inputManager._registerAccelerometerEvent = function () { + var w = window, _t = this; + _t._acceleration = new cc.Acceleration(); + _t._accelDeviceEvent = w.DeviceMotionEvent || w.DeviceOrientationEvent; + cc.sys.browserType === cc.sys.BROWSER_TYPE_MOBILE_QQ && (_t._accelDeviceEvent = window.DeviceOrientationEvent); + var _deviceEventType = _t._accelDeviceEvent === w.DeviceMotionEvent ? "devicemotion" : "deviceorientation"; + var ua = navigator.userAgent; + (/Android/.test(ua) || /Adr/.test(ua) && cc.sys.browserType === cc.BROWSER_TYPE_UC) && (_t._minus = -1); + _didAccelerateFun = _t.didAccelerate.bind(_t); + w.addEventListener(_deviceEventType, _didAccelerateFun, false); + }; + inputManager._unregisterAccelerometerEvent = function () { + var w = window, _t = this; + var _deviceEventType = _t._accelDeviceEvent === w.DeviceMotionEvent ? "devicemotion" : "deviceorientation"; + _didAccelerateFun && w.removeEventListener(_deviceEventType, _didAccelerateFun, false); + }; + inputManager.didAccelerate = function (eventData) { + var _t = this, w = window; + if (!_t._accelEnabled) return; + var mAcceleration = _t._acceleration; + var x, y, z; + if (_t._accelDeviceEvent === window.DeviceMotionEvent) { + var eventAcceleration = eventData["accelerationIncludingGravity"]; + x = _t._accelMinus * eventAcceleration.x * .1; + y = _t._accelMinus * eventAcceleration.y * .1; + z = .1 * eventAcceleration.z; + } else { + x = eventData["gamma"] / 90 * .981; + y = -eventData["beta"] / 90 * .981; + z = eventData["alpha"] / 90 * .981; + } + if (cc.view._isRotated) { + var tmp = x; + x = -y; + y = tmp; + } + mAcceleration.x = x; + mAcceleration.y = y; + mAcceleration.z = z; + mAcceleration.timestamp = eventData.timeStamp || Date.now(); + var tmpX = mAcceleration.x; + if (w.orientation === LANDSCAPE_RIGHT) { + mAcceleration.x = -mAcceleration.y; + mAcceleration.y = tmpX; + } else if (w.orientation === LANDSCAPE_LEFT) { + mAcceleration.x = mAcceleration.y; + mAcceleration.y = -tmpX; + } else if (w.orientation === PORTRAIT_UPSIDE_DOWN) { + mAcceleration.x = -mAcceleration.x; + mAcceleration.y = -mAcceleration.y; + } + if (cc.sys.os === cc.sys.OS_ANDROID && cc.sys.browserType !== cc.sys.BROWSER_TYPE_MOBILE_QQ) { + mAcceleration.x = -mAcceleration.x; + mAcceleration.y = -mAcceleration.y; + } + }; + }), { + "../event-manager": 184, + "./CCInputManager": 243 + }], + 243: [(function (require, module, exports) { + "use strict"; + var macro = require("./CCMacro"); + var sys = require("./CCSys"); + var eventManager = require("../event-manager"); + var TOUCH_TIMEOUT = macro.TOUCH_TIMEOUT; + var _vec2 = cc.v2(); + var inputManager = { + _mousePressed: false, + _isRegisterEvent: false, + _preTouchPoint: cc.v2(0, 0), + _prevMousePoint: cc.v2(0, 0), + _preTouchPool: [], + _preTouchPoolPointer: 0, + _touches: [], + _touchesIntegerDict: {}, + _indexBitsUsed: 0, + _maxTouches: 8, + _accelEnabled: false, + _accelInterval: .2, + _accelMinus: 1, + _accelCurTime: 0, + _acceleration: null, + _accelDeviceEvent: null, + _canvasBoundingRect: { + left: 0, + top: 0, + adjustedLeft: 0, + adjustedTop: 0, + width: 0, + height: 0 + }, + _getUnUsedIndex: function _getUnUsedIndex() { + var temp = this._indexBitsUsed; + var now = cc.sys.now(); + for (var i = 0; i < this._maxTouches; i++) { + if (!(1 & temp)) { + this._indexBitsUsed |= 1 << i; + return i; + } + var touch = this._touches[i]; + if (now - touch._lastModified > TOUCH_TIMEOUT) { + this._removeUsedIndexBit(i); + delete this._touchesIntegerDict[touch.getID()]; + return i; + } + temp >>= 1; + } + return -1; + }, + _removeUsedIndexBit: function _removeUsedIndexBit(index) { + if (index < 0 || index >= this._maxTouches) return; + var temp = 1 << index; + temp = ~temp; + this._indexBitsUsed &= temp; + }, + _glView: null, + _updateCanvasBoundingRect: function _updateCanvasBoundingRect() { + var element = cc.game.canvas; + var canvasBoundingRect = this._canvasBoundingRect; + var docElem = document.documentElement; + var leftOffset = window.pageXOffset - docElem.clientLeft; + var topOffset = window.pageYOffset - docElem.clientTop; + if (element.getBoundingClientRect) { + var box = element.getBoundingClientRect(); + canvasBoundingRect.left = box.left + leftOffset; + canvasBoundingRect.top = box.top + topOffset; + canvasBoundingRect.width = box.width; + canvasBoundingRect.height = box.height; + } else if (element instanceof HTMLCanvasElement) { + canvasBoundingRect.left = leftOffset; + canvasBoundingRect.top = topOffset; + canvasBoundingRect.width = element.width; + canvasBoundingRect.height = element.height; + } else { + canvasBoundingRect.left = leftOffset; + canvasBoundingRect.top = topOffset; + canvasBoundingRect.width = parseInt(element.style.width); + canvasBoundingRect.height = parseInt(element.style.height); + } + }, + handleTouchesBegin: function handleTouchesBegin(touches) { + var selTouch, index, curTouch, touchID, handleTouches = [], locTouchIntDict = this._touchesIntegerDict, now = sys.now(); + for (var i = 0, len = touches.length; i < len; i++) { + selTouch = touches[i]; + touchID = selTouch.getID(); + index = locTouchIntDict[touchID]; + if (null == index) { + var unusedIndex = this._getUnUsedIndex(); + if (-1 === unusedIndex) { + cc.logID(2300, unusedIndex); + continue; + } + curTouch = this._touches[unusedIndex] = new cc.Touch(selTouch._point.x, selTouch._point.y, selTouch.getID()); + curTouch._lastModified = now; + curTouch._setPrevPoint(selTouch._prevPoint); + locTouchIntDict[touchID] = unusedIndex; + handleTouches.push(curTouch); + } + } + if (handleTouches.length > 0) { + this._glView._convertTouchesWithScale(handleTouches); + var touchEvent = new cc.Event.EventTouch(handleTouches); + touchEvent._eventCode = cc.Event.EventTouch.BEGAN; + eventManager.dispatchEvent(touchEvent); + } + }, + handleTouchesMove: function handleTouchesMove(touches) { + var selTouch, index, touchID, handleTouches = [], locTouches = this._touches, now = sys.now(); + for (var i = 0, len = touches.length; i < len; i++) { + selTouch = touches[i]; + touchID = selTouch.getID(); + index = this._touchesIntegerDict[touchID]; + if (null == index) continue; + if (locTouches[index]) { + locTouches[index]._setPoint(selTouch._point); + locTouches[index]._setPrevPoint(selTouch._prevPoint); + locTouches[index]._lastModified = now; + handleTouches.push(locTouches[index]); + } + } + if (handleTouches.length > 0) { + this._glView._convertTouchesWithScale(handleTouches); + var touchEvent = new cc.Event.EventTouch(handleTouches); + touchEvent._eventCode = cc.Event.EventTouch.MOVED; + eventManager.dispatchEvent(touchEvent); + } + }, + handleTouchesEnd: function handleTouchesEnd(touches) { + var handleTouches = this.getSetOfTouchesEndOrCancel(touches); + if (handleTouches.length > 0) { + this._glView._convertTouchesWithScale(handleTouches); + var touchEvent = new cc.Event.EventTouch(handleTouches); + touchEvent._eventCode = cc.Event.EventTouch.ENDED; + eventManager.dispatchEvent(touchEvent); + } + this._preTouchPool.length = 0; + }, + handleTouchesCancel: function handleTouchesCancel(touches) { + var handleTouches = this.getSetOfTouchesEndOrCancel(touches); + if (handleTouches.length > 0) { + this._glView._convertTouchesWithScale(handleTouches); + var touchEvent = new cc.Event.EventTouch(handleTouches); + touchEvent._eventCode = cc.Event.EventTouch.CANCELED; + eventManager.dispatchEvent(touchEvent); + } + this._preTouchPool.length = 0; + }, + getSetOfTouchesEndOrCancel: function getSetOfTouchesEndOrCancel(touches) { + var selTouch, index, touchID, handleTouches = [], locTouches = this._touches, locTouchesIntDict = this._touchesIntegerDict; + for (var i = 0, len = touches.length; i < len; i++) { + selTouch = touches[i]; + touchID = selTouch.getID(); + index = locTouchesIntDict[touchID]; + if (null == index) continue; + if (locTouches[index]) { + locTouches[index]._setPoint(selTouch._point); + locTouches[index]._setPrevPoint(selTouch._prevPoint); + handleTouches.push(locTouches[index]); + this._removeUsedIndexBit(index); + delete locTouchesIntDict[touchID]; + } + } + return handleTouches; + }, + getPreTouch: function getPreTouch(touch) { + var preTouch = null; + var locPreTouchPool = this._preTouchPool; + var id = touch.getID(); + for (var i = locPreTouchPool.length - 1; i >= 0; i--) if (locPreTouchPool[i].getID() === id) { + preTouch = locPreTouchPool[i]; + break; + } + preTouch || (preTouch = touch); + return preTouch; + }, + setPreTouch: function setPreTouch(touch) { + var find = false; + var locPreTouchPool = this._preTouchPool; + var id = touch.getID(); + for (var i = locPreTouchPool.length - 1; i >= 0; i--) if (locPreTouchPool[i].getID() === id) { + locPreTouchPool[i] = touch; + find = true; + break; + } + if (!find) if (locPreTouchPool.length <= 50) locPreTouchPool.push(touch); else { + locPreTouchPool[this._preTouchPoolPointer] = touch; + this._preTouchPoolPointer = (this._preTouchPoolPointer + 1) % 50; + } + }, + getTouchByXY: function getTouchByXY(tx, ty, pos) { + var locPreTouch = this._preTouchPoint; + var location = this._glView.convertToLocationInView(tx, ty, pos); + var touch = new cc.Touch(location.x, location.y, 0); + touch._setPrevPoint(locPreTouch.x, locPreTouch.y); + locPreTouch.x = location.x; + locPreTouch.y = location.y; + return touch; + }, + getMouseEvent: function getMouseEvent(location, pos, eventType) { + var locPreMouse = this._prevMousePoint; + var mouseEvent = new cc.Event.EventMouse(eventType); + mouseEvent._setPrevCursor(locPreMouse.x, locPreMouse.y); + locPreMouse.x = location.x; + locPreMouse.y = location.y; + this._glView._convertMouseToLocationInView(locPreMouse, pos); + mouseEvent.setLocation(locPreMouse.x, locPreMouse.y); + return mouseEvent; + }, + getPointByEvent: function getPointByEvent(event, pos) { + cc.sys.browserType !== cc.sys.BROWSER_TYPE_QQ && cc.sys.browserType !== cc.sys.BROWSER_TYPE_UC && cc.sys.browserType !== cc.sys.BROWSER_TYPE_SAFARI || this._updateCanvasBoundingRect(); + if (null != event.pageX) return { + x: event.pageX, + y: event.pageY + }; + pos.left -= document.body.scrollLeft; + pos.top -= document.body.scrollTop; + return { + x: event.clientX, + y: event.clientY + }; + }, + getTouchesByEvent: function getTouchesByEvent(event, pos) { + var touchArr = [], locView = this._glView; + var touch_event, touch, preLocation; + var locPreTouch = this._preTouchPoint; + var length = event.changedTouches.length; + for (var i = 0; i < length; i++) { + touch_event = event.changedTouches[i]; + if (touch_event) { + var location = void 0; + location = sys.BROWSER_TYPE_FIREFOX === sys.browserType ? locView.convertToLocationInView(touch_event.pageX, touch_event.pageY, pos, _vec2) : locView.convertToLocationInView(touch_event.clientX, touch_event.clientY, pos, _vec2); + if (null != touch_event.identifier) { + touch = new cc.Touch(location.x, location.y, touch_event.identifier); + preLocation = this.getPreTouch(touch).getLocation(); + touch._setPrevPoint(preLocation.x, preLocation.y); + this.setPreTouch(touch); + } else { + touch = new cc.Touch(location.x, location.y); + touch._setPrevPoint(locPreTouch.x, locPreTouch.y); + } + locPreTouch.x = location.x; + locPreTouch.y = location.y; + touchArr.push(touch); + } + } + return touchArr; + }, + registerSystemEvent: function registerSystemEvent(element) { + if (this._isRegisterEvent) return; + this._glView = cc.view; + var selfPointer = this; + var canvasBoundingRect = this._canvasBoundingRect; + window.addEventListener("resize", this._updateCanvasBoundingRect.bind(this)); + var prohibition = sys.isMobile; + var supportMouse = "mouse" in sys.capabilities; + var supportTouches = "touches" in sys.capabilities; + if (supportMouse) { + if (!prohibition) { + window.addEventListener("mousedown", (function () { + selfPointer._mousePressed = true; + }), false); + window.addEventListener("mouseup", (function (event) { + if (!selfPointer._mousePressed) return; + selfPointer._mousePressed = false; + var location = selfPointer.getPointByEvent(event, canvasBoundingRect); + if (!cc.rect(canvasBoundingRect.left, canvasBoundingRect.top, canvasBoundingRect.width, canvasBoundingRect.height).contains(location)) { + selfPointer.handleTouchesEnd([selfPointer.getTouchByXY(location.x, location.y, canvasBoundingRect)]); + var mouseEvent = selfPointer.getMouseEvent(location, canvasBoundingRect, cc.Event.EventMouse.UP); + mouseEvent.setButton(event.button); + eventManager.dispatchEvent(mouseEvent); + } + }), false); + } + var EventMouse = cc.Event.EventMouse; + var _mouseEventsOnElement = [!prohibition && ["mousedown", EventMouse.DOWN, function (event, mouseEvent, location, canvasBoundingRect) { + selfPointer._mousePressed = true; + selfPointer.handleTouchesBegin([selfPointer.getTouchByXY(location.x, location.y, canvasBoundingRect)]); + element.focus(); + }], !prohibition && ["mouseup", EventMouse.UP, function (event, mouseEvent, location, canvasBoundingRect) { + selfPointer._mousePressed = false; + selfPointer.handleTouchesEnd([selfPointer.getTouchByXY(location.x, location.y, canvasBoundingRect)]); + }], !prohibition && ["mousemove", EventMouse.MOVE, function (event, mouseEvent, location, canvasBoundingRect) { + selfPointer.handleTouchesMove([selfPointer.getTouchByXY(location.x, location.y, canvasBoundingRect)]); + selfPointer._mousePressed || mouseEvent.setButton(null); + }], ["mousewheel", EventMouse.SCROLL, function (event, mouseEvent) { + mouseEvent.setScrollData(0, event.wheelDelta); + }], ["DOMMouseScroll", EventMouse.SCROLL, function (event, mouseEvent) { + mouseEvent.setScrollData(0, -120 * event.detail); + }]]; + for (var i = 0; i < _mouseEventsOnElement.length; ++i) { + var entry = _mouseEventsOnElement[i]; + entry && (function () { + var name = entry[0]; + var type = entry[1]; + var handler = entry[2]; + element.addEventListener(name, (function (event) { + var location = selfPointer.getPointByEvent(event, canvasBoundingRect); + var mouseEvent = selfPointer.getMouseEvent(location, canvasBoundingRect, type); + mouseEvent.setButton(event.button); + handler(event, mouseEvent, location, canvasBoundingRect); + eventManager.dispatchEvent(mouseEvent); + event.stopPropagation(); + event.preventDefault(); + }), false); + })(); + } + } + if (window.navigator.msPointerEnabled) { + var _pointerEventsMap = { + MSPointerDown: selfPointer.handleTouchesBegin, + MSPointerMove: selfPointer.handleTouchesMove, + MSPointerUp: selfPointer.handleTouchesEnd, + MSPointerCancel: selfPointer.handleTouchesCancel + }; + var _loop = function _loop(eventName) { + var touchEvent = _pointerEventsMap[eventName]; + element.addEventListener(eventName, (function (event) { + var documentElement = document.documentElement; + canvasBoundingRect.adjustedLeft = canvasBoundingRect.left - documentElement.scrollLeft; + canvasBoundingRect.adjustedTop = canvasBoundingRect.top - documentElement.scrollTop; + touchEvent.call(selfPointer, [selfPointer.getTouchByXY(event.clientX, event.clientY, canvasBoundingRect)]); + event.stopPropagation(); + }), false); + }; + for (var eventName in _pointerEventsMap) _loop(eventName); + } + if (supportTouches) { + var _touchEventsMap = { + touchstart: function touchstart(touchesToHandle) { + selfPointer.handleTouchesBegin(touchesToHandle); + element.focus(); + }, + touchmove: function touchmove(touchesToHandle) { + selfPointer.handleTouchesMove(touchesToHandle); + }, + touchend: function touchend(touchesToHandle) { + selfPointer.handleTouchesEnd(touchesToHandle); + }, + touchcancel: function touchcancel(touchesToHandle) { + selfPointer.handleTouchesCancel(touchesToHandle); + } + }; + var registerTouchEvent = function registerTouchEvent(eventName) { + var handler = _touchEventsMap[eventName]; + element.addEventListener(eventName, (function (event) { + if (!event.changedTouches) return; + var body = document.body; + canvasBoundingRect.adjustedLeft = canvasBoundingRect.left - (body.scrollLeft || window.scrollX || 0); + canvasBoundingRect.adjustedTop = canvasBoundingRect.top - (body.scrollTop || window.scrollY || 0); + handler(selfPointer.getTouchesByEvent(event, canvasBoundingRect)); + event.stopPropagation(); + event.preventDefault(); + }), false); + }; + for (var _eventName in _touchEventsMap) registerTouchEvent(_eventName); + } + this._registerKeyboardEvent(); + this._isRegisterEvent = true; + }, + _registerKeyboardEvent: function _registerKeyboardEvent() { }, + _registerAccelerometerEvent: function _registerAccelerometerEvent() { }, + update: function update(dt) { + if (this._accelCurTime > this._accelInterval) { + this._accelCurTime -= this._accelInterval; + eventManager.dispatchEvent(new cc.Event.EventAcceleration(this._acceleration)); + } + this._accelCurTime += dt; + } + }; + module.exports = cc.internal.inputManager = inputManager; + }), { + "../event-manager": 184, + "./CCMacro": 244, + "./CCSys": 248 + }], + 244: [(function (require, module, exports) { + "use strict"; + cc.macro = { + RAD: Math.PI / 180, + DEG: 180 / Math.PI, + REPEAT_FOREVER: Number.MAX_VALUE - 1, + FLT_EPSILON: 1.192092896e-7, + MIN_ZINDEX: -Math.pow(2, 15), + MAX_ZINDEX: Math.pow(2, 15) - 1, + ONE: 1, + ZERO: 0, + SRC_ALPHA: 770, + SRC_ALPHA_SATURATE: 776, + SRC_COLOR: 768, + DST_ALPHA: 772, + DST_COLOR: 774, + ONE_MINUS_SRC_ALPHA: 771, + ONE_MINUS_SRC_COLOR: 769, + ONE_MINUS_DST_ALPHA: 773, + ONE_MINUS_DST_COLOR: 775, + ONE_MINUS_CONSTANT_ALPHA: 32772, + ONE_MINUS_CONSTANT_COLOR: 32770, + ORIENTATION_PORTRAIT: 1, + ORIENTATION_LANDSCAPE: 2, + ORIENTATION_AUTO: 3, + DENSITYDPI_DEVICE: "device-dpi", + DENSITYDPI_HIGH: "high-dpi", + DENSITYDPI_MEDIUM: "medium-dpi", + DENSITYDPI_LOW: "low-dpi", + FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX: true, + DIRECTOR_STATS_POSITION: cc.v2(0, 0), + ENABLE_STACKABLE_ACTIONS: true, + TOUCH_TIMEOUT: 5e3, + BATCH_VERTEX_COUNT: 2e4, + ENABLE_TILEDMAP_CULLING: true, + ENABLE_TRANSPARENT_CANVAS: false, + ENABLE_WEBGL_ANTIALIAS: false, + ENABLE_CULLING: false, + CLEANUP_IMAGE_CACHE: false, + SHOW_MESH_WIREFRAME: false, + SHOW_MESH_NORMAL: false, + ENABLE_MULTI_TOUCH: true, + ALLOW_IMAGE_BITMAP: !cc.sys.isMobile, + ENABLE_NATIVE_TTF_RENDERER: true + }; + Object.defineProperty(cc.macro, "ROTATE_ACTION_CCW", { + set: function set(value) { + cc.RotateTo && cc.RotateBy && (cc.RotateTo._reverse = cc.RotateBy._reverse = value); + } + }); + var SUPPORT_TEXTURE_FORMATS = [".pkm", ".pvr", ".webp", ".jpg", ".jpeg", ".bmp", ".png"]; + cc.macro.SUPPORT_TEXTURE_FORMATS = SUPPORT_TEXTURE_FORMATS; + cc.macro.KEY = { + none: 0, + back: 6, + menu: 18, + backspace: 8, + tab: 9, + enter: 13, + shift: 16, + ctrl: 17, + alt: 18, + pause: 19, + capslock: 20, + escape: 27, + space: 32, + pageup: 33, + pagedown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40, + select: 41, + insert: 45, + Delete: 46, + 0: 48, + 1: 49, + 2: 50, + 3: 51, + 4: 52, + 5: 53, + 6: 54, + 7: 55, + 8: 56, + 9: 57, + a: 65, + b: 66, + c: 67, + d: 68, + e: 69, + f: 70, + g: 71, + h: 72, + i: 73, + j: 74, + k: 75, + l: 76, + m: 77, + n: 78, + o: 79, + p: 80, + q: 81, + r: 82, + s: 83, + t: 84, + u: 85, + v: 86, + w: 87, + x: 88, + y: 89, + z: 90, + num0: 96, + num1: 97, + num2: 98, + num3: 99, + num4: 100, + num5: 101, + num6: 102, + num7: 103, + num8: 104, + num9: 105, + "*": 106, + "+": 107, + "-": 109, + numdel: 110, + "/": 111, + f1: 112, + f2: 113, + f3: 114, + f4: 115, + f5: 116, + f6: 117, + f7: 118, + f8: 119, + f9: 120, + f10: 121, + f11: 122, + f12: 123, + numlock: 144, + scrolllock: 145, + ";": 186, + semicolon: 186, + equal: 187, + "=": 187, + ",": 188, + comma: 188, + dash: 189, + ".": 190, + period: 190, + forwardslash: 191, + grave: 192, + "[": 219, + openbracket: 219, + backslash: 220, + "]": 221, + closebracket: 221, + quote: 222, + dpadLeft: 1e3, + dpadRight: 1001, + dpadUp: 1003, + dpadDown: 1004, + dpadCenter: 1005 + }; + cc.macro.ImageFormat = cc.Enum({ + JPG: 0, + PNG: 1, + TIFF: 2, + WEBP: 3, + PVR: 4, + ETC: 5, + S3TC: 6, + ATITC: 7, + TGA: 8, + RAWDATA: 9, + UNKNOWN: 10 + }); + cc.macro.BlendFactor = cc.Enum({ + ONE: 1, + ZERO: 0, + SRC_ALPHA: 770, + SRC_COLOR: 768, + DST_ALPHA: 772, + DST_COLOR: 774, + ONE_MINUS_SRC_ALPHA: 771, + ONE_MINUS_SRC_COLOR: 769, + ONE_MINUS_DST_ALPHA: 773, + ONE_MINUS_DST_COLOR: 775 + }); + cc.macro.TextAlignment = cc.Enum({ + LEFT: 0, + CENTER: 1, + RIGHT: 2 + }); + cc.macro.VerticalTextAlignment = cc.Enum({ + TOP: 0, + CENTER: 1, + BOTTOM: 2 + }); + module.exports = cc.macro; + }), {}], + 245: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + var CCClass = require("./CCClass"); + var Destroyed = 1; + var RealDestroyed = 2; + var ToDestroy = 4; + var DontSave = 8; + var EditorOnly = 16; + var Dirty = 32; + var DontDestroy = 64; + var Destroying = 128; + var Deactivating = 256; + var LockedInEditor = 512; + var HideInHierarchy = 1024; + var IsOnEnableCalled = 2048; + var IsEditorOnEnableCalled = 4096; + var IsPreloadStarted = 8192; + var IsOnLoadCalled = 16384; + var IsOnLoadStarted = 32768; + var IsStartCalled = 65536; + var IsRotationLocked = 1 << 17; + var IsScaleLocked = 1 << 18; + var IsAnchorLocked = 1 << 19; + var IsSizeLocked = 1 << 20; + var IsPositionLocked = 1 << 21; + var PersistentMask = ~(ToDestroy | Dirty | Destroying | DontDestroy | Deactivating | IsPreloadStarted | IsOnLoadStarted | IsOnLoadCalled | IsStartCalled | IsOnEnableCalled | IsEditorOnEnableCalled | IsRotationLocked | IsScaleLocked | IsAnchorLocked | IsSizeLocked | IsPositionLocked); + function CCObject() { + this._name = ""; + this._objFlags = 0; + } + CCClass.fastDefine("cc.Object", CCObject, { + _name: "", + _objFlags: 0 + }); + js.value(CCObject, "Flags", { + Destroyed: Destroyed, + DontSave: DontSave, + EditorOnly: EditorOnly, + Dirty: Dirty, + DontDestroy: DontDestroy, + PersistentMask: PersistentMask, + Destroying: Destroying, + Deactivating: Deactivating, + LockedInEditor: LockedInEditor, + HideInHierarchy: HideInHierarchy, + IsPreloadStarted: IsPreloadStarted, + IsOnLoadStarted: IsOnLoadStarted, + IsOnLoadCalled: IsOnLoadCalled, + IsOnEnableCalled: IsOnEnableCalled, + IsStartCalled: IsStartCalled, + IsEditorOnEnableCalled: IsEditorOnEnableCalled, + IsPositionLocked: IsPositionLocked, + IsRotationLocked: IsRotationLocked, + IsScaleLocked: IsScaleLocked, + IsAnchorLocked: IsAnchorLocked, + IsSizeLocked: IsSizeLocked + }); + var objectsToDestroy = []; + function deferredDestroy() { + var deleteCount = objectsToDestroy.length; + for (var i = 0; i < deleteCount; ++i) { + var obj = objectsToDestroy[i]; + obj._objFlags & Destroyed || obj._destroyImmediate(); + } + deleteCount === objectsToDestroy.length ? objectsToDestroy.length = 0 : objectsToDestroy.splice(0, deleteCount); + false; + } + js.value(CCObject, "_deferredDestroy", deferredDestroy); + false; + var prototype = CCObject.prototype; + js.getset(prototype, "name", (function () { + return this._name; + }), (function (value) { + this._name = value; + }), true); + js.get(prototype, "isValid", (function () { + return !(this._objFlags & Destroyed); + }), true); + false, false; + var deferredDestroyTimer = null; + prototype.destroy = function () { + if (this._objFlags & Destroyed) { + cc.warnID(5e3); + return false; + } + if (this._objFlags & ToDestroy) return false; + this._objFlags |= ToDestroy; + objectsToDestroy.push(this); + false; + return true; + }; + false, false; + function compileDestruct(obj, ctor) { + var shouldSkipId = obj instanceof cc._BaseNode || obj instanceof cc.Component; + var idToSkip = shouldSkipId ? "_id" : null; + var key, propsToReset = {}; + for (key in obj) if (obj.hasOwnProperty(key)) { + if (key === idToSkip) continue; + switch (typeof obj[key]) { + case "string": + propsToReset[key] = ""; + break; + + case "object": + case "function": + propsToReset[key] = null; + } + } + if (cc.Class._isCCClass(ctor)) { + var attrs = cc.Class.Attr.getClassAttrs(ctor); + var propList = ctor.__props__; + for (var i = 0; i < propList.length; i++) { + key = propList[i]; + var attrKey = key + cc.Class.Attr.DELIMETER + "default"; + if (attrKey in attrs) { + if (shouldSkipId && "_id" === key) continue; + switch (typeof attrs[attrKey]) { + case "string": + propsToReset[key] = ""; + break; + + case "object": + case "function": + propsToReset[key] = null; + break; + + case "undefined": + propsToReset[key] = void 0; + } + } + } + } + true; + var func = ""; + for (key in propsToReset) { + var statement; + statement = CCClass.IDENTIFIER_RE.test(key) ? "o." + key + "=" : "o[" + CCClass.escapeForJS(key) + "]="; + var val = propsToReset[key]; + "" === val && (val = '""'); + func += statement + val + ";\n"; + } + return Function("o", func); + } + prototype._destruct = function () { + var ctor = this.constructor; + var destruct = ctor.__destruct__; + if (!destruct) { + destruct = compileDestruct(this, ctor); + js.value(ctor, "__destruct__", destruct, true); + } + destruct(this); + }; + prototype._onPreDestroy = null; + prototype._destroyImmediate = function () { + if (this._objFlags & Destroyed) { + cc.errorID(5e3); + return; + } + this._onPreDestroy && this._onPreDestroy(); + true; + this._destruct(); + this._objFlags |= Destroyed; + }; + false; + prototype._deserialize = null; + cc.isValid = function (value, strictMode) { + return "object" === typeof value ? !!value && !(value._objFlags & (strictMode ? Destroyed | ToDestroy : Destroyed)) : "undefined" !== typeof value; + }; + false, false; + cc.Object = module.exports = CCObject; + }), { + "./CCClass": 239, + "./js": 260 + }], + 246: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + cc.SAXParser = function () { + if (true, window.DOMParser) { + this._isSupportDOMParser = true; + this._parser = new DOMParser(); + } else { + this._isSupportDOMParser = false; + this._parser = null; + } + }; + cc.SAXParser.prototype = { + constructor: cc.SAXParser, + parse: function parse(xmlTxt) { + return this._parseXML(xmlTxt); + }, + _parseXML: function _parseXML(textxml) { + var xmlDoc; + if (this._isSupportDOMParser) xmlDoc = this._parser.parseFromString(textxml, "text/xml"); else { + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async = "false"; + xmlDoc.loadXML(textxml); + } + return xmlDoc; + } + }; + cc.PlistParser = function () { + cc.SAXParser.call(this); + }; + js.extend(cc.PlistParser, cc.SAXParser); + js.mixin(cc.PlistParser.prototype, { + parse: function parse(xmlTxt) { + var xmlDoc = this._parseXML(xmlTxt); + var plist = xmlDoc.documentElement; + if ("plist" !== plist.tagName) { + cc.warnID(5100); + return {}; + } + var node = null; + for (var i = 0, len = plist.childNodes.length; i < len; i++) { + node = plist.childNodes[i]; + if (1 === node.nodeType) break; + } + xmlDoc = null; + return this._parseNode(node); + }, + _parseNode: function _parseNode(node) { + var data = null, tagName = node.tagName; + if ("dict" === tagName) data = this._parseDict(node); else if ("array" === tagName) data = this._parseArray(node); else if ("string" === tagName) if (1 === node.childNodes.length) data = node.firstChild.nodeValue; else { + data = ""; + for (var i = 0; i < node.childNodes.length; i++) data += node.childNodes[i].nodeValue; + } else "false" === tagName ? data = false : "true" === tagName ? data = true : "real" === tagName ? data = parseFloat(node.firstChild.nodeValue) : "integer" === tagName && (data = parseInt(node.firstChild.nodeValue, 10)); + return data; + }, + _parseArray: function _parseArray(node) { + var data = []; + for (var i = 0, len = node.childNodes.length; i < len; i++) { + var child = node.childNodes[i]; + if (1 !== child.nodeType) continue; + data.push(this._parseNode(child)); + } + return data; + }, + _parseDict: function _parseDict(node) { + var data = {}; + var key = null; + for (var i = 0, len = node.childNodes.length; i < len; i++) { + var child = node.childNodes[i]; + if (1 !== child.nodeType) continue; + "key" === child.tagName ? key = child.firstChild.nodeValue : data[key] = this._parseNode(child); + } + return data; + } + }); + cc.saxParser = new cc.SAXParser(); + cc.plistParser = new cc.PlistParser(); + module.exports = { + saxParser: cc.saxParser, + plistParser: cc.plistParser + }; + }), { + "../platform/js": 260 + }], + 247: [(function (require, module, exports) { + "use strict"; + cc.screen = { + _supportsFullScreen: false, + _onfullscreenchange: null, + _onfullscreenerror: null, + _preOnFullScreenChange: null, + _preOnFullScreenError: null, + _preOnTouch: null, + _touchEvent: "", + _fn: null, + _fnMap: [["requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenEnabled", "fullscreenElement", "fullscreenerror"], ["requestFullScreen", "exitFullScreen", "fullScreenchange", "fullScreenEnabled", "fullScreenElement", "fullscreenerror"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitIsFullScreen", "webkitCurrentFullScreenElement", "webkitfullscreenerror"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozfullscreenchange", "mozFullScreen", "mozFullScreenElement", "mozfullscreenerror"], ["msRequestFullscreen", "msExitFullscreen", "MSFullscreenChange", "msFullscreenEnabled", "msFullscreenElement", "msfullscreenerror"]], + init: function init() { + this._fn = {}; + var i, l, val, map = this._fnMap, valL; + for (i = 0, l = map.length; i < l; i++) { + val = map[i]; + if (val && "undefined" !== typeof document[val[1]]) { + for (i = 0, valL = val.length; i < valL; i++) this._fn[map[0][i]] = val[i]; + break; + } + } + this._supportsFullScreen = void 0 !== this._fn.requestFullscreen; + this._touchEvent = "ontouchend" in window ? "touchend" : "mousedown"; + }, + fullScreen: function fullScreen() { + return !!this._supportsFullScreen && !!(document[this._fn.fullscreenElement] || document[this._fn.webkitFullscreenElement] || document[this._fn.mozFullScreenElement]); + }, + requestFullScreen: function requestFullScreen(element, onFullScreenChange, onFullScreenError) { + if (element && "video" === element.tagName.toLowerCase()) { + if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && element.readyState > 0) { + element.webkitEnterFullscreen && element.webkitEnterFullscreen(); + return; + } + element.setAttribute("x5-video-player-fullscreen", "true"); + } + if (!this._supportsFullScreen) return; + element = element || document.documentElement; + if (onFullScreenChange) { + var eventName = this._fn.fullscreenchange; + this._onfullscreenchange && document.removeEventListener(eventName, this._onfullscreenchange); + this._onfullscreenchange = onFullScreenChange; + document.addEventListener(eventName, onFullScreenChange, false); + } + if (onFullScreenError) { + var _eventName = this._fn.fullscreenerror; + this._onfullscreenerror && document.removeEventListener(_eventName, this._onfullscreenerror); + this._onfullscreenerror = onFullScreenError; + document.addEventListener(_eventName, onFullScreenError, { + once: true + }); + } + var requestPromise = element[this._fn.requestFullscreen](); + "undefined" === typeof document[this._fn.fullscreenerror] && window.Promise && requestPromise instanceof Promise && requestPromise["catch"]((function (err) { })); + }, + exitFullScreen: function exitFullScreen(element) { + if (element && "video" === element.tagName.toLowerCase()) { + if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser) { + element.webkitExitFullscreen && element.webkitExitFullscreen(); + return; + } + element.setAttribute("x5-video-player-fullscreen", "false"); + } + return !this._supportsFullScreen || document[this._fn.exitFullscreen](); + }, + autoFullScreen: function autoFullScreen(element, onFullScreenChange) { + element = element || document.body; + this._ensureFullScreen(element, onFullScreenChange); + this.requestFullScreen(element, onFullScreenChange); + }, + disableAutoFullScreen: function disableAutoFullScreen(element) { + var touchTarget = cc.game.canvas || element; + var touchEventName = this._touchEvent; + if (this._preOnTouch) { + touchTarget.removeEventListener(touchEventName, this._preOnTouch); + this._preOnTouch = null; + } + }, + _ensureFullScreen: function _ensureFullScreen(element, onFullScreenChange) { + var self = this; + var touchTarget = cc.game.canvas || element; + var fullScreenErrorEventName = this._fn.fullscreenerror; + var touchEventName = this._touchEvent; + function onFullScreenError() { + self._preOnFullScreenError = null; + function onTouch() { + self._preOnTouch = null; + self.requestFullScreen(element, onFullScreenChange); + } + self._preOnTouch && touchTarget.removeEventListener(touchEventName, self._preOnTouch); + self._preOnTouch = onTouch; + touchTarget.addEventListener(touchEventName, self._preOnTouch, { + once: true + }); + } + this._preOnFullScreenError && element.removeEventListener(fullScreenErrorEventName, this._preOnFullScreenError); + this._preOnFullScreenError = onFullScreenError; + element.addEventListener(fullScreenErrorEventName, onFullScreenError, { + once: true + }); + } + }; + cc.screen.init(); + }), {}], + 248: [(function (require, module, exports) { + "use strict"; + var settingPlatform; + true; + settingPlatform = window._CCSettings ? _CCSettings.platform : void 0; + var isVivoGame = "qgame" === settingPlatform; + var isOppoGame = "quickgame" === settingPlatform; + var isHuaweiGame = "huawei" === settingPlatform; + var isJKWGame = "jkw-game" === settingPlatform; + var isQttGame = "qtt-game" === settingPlatform; + var isLinkSure = "link-sure" === settingPlatform; + var _global = "undefined" === typeof window ? global : window; + function initSys() { + cc.sys = {}; + var sys = cc.sys; + sys.LANGUAGE_ENGLISH = "en"; + sys.LANGUAGE_CHINESE = "zh"; + sys.LANGUAGE_FRENCH = "fr"; + sys.LANGUAGE_ITALIAN = "it"; + sys.LANGUAGE_GERMAN = "de"; + sys.LANGUAGE_SPANISH = "es"; + sys.LANGUAGE_DUTCH = "du"; + sys.LANGUAGE_RUSSIAN = "ru"; + sys.LANGUAGE_KOREAN = "ko"; + sys.LANGUAGE_JAPANESE = "ja"; + sys.LANGUAGE_HUNGARIAN = "hu"; + sys.LANGUAGE_PORTUGUESE = "pt"; + sys.LANGUAGE_ARABIC = "ar"; + sys.LANGUAGE_NORWEGIAN = "no"; + sys.LANGUAGE_POLISH = "pl"; + sys.LANGUAGE_TURKISH = "tr"; + sys.LANGUAGE_UKRAINIAN = "uk"; + sys.LANGUAGE_ROMANIAN = "ro"; + sys.LANGUAGE_BULGARIAN = "bg"; + sys.LANGUAGE_UNKNOWN = "unknown"; + sys.OS_IOS = "iOS"; + sys.OS_ANDROID = "Android"; + sys.OS_WINDOWS = "Windows"; + sys.OS_MARMALADE = "Marmalade"; + sys.OS_LINUX = "Linux"; + sys.OS_BADA = "Bada"; + sys.OS_BLACKBERRY = "Blackberry"; + sys.OS_OSX = "OS X"; + sys.OS_WP8 = "WP8"; + sys.OS_WINRT = "WINRT"; + sys.OS_UNKNOWN = "Unknown"; + sys.UNKNOWN = -1; + sys.WIN32 = 0; + sys.LINUX = 1; + sys.MACOS = 2; + sys.ANDROID = 3; + sys.IPHONE = 4; + sys.IPAD = 5; + sys.BLACKBERRY = 6; + sys.NACL = 7; + sys.EMSCRIPTEN = 8; + sys.TIZEN = 9; + sys.WINRT = 10; + sys.WP8 = 11; + sys.MOBILE_BROWSER = 100; + sys.DESKTOP_BROWSER = 101; + sys.EDITOR_PAGE = 102; + sys.EDITOR_CORE = 103; + sys.WECHAT_GAME = 104; + sys.QQ_PLAY = 105; + sys.FB_PLAYABLE_ADS = 106; + sys.BAIDU_GAME = 107; + sys.VIVO_GAME = 108; + sys.OPPO_GAME = 109; + sys.HUAWEI_GAME = 110; + sys.XIAOMI_GAME = 111; + sys.JKW_GAME = 112; + sys.ALIPAY_GAME = 113; + sys.WECHAT_GAME_SUB = 114; + sys.BAIDU_GAME_SUB = 115; + sys.QTT_GAME = 116; + sys.BYTEDANCE_GAME = 117; + sys.BYTEDANCE_GAME_SUB = 118; + sys.LINKSURE = 119; + sys.BROWSER_TYPE_WECHAT = "wechat"; + sys.BROWSER_TYPE_ANDROID = "androidbrowser"; + sys.BROWSER_TYPE_IE = "ie"; + sys.BROWSER_TYPE_EDGE = "edge"; + sys.BROWSER_TYPE_QQ = "qqbrowser"; + sys.BROWSER_TYPE_MOBILE_QQ = "mqqbrowser"; + sys.BROWSER_TYPE_UC = "ucbrowser"; + sys.BROWSER_TYPE_UCBS = "ucbs"; + sys.BROWSER_TYPE_360 = "360browser"; + sys.BROWSER_TYPE_BAIDU_APP = "baiduboxapp"; + sys.BROWSER_TYPE_BAIDU = "baidubrowser"; + sys.BROWSER_TYPE_MAXTHON = "maxthon"; + sys.BROWSER_TYPE_OPERA = "opera"; + sys.BROWSER_TYPE_OUPENG = "oupeng"; + sys.BROWSER_TYPE_MIUI = "miuibrowser"; + sys.BROWSER_TYPE_FIREFOX = "firefox"; + sys.BROWSER_TYPE_SAFARI = "safari"; + sys.BROWSER_TYPE_CHROME = "chrome"; + sys.BROWSER_TYPE_LIEBAO = "liebao"; + sys.BROWSER_TYPE_QZONE = "qzone"; + sys.BROWSER_TYPE_SOUGOU = "sogou"; + sys.BROWSER_TYPE_HUAWEI = "huawei"; + sys.BROWSER_TYPE_UNKNOWN = "unknown"; + sys.isNative = (false, false); + sys.isBrowser = "object" === typeof window && "object" === typeof document && true; + sys.glExtension = function (name) { + return !!cc.renderer.device.ext(name); + }; + sys.getMaxJointMatrixSize = function () { + if (!sys._maxJointMatrixSize) { + var JOINT_MATRICES_SIZE = 50; + var LEFT_UNIFORM_SIZE = 10; + var gl = cc.game._renderContext; + var maxUniforms = Math.floor(gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS) / 4) - LEFT_UNIFORM_SIZE; + sys._maxJointMatrixSize = maxUniforms < JOINT_MATRICES_SIZE ? 0 : JOINT_MATRICES_SIZE; + } + return sys._maxJointMatrixSize; + }; + sys.getSafeAreaRect = function () { + var visibleSize = cc.view.getVisibleSize(); + return cc.rect(0, 0, visibleSize.width, visibleSize.height); + }; + if (_global.__globalAdapter && _global.__globalAdapter.adaptSys) _global.__globalAdapter.adaptSys(sys); else { + false; + var platform; + var languageCode; + var w; + var h; + var ratio; + var capabilities; + false, false; + var win = window, nav = win.navigator, doc = document, docEle = doc.documentElement; + var ua = nav.userAgent.toLowerCase(); + false; + sys.isMobile = /mobile|android|iphone|ipad/.test(ua); + "undefined" !== typeof FbPlayableAd ? sys.platform = sys.FB_PLAYABLE_ADS : sys.platform = sys.isMobile ? sys.MOBILE_BROWSER : sys.DESKTOP_BROWSER; + var currLanguage = nav.language; + currLanguage = currLanguage || nav.browserLanguage; + sys.languageCode = currLanguage.toLowerCase(); + currLanguage = currLanguage ? currLanguage.split("-")[0] : sys.LANGUAGE_ENGLISH; + sys.language = currLanguage; + var isAndroid = false, iOS = false, osVersion = "", osMainVersion = 0; + var uaResult = /android\s*(\d+(?:\.\d+)*)/i.exec(ua) || /android\s*(\d+(?:\.\d+)*)/i.exec(nav.platform); + if (uaResult) { + isAndroid = true; + osVersion = uaResult[1] || ""; + osMainVersion = parseInt(osVersion) || 0; + } + uaResult = /(iPad|iPhone|iPod).*OS ((\d+_?){2,3})/i.exec(ua); + if (uaResult) { + iOS = true; + osVersion = uaResult[2] || ""; + osMainVersion = parseInt(osVersion) || 0; + } else if (/(iPhone|iPad|iPod)/.exec(nav.platform) || "MacIntel" === nav.platform && nav.maxTouchPoints && nav.maxTouchPoints > 1) { + iOS = true; + osVersion = ""; + osMainVersion = 0; + } + var osName = sys.OS_UNKNOWN; + -1 !== nav.appVersion.indexOf("Win") ? osName = sys.OS_WINDOWS : iOS ? osName = sys.OS_IOS : -1 !== nav.appVersion.indexOf("Mac") ? osName = sys.OS_OSX : -1 !== nav.appVersion.indexOf("X11") && -1 === nav.appVersion.indexOf("Linux") ? osName = sys.OS_UNIX : isAndroid ? osName = sys.OS_ANDROID : -1 === nav.appVersion.indexOf("Linux") && -1 === ua.indexOf("ubuntu") || (osName = sys.OS_LINUX); + sys.os = osName; + sys.osVersion = osVersion; + sys.osMainVersion = osMainVersion; + sys.browserType = sys.BROWSER_TYPE_UNKNOWN; + (function () { + var typeReg1 = /mqqbrowser|micromessenger|qqbrowser|sogou|qzone|liebao|maxthon|ucbs|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|mxbrowser|miuibrowser/i; + var typeReg2 = /qq|ucbrowser|ubrowser|edge|HuaweiBrowser/i; + var typeReg3 = /chrome|safari|firefox|trident|opera|opr\/|oupeng/i; + var browserTypes = typeReg1.exec(ua) || typeReg2.exec(ua) || typeReg3.exec(ua); + var browserType = browserTypes ? browserTypes[0].toLowerCase() : sys.BROWSER_TYPE_UNKNOWN; + "safari" === browserType && isAndroid ? browserType = sys.BROWSER_TYPE_ANDROID : "qq" === browserType && ua.match(/android.*applewebkit/i) && (browserType = sys.BROWSER_TYPE_ANDROID); + var typeMap = { + micromessenger: sys.BROWSER_TYPE_WECHAT, + trident: sys.BROWSER_TYPE_IE, + edge: sys.BROWSER_TYPE_EDGE, + "360 aphone": sys.BROWSER_TYPE_360, + mxbrowser: sys.BROWSER_TYPE_MAXTHON, + "opr/": sys.BROWSER_TYPE_OPERA, + ubrowser: sys.BROWSER_TYPE_UC, + huaweibrowser: sys.BROWSER_TYPE_HUAWEI + }; + sys.browserType = typeMap[browserType] || browserType; + })(); + sys.browserVersion = ""; + (function () { + var versionReg1 = /(mqqbrowser|micromessenger|qqbrowser|sogou|qzone|liebao|maxthon|uc|ucbs|360 aphone|360|baiduboxapp|baidu|maxthon|mxbrowser|miui(?:.hybrid)?)(mobile)?(browser)?\/?([\d.]+)/i; + var versionReg2 = /(qq|chrome|safari|firefox|trident|opera|opr\/|oupeng)(mobile)?(browser)?\/?([\d.]+)/i; + var tmp = ua.match(versionReg1); + tmp || (tmp = ua.match(versionReg2)); + sys.browserVersion = tmp ? tmp[4] : ""; + })(); + var w = window.innerWidth || document.documentElement.clientWidth; + var h = window.innerHeight || document.documentElement.clientHeight; + var ratio = window.devicePixelRatio || 1; + sys.windowPixelResolution = { + width: ratio * w, + height: ratio * h + }; + sys._checkWebGLRenderMode = function () { + if (cc.game.renderType !== cc.game.RENDER_TYPE_WEBGL) throw new Error("This feature supports WebGL render mode only."); + }; + var _tmpCanvas1 = document.createElement("canvas"); + var create3DContext = function create3DContext(canvas, opt_attribs, opt_contextType) { + if (!opt_contextType) return create3DContext(canvas, opt_attribs, "webgl") || create3DContext(canvas, opt_attribs, "experimental-webgl") || create3DContext(canvas, opt_attribs, "webkit-3d") || create3DContext(canvas, opt_attribs, "moz-webgl") || null; + try { + return canvas.getContext(opt_contextType, opt_attribs); + } catch (e) { + return null; + } + }; + try { + var localStorage = sys.localStorage = win.localStorage; + localStorage.setItem("storage", ""); + localStorage.removeItem("storage"); + localStorage = null; + } catch (e) { + var warn = function warn() { + cc.warnID(5200); + }; + sys.localStorage = { + getItem: warn, + setItem: warn, + removeItem: warn, + clear: warn + }; + } + var _supportWebp = _tmpCanvas1.toDataURL("image/webp").startsWith("data:image/webp"); + var _supportCanvas = !!_tmpCanvas1.getContext("2d"); + var _supportWebGL = false; + false; + win.WebGLRenderingContext && (_supportWebGL = true); + var capabilities = sys.capabilities = { + canvas: _supportCanvas, + opengl: _supportWebGL, + webp: _supportWebp, + imageBitmap: false + }; + if ("undefined" !== typeof createImageBitmap && "undefined" !== typeof Blob) { + _tmpCanvas1.width = _tmpCanvas1.height = 2; + createImageBitmap(_tmpCanvas1, {}).then((function (imageBitmap) { + capabilities.imageBitmap = true; + imageBitmap.close && imageBitmap.close(); + }))["catch"]((function (err) { })); + } + (void 0 !== docEle["ontouchstart"] || void 0 !== doc["ontouchstart"] || nav.msPointerEnabled) && (capabilities["touches"] = true); + void 0 !== docEle["onmouseup"] && (capabilities["mouse"] = true); + void 0 !== docEle["onkeyup"] && (capabilities["keyboard"] = true); + (win.DeviceMotionEvent || win.DeviceOrientationEvent) && (capabilities["accelerometer"] = true); + var __audioSupport; + (function () { + var DEBUG = false; + var version = sys.browserVersion; + var supportWebAudio = !!(window.AudioContext || window.webkitAudioContext || window.mozAudioContext); + __audioSupport = { + ONLY_ONE: false, + WEB_AUDIO: supportWebAudio, + DELAY_CREATE_CTX: false + }; + sys.os === sys.OS_IOS && (__audioSupport.USE_LOADER_EVENT = "loadedmetadata"); + if (sys.browserType === sys.BROWSER_TYPE_FIREFOX) { + __audioSupport.DELAY_CREATE_CTX = true; + __audioSupport.USE_LOADER_EVENT = "canplay"; + } + sys.os === sys.OS_ANDROID && sys.browserType === sys.BROWSER_TYPE_UC && (__audioSupport.ONE_SOURCE = true); + DEBUG && setTimeout((function () { + cc.log("browse type: " + sys.browserType); + cc.log("browse version: " + version); + cc.log("MULTI_CHANNEL: " + __audioSupport.MULTI_CHANNEL); + cc.log("WEB_AUDIO: " + __audioSupport.WEB_AUDIO); + cc.log("AUTOPLAY: " + __audioSupport.AUTOPLAY); + }), 0); + })(); + try { + if (__audioSupport.WEB_AUDIO) { + __audioSupport.context = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)(); + __audioSupport.DELAY_CREATE_CTX && setTimeout((function () { + __audioSupport.context = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)(); + }), 0); + } + } catch (error) { + __audioSupport.WEB_AUDIO = false; + cc.logID(5201); + } + var formatSupport = []; + (function () { + var audio = document.createElement("audio"); + if (audio.canPlayType) { + var ogg = audio.canPlayType('audio/ogg; codecs="vorbis"'); + ogg && formatSupport.push(".ogg"); + var mp3 = audio.canPlayType("audio/mpeg"); + mp3 && formatSupport.push(".mp3"); + var wav = audio.canPlayType('audio/wav; codecs="1"'); + wav && formatSupport.push(".wav"); + var mp4 = audio.canPlayType("audio/mp4"); + mp4 && formatSupport.push(".mp4"); + var m4a = audio.canPlayType("audio/x-m4a"); + m4a && formatSupport.push(".m4a"); + } + })(); + __audioSupport.format = formatSupport; + sys.__audioSupport = __audioSupport; + } + sys.NetworkType = { + NONE: 0, + LAN: 1, + WWAN: 2 + }; + sys.getNetworkType = function () { + return sys.NetworkType.LAN; + }; + sys.getBatteryLevel = function () { + return 1; + }; + sys.garbageCollect = function () { }; + sys.restartVM = function () { }; + sys.isObjectValid = function (obj) { + if (obj) return true; + return false; + }; + sys.dump = function () { + var self = this; + var str = ""; + str += "isMobile : " + self.isMobile + "\r\n"; + str += "language : " + self.language + "\r\n"; + str += "browserType : " + self.browserType + "\r\n"; + str += "browserVersion : " + self.browserVersion + "\r\n"; + str += "capabilities : " + JSON.stringify(self.capabilities) + "\r\n"; + str += "os : " + self.os + "\r\n"; + str += "osVersion : " + self.osVersion + "\r\n"; + str += "platform : " + self.platform + "\r\n"; + str += "Using " + (cc.game.renderType === cc.game.RENDER_TYPE_WEBGL ? "WEBGL" : "CANVAS") + " renderer.\r\n"; + cc.log(str); + }; + sys.openURL = function (url) { + false, false; + window.open(url); + }; + sys.now = function () { + return Date.now ? Date.now() : +new Date(); + }; + return sys; + } + var sys = cc && cc.sys ? cc.sys : initSys(); + module.exports = sys; + }), {}], + 249: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("../event/event-target"); + var js = require("../platform/js"); + var renderer = require("../renderer"); + require("../platform/CCClass"); + var __BrowserGetter = { + init: function init() { + this.html = document.getElementsByTagName("html")[0]; + }, + availWidth: function availWidth(frame) { + return frame && frame !== this.html ? frame.clientWidth : window.innerWidth; + }, + availHeight: function availHeight(frame) { + return frame && frame !== this.html ? frame.clientHeight : window.innerHeight; + }, + meta: { + width: "device-width" + }, + adaptationType: cc.sys.browserType + }; + cc.sys.os === cc.sys.OS_IOS && (__BrowserGetter.adaptationType = cc.sys.BROWSER_TYPE_SAFARI); + switch (__BrowserGetter.adaptationType) { + case cc.sys.BROWSER_TYPE_SAFARI: + case cc.sys.BROWSER_TYPE_SOUGOU: + case cc.sys.BROWSER_TYPE_UC: + __BrowserGetter.meta["minimal-ui"] = "true"; + __BrowserGetter.availWidth = function (frame) { + return frame.clientWidth; + }; + __BrowserGetter.availHeight = function (frame) { + return frame.clientHeight; + }; + } + var _scissorRect = null; + var View = function View() { + EventTarget.call(this); + var _t = this, _strategyer = cc.ContainerStrategy, _strategy = cc.ContentStrategy; + __BrowserGetter.init(this); + _t._frameSize = cc.size(0, 0); + _t._designResolutionSize = cc.size(0, 0); + _t._originalDesignResolutionSize = cc.size(0, 0); + _t._scaleX = 1; + _t._scaleY = 1; + _t._viewportRect = cc.rect(0, 0, 0, 0); + _t._visibleRect = cc.rect(0, 0, 0, 0); + _t._autoFullScreen = false; + _t._devicePixelRatio = 1; + false; + _t._maxPixelRatio = 2; + _t._retinaEnabled = false; + _t._resizeCallback = null; + _t._resizing = false; + _t._resizeWithBrowserSize = false; + _t._orientationChanging = true; + _t._isRotated = false; + _t._orientation = cc.macro.ORIENTATION_AUTO; + _t._isAdjustViewport = true; + _t._antiAliasEnabled = false; + _t._resolutionPolicy = null; + _t._rpExactFit = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.EXACT_FIT); + _t._rpShowAll = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.SHOW_ALL); + _t._rpNoBorder = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.NO_BORDER); + _t._rpFixedHeight = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.FIXED_HEIGHT); + _t._rpFixedWidth = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.FIXED_WIDTH); + cc.game.once(cc.game.EVENT_ENGINE_INITED, this.init, this); + }; + cc.js.extend(View, EventTarget); + cc.js.mixin(View.prototype, { + init: function init() { + this._initFrameSize(); + var w = cc.game.canvas.width, h = cc.game.canvas.height; + this._designResolutionSize.width = w; + this._designResolutionSize.height = h; + this._originalDesignResolutionSize.width = w; + this._originalDesignResolutionSize.height = h; + this._viewportRect.width = w; + this._viewportRect.height = h; + this._visibleRect.width = w; + this._visibleRect.height = h; + cc.winSize.width = this._visibleRect.width; + cc.winSize.height = this._visibleRect.height; + cc.visibleRect && cc.visibleRect.init(this._visibleRect); + }, + _resizeEvent: function _resizeEvent(forceOrEvent) { + var view; + view = this.setDesignResolutionSize ? this : cc.view; + var sys = cc.sys; + if (sys.browserType === sys.BROWSER_TYPE_UC && sys.os === sys.OS_IOS) { + setTimeout((function () { + view._resizeEvent(forceOrEvent); + }), 0); + return; + } + var prevFrameW = view._frameSize.width, prevFrameH = view._frameSize.height, prevRotated = view._isRotated; + if (cc.sys.isMobile) { + var containerStyle = cc.game.container.style, margin = containerStyle.margin; + containerStyle.margin = "0"; + containerStyle.display = "none"; + view._initFrameSize(); + containerStyle.margin = margin; + containerStyle.display = "block"; + } else view._initFrameSize(); + if (true !== forceOrEvent && view._isRotated === prevRotated && view._frameSize.width === prevFrameW && view._frameSize.height === prevFrameH) return; + var width = view._originalDesignResolutionSize.width; + var height = view._originalDesignResolutionSize.height; + view._resizing = true; + width > 0 && view.setDesignResolutionSize(width, height, view._resolutionPolicy); + view._resizing = false; + view.emit("canvas-resize"); + view._resizeCallback && view._resizeCallback.call(); + }, + _orientationChange: function _orientationChange() { + cc.view._orientationChanging = true; + cc.view._resizeEvent(); + cc.sys.browserType === cc.sys.BROWSER_TYPE_SAFARI && cc.sys.isMobile && setTimeout((function () { + window.innerHeight > window.innerWidth && window.scrollTo(0, 1); + }), 500); + }, + _resize: function _resize() { + cc.view._resizeEvent(false); + }, + resizeWithBrowserSize: function resizeWithBrowserSize(enabled) { + if (enabled) { + if (!this._resizeWithBrowserSize) { + this._resizeWithBrowserSize = true; + window.addEventListener("resize", this._resize); + window.addEventListener("orientationchange", this._orientationChange); + } + } else if (this._resizeWithBrowserSize) { + this._resizeWithBrowserSize = false; + window.removeEventListener("resize", this._resize); + window.removeEventListener("orientationchange", this._orientationChange); + } + }, + setResizeCallback: function setResizeCallback(callback) { + false; + "function" !== typeof callback && null != callback || (this._resizeCallback = callback); + }, + setOrientation: function setOrientation(orientation) { + orientation &= cc.macro.ORIENTATION_AUTO; + if (orientation && this._orientation !== orientation) { + this._orientation = orientation; + var designWidth = this._originalDesignResolutionSize.width; + var designHeight = this._originalDesignResolutionSize.height; + this.setDesignResolutionSize(designWidth, designHeight, this._resolutionPolicy); + } + }, + _initFrameSize: function _initFrameSize() { + var locFrameSize = this._frameSize; + var w = __BrowserGetter.availWidth(cc.game.frame); + var h = __BrowserGetter.availHeight(cc.game.frame); + var isLandscape = w >= h; + if ((false, !cc.sys.isMobile) || isLandscape && this._orientation & cc.macro.ORIENTATION_LANDSCAPE || !isLandscape && this._orientation & cc.macro.ORIENTATION_PORTRAIT) { + locFrameSize.width = w; + locFrameSize.height = h; + cc.game.container.style["-webkit-transform"] = "rotate(0deg)"; + cc.game.container.style.transform = "rotate(0deg)"; + this._isRotated = false; + } else { + locFrameSize.width = h; + locFrameSize.height = w; + cc.game.container.style["-webkit-transform"] = "rotate(90deg)"; + cc.game.container.style.transform = "rotate(90deg)"; + cc.game.container.style["-webkit-transform-origin"] = "0px 0px 0px"; + cc.game.container.style.transformOrigin = "0px 0px 0px"; + this._isRotated = true; + } + this._orientationChanging && setTimeout((function () { + cc.view._orientationChanging = false; + }), 1e3); + }, + _setViewportMeta: function _setViewportMeta(metas, overwrite) { + var vp = document.getElementById("cocosMetaElement"); + vp && overwrite && document.head.removeChild(vp); + var elems = document.getElementsByName("viewport"), currentVP = elems ? elems[0] : null, content, key, pattern; + content = currentVP ? currentVP.content : ""; + vp = vp || document.createElement("meta"); + vp.id = "cocosMetaElement"; + vp.name = "viewport"; + vp.content = ""; + for (key in metas) if (-1 == content.indexOf(key)) content += "," + key + "=" + metas[key]; else if (overwrite) { + pattern = new RegExp(key + "s*=s*[^,]+"); + content = content.replace(pattern, key + "=" + metas[key]); + } + /^,/.test(content) && (content = content.substr(1)); + vp.content = content; + currentVP && (currentVP.content = content); + document.head.appendChild(vp); + }, + _adjustViewportMeta: function _adjustViewportMeta() { + if (this._isAdjustViewport && true) { + this._setViewportMeta(__BrowserGetter.meta, false); + this._isAdjustViewport = false; + } + }, + adjustViewportMeta: function adjustViewportMeta(enabled) { + this._isAdjustViewport = enabled; + }, + enableRetina: function enableRetina(enabled) { + false; + this._retinaEnabled = !!enabled; + }, + isRetinaEnabled: function isRetinaEnabled() { + false; + return this._retinaEnabled; + }, + enableAntiAlias: function enableAntiAlias(enabled) { + cc.warnID(9200); + if (this._antiAliasEnabled === enabled) return; + this._antiAliasEnabled = enabled; + if (cc.game.renderType === cc.game.RENDER_TYPE_WEBGL) { + var cache = cc.assetManager.assets; + cache.forEach((function (asset) { + if (asset instanceof cc.Texture2D) { + var Filter = cc.Texture2D.Filter; + enabled ? asset.setFilters(Filter.LINEAR, Filter.LINEAR) : asset.setFilters(Filter.NEAREST, Filter.NEAREST); + } + })); + } else if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) { + var ctx = cc.game.canvas.getContext("2d"); + ctx.imageSmoothingEnabled = enabled; + ctx.mozImageSmoothingEnabled = enabled; + } + }, + isAntiAliasEnabled: function isAntiAliasEnabled() { + return this._antiAliasEnabled; + }, + enableAutoFullScreen: function enableAutoFullScreen(enabled) { + if (enabled && enabled !== this._autoFullScreen && cc.sys.isMobile) { + this._autoFullScreen = true; + cc.screen.autoFullScreen(cc.game.frame); + } else { + this._autoFullScreen = false; + cc.screen.disableAutoFullScreen(cc.game.frame); + } + }, + isAutoFullScreenEnabled: function isAutoFullScreenEnabled() { + return this._autoFullScreen; + }, + setCanvasSize: function setCanvasSize(width, height) { + var canvas = cc.game.canvas; + var container = cc.game.container; + canvas.width = width * this._devicePixelRatio; + canvas.height = height * this._devicePixelRatio; + canvas.style.width = width + "px"; + canvas.style.height = height + "px"; + container.style.width = width + "px"; + container.style.height = height + "px"; + this._resizeEvent(); + }, + getCanvasSize: function getCanvasSize() { + return cc.size(cc.game.canvas.width, cc.game.canvas.height); + }, + getFrameSize: function getFrameSize() { + return cc.size(this._frameSize.width, this._frameSize.height); + }, + setFrameSize: function setFrameSize(width, height) { + this._frameSize.width = width; + this._frameSize.height = height; + cc.game.frame.style.width = width + "px"; + cc.game.frame.style.height = height + "px"; + this._resizeEvent(true); + }, + getVisibleSize: function getVisibleSize() { + return cc.size(this._visibleRect.width, this._visibleRect.height); + }, + getVisibleSizeInPixel: function getVisibleSizeInPixel() { + return cc.size(this._visibleRect.width * this._scaleX, this._visibleRect.height * this._scaleY); + }, + getVisibleOrigin: function getVisibleOrigin() { + return cc.v2(this._visibleRect.x, this._visibleRect.y); + }, + getVisibleOriginInPixel: function getVisibleOriginInPixel() { + return cc.v2(this._visibleRect.x * this._scaleX, this._visibleRect.y * this._scaleY); + }, + getResolutionPolicy: function getResolutionPolicy() { + return this._resolutionPolicy; + }, + setResolutionPolicy: function setResolutionPolicy(resolutionPolicy) { + var _t = this; + if (resolutionPolicy instanceof cc.ResolutionPolicy) _t._resolutionPolicy = resolutionPolicy; else { + var _locPolicy = cc.ResolutionPolicy; + resolutionPolicy === _locPolicy.EXACT_FIT && (_t._resolutionPolicy = _t._rpExactFit); + resolutionPolicy === _locPolicy.SHOW_ALL && (_t._resolutionPolicy = _t._rpShowAll); + resolutionPolicy === _locPolicy.NO_BORDER && (_t._resolutionPolicy = _t._rpNoBorder); + resolutionPolicy === _locPolicy.FIXED_HEIGHT && (_t._resolutionPolicy = _t._rpFixedHeight); + resolutionPolicy === _locPolicy.FIXED_WIDTH && (_t._resolutionPolicy = _t._rpFixedWidth); + } + }, + setDesignResolutionSize: function setDesignResolutionSize(width, height, resolutionPolicy) { + if (!(width > 0 && height > 0)) { + cc.errorID(2200); + return; + } + this.setResolutionPolicy(resolutionPolicy); + var policy = this._resolutionPolicy; + policy && policy.preApply(this); + cc.sys.isMobile && this._adjustViewportMeta(); + this._orientationChanging = true; + this._resizing || this._initFrameSize(); + if (!policy) { + cc.logID(2201); + return; + } + this._originalDesignResolutionSize.width = this._designResolutionSize.width = width; + this._originalDesignResolutionSize.height = this._designResolutionSize.height = height; + var result = policy.apply(this, this._designResolutionSize); + if (result.scale && 2 === result.scale.length) { + this._scaleX = result.scale[0]; + this._scaleY = result.scale[1]; + } + if (result.viewport) { + var vp = this._viewportRect, vb = this._visibleRect, rv = result.viewport; + vp.x = rv.x; + vp.y = rv.y; + vp.width = rv.width; + vp.height = rv.height; + vb.x = 0; + vb.y = 0; + vb.width = rv.width / this._scaleX; + vb.height = rv.height / this._scaleY; + } + policy.postApply(this); + cc.winSize.width = this._visibleRect.width; + cc.winSize.height = this._visibleRect.height; + cc.visibleRect && cc.visibleRect.init(this._visibleRect); + renderer.updateCameraViewport(); + cc.internal.inputManager._updateCanvasBoundingRect(); + this.emit("design-resolution-changed"); + }, + getDesignResolutionSize: function getDesignResolutionSize() { + return cc.size(this._designResolutionSize.width, this._designResolutionSize.height); + }, + setRealPixelResolution: function setRealPixelResolution(width, height, resolutionPolicy) { + true, true; + this._setViewportMeta({ + width: width + }, true); + document.documentElement.style.width = width + "px"; + document.body.style.width = width + "px"; + document.body.style.left = "0px"; + document.body.style.top = "0px"; + this.setDesignResolutionSize(width, height, resolutionPolicy); + }, + setViewportInPoints: function setViewportInPoints(x, y, w, h) { + var locScaleX = this._scaleX, locScaleY = this._scaleY; + cc.game._renderContext.viewport(x * locScaleX + this._viewportRect.x, y * locScaleY + this._viewportRect.y, w * locScaleX, h * locScaleY); + }, + setScissorInPoints: function setScissorInPoints(x, y, w, h) { + var scaleX = this._scaleX, scaleY = this._scaleY; + var sx = Math.ceil(x * scaleX + this._viewportRect.x); + var sy = Math.ceil(y * scaleY + this._viewportRect.y); + var sw = Math.ceil(w * scaleX); + var sh = Math.ceil(h * scaleY); + var gl = cc.game._renderContext; + if (!_scissorRect) { + var boxArr = gl.getParameter(gl.SCISSOR_BOX); + _scissorRect = cc.rect(boxArr[0], boxArr[1], boxArr[2], boxArr[3]); + } + if (_scissorRect.x !== sx || _scissorRect.y !== sy || _scissorRect.width !== sw || _scissorRect.height !== sh) { + _scissorRect.x = sx; + _scissorRect.y = sy; + _scissorRect.width = sw; + _scissorRect.height = sh; + gl.scissor(sx, sy, sw, sh); + } + }, + isScissorEnabled: function isScissorEnabled() { + return cc.game._renderContext.isEnabled(gl.SCISSOR_TEST); + }, + getScissorRect: function getScissorRect() { + if (!_scissorRect) { + var boxArr = gl.getParameter(gl.SCISSOR_BOX); + _scissorRect = cc.rect(boxArr[0], boxArr[1], boxArr[2], boxArr[3]); + } + var scaleXFactor = 1 / this._scaleX; + var scaleYFactor = 1 / this._scaleY; + return cc.rect((_scissorRect.x - this._viewportRect.x) * scaleXFactor, (_scissorRect.y - this._viewportRect.y) * scaleYFactor, _scissorRect.width * scaleXFactor, _scissorRect.height * scaleYFactor); + }, + getViewportRect: function getViewportRect() { + return this._viewportRect; + }, + getScaleX: function getScaleX() { + return this._scaleX; + }, + getScaleY: function getScaleY() { + return this._scaleY; + }, + getDevicePixelRatio: function getDevicePixelRatio() { + return this._devicePixelRatio; + }, + convertToLocationInView: function convertToLocationInView(tx, ty, relatedPos, out) { + var result = out || cc.v2(); + var posLeft = relatedPos.adjustedLeft ? relatedPos.adjustedLeft : relatedPos.left; + var posTop = relatedPos.adjustedTop ? relatedPos.adjustedTop : relatedPos.top; + var x = this._devicePixelRatio * (tx - posLeft); + var y = this._devicePixelRatio * (posTop + relatedPos.height - ty); + if (this._isRotated) { + result.x = cc.game.canvas.width - y; + result.y = x; + } else { + result.x = x; + result.y = y; + } + return result; + }, + _convertMouseToLocationInView: function _convertMouseToLocationInView(in_out_point, relatedPos) { + var viewport = this._viewportRect, _t = this; + in_out_point.x = (_t._devicePixelRatio * (in_out_point.x - relatedPos.left) - viewport.x) / _t._scaleX; + in_out_point.y = (_t._devicePixelRatio * (relatedPos.top + relatedPos.height - in_out_point.y) - viewport.y) / _t._scaleY; + }, + _convertPointWithScale: function _convertPointWithScale(point) { + var viewport = this._viewportRect; + point.x = (point.x - viewport.x) / this._scaleX; + point.y = (point.y - viewport.y) / this._scaleY; + }, + _convertTouchesWithScale: function _convertTouchesWithScale(touches) { + var viewport = this._viewportRect, scaleX = this._scaleX, scaleY = this._scaleY, selTouch, selPoint, selPrePoint; + for (var i = 0; i < touches.length; i++) { + selTouch = touches[i]; + selPoint = selTouch._point; + selPrePoint = selTouch._prevPoint; + selPoint.x = (selPoint.x - viewport.x) / scaleX; + selPoint.y = (selPoint.y - viewport.y) / scaleY; + selPrePoint.x = (selPrePoint.x - viewport.x) / scaleX; + selPrePoint.y = (selPrePoint.y - viewport.y) / scaleY; + } + } + }); + cc.ContainerStrategy = cc.Class({ + name: "ContainerStrategy", + preApply: function preApply(view) { }, + apply: function apply(view, designedResolution) { }, + postApply: function postApply(view) { }, + _setupContainer: function _setupContainer(view, w, h) { + var locCanvas = cc.game.canvas; + this._setupStyle(view, w, h); + var devicePixelRatio = view._devicePixelRatio = 1; + false; + view.isRetinaEnabled() && (devicePixelRatio = view._devicePixelRatio = Math.min(view._maxPixelRatio, window.devicePixelRatio || 1)); + locCanvas.width = w * devicePixelRatio; + locCanvas.height = h * devicePixelRatio; + }, + _setupStyle: function _setupStyle(view, w, h) { + var locCanvas = cc.game.canvas; + var locContainer = cc.game.container; + if (cc.sys.os === cc.sys.OS_ANDROID) { + document.body.style.width = (view._isRotated ? h : w) + "px"; + document.body.style.height = (view._isRotated ? w : h) + "px"; + } + locContainer.style.width = locCanvas.style.width = w + "px"; + locContainer.style.height = locCanvas.style.height = h + "px"; + }, + _fixContainer: function _fixContainer() { + document.body.insertBefore(cc.game.container, document.body.firstChild); + var bs = document.body.style; + bs.width = window.innerWidth + "px"; + bs.height = window.innerHeight + "px"; + bs.overflow = "hidden"; + var contStyle = cc.game.container.style; + contStyle.position = "fixed"; + contStyle.left = contStyle.top = "0px"; + document.body.scrollTop = 0; + } + }); + cc.ContentStrategy = cc.Class({ + name: "ContentStrategy", + ctor: function ctor() { + this._result = { + scale: [1, 1], + viewport: null + }; + }, + _buildResult: function _buildResult(containerW, containerH, contentW, contentH, scaleX, scaleY) { + Math.abs(containerW - contentW) < 2 && (contentW = containerW); + Math.abs(containerH - contentH) < 2 && (contentH = containerH); + var viewport = cc.rect((containerW - contentW) / 2, (containerH - contentH) / 2, contentW, contentH); + cc.game.renderType === cc.game.RENDER_TYPE_CANVAS; + this._result.scale = [scaleX, scaleY]; + this._result.viewport = viewport; + return this._result; + }, + preApply: function preApply(view) { }, + apply: function apply(view, designedResolution) { + return { + scale: [1, 1] + }; + }, + postApply: function postApply(view) { } + }); + (function () { + var EqualToFrame = cc.Class({ + name: "EqualToFrame", + extends: cc.ContainerStrategy, + apply: function apply(view) { + var frameH = view._frameSize.height, containerStyle = cc.game.container.style; + this._setupContainer(view, view._frameSize.width, view._frameSize.height); + view._isRotated ? containerStyle.margin = "0 0 0 " + frameH + "px" : containerStyle.margin = "0px"; + containerStyle.padding = "0px"; + } + }); + var ProportionalToFrame = cc.Class({ + name: "ProportionalToFrame", + extends: cc.ContainerStrategy, + apply: function apply(view, designedResolution) { + var frameW = view._frameSize.width, frameH = view._frameSize.height, containerStyle = cc.game.container.style, designW = designedResolution.width, designH = designedResolution.height, scaleX = frameW / designW, scaleY = frameH / designH, containerW, containerH; + scaleX < scaleY ? (containerW = frameW, containerH = designH * scaleX) : (containerW = designW * scaleY, + containerH = frameH); + var offx = Math.round((frameW - containerW) / 2); + var offy = Math.round((frameH - containerH) / 2); + containerW = frameW - 2 * offx; + containerH = frameH - 2 * offy; + this._setupContainer(view, containerW, containerH); + true; + view._isRotated ? containerStyle.margin = "0 0 0 " + frameH + "px" : containerStyle.margin = "0px"; + containerStyle.paddingLeft = offx + "px"; + containerStyle.paddingRight = offx + "px"; + containerStyle.paddingTop = offy + "px"; + containerStyle.paddingBottom = offy + "px"; + } + }); + var EqualToWindow = cc.Class({ + name: "EqualToWindow", + extends: EqualToFrame, + preApply: function preApply(view) { + this._super(view); + cc.game.frame = document.documentElement; + }, + apply: function apply(view) { + this._super(view); + this._fixContainer(); + } + }); + var ProportionalToWindow = cc.Class({ + name: "ProportionalToWindow", + extends: ProportionalToFrame, + preApply: function preApply(view) { + this._super(view); + cc.game.frame = document.documentElement; + }, + apply: function apply(view, designedResolution) { + this._super(view, designedResolution); + this._fixContainer(); + } + }); + var OriginalContainer = cc.Class({ + name: "OriginalContainer", + extends: cc.ContainerStrategy, + apply: function apply(view) { + this._setupContainer(view, cc.game.canvas.width, cc.game.canvas.height); + } + }); + var _global = "undefined" === typeof window ? global : window; + var globalAdapter = _global.__globalAdapter; + if (globalAdapter) { + globalAdapter.adaptContainerStrategy && globalAdapter.adaptContainerStrategy(cc.ContainerStrategy.prototype); + globalAdapter.adaptView && globalAdapter.adaptView(View.prototype); + } + cc.ContainerStrategy.EQUAL_TO_FRAME = new EqualToFrame(); + cc.ContainerStrategy.PROPORTION_TO_FRAME = new ProportionalToFrame(); + cc.ContainerStrategy.ORIGINAL_CONTAINER = new OriginalContainer(); + var ExactFit = cc.Class({ + name: "ExactFit", + extends: cc.ContentStrategy, + apply: function apply(view, designedResolution) { + var containerW = cc.game.canvas.width, containerH = cc.game.canvas.height, scaleX = containerW / designedResolution.width, scaleY = containerH / designedResolution.height; + return this._buildResult(containerW, containerH, containerW, containerH, scaleX, scaleY); + } + }); + var ShowAll = cc.Class({ + name: "ShowAll", + extends: cc.ContentStrategy, + apply: function apply(view, designedResolution) { + var containerW = cc.game.canvas.width, containerH = cc.game.canvas.height, designW = designedResolution.width, designH = designedResolution.height, scaleX = containerW / designW, scaleY = containerH / designH, scale = 0, contentW, contentH; + scaleX < scaleY ? (scale = scaleX, contentW = containerW, contentH = designH * scale) : (scale = scaleY, + contentW = designW * scale, contentH = containerH); + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + } + }); + var NoBorder = cc.Class({ + name: "NoBorder", + extends: cc.ContentStrategy, + apply: function apply(view, designedResolution) { + var containerW = cc.game.canvas.width, containerH = cc.game.canvas.height, designW = designedResolution.width, designH = designedResolution.height, scaleX = containerW / designW, scaleY = containerH / designH, scale, contentW, contentH; + scaleX < scaleY ? (scale = scaleY, contentW = designW * scale, contentH = containerH) : (scale = scaleX, + contentW = containerW, contentH = designH * scale); + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + } + }); + var FixedHeight = cc.Class({ + name: "FixedHeight", + extends: cc.ContentStrategy, + apply: function apply(view, designedResolution) { + var containerW = cc.game.canvas.width, containerH = cc.game.canvas.height, designH = designedResolution.height, scale = containerH / designH, contentW = containerW, contentH = containerH; + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + } + }); + var FixedWidth = cc.Class({ + name: "FixedWidth", + extends: cc.ContentStrategy, + apply: function apply(view, designedResolution) { + var containerW = cc.game.canvas.width, containerH = cc.game.canvas.height, designW = designedResolution.width, scale = containerW / designW, contentW = containerW, contentH = containerH; + return this._buildResult(containerW, containerH, contentW, contentH, scale, scale); + } + }); + cc.ContentStrategy.EXACT_FIT = new ExactFit(); + cc.ContentStrategy.SHOW_ALL = new ShowAll(); + cc.ContentStrategy.NO_BORDER = new NoBorder(); + cc.ContentStrategy.FIXED_HEIGHT = new FixedHeight(); + cc.ContentStrategy.FIXED_WIDTH = new FixedWidth(); + })(); + cc.ResolutionPolicy = cc.Class({ + name: "cc.ResolutionPolicy", + ctor: function ctor(containerStg, contentStg) { + this._containerStrategy = null; + this._contentStrategy = null; + this.setContainerStrategy(containerStg); + this.setContentStrategy(contentStg); + }, + preApply: function preApply(view) { + this._containerStrategy.preApply(view); + this._contentStrategy.preApply(view); + }, + apply: function apply(view, designedResolution) { + this._containerStrategy.apply(view, designedResolution); + return this._contentStrategy.apply(view, designedResolution); + }, + postApply: function postApply(view) { + this._containerStrategy.postApply(view); + this._contentStrategy.postApply(view); + }, + setContainerStrategy: function setContainerStrategy(containerStg) { + containerStg instanceof cc.ContainerStrategy && (this._containerStrategy = containerStg); + }, + setContentStrategy: function setContentStrategy(contentStg) { + contentStg instanceof cc.ContentStrategy && (this._contentStrategy = contentStg); + } + }); + js.get(cc.ResolutionPolicy.prototype, "canvasSize", (function () { + return cc.v2(cc.game.canvas.width, cc.game.canvas.height); + })); + cc.ResolutionPolicy.EXACT_FIT = 0; + cc.ResolutionPolicy.NO_BORDER = 1; + cc.ResolutionPolicy.SHOW_ALL = 2; + cc.ResolutionPolicy.FIXED_HEIGHT = 3; + cc.ResolutionPolicy.FIXED_WIDTH = 4; + cc.ResolutionPolicy.UNKNOWN = 5; + cc.view = new View(); + cc.winSize = cc.size(); + module.exports = cc.view; + }), { + "../event/event-target": 186, + "../platform/CCClass": 239, + "../platform/js": 260, + "../renderer": 271 + }], + 250: [(function (require, module, exports) { + "use strict"; + cc.visibleRect = { + topLeft: cc.v2(0, 0), + topRight: cc.v2(0, 0), + top: cc.v2(0, 0), + bottomLeft: cc.v2(0, 0), + bottomRight: cc.v2(0, 0), + bottom: cc.v2(0, 0), + center: cc.v2(0, 0), + left: cc.v2(0, 0), + right: cc.v2(0, 0), + width: 0, + height: 0, + init: function init(visibleRect) { + var w = this.width = visibleRect.width; + var h = this.height = visibleRect.height; + var l = visibleRect.x, b = visibleRect.y, t = b + h, r = l + w; + this.topLeft.x = l; + this.topLeft.y = t; + this.topRight.x = r; + this.topRight.y = t; + this.top.x = l + w / 2; + this.top.y = t; + this.bottomLeft.x = l; + this.bottomLeft.y = b; + this.bottomRight.x = r; + this.bottomRight.y = b; + this.bottom.x = l + w / 2; + this.bottom.y = b; + this.center.x = l + w / 2; + this.center.y = b + h / 2; + this.left.x = l; + this.left.y = b + h / 2; + this.right.x = r; + this.right.y = b + h / 2; + } + }; + }), {}], + 251: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + var isPlainEmptyObj = require("./utils").isPlainEmptyObj_DEV; + var DELIMETER = "$_$"; + function createAttrsSingle(owner, superAttrs) { + var attrs = superAttrs ? Object.create(superAttrs) : {}; + js.value(owner, "__attrs__", attrs); + return attrs; + } + function createAttrs(subclass) { + if ("function" !== typeof subclass) { + var instance = subclass; + return createAttrsSingle(instance, getClassAttrs(instance.constructor)); + } + var superClass; + var chains = cc.Class.getInheritanceChain(subclass); + for (var i = chains.length - 1; i >= 0; i--) { + var cls = chains[i]; + var attrs = cls.hasOwnProperty("__attrs__") && cls.__attrs__; + if (!attrs) { + superClass = chains[i + 1]; + createAttrsSingle(cls, superClass && superClass.__attrs__); + } + } + superClass = chains[0]; + createAttrsSingle(subclass, superClass && superClass.__attrs__); + return subclass.__attrs__; + } + function attr(ctor, propName, newAttrs) { + var attrs = getClassAttrs(ctor); + var _key; + true; + var prefix = propName + DELIMETER; + var ret = {}; + for (var key in attrs) key.startsWith(prefix) && (ret[key.slice(prefix.length)] = attrs[key]); + return ret; + } + function getClassAttrs(ctor) { + return ctor.hasOwnProperty("__attrs__") && ctor.__attrs__ || createAttrs(ctor); + } + function setClassAttr(ctor, propName, key, value) { + getClassAttrs(ctor)[propName + DELIMETER + key] = value; + } + function PrimitiveType(name, def) { + this.name = name; + this["default"] = def; + } + PrimitiveType.prototype.toString = function () { + return this.name; + }; + cc.Integer = new PrimitiveType("Integer", 0); + cc.Float = new PrimitiveType("Float", 0); + false; + cc.Boolean = new PrimitiveType("Boolean", false); + cc.String = new PrimitiveType("String", ""); + function getTypeChecker(type, attrName) { + return function (constructor, mainPropName) { + var propInfo = '"' + js.getClassName(constructor) + "." + mainPropName + '"'; + var mainPropAttrs = attr(constructor, mainPropName); + var mainPropAttrsType = mainPropAttrs.type; + mainPropAttrsType === cc.Integer || mainPropAttrsType === cc.Float ? mainPropAttrsType = "Number" : mainPropAttrsType !== cc.String && mainPropAttrsType !== cc.Boolean || (mainPropAttrsType = "" + mainPropAttrsType); + if (mainPropAttrsType !== type) { + cc.warnID(3604, propInfo); + return; + } + if (!mainPropAttrs.hasOwnProperty("default")) return; + var defaultVal = mainPropAttrs["default"]; + if ("undefined" === typeof defaultVal) return; + var isContainer = Array.isArray(defaultVal) || isPlainEmptyObj(defaultVal); + if (isContainer) return; + var defaultType = typeof defaultVal; + var type_lowerCase = type.toLowerCase(); + if (defaultType === type_lowerCase) if ("object" === type_lowerCase) { + if (!defaultVal || defaultVal instanceof mainPropAttrs.ctor) return; + cc.warnID(3605, propInfo, js.getClassName(mainPropAttrs.ctor)); + } else "Number" !== type && cc.warnID(3606, attrName, propInfo, type); else { + if ("function" === defaultType) return; + type === cc.String && null == defaultVal ? cc.warnID(3607, propInfo) : cc.warnID(3611, attrName, propInfo, defaultType); + } + delete mainPropAttrs.type; + }; + } + function getObjTypeChecker(typeCtor) { + return function (classCtor, mainPropName) { + getTypeChecker("Object", "type")(classCtor, mainPropName); + var defaultDef = getClassAttrs(classCtor)[mainPropName + DELIMETER + "default"]; + var defaultVal = require("./CCClass").getDefault(defaultDef); + if (!Array.isArray(defaultVal) && js.isChildClassOf(typeCtor, cc.ValueType)) { + var typename = js.getClassName(typeCtor); + var info = cc.js.formatStr('No need to specify the "type" of "%s.%s" because %s is a child class of ValueType.', js.getClassName(classCtor), mainPropName, typename); + defaultDef ? cc.log(info) : cc.warnID(3612, info, typename, js.getClassName(classCtor), mainPropName, typename); + } + }; + } + module.exports = { + PrimitiveType: PrimitiveType, + attr: attr, + getClassAttrs: getClassAttrs, + setClassAttr: setClassAttr, + DELIMETER: DELIMETER, + getTypeChecker_ET: (false, false) && getTypeChecker, + getObjTypeChecker_ET: (false, false) && getObjTypeChecker, + ScriptUuid: {} + }; + }), { + "./CCClass": 239, + "./js": 260, + "./utils": 263 + }], + 252: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + var fastRemoveAt = js.array.fastRemoveAt; + function empty() { } + function CallbackInfo() { + this.callback = empty; + this.target = void 0; + this.once = false; + } + CallbackInfo.prototype.set = function (callback, target, once) { + this.callback = callback; + this.target = target; + this.once = !!once; + }; + var callbackInfoPool = new js.Pool(function (info) { + info.callback = empty; + info.target = void 0; + info.once = false; + return true; + }, 32); + callbackInfoPool.get = function () { + return this._get() || new CallbackInfo(); + }; + function CallbackList() { + this.callbackInfos = []; + this.isInvoking = false; + this.containCanceled = false; + } + var proto = CallbackList.prototype; + proto.removeByCallback = function (cb) { + for (var i = 0; i < this.callbackInfos.length; ++i) { + var info = this.callbackInfos[i]; + if (info && info.callback === cb) { + callbackInfoPool.put(info); + fastRemoveAt(this.callbackInfos, i); + --i; + } + } + }; + proto.removeByTarget = function (target) { + for (var i = 0; i < this.callbackInfos.length; ++i) { + var info = this.callbackInfos[i]; + if (info && info.target === target) { + callbackInfoPool.put(info); + fastRemoveAt(this.callbackInfos, i); + --i; + } + } + }; + proto.cancel = function (index) { + var info = this.callbackInfos[index]; + if (info) { + callbackInfoPool.put(info); + this.callbackInfos[index] = null; + } + this.containCanceled = true; + }; + proto.cancelAll = function () { + for (var i = 0; i < this.callbackInfos.length; i++) { + var info = this.callbackInfos[i]; + if (info) { + callbackInfoPool.put(info); + this.callbackInfos[i] = null; + } + } + this.containCanceled = true; + }; + proto.purgeCanceled = function () { + for (var i = this.callbackInfos.length - 1; i >= 0; --i) { + var info = this.callbackInfos[i]; + info || fastRemoveAt(this.callbackInfos, i); + } + this.containCanceled = false; + }; + proto.clear = function () { + this.cancelAll(); + this.callbackInfos.length = 0; + this.isInvoking = false; + this.containCanceled = false; + }; + var MAX_SIZE = 16; + var callbackListPool = new js.Pool(function (info) { + info.callbackInfos = []; + info.isInvoking = false; + info.containCanceled = false; + return true; + }, MAX_SIZE); + callbackListPool.get = function () { + return this._get() || new CallbackList(); + }; + function CallbacksInvoker() { + this._callbackTable = js.createMap(true); + } + proto = CallbacksInvoker.prototype; + proto.on = function (key, callback, target, once) { + var list = this._callbackTable[key]; + list || (list = this._callbackTable[key] = callbackListPool.get()); + var info = callbackInfoPool.get(); + info.set(callback, target, once); + list.callbackInfos.push(info); + }; + proto.hasEventListener = function (key, callback, target) { + var list = this._callbackTable[key]; + if (!list) return false; + var infos = list.callbackInfos; + if (!callback) { + if (list.isInvoking) { + for (var i = 0; i < infos.length; ++i) if (infos[i]) return true; + return false; + } + return infos.length > 0; + } + for (var _i = 0; _i < infos.length; ++_i) { + var info = infos[_i]; + if (info && info.callback === callback && info.target === target) return true; + } + return false; + }; + proto.removeAll = function (keyOrTarget) { + if ("string" === typeof keyOrTarget) { + var list = this._callbackTable[keyOrTarget]; + if (list) if (list.isInvoking) list.cancelAll(); else { + list.clear(); + callbackListPool.put(list); + delete this._callbackTable[keyOrTarget]; + } + } else if (keyOrTarget) for (var key in this._callbackTable) { + var _list = this._callbackTable[key]; + if (_list.isInvoking) { + var infos = _list.callbackInfos; + for (var i = 0; i < infos.length; ++i) { + var info = infos[i]; + info && info.target === keyOrTarget && _list.cancel(i); + } + } else _list.removeByTarget(keyOrTarget); + } + }; + proto.off = function (key, callback, target) { + var list = this._callbackTable[key]; + if (list) { + var infos = list.callbackInfos; + for (var i = 0; i < infos.length; ++i) { + var info = infos[i]; + if (info && info.callback === callback && info.target === target) { + if (list.isInvoking) list.cancel(i); else { + fastRemoveAt(infos, i); + callbackInfoPool.put(info); + } + break; + } + } + } + }; + proto.emit = function (key, arg1, arg2, arg3, arg4, arg5) { + var list = this._callbackTable[key]; + if (list) { + var rootInvoker = !list.isInvoking; + list.isInvoking = true; + var infos = list.callbackInfos; + for (var i = 0, len = infos.length; i < len; ++i) { + var info = infos[i]; + if (info) { + var target = info.target; + var callback = info.callback; + info.once && this.off(key, callback, target); + target ? callback.call(target, arg1, arg2, arg3, arg4, arg5) : callback(arg1, arg2, arg3, arg4, arg5); + } + } + if (rootInvoker) { + list.isInvoking = false; + list.containCanceled && list.purgeCanceled(); + } + } + }; + false; + module.exports = CallbacksInvoker; + }), { + "./js": 260 + }], + 253: [(function (require, module, exports) { + "use strict"; + function deepFlatten(strList, array) { + for (var i = 0; i < array.length; i++) { + var item = array[i]; + Array.isArray(item) ? deepFlatten(strList, item) : strList.push(item); + } + } + function flattenCodeArray(array) { + var separator = ""; + var strList = []; + deepFlatten(strList, array); + return strList.join(separator); + } + module.exports = { + flattenCodeArray: flattenCodeArray + }; + }), {}], + 254: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = deserialize; + exports.unpackJSONs = unpackJSONs; + exports.packCustomObjData = packCustomObjData; + exports.hasNativeDep = hasNativeDep; + exports.getDependUuidList = getDependUuidList; + var _js = _interopRequireDefault(require("./js")); + var _vec = _interopRequireDefault(require("../value-types/vec2")); + var _vec2 = _interopRequireDefault(require("../value-types/vec3")); + var _vec3 = _interopRequireDefault(require("../value-types/vec4")); + var _color = _interopRequireDefault(require("../value-types/color")); + var _size = _interopRequireDefault(require("../value-types/size")); + var _rect = _interopRequireDefault(require("../value-types/rect")); + var _quat = _interopRequireDefault(require("../value-types/quat")); + var _mat = _interopRequireDefault(require("../value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var SUPPORT_MIN_FORMAT_VERSION = 1; + var EMPTY_PLACEHOLDER = 0; + var BuiltinValueTypes = [_vec["default"], _vec2["default"], _vec3["default"], _quat["default"], _color["default"], _size["default"], _rect["default"], _mat["default"]]; + function BuiltinValueTypeParsers_xyzw(obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.z = data[3]; + obj.w = data[4]; + } + var BuiltinValueTypeSetters = [function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + }, function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.z = data[3]; + }, BuiltinValueTypeParsers_xyzw, BuiltinValueTypeParsers_xyzw, function (obj, data) { + obj._val = data[1]; + }, function (obj, data) { + obj.width = data[1]; + obj.height = data[2]; + }, function (obj, data) { + obj.x = data[1]; + obj.y = data[2]; + obj.width = data[3]; + obj.height = data[4]; + }, function (obj, data) { + _mat["default"].fromArray(obj, data, 1); + }]; + function serializeBuiltinValueTypes(obj) { + var ctor = obj.constructor; + var typeId = BuiltinValueTypes.indexOf(ctor); + switch (ctor) { + case _vec["default"]: + return [typeId, obj.x, obj.y]; + + case _vec2["default"]: + return [typeId, obj.x, obj.y, obj.z]; + + case _vec3["default"]: + case _quat["default"]: + return [typeId, obj.x, obj.y, obj.z, obj.w]; + + case _color["default"]: + return [typeId, obj._val]; + + case _size["default"]: + return [typeId, obj.width, obj.height]; + + case _rect["default"]: + return [typeId, obj.x, obj.y, obj.width, obj.height]; + + case _mat["default"]: + var res = new Array(17); + res[VALUETYPE_SETTER] = typeId; + _mat["default"].toArray(res, obj, 1); + return res; + + default: + return null; + } + } + var DataTypeID = { + SimpleType: 0, + InstanceRef: 1, + Array_InstanceRef: 2, + Array_AssetRefByInnerObj: 3, + Class: 4, + ValueTypeCreated: 5, + AssetRefByInnerObj: 6, + TRS: 7, + ValueType: 8, + Array_Class: 9, + CustomizedClass: 10, + Dict: 11, + Array: 12, + ARRAY_LENGTH: 13 + }; + var CLASS_TYPE = 0; + var CLASS_KEYS = 1; + var CLASS_PROP_TYPE_OFFSET = 2; + var MASK_CLASS = 0; + var OBJ_DATA_MASK = 0; + var CUSTOM_OBJ_DATA_CLASS = 0; + var CUSTOM_OBJ_DATA_CONTENT = 1; + var VALUETYPE_SETTER = 0; + var DICT_JSON_LAYOUT = 0; + var ARRAY_ITEM_VALUES = 0; + var Refs = { + EACH_RECORD_LENGTH: 3, + OWNER_OFFSET: 0, + KEY_OFFSET: 1, + TARGET_OFFSET: 2 + }; + var File = { + Version: 0, + Context: 0, + SharedUuids: 1, + SharedStrings: 2, + SharedClasses: 3, + SharedMasks: 4, + Instances: 5, + InstanceTypes: 6, + Refs: 7, + DependObjs: 8, + DependKeys: 9, + DependUuidIndices: 10, + ARRAY_LENGTH: 11 + }; + var PACKED_SECTIONS = 5; + var Details = (function () { + function Details() { + this.uuidObjList = null; + this.uuidPropList = null; + this.uuidList = null; + } + var _proto = Details.prototype; + _proto.init = function init(data) { + this.uuidObjList = data[8]; + this.uuidPropList = data[9]; + this.uuidList = data[10]; + }; + _proto.reset = function reset() { + this.uuidList = null; + this.uuidObjList = null; + this.uuidPropList = null; + }; + _proto.push = function push(obj, propName, uuid) { + this.uuidObjList.push(obj); + this.uuidPropList.push(propName); + this.uuidList.push(uuid); + }; + return Details; + })(); + Details.pool = new _js["default"].Pool(function (obj) { + obj.reset(); + }, 5); + Details.pool.get = function () { + return this._get() || new Details(); + }; + false, false; + function dereference(refs, instances, strings) { + var dataLength = refs.length - 1; + var i = 0; + var instanceOffset = 3 * refs[dataLength]; + for (; i < instanceOffset; i += 3) { + var _owner = refs[i]; + var target = instances[refs[i + 2]]; + var keyIndex = refs[i + 1]; + keyIndex >= 0 ? _owner[strings[keyIndex]] = target : _owner[~keyIndex] = target; + } + for (; i < dataLength; i += 3) { + var _owner2 = instances[refs[i]]; + var _target = instances[refs[i + 2]]; + var _keyIndex = refs[i + 1]; + _keyIndex >= 0 ? _owner2[strings[_keyIndex]] = _target : _owner2[~_keyIndex] = _target; + } + } + function deserializeCCObject(data, objectData) { + var mask = data[4][objectData[0]]; + var clazz = mask[0]; + var ctor = clazz[0]; + var obj = new ctor(); + var keys = clazz[1]; + var classTypeOffset = clazz[2]; + var maskTypeOffset = mask[mask.length - 1]; + var i = 1; + for (; i < maskTypeOffset; ++i) { + var _key = keys[mask[i]]; + obj[_key] = objectData[i]; + } + for (; i < objectData.length; ++i) { + var _key2 = keys[mask[i]]; + var _type = clazz[mask[i] + classTypeOffset]; + var op = ASSIGNMENTS[_type]; + op(data, obj, _key2, objectData[i]); + } + return obj; + } + function deserializeCustomCCObject(data, ctor, value) { + var obj = new ctor(); + obj._deserialize ? obj._deserialize(value, data[0]) : cc.errorID(5303, _js["default"].getClassName(ctor)); + return obj; + } + function assignSimple(data, owner, key, value) { + owner[key] = value; + } + function assignInstanceRef(data, owner, key, value) { + value >= 0 ? owner[key] = data[5][value] : data[7][3 * ~value] = owner; + } + function genArrayParser(parser) { + return function (data, owner, key, value) { + owner[key] = value; + for (var i = 0; i < value.length; ++i) parser(data, value, i, value[i]); + }; + } + function parseAssetRefByInnerObj(data, owner, key, value) { + owner[key] = null; + data[8][value] = owner; + } + function parseClass(data, owner, key, value) { + owner[key] = deserializeCCObject(data, value); + } + function parseCustomClass(data, owner, key, value) { + var ctor = data[3][value[0]]; + owner[key] = deserializeCustomCCObject(data, ctor, value[1]); + } + function parseValueTypeCreated(data, owner, key, value) { + BuiltinValueTypeSetters[value[0]](owner[key], value); + } + function parseValueType(data, owner, key, value) { + var val = new BuiltinValueTypes[value[0]](); + BuiltinValueTypeSetters[value[0]](val, value); + owner[key] = val; + } + function parseTRS(data, owner, key, value) { + var typedArray = owner[key]; + typedArray.set(value); + } + function parseDict(data, owner, key, value) { + var dict = value[0]; + owner[key] = dict; + for (var i = 1; i < value.length; i += 3) { + var _key3 = value[i]; + var _type2 = value[i + 1]; + var subValue = value[i + 2]; + var op = ASSIGNMENTS[_type2]; + op(data, dict, _key3, subValue); + } + } + function parseArray(data, owner, key, value) { + var array = value[0]; + owner[key] = array; + for (var i = 0; i < array.length; ++i) { + var subValue = array[i]; + var _type3 = value[i + 1]; + if (0 !== _type3) { + var op = ASSIGNMENTS[_type3]; + op(data, array, i, subValue); + } + } + } + var ASSIGNMENTS = new Array(13); + ASSIGNMENTS[0] = assignSimple; + ASSIGNMENTS[1] = assignInstanceRef; + ASSIGNMENTS[2] = genArrayParser(assignInstanceRef); + ASSIGNMENTS[3] = genArrayParser(parseAssetRefByInnerObj); + ASSIGNMENTS[4] = parseClass; + ASSIGNMENTS[5] = parseValueTypeCreated; + ASSIGNMENTS[6] = parseAssetRefByInnerObj; + ASSIGNMENTS[7] = parseTRS; + ASSIGNMENTS[8] = parseValueType; + ASSIGNMENTS[9] = genArrayParser(parseClass); + ASSIGNMENTS[10] = parseCustomClass; + ASSIGNMENTS[11] = parseDict; + ASSIGNMENTS[12] = parseArray; + function parseInstances(data) { + var instances = data[5]; + var instanceTypes = data[6]; + var instanceTypesLen = instanceTypes === EMPTY_PLACEHOLDER ? 0 : instanceTypes.length; + var rootIndex = instances[instances.length - 1]; + var normalObjectCount = instances.length - instanceTypesLen; + if ("number" !== typeof rootIndex) rootIndex = 0; else { + rootIndex < 0 && (rootIndex = ~rootIndex); + --normalObjectCount; + } + var insIndex = 0; + for (; insIndex < normalObjectCount; ++insIndex) instances[insIndex] = deserializeCCObject(data, instances[insIndex]); + var classes = data[3]; + for (var typeIndex = 0; typeIndex < instanceTypesLen; ++typeIndex, ++insIndex) { + var _type4 = instanceTypes[typeIndex]; + var eachData = instances[insIndex]; + if (_type4 >= 0) { + var ctor = classes[_type4]; + instances[insIndex] = deserializeCustomCCObject(data, ctor, eachData); + } else { + _type4 = ~_type4; + var op = ASSIGNMENTS[_type4]; + op(data, instances, insIndex, eachData); + } + } + return rootIndex; + } + function getMissingClass(hasCustomFinder, type) { + hasCustomFinder || deserialize.reportMissingClass(type); + return Object; + } + function doLookupClass(classFinder, type, container, index, silent, hasCustomFinder) { + var klass = classFinder(type); + if (!klass) { + if (silent) { + container[index] = (function (container, index, type) { + return function proxy() { + var klass = classFinder(type) || getMissingClass(hasCustomFinder, type); + container[index] = klass; + return new klass(); + }; + })(container, index, type); + return; + } + klass = getMissingClass(hasCustomFinder, type); + } + container[index] = klass; + } + function lookupClasses(data, silent, customFinder) { + var classFinder = customFinder || _js["default"]._getClassById; + var classes = data[3]; + for (var i = 0; i < classes.length; ++i) { + var klassLayout = classes[i]; + if ("string" !== typeof klassLayout) { + true; + if ("function" === typeof klassLayout[0]) throw new Error("Can not deserialize the same JSON data again."); + var _type5 = klassLayout[0]; + doLookupClass(classFinder, _type5, klassLayout, CLASS_TYPE, silent, customFinder); + } else doLookupClass(classFinder, klassLayout, classes, i, silent, customFinder); + } + } + function cacheMasks(data) { + var masks = data[4]; + if (masks) { + var classes = data[3]; + for (var i = 0; i < masks.length; ++i) { + var mask = masks[i]; + mask[0] = classes[mask[0]]; + } + } + } + function parseResult(data) { + var instances = data[5]; + var sharedStrings = data[2]; + var dependSharedUuids = data[1]; + var dependObjs = data[8]; + var dependKeys = data[9]; + var dependUuids = data[10]; + for (var i = 0; i < dependObjs.length; ++i) { + var _obj = dependObjs[i]; + "number" === typeof _obj && (dependObjs[i] = instances[_obj]); + var _key4 = dependKeys[i]; + if ("number" === typeof _key4) { + _key4 = _key4 >= 0 ? sharedStrings[_key4] : ~_key4; + dependKeys[i] = _key4; + } + var uuid = dependUuids[i]; + "number" === typeof uuid && (dependUuids[i] = dependSharedUuids[uuid]); + } + } + function deserialize(data, details, options) { + false; + "string" === typeof data && (data = JSON.parse(data)); + var borrowDetails = !details; + details = details || Details.pool.get(); + details.init(data); + options = options || {}; + var version = data[0]; + var preprocessed = false; + if ("object" === typeof version) { + preprocessed = version.preprocessed; + version = version.version; + } + if (version < SUPPORT_MIN_FORMAT_VERSION) throw new Error(cc.debug.getError(5304, version)); + options._version = version; + options.result = details; + data[0] = options; + if (!preprocessed) { + lookupClasses(data, false, options.classFinder); + cacheMasks(data); + } + cc.game._isCloning = true; + var instances = data[5]; + var rootIndex = parseInstances(data); + cc.game._isCloning = false; + data[7] && dereference(data[7], instances, data[2]); + parseResult(data); + borrowDetails && Details.pool.put(details); + return instances[rootIndex]; + } + deserialize.Details = Details; + var FileInfo = function FileInfo(version) { + this.preprocessed = true; + this.version = version; + }; + function unpackJSONs(data, classFinder) { + if (data[0] < SUPPORT_MIN_FORMAT_VERSION) throw new Error(cc.debug.getError(5304, data[0])); + lookupClasses(data, true, classFinder); + cacheMasks(data); + var version = new FileInfo(data[0]); + var sharedUuids = data[1]; + var sharedStrings = data[2]; + var sharedClasses = data[3]; + var sharedMasks = data[4]; + var sections = data[PACKED_SECTIONS]; + for (var i = 0; i < sections.length; ++i) sections[i].unshift(version, sharedUuids, sharedStrings, sharedClasses, sharedMasks); + return sections; + } + function packCustomObjData(type, data, hasNativeDep) { + return [SUPPORT_MIN_FORMAT_VERSION, EMPTY_PLACEHOLDER, EMPTY_PLACEHOLDER, [type], EMPTY_PLACEHOLDER, hasNativeDep ? [data, -1] : [data], [0], EMPTY_PLACEHOLDER, [], [], []]; + } + function hasNativeDep(data) { + var instances = data[5]; + var rootInfo = instances[instances.length - 1]; + return "number" === typeof rootInfo && rootInfo < 0; + } + false; + function getDependUuidList(json) { + var sharedUuids = json[1]; + return json[10].map((function (index) { + return sharedUuids[index]; + })); + } + false, false; + false; + }), { + "../value-types/color": 338, + "../value-types/mat4": 341, + "../value-types/quat": 342, + "../value-types/rect": 343, + "../value-types/size": 344, + "../value-types/vec2": 348, + "../value-types/vec3": 349, + "../value-types/vec4": 350, + "./js": 260 + }], + 255: [(function (require, module, exports) { + "use strict"; + var _deserializeCompiled = _interopRequireDefault(require("./deserialize-compiled")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + _deserializeCompiled["default"].reportMissingClass = function (id) { + false; + cc.warnID(5302, id); + }; + var deserializeForEditor; + true; + cc.deserialize = _deserializeCompiled["default"]; + }), { + "./deserialize-compiled": 254, + "./deserialize-editor": void 0 + }], + 256: [(function (require, module, exports) { + "use strict"; + var NonUuidMark = "."; + function IdGenerater(category) { + this.id = 0 | 998 * Math.random(); + this.prefix = category ? category + NonUuidMark : ""; + } + IdGenerater.prototype.getNewId = function () { + return this.prefix + ++this.id; + }; + IdGenerater.global = new IdGenerater("global"); + module.exports = IdGenerater; + }), {}], + 257: [(function (require, module, exports) { + "use strict"; + require("./js"); + require("./CCClass"); + require("./CCClassDecorator"); + require("./CCEnum"); + require("./CCObject"); + require("./callbacks-invoker"); + require("./deserialize"); + require("./instantiate"); + require("./instantiate-jit"); + require("./requiring-frame"); + require("./CCSys"); + require("./CCMacro"); + true; + require("./CCVisibleRect"); + }), { + "./CCClass": 239, + "./CCClassDecorator": 240, + "./CCEnum": 241, + "./CCMacro": 244, + "./CCObject": 245, + "./CCSys": 248, + "./CCVisibleRect": 250, + "./callbacks-invoker": 252, + "./deserialize": 255, + "./instantiate": 259, + "./instantiate-jit": 258, + "./js": 260, + "./requiring-frame": 262 + }], + 258: [(function (require, module, exports) { + "use strict"; + var CCObject = require("./CCObject"); + var Destroyed = CCObject.Flags.Destroyed; + var PersistentMask = CCObject.Flags.PersistentMask; + var Attr = require("./attribute"); + var js = require("./js"); + var CCClass = require("./CCClass"); + var Compiler = require("./compiler"); + var DEFAULT = Attr.DELIMETER + "default"; + var IDENTIFIER_RE = CCClass.IDENTIFIER_RE; + var escapeForJS = CCClass.escapeForJS; + var VAR = "var "; + var LOCAL_OBJ = "o"; + var LOCAL_TEMP_OBJ = "t"; + var LOCAL_ARRAY = "a"; + var LINE_INDEX_OF_NEW_OBJ = 0; + var DEFAULT_MODULE_CACHE = { + "cc.Node": "cc.Node", + "cc.Sprite": "cc.Sprite", + "cc.Label": "cc.Label", + "cc.Button": "cc.Button", + "cc.Widget": "cc.Widget", + "cc.Animation": "cc.Animation", + "cc.ClickEvent": false, + "cc.PrefabInfo": false + }; + try { + !Float32Array.name && (Float32Array.name = "Float32Array"); + !Float64Array.name && (Float64Array.name = "Float64Array"); + !Int8Array.name && (Int8Array.name = "Int8Array"); + !Int16Array.name && (Int16Array.name = "Int16Array"); + !Int32Array.name && (Int32Array.name = "Int32Array"); + !Uint8Array.name && (Uint8Array.name = "Uint8Array"); + !Uint16Array.name && (Uint16Array.name = "Uint16Array"); + !Uint32Array.name && (Uint32Array.name = "Uint32Array"); + !Uint8ClampedArray.name && (Uint8ClampedArray.name = "Uint8ClampedArray"); + } catch (e) { } + function getTypedArrayName(constructor) { + if (constructor === Float32Array) return "Float32Array"; + if (constructor === Float64Array) return "Float64Array"; + if (constructor === Int8Array) return "Int8Array"; + if (constructor === Int16Array) return "Int16Array"; + if (constructor === Int32Array) return "Int32Array"; + if (constructor === Uint8Array) return "Uint8Array"; + if (constructor === Uint16Array) return "Uint16Array"; + if (constructor === Uint32Array) return "Uint32Array"; + if (constructor === Uint8ClampedArray) return "Uint8ClampedArray"; + throw new Error("Unknown TypedArray to instantiate: " + constructor); + } + function Declaration(varName, expression) { + this.varName = varName; + this.expression = expression; + } + Declaration.prototype.toString = function () { + return VAR + this.varName + "=" + this.expression + ";"; + }; + function mergeDeclaration(statement, expression) { + return expression instanceof Declaration ? new Declaration(expression.varName, statement + expression.expression) : statement + expression; + } + function writeAssignment(codeArray, statement, expression) { + if (Array.isArray(expression)) { + expression[0] = mergeDeclaration(statement, expression[0]); + codeArray.push(expression); + } else codeArray.push(mergeDeclaration(statement, expression) + ";"); + } + function Assignments(targetExpression) { + this._exps = []; + this._targetExp = targetExpression; + } + Assignments.prototype.append = function (key, expression) { + this._exps.push([key, expression]); + }; + Assignments.prototype.writeCode = function (codeArray) { + var targetVar; + if (this._exps.length > 1) { + codeArray.push(LOCAL_TEMP_OBJ + "=" + this._targetExp + ";"); + targetVar = LOCAL_TEMP_OBJ; + } else { + if (1 !== this._exps.length) return; + targetVar = this._targetExp; + } + for (var i = 0; i < this._exps.length; i++) { + var pair = this._exps[i]; + writeAssignment(codeArray, targetVar + getPropAccessor(pair[0]) + "=", pair[1]); + } + }; + Assignments.pool = new js.Pool(function (obj) { + obj._exps.length = 0; + obj._targetExp = null; + }, 1); + Assignments.pool.get = function (targetExpression) { + var cache = this._get() || new Assignments(); + cache._targetExp = targetExpression; + return cache; + }; + function equalsToDefault(def, value) { + if ("function" === typeof def) try { + def = def(); + } catch (e) { + return false; + } + if (def === value) return true; + if (def && value && "object" === typeof def && "object" === typeof value && def.constructor === value.constructor) if (def instanceof cc.ValueType) { + if (def.equals(value)) return true; + } else { + if (Array.isArray(def)) return 0 === def.length && 0 === value.length; + if (def.constructor === Object) return js.isEmptyObject(def) && js.isEmptyObject(value); + } + return false; + } + function getPropAccessor(key) { + return IDENTIFIER_RE.test(key) ? "." + key : "[" + escapeForJS(key) + "]"; + } + function Parser(obj, parent) { + this.parent = parent; + this.objsToClear_iN$t = []; + this.codeArray = []; + this.objs = []; + this.funcs = []; + this.funcModuleCache = js.createMap(); + js.mixin(this.funcModuleCache, DEFAULT_MODULE_CACHE); + this.globalVariables = []; + this.globalVariableId = 0; + this.localVariableId = 0; + this.codeArray.push(VAR + LOCAL_OBJ + "," + LOCAL_TEMP_OBJ + ";", "if(R){", LOCAL_OBJ + "=R;", "}else{", LOCAL_OBJ + "=R=new " + this.getFuncModule(obj.constructor, true) + "();", "}"); + js.value(obj, "_iN$t", { + globalVar: "R" + }, true); + this.objsToClear_iN$t.push(obj); + this.enumerateObject(this.codeArray, obj); + var globalVariablesDeclaration; + this.globalVariables.length > 0 && (globalVariablesDeclaration = VAR + this.globalVariables.join(",") + ";"); + var code = Compiler.flattenCodeArray(["return (function(R){", globalVariablesDeclaration || [], this.codeArray, "return o;", "})"]); + this.result = Function("O", "F", code)(this.objs, this.funcs); + for (var i = 0, len = this.objsToClear_iN$t.length; i < len; ++i) this.objsToClear_iN$t[i]._iN$t = null; + this.objsToClear_iN$t.length = 0; + } + var proto = Parser.prototype; + proto.getFuncModule = function (func, usedInNew) { + var clsName = js.getClassName(func); + if (clsName) { + var cache = this.funcModuleCache[clsName]; + if (cache) return cache; + if (void 0 === cache) { + var clsNameIsModule = -1 !== clsName.indexOf("."); + if (clsNameIsModule) try { + clsNameIsModule = func === Function("return " + clsName)(); + if (clsNameIsModule) { + this.funcModuleCache[clsName] = clsName; + return clsName; + } + } catch (e) { } + } + } + var index = this.funcs.indexOf(func); + if (index < 0) { + index = this.funcs.length; + this.funcs.push(func); + } + var res = "F[" + index + "]"; + usedInNew && (res = "(" + res + ")"); + this.funcModuleCache[clsName] = res; + return res; + }; + proto.getObjRef = function (obj) { + var index = this.objs.indexOf(obj); + if (index < 0) { + index = this.objs.length; + this.objs.push(obj); + } + return "O[" + index + "]"; + }; + proto.setValueType = function (codeArray, defaultValue, srcValue, targetExpression) { + var assignments = Assignments.pool.get(targetExpression); + var fastDefinedProps = defaultValue.constructor.__props__; + fastDefinedProps || (fastDefinedProps = Object.keys(defaultValue)); + for (var i = 0; i < fastDefinedProps.length; i++) { + var propName = fastDefinedProps[i]; + var prop = srcValue[propName]; + if (defaultValue[propName] === prop) continue; + var expression = this.enumerateField(srcValue, propName, prop); + assignments.append(propName, expression); + } + assignments.writeCode(codeArray); + Assignments.pool.put(assignments); + }; + proto.enumerateCCClass = function (codeArray, obj, klass) { + var props = klass.__values__; + var attrs = Attr.getClassAttrs(klass); + for (var p = 0; p < props.length; p++) { + var key = props[p]; + var val = obj[key]; + var defaultValue = attrs[key + DEFAULT]; + if (equalsToDefault(defaultValue, val)) continue; + if ("object" === typeof val && val instanceof cc.ValueType) { + defaultValue = CCClass.getDefault(defaultValue); + if (defaultValue && defaultValue.constructor === val.constructor) { + var targetExpression = LOCAL_OBJ + getPropAccessor(key); + this.setValueType(codeArray, defaultValue, val, targetExpression); + continue; + } + } + this.setObjProp(codeArray, obj, key, val); + } + }; + proto.instantiateArray = function (value) { + if (0 === value.length) return "[]"; + var arrayVar = LOCAL_ARRAY + ++this.localVariableId; + var declaration = new Declaration(arrayVar, "new Array(" + value.length + ")"); + var codeArray = [declaration]; + js.value(value, "_iN$t", { + globalVar: "", + source: codeArray + }, true); + this.objsToClear_iN$t.push(value); + for (var i = 0; i < value.length; ++i) { + var statement = arrayVar + "[" + i + "]="; + var expression = this.enumerateField(value, i, value[i]); + writeAssignment(codeArray, statement, expression); + } + return codeArray; + }; + proto.instantiateTypedArray = function (value) { + var type = value.constructor.name || getTypedArrayName(value.constructor); + if (0 === value.length) return "new " + type; + var arrayVar = LOCAL_ARRAY + ++this.localVariableId; + var declaration = new Declaration(arrayVar, "new " + type + "(" + value.length + ")"); + var codeArray = [declaration]; + value._iN$t = { + globalVar: "", + source: codeArray + }; + this.objsToClear_iN$t.push(value); + for (var i = 0; i < value.length; ++i) if (0 !== value[i]) { + var statement = arrayVar + "[" + i + "]="; + writeAssignment(codeArray, statement, value[i]); + } + return codeArray; + }; + proto.enumerateField = function (obj, key, value) { + if ("object" === typeof value && value) { + var _iN$t = value._iN$t; + if (_iN$t) { + var globalVar = _iN$t.globalVar; + if (!globalVar) { + globalVar = _iN$t.globalVar = "v" + ++this.globalVariableId; + this.globalVariables.push(globalVar); + var line = _iN$t.source[LINE_INDEX_OF_NEW_OBJ]; + _iN$t.source[LINE_INDEX_OF_NEW_OBJ] = mergeDeclaration(globalVar + "=", line); + } + return globalVar; + } + return ArrayBuffer.isView(value) ? this.instantiateTypedArray(value) : Array.isArray(value) ? this.instantiateArray(value) : this.instantiateObj(value); + } + if ("function" === typeof value) return this.getFuncModule(value); + if ("string" === typeof value) return escapeForJS(value); + "_objFlags" === key && obj instanceof CCObject && (value &= PersistentMask); + return value; + }; + proto.setObjProp = function (codeArray, obj, key, value) { + var statement = LOCAL_OBJ + getPropAccessor(key) + "="; + var expression = this.enumerateField(obj, key, value); + writeAssignment(codeArray, statement, expression); + }; + proto.enumerateObject = function (codeArray, obj) { + var klass = obj.constructor; + if (cc.Class._isCCClass(klass)) this.enumerateCCClass(codeArray, obj, klass); else for (var key in obj) { + if (!obj.hasOwnProperty(key) || 95 === key.charCodeAt(0) && 95 === key.charCodeAt(1) && "__type__" !== key) continue; + var value = obj[key]; + if ("object" === typeof value && value && value === obj._iN$t) continue; + this.setObjProp(codeArray, obj, key, value); + } + }; + proto.instantiateObj = function (obj) { + if (obj instanceof cc.ValueType) return CCClass.getNewValueTypeCode(obj); + if (obj instanceof cc.Asset) return this.getObjRef(obj); + if (obj._objFlags & Destroyed) return null; + var createCode; + var ctor = obj.constructor; + if (cc.Class._isCCClass(ctor)) { + if (this.parent) if (this.parent instanceof cc.Component) { + if (obj instanceof cc._BaseNode || obj instanceof cc.Component) return this.getObjRef(obj); + } else if (this.parent instanceof cc._BaseNode) if (obj instanceof cc._BaseNode) { + if (!obj.isChildOf(this.parent)) return this.getObjRef(obj); + } else if (obj instanceof cc.Component && !obj.node.isChildOf(this.parent)) return this.getObjRef(obj); + createCode = new Declaration(LOCAL_OBJ, "new " + this.getFuncModule(ctor, true) + "()"); + } else if (ctor === Object) createCode = new Declaration(LOCAL_OBJ, "{}"); else { + if (ctor) return this.getObjRef(obj); + createCode = new Declaration(LOCAL_OBJ, "Object.create(null)"); + } + var codeArray = [createCode]; + js.value(obj, "_iN$t", { + globalVar: "", + source: codeArray + }, true); + this.objsToClear_iN$t.push(obj); + this.enumerateObject(codeArray, obj); + return ["(function(){", codeArray, "return o;})();"]; + }; + function compile(node) { + var root = node instanceof cc._BaseNode && node; + var parser = new Parser(node, root); + return parser.result; + } + module.exports = { + compile: compile, + equalsToDefault: equalsToDefault + }; + false; + }), { + "./CCClass": 239, + "./CCObject": 245, + "./attribute": 251, + "./compiler": 253, + "./js": 260 + }], + 259: [(function (require, module, exports) { + "use strict"; + var CCObject = require("./CCObject"); + var CCValueType = require("../value-types/value-type"); + var Destroyed = CCObject.Flags.Destroyed; + var PersistentMask = CCObject.Flags.PersistentMask; + var _isDomNode = require("./utils").isDomNode; + var js = require("./js"); + function instantiate(original, internal_force) { + if (!internal_force) { + if ("object" !== typeof original || Array.isArray(original)) { + false; + return null; + } + if (!original) { + false; + return null; + } + if (!cc.isValid(original)) { + false; + return null; + } + false; + } + var clone; + if (original instanceof CCObject) { + if (original._instantiate) { + cc.game._isCloning = true; + clone = original._instantiate(null, true); + cc.game._isCloning = false; + return clone; + } + if (original instanceof cc.Asset) { + false; + return null; + } + } + cc.game._isCloning = true; + clone = doInstantiate(original); + cc.game._isCloning = false; + return clone; + } + var objsToClearTmpVar = []; + function doInstantiate(obj, parent) { + if (Array.isArray(obj)) { + false; + return null; + } + if (_isDomNode && _isDomNode(obj)) { + false; + return null; + } + var clone; + if (obj._iN$t) clone = obj._iN$t; else if (obj.constructor) { + var klass = obj.constructor; + clone = new klass(); + } else clone = Object.create(null); + enumerateObject(obj, clone, parent); + for (var i = 0, len = objsToClearTmpVar.length; i < len; ++i) objsToClearTmpVar[i]._iN$t = null; + objsToClearTmpVar.length = 0; + return clone; + } + function enumerateCCClass(klass, obj, clone, parent) { + var props = klass.__values__; + for (var p = 0; p < props.length; p++) { + var key = props[p]; + var value = obj[key]; + if ("object" === typeof value && value) { + var initValue = clone[key]; + initValue instanceof CCValueType && initValue.constructor === value.constructor ? initValue.set(value) : clone[key] = value._iN$t || instantiateObj(value, parent); + } else clone[key] = value; + } + } + function enumerateObject(obj, clone, parent) { + js.value(obj, "_iN$t", clone, true); + objsToClearTmpVar.push(obj); + var klass = obj.constructor; + if (cc.Class._isCCClass(klass)) enumerateCCClass(klass, obj, clone, parent); else for (var key in obj) { + if (!obj.hasOwnProperty(key) || 95 === key.charCodeAt(0) && 95 === key.charCodeAt(1) && "__type__" !== key) continue; + var value = obj[key]; + if ("object" === typeof value && value) { + if (value === clone) continue; + clone[key] = value._iN$t || instantiateObj(value, parent); + } else clone[key] = value; + } + obj instanceof CCObject && (clone._objFlags &= PersistentMask); + } + function instantiateObj(obj, parent) { + if (obj instanceof CCValueType) return obj.clone(); + if (obj instanceof cc.Asset) return obj; + var clone; + if (ArrayBuffer.isView(obj)) { + var len = obj.length; + clone = new obj.constructor(len); + obj._iN$t = clone; + objsToClearTmpVar.push(obj); + for (var i = 0; i < len; ++i) clone[i] = obj[i]; + return clone; + } + if (Array.isArray(obj)) { + var _len = obj.length; + clone = new Array(_len); + js.value(obj, "_iN$t", clone, true); + objsToClearTmpVar.push(obj); + for (var _i = 0; _i < _len; ++_i) { + var value = obj[_i]; + clone[_i] = "object" === typeof value && value ? value._iN$t || instantiateObj(value, parent) : value; + } + return clone; + } + if (obj._objFlags & Destroyed) return null; + var ctor = obj.constructor; + if (cc.Class._isCCClass(ctor)) { + if (parent) if (parent instanceof cc.Component) { + if (obj instanceof cc._BaseNode || obj instanceof cc.Component) return obj; + } else if (parent instanceof cc._BaseNode) if (obj instanceof cc._BaseNode) { + if (!obj.isChildOf(parent)) return obj; + } else if (obj instanceof cc.Component && !obj.node.isChildOf(parent)) return obj; + clone = new ctor(); + } else if (ctor === Object) clone = {}; else { + if (ctor) return obj; + clone = Object.create(null); + } + enumerateObject(obj, clone, parent); + return clone; + } + instantiate._clone = doInstantiate; + cc.instantiate = instantiate; + module.exports = instantiate; + }), { + "../value-types/value-type": 347, + "./CCObject": 245, + "./js": 260, + "./utils": 263 + }], + 260: [(function (require, module, exports) { + "use strict"; + var tempCIDGenerater = new (require("./id-generater"))("TmpCId."); + function _getPropertyDescriptor(obj, name) { + while (obj) { + var pd = Object.getOwnPropertyDescriptor(obj, name); + if (pd) return pd; + obj = Object.getPrototypeOf(obj); + } + return null; + } + function _copyprop(name, source, target) { + var pd = _getPropertyDescriptor(source, name); + Object.defineProperty(target, name, pd); + } + var js = { + isNumber: function isNumber(obj) { + return "number" === typeof obj || obj instanceof Number; + }, + isString: function isString(obj) { + return "string" === typeof obj || obj instanceof String; + }, + addon: function addon(obj) { + obj = obj || {}; + for (var i = 1, length = arguments.length; i < length; i++) { + var source = arguments[i]; + if (source) { + if ("object" !== typeof source) { + cc.errorID(5402, source); + continue; + } + for (var name in source) name in obj || _copyprop(name, source, obj); + } + } + return obj; + }, + mixin: function mixin(obj) { + obj = obj || {}; + for (var i = 1, length = arguments.length; i < length; i++) { + var source = arguments[i]; + if (source) { + if ("object" !== typeof source) { + cc.errorID(5403, source); + continue; + } + for (var name in source) _copyprop(name, source, obj); + } + } + return obj; + }, + extend: function extend(cls, base) { + false; + for (var p in base) base.hasOwnProperty(p) && (cls[p] = base[p]); + cls.prototype = Object.create(base.prototype, { + constructor: { + value: cls, + writable: true, + configurable: true + } + }); + return cls; + }, + getSuper: function getSuper(ctor) { + var proto = ctor.prototype; + var dunderProto = proto && Object.getPrototypeOf(proto); + return dunderProto && dunderProto.constructor; + }, + isChildClassOf: function isChildClassOf(subclass, superclass) { + if (subclass && superclass) { + if ("function" !== typeof subclass) return false; + if ("function" !== typeof superclass) { + false; + return false; + } + if (subclass === superclass) return true; + for (; ;) { + subclass = js.getSuper(subclass); + if (!subclass) return false; + if (subclass === superclass) return true; + } + } + return false; + }, + clear: function clear(obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) delete obj[keys[i]]; + }, + isEmptyObject: function isEmptyObject(obj) { + for (var key in obj) return false; + return true; + }, + getPropertyDescriptor: _getPropertyDescriptor + }; + var tmpValueDesc = { + value: void 0, + enumerable: false, + writable: false, + configurable: true + }; + js.value = function (obj, prop, value, writable, enumerable) { + tmpValueDesc.value = value; + tmpValueDesc.writable = writable; + tmpValueDesc.enumerable = enumerable; + Object.defineProperty(obj, prop, tmpValueDesc); + tmpValueDesc.value = void 0; + }; + var tmpGetSetDesc = { + get: null, + set: null, + enumerable: false + }; + js.getset = function (obj, prop, getter, setter, enumerable, configurable) { + if ("function" !== typeof setter) { + enumerable = setter; + setter = void 0; + } + tmpGetSetDesc.get = getter; + tmpGetSetDesc.set = setter; + tmpGetSetDesc.enumerable = enumerable; + tmpGetSetDesc.configurable = configurable; + Object.defineProperty(obj, prop, tmpGetSetDesc); + tmpGetSetDesc.get = null; + tmpGetSetDesc.set = null; + }; + var tmpGetDesc = { + get: null, + enumerable: false, + configurable: false + }; + js.get = function (obj, prop, getter, enumerable, configurable) { + tmpGetDesc.get = getter; + tmpGetDesc.enumerable = enumerable; + tmpGetDesc.configurable = configurable; + Object.defineProperty(obj, prop, tmpGetDesc); + tmpGetDesc.get = null; + }; + var tmpSetDesc = { + set: null, + enumerable: false, + configurable: false + }; + js.set = function (obj, prop, setter, enumerable, configurable) { + tmpSetDesc.set = setter; + tmpSetDesc.enumerable = enumerable; + tmpSetDesc.configurable = configurable; + Object.defineProperty(obj, prop, tmpSetDesc); + tmpSetDesc.set = null; + }; + js.getClassName = function (objOrCtor) { + if ("function" === typeof objOrCtor) { + var prototype = objOrCtor.prototype; + if (prototype && prototype.hasOwnProperty("__classname__") && prototype.__classname__) return prototype.__classname__; + var retval = ""; + objOrCtor.name && (retval = objOrCtor.name); + if (objOrCtor.toString) { + var arr, str = objOrCtor.toString(); + arr = "[" === str.charAt(0) ? str.match(/\[\w+\s*(\w+)\]/) : str.match(/function\s*(\w+)/); + arr && 2 === arr.length && (retval = arr[1]); + } + return "Object" !== retval ? retval : ""; + } + if (objOrCtor && objOrCtor.constructor) return js.getClassName(objOrCtor.constructor); + return ""; + }; + function isTempClassId(id) { + return "string" !== typeof id || id.startsWith(tempCIDGenerater.prefix); + } + (function () { + var _idToClass = {}; + var _nameToClass = {}; + function setup(key, publicName, table) { + js.getset(js, publicName, (function () { + return Object.assign({}, table); + }), (function (value) { + js.clear(table); + Object.assign(table, value); + })); + return function (id, constructor) { + constructor.prototype.hasOwnProperty(key) && delete table[constructor.prototype[key]]; + js.value(constructor.prototype, key, id); + if (id) { + var registered = table[id]; + if (registered && registered !== constructor) { + var error = "A Class already exists with the same " + key + ' : "' + id + '".'; + false; + cc.error(error); + } else table[id] = constructor; + } + }; + } + js._setClassId = setup("__cid__", "_registeredClassIds", _idToClass); + var doSetClassName = setup("__classname__", "_registeredClassNames", _nameToClass); + js.setClassName = function (className, constructor) { + doSetClassName(className, constructor); + if (!constructor.prototype.hasOwnProperty("__cid__")) { + var id = className || tempCIDGenerater.getNewId(); + id && js._setClassId(id, constructor); + } + }; + js.unregisterClass = function () { + for (var i = 0; i < arguments.length; i++) { + var p = arguments[i].prototype; + var classId = p.__cid__; + classId && delete _idToClass[classId]; + var classname = p.__classname__; + classname && delete _nameToClass[classname]; + } + }; + js._getClassById = function (classId) { + return _idToClass[classId]; + }; + js.getClassByName = function (classname) { + return _nameToClass[classname]; + }; + js._getClassId = function (obj, allowTempId) { + allowTempId = "undefined" === typeof allowTempId || allowTempId; + var res; + if ("function" === typeof obj && obj.prototype.hasOwnProperty("__cid__")) { + res = obj.prototype.__cid__; + if (!allowTempId && (false, false) && isTempClassId(res)) return ""; + return res; + } + if (obj && obj.constructor) { + var prototype = obj.constructor.prototype; + if (prototype && prototype.hasOwnProperty("__cid__")) { + res = obj.__cid__; + if (!allowTempId && (false, false) && isTempClassId(res)) return ""; + return res; + } + } + return ""; + }; + })(); + js.obsolete = function (obj, obsoleted, newExpr, writable) { + var extractPropName = /([^.]+)$/; + var oldProp = extractPropName.exec(obsoleted)[0]; + var newProp = extractPropName.exec(newExpr)[0]; + function get() { + false; + return this[newProp]; + } + writable ? js.getset(obj, oldProp, get, (function (value) { + false; + this[newProp] = value; + })) : js.get(obj, oldProp, get); + }; + js.obsoletes = function (obj, objName, props, writable) { + for (var obsoleted in props) { + var newName = props[obsoleted]; + js.obsolete(obj, objName + "." + obsoleted, newName, writable); + } + }; + var REGEXP_NUM_OR_STR = /(%d)|(%s)/; + var REGEXP_STR = /%s/; + js.formatStr = function () { + var argLen = arguments.length; + if (0 === argLen) return ""; + var msg = arguments[0]; + if (1 === argLen) return "" + msg; + var hasSubstitution = "string" === typeof msg && REGEXP_NUM_OR_STR.test(msg); + if (hasSubstitution) for (var i = 1; i < argLen; ++i) { + var arg = arguments[i]; + var regExpToTest = "number" === typeof arg ? REGEXP_NUM_OR_STR : REGEXP_STR; + if (regExpToTest.test(msg)) { + var notReplaceFunction = "" + arg; + msg = msg.replace(regExpToTest, notReplaceFunction); + } else msg += " " + arg; + } else for (var _i = 1; _i < argLen; ++_i) msg += " " + arguments[_i]; + return msg; + }; + js.shiftArguments = function () { + var len = arguments.length - 1; + var args = new Array(len); + for (var i = 0; i < len; ++i) args[i] = arguments[i + 1]; + return args; + }; + js.createMap = function (forceDictMode) { + var map = Object.create(null); + if (forceDictMode) { + var INVALID_IDENTIFIER_1 = "."; + var INVALID_IDENTIFIER_2 = "/"; + map[INVALID_IDENTIFIER_1] = true; + map[INVALID_IDENTIFIER_2] = true; + delete map[INVALID_IDENTIFIER_1]; + delete map[INVALID_IDENTIFIER_2]; + } + return map; + }; + function removeAt(array, index) { + array.splice(index, 1); + } + function fastRemoveAt(array, index) { + var length = array.length; + if (index < 0 || index >= length) return; + array[index] = array[length - 1]; + array.length = length - 1; + } + function remove(array, value) { + var index = array.indexOf(value); + if (index >= 0) { + removeAt(array, index); + return true; + } + return false; + } + function fastRemove(array, value) { + var index = array.indexOf(value); + if (index >= 0) { + array[index] = array[array.length - 1]; + --array.length; + } + } + function verifyType(array, type) { + if (array && array.length > 0) for (var i = 0; i < array.length; i++) if (!(array[i] instanceof type)) { + cc.logID(1300); + return false; + } + return true; + } + function removeArray(array, minusArr) { + for (var i = 0, l = minusArr.length; i < l; i++) remove(array, minusArr[i]); + } + function appendObjectsAt(array, addObjs, index) { + array.splice.apply(array, [index, 0].concat(addObjs)); + return array; + } + function contains(array, value) { + return array.indexOf(value) >= 0; + } + function copy(array) { + var i, len = array.length, arr_clone = new Array(len); + for (i = 0; i < len; i += 1) arr_clone[i] = array[i]; + return arr_clone; + } + js.array = { + remove: remove, + fastRemove: fastRemove, + removeAt: removeAt, + fastRemoveAt: fastRemoveAt, + contains: contains, + verifyType: verifyType, + removeArray: removeArray, + appendObjectsAt: appendObjectsAt, + copy: copy, + MutableForwardIterator: require("../utils/mutable-forward-iterator") + }; + function Pool(cleanupFunc, size) { + if (void 0 === size) { + size = cleanupFunc; + cleanupFunc = null; + } + this.get = null; + this.count = 0; + this._pool = new Array(size); + this._cleanup = cleanupFunc; + } + Pool.prototype._get = function () { + if (this.count > 0) { + --this.count; + var cache = this._pool[this.count]; + this._pool[this.count] = null; + return cache; + } + return null; + }; + Pool.prototype.put = function (obj) { + var pool = this._pool; + if (this.count < pool.length) { + if (this._cleanup && false === this._cleanup(obj)) return; + pool[this.count] = obj; + ++this.count; + } + }; + Pool.prototype.resize = function (length) { + if (length >= 0) { + this._pool.length = length; + this.count > length && (this.count = length); + } + }; + js.Pool = Pool; + cc.js = js; + module.exports = js; + }), { + "../utils/mutable-forward-iterator": 325, + "./id-generater": 256 + }], + 261: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + var Attrs = require("./attribute"); + var SerializableAttrs = { + default: {}, + serializable: {}, + editorOnly: {}, + formerlySerializedAs: {} + }; + var TYPO_TO_CORRECT_DEV = false; + function parseNotify(val, propName, notify, properties) { + if (val.get || val.set) { + false; + return; + } + if (val.hasOwnProperty("default")) { + var newKey = "_N$" + propName; + val.get = function () { + return this[newKey]; + }; + val.set = function (value) { + var oldValue = this[newKey]; + this[newKey] = value; + notify.call(this, oldValue); + }; + false; + var newValue = {}; + properties[newKey] = newValue; + for (var attr in SerializableAttrs) { + var v = SerializableAttrs[attr]; + if (val.hasOwnProperty(attr)) { + newValue[attr] = val[attr]; + v.canUsedInGet || delete val[attr]; + } + } + } else false; + } + function parseType(val, type, className, propName) { + var STATIC_CHECK = (false, false); + if (Array.isArray(type)) { + if (STATIC_CHECK && "default" in val) { + var isArray = require("./CCClass").isArray; + isArray(val["default"]) || cc.warnID(5507, className, propName); + } + if (!(type.length > 0)) return cc.errorID(5508, className, propName); + val.type = type = type[0]; + } + if ("function" === typeof type) { + if (type === String) { + val.type = cc.String; + STATIC_CHECK && cc.warnID(3608, '"' + className + "." + propName + '"'); + } else if (type === Boolean) { + val.type = cc.Boolean; + STATIC_CHECK && cc.warnID(3609, '"' + className + "." + propName + '"'); + } else if (type === Number) { + val.type = cc.Float; + STATIC_CHECK && cc.warnID(3610, '"' + className + "." + propName + '"'); + } + } else if (STATIC_CHECK) switch (type) { + case "Number": + cc.warnID(5510, className, propName); + break; + + case "String": + cc.warn('The type of "' + className + "." + propName + '" must be cc.String, not "String".'); + break; + + case "Boolean": + cc.warn('The type of "' + className + "." + propName + '" must be cc.Boolean, not "Boolean".'); + break; + + case "Float": + cc.warn('The type of "' + className + "." + propName + '" must be cc.Float, not "Float".'); + break; + + case "Integer": + cc.warn('The type of "' + className + "." + propName + '" must be cc.Integer, not "Integer".'); + break; + + case null: + cc.warnID(5511, className, propName); + } + false; + } + function getBaseClassWherePropertyDefined_DEV(propName, cls) { + var res; + false; + } + function _wrapOptions(isES6Getset, _default, type) { + var res = isES6Getset ? { + _short: true + } : { + _short: true, + default: _default + }; + type && (res.type = type); + return res; + } + exports.getFullFormOfProperty = function (options, isES6Getset) { + var isLiteral = options && options.constructor === Object; + if (isLiteral) return null; + return Array.isArray(options) && options.length > 0 ? _wrapOptions(isES6Getset, [], options) : "function" === typeof options ? _wrapOptions(isES6Getset, js.isChildClassOf(options, cc.ValueType) ? new options() : null, options) : options instanceof Attrs.PrimitiveType ? _wrapOptions(isES6Getset, options["default"]) : _wrapOptions(isES6Getset, options); + }; + exports.preprocessAttrs = function (properties, className, cls, es6) { + for (var propName in properties) { + var val = properties[propName]; + var fullForm = exports.getFullFormOfProperty(val, false); + fullForm && (val = properties[propName] = fullForm); + if (val) { + var maybeTypeScript; + false; + var baseClass; + false; + var notify = val.notify; + if (notify) { + false; + parseNotify(val, propName, notify, properties); + } + "type" in val && parseType(val, val.type, className, propName); + } + } + }; + var CALL_SUPER_DESTROY_REG_DEV; + false; + exports.validateMethodWithProps = function (func, funcName, className, cls, base) { + false; + if ("function" !== typeof func && null !== func) { + var overrided; + var baseFuc; + var subFuc; + var correct; + false; + return false; + } + false; + return true; + }; + }), { + "./CCClass": 239, + "./attribute": 251, + "./js": 260 + }], + 262: [(function (require, module, exports) { + "use strict"; + var requiringFrames = []; + cc._RF = { + push: function push(module, uuid, script) { + if (void 0 === script) { + script = uuid; + uuid = ""; + } + requiringFrames.push({ + uuid: uuid, + script: script, + module: module, + exports: module.exports, + beh: null + }); + }, + pop: function pop() { + var frameInfo = requiringFrames.pop(); + var module = frameInfo.module; + var exports = module.exports; + if (exports === frameInfo.exports) { + for (var anyKey in exports) return; + module.exports = exports = frameInfo.cls; + } + }, + peek: function peek() { + return requiringFrames[requiringFrames.length - 1]; + } + }; + false; + }), {}], + 263: [(function (require, module, exports) { + "use strict"; + var js = require("./js"); + module.exports = { + contains: function contains(refNode, otherNode) { + if ("function" == typeof refNode.contains) return refNode.contains(otherNode); + if ("function" == typeof refNode.compareDocumentPosition) return !!(16 & refNode.compareDocumentPosition(otherNode)); + var node = otherNode.parentNode; + if (node) do { + if (node === refNode) return true; + node = node.parentNode; + } while (null !== node); + return false; + }, + isDomNode: "object" === typeof window && ("function" === typeof Node ? function (obj) { + return obj instanceof Node; + } : function (obj) { + return obj && "object" === typeof obj && "number" === typeof obj.nodeType && "string" === typeof obj.nodeName; + }), + callInNextTick: function (callback, p1, p2) { + callback && setTimeout((function () { + callback(p1, p2); + }), 0); + } + }; + false; + false; + }), { + "./js": 260 + }], + 264: [(function (require, module, exports) { + "use strict"; + require("./platform/js"); + require("./value-types"); + require("./utils"); + require("./platform/CCInputManager"); + require("./platform/CCInputExtension"); + require("./event"); + require("./platform/CCSys"); + require("./platform/CCMacro"); + require("./asset-manager"); + require("./CCDirector"); + require("./renderer"); + true; + require("./platform/CCView"); + require("./platform/CCScreen"); + require("./CCScheduler"); + require("./event-manager"); + }), { + "./CCDirector": 71, + "./CCScheduler": 76, + "./asset-manager": 94, + "./event": 188, + "./event-manager": 184, + "./platform/CCInputExtension": 242, + "./platform/CCInputManager": 243, + "./platform/CCMacro": 244, + "./platform/CCScreen": 247, + "./platform/CCSys": 248, + "./platform/CCView": 249, + "./platform/js": 260, + "./renderer": 271, + "./utils": 323, + "./value-types": 339 + }], + 265: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("./assembler")); + var _manager = _interopRequireDefault(require("./utils/dynamic-atlas/manager")); + var _renderData = _interopRequireDefault(require("./webgl/render-data")); + var _valueTypes = require("../value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _assertThisInitialized(self) { + if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return self; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler2D = (function (_Assembler) { + _inheritsLoose(Assembler2D, _Assembler); + function Assembler2D() { + var _this; + _this = _Assembler.call(this) || this; + _this._renderData = new _renderData["default"](); + _this._renderData.init(_assertThisInitialized(_this)); + _this.initData(); + _this.initLocal(); + return _this; + } + var _proto = Assembler2D.prototype; + _proto.initData = function initData() { + var data = this._renderData; + data.createQuadData(0, this.verticesFloats, this.indicesCount); + }; + _proto.initLocal = function initLocal() { + this._local = []; + this._local.length = 4; + }; + _proto.updateColor = function updateColor(comp, color) { + var uintVerts = this._renderData.uintVDatas[0]; + if (!uintVerts) return; + color = null != color ? color : comp.node.color._val; + var floatsPerVert = this.floatsPerVert; + var colorOffset = this.colorOffset; + for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) uintVerts[i] = color; + }; + _proto.getBuffer = function getBuffer() { + return cc.renderer._handle._meshBuffer; + }; + _proto.updateWorldVerts = function updateWorldVerts(comp) { + var local = this._local; + var verts = this._renderData.vDatas[0]; + var matrix = comp.node._worldMatrix; + var matrixm = matrix.m, a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var vl = local[0], vr = local[2], vb = local[1], vt = local[3]; + var floatsPerVert = this.floatsPerVert; + var vertexOffset = 0; + var justTranslate = 1 === a && 0 === b && 0 === c && 1 === d; + if (justTranslate) { + verts[vertexOffset] = vl + tx; + verts[vertexOffset + 1] = vb + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = vr + tx; + verts[vertexOffset + 1] = vb + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = vl + tx; + verts[vertexOffset + 1] = vt + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = vr + tx; + verts[vertexOffset + 1] = vt + ty; + } else { + var al = a * vl, ar = a * vr, bl = b * vl, br = b * vr, cb = c * vb, ct = c * vt, db = d * vb, dt = d * vt; + verts[vertexOffset] = al + cb + tx; + verts[vertexOffset + 1] = bl + db + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = ar + cb + tx; + verts[vertexOffset + 1] = br + db + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = al + ct + tx; + verts[vertexOffset + 1] = bl + dt + ty; + vertexOffset += floatsPerVert; + verts[vertexOffset] = ar + ct + tx; + verts[vertexOffset + 1] = br + dt + ty; + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + renderer.worldMatDirty && this.updateWorldVerts(comp); + var renderData = this._renderData; + var vData = renderData.vDatas[0]; + var iData = renderData.iDatas[0]; + var buffer = this.getBuffer(renderer); + var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); + var vertexOffset = offsetInfo.byteOffset >> 2, vbuf = buffer._vData; + vData.length + vertexOffset > vbuf.length ? vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset) : vbuf.set(vData, vertexOffset); + var ibuf = buffer._iData, indiceOffset = offsetInfo.indiceOffset, vertexId = offsetInfo.vertexOffset; + for (var i = 0, l = iData.length; i < l; i++) ibuf[indiceOffset++] = vertexId + iData[i]; + }; + _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { + false; + if (!frame._original && _manager["default"] && frame._texture.packable) { + var packedFrame = _manager["default"].insertSpriteFrame(frame); + packedFrame && frame._setDynamicAtlasFrame(packedFrame); + } + var material = comp._materials[0]; + if (!material) return; + if (material.getProperty("texture") !== frame._texture) { + comp._vertsDirty = true; + comp._updateMaterial(); + } + }; + _createClass(Assembler2D, [{ + key: "verticesFloats", + get: function get() { + return this.verticesCount * this.floatsPerVert; + } + }]); + return Assembler2D; + })(_assembler["default"]); + exports["default"] = Assembler2D; + cc.js.addon(Assembler2D.prototype, { + floatsPerVert: 5, + verticesCount: 4, + indicesCount: 6, + uvOffset: 2, + colorOffset: 4 + }); + cc.Assembler2D = Assembler2D; + module.exports = exports["default"]; + }), { + "../value-types": 339, + "./assembler": 268, + "./utils/dynamic-atlas/manager": 274, + "./webgl/render-data": 311 + }], + 266: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vertexFormat = require("./webgl/vertex-format"); + var _vec = _interopRequireDefault(require("../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var vec3_temps = []; + for (var i = 0; i < 4; i++) vec3_temps.push(cc.v3()); + var Assembler3D = { + floatsPerVert: 6, + uvOffset: 3, + colorOffset: 5, + getBuffer: function getBuffer(renderer) { + return renderer._meshBuffer3D; + }, + getVfmt: function getVfmt() { + return _vertexFormat.vfmt3D; + }, + updateWorldVerts: function updateWorldVerts(comp) { + var matrix = comp.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + _vec["default"].set(vec3_temps[0], local[0], local[1], 0); + _vec["default"].set(vec3_temps[1], local[2], local[1], 0); + _vec["default"].set(vec3_temps[2], local[0], local[3], 0); + _vec["default"].set(vec3_temps[3], local[2], local[3], 0); + var floatsPerVert = this.floatsPerVert; + for (var _i = 0; _i < 4; _i++) { + var vertex = vec3_temps[_i]; + _vec["default"].transformMat4(vertex, vertex, matrix); + var dstOffset = floatsPerVert * _i; + world[dstOffset] = vertex.x; + world[dstOffset + 1] = vertex.y; + world[dstOffset + 2] = vertex.z; + } + } + }; + cc.Assembler3D = Assembler3D; + var _default = Assembler3D; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../value-types/vec3": 349, + "./webgl/vertex-format": 313 + }], + 267: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _pool3 = _interopRequireDefault(require("../utils/pool")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _assemblerId = 0; + function getAssemblerId(assemblerCtor) { + Object.getOwnPropertyDescriptor(assemblerCtor, "__assemblerId__") || (assemblerCtor.__assemblerId__ = ++_assemblerId); + return assemblerCtor.__assemblerId__; + } + var AssemblerPool = (function (_Pool) { + _inheritsLoose(AssemblerPool, _Pool); + function AssemblerPool() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; + _this = _Pool.call.apply(_Pool, [this].concat(args)) || this; + _this._pool = {}; + return _this; + } + var _proto = AssemblerPool.prototype; + _proto.put = function put(assembler) { + if (!assembler) return; + if (!this.enabled) { + false; + return; + } + var id = getAssemblerId(assembler.constructor); + var pool = this._pool; + pool[id] || (pool[id] = []); + if (this.count > this.maxSize) return; + this._clean(assembler); + pool[id].push(assembler); + this.count++; + }; + _proto.get = function get(assemblerCtor) { + var assembler; + if (this.enabled) { + var _pool = this._pool; + var id = getAssemblerId(assemblerCtor); + assembler = _pool[id] && _pool[id].pop(); + } + assembler ? this.count-- : assembler = new assemblerCtor(); + return assembler; + }; + _proto.clear = function clear() { + var _pool2; + var name; + var assemblers; + var i; + false; + this._pool = {}; + this.count = 0; + }; + _proto._clean = function _clean(assembler) { + false; + assembler._renderComp = null; + }; + return AssemblerPool; + })(_pool3["default"]); + var pool = new AssemblerPool(); + _pool3["default"].register("assembler", pool); + var _default = pool; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../utils/pool": 326 + }], + 268: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vertexFormat = require("./webgl/vertex-format"); + var _assemblerPool = _interopRequireDefault(require("./assembler-pool")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Assembler = (function () { + function Assembler() { + this._extendNative && this._extendNative(); + } + var _proto = Assembler.prototype; + _proto.init = function init(renderComp) { + this._renderComp = renderComp; + }; + _proto.updateRenderData = function updateRenderData(comp) { }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { }; + _proto.getVfmt = function getVfmt() { + return _vertexFormat.vfmtPosUvColor; + }; + return Assembler; + })(); + exports["default"] = Assembler; + Assembler.register = function (renderCompCtor, assembler) { + renderCompCtor.__assembler__ = assembler; + }; + Assembler.init = function (renderComp) { + var renderCompCtor = renderComp.constructor; + var assemblerCtor = renderCompCtor.__assembler__; + while (!assemblerCtor) { + renderCompCtor = renderCompCtor.$super; + if (!renderCompCtor) { + cc.warn("Can not find assembler for render component : [" + cc.js.getClassName(renderComp) + "]"); + return; + } + assemblerCtor = renderCompCtor.__assembler__; + } + assemblerCtor.getConstructor && (assemblerCtor = assemblerCtor.getConstructor(renderComp)); + if (!renderComp._assembler || renderComp._assembler.constructor !== assemblerCtor) { + var assembler = _assemblerPool["default"].get(assemblerCtor); + assembler.init(renderComp); + renderComp._assembler = assembler; + } + }; + cc.Assembler = Assembler; + module.exports = exports["default"]; + }), { + "./assembler-pool": 267, + "./webgl/vertex-format": 313 + }], + 269: [(function (require, module, exports) { + "use strict"; + var Device = function Device(canvasEL) { + var ctx; + try { + ctx = canvasEL.getContext("2d"); + } catch (err) { + console.error(err); + return; + } + this._canvas = canvasEL; + this._ctx = ctx; + this._caps = {}; + this._stats = { + drawcalls: 0 + }; + this._vx = this._vy = this._vw = this._vh = 0; + this._sx = this._sy = this._sw = this._sh = 0; + }; + Device.prototype._restoreTexture = function _restoreTexture(unit) { }; + Device.prototype.setViewport = function setViewport(x, y, w, h) { + if (this._vx !== x || this._vy !== y || this._vw !== w || this._vh !== h) { + this._vx = x; + this._vy = y; + this._vw = w; + this._vh = h; + } + }; + Device.prototype.setScissor = function setScissor(x, y, w, h) { + if (this._sx !== x || this._sy !== y || this._sw !== w || this._sh !== h) { + this._sx = x; + this._sy = y; + this._sw = w; + this._sh = h; + } + }; + Device.prototype.clear = function clear(color) { + var ctx = this._ctx; + ctx.clearRect(this._vx, this._vy, this._vw, this._vh); + if (color && (0 !== color[0] || 0 !== color[1] || 0 !== color[2])) { + ctx.fillStyle = "rgb(" + color[0] + "," + color[1] + "," + color[2] + ")"; + ctx.globalAlpha = color[3]; + ctx.fillRect(this._vx, this._vy, this._vw, this._vh); + } + }; + Device.prototype.resetDrawCalls = function () { + this._stats.drawcalls = 0; + }; + Device.prototype.getDrawCalls = function () { + return this._stats.drawcalls; + }; + module.exports = Device; + }), {}], + 270: [(function (require, module, exports) { + "use strict"; + var Texture2D = function Texture2D(device, options) { + this._device = device; + this._width = 4; + this._height = 4; + this._image = null; + if (options) { + void 0 !== options.width && (this._width = options.width); + void 0 !== options.height && (this._height = options.height); + this.updateImage(options); + } + }; + Texture2D.prototype.update = function update(options) { + this.updateImage(options); + }; + Texture2D.prototype.updateImage = function updateImage(options) { + if (options.images && options.images[0]) { + var image = options.images[0]; + image && image !== this._image && (this._image = image); + } + }; + Texture2D.prototype.destroy = function destroy() { + this._image = null; + }; + module.exports = Texture2D; + }), {}], + 271: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../../renderer/gfx")); + var _inputAssembler = _interopRequireDefault(require("../../renderer/core/input-assembler")); + var _pass = _interopRequireDefault(require("../../renderer/core/pass")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _initBuiltins(device) { + var defaultTexture = new _gfx["default"].Texture2D(device, { + images: [], + width: 128, + height: 128, + wrapS: _gfx["default"].WRAP_REPEAT, + wrapT: _gfx["default"].WRAP_REPEAT, + format: _gfx["default"].TEXTURE_FMT_RGB8, + genMipmaps: false + }); + return { + defaultTexture: defaultTexture, + programTemplates: [], + programChunks: {} + }; + } + var _default = cc.renderer = { + Texture2D: null, + InputAssembler: _inputAssembler["default"], + Pass: _pass["default"], + renderEngine: null, + canvas: null, + device: null, + scene: null, + drawCalls: 0, + _handle: null, + _cameraNode: null, + _camera: null, + _forward: null, + _flow: null, + initWebGL: function initWebGL(canvas, opts) { + require("./webgl/assemblers"); + var ModelBatcher = require("./webgl/model-batcher"); + this.Texture2D = _gfx["default"].Texture2D; + this.canvas = canvas; + this._flow = cc.RenderFlow; + var builtins; + var nativeFlow; + false; + var Scene = require("../../renderer/scene/scene"); + var ForwardRenderer = require("../../renderer/renderers/forward-renderer"); + this.device = new _gfx["default"].Device(canvas, opts); + this.scene = new Scene(); + var _builtins = _initBuiltins(this.device); + this._forward = new ForwardRenderer(this.device, _builtins); + this._handle = new ModelBatcher(this.device, this.scene); + this._flow.init(this._handle, this._forward); + }, + initCanvas: function initCanvas(canvas) { + var canvasRenderer = require("./canvas"); + var Texture2D = require("./canvas/Texture2D"); + var Device = require("./canvas/Device"); + this.Device = Device; + this.Texture2D = Texture2D; + this.canvas = canvas; + this.device = new Device(canvas); + this._camera = { + a: 1, + b: 0, + c: 0, + d: 1, + tx: 0, + ty: 0 + }; + this._handle = new canvasRenderer.RenderComponentHandle(this.device, this._camera); + this._forward = new canvasRenderer.ForwardRenderer(); + this._flow = cc.RenderFlow; + this._flow.init(this._handle, this._forward); + }, + updateCameraViewport: function updateCameraViewport() { + if (true, cc.director) { + var ecScene = cc.director.getScene(); + ecScene && ecScene.setScale(1, 1, 1); + } + if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) { + var vp = cc.view.getViewportRect(); + this.device.setViewport(vp.x, vp.y, vp.width, vp.height); + this._camera.a = cc.view.getScaleX(); + this._camera.d = cc.view.getScaleY(); + this._camera.tx = vp.x; + this._camera.ty = vp.y + vp.height; + } + }, + render: function render(ecScene, dt) { + this.device.resetDrawCalls(); + if (ecScene) { + this._flow.render(ecScene, dt); + this.drawCalls = this.device.getDrawCalls(); + } + }, + clear: function clear() { + this._handle.reset(); + this._forward.clear(); + } + }; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../../renderer/core/input-assembler": 362, + "../../renderer/core/pass": 363, + "../../renderer/gfx": 372, + "../../renderer/renderers/forward-renderer": 391, + "../../renderer/scene/scene": 395, + "./canvas": void 0, + "./canvas/Device": 269, + "./canvas/Texture2D": 270, + "./webgl/assemblers": 283, + "./webgl/model-batcher": 309 + }], + 272: [(function (require, module, exports) { + "use strict"; + var FlagOfset = 0; + var DONOTHING = 1 << FlagOfset++; + var BREAK_FLOW = 1 << FlagOfset++; + var LOCAL_TRANSFORM = 1 << FlagOfset++; + var WORLD_TRANSFORM = 1 << FlagOfset++; + var TRANSFORM = LOCAL_TRANSFORM | WORLD_TRANSFORM; + var UPDATE_RENDER_DATA = 1 << FlagOfset++; + var OPACITY = 1 << FlagOfset++; + var COLOR = 1 << FlagOfset++; + var OPACITY_COLOR = OPACITY | COLOR; + var RENDER = 1 << FlagOfset++; + var CHILDREN = 1 << FlagOfset++; + var POST_RENDER = 1 << FlagOfset++; + var FINAL = 1 << FlagOfset++; + var _batcher, _forward; + var _cullingMask = 0; + function RenderFlow() { + this._func = init; + this._next = null; + } + var _proto = RenderFlow.prototype; + _proto._doNothing = function () { }; + _proto._localTransform = function (node) { + node._updateLocalMatrix(); + node._renderFlag &= ~LOCAL_TRANSFORM; + this._next._func(node); + }; + _proto._worldTransform = function (node) { + _batcher.worldMatDirty++; + var t = node._matrix; + var trs = node._trs; + var tm = t.m; + tm[12] = trs[0]; + tm[13] = trs[1]; + tm[14] = trs[2]; + node._mulMat(node._worldMatrix, node._parent._worldMatrix, t); + node._renderFlag &= ~WORLD_TRANSFORM; + this._next._func(node); + _batcher.worldMatDirty--; + }; + _proto._opacity = function (node) { + _batcher.parentOpacityDirty++; + this._next._func(node); + node._renderFlag &= ~OPACITY; + _batcher.parentOpacityDirty--; + }; + _proto._color = function (node) { + var comp = node._renderComponent; + comp && comp._updateColor(); + node._renderFlag &= ~COLOR; + this._next._func(node); + }; + _proto._updateRenderData = function (node) { + var comp = node._renderComponent; + comp._assembler.updateRenderData(comp); + node._renderFlag &= ~UPDATE_RENDER_DATA; + this._next._func(node); + }; + _proto._render = function (node) { + var comp = node._renderComponent; + comp._checkBacth(_batcher, node._cullingMask); + comp._assembler.fillBuffers(comp, _batcher); + this._next._func(node); + }; + _proto._children = function (node) { + var cullingMask = _cullingMask; + var batcher = _batcher; + var parentOpacity = batcher.parentOpacity; + var opacity = batcher.parentOpacity *= node._opacity / 255; + var worldTransformFlag = batcher.worldMatDirty ? WORLD_TRANSFORM : 0; + var worldOpacityFlag = batcher.parentOpacityDirty ? OPACITY_COLOR : 0; + var worldDirtyFlag = worldTransformFlag | worldOpacityFlag; + var children = node._children; + for (var i = 0, l = children.length; i < l; i++) { + var c = children[i]; + c._renderFlag |= worldDirtyFlag; + if (!c._activeInHierarchy || 0 === c._opacity) continue; + _cullingMask = c._cullingMask = 0 === c.groupIndex ? cullingMask : 1 << c.groupIndex; + var colorVal = c._color._val; + c._color._fastSetA(c._opacity * opacity); + flows[c._renderFlag]._func(c); + c._color._val = colorVal; + } + batcher.parentOpacity = parentOpacity; + this._next._func(node); + }; + _proto._postRender = function (node) { + var comp = node._renderComponent; + comp._checkBacth(_batcher, node._cullingMask); + comp._assembler.postFillBuffers(comp, _batcher); + this._next._func(node); + }; + var EMPTY_FLOW = new RenderFlow(); + EMPTY_FLOW._func = EMPTY_FLOW._doNothing; + EMPTY_FLOW._next = EMPTY_FLOW; + var flows = {}; + function createFlow(flag, next) { + var flow = new RenderFlow(); + flow._next = next || EMPTY_FLOW; + switch (flag) { + case DONOTHING: + case BREAK_FLOW: + flow._func = flow._doNothing; + break; + + case LOCAL_TRANSFORM: + flow._func = flow._localTransform; + break; + + case WORLD_TRANSFORM: + flow._func = flow._worldTransform; + break; + + case OPACITY: + flow._func = flow._opacity; + break; + + case COLOR: + flow._func = flow._color; + break; + + case UPDATE_RENDER_DATA: + flow._func = flow._updateRenderData; + break; + + case RENDER: + flow._func = flow._render; + break; + + case CHILDREN: + flow._func = flow._children; + break; + + case POST_RENDER: + flow._func = flow._postRender; + } + return flow; + } + function getFlow(flag) { + var flow = null; + var tFlag = FINAL; + while (tFlag > 0) { + tFlag & flag && (flow = createFlow(tFlag, flow)); + tFlag >>= 1; + } + return flow; + } + function init(node) { + var flag = node._renderFlag; + var r = flows[flag] = getFlow(flag); + r._func(node); + } + RenderFlow.flows = flows; + RenderFlow.createFlow = createFlow; + var _validateList = []; + RenderFlow.registerValidate = function (renderComp) { + if (renderComp._inValidateList) return; + _validateList.push(renderComp); + renderComp._inValidateList = true; + }; + RenderFlow.validateRenderers = function () { + for (var i = 0, l = _validateList.length; i < l; i++) { + var renderComp = _validateList[i]; + if (!renderComp.isValid) continue; + renderComp.enabledInHierarchy ? renderComp._validateRender() : renderComp.disableRender(); + renderComp._inValidateList = false; + } + _validateList.length = 0; + }; + RenderFlow.visitRootNode = function (rootNode) { + RenderFlow.validateRenderers(); + var preCullingMask = _cullingMask; + _cullingMask = rootNode._cullingMask; + if (rootNode._renderFlag & WORLD_TRANSFORM) { + _batcher.worldMatDirty++; + rootNode._calculWorldMatrix(); + rootNode._renderFlag &= ~WORLD_TRANSFORM; + flows[rootNode._renderFlag]._func(rootNode); + _batcher.worldMatDirty--; + } else flows[rootNode._renderFlag]._func(rootNode); + _cullingMask = preCullingMask; + }; + RenderFlow.render = function (rootNode, dt) { + _batcher.reset(); + _batcher.walking = true; + RenderFlow.visitRootNode(rootNode); + _batcher.terminate(); + _batcher.walking = false; + _forward.render(_batcher._renderScene, dt); + }; + RenderFlow.renderCamera = function (camera, rootNode) { + _batcher.reset(); + _batcher.walking = true; + RenderFlow.visitRootNode(rootNode); + _batcher.terminate(); + _batcher.walking = false; + _forward.renderCamera(camera, _batcher._renderScene); + }; + RenderFlow.init = function (batcher, forwardRenderer) { + _batcher = batcher; + _forward = forwardRenderer; + flows[0] = EMPTY_FLOW; + for (var i = 1; i < FINAL; i++) flows[i] = new RenderFlow(); + }; + RenderFlow.getBachther = function () { + return _batcher; + }; + RenderFlow.FLAG_DONOTHING = DONOTHING; + RenderFlow.FLAG_BREAK_FLOW = BREAK_FLOW; + RenderFlow.FLAG_LOCAL_TRANSFORM = LOCAL_TRANSFORM; + RenderFlow.FLAG_WORLD_TRANSFORM = WORLD_TRANSFORM; + RenderFlow.FLAG_TRANSFORM = TRANSFORM; + RenderFlow.FLAG_OPACITY = OPACITY; + RenderFlow.FLAG_COLOR = COLOR; + RenderFlow.FLAG_OPACITY_COLOR = OPACITY_COLOR; + RenderFlow.FLAG_UPDATE_RENDER_DATA = UPDATE_RENDER_DATA; + RenderFlow.FLAG_RENDER = RENDER; + RenderFlow.FLAG_CHILDREN = CHILDREN; + RenderFlow.FLAG_POST_RENDER = POST_RENDER; + RenderFlow.FLAG_FINAL = FINAL; + module.exports = cc.RenderFlow = RenderFlow; + }), {}], + 273: [(function (require, module, exports) { + "use strict"; + var RenderTexture = require("../../../assets/CCRenderTexture"); + var space = 2; + function Atlas(width, height) { + var texture = new RenderTexture(); + texture.initWithSize(width, height); + texture.update(); + this._texture = texture; + this._x = space; + this._y = space; + this._nexty = space; + this._width = width; + this._height = height; + this._innerTextureInfos = {}; + this._innerSpriteFrames = []; + this._count = 0; + } + Atlas.DEFAULT_HASH = new RenderTexture()._getHash(); + cc.js.mixin(Atlas.prototype, { + insertSpriteFrame: function insertSpriteFrame(spriteFrame) { + var rect = spriteFrame._rect, texture = spriteFrame._texture, info = this._innerTextureInfos[texture._id]; + var sx = rect.x, sy = rect.y; + if (info) { + sx += info.x; + sy += info.y; + } else { + var width = texture.width, height = texture.height; + if (this._x + width + space > this._width) { + this._x = space; + this._y = this._nexty; + } + this._y + height + space > this._nexty && (this._nexty = this._y + height + space); + if (this._nexty > this._height) return null; + if (cc.dynamicAtlasManager.textureBleeding) { + if (width <= 8 || height <= 8) { + this._texture.drawTextureAt(texture, this._x - 1, this._y - 1); + this._texture.drawTextureAt(texture, this._x - 1, this._y + 1); + this._texture.drawTextureAt(texture, this._x + 1, this._y - 1); + this._texture.drawTextureAt(texture, this._x + 1, this._y + 1); + } + this._texture.drawTextureAt(texture, this._x - 1, this._y); + this._texture.drawTextureAt(texture, this._x + 1, this._y); + this._texture.drawTextureAt(texture, this._x, this._y - 1); + this._texture.drawTextureAt(texture, this._x, this._y + 1); + } + this._texture.drawTextureAt(texture, this._x, this._y); + this._innerTextureInfos[texture._id] = { + x: this._x, + y: this._y, + texture: texture + }; + this._count++; + sx += this._x; + sy += this._y; + this._x += width + space; + this._dirty = true; + } + var frame = { + x: sx, + y: sy, + texture: this._texture + }; + this._innerSpriteFrames.push(spriteFrame); + return frame; + }, + update: function update() { + if (!this._dirty) return; + this._texture.update(); + this._dirty = false; + }, + deleteInnerTexture: function deleteInnerTexture(texture) { + if (texture && this._innerTextureInfos[texture._id]) { + delete this._innerTextureInfos[texture._id]; + this._count--; + } + }, + isEmpty: function isEmpty() { + return this._count <= 0; + }, + reset: function reset() { + this._x = space; + this._y = space; + this._nexty = space; + var frames = this._innerSpriteFrames; + for (var i = 0, l = frames.length; i < l; i++) { + var frame = frames[i]; + if (!frame.isValid) continue; + frame._resetDynamicAtlasFrame(); + } + this._innerSpriteFrames.length = 0; + this._innerTextureInfos = {}; + }, + destroy: function destroy() { + this.reset(); + this._texture.destroy(); + } + }); + module.exports = Atlas; + }), { + "../../../assets/CCRenderTexture": 114 + }], + 274: [(function (require, module, exports) { + "use strict"; + var Atlas = require("./atlas"); + var _atlases = []; + var _atlasIndex = -1; + var _maxAtlasCount = 5; + var _textureSize = 2048; + var _maxFrameSize = 512; + var _textureBleeding = true; + var _debugNode = null; + function newAtlas() { + var atlas = _atlases[++_atlasIndex]; + if (!atlas) { + atlas = new Atlas(_textureSize, _textureSize); + _atlases.push(atlas); + } + return atlas; + } + function beforeSceneLoad() { + dynamicAtlasManager.reset(); + } + var _enabled = false; + var dynamicAtlasManager = { + Atlas: Atlas, + get enabled() { + return _enabled; + }, + set enabled(value) { + if (_enabled === value) return; + if (value) { + this.reset(); + cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, beforeSceneLoad); + } else cc.director.off(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, beforeSceneLoad); + _enabled = value; + }, + get maxAtlasCount() { + return _maxAtlasCount; + }, + set maxAtlasCount(value) { + _maxAtlasCount = value; + }, + get atlasCount() { + return _atlases.length; + }, + get textureBleeding() { + return _textureBleeding; + }, + set textureBleeding(enable) { + _textureBleeding = enable; + }, + get textureSize() { + return _textureSize; + }, + set textureSize(value) { + _textureSize = value; + }, + get maxFrameSize() { + return _maxFrameSize; + }, + set maxFrameSize(value) { + _maxFrameSize = value; + }, + insertSpriteFrame: function insertSpriteFrame(spriteFrame) { + false; + if (!_enabled || _atlasIndex === _maxAtlasCount || !spriteFrame || spriteFrame._original) return null; + if (!spriteFrame._texture.packable) return null; + var atlas = _atlases[_atlasIndex]; + atlas || (atlas = newAtlas()); + var frame = atlas.insertSpriteFrame(spriteFrame); + if (!frame && _atlasIndex !== _maxAtlasCount) { + atlas = newAtlas(); + return atlas.insertSpriteFrame(spriteFrame); + } + return frame; + }, + reset: function reset() { + for (var i = 0, l = _atlases.length; i < l; i++) _atlases[i].destroy(); + _atlases.length = 0; + _atlasIndex = -1; + }, + deleteAtlasSpriteFrame: function deleteAtlasSpriteFrame(spriteFrame) { + if (!spriteFrame._original) return; + var texture = spriteFrame._original._texture; + this.deleteAtlasTexture(texture); + }, + deleteAtlasTexture: function deleteAtlasTexture(texture) { + if (texture) for (var i = _atlases.length - 1; i >= 0; i--) { + _atlases[i].deleteInnerTexture(texture); + if (_atlases[i].isEmpty()) { + _atlases[i].destroy(); + _atlases.splice(i, 1); + _atlasIndex--; + } + } + }, + showDebug: (true, function (show) { + if (show) { + if (!_debugNode || !_debugNode.isValid) { + var width = cc.visibleRect.width; + var height = cc.visibleRect.height; + _debugNode = new cc.Node("DYNAMIC_ATLAS_DEBUG_NODE"); + _debugNode.width = width; + _debugNode.height = height; + _debugNode.x = width / 2; + _debugNode.y = height / 2; + _debugNode.zIndex = cc.macro.MAX_ZINDEX; + _debugNode.parent = cc.director.getScene(); + _debugNode.groupIndex = cc.Node.BuiltinGroupIndex.DEBUG; + cc.Camera._setupDebugCamera(); + var scroll = _debugNode.addComponent(cc.ScrollView); + var content = new cc.Node("CONTENT"); + var layout = content.addComponent(cc.Layout); + layout.type = cc.Layout.Type.VERTICAL; + layout.resizeMode = cc.Layout.ResizeMode.CONTAINER; + content.parent = _debugNode; + content.width = _textureSize; + content.anchorY = 1; + content.x = _textureSize; + scroll.content = content; + for (var i = 0; i <= _atlasIndex; i++) { + var node = new cc.Node("ATLAS"); + var texture = _atlases[i]._texture; + var spriteFrame = new cc.SpriteFrame(); + spriteFrame.setTexture(_atlases[i]._texture); + var sprite = node.addComponent(cc.Sprite); + sprite.spriteFrame = spriteFrame; + node.parent = content; + } + } + return _debugNode; + } + if (_debugNode) { + _debugNode.parent = null; + _debugNode = null; + } + }), + update: function update() { + if (!this.enabled) return; + for (var i = 0; i <= _atlasIndex; i++) _atlases[i].update(); + } + }; + module.exports = cc.dynamicAtlasManager = dynamicAtlasManager; + }), { + "./atlas": 273 + }], + 275: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var textUtils = require("../../../utils/text-utils"); + var macro = require("../../../platform/CCMacro"); + var Label = require("../../../components/CCLabel"); + var Overflow = Label.Overflow; + var shareLabelInfo = require("../utils").shareLabelInfo; + var LetterInfo = function LetterInfo() { + this["char"] = ""; + this.valid = true; + this.x = 0; + this.y = 0; + this.line = 0; + this.hash = ""; + }; + var _tmpRect = cc.rect(); + var _comp = null; + var _horizontalKernings = []; + var _lettersInfo = []; + var _linesWidth = []; + var _linesOffsetX = []; + var _fntConfig = null; + var _numberOfLines = 0; + var _textDesiredHeight = 0; + var _letterOffsetY = 0; + var _tailoredTopY = 0; + var _tailoredBottomY = 0; + var _bmfontScale = 1; + var _lineBreakWithoutSpaces = false; + var _spriteFrame = null; + var _lineSpacing = 0; + var _contentSize = cc.size(); + var _string = ""; + var _fontSize = 0; + var _originFontSize = 0; + var _hAlign = 0; + var _vAlign = 0; + var _spacingX = 0; + var _lineHeight = 0; + var _overflow = 0; + var _isWrapText = false; + var _labelWidth = 0; + var _labelHeight = 0; + var _maxLineWidth = 0; + var BmfontAssembler = (function (_Assembler2D) { + _inheritsLoose(BmfontAssembler, _Assembler2D); + function BmfontAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = BmfontAssembler.prototype; + _proto.updateRenderData = function updateRenderData(comp) { + if (!comp._vertsDirty) return; + if (_comp === comp) return; + _comp = comp; + this._reserveQuads(comp, comp.string.toString().length); + this._updateFontFamily(comp); + this._updateProperties(comp); + this._updateLabelInfo(comp); + this._updateContent(); + this.updateWorldVerts(comp); + _comp._actualFontSize = _fontSize; + _comp.node.setContentSize(_contentSize); + _comp._vertsDirty = false; + _comp = null; + this._resetProperties(); + }; + _proto._updateFontScale = function _updateFontScale() { + _bmfontScale = _fontSize / _originFontSize; + }; + _proto._updateFontFamily = function _updateFontFamily(comp) { + var fontAsset = comp.font; + _spriteFrame = fontAsset.spriteFrame; + _fntConfig = fontAsset._fntConfig; + shareLabelInfo.fontAtlas = fontAsset._fontDefDictionary; + this.packToDynamicAtlas(comp, _spriteFrame); + }; + _proto._updateLabelInfo = function _updateLabelInfo() { + shareLabelInfo.hash = ""; + shareLabelInfo.margin = 0; + }; + _proto._updateProperties = function _updateProperties(comp) { + _string = comp.string.toString(); + _fontSize = comp.fontSize; + _originFontSize = _fntConfig ? _fntConfig.fontSize : comp.fontSize; + _hAlign = comp.horizontalAlign; + _vAlign = comp.verticalAlign; + _spacingX = comp.spacingX; + _overflow = comp.overflow; + _lineHeight = comp._lineHeight; + _contentSize.width = comp.node.width; + _contentSize.height = comp.node.height; + if (_overflow === Overflow.NONE) { + _isWrapText = false; + _contentSize.width += 2 * shareLabelInfo.margin; + _contentSize.height += 2 * shareLabelInfo.margin; + } else if (_overflow === Overflow.RESIZE_HEIGHT) { + _isWrapText = true; + _contentSize.height += 2 * shareLabelInfo.margin; + } else _isWrapText = comp.enableWrapText; + shareLabelInfo.lineHeight = _lineHeight; + shareLabelInfo.fontSize = _fontSize; + this._setupBMFontOverflowMetrics(); + }; + _proto._resetProperties = function _resetProperties() { + _fntConfig = null; + _spriteFrame = null; + shareLabelInfo.hash = ""; + shareLabelInfo.margin = 0; + }; + _proto._updateContent = function _updateContent() { + this._updateFontScale(); + this._computeHorizontalKerningForText(); + this._alignText(); + }; + _proto._computeHorizontalKerningForText = function _computeHorizontalKerningForText() { + var string = _string; + var stringLen = string.length; + var horizontalKernings = _horizontalKernings; + var kerningDict; + _fntConfig && (kerningDict = _fntConfig.kerningDict); + if (kerningDict && !cc.js.isEmptyObject(kerningDict)) { + var prev = -1; + for (var i = 0; i < stringLen; ++i) { + var key = string.charCodeAt(i); + var kerningAmount = kerningDict[prev << 16 | 65535 & key] || 0; + horizontalKernings[i] = i < stringLen - 1 ? kerningAmount : 0; + prev = key; + } + } else horizontalKernings.length = 0; + }; + _proto._multilineTextWrap = function _multilineTextWrap(nextTokenFunc) { + var textLen = _string.length; + var lineIndex = 0; + var nextTokenX = 0; + var nextTokenY = 0; + var longestLine = 0; + var letterRight = 0; + var highestY = 0; + var lowestY = 0; + var letterDef = null; + var letterPosition = cc.v2(0, 0); + for (var index = 0; index < textLen;) { + var character = _string.charAt(index); + if ("\n" === character) { + _linesWidth.push(letterRight); + letterRight = 0; + lineIndex++; + nextTokenX = 0; + nextTokenY -= _lineHeight * this._getFontScale() + _lineSpacing; + this._recordPlaceholderInfo(index, character); + index++; + continue; + } + var tokenLen = nextTokenFunc(_string, index, textLen); + var tokenHighestY = highestY; + var tokenLowestY = lowestY; + var tokenRight = letterRight; + var nextLetterX = nextTokenX; + var newLine = false; + for (var tmp = 0; tmp < tokenLen; ++tmp) { + var letterIndex = index + tmp; + character = _string.charAt(letterIndex); + if ("\r" === character) { + this._recordPlaceholderInfo(letterIndex, character); + continue; + } + letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) { + this._recordPlaceholderInfo(letterIndex, character); + var atlasName = ""; + _fntConfig && (atlasName = _fntConfig.atlasName); + console.log("Can't find letter definition in texture atlas " + atlasName + " for letter:" + character); + continue; + } + var letterX = nextLetterX + letterDef.offsetX * _bmfontScale - shareLabelInfo.margin; + if (_isWrapText && _maxLineWidth > 0 && nextTokenX > 0 && letterX + letterDef.w * _bmfontScale > _maxLineWidth && !textUtils.isUnicodeSpace(character)) { + _linesWidth.push(letterRight); + letterRight = 0; + lineIndex++; + nextTokenX = 0; + nextTokenY -= _lineHeight * this._getFontScale() + _lineSpacing; + newLine = true; + break; + } + letterPosition.x = letterX; + letterPosition.y = nextTokenY - letterDef.offsetY * _bmfontScale + shareLabelInfo.margin; + this._recordLetterInfo(letterPosition, character, letterIndex, lineIndex); + letterIndex + 1 < _horizontalKernings.length && letterIndex < textLen - 1 && (nextLetterX += _horizontalKernings[letterIndex + 1]); + nextLetterX += letterDef.xAdvance * _bmfontScale + _spacingX - 2 * shareLabelInfo.margin; + tokenRight = letterPosition.x + letterDef.w * _bmfontScale - shareLabelInfo.margin; + tokenHighestY < letterPosition.y && (tokenHighestY = letterPosition.y); + tokenLowestY > letterPosition.y - letterDef.h * _bmfontScale && (tokenLowestY = letterPosition.y - letterDef.h * _bmfontScale); + } + if (newLine) continue; + nextTokenX = nextLetterX; + letterRight = tokenRight; + highestY < tokenHighestY && (highestY = tokenHighestY); + lowestY > tokenLowestY && (lowestY = tokenLowestY); + longestLine < letterRight && (longestLine = letterRight); + index += tokenLen; + } + _linesWidth.push(letterRight); + _numberOfLines = lineIndex + 1; + _textDesiredHeight = _numberOfLines * _lineHeight * this._getFontScale(); + _numberOfLines > 1 && (_textDesiredHeight += (_numberOfLines - 1) * _lineSpacing); + _contentSize.width = _labelWidth; + _contentSize.height = _labelHeight; + _labelWidth <= 0 && (_contentSize.width = parseFloat(longestLine.toFixed(2)) + 2 * shareLabelInfo.margin); + _labelHeight <= 0 && (_contentSize.height = parseFloat(_textDesiredHeight.toFixed(2)) + 2 * shareLabelInfo.margin); + _tailoredTopY = _contentSize.height; + _tailoredBottomY = 0; + if (_overflow !== Overflow.CLAMP) { + highestY > 0 && (_tailoredTopY = _contentSize.height + highestY); + lowestY < -_textDesiredHeight && (_tailoredBottomY = _textDesiredHeight + lowestY); + } + return true; + }; + _proto._getFirstCharLen = function _getFirstCharLen() { + return 1; + }; + _proto._getFontScale = function _getFontScale() { + return _overflow === Overflow.SHRINK ? _bmfontScale : 1; + }; + _proto._getFirstWordLen = function _getFirstWordLen(text, startIndex, textLen) { + var character = text.charAt(startIndex); + if (textUtils.isUnicodeCJK(character) || "\n" === character || textUtils.isUnicodeSpace(character)) return 1; + var len = 1; + var letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) return len; + var nextLetterX = letterDef.xAdvance * _bmfontScale + _spacingX; + var letterX; + for (var index = startIndex + 1; index < textLen; ++index) { + character = text.charAt(index); + letterDef = shareLabelInfo.fontAtlas.getLetterDefinitionForChar(character, shareLabelInfo); + if (!letterDef) break; + letterX = nextLetterX + letterDef.offsetX * _bmfontScale; + if (letterX + letterDef.w * _bmfontScale > _maxLineWidth && !textUtils.isUnicodeSpace(character) && _maxLineWidth > 0) return len; + nextLetterX += letterDef.xAdvance * _bmfontScale + _spacingX; + if ("\n" === character || textUtils.isUnicodeSpace(character) || textUtils.isUnicodeCJK(character)) break; + len++; + } + return len; + }; + _proto._multilineTextWrapByWord = function _multilineTextWrapByWord() { + return this._multilineTextWrap(this._getFirstWordLen); + }; + _proto._multilineTextWrapByChar = function _multilineTextWrapByChar() { + return this._multilineTextWrap(this._getFirstCharLen); + }; + _proto._recordPlaceholderInfo = function _recordPlaceholderInfo(letterIndex, _char) { + if (letterIndex >= _lettersInfo.length) { + var tmpInfo = new LetterInfo(); + _lettersInfo.push(tmpInfo); + } + _lettersInfo[letterIndex]["char"] = _char; + _lettersInfo[letterIndex].hash = _char.charCodeAt(0) + shareLabelInfo.hash; + _lettersInfo[letterIndex].valid = false; + }; + _proto._recordLetterInfo = function _recordLetterInfo(letterPosition, character, letterIndex, lineIndex) { + if (letterIndex >= _lettersInfo.length) { + var tmpInfo = new LetterInfo(); + _lettersInfo.push(tmpInfo); + } + var _char2 = character.charCodeAt(0); + var key = _char2 + shareLabelInfo.hash; + _lettersInfo[letterIndex].line = lineIndex; + _lettersInfo[letterIndex]["char"] = character; + _lettersInfo[letterIndex].hash = key; + _lettersInfo[letterIndex].valid = shareLabelInfo.fontAtlas.getLetter(key).valid; + _lettersInfo[letterIndex].x = letterPosition.x; + _lettersInfo[letterIndex].y = letterPosition.y; + }; + _proto._alignText = function _alignText() { + _textDesiredHeight = 0; + _linesWidth.length = 0; + _lineBreakWithoutSpaces ? this._multilineTextWrapByChar() : this._multilineTextWrapByWord(); + this._computeAlignmentOffset(); + _overflow === Overflow.SHRINK && _fontSize > 0 && this._isVerticalClamp() && this._shrinkLabelToContentSize(this._isVerticalClamp); + this._updateQuads() || _overflow === Overflow.SHRINK && this._shrinkLabelToContentSize(this._isHorizontalClamp); + }; + _proto._scaleFontSizeDown = function _scaleFontSizeDown(fontSize) { + var shouldUpdateContent = true; + if (!fontSize) { + fontSize = .1; + shouldUpdateContent = false; + } + _fontSize = fontSize; + shouldUpdateContent && this._updateContent(); + }; + _proto._shrinkLabelToContentSize = function _shrinkLabelToContentSize(lambda) { + var fontSize = _fontSize; + var left = 0, right = 0 | fontSize, mid = 0; + while (left < right) { + mid = left + right + 1 >> 1; + var newFontSize = mid; + if (newFontSize <= 0) break; + _bmfontScale = newFontSize / _originFontSize; + _lineBreakWithoutSpaces ? this._multilineTextWrapByChar() : this._multilineTextWrapByWord(); + this._computeAlignmentOffset(); + lambda() ? right = mid - 1 : left = mid; + } + var actualFontSize = left; + actualFontSize >= 0 && this._scaleFontSizeDown(actualFontSize); + }; + _proto._isVerticalClamp = function _isVerticalClamp() { + return _textDesiredHeight > _contentSize.height; + }; + _proto._isHorizontalClamp = function _isHorizontalClamp() { + var letterClamp = false; + for (var ctr = 0, l = _string.length; ctr < l; ++ctr) { + var letterInfo = _lettersInfo[ctr]; + if (letterInfo.valid) { + var letterDef = shareLabelInfo.fontAtlas.getLetter(letterInfo.hash); + var px = letterInfo.x + letterDef.w * _bmfontScale; + var lineIndex = letterInfo.line; + if (_labelWidth > 0) if (_isWrapText) { + var wordWidth = _linesWidth[lineIndex]; + if (wordWidth > _contentSize.width && (px > _contentSize.width || px < 0)) { + letterClamp = true; + break; + } + } else if (px > _contentSize.width) { + letterClamp = true; + break; + } + } + } + return letterClamp; + }; + _proto._isHorizontalClamped = function _isHorizontalClamped(px, lineIndex) { + var wordWidth = _linesWidth[lineIndex]; + var letterOverClamp = px > _contentSize.width || px < 0; + return _isWrapText ? wordWidth > _contentSize.width && letterOverClamp : letterOverClamp; + }; + _proto._updateQuads = function _updateQuads() { + var texture = _spriteFrame ? _spriteFrame._texture : shareLabelInfo.fontAtlas.getTexture(); + var node = _comp.node; + this.verticesCount = this.indicesCount = 0; + this._renderData && (this._renderData.dataLength = 0); + var contentSize = _contentSize, appx = node._anchorPoint.x * contentSize.width, appy = node._anchorPoint.y * contentSize.height; + var ret = true; + for (var ctr = 0, l = _string.length; ctr < l; ++ctr) { + var letterInfo = _lettersInfo[ctr]; + if (!letterInfo.valid) continue; + var letterDef = shareLabelInfo.fontAtlas.getLetter(letterInfo.hash); + _tmpRect.height = letterDef.h; + _tmpRect.width = letterDef.w; + _tmpRect.x = letterDef.u; + _tmpRect.y = letterDef.v; + var py = letterInfo.y + _letterOffsetY; + if (_labelHeight > 0) { + if (py > _tailoredTopY) { + var clipTop = py - _tailoredTopY; + _tmpRect.y += clipTop; + _tmpRect.height -= clipTop; + py -= clipTop; + } + py - letterDef.h * _bmfontScale < _tailoredBottomY && _overflow === Overflow.CLAMP && (_tmpRect.height = py < _tailoredBottomY ? 0 : (py - _tailoredBottomY) / _bmfontScale); + } + var lineIndex = letterInfo.line; + var px = letterInfo.x + letterDef.w / 2 * _bmfontScale + _linesOffsetX[lineIndex]; + if (_labelWidth > 0 && this._isHorizontalClamped(px, lineIndex)) if (_overflow === Overflow.CLAMP) _tmpRect.width = 0; else if (_overflow === Overflow.SHRINK) { + if (_contentSize.width > letterDef.w) { + ret = false; + break; + } + _tmpRect.width = 0; + } + if (_tmpRect.height > 0 && _tmpRect.width > 0) { + var isRotated = this._determineRect(_tmpRect); + var letterPositionX = letterInfo.x + _linesOffsetX[letterInfo.line]; + this.appendQuad(_comp, texture, _tmpRect, isRotated, letterPositionX - appx, py - appy, _bmfontScale); + } + } + this._quadsUpdated(_comp); + return ret; + }; + _proto._determineRect = function _determineRect(tempRect) { + var isRotated = _spriteFrame.isRotated(); + var originalSize = _spriteFrame._originalSize; + var rect = _spriteFrame._rect; + var offset = _spriteFrame._offset; + var trimmedLeft = offset.x + (originalSize.width - rect.width) / 2; + var trimmedTop = offset.y - (originalSize.height - rect.height) / 2; + if (isRotated) { + var originalX = tempRect.x; + tempRect.x = rect.x + rect.height - tempRect.y - tempRect.height - trimmedTop; + tempRect.y = originalX + rect.y - trimmedLeft; + tempRect.y < 0 && (tempRect.height = tempRect.height + trimmedTop); + } else { + tempRect.x += rect.x - trimmedLeft; + tempRect.y += rect.y + trimmedTop; + } + return isRotated; + }; + _proto._computeAlignmentOffset = function _computeAlignmentOffset() { + _linesOffsetX.length = 0; + switch (_hAlign) { + case macro.TextAlignment.LEFT: + for (var i = 0; i < _numberOfLines; ++i) _linesOffsetX.push(0); + break; + + case macro.TextAlignment.CENTER: + for (var _i = 0, l = _linesWidth.length; _i < l; _i++) _linesOffsetX.push((_contentSize.width - _linesWidth[_i]) / 2); + break; + + case macro.TextAlignment.RIGHT: + for (var _i2 = 0, _l = _linesWidth.length; _i2 < _l; _i2++) _linesOffsetX.push(_contentSize.width - _linesWidth[_i2]); + } + _letterOffsetY = _contentSize.height; + if (_vAlign !== macro.VerticalTextAlignment.TOP) { + var blank = _contentSize.height - _textDesiredHeight + _lineHeight * this._getFontScale() - _originFontSize * _bmfontScale; + _vAlign === macro.VerticalTextAlignment.BOTTOM ? _letterOffsetY -= blank : _letterOffsetY -= blank / 2; + } + }; + _proto._setupBMFontOverflowMetrics = function _setupBMFontOverflowMetrics() { + var newWidth = _contentSize.width, newHeight = _contentSize.height; + _overflow === Overflow.RESIZE_HEIGHT && (newHeight = 0); + if (_overflow === Overflow.NONE) { + newWidth = 0; + newHeight = 0; + } + _labelWidth = newWidth; + _labelHeight = newHeight; + _maxLineWidth = newWidth; + }; + _proto.updateWorldVerts = function updateWorldVerts() { }; + _proto.appendQuad = function appendQuad(comp, texture, rect, rotated, x, y, scale) { }; + _proto._quadsUpdated = function _quadsUpdated(comp) { }; + _proto._reserveQuads = function _reserveQuads() { }; + return BmfontAssembler; + })(_assembler2d["default"]); + exports["default"] = BmfontAssembler; + module.exports = exports["default"]; + }), { + "../../../components/CCLabel": 151, + "../../../platform/CCMacro": 244, + "../../../utils/text-utils": 331, + "../../assembler-2d": 265, + "../utils": 279 + }], + 276: [(function (require, module, exports) { + "use strict"; + function LabelFrame() { + this._rect = null; + this.uv = []; + this._texture = null; + this._original = null; + } + LabelFrame.prototype = { + constructor: LabelFrame, + getRect: function getRect() { + return cc.rect(this._rect); + }, + setRect: function setRect(rect) { + this._rect = rect; + this._texture && this._calculateUV(); + }, + _setDynamicAtlasFrame: function _setDynamicAtlasFrame(frame) { + if (!frame) return; + this._original = { + _texture: this._texture, + _x: this._rect.x, + _y: this._rect.y + }; + this._texture = frame.texture; + this._rect.x = frame.x; + this._rect.y = frame.y; + this._calculateUV(); + }, + _resetDynamicAtlasFrame: function _resetDynamicAtlasFrame() { + if (!this._original) return; + this._rect.x = this._original._x; + this._rect.y = this._original._y; + this._texture = this._original._texture; + this._original = null; + this._calculateUV(); + }, + _refreshTexture: function _refreshTexture(texture) { + this._texture = texture; + this._rect = cc.rect(0, 0, texture.width, texture.height); + this._calculateUV(); + }, + _calculateUV: function _calculateUV() { + var rect = this._rect, texture = this._texture, uv = this.uv, texw = texture.width, texh = texture.height; + var l = 0 === texw ? 0 : rect.x / texw; + var r = 0 === texw ? 0 : (rect.x + rect.width) / texw; + var b = 0 === texh ? 0 : (rect.y + rect.height) / texh; + var t = 0 === texh ? 0 : rect.y / texh; + uv[0] = l; + uv[1] = b; + uv[2] = r; + uv[3] = b; + uv[4] = l; + uv[5] = t; + uv[6] = r; + uv[7] = t; + } + }; + module.exports = LabelFrame; + }), {}], + 277: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _bmfont = _interopRequireDefault(require("../../webgl/assemblers/label/2d/bmfont")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Label = require("../../../components/CCLabel"); + var LabelOutline = require("../../../components/CCLabelOutline"); + var textUtils = require("../../../utils/text-utils"); + var Component = require("../../../components/CCComponent"); + var RenderTexture = require("../../../assets/CCRenderTexture"); + var OUTLINE_SUPPORTED = cc.js.isChildClassOf(LabelOutline, Component); + var getFontFamily = require("../utils").getFontFamily; + var shareLabelInfo = require("../utils").shareLabelInfo; + var FontLetterDefinition = cc.BitmapFont.FontLetterDefinition; + var FontAtlas = cc.BitmapFont.FontAtlas; + var WHITE = cc.Color.WHITE; + var space = 0; + var bleed = 2; + var _invisibleAlpha = (1 / 255).toFixed(3); + function LetterTexture(_char, labelInfo) { + this._texture = null; + this._labelInfo = labelInfo; + this._char = _char; + this._hash = null; + this._data = null; + this._canvas = null; + this._context = null; + this._width = 0; + this._height = 0; + this._offsetY = 0; + this._hash = _char.charCodeAt(0) + labelInfo.hash; + } + LetterTexture.prototype = { + constructor: LetterTexture, + updateRenderData: function updateRenderData() { + this._updateProperties(); + this._updateTexture(); + }, + _updateProperties: function _updateProperties() { + this._texture = new cc.Texture2D(); + this._data = Label._canvasPool.get(); + this._canvas = this._data.canvas; + this._context = this._data.context; + this._context.font = this._labelInfo.fontDesc; + var width = textUtils.safeMeasureText(this._context, this._char, this._labelInfo.fontDesc); + var blank = 2 * this._labelInfo.margin + bleed; + this._width = parseFloat(width.toFixed(2)) + blank; + this._height = (1 + textUtils.BASELINE_RATIO) * this._labelInfo.fontSize + blank; + this._offsetY = -this._labelInfo.fontSize * textUtils.BASELINE_RATIO / 2; + this._canvas.width !== this._width && (this._canvas.width = this._width); + this._canvas.height !== this._height && (this._canvas.height = this._height); + this._texture.initWithElement(this._canvas); + }, + _updateTexture: function _updateTexture() { + var context = this._context; + var labelInfo = this._labelInfo, width = this._canvas.width, height = this._canvas.height; + var fontSize = this._labelInfo.fontSize; + var startX = width / 2; + var startY = height / 2 + fontSize * textUtils.MIDDLE_RATIO + fontSize * textUtils.BASELINE_OFFSET; + var color = labelInfo.color; + context.lineJoin = "round"; + context.textAlign = "center"; + context.clearRect(0, 0, width, height); + context.fillStyle = "rgba(" + color.r + ", " + color.g + ", " + color.b + ", " + _invisibleAlpha + ")"; + context.fillRect(0, 0, width, height); + context.font = labelInfo.fontDesc; + context.fillStyle = "rgba(" + color.r + ", " + color.g + ", " + color.b + ", 1)"; + if (labelInfo.isOutlined && labelInfo.margin > 0) { + var strokeColor = labelInfo.out || WHITE; + context.strokeStyle = "rgba(" + strokeColor.r + ", " + strokeColor.g + ", " + strokeColor.b + ", " + strokeColor.a / 255 + ")"; + context.lineWidth = 2 * labelInfo.margin; + context.strokeText(this._char, startX, startY); + } + context.fillText(this._char, startX, startY); + this._texture.handleLoadedTexture(); + }, + destroy: function destroy() { + this._texture.destroy(); + this._texture = null; + Label._canvasPool.put(this._data); + } + }; + function LetterAtlas(width, height) { + var texture = new RenderTexture(); + texture.initWithSize(width, height); + texture.update(); + this._fontDefDictionary = new FontAtlas(texture); + this._x = space; + this._y = space; + this._nexty = space; + this._width = width; + this._height = height; + cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, this.beforeSceneLoad, this); + } + cc.js.mixin(LetterAtlas.prototype, { + insertLetterTexture: function insertLetterTexture(letterTexture) { + var texture = letterTexture._texture; + var width = texture.width, height = texture.height; + if (this._x + width + space > this._width) { + this._x = space; + this._y = this._nexty; + } + this._y + height > this._nexty && (this._nexty = this._y + height + space); + if (this._nexty > this._height) return null; + this._fontDefDictionary._texture.drawTextureAt(texture, this._x, this._y); + this._dirty = true; + var letter = new FontLetterDefinition(); + letter.u = this._x + bleed / 2; + letter.v = this._y + bleed / 2; + letter.texture = this._fontDefDictionary._texture; + letter.valid = true; + letter.w = letterTexture._width - bleed; + letter.h = letterTexture._height - bleed; + letter.xAdvance = letter.w; + letter.offsetY = letterTexture._offsetY; + this._x += width + space; + this._fontDefDictionary.addLetterDefinitions(letterTexture._hash, letter); + return letter; + }, + update: function update() { + if (!this._dirty) return; + this._fontDefDictionary._texture.update(); + this._dirty = false; + }, + reset: function reset() { + this._x = space; + this._y = space; + this._nexty = space; + var chars = this._fontDefDictionary._letterDefinitions; + for (var i = 0, l = chars.length; i < l; i++) { + var _char2 = chars[i]; + if (!_char2.isValid) continue; + _char2.destroy(); + } + this._fontDefDictionary.clear(); + }, + destroy: function destroy() { + this.reset(); + this._fontDefDictionary._texture.destroy(); + this._fontDefDictionary._texture = null; + }, + beforeSceneLoad: function beforeSceneLoad() { + this.clearAllCache(); + }, + clearAllCache: function clearAllCache() { + this.destroy(); + var texture = new RenderTexture(); + texture.initWithSize(this._width, this._height); + texture.update(); + this._fontDefDictionary._texture = texture; + }, + getLetter: function getLetter(key) { + return this._fontDefDictionary._letterDefinitions[key]; + }, + getTexture: function getTexture() { + return this._fontDefDictionary.getTexture(); + }, + getLetterDefinitionForChar: function getLetterDefinitionForChar(_char3, labelInfo) { + var hash = _char3.charCodeAt(0) + labelInfo.hash; + var letter = this._fontDefDictionary._letterDefinitions[hash]; + if (!letter) { + var temp = new LetterTexture(_char3, labelInfo); + temp.updateRenderData(); + letter = this.insertLetterTexture(temp); + temp.destroy(); + } + return letter; + } + }); + function computeHash(labelInfo) { + var hashData = ""; + var color = labelInfo.color.toHEX(); + var out = ""; + labelInfo.isOutlined && labelInfo.margin > 0 && (out = out + labelInfo.margin + labelInfo.out.toHEX()); + return hashData + labelInfo.fontSize + labelInfo.fontFamily + color + out; + } + var _shareAtlas = null; + var _atlasWidth = 2048; + var _atlasHeight = 2048; + var _isBold = false; + var LetterFontAssembler = (function (_WebglBmfontAssembler) { + _inheritsLoose(LetterFontAssembler, _WebglBmfontAssembler); + function LetterFontAssembler() { + return _WebglBmfontAssembler.apply(this, arguments) || this; + } + var _proto = LetterFontAssembler.prototype; + _proto._getAssemblerData = function _getAssemblerData() { + if (!_shareAtlas) { + _shareAtlas = new LetterAtlas(_atlasWidth, _atlasHeight); + cc.Label._shareAtlas = _shareAtlas; + } + return _shareAtlas.getTexture(); + }; + _proto._updateFontFamily = function _updateFontFamily(comp) { + shareLabelInfo.fontAtlas = _shareAtlas; + shareLabelInfo.fontFamily = getFontFamily(comp); + var outline = OUTLINE_SUPPORTED && comp.getComponent(LabelOutline); + if (outline && outline.enabled) { + shareLabelInfo.isOutlined = true; + shareLabelInfo.margin = outline.width; + shareLabelInfo.out = outline.color.clone(); + shareLabelInfo.out.a = outline.color.a * comp.node.color.a / 255; + } else { + shareLabelInfo.isOutlined = false; + shareLabelInfo.margin = 0; + } + }; + _proto._updateLabelInfo = function _updateLabelInfo(comp) { + shareLabelInfo.fontDesc = this._getFontDesc(); + shareLabelInfo.color = comp.node.color; + shareLabelInfo.hash = computeHash(shareLabelInfo); + }; + _proto._getFontDesc = function _getFontDesc() { + var fontDesc = shareLabelInfo.fontSize.toString() + "px "; + fontDesc += shareLabelInfo.fontFamily; + _isBold && (fontDesc = "bold " + fontDesc); + return fontDesc; + }; + _proto._computeHorizontalKerningForText = function _computeHorizontalKerningForText() { }; + _proto._determineRect = function _determineRect(tempRect) { + return false; + }; + return LetterFontAssembler; + })(_bmfont["default"]); + exports["default"] = LetterFontAssembler; + module.exports = exports["default"]; + }), { + "../../../assets/CCRenderTexture": 114, + "../../../components/CCComponent": 149, + "../../../components/CCLabel": 151, + "../../../components/CCLabelOutline": 152, + "../../../utils/text-utils": 331, + "../../webgl/assemblers/label/2d/bmfont": 284, + "../utils": 279 + }], + 278: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var textUtils = require("../../../utils/text-utils"); + var macro = require("../../../platform/CCMacro"); + var Label = require("../../../components/CCLabel"); + var LabelOutline = require("../../../components/CCLabelOutline"); + var LabelShadow = require("../../../components/CCLabelShadow"); + var Overflow = Label.Overflow; + var deleteFromDynamicAtlas = require("../utils").deleteFromDynamicAtlas; + var getFontFamily = require("../utils").getFontFamily; + var MAX_SIZE = 2048; + var _invisibleAlpha = (1 / 255).toFixed(3); + var _context = null; + var _canvas = null; + var _texture = null; + var _fontDesc = ""; + var _string = ""; + var _fontSize = 0; + var _drawFontSize = 0; + var _splitedStrings = []; + var _canvasSize = cc.Size.ZERO; + var _lineHeight = 0; + var _hAlign = 0; + var _vAlign = 0; + var _color = null; + var _fontFamily = ""; + var _overflow = Overflow.NONE; + var _isWrapText = false; + var _premultiply = false; + var _outlineComp = null; + var _outlineColor = cc.Color.WHITE; + var _shadowComp = null; + var _shadowColor = cc.Color.BLACK; + var _canvasPadding = cc.rect(); + var _contentSizeExtend = cc.Size.ZERO; + var _nodeContentSize = cc.Size.ZERO; + var _enableBold = false; + var _enableItalic = false; + var _enableUnderline = false; + var _underlineThickness = 0; + var _drawUnderlinePos = cc.Vec2.ZERO; + var _drawUnderlineWidth = 0; + var _sharedLabelData; + var Alignment = ["left", "center", "right"]; + var TTFAssembler = (function (_Assembler2D) { + _inheritsLoose(TTFAssembler, _Assembler2D); + function TTFAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = TTFAssembler.prototype; + _proto._getAssemblerData = function _getAssemblerData() { + _sharedLabelData = Label._canvasPool.get(); + _sharedLabelData.canvas.width = _sharedLabelData.canvas.height = 1; + return _sharedLabelData; + }; + _proto._resetAssemblerData = function _resetAssemblerData(assemblerData) { + assemblerData && Label._canvasPool.put(assemblerData); + }; + _proto.updateRenderData = function updateRenderData(comp) { + _Assembler2D.prototype.updateRenderData.call(this, comp); + if (!comp._vertsDirty) return; + this._updateProperties(comp); + this._calculateLabelFont(); + this._updateLabelDimensions(); + this._updateTexture(comp); + this._calDynamicAtlas(comp); + comp._actualFontSize = _fontSize; + comp.node.setContentSize(_nodeContentSize); + this.updateVerts(comp); + comp._vertsDirty = false; + _context = null; + _canvas = null; + _texture = null; + }; + _proto.updateVerts = function updateVerts() { }; + _proto._updatePaddingRect = function _updatePaddingRect() { + var top = 0, bottom = 0, left = 0, right = 0; + var outlineWidth = 0; + _contentSizeExtend.width = _contentSizeExtend.height = 0; + if (_outlineComp) { + outlineWidth = _outlineComp.width; + top = bottom = left = right = outlineWidth; + _contentSizeExtend.width = _contentSizeExtend.height = 2 * outlineWidth; + } + if (_shadowComp) { + var shadowWidth = _shadowComp.blur + outlineWidth; + left = Math.max(left, -_shadowComp._offset.x + shadowWidth); + right = Math.max(right, _shadowComp._offset.x + shadowWidth); + top = Math.max(top, _shadowComp._offset.y + shadowWidth); + bottom = Math.max(bottom, -_shadowComp._offset.y + shadowWidth); + } + if (_enableItalic) { + var offset = _drawFontSize * Math.tan(.20943951); + right += offset; + _contentSizeExtend.width += offset; + } + _canvasPadding.x = left; + _canvasPadding.y = top; + _canvasPadding.width = left + right; + _canvasPadding.height = top + bottom; + }; + _proto._updateProperties = function _updateProperties(comp) { + var assemblerData = comp._assemblerData; + _context = assemblerData.context; + _canvas = assemblerData.canvas; + _texture = comp._frame._original ? comp._frame._original._texture : comp._frame._texture; + _string = comp.string.toString(); + _fontSize = comp._fontSize; + _drawFontSize = _fontSize; + _underlineThickness = comp.underlineHeight || _drawFontSize / 8; + _overflow = comp.overflow; + _canvasSize.width = comp.node.width; + _canvasSize.height = comp.node.height; + _nodeContentSize = comp.node.getContentSize(); + _lineHeight = comp._lineHeight; + _hAlign = comp.horizontalAlign; + _vAlign = comp.verticalAlign; + _color = comp.node.color; + _enableBold = comp.enableBold; + _enableItalic = comp.enableItalic; + _enableUnderline = comp.enableUnderline; + _fontFamily = getFontFamily(comp); + _premultiply = comp.srcBlendFactor === cc.macro.BlendFactor.ONE; + false; + _isWrapText = _overflow !== Overflow.NONE && (_overflow === Overflow.RESIZE_HEIGHT || comp.enableWrapText); + _outlineComp = LabelOutline && comp.getComponent(LabelOutline); + _outlineComp = _outlineComp && _outlineComp.enabled && _outlineComp.width > 0 ? _outlineComp : null; + _outlineComp && _outlineColor.set(_outlineComp.color); + _shadowComp = LabelShadow && comp.getComponent(LabelShadow); + _shadowComp = _shadowComp && _shadowComp.enabled ? _shadowComp : null; + if (_shadowComp) { + _shadowColor.set(_shadowComp.color); + _shadowColor.a = _shadowColor.a * comp.node.color.a / 255; + } + this._updatePaddingRect(); + }; + _proto._calculateFillTextStartPosition = function _calculateFillTextStartPosition() { + var labelX = 0; + _hAlign === macro.TextAlignment.RIGHT ? labelX = _canvasSize.width - _canvasPadding.width : _hAlign === macro.TextAlignment.CENTER && (labelX = (_canvasSize.width - _canvasPadding.width) / 2); + var lineHeight = this._getLineHeight(); + var drawStartY = lineHeight * (_splitedStrings.length - 1); + var firstLinelabelY = _fontSize * (1 - textUtils.BASELINE_RATIO / 2); + if (_vAlign !== macro.VerticalTextAlignment.TOP) { + var blank = drawStartY + _canvasPadding.height + _fontSize - _canvasSize.height; + if (_vAlign === macro.VerticalTextAlignment.BOTTOM) { + blank += textUtils.BASELINE_RATIO / 2 * _fontSize; + firstLinelabelY -= blank; + } else firstLinelabelY -= blank / 2; + } + firstLinelabelY += textUtils.BASELINE_OFFSET * _fontSize; + return cc.v2(labelX + _canvasPadding.x, firstLinelabelY + _canvasPadding.y); + }; + _proto._setupOutline = function _setupOutline() { + _context.strokeStyle = "rgba(" + _outlineColor.r + ", " + _outlineColor.g + ", " + _outlineColor.b + ", " + _outlineColor.a / 255 + ")"; + _context.lineWidth = 2 * _outlineComp.width; + }; + _proto._setupShadow = function _setupShadow() { + _context.shadowColor = "rgba(" + _shadowColor.r + ", " + _shadowColor.g + ", " + _shadowColor.b + ", " + _shadowColor.a / 255 + ")"; + _context.shadowBlur = _shadowComp.blur; + _context.shadowOffsetX = _shadowComp.offset.x; + _context.shadowOffsetY = -_shadowComp.offset.y; + }; + _proto._drawTextEffect = function _drawTextEffect(startPosition, lineHeight) { + if (!_shadowComp && !_outlineComp && !_enableUnderline) return; + var isMultiple = _splitedStrings.length > 1 && _shadowComp; + var measureText = this._measureText(_context, _fontDesc); + var drawTextPosX = 0, drawTextPosY = 0; + _shadowComp && this._setupShadow(); + _outlineComp && this._setupOutline(); + for (var i = 0; i < _splitedStrings.length; ++i) { + drawTextPosX = startPosition.x; + drawTextPosY = startPosition.y + i * lineHeight; + if (isMultiple) { + _outlineComp && _context.strokeText(_splitedStrings[i], drawTextPosX, drawTextPosY); + _context.fillText(_splitedStrings[i], drawTextPosX, drawTextPosY); + } + if (_enableUnderline) { + _drawUnderlineWidth = measureText(_splitedStrings[i]); + _hAlign === macro.TextAlignment.RIGHT ? _drawUnderlinePos.x = startPosition.x - _drawUnderlineWidth : _hAlign === macro.TextAlignment.CENTER ? _drawUnderlinePos.x = startPosition.x - _drawUnderlineWidth / 2 : _drawUnderlinePos.x = startPosition.x; + _drawUnderlinePos.y = drawTextPosY + _drawFontSize / 8; + _context.fillRect(_drawUnderlinePos.x, _drawUnderlinePos.y, _drawUnderlineWidth, _underlineThickness); + } + } + isMultiple && (_context.shadowColor = "transparent"); + }; + _proto._updateTexture = function _updateTexture() { + _context.clearRect(0, 0, _canvas.width, _canvas.height); + _context.lineJoin = "round"; + if (_premultiply) _context.fillStyle = "rgba(" + _color.r + ", " + _color.g + ", " + _color.b + ", " + _color.a / 255 + ")"; else { + var _fillColor = _outlineComp ? _outlineColor : _color; + _context.fillStyle = "rgba(" + _fillColor.r + ", " + _fillColor.g + ", " + _fillColor.b + ", " + _invisibleAlpha + ")"; + _context.fillRect(0, 0, _canvas.width, _canvas.height); + _context.fillStyle = "rgba(" + _color.r + ", " + _color.g + ", " + _color.b + ", 1)"; + } + var startPosition = this._calculateFillTextStartPosition(); + var lineHeight = this._getLineHeight(); + var drawTextPosX = startPosition.x, drawTextPosY = 0; + this._drawTextEffect(startPosition, lineHeight); + for (var i = 0; i < _splitedStrings.length; ++i) { + drawTextPosY = startPosition.y + i * lineHeight; + _outlineComp && _context.strokeText(_splitedStrings[i], drawTextPosX, drawTextPosY); + _context.fillText(_splitedStrings[i], drawTextPosX, drawTextPosY); + } + _shadowComp && (_context.shadowColor = "transparent"); + _texture.handleLoadedTexture(); + }; + _proto._calDynamicAtlas = function _calDynamicAtlas(comp) { + if (comp.cacheMode !== Label.CacheMode.BITMAP) return; + var frame = comp._frame; + deleteFromDynamicAtlas(comp, frame); + frame._original || frame.setRect(cc.rect(0, 0, _canvas.width, _canvas.height)); + this.packToDynamicAtlas(comp, frame); + }; + _proto._updateLabelDimensions = function _updateLabelDimensions() { + _canvasSize.width = Math.min(_canvasSize.width, MAX_SIZE); + _canvasSize.height = Math.min(_canvasSize.height, MAX_SIZE); + var recreate = false; + if (_canvas.width !== _canvasSize.width) { + _canvas.width = _canvasSize.width; + recreate = true; + } + if (_canvas.height !== _canvasSize.height) { + _canvas.height = _canvasSize.height; + recreate = true; + } + recreate && (_context.font = _fontDesc); + _context.textAlign = Alignment[_hAlign]; + }; + _proto._getFontDesc = function _getFontDesc() { + var fontDesc = _fontSize.toString() + "px "; + fontDesc += _fontFamily; + _enableBold && (fontDesc = "bold " + fontDesc); + _enableItalic && (fontDesc = "italic " + fontDesc); + return fontDesc; + }; + _proto._getLineHeight = function _getLineHeight() { + var nodeSpacingY = _lineHeight; + nodeSpacingY = 0 === nodeSpacingY ? _fontSize : nodeSpacingY * _fontSize / _drawFontSize; + return 0 | nodeSpacingY; + }; + _proto._calculateParagraphLength = function _calculateParagraphLength(paragraphedStrings, ctx) { + var paragraphLength = []; + for (var i = 0; i < paragraphedStrings.length; ++i) { + var width = textUtils.safeMeasureText(ctx, paragraphedStrings[i], _fontDesc); + paragraphLength.push(width); + } + return paragraphLength; + }; + _proto._measureText = function _measureText(ctx, fontDesc) { + return function (string) { + return textUtils.safeMeasureText(ctx, string, fontDesc); + }; + }; + _proto._calculateShrinkFont = function _calculateShrinkFont(paragraphedStrings) { + var paragraphLength = this._calculateParagraphLength(paragraphedStrings, _context); + var i = 0; + var totalHeight = 0; + var maxLength = 0; + if (_isWrapText) { + var canvasWidthNoMargin = _nodeContentSize.width; + var canvasHeightNoMargin = _nodeContentSize.height; + if (canvasWidthNoMargin < 0 || canvasHeightNoMargin < 0) return; + totalHeight = canvasHeightNoMargin + 1; + var actualFontSize = _fontSize + 1; + var textFragment = ""; + var left = 0, right = 0 | actualFontSize, mid = 0; + while (left < right) { + mid = left + right + 1 >> 1; + if (mid <= 0) { + cc.logID(4003); + break; + } + _fontSize = mid; + _fontDesc = this._getFontDesc(); + _context.font = _fontDesc; + var lineHeight = this._getLineHeight(); + totalHeight = 0; + for (i = 0; i < paragraphedStrings.length; ++i) { + var allWidth = textUtils.safeMeasureText(_context, paragraphedStrings[i], _fontDesc); + textFragment = textUtils.fragmentText(paragraphedStrings[i], allWidth, canvasWidthNoMargin, this._measureText(_context, _fontDesc)); + totalHeight += textFragment.length * lineHeight; + } + totalHeight > canvasHeightNoMargin ? right = mid - 1 : left = mid; + } + if (0 === left) cc.logID(4003); else { + _fontSize = left; + _fontDesc = this._getFontDesc(); + _context.font = _fontDesc; + } + } else { + totalHeight = paragraphedStrings.length * this._getLineHeight(); + for (i = 0; i < paragraphedStrings.length; ++i) maxLength < paragraphLength[i] && (maxLength = paragraphLength[i]); + var scaleX = (_canvasSize.width - _canvasPadding.width) / maxLength; + var scaleY = _canvasSize.height / totalHeight; + _fontSize = _drawFontSize * Math.min(1, scaleX, scaleY) | 0; + _fontDesc = this._getFontDesc(); + _context.font = _fontDesc; + } + }; + _proto._calculateWrapText = function _calculateWrapText(paragraphedStrings) { + if (!_isWrapText) return; + _splitedStrings = []; + var canvasWidthNoMargin = _nodeContentSize.width; + for (var i = 0; i < paragraphedStrings.length; ++i) { + var allWidth = textUtils.safeMeasureText(_context, paragraphedStrings[i], _fontDesc); + var textFragment = textUtils.fragmentText(paragraphedStrings[i], allWidth, canvasWidthNoMargin, this._measureText(_context, _fontDesc)); + _splitedStrings = _splitedStrings.concat(textFragment); + } + }; + _proto._calculateLabelFont = function _calculateLabelFont() { + var paragraphedStrings = _string.split("\n"); + _splitedStrings = paragraphedStrings; + _fontDesc = this._getFontDesc(); + _context.font = _fontDesc; + switch (_overflow) { + case Overflow.NONE: + var canvasSizeX = 0; + var canvasSizeY = 0; + for (var i = 0; i < paragraphedStrings.length; ++i) { + var paraLength = textUtils.safeMeasureText(_context, paragraphedStrings[i], _fontDesc); + canvasSizeX = canvasSizeX > paraLength ? canvasSizeX : paraLength; + } + canvasSizeY = (_splitedStrings.length + textUtils.BASELINE_RATIO) * this._getLineHeight(); + var rawWidth = parseFloat(canvasSizeX.toFixed(2)); + var rawHeight = parseFloat(canvasSizeY.toFixed(2)); + _canvasSize.width = rawWidth + _canvasPadding.width; + _canvasSize.height = rawHeight + _canvasPadding.height; + _nodeContentSize.width = rawWidth + _contentSizeExtend.width; + _nodeContentSize.height = rawHeight + _contentSizeExtend.height; + break; + + case Overflow.SHRINK: + this._calculateShrinkFont(paragraphedStrings); + this._calculateWrapText(paragraphedStrings); + break; + + case Overflow.CLAMP: + this._calculateWrapText(paragraphedStrings); + break; + + case Overflow.RESIZE_HEIGHT: + this._calculateWrapText(paragraphedStrings); + var _rawHeight = (_splitedStrings.length + textUtils.BASELINE_RATIO) * this._getLineHeight(); + _canvasSize.height = _rawHeight + _canvasPadding.height; + _nodeContentSize.height = _rawHeight + _contentSizeExtend.height; + } + }; + return TTFAssembler; + })(_assembler2d["default"]); + exports["default"] = TTFAssembler; + module.exports = exports["default"]; + }), { + "../../../components/CCLabel": 151, + "../../../components/CCLabelOutline": 152, + "../../../components/CCLabelShadow": 153, + "../../../platform/CCMacro": 244, + "../../../utils/text-utils": 331, + "../../assembler-2d": 265, + "../utils": 279 + }], + 279: [(function (require, module, exports) { + "use strict"; + var dynamicAtlasManager = require("./dynamic-atlas/manager"); + var WHITE = cc.Color.WHITE; + var shareLabelInfo = { + fontAtlas: null, + fontSize: 0, + lineHeight: 0, + hAlign: 0, + vAlign: 0, + hash: "", + fontFamily: "", + fontDesc: "Arial", + color: WHITE, + isOutlined: false, + out: WHITE, + margin: 0 + }; + module.exports = { + deleteFromDynamicAtlas: function deleteFromDynamicAtlas(comp, frame) { + if (frame && true && frame._original && dynamicAtlasManager) { + dynamicAtlasManager.deleteAtlasSpriteFrame(frame); + frame._resetDynamicAtlasFrame(); + } + }, + getFontFamily: function getFontFamily(comp) { + if (comp.useSystemFont) return comp.fontFamily || "Arial"; + if (comp.font) { + if (comp.font._nativeAsset) return comp.font._nativeAsset; + cc.assetManager.postLoadNative(comp.font, (function (err) { + comp.isValid && comp.setVertsDirty(); + })); + return "Arial"; + } + return "Arial"; + }, + shareLabelInfo: shareLabelInfo + }; + }), { + "./dynamic-atlas/manager": 274 + }], + 280: [(function (require, module, exports) { + "use strict"; + cc.Graphics.earcut = module.exports = earcut; + function earcut(data, holeIndices, dim) { + dim = dim || 2; + var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = []; + if (!outerNode) return triangles; + var minX, minY, maxX, maxY, x, y, size; + hasHoles && (outerNode = eliminateHoles(data, holeIndices, outerNode, dim)); + if (data.length > 80 * dim) { + minX = maxX = data[0]; + minY = maxY = data[1]; + for (var i = dim; i < outerLen; i += dim) { + x = data[i]; + y = data[i + 1]; + x < minX && (minX = x); + y < minY && (minY = y); + x > maxX && (maxX = x); + y > maxY && (maxY = y); + } + size = Math.max(maxX - minX, maxY - minY); + } + earcutLinked(outerNode, triangles, dim, minX, minY, size); + return triangles; + } + function linkedList(data, start, end, dim, clockwise) { + var i, last; + if (clockwise === signedArea(data, start, end, dim) > 0) for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last); else for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last); + if (last && equals(last, last.next)) { + removeNode(last); + last = last.next; + } + return last; + } + function filterPoints(start, end) { + if (!start) return start; + end || (end = start); + var p = start, again; + do { + again = false; + if (p.steiner || !equals(p, p.next) && 0 !== area(p.prev, p, p.next)) p = p.next; else { + removeNode(p); + p = end = p.prev; + if (p === p.next) return null; + again = true; + } + } while (again || p !== end); + return end; + } + function earcutLinked(ear, triangles, dim, minX, minY, size, pass) { + if (!ear) return; + !pass && size && indexCurve(ear, minX, minY, size); + var stop = ear, prev, next; + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + if (size ? isEarHashed(ear, minX, minY, size) : isEar(ear)) { + triangles.push(prev.i / dim); + triangles.push(ear.i / dim); + triangles.push(next.i / dim); + removeNode(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (pass) if (1 === pass) { + ear = cureLocalIntersections(ear, triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, size, 2); + } else 2 === pass && splitEarcut(ear, triangles, dim, minX, minY, size); else earcutLinked(filterPoints(ear), triangles, dim, minX, minY, size, 1); + break; + } + } + } + function isEar(ear) { + var a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) return false; + var p = ear.next.next; + while (p !== ear.prev) { + if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.next; + } + return true; + } + function isEarHashed(ear, minX, minY, size) { + var a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) return false; + var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y; + var minZ = zOrder(minTX, minTY, minX, minY, size), maxZ = zOrder(maxTX, maxTY, minX, minY, size); + var p = ear.nextZ; + while (p && p.z <= maxZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.nextZ; + } + p = ear.prevZ; + while (p && p.z >= minZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + } + return true; + } + function cureLocalIntersections(start, triangles, dim) { + var p = start; + do { + var a = p.prev, b = p.next.next; + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + triangles.push(a.i / dim); + triangles.push(p.i / dim); + triangles.push(b.i / dim); + removeNode(p); + removeNode(p.next); + p = start = b; + } + p = p.next; + } while (p !== start); + return p; + } + function splitEarcut(start, triangles, dim, minX, minY, size) { + var a = start; + do { + var b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + var c = splitPolygon(a, b); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + earcutLinked(a, triangles, dim, minX, minY, size); + earcutLinked(c, triangles, dim, minX, minY, size); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); + } + function eliminateHoles(data, holeIndices, outerNode, dim) { + var queue = [], i, len, start, end, list; + for (i = 0, len = holeIndices.length; i < len; i++) { + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + list === list.next && (list.steiner = true); + queue.push(getLeftmost(list)); + } + queue.sort(compareX); + for (i = 0; i < queue.length; i++) { + eliminateHole(queue[i], outerNode); + outerNode = filterPoints(outerNode, outerNode.next); + } + return outerNode; + } + function compareX(a, b) { + return a.x - b.x; + } + function eliminateHole(hole, outerNode) { + outerNode = findHoleBridge(hole, outerNode); + if (outerNode) { + var b = splitPolygon(outerNode, hole); + filterPoints(b, b.next); + } + } + function findHoleBridge(hole, outerNode) { + var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m; + do { + if (hy <= p.y && hy >= p.next.y) { + var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + if (x === hx) { + if (hy === p.y) return p; + if (hy === p.next.y) return p.next; + } + m = p.x < p.next.x ? p : p.next; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) return null; + if (hx === qx) return m.prev; + var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan; + p = m.next; + while (p !== stop) { + if (hx >= p.x && p.x >= mx && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + tan = Math.abs(hy - p.y) / (hx - p.x); + if ((tan < tanMin || tan === tanMin && p.x > m.x) && locallyInside(p, hole)) { + m = p; + tanMin = tan; + } + } + p = p.next; + } + return m; + } + function indexCurve(start, minX, minY, size) { + var p = start; + do { + null === p.z && (p.z = zOrder(p.x, p.y, minX, minY, size)); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); + } + function sortLinked(list) { + var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + do { + p = list; + list = null; + tail = null; + numMerges = 0; + while (p) { + numMerges++; + q = p; + pSize = 0; + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) break; + } + qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (0 === pSize) { + e = q; + q = q.nextZ; + qSize--; + } else if (0 !== qSize && q) if (p.z <= q.z) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } else { + e = p; + p = p.nextZ; + pSize--; + } + tail ? tail.nextZ = e : list = e; + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; + } + function zOrder(x, y, minX, minY, size) { + x = 32767 * (x - minX) / size; + y = 32767 * (y - minY) / size; + x = 16711935 & (x | x << 8); + x = 252645135 & (x | x << 4); + x = 858993459 & (x | x << 2); + x = 1431655765 & (x | x << 1); + y = 16711935 & (y | y << 8); + y = 252645135 & (y | y << 4); + y = 858993459 & (y | y << 2); + y = 1431655765 & (y | y << 1); + return x | y << 1; + } + function getLeftmost(start) { + var p = start, leftmost = start; + do { + p.x < leftmost.x && (leftmost = p); + p = p.next; + } while (p !== start); + return leftmost; + } + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; + } + function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b); + } + function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); + } + function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; + } + function intersects(p1, q1, p2, q2) { + if (equals(p1, q1) && equals(p2, q2) || equals(p1, q2) && equals(p2, q1)) return true; + return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 && area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0; + } + function intersectsPolygon(a, b) { + var p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true; + p = p.next; + } while (p !== a); + return false; + } + function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; + } + function middleInside(a, b) { + var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2; + do { + p.y > py !== p.next.y > py && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x && (inside = !inside); + p = p.next; + } while (p !== a); + return inside; + } + function splitPolygon(a, b) { + var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; + } + function insertNode(i, x, y, last) { + var p = new Node(i, x, y); + if (last) { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } else { + p.prev = p; + p.next = p; + } + return p; + } + function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + p.prevZ && (p.prevZ.nextZ = p.nextZ); + p.nextZ && (p.nextZ.prevZ = p.prevZ); + } + function Node(i, x, y) { + this.i = i; + this.x = x; + this.y = y; + this.prev = null; + this.next = null; + this.z = null; + this.prevZ = null; + this.nextZ = null; + this.steiner = false; + } + earcut.deviation = function (data, holeIndices, dim, triangles) { + var hasHoles = holeIndices && holeIndices.length; + var outerLen = hasHoles ? holeIndices[0] * dim : data.length; + var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim)); + if (hasHoles) for (var i = 0, len = holeIndices.length; i < len; i++) { + var start = holeIndices[i] * dim; + var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + polygonArea -= Math.abs(signedArea(data, start, end, dim)); + } + var trianglesArea = 0; + for (i = 0; i < triangles.length; i += 3) { + var a = triangles[i] * dim; + var b = triangles[i + 1] * dim; + var c = triangles[i + 2] * dim; + trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1])); + } + return 0 === polygonArea && 0 === trianglesArea ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea); + }; + function signedArea(data, start, end, dim) { + var sum = 0; + for (var i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; + } + earcut.flatten = function (data) { + var dim = data[0][0].length, result = { + vertices: [], + holes: [], + dimensions: dim + }, holeIndex = 0; + for (var i = 0; i < data.length; i++) { + for (var j = 0; j < data[i].length; j++) for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]); + if (i > 0) { + holeIndex += data[i - 1].length; + result.holes.push(holeIndex); + } + } + return result; + }; + }), {}], + 281: [(function (require, module, exports) { + "use strict"; + var Helper = require("../../../../graphics/helper"); + var PointFlags = require("../../../../graphics/types").PointFlags; + var Point = cc.Graphics.Point = cc.Class({ + name: "cc.GraphicsPoint", + extends: cc.Vec2, + ctor: function ctor(x, y) { + this.reset(); + }, + reset: function reset() { + this.dx = 0; + this.dy = 0; + this.dmx = 0; + this.dmy = 0; + this.flags = 0; + this.len = 0; + } + }); + function Path() { + this.reset(); + } + cc.js.mixin(Path.prototype, { + reset: function reset() { + this.closed = false; + this.nbevel = 0; + this.complex = true; + this.points ? this.points.length = 0 : this.points = []; + } + }); + function Impl(graphics) { + this._tessTol = .25; + this._distTol = .01; + this._updatePathOffset = false; + this._paths = null; + this._pathLength = 0; + this._pathOffset = 0; + this._points = null; + this._pointsOffset = 0; + this._commandx = 0; + this._commandy = 0; + this._paths = []; + this._points = []; + } + cc.js.mixin(Impl.prototype, { + moveTo: function moveTo(x, y) { + if (this._updatePathOffset) { + this._pathOffset = this._pathLength; + this._updatePathOffset = false; + } + this._addPath(); + this._addPoint(x, y, PointFlags.PT_CORNER); + this._commandx = x; + this._commandy = y; + }, + lineTo: function lineTo(x, y) { + this._addPoint(x, y, PointFlags.PT_CORNER); + this._commandx = x; + this._commandy = y; + }, + bezierCurveTo: function bezierCurveTo(c1x, c1y, c2x, c2y, x, y) { + var path = this._curPath; + var last = path.points[path.points.length - 1]; + if (last.x === c1x && last.y === c1y && c2x === x && c2y === y) { + this.lineTo(x, y); + return; + } + Helper.tesselateBezier(this, last.x, last.y, c1x, c1y, c2x, c2y, x, y, 0, PointFlags.PT_CORNER); + this._commandx = x; + this._commandy = y; + }, + quadraticCurveTo: function quadraticCurveTo(cx, cy, x, y) { + var x0 = this._commandx; + var y0 = this._commandy; + this.bezierCurveTo(x0 + 2 / 3 * (cx - x0), y0 + 2 / 3 * (cy - y0), x + 2 / 3 * (cx - x), y + 2 / 3 * (cy - y), x, y); + }, + arc: function arc(cx, cy, r, startAngle, endAngle, counterclockwise) { + Helper.arc(this, cx, cy, r, startAngle, endAngle, counterclockwise); + }, + ellipse: function ellipse(cx, cy, rx, ry) { + Helper.ellipse(this, cx, cy, rx, ry); + this._curPath.complex = false; + }, + circle: function circle(cx, cy, r) { + Helper.ellipse(this, cx, cy, r, r); + this._curPath.complex = false; + }, + rect: function rect(x, y, w, h) { + this.moveTo(x, y); + this.lineTo(x, y + h); + this.lineTo(x + w, y + h); + this.lineTo(x + w, y); + this.close(); + this._curPath.complex = false; + }, + roundRect: function roundRect(x, y, w, h, r) { + Helper.roundRect(this, x, y, w, h, r); + this._curPath.complex = false; + }, + clear: function clear(clean) { + this._pathLength = 0; + this._pathOffset = 0; + this._pointsOffset = 0; + this._curPath = null; + if (clean) { + this._paths.length = 0; + this._points.length = 0; + } + }, + close: function close() { + this._curPath.closed = true; + }, + _addPath: function _addPath() { + var offset = this._pathLength; + var path = this._paths[offset]; + if (path) path.reset(); else { + path = new Path(); + this._paths.push(path); + } + this._pathLength++; + this._curPath = path; + return path; + }, + _addPoint: function _addPoint(x, y, flags) { + var path = this._curPath; + if (!path) return; + var pt; + var points = this._points; + var pathPoints = path.points; + var offset = this._pointsOffset++; + pt = points[offset]; + if (pt) { + pt.x = x; + pt.y = y; + } else { + pt = new Point(x, y); + points.push(pt); + } + pt.flags = flags; + pathPoints.push(pt); + } + }); + cc.Graphics._Impl = Impl; + module.exports = Impl; + }), { + "../../../../graphics/helper": 203, + "../../../../graphics/types": 205 + }], + 282: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("../../../assembler")); + var _inputAssembler = _interopRequireDefault(require("../../../../../renderer/core/input-assembler")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var MeshBuffer = require("../../mesh-buffer"); + var renderer = require("../../../index"); + var Graphics = require("../../../../graphics/graphics"); + var PointFlags = require("../../../../graphics/types").PointFlags; + var LineJoin = Graphics.LineJoin; + var LineCap = Graphics.LineCap; + var Earcut = require("./earcut"); + require("./impl"); + var MAX_VERTEX = 65535; + var MAX_INDICE = 2 * MAX_VERTEX; + var PI = Math.PI; + var min = Math.min; + var max = Math.max; + var ceil = Math.ceil; + var acos = Math.acos; + var cos = Math.cos; + var sin = Math.sin; + var atan2 = Math.atan2; + function curveDivs(r, arc, tol) { + var da = 2 * acos(r / (r + tol)); + return max(2, ceil(arc / da)); + } + function clamp(v, min, max) { + if (v < min) return min; + if (v > max) return max; + return v; + } + var gfx = cc.gfx; + var vfmtPosColorSdf = new gfx.VertexFormat([{ + name: gfx.ATTR_POSITION, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: gfx.ATTR_COLOR, + type: gfx.ATTR_TYPE_UINT8, + num: 4, + normalize: true + }, { + name: "a_dist", + type: gfx.ATTR_TYPE_FLOAT32, + num: 1 + }]); + vfmtPosColorSdf.name = "vfmtPosColorSdf"; + var GraphicsAssembler = (function (_Assembler) { + _inheritsLoose(GraphicsAssembler, _Assembler); + function GraphicsAssembler(graphics) { + var _this; + _this = _Assembler.call(this, graphics) || this; + _this._buffer = null; + _this._buffers = []; + _this._bufferOffset = 0; + return _this; + } + var _proto = GraphicsAssembler.prototype; + _proto.getVfmt = function getVfmt() { + return vfmtPosColorSdf; + }; + _proto.getVfmtFloatCount = function getVfmtFloatCount() { + return 4; + }; + _proto.requestBuffer = function requestBuffer() { + var buffer = { + indiceStart: 0, + vertexStart: 0 + }; + var meshbuffer = new MeshBuffer(renderer._handle, this.getVfmt()); + buffer.meshbuffer = meshbuffer; + var ia = new _inputAssembler["default"](meshbuffer._vb, meshbuffer._ib); + buffer.ia = ia; + this._buffers.push(buffer); + return buffer; + }; + _proto.getBuffers = function getBuffers() { + 0 === this._buffers.length && this.requestBuffer(); + return this._buffers; + }; + _proto.clear = function clear(clean) { + this._bufferOffset = 0; + var datas = this._buffers; + if (clean) { + for (var i = 0, l = datas.length; i < l; i++) { + var data = datas[i]; + data.meshbuffer.destroy(); + data.meshbuffer = null; + } + datas.length = 0; + } else for (var _i = 0, _l = datas.length; _i < _l; _i++) { + var _data = datas[_i]; + _data.indiceStart = 0; + _data.vertexStart = 0; + var meshbuffer = _data.meshbuffer; + meshbuffer.reset(); + } + }; + _proto.fillBuffers = function fillBuffers(graphics, renderer) { + renderer._flush(); + renderer.node = graphics.node; + renderer.material = graphics._materials[0]; + var buffers = this.getBuffers(); + for (var index = 0, length = buffers.length; index < length; index++) { + var buffer = buffers[index]; + var meshbuffer = buffer.meshbuffer; + buffer.ia._count = buffer.indiceStart; + renderer._flushIA(buffer.ia); + meshbuffer.uploadData(); + } + }; + _proto.genBuffer = function genBuffer(graphics, cverts) { + var buffers = this.getBuffers(); + var buffer = buffers[this._bufferOffset]; + var meshbuffer = buffer.meshbuffer; + var maxVertsCount = buffer.vertexStart + cverts; + if (maxVertsCount > MAX_VERTEX || 3 * maxVertsCount > MAX_INDICE) { + ++this._bufferOffset; + maxVertsCount = cverts; + if (this._bufferOffset < buffers.length) buffer = buffers[this._bufferOffset]; else { + buffer = this.requestBuffer(graphics); + buffers[this._bufferOffset] = buffer; + } + meshbuffer = buffer.meshbuffer; + } + maxVertsCount > meshbuffer.vertexOffset && meshbuffer.requestStatic(cverts, 3 * cverts); + this._buffer = buffer; + return buffer; + }; + _proto.stroke = function stroke(graphics) { + this._curColor = graphics._strokeColor._val; + this._flattenPaths(graphics._impl); + this._expandStroke(graphics); + graphics._impl._updatePathOffset = true; + }; + _proto.fill = function fill(graphics) { + this._curColor = graphics._fillColor._val; + this._expandFill(graphics); + graphics._impl._updatePathOffset = true; + }; + _proto._expandStroke = function _expandStroke(graphics) { + var w = .5 * graphics.lineWidth, lineCap = graphics.lineCap, lineJoin = graphics.lineJoin, miterLimit = graphics.miterLimit; + var impl = graphics._impl; + var ncap = curveDivs(w, PI, impl._tessTol); + this._calculateJoins(impl, w, lineJoin, miterLimit); + var paths = impl._paths; + var cverts = 0; + for (var i = impl._pathOffset, l = impl._pathLength; i < l; i++) { + var path = paths[i]; + var pointsLength = path.points.length; + lineJoin === LineJoin.ROUND ? cverts += 2 * (pointsLength + path.nbevel * (ncap + 2) + 1) : cverts += 2 * (pointsLength + 5 * path.nbevel + 1); + path.closed || (lineCap === LineCap.ROUND ? cverts += 2 * (2 * ncap + 2) : cverts += 12); + } + var buffer = this.genBuffer(graphics, cverts), meshbuffer = buffer.meshbuffer, vData = meshbuffer._vData, iData = meshbuffer._iData; + for (var _i2 = impl._pathOffset, _l2 = impl._pathLength; _i2 < _l2; _i2++) { + var _path = paths[_i2]; + var pts = _path.points; + var _pointsLength = pts.length; + var offset = buffer.vertexStart; + var p0 = void 0, p1 = void 0; + var start = void 0, end = void 0, loop = void 0; + loop = _path.closed; + if (loop) { + p0 = pts[_pointsLength - 1]; + p1 = pts[0]; + start = 0; + end = _pointsLength; + } else { + p0 = pts[0]; + p1 = pts[1]; + start = 1; + end = _pointsLength - 1; + } + p1 = p1 || p0; + if (!loop) { + var dPos = p1.sub(p0); + dPos.normalizeSelf(); + var dx = dPos.x; + var dy = dPos.y; + lineCap === LineCap.BUTT ? this._buttCapStart(p0, dx, dy, w, 0) : lineCap === LineCap.SQUARE ? this._buttCapStart(p0, dx, dy, w, w) : lineCap === LineCap.ROUND && this._roundCapStart(p0, dx, dy, w, ncap); + } + for (var j = start; j < end; ++j) { + if (lineJoin === LineJoin.ROUND) this._roundJoin(p0, p1, w, w, ncap); else if (0 !== (p1.flags & (PointFlags.PT_BEVEL | PointFlags.PT_INNERBEVEL))) this._bevelJoin(p0, p1, w, w); else { + this._vset(p1.x + p1.dmx * w, p1.y + p1.dmy * w, 1); + this._vset(p1.x - p1.dmx * w, p1.y - p1.dmy * w, -1); + } + p0 = p1; + p1 = pts[j + 1]; + } + if (loop) { + var floatCount = this.getVfmtFloatCount(); + var vDataoOfset = offset * floatCount; + this._vset(vData[vDataoOfset], vData[vDataoOfset + 1], 1); + this._vset(vData[vDataoOfset + floatCount], vData[vDataoOfset + floatCount + 1], -1); + } else { + var _dPos = p1.sub(p0); + _dPos.normalizeSelf(); + var _dx = _dPos.x; + var _dy = _dPos.y; + lineCap === LineCap.BUTT ? this._buttCapEnd(p1, _dx, _dy, w, 0) : lineCap === LineCap.SQUARE ? this._buttCapEnd(p1, _dx, _dy, w, w) : lineCap === LineCap.ROUND && this._roundCapEnd(p1, _dx, _dy, w, ncap); + } + var indicesOffset = buffer.indiceStart; + for (var _start = offset + 2, _end = buffer.vertexStart; _start < _end; _start++) { + iData[indicesOffset++] = _start - 2; + iData[indicesOffset++] = _start - 1; + iData[indicesOffset++] = _start; + } + buffer.indiceStart = indicesOffset; + } + }; + _proto._expandFill = function _expandFill(graphics) { + var impl = graphics._impl; + var paths = impl._paths; + var cverts = 0; + for (var i = impl._pathOffset, l = impl._pathLength; i < l; i++) { + var path = paths[i]; + var pointsLength = path.points.length; + cverts += pointsLength; + } + var buffer = this.genBuffer(graphics, cverts), meshbuffer = buffer.meshbuffer, vData = meshbuffer._vData, iData = meshbuffer._iData; + for (var _i3 = impl._pathOffset, _l3 = impl._pathLength; _i3 < _l3; _i3++) { + var _path2 = paths[_i3]; + var pts = _path2.points; + var _pointsLength2 = pts.length; + if (0 === _pointsLength2) continue; + var offset = buffer.vertexStart; + for (var j = 0; j < _pointsLength2; ++j) this._vset(pts[j].x, pts[j].y); + var indicesOffset = buffer.indiceStart; + if (_path2.complex) { + var earcutData = []; + var floatCount = this.getVfmtFloatCount(); + for (var _j = offset, end = buffer.vertexStart; _j < end; _j++) { + var vDataOffset = _j * floatCount; + earcutData.push(vData[vDataOffset]); + earcutData.push(vData[vDataOffset + 1]); + } + var newIndices = Earcut(earcutData, null, 2); + if (!newIndices || 0 === newIndices.length) continue; + for (var _j2 = 0, nIndices = newIndices.length; _j2 < nIndices; _j2++) iData[indicesOffset++] = newIndices[_j2] + offset; + } else { + var first = offset; + for (var start = offset + 2, _end2 = buffer.vertexStart; start < _end2; start++) { + iData[indicesOffset++] = first; + iData[indicesOffset++] = start - 1; + iData[indicesOffset++] = start; + } + } + buffer.indiceStart = indicesOffset; + } + }; + _proto._calculateJoins = function _calculateJoins(impl, w, lineJoin, miterLimit) { + var iw = 0; + w > 0 && (iw = 1 / w); + var paths = impl._paths; + for (var i = impl._pathOffset, l = impl._pathLength; i < l; i++) { + var path = paths[i]; + var pts = path.points; + var ptsLength = pts.length; + var p0 = pts[ptsLength - 1]; + var p1 = pts[0]; + var nleft = 0; + path.nbevel = 0; + for (var j = 0; j < ptsLength; j++) { + var dmr2 = void 0, cross = void 0, limit = void 0; + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + p1.dmx = .5 * (dlx0 + dlx1); + p1.dmy = .5 * (dly0 + dly1); + dmr2 = p1.dmx * p1.dmx + p1.dmy * p1.dmy; + if (dmr2 > 1e-6) { + var scale = 1 / dmr2; + scale > 600 && (scale = 600); + p1.dmx *= scale; + p1.dmy *= scale; + } + cross = p1.dx * p0.dy - p0.dx * p1.dy; + if (cross > 0) { + nleft++; + p1.flags |= PointFlags.PT_LEFT; + } + limit = max(11, min(p0.len, p1.len) * iw); + dmr2 * limit * limit < 1 && (p1.flags |= PointFlags.PT_INNERBEVEL); + var dmwx = p1.dmx * w; + var dmwy = p1.dmy * w; + var dmlen = dmwx * dmwx + dmwy * dmwy; + (dmlen > p1.len * p1.len || dmlen > p0.len * p0.len) && (p1.flags |= PointFlags.PT_INNERBEVEL); + p1.flags & PointFlags.PT_CORNER && (dmr2 * miterLimit * miterLimit < 1 || lineJoin === LineJoin.BEVEL || lineJoin === LineJoin.ROUND) && (p1.flags |= PointFlags.PT_BEVEL); + 0 !== (p1.flags & (PointFlags.PT_BEVEL | PointFlags.PT_INNERBEVEL)) && path.nbevel++; + p0 = p1; + p1 = pts[j + 1]; + } + } + }; + _proto._flattenPaths = function _flattenPaths(impl) { + var paths = impl._paths; + for (var i = impl._pathOffset, l = impl._pathLength; i < l; i++) { + var path = paths[i]; + var pts = path.points; + var p0 = pts[pts.length - 1]; + var p1 = pts[0]; + if (pts.length > 2 && p0.equals(p1)) { + path.closed = true; + pts.pop(); + p0 = pts[pts.length - 1]; + } + for (var j = 0, size = pts.length; j < size; j++) { + var dPos = p1.sub(p0); + p0.len = dPos.mag(); + (dPos.x || dPos.y) && dPos.normalizeSelf(); + p0.dx = dPos.x; + p0.dy = dPos.y; + p0 = p1; + p1 = pts[j + 1]; + } + } + }; + _proto._chooseBevel = function _chooseBevel(bevel, p0, p1, w) { + var x = p1.x; + var y = p1.y; + var x0, y0, x1, y1; + if (0 !== bevel) { + x0 = x + p0.dy * w; + y0 = y - p0.dx * w; + x1 = x + p1.dy * w; + y1 = y - p1.dx * w; + } else { + x0 = x1 = x + p1.dmx * w; + y0 = y1 = y + p1.dmy * w; + } + return [x0, y0, x1, y1]; + }; + _proto._buttCapStart = function _buttCapStart(p, dx, dy, w, d) { + var px = p.x - dx * d; + var py = p.y - dy * d; + var dlx = dy; + var dly = -dx; + this._vset(px + dlx * w, py + dly * w, 1); + this._vset(px - dlx * w, py - dly * w, -1); + }; + _proto._buttCapEnd = function _buttCapEnd(p, dx, dy, w, d) { + var px = p.x + dx * d; + var py = p.y + dy * d; + var dlx = dy; + var dly = -dx; + this._vset(px + dlx * w, py + dly * w, 1); + this._vset(px - dlx * w, py - dly * w, -1); + }; + _proto._roundCapStart = function _roundCapStart(p, dx, dy, w, ncap) { + var px = p.x; + var py = p.y; + var dlx = dy; + var dly = -dx; + for (var i = 0; i < ncap; i++) { + var a = i / (ncap - 1) * PI; + var ax = cos(a) * w, ay = sin(a) * w; + this._vset(px - dlx * ax - dx * ay, py - dly * ax - dy * ay, 1); + this._vset(px, py, 0); + } + this._vset(px + dlx * w, py + dly * w, 1); + this._vset(px - dlx * w, py - dly * w, -1); + }; + _proto._roundCapEnd = function _roundCapEnd(p, dx, dy, w, ncap) { + var px = p.x; + var py = p.y; + var dlx = dy; + var dly = -dx; + this._vset(px + dlx * w, py + dly * w, 1); + this._vset(px - dlx * w, py - dly * w, -1); + for (var i = 0; i < ncap; i++) { + var a = i / (ncap - 1) * PI; + var ax = cos(a) * w, ay = sin(a) * w; + this._vset(px, py, 0); + this._vset(px - dlx * ax + dx * ay, py - dly * ax + dy * ay, 1); + } + }; + _proto._roundJoin = function _roundJoin(p0, p1, lw, rw, ncap) { + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + var p1x = p1.x; + var p1y = p1.y; + if (0 !== (p1.flags & PointFlags.PT_LEFT)) { + var out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, lw); + var lx0 = out[0]; + var ly0 = out[1]; + var lx1 = out[2]; + var ly1 = out[3]; + var a0 = atan2(-dly0, -dlx0); + var a1 = atan2(-dly1, -dlx1); + a1 > a0 && (a1 -= 2 * PI); + this._vset(lx0, ly0, 1); + this._vset(p1x - dlx0 * rw, p1.y - dly0 * rw, -1); + var n = clamp(ceil((a0 - a1) / PI) * ncap, 2, ncap); + for (var i = 0; i < n; i++) { + var u = i / (n - 1); + var a = a0 + u * (a1 - a0); + var rx = p1x + cos(a) * rw; + var ry = p1y + sin(a) * rw; + this._vset(p1x, p1y, 0); + this._vset(rx, ry, -1); + } + this._vset(lx1, ly1, 1); + this._vset(p1x - dlx1 * rw, p1y - dly1 * rw, -1); + } else { + var _out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, -rw); + var rx0 = _out[0]; + var ry0 = _out[1]; + var rx1 = _out[2]; + var ry1 = _out[3]; + var _a = atan2(dly0, dlx0); + var _a2 = atan2(dly1, dlx1); + _a2 < _a && (_a2 += 2 * PI); + this._vset(p1x + dlx0 * rw, p1y + dly0 * rw, 1); + this._vset(rx0, ry0, -1); + var _n = clamp(ceil((_a2 - _a) / PI) * ncap, 2, ncap); + for (var _i4 = 0; _i4 < _n; _i4++) { + var _u = _i4 / (_n - 1); + var _a3 = _a + _u * (_a2 - _a); + var lx = p1x + cos(_a3) * lw; + var ly = p1y + sin(_a3) * lw; + this._vset(lx, ly, 1); + this._vset(p1x, p1y, 0); + } + this._vset(p1x + dlx1 * rw, p1y + dly1 * rw, 1); + this._vset(rx1, ry1, -1); + } + }; + _proto._bevelJoin = function _bevelJoin(p0, p1, lw, rw) { + var rx0, ry0, rx1, ry1; + var lx0, ly0, lx1, ly1; + var dlx0 = p0.dy; + var dly0 = -p0.dx; + var dlx1 = p1.dy; + var dly1 = -p1.dx; + if (p1.flags & PointFlags.PT_LEFT) { + var out = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, lw); + lx0 = out[0]; + ly0 = out[1]; + lx1 = out[2]; + ly1 = out[3]; + this._vset(lx0, ly0, 1); + this._vset(p1.x - dlx0 * rw, p1.y - dly0 * rw, -1); + this._vset(lx1, ly1, 1); + this._vset(p1.x - dlx1 * rw, p1.y - dly1 * rw, -1); + } else { + var _out2 = this._chooseBevel(p1.flags & PointFlags.PT_INNERBEVEL, p0, p1, -rw); + rx0 = _out2[0]; + ry0 = _out2[1]; + rx1 = _out2[2]; + ry1 = _out2[3]; + this._vset(p1.x + dlx0 * lw, p1.y + dly0 * lw, 1); + this._vset(rx0, ry0, -1); + this._vset(p1.x + dlx1 * lw, p1.y + dly1 * lw, 1); + this._vset(rx1, ry1, -1); + } + }; + _proto._vset = function _vset(x, y, distance) { + void 0 === distance && (distance = 0); + var buffer = this._buffer; + var meshbuffer = buffer.meshbuffer; + var dataOffset = buffer.vertexStart * this.getVfmtFloatCount(); + var vData = meshbuffer._vData; + var uintVData = meshbuffer._uintVData; + vData[dataOffset] = x; + vData[dataOffset + 1] = y; + uintVData[dataOffset + 2] = this._curColor; + vData[dataOffset + 3] = distance; + buffer.vertexStart++; + meshbuffer._dirty = true; + }; + return GraphicsAssembler; + })(_assembler["default"]); + exports["default"] = GraphicsAssembler; + _assembler["default"].register(cc.Graphics, GraphicsAssembler); + module.exports = exports["default"]; + }), { + "../../../../../renderer/core/input-assembler": 362, + "../../../../graphics/graphics": 202, + "../../../../graphics/types": 205, + "../../../assembler": 268, + "../../../index": 271, + "../../mesh-buffer": 308, + "./earcut": 280, + "./impl": 281 + }], + 283: [(function (require, module, exports) { + "use strict"; + cc.assemblers = {}; + require("./sprite"); + require("./mask-assembler"); + require("./graphics"); + require("./label"); + require("./motion-streak"); + }), { + "./graphics": 282, + "./label": 291, + "./mask-assembler": 292, + "./motion-streak": 293, + "./sprite": 306 + }], + 284: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _bmfont = _interopRequireDefault(require("../../../../utils/label/bmfont")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _dataOffset = 0; + var WebglBmfontAssembler = (function (_BmfontAssembler) { + _inheritsLoose(WebglBmfontAssembler, _BmfontAssembler); + function WebglBmfontAssembler() { + return _BmfontAssembler.apply(this, arguments) || this; + } + var _proto = WebglBmfontAssembler.prototype; + _proto.initData = function initData() { + this._renderData.createFlexData(0, 4, 6, this.getVfmt()); + }; + _proto._reserveQuads = function _reserveQuads(comp, count) { + var verticesCount = 4 * count; + var indicesCount = 6 * count; + var flexBuffer = this._renderData._flexBuffer; + flexBuffer.reserve(verticesCount, indicesCount); + flexBuffer.used(verticesCount, indicesCount); + var iData = this._renderData.iDatas[0]; + for (var i = 0, vid = 0, l = indicesCount; i < l; i += 6, vid += 4) { + iData[i] = vid; + iData[i + 1] = vid + 1; + iData[i + 2] = vid + 2; + iData[i + 3] = vid + 1; + iData[i + 4] = vid + 3; + iData[i + 5] = vid + 2; + } + _dataOffset = 0; + }; + _proto._quadsUpdated = function _quadsUpdated(comp) { + _dataOffset = 0; + var flexBuffer = this._renderData._flexBuffer; + flexBuffer.used(this.verticesCount, this.indicesCount); + }; + _proto._getColor = function _getColor(comp) { + return comp.node._color._val; + }; + _proto.appendQuad = function appendQuad(comp, texture, rect, rotated, x, y, scale) { + var renderData = this._renderData; + var verts = renderData.vDatas[0], uintVerts = renderData.uintVDatas[0]; + this.verticesCount += 4; + this.indicesCount = this.verticesCount / 2 * 3; + var texw = texture.width, texh = texture.height, rectWidth = rect.width, rectHeight = rect.height, color = this._getColor(comp); + var l, b, r, t; + var floatsPerVert = this.floatsPerVert; + var uvDataOffset = _dataOffset + this.uvOffset; + if (rotated) { + l = rect.x / texw; + r = (rect.x + rectHeight) / texw; + b = (rect.y + rectWidth) / texh; + t = rect.y / texh; + verts[uvDataOffset] = l; + verts[uvDataOffset + 1] = t; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = l; + verts[uvDataOffset + 1] = b; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = r; + verts[uvDataOffset + 1] = t; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = r; + verts[uvDataOffset + 1] = b; + } else { + l = rect.x / texw; + r = (rect.x + rectWidth) / texw; + b = (rect.y + rectHeight) / texh; + t = rect.y / texh; + verts[uvDataOffset] = l; + verts[uvDataOffset + 1] = b; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = r; + verts[uvDataOffset + 1] = b; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = l; + verts[uvDataOffset + 1] = t; + uvDataOffset += floatsPerVert; + verts[uvDataOffset] = r; + verts[uvDataOffset + 1] = t; + } + l = x; + r = x + rectWidth * scale; + b = y - rectHeight * scale; + t = y; + this.appendVerts(comp, _dataOffset, l, r, b, t); + var colorOffset = _dataOffset + this.colorOffset; + for (var i = 0; i < 4; i++) { + uintVerts[colorOffset] = color; + colorOffset += floatsPerVert; + } + _dataOffset += 4 * this.floatsPerVert; + }; + _proto.appendVerts = function appendVerts(comp, offset, l, r, b, t) { + var local = this._local; + var floatsPerVert = this.floatsPerVert; + local[offset] = l; + local[offset + 1] = b; + offset += floatsPerVert; + local[offset] = r; + local[offset + 1] = b; + offset += floatsPerVert; + local[offset] = l; + local[offset + 1] = t; + offset += floatsPerVert; + local[offset] = r; + local[offset + 1] = t; + }; + _proto.updateWorldVerts = function updateWorldVerts(comp) { + var node = comp.node; + var matrix = node._worldMatrix; + var matrixm = matrix.m, a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var offset = 0; offset < local.length; offset += floatsPerVert) { + var x = local[offset]; + var y = local[offset + 1]; + world[offset] = x * a + y * c + tx; + world[offset + 1] = x * b + y * d + ty; + } + }; + return WebglBmfontAssembler; + })(_bmfont["default"]); + exports["default"] = WebglBmfontAssembler; + module.exports = exports["default"]; + }), { + "../../../../utils/label/bmfont": 275 + }], + 285: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var js = require("../../../../../platform/js"); + var WebglBmfontAssembler = require("./bmfont"); + var LetterFontAssembler = require("../../../../utils/label/letter-font"); + var WHITE = cc.color(255, 255, 255, 255); + var WebglLetterFontAssembler = (function (_LetterFontAssembler) { + _inheritsLoose(WebglLetterFontAssembler, _LetterFontAssembler); + function WebglLetterFontAssembler() { + return _LetterFontAssembler.apply(this, arguments) || this; + } + var _proto = WebglLetterFontAssembler.prototype; + _proto.createData = function createData(comp) { + return comp.requestRenderData(); + }; + _proto._getColor = function _getColor(comp) { + WHITE._fastSetA(comp.node._color.a); + return WHITE._val; + }; + _proto.updateColor = function updateColor(comp) { + var color = this._getColor(comp); + _LetterFontAssembler.prototype.updateColor.call(this, comp, color); + }; + return WebglLetterFontAssembler; + })(LetterFontAssembler); + exports["default"] = WebglLetterFontAssembler; + module.exports = exports["default"]; + }), { + "../../../../../platform/js": 260, + "../../../../utils/label/letter-font": 277, + "./bmfont": 284 + }], + 286: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _materialVariant = _interopRequireDefault(require("../../../../../assets/material/material-variant")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Label = require("../../../../../components/CCLabel"); + var LabelShadow = require("../../../../../components/CCLabelShadow"); + var LabelOutline = require("../../../../../components/CCLabelOutline"); + var Material = require("../../../../../assets/material/CCMaterial"); + var UPDATE_CONTENT = 1; + var UPDATE_FONT = 2; + var UPDATE_EFFECT = 4; + var NativeTTF = (function () { + function NativeTTF() { } + var _proto = NativeTTF.prototype; + _proto.init = function init(comp) { + this.labelMaterial = null; + this._label = this._renderComp = comp; + renderer.CustomAssembler.prototype.ctor.call(this); + comp.node._proxy.setAssembler(this); + this._layout = new jsb.LabelRenderer(); + this._layout.init(comp); + this._cfg = new DataView(this._layout._cfg); + this._layoutInfo = new DataView(this._layout._layout); + this._cfgFields = jsb.LabelRenderer._cfgFields; + this._layoutFields = jsb.LabelRenderer._layoutFields; + this._layout.bindNodeProxy(comp.node._proxy); + this._bindMaterial(comp); + }; + _proto._setBufferFlag = function _setBufferFlag(dv, offset, size, type, flag) { + if ("int8" == type && 1 == size) { + var v = dv.getInt8(offset); + dv.setInt8(offset, flag | v); + } else if ("int32" == type && 4 == size) { + var _v = dv.getInt32(offset, jsb.__isLittleEndian__); + dv.setInt32(offset, flag | _v, jsb.__isLittleEndian__); + } else cc.warn("flag storage type should be int8/int32 only, type/size -> " + type + "/" + size + "."); + }; + _proto._updateCfgFlag = function _updateCfgFlag(flag) { + var field = this._cfgFields.updateFlags; + this._setBufferFlag(this._cfg, field.offset, field.size, field.type, flag); + }; + _proto._setBufferValue = function _setBufferValue(dv, offset, size, type, value) { + if ("float" == type && 4 == size) dv.setFloat32(offset, value, jsb.__isLittleEndian__); else if ("int32" == type && 4 == size) dv.setInt32(offset, value, jsb.__isLittleEndian__); else if ("bool" == type && 1 == size) dv.setInt8(offset, !value ? 0 : 1, jsb.__isLittleEndian__); else if ("Color4B" == type && 4 == size) { + dv.setUint8(offset, value.r); + dv.setUint8(offset + 1, value.g); + dv.setUint8(offset + 2, value.b); + dv.setUint8(offset + 3, value.a); + } else "int8" == type && 1 == size ? dv.setUint8(offset, value) : cc.warn("dont know how to set value to buffer, type/size -> " + type + "/" + size + "."); + }; + _proto._setFieldValue = function _setFieldValue(dv, desc, field_name, value) { + var field = desc[field_name]; + this._setBufferValue(dv, field.offset, field.size, field.type, value); + }; + _proto._getBufferValue = function _getBufferValue(dv, offset, size, type) { + if ("float" == type && 4 == size) return dv.getFloat32(offset, jsb.__isLittleEndian__); + if ("int32" == type && 4 == size) return dv.getInt32(offset, jsb.__isLittleEndian__); + if ("bool" == type && 1 == size) return 0 != dv.getInt8(offset, jsb.__isLittleEndian__); + if ("Color4B" == type && 4 == size) { + var r = dv.getUint8(offset); + var g = dv.getUint8(offset + 1); + var b = dv.getUint8(offset + 2); + var a = dv.getUint8(offset + 3); + return { + r: r, + g: g, + b: b, + a: a + }; + } + if ("int8" == type && 1 == size) return dv.getUint8(offset); + cc.warn("dont know how to get value from buffer, type/size -> " + type + "/" + size + "."); + return; + }; + _proto._getFieldValue = function _getFieldValue(dv, desc, field_name) { + var field = desc[field_name]; + return this._getBufferValue(dv, field.offset, field.size, field.type); + }; + _proto._getLayoutValue = function _getLayoutValue(field_name) { + return this._getFieldValue(this._layoutInfo, this._layoutFields, field_name); + }; + _proto._setLayoutValue = function _setLayoutValue(field_name, value) { + return this._setFieldValue(this._layoutInfo, this._layoutFields, field_name, value); + }; + _proto._updateCfgFlag_Content = function _updateCfgFlag_Content() { + this._updateCfgFlag(UPDATE_CONTENT); + }; + _proto._updateCfgFlag_Font = function _updateCfgFlag_Font() { + this._updateCfgFlag(UPDATE_FONT); + }; + _proto._colorEqual = function _colorEqual(a, b) { + return a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a; + }; + _proto._colorToObj = function _colorToObj(r, g, b, a) { + return { + r: r, + g: g, + b: b, + a: a + }; + }; + _proto.setString = function setString(str) { + if (str != this._layout.string) { + this._layout.string = str; + this._updateCfgFlag_Content(); + } + }; + _proto.setFontPath = function setFontPath(path) { + if (path != this._layout.fontPath) { + this._layout.fontPath = path; + this._updateCfgFlag_Font(); + } + }; + _proto.setFontSize = function setFontSize(fontSize, fontSizeRetina) { + var oldfontsize = this._getFieldValue(this._cfg, this._cfgFields, "fontSize"); + if (oldfontsize != fontSize) { + this._setFieldValue(this._cfg, this._cfgFields, "fontSize", fontSize); + this._setFieldValue(this._cfg, this._cfgFields, "fontSizeRetina", fontSizeRetina); + this._updateCfgFlag_Font(); + } + }; + _proto.setOutline = function setOutline(outline) { + var oldOutline = this._getLayoutValue("outlineSize"); + oldOutline > 0 != outline > 0 && this._updateCfgFlag_Font(); + if (oldOutline != outline) { + this._updateCfgFlag_Content(); + this._setLayoutValue("outlineSize", outline); + } + }; + _proto.setOutlineColor = function setOutlineColor(color) { + var oldColor = this._getLayoutValue("outlineColor"); + if (!this._colorEqual(oldColor, color)) { + this._setLayoutValue("outlineColor", color); + this._updateCfgFlag_Content(); + } + }; + _proto.setLineHeight = function setLineHeight(lineHeight) { + var oldLineHeight = this._getLayoutValue("lineHeight"); + if (oldLineHeight != lineHeight) { + this._setLayoutValue("lineHeight", lineHeight); + this._updateCfgFlag_Content(); + } + }; + _proto.setOverFlow = function setOverFlow(overflow) { + var oldValue = this._getLayoutValue("overflow"); + if (oldValue != overflow) { + this._setLayoutValue("overflow", overflow); + this._updateCfgFlag_Content(); + } + }; + _proto.setEnableWrap = function setEnableWrap(value) { + var oldValue = this._getLayoutValue("wrap"); + if (oldValue != value) { + this._setLayoutValue("wrap", value); + this._updateCfgFlag_Content(); + } + }; + _proto.setVerticalAlign = function setVerticalAlign(value) { + var oldValue = this._getLayoutValue("valign"); + if (oldValue != value) { + this._setLayoutValue("valign", value); + this._updateCfgFlag_Content(); + } + }; + _proto.setHorizontalAlign = function setHorizontalAlign(value) { + var oldValue = this._getLayoutValue("halign"); + if (oldValue != value) { + this._setLayoutValue("halign", value); + this._updateCfgFlag_Content(); + } + }; + _proto.setContentSize = function setContentSize(width, height) { + var oldWidth = this._getLayoutValue("width"); + var oldHeight = this._getLayoutValue("height"); + if (oldWidth != width || oldHeight != height) { + this._setLayoutValue("height", height); + this._setLayoutValue("width", width); + this._updateCfgFlag_Content(); + } + }; + _proto.setAnchorPoint = function setAnchorPoint(x, y) { + var oldX = this._getLayoutValue("anchorX"); + var oldY = this._getLayoutValue("anchorY"); + if (oldX != x || oldY != y) { + this._setLayoutValue("anchorX", x); + this._setLayoutValue("anchorY", y); + this._updateCfgFlag_Content(); + } + }; + _proto.setColor = function setColor(color) { + var oldColor = this._getLayoutValue("color"); + if (!this._colorEqual(oldColor, color)) { + this._setLayoutValue("color", color); + this._updateCfgFlag_Content(); + } + }; + _proto.setShadow = function setShadow(x, y, blur) { + var oldBlur = this._getLayoutValue("shadowBlur"); + var oldX = this._getLayoutValue("shadowX"); + var oldY = this._getLayoutValue("shadowY"); + oldBlur > 0 != blur > 0 && this._updateCfgFlag_Font(); + var updateContent = false; + if (oldBlur != blur) { + this._setLayoutValue("shadowBlur", blur); + updateContent = true; + } + if (oldX != x) { + this._setLayoutValue("shadowX", x); + updateContent = true; + } + if (oldY != y) { + this._setLayoutValue("shadowY", y); + updateContent = true; + } + updateContent && this._updateCfgFlag_Content(); + }; + _proto.setShadowColor = function setShadowColor(color) { + var oldColor = this._getLayoutValue("shadowColor"); + if (!this._colorEqual(oldColor, color)) { + this._setLayoutValue("shadowColor", color); + this._updateCfgFlag_Content(); + } + }; + _proto.setItalic = function setItalic(enabled) { + var oldItalic = this._getLayoutValue("italic"); + if (oldItalic != enabled) { + this._setLayoutValue("italic", enabled); + this._updateCfgFlag_Content(); + } + }; + _proto.setBold = function setBold(bold) { + var oldBold = this._getLayoutValue("bold"); + if (oldBold != bold) { + this._setLayoutValue("bold", bold); + this._updateCfgFlag_Content(); + this._updateCfgFlag_Font(); + } + }; + _proto.setUnderline = function setUnderline(underline) { + var oldBold = this._getLayoutValue("underline"); + if (oldBold != underline) { + this._setLayoutValue("underline", underline); + this._updateCfgFlag_Content(); + } + }; + _proto.setSpacingX = function setSpacingX(x) { + var oldX = this._getLayoutValue("spaceX"); + if (oldX != x && "number" == typeof x && !isNaN(x)) { + this._setLayoutValue("spaceX", x); + this._updateCfgFlag_Content(); + } + }; + _proto.updateRenderData = function updateRenderData(comp) { + if (!comp._vertsDirty) return; + comp.font && comp.font.nativeUrl && this.setFontPath(cc.assetManager.cacheManager.getCache(comp.font.nativeUrl) || comp.font.nativeUrl); + var layout = this._layout; + var c = comp.node.color; + var node = comp.node; + var retinaSize = comp.fontSize; + this.setString(comp.string); + this.setFontSize(comp.fontSize, retinaSize / 72 * comp.fontSize); + this.setLineHeight(comp.lineHeight); + this.setEnableWrap(comp.enableWrapText); + this.setItalic(comp.enableItalic); + this.setUnderline(comp.enableUnderline); + this.setBold(comp.enableBold); + this.setOverFlow(comp.overflow); + this.setVerticalAlign(comp.verticalAlign); + this.setHorizontalAlign(comp.horizontalAlign); + this.setSpacingX(comp.spacingX); + this.setContentSize(node.getContentSize().width, node.getContentSize().height); + this.setAnchorPoint(node.anchorX, node.anchorY); + this.setColor(this._colorToObj(c.getR(), c.getG(), c.getB(), Math.ceil(c.getA() * node.opacity / 255))); + var shadow = node.getComponent(cc.LabelShadow); + if (shadow && shadow.enabled) { + var shadowColor = shadow.color; + this.setShadow(shadow.offset.x, shadow.offset.y, shadow.blur); + this.setShadowColor(this._colorToObj(shadowColor.getR(), shadowColor.getG(), shadowColor.getB(), Math.ceil(shadowColor.getA() * node.opacity / 255))); + } else this.setShadow(0, 0, -1); + this._updateTTFMaterial(comp); + layout.render(); + }; + _proto._bindMaterial = function _bindMaterial(comp) { + var material = this.labelMaterial; + if (!material) { + material = _materialVariant["default"].createWithBuiltin("2d-label", comp); + this.labelMaterial = material; + } + return material; + }; + _proto._updateTTFMaterial = function _updateTTFMaterial(comp) { + var material = this._bindMaterial(comp); + var node = this._label.node; + var layout = this._layout; + var outline = node.getComponent(cc.LabelOutline); + var outlineSize = 0; + if (outline && outline.enabled && outline.width > 0) { + outlineSize = Math.max(Math.min(outline.width / 10, .4), .1); + var c = outline.color; + this.setOutlineColor(this._colorToObj(c.getR(), c.getG(), c.getB(), Math.ceil(c.getA() * node.opacity / 255))); + } + this.setOutline(outlineSize); + material.define("CC_USE_MODEL", true); + material.define("USE_TEXTURE_ALPHAONLY", true); + material.define("USE_SDF", outlineSize > 0 || comp.enableBold); + material.define("USE_SDF_EXTEND", comp.enableBold ? 1 : 0); + void 0 !== material.getDefine("CC_SUPPORT_standard_derivatives") && cc.sys.glExtension("OES_standard_derivatives") && material.define("CC_SUPPORT_standard_derivatives", true); + layout.setEffect(material.effect._nativeObj); + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + this._layout.render(); + }; + _proto.getVfmt = function getVfmt() { }; + return NativeTTF; + })(); + exports["default"] = NativeTTF; + module.exports = exports["default"]; + }), { + "../../../../../assets/material/CCMaterial": 124, + "../../../../../assets/material/material-variant": 131, + "../../../../../components/CCLabel": 151, + "../../../../../components/CCLabelOutline": 152, + "../../../../../components/CCLabelShadow": 153 + }], + 287: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _ttf = _interopRequireDefault(require("../../../../utils/label/ttf")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var LabelShadow = require("../../../../../components/CCLabelShadow"); + var WHITE = cc.color(255, 255, 255, 255); + var WebglTTFAssembler = (function (_TTFAssembler) { + _inheritsLoose(WebglTTFAssembler, _TTFAssembler); + function WebglTTFAssembler() { + return _TTFAssembler.apply(this, arguments) || this; + } + var _proto = WebglTTFAssembler.prototype; + _proto.updateUVs = function updateUVs(comp) { + var verts = this._renderData.vDatas[0]; + var uv = comp._frame.uv; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + for (var i = 0; i < 4; i++) { + var srcOffset = 2 * i; + var dstOffset = floatsPerVert * i + uvOffset; + verts[dstOffset] = uv[srcOffset]; + verts[dstOffset + 1] = uv[srcOffset + 1]; + } + }; + _proto.updateColor = function updateColor(comp) { + WHITE._fastSetA(comp.node._color.a); + var color = WHITE._val; + _TTFAssembler.prototype.updateColor.call(this, comp, color); + }; + _proto.updateVerts = function updateVerts(comp) { + var node = comp.node, canvasWidth = comp._ttfTexture.width, canvasHeight = comp._ttfTexture.height, appx = node.anchorX * node.width, appy = node.anchorY * node.height; + var shadow = LabelShadow && comp.getComponent(LabelShadow); + if (shadow && shadow._enabled) { + var offsetX = (canvasWidth - node.width) / 2; + var offsetY = (canvasHeight - node.height) / 2; + var shadowOffset = shadow.offset; + -shadowOffset.x > offsetX ? appx += canvasWidth - node.width : offsetX > shadowOffset.x && (appx += offsetX - shadowOffset.x); + -shadowOffset.y > offsetY ? appy += canvasHeight - node.height : offsetY > shadowOffset.y && (appy += offsetY - shadowOffset.y); + } + var local = this._local; + local[0] = -appx; + local[1] = -appy; + local[2] = canvasWidth - appx; + local[3] = canvasHeight - appy; + this.updateUVs(comp); + this.updateWorldVerts(comp); + }; + return WebglTTFAssembler; + })(_ttf["default"]); + exports["default"] = WebglTTFAssembler; + module.exports = exports["default"]; + }), { + "../../../../../components/CCLabelShadow": 153, + "../../../../utils/label/ttf": 278 + }], + 288: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var WebglBmfontAssembler = require("../2d/bmfont"); + var vec3_temp_local = new _vec["default"](); + var vec3_temp_world = new _vec["default"](); + var WebglBmfontAssembler3D = (function (_WebglBmfontAssembler) { + _inheritsLoose(WebglBmfontAssembler3D, _WebglBmfontAssembler); + function WebglBmfontAssembler3D() { + return _WebglBmfontAssembler.apply(this, arguments) || this; + } + return WebglBmfontAssembler3D; + })(WebglBmfontAssembler); + exports["default"] = WebglBmfontAssembler3D; + cc.js.mixin(WebglBmfontAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(comp) { + var matrix = comp.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var offset = 0; offset < world.length; offset += floatsPerVert) { + _vec["default"].set(vec3_temp_local, local[offset], local[offset + 1], 0); + _vec["default"].transformMat4(vec3_temp_world, vec3_temp_local, matrix); + world[offset] = vec3_temp_world.x; + world[offset + 1] = vec3_temp_world.y; + world[offset + 2] = vec3_temp_world.z; + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/bmfont": 284 + }], + 289: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var WebglLetterFontAssembler = require("../2d/letter"); + var vec3_temp_local = new _vec["default"](); + var vec3_temp_world = new _vec["default"](); + var WebglLetterFontAssembler3D = (function (_WebglLetterFontAssem) { + _inheritsLoose(WebglLetterFontAssembler3D, _WebglLetterFontAssem); + function WebglLetterFontAssembler3D() { + return _WebglLetterFontAssem.apply(this, arguments) || this; + } + return WebglLetterFontAssembler3D; + })(WebglLetterFontAssembler); + exports["default"] = WebglLetterFontAssembler3D; + cc.js.mixin(WebglLetterFontAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(comp) { + var matrix = comp.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var offset = 0; offset < world.length; offset += floatsPerVert) { + _vec["default"].set(vec3_temp_local, local[offset], local[offset + 1], 0); + _vec["default"].transformMat4(vec3_temp_world, vec3_temp_local, matrix); + world[offset] = vec3_temp_world.x; + world[offset + 1] = vec3_temp_world.y; + world[offset + 2] = vec3_temp_world.z; + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/letter": 285 + }], + 290: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var WebglTTFAssembler = require("../2d/ttf"); + var WebglTTFAssembler3D = (function (_WebglTTFAssembler) { + _inheritsLoose(WebglTTFAssembler3D, _WebglTTFAssembler); + function WebglTTFAssembler3D() { + return _WebglTTFAssembler.apply(this, arguments) || this; + } + return WebglTTFAssembler3D; + })(WebglTTFAssembler); + exports["default"] = WebglTTFAssembler3D; + cc.js.mixin(WebglTTFAssembler3D.prototype, Assembler3D); + module.exports = exports["default"]; + }), { + "../../../../assembler-3d": 266, + "../2d/ttf": 287 + }], + 291: [(function (require, module, exports) { + "use strict"; + var _assembler = _interopRequireDefault(require("../../../assembler")); + var _CCLabel = _interopRequireDefault(require("../../../../components/CCLabel")); + var _ttf = _interopRequireDefault(require("./2d/ttf")); + var _bmfont = _interopRequireDefault(require("./2d/bmfont")); + var _letter = _interopRequireDefault(require("./2d/letter")); + var _ttf2 = _interopRequireDefault(require("./3d/ttf")); + var _bmfont2 = _interopRequireDefault(require("./3d/bmfont")); + var _letter2 = _interopRequireDefault(require("./3d/letter")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var NativeTTF = void 0; + false; + _CCLabel["default"]._canvasPool = { + pool: [], + get: function get() { + var data = this.pool.pop(); + if (!data) { + var canvas = document.createElement("canvas"); + var context = canvas.getContext("2d"); + data = { + canvas: canvas, + context: context + }; + context.textBaseline = "alphabetic"; + } + return data; + }, + put: function put(canvas) { + if (this.pool.length >= 32) return; + this.pool.push(canvas); + } + }; + _assembler["default"].register(cc.Label, { + getConstructor: function getConstructor(label) { + var is3DNode = label.node.is3DNode; + var ctor = is3DNode ? _ttf2["default"] : _ttf["default"]; + if (label.font instanceof cc.BitmapFont) ctor = is3DNode ? _bmfont2["default"] : _bmfont["default"]; else if (label.cacheMode === _CCLabel["default"].CacheMode.CHAR) { + false; + cc.sys.platform === cc.sys.WECHAT_GAME_SUB ? cc.warn("sorry, subdomain does not support CHAR mode currently!") : ctor = is3DNode ? _letter2["default"] : _letter["default"]; + } + return ctor; + }, + TTF: _ttf["default"], + Bmfont: _bmfont["default"], + Letter: _letter["default"], + TTF3D: _ttf2["default"], + Bmfont3D: _bmfont2["default"], + Letter3D: _letter2["default"], + NativeTTF: NativeTTF + }); + }), { + "../../../../components/CCLabel": 151, + "../../../assembler": 268, + "./2d/bmfont": 284, + "./2d/letter": 285, + "./2d/nativeTTF": 286, + "./2d/ttf": 287, + "./3d/bmfont": 288, + "./3d/letter": 289, + "./3d/ttf": 290 + }], + 292: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.MaskAssembler = void 0; + var _assembler = _interopRequireDefault(require("../../assembler")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Mask = require("../../../components/CCMask"); + var RenderFlow = require("../../render-flow"); + var SimpleSpriteAssembler = require("./sprite/2d/simple"); + var GraphicsAssembler = require("./graphics"); + var gfx = require("../../../../renderer/gfx"); + var vfmtPos = require("../vertex-format").vfmtPos; + var _maxLevel = 8; + var _maskStack = []; + function getWriteMask() { + return 1 << _maskStack.length - 1; + } + function getStencilRef() { + var result = 0; + for (var i = 0; i < _maskStack.length; ++i) result += 1 << i; + return result; + } + function applyStencil(material, func, failOp, ref, stencilMask, writeMask) { + var effect = material.effect; + var zFailOp = gfx.STENCIL_OP_KEEP, zPassOp = gfx.STENCIL_OP_KEEP; + effect.setStencil(gfx.STENCIL_ENABLE, func, ref, stencilMask, failOp, zFailOp, zPassOp, writeMask); + } + function pushMask(mask) { + _maskStack.length + 1 > _maxLevel && cc.errorID(9e3, _maxLevel); + _maskStack.push(mask); + } + function exitMask(mask, renderer) { + 0 === _maskStack.length && cc.errorID(9001); + _maskStack.pop(); + 0 === _maskStack.length ? renderer._flushMaterial(mask._exitMaterial) : enableMask(renderer); + } + function applyClearMask(mask, renderer) { + var func = gfx.DS_FUNC_NEVER; + var ref = getWriteMask(); + var stencilMask = ref; + var writeMask = ref; + var failOp = mask.inverted ? gfx.STENCIL_OP_REPLACE : gfx.STENCIL_OP_ZERO; + applyStencil(mask._clearMaterial, func, failOp, ref, stencilMask, writeMask); + var buffer = renderer.getBuffer("mesh", vfmtPos); + var offsetInfo = buffer.request(4, 6); + var indiceOffset = offsetInfo.indiceOffset, vertexOffset = offsetInfo.byteOffset >> 2, vertexId = offsetInfo.vertexOffset, vbuf = buffer._vData, ibuf = buffer._iData; + vbuf[vertexOffset++] = -1; + vbuf[vertexOffset++] = -1; + vbuf[vertexOffset++] = -1; + vbuf[vertexOffset++] = 1; + vbuf[vertexOffset++] = 1; + vbuf[vertexOffset++] = 1; + vbuf[vertexOffset++] = 1; + vbuf[vertexOffset++] = -1; + ibuf[indiceOffset++] = vertexId; + ibuf[indiceOffset++] = vertexId + 3; + ibuf[indiceOffset++] = vertexId + 1; + ibuf[indiceOffset++] = vertexId + 1; + ibuf[indiceOffset++] = vertexId + 3; + ibuf[indiceOffset++] = vertexId + 2; + renderer.node = renderer._dummyNode; + renderer.material = mask._clearMaterial; + renderer._flush(); + } + function applyAreaMask(mask, renderer) { + var func = gfx.DS_FUNC_NEVER; + var ref = getWriteMask(); + var stencilMask = ref; + var writeMask = ref; + var failOp = mask.inverted ? gfx.STENCIL_OP_ZERO : gfx.STENCIL_OP_REPLACE; + applyStencil(mask._materials[0], func, failOp, ref, stencilMask, writeMask); + renderer.material = mask._materials[0]; + if (mask._type === Mask.Type.IMAGE_STENCIL) { + renderer.node = renderer._dummyNode; + SimpleSpriteAssembler.prototype.fillBuffers.call(mask._assembler, mask, renderer); + renderer._flush(); + } else { + renderer.node = mask.node; + GraphicsAssembler.prototype.fillBuffers.call(mask._graphics._assembler, mask._graphics, renderer); + } + } + function enableMask(renderer) { + var func = gfx.DS_FUNC_EQUAL; + var failOp = gfx.STENCIL_OP_KEEP; + var ref = getStencilRef(); + var stencilMask = ref; + var writeMask = getWriteMask(); + var mask = _maskStack[_maskStack.length - 1]; + applyStencil(mask._enableMaterial, func, failOp, ref, stencilMask, writeMask); + renderer._flushMaterial(mask._enableMaterial); + } + var MaskAssembler = (function (_SimpleSpriteAssemble) { + _inheritsLoose(MaskAssembler, _SimpleSpriteAssemble); + function MaskAssembler() { + return _SimpleSpriteAssemble.apply(this, arguments) || this; + } + var _proto = MaskAssembler.prototype; + _proto.updateRenderData = function updateRenderData(mask) { + if (mask._type === Mask.Type.IMAGE_STENCIL) mask.spriteFrame ? SimpleSpriteAssembler.prototype.updateRenderData.call(this, mask) : mask.setMaterial(0, null); else { + mask._graphics.setMaterial(0, mask._materials[0]); + GraphicsAssembler.prototype.updateRenderData.call(mask._graphics._assembler, mask._graphics, mask._graphics); + } + }; + _proto.fillBuffers = function fillBuffers(mask, renderer) { + if (mask._type !== Mask.Type.IMAGE_STENCIL || mask.spriteFrame) { + pushMask(mask); + applyClearMask(mask, renderer); + applyAreaMask(mask, renderer); + enableMask(renderer); + } + mask.node._renderFlag |= RenderFlow.FLAG_UPDATE_RENDER_DATA; + }; + _proto.postFillBuffers = function postFillBuffers(mask, renderer) { + (mask._type !== Mask.Type.IMAGE_STENCIL || mask.spriteFrame) && exitMask(mask, renderer); + mask.node._renderFlag |= RenderFlow.FLAG_UPDATE_RENDER_DATA; + }; + return MaskAssembler; + })(SimpleSpriteAssembler); + exports.MaskAssembler = MaskAssembler; + _assembler["default"].register(Mask, MaskAssembler); + }), { + "../../../../renderer/gfx": 372, + "../../../components/CCMask": 155, + "../../assembler": 268, + "../../render-flow": 272, + "../vertex-format": 313, + "./graphics": 282, + "./sprite/2d/simple": 297 + }], + 293: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var MotionStreak = require("../../../components/CCMotionStreak"); + var RenderFlow = require("../../render-flow"); + function Point(point, dir) { + this.point = point || cc.v2(); + this.dir = dir || cc.v2(); + this.distance = 0; + this.time = 0; + } + Point.prototype.setPoint = function (x, y) { + this.point.x = x; + this.point.y = y; + }; + Point.prototype.setDir = function (x, y) { + this.dir.x = x; + this.dir.y = y; + }; + var _tangent = cc.v2(); + var _miter = cc.v2(); + var _normal = cc.v2(); + var _vec2 = cc.v2(); + function normal(out, dir) { + out.x = -dir.y; + out.y = dir.x; + return out; + } + function computeMiter(miter, lineA, lineB, halfThick, maxMultiple) { + lineA.add(lineB, _tangent); + _tangent.normalizeSelf(); + miter.x = -_tangent.y; + miter.y = _tangent.x; + _vec2.x = -lineA.y; + _vec2.y = lineA.x; + var multiple = 1 / miter.dot(_vec2); + maxMultiple && (multiple = Math.min(multiple, maxMultiple)); + return halfThick * multiple; + } + var MotionStreakAssembler = (function (_Assembler2D) { + _inheritsLoose(MotionStreakAssembler, _Assembler2D); + function MotionStreakAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = MotionStreakAssembler.prototype; + _proto.initData = function initData() { + this._renderData.createFlexData(0, 16, 42); + }; + _proto.update = function update(comp, dt) { + false; + var stroke = comp._stroke / 2; + var node = comp.node; + var matrix = node._worldMatrix.m; + var tx = matrix[12], ty = matrix[13]; + var points = comp._points; + var cur; + if (points.length > 1) { + var difx = points[0].point.x - tx; + var dify = points[0].point.y - ty; + difx * difx + dify * dify < comp.minSeg && (cur = points[0]); + } + if (!cur) { + cur = new Point(); + points.splice(0, 0, cur); + } + cur.setPoint(tx, ty); + cur.time = comp._fadeTime + dt; + var verticesCount = 0; + var indicesCount = 0; + if (points.length < 2) return; + var color = comp._color, cr = color.r, cg = color.g, cb = color.b, ca = color.a; + var prev = points[1]; + prev.distance = cur.point.sub(prev.point, _vec2).mag(); + _vec2.normalizeSelf(); + prev.setDir(_vec2.x, _vec2.y); + cur.setDir(_vec2.x, _vec2.y); + var flexBuffer = this._renderData._flexBuffer; + flexBuffer.reserve(2 * points.length, 6 * (points.length - 1)); + var vData = flexBuffer.vData; + var uintVData = flexBuffer.uintVData; + var vertsOffset = 5; + var fadeTime = comp._fadeTime; + var findLast = false; + for (var i = points.length - 1; i >= 0; i--) { + var p = points[i]; + var point = p.point; + var dir = p.dir; + p.time -= dt; + if (p.time < 0) { + points.splice(i, 1); + continue; + } + var progress = p.time / fadeTime; + var next = points[i - 1]; + if (!findLast) { + if (!next) { + points.splice(i, 1); + continue; + } + point.x = next.point.x - dir.x * progress; + point.y = next.point.y - dir.y * progress; + } + findLast = true; + normal(_normal, dir); + var da = progress * ca; + var c = (da << 24 >>> 0) + (cb << 16) + (cg << 8) + cr; + var offset = verticesCount * vertsOffset; + vData[offset] = point.x + _normal.x * stroke; + vData[offset + 1] = point.y + _normal.y * stroke; + vData[offset + 2] = 1; + vData[offset + 3] = progress; + uintVData[offset + 4] = c; + offset += vertsOffset; + vData[offset] = point.x - _normal.x * stroke; + vData[offset + 1] = point.y - _normal.y * stroke; + vData[offset + 2] = 0; + vData[offset + 3] = progress; + uintVData[offset + 4] = c; + verticesCount += 2; + } + indicesCount = verticesCount <= 2 ? 0 : 3 * (verticesCount - 2); + flexBuffer.used(verticesCount, indicesCount); + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + var _this$_renderData$_fl = this._renderData._flexBuffer, vData = _this$_renderData$_fl.vData, usedVertices = _this$_renderData$_fl.usedVertices, usedIndices = _this$_renderData$_fl.usedIndices, usedVerticesFloats = _this$_renderData$_fl.usedVerticesFloats; + var buffer = renderer._meshBuffer; + var offsetInfo = buffer.request(usedVertices, usedIndices); + var vertexOffset = offsetInfo.byteOffset >> 2, vbuf = buffer._vData; + vData.length + vertexOffset > vbuf.length ? vbuf.set(vData.subarray(0, usedVerticesFloats), vertexOffset) : vbuf.set(vData, vertexOffset); + var ibuf = buffer._iData, indiceOffset = offsetInfo.indiceOffset, vertexId = offsetInfo.vertexOffset; + for (var i = 0, l = usedVertices; i < l; i += 2) { + var start = vertexId + i; + ibuf[indiceOffset++] = start; + ibuf[indiceOffset++] = start + 2; + ibuf[indiceOffset++] = start + 1; + ibuf[indiceOffset++] = start + 1; + ibuf[indiceOffset++] = start + 2; + ibuf[indiceOffset++] = start + 3; + } + comp.node._renderFlag |= RenderFlow.FLAG_UPDATE_RENDER_DATA; + }; + return MotionStreakAssembler; + })(_assembler2d["default"]); + exports["default"] = MotionStreakAssembler; + MotionStreakAssembler.register(MotionStreak, MotionStreakAssembler); + module.exports = exports["default"]; + }), { + "../../../components/CCMotionStreak": 156, + "../../assembler-2d": 265, + "../../render-flow": 272 + }], + 294: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Sprite = require("../../../../../components/CCSprite"); + var FillType = Sprite.FillType; + var BarFilledAssembler = (function (_Assembler2D) { + _inheritsLoose(BarFilledAssembler, _Assembler2D); + function BarFilledAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = BarFilledAssembler.prototype; + _proto.updateRenderData = function updateRenderData(sprite) { + var frame = sprite._spriteFrame; + this.packToDynamicAtlas(sprite, frame); + if (!sprite._vertsDirty) return; + var fillStart = sprite._fillStart; + var fillRange = sprite._fillRange; + if (fillRange < 0) { + fillStart += fillRange; + fillRange = -fillRange; + } + fillRange = fillStart + fillRange; + fillStart = fillStart > 1 ? 1 : fillStart; + fillStart = fillStart < 0 ? 0 : fillStart; + fillRange = fillRange > 1 ? 1 : fillRange; + fillRange = fillRange < 0 ? 0 : fillRange; + fillRange -= fillStart; + fillRange = fillRange < 0 ? 0 : fillRange; + var fillEnd = fillStart + fillRange; + fillEnd = fillEnd > 1 ? 1 : fillEnd; + this.updateUVs(sprite, fillStart, fillEnd); + this.updateVerts(sprite, fillStart, fillEnd); + sprite._vertsDirty = false; + }; + _proto.updateUVs = function updateUVs(sprite, fillStart, fillEnd) { + var spriteFrame = sprite._spriteFrame; + var atlasWidth = spriteFrame._texture.width; + var atlasHeight = spriteFrame._texture.height; + var textureRect = spriteFrame._rect; + var ul, vb, ur, vt; + var quadUV0, quadUV1, quadUV2, quadUV3, quadUV4, quadUV5, quadUV6, quadUV7; + if (spriteFrame._rotated) { + ul = textureRect.x / atlasWidth; + vb = (textureRect.y + textureRect.width) / atlasHeight; + ur = (textureRect.x + textureRect.height) / atlasWidth; + vt = textureRect.y / atlasHeight; + quadUV0 = quadUV2 = ul; + quadUV4 = quadUV6 = ur; + quadUV3 = quadUV7 = vb; + quadUV1 = quadUV5 = vt; + } else { + ul = textureRect.x / atlasWidth; + vb = (textureRect.y + textureRect.height) / atlasHeight; + ur = (textureRect.x + textureRect.width) / atlasWidth; + vt = textureRect.y / atlasHeight; + quadUV0 = quadUV4 = ul; + quadUV2 = quadUV6 = ur; + quadUV1 = quadUV3 = vb; + quadUV5 = quadUV7 = vt; + } + var verts = this._renderData.vDatas[0]; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + switch (sprite._fillType) { + case FillType.HORIZONTAL: + verts[uvOffset] = quadUV0 + (quadUV2 - quadUV0) * fillStart; + verts[uvOffset + 1] = quadUV1 + (quadUV3 - quadUV1) * fillStart; + verts[uvOffset + floatsPerVert] = quadUV0 + (quadUV2 - quadUV0) * fillEnd; + verts[uvOffset + floatsPerVert + 1] = quadUV1 + (quadUV3 - quadUV1) * fillEnd; + verts[uvOffset + 2 * floatsPerVert] = quadUV4 + (quadUV6 - quadUV4) * fillStart; + verts[uvOffset + 2 * floatsPerVert + 1] = quadUV5 + (quadUV7 - quadUV5) * fillStart; + verts[uvOffset + 3 * floatsPerVert] = quadUV4 + (quadUV6 - quadUV4) * fillEnd; + verts[uvOffset + 3 * floatsPerVert + 1] = quadUV5 + (quadUV7 - quadUV5) * fillEnd; + break; + + case FillType.VERTICAL: + verts[uvOffset] = quadUV0 + (quadUV4 - quadUV0) * fillStart; + verts[uvOffset + 1] = quadUV1 + (quadUV5 - quadUV1) * fillStart; + verts[uvOffset + floatsPerVert] = quadUV2 + (quadUV6 - quadUV2) * fillStart; + verts[uvOffset + floatsPerVert + 1] = quadUV3 + (quadUV7 - quadUV3) * fillStart; + verts[uvOffset + 2 * floatsPerVert] = quadUV0 + (quadUV4 - quadUV0) * fillEnd; + verts[uvOffset + 2 * floatsPerVert + 1] = quadUV1 + (quadUV5 - quadUV1) * fillEnd; + verts[uvOffset + 3 * floatsPerVert] = quadUV2 + (quadUV6 - quadUV2) * fillEnd; + verts[uvOffset + 3 * floatsPerVert + 1] = quadUV3 + (quadUV7 - quadUV3) * fillEnd; + break; + + default: + cc.errorID(2626); + } + }; + _proto.updateVerts = function updateVerts(sprite, fillStart, fillEnd) { + var node = sprite.node, width = node.width, height = node.height, appx = node.anchorX * width, appy = node.anchorY * height; + var l = -appx, b = -appy, r = width - appx, t = height - appy; + var progressStart, progressEnd; + switch (sprite._fillType) { + case FillType.HORIZONTAL: + progressStart = l + (r - l) * fillStart; + progressEnd = l + (r - l) * fillEnd; + l = progressStart; + r = progressEnd; + break; + + case FillType.VERTICAL: + progressStart = b + (t - b) * fillStart; + progressEnd = b + (t - b) * fillEnd; + b = progressStart; + t = progressEnd; + break; + + default: + cc.errorID(2626); + } + var local = this._local; + local[0] = l; + local[1] = b; + local[2] = r; + local[3] = t; + this.updateWorldVerts(sprite); + }; + return BarFilledAssembler; + })(_assembler2d["default"]); + exports["default"] = BarFilledAssembler; + module.exports = exports["default"]; + }), { + "../../../../../components/CCSprite": 166, + "../../../../assembler-2d": 265 + }], + 295: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var MeshSpriteAssembler = (function (_Assembler2D) { + _inheritsLoose(MeshSpriteAssembler, _Assembler2D); + function MeshSpriteAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = MeshSpriteAssembler.prototype; + _proto.initData = function initData(sprite) { + this._renderData.createFlexData(0, 4, 6, this.getVfmt()); + }; + _proto.updateRenderData = function updateRenderData(sprite) { + this.packToDynamicAtlas(sprite, sprite._spriteFrame); + var frame = sprite.spriteFrame; + if (frame) { + var vertices = frame.vertices; + if (vertices) { + this.verticesCount = vertices.x.length; + this.indicesCount = vertices.triangles.length; + var renderData = this._renderData; + var flexBuffer = renderData._flexBuffer; + if (flexBuffer.reserve(this.verticesCount, this.indicesCount)) { + this.updateColor(sprite); + sprite._vertsDirty = true; + } + flexBuffer.used(this.verticesCount, this.indicesCount); + this.updateIndices(vertices.triangles); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + this.updateWorldVerts(sprite); + sprite._vertsDirty = false; + } + } + } + }; + _proto.updateIndices = function updateIndices(triangles) { + this._renderData.iDatas[0].set(triangles); + }; + _proto.updateUVs = function updateUVs(sprite) { + var vertices = sprite.spriteFrame.vertices, u = vertices.nu, v = vertices.nv; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + var verts = this._renderData.vDatas[0]; + for (var i = 0; i < u.length; i++) { + var dstOffset = floatsPerVert * i + uvOffset; + verts[dstOffset] = u[i]; + verts[dstOffset + 1] = v[i]; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var node = sprite.node, contentWidth = Math.abs(node.width), contentHeight = Math.abs(node.height), appx = node.anchorX * contentWidth, appy = node.anchorY * contentHeight; + var frame = sprite.spriteFrame, vertices = frame.vertices, x = vertices.x, y = vertices.y, originalWidth = frame._originalSize.width, originalHeight = frame._originalSize.height, rectWidth = frame._rect.width, rectHeight = frame._rect.height, offsetX = frame._offset.x, offsetY = frame._offset.y, trimX = offsetX + (originalWidth - rectWidth) / 2, trimY = offsetY + (originalHeight - rectHeight) / 2; + var scaleX = contentWidth / (sprite.trim ? rectWidth : originalWidth), scaleY = contentHeight / (sprite.trim ? rectHeight : originalHeight); + var local = this._local; + if (sprite.trim) for (var _i = 0, _l = x.length; _i < _l; _i++) { + var _offset = 2 * _i; + local[_offset] = (x[_i] - trimX) * scaleX - appx; + local[_offset + 1] = (originalHeight - y[_i] - trimY) * scaleY - appy; + } else for (var i = 0, l = x.length; i < l; i++) { + var offset = 2 * i; + local[offset] = x[i] * scaleX - appx; + local[offset + 1] = (originalHeight - y[i]) * scaleY - appy; + } + if (frame._flipX) for (var _i2 = 0, _l2 = this.verticesCount; _i2 < _l2; _i2++) local[2 * _i2] = contentWidth - local[2 * _i2] - 2 * appx; + if (frame._flipY) for (var _i3 = 0, _l3 = this.verticesCount; _i3 < _l3; _i3++) local[2 * _i3 + 1] = contentHeight - local[2 * _i3 + 1] - 2 * appy; + }; + _proto.updateWorldVerts = function updateWorldVerts(sprite) { + var node = sprite.node; + var matrix = node._worldMatrix; + var matrixm = matrix.m; + var a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var i = 0, l = this.verticesCount; i < l; i++) { + var lx = local[2 * i]; + var ly = local[2 * i + 1]; + world[floatsPerVert * i] = lx * a + ly * c + tx; + world[floatsPerVert * i + 1] = lx * b + ly * d + ty; + } + }; + return MeshSpriteAssembler; + })(_assembler2d["default"]); + exports["default"] = MeshSpriteAssembler; + module.exports = exports["default"]; + }), { + "../../../../assembler-2d": 265 + }], + 296: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var PI_2 = 2 * Math.PI; + var _vertPos = [cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0)]; + var _vertices = [0, 0, 0, 0]; + var _uvs = [0, 0, 0, 0, 0, 0, 0, 0]; + var _intersectPoint_1 = [cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0)]; + var _intersectPoint_2 = [cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0)]; + var _center = cc.v2(0, 0); + var _triangles = []; + function _calcInsectedPoints(left, right, bottom, top, center, angle, intersectPoints) { + var sinAngle = Math.sin(angle); + var cosAngle = Math.cos(angle); + var tanAngle, cotAngle; + if (0 !== Math.cos(angle)) { + tanAngle = sinAngle / cosAngle; + if ((left - center.x) * cosAngle > 0) { + var yleft = center.y + tanAngle * (left - center.x); + intersectPoints[0].x = left; + intersectPoints[0].y = yleft; + } + if ((right - center.x) * cosAngle > 0) { + var yright = center.y + tanAngle * (right - center.x); + intersectPoints[2].x = right; + intersectPoints[2].y = yright; + } + } + if (0 !== Math.sin(angle)) { + cotAngle = cosAngle / sinAngle; + if ((top - center.y) * sinAngle > 0) { + var xtop = center.x + cotAngle * (top - center.y); + intersectPoints[3].x = xtop; + intersectPoints[3].y = top; + } + if ((bottom - center.y) * sinAngle > 0) { + var xbottom = center.x + cotAngle * (bottom - center.y); + intersectPoints[1].x = xbottom; + intersectPoints[1].y = bottom; + } + } + } + function _calculateVertices(sprite) { + var node = sprite.node, width = node.width, height = node.height, appx = node.anchorX * width, appy = node.anchorY * height; + var l = -appx, b = -appy, r = width - appx, t = height - appy; + var vertices = _vertices; + vertices[0] = l; + vertices[1] = b; + vertices[2] = r; + vertices[3] = t; + var fillCenter = sprite._fillCenter, cx = _center.x = Math.min(Math.max(0, fillCenter.x), 1) * (r - l) + l, cy = _center.y = Math.min(Math.max(0, fillCenter.y), 1) * (t - b) + b; + _vertPos[0].x = _vertPos[3].x = l; + _vertPos[1].x = _vertPos[2].x = r; + _vertPos[0].y = _vertPos[1].y = b; + _vertPos[2].y = _vertPos[3].y = t; + _triangles.length = 0; + cx !== vertices[0] && (_triangles[0] = [3, 0]); + cx !== vertices[2] && (_triangles[2] = [1, 2]); + cy !== vertices[1] && (_triangles[1] = [0, 1]); + cy !== vertices[3] && (_triangles[3] = [2, 3]); + } + function _calculateUVs(spriteFrame) { + var atlasWidth = spriteFrame._texture.width; + var atlasHeight = spriteFrame._texture.height; + var textureRect = spriteFrame._rect; + var u0, u1, v0, v1; + var uvs = _uvs; + if (spriteFrame._rotated) { + u0 = textureRect.x / atlasWidth; + u1 = (textureRect.x + textureRect.height) / atlasWidth; + v0 = textureRect.y / atlasHeight; + v1 = (textureRect.y + textureRect.width) / atlasHeight; + uvs[0] = uvs[2] = u0; + uvs[4] = uvs[6] = u1; + uvs[3] = uvs[7] = v1; + uvs[1] = uvs[5] = v0; + } else { + u0 = textureRect.x / atlasWidth; + u1 = (textureRect.x + textureRect.width) / atlasWidth; + v0 = textureRect.y / atlasHeight; + v1 = (textureRect.y + textureRect.height) / atlasHeight; + uvs[0] = uvs[4] = u0; + uvs[2] = uvs[6] = u1; + uvs[1] = uvs[3] = v1; + uvs[5] = uvs[7] = v0; + } + } + function _getVertAngle(start, end) { + var placementX, placementY; + placementX = end.x - start.x; + placementY = end.y - start.y; + if (0 === placementX && 0 === placementY) return; + if (0 === placementX) return placementY > 0 ? .5 * Math.PI : 1.5 * Math.PI; + var angle = Math.atan(placementY / placementX); + placementX < 0 && (angle += Math.PI); + return angle; + } + var RadialFilledAssembler = (function (_Assembler2D) { + _inheritsLoose(RadialFilledAssembler, _Assembler2D); + function RadialFilledAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = RadialFilledAssembler.prototype; + _proto.initData = function initData(sprite) { + this._renderData.createFlexData(0, 4, 6, this.getVfmt()); + this.updateIndices(); + }; + _proto.updateRenderData = function updateRenderData(sprite) { + _Assembler2D.prototype.updateRenderData.call(this, sprite); + var frame = sprite.spriteFrame; + this.packToDynamicAtlas(sprite, frame); + if (sprite._vertsDirty) { + var fillStart = sprite._fillStart; + var fillRange = sprite._fillRange; + if (fillRange < 0) { + fillStart += fillRange; + fillRange = -fillRange; + } + while (fillStart >= 1) fillStart -= 1; + while (fillStart < 0) fillStart += 1; + fillStart *= PI_2; + fillRange *= PI_2; + _calculateVertices(sprite); + _calculateUVs(frame); + _calcInsectedPoints(_vertices[0], _vertices[2], _vertices[1], _vertices[3], _center, fillStart, _intersectPoint_1); + _calcInsectedPoints(_vertices[0], _vertices[2], _vertices[1], _vertices[3], _center, fillStart + fillRange, _intersectPoint_2); + this.updateVerts(sprite, fillStart, fillRange); + sprite._vertsDirty = false; + } + }; + _proto.updateVerts = function updateVerts(sprite, fillStart, fillRange) { + var fillEnd = fillStart + fillRange; + var local = this._local; + local.length = 0; + var offset = 0; + var floatsPerTriangle = 3 * this.floatsPerVert; + for (var triangleIndex = 0; triangleIndex < 4; ++triangleIndex) { + var triangle = _triangles[triangleIndex]; + if (!triangle) continue; + if (fillRange >= PI_2) { + local.length = offset + floatsPerTriangle; + this._generateTriangle(local, offset, _center, _vertPos[triangle[0]], _vertPos[triangle[1]]); + offset += floatsPerTriangle; + continue; + } + var startAngle = _getVertAngle(_center, _vertPos[triangle[0]]); + var endAngle = _getVertAngle(_center, _vertPos[triangle[1]]); + endAngle < startAngle && (endAngle += PI_2); + startAngle -= PI_2; + endAngle -= PI_2; + for (var testIndex = 0; testIndex < 3; ++testIndex) { + if (startAngle >= fillEnd); else if (startAngle >= fillStart) { + local.length = offset + floatsPerTriangle; + endAngle >= fillEnd ? this._generateTriangle(local, offset, _center, _vertPos[triangle[0]], _intersectPoint_2[triangleIndex]) : this._generateTriangle(local, offset, _center, _vertPos[triangle[0]], _vertPos[triangle[1]]); + offset += floatsPerTriangle; + } else if (endAngle <= fillStart); else if (endAngle <= fillEnd) { + local.length = offset + floatsPerTriangle; + this._generateTriangle(local, offset, _center, _intersectPoint_1[triangleIndex], _vertPos[triangle[1]]); + offset += floatsPerTriangle; + } else { + local.length = offset + floatsPerTriangle; + this._generateTriangle(local, offset, _center, _intersectPoint_1[triangleIndex], _intersectPoint_2[triangleIndex]); + offset += floatsPerTriangle; + } + startAngle += PI_2; + endAngle += PI_2; + } + } + this.allocWorldVerts(sprite); + this.updateWorldVerts(sprite); + }; + _proto.allocWorldVerts = function allocWorldVerts(sprite) { + var color = sprite.node._color._val; + var renderData = this._renderData; + var floatsPerVert = this.floatsPerVert; + var local = this._local; + var verticesCount = local.length / floatsPerVert; + this.verticesCount = this.indicesCount = verticesCount; + var flexBuffer = renderData._flexBuffer; + flexBuffer.reserve(verticesCount, verticesCount) && this.updateIndices(); + flexBuffer.used(this.verticesCount, this.indicesCount); + var verts = renderData.vDatas[0], uintVerts = renderData.uintVDatas[0]; + var uvOffset = this.uvOffset; + for (var offset = 0; offset < local.length; offset += floatsPerVert) { + var start = offset + uvOffset; + verts[start] = local[start]; + verts[start + 1] = local[start + 1]; + uintVerts[start + 2] = color; + } + }; + _proto.updateIndices = function updateIndices() { + var iData = this._renderData.iDatas[0]; + for (var i = 0; i < iData.length; i++) iData[i] = i; + }; + _proto.updateWorldVerts = function updateWorldVerts(sprite) { + var node = sprite.node; + var matrix = node._worldMatrix; + var matrixm = matrix.m, a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var offset = 0; offset < local.length; offset += floatsPerVert) { + var x = local[offset]; + var y = local[offset + 1]; + world[offset] = x * a + y * c + tx; + world[offset + 1] = x * b + y * d + ty; + } + }; + _proto._generateTriangle = function _generateTriangle(verts, offset, vert0, vert1, vert2) { + var vertices = _vertices; + var v0x = vertices[0]; + var v0y = vertices[1]; + var v1x = vertices[2]; + var v1y = vertices[3]; + var floatsPerVert = this.floatsPerVert; + verts[offset] = vert0.x; + verts[offset + 1] = vert0.y; + verts[offset + floatsPerVert] = vert1.x; + verts[offset + floatsPerVert + 1] = vert1.y; + verts[offset + 2 * floatsPerVert] = vert2.x; + verts[offset + 2 * floatsPerVert + 1] = vert2.y; + var uvOffset = this.uvOffset; + var progressX, progressY; + progressX = (vert0.x - v0x) / (v1x - v0x); + progressY = (vert0.y - v0y) / (v1y - v0y); + this._generateUV(progressX, progressY, verts, offset + uvOffset); + progressX = (vert1.x - v0x) / (v1x - v0x); + progressY = (vert1.y - v0y) / (v1y - v0y); + this._generateUV(progressX, progressY, verts, offset + floatsPerVert + uvOffset); + progressX = (vert2.x - v0x) / (v1x - v0x); + progressY = (vert2.y - v0y) / (v1y - v0y); + this._generateUV(progressX, progressY, verts, offset + 2 * floatsPerVert + uvOffset); + }; + _proto._generateUV = function _generateUV(progressX, progressY, verts, offset) { + var uvs = _uvs; + var px1 = uvs[0] + (uvs[2] - uvs[0]) * progressX; + var px2 = uvs[4] + (uvs[6] - uvs[4]) * progressX; + var py1 = uvs[1] + (uvs[3] - uvs[1]) * progressX; + var py2 = uvs[5] + (uvs[7] - uvs[5]) * progressX; + verts[offset] = px1 + (px2 - px1) * progressY; + verts[offset + 1] = py1 + (py2 - py1) * progressY; + }; + return RadialFilledAssembler; + })(_assembler2d["default"]); + exports["default"] = RadialFilledAssembler; + module.exports = exports["default"]; + }), { + "../../../../assembler-2d": 265 + }], + 297: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var SimpleSpriteAssembler = (function (_Assembler2D) { + _inheritsLoose(SimpleSpriteAssembler, _Assembler2D); + function SimpleSpriteAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = SimpleSpriteAssembler.prototype; + _proto.updateRenderData = function updateRenderData(sprite) { + this.packToDynamicAtlas(sprite, sprite._spriteFrame); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + sprite._vertsDirty = false; + } + }; + _proto.updateUVs = function updateUVs(sprite) { + var uv = sprite._spriteFrame.uv; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + var verts = this._renderData.vDatas[0]; + for (var i = 0; i < 4; i++) { + var srcOffset = 2 * i; + var dstOffset = floatsPerVert * i + uvOffset; + verts[dstOffset] = uv[srcOffset]; + verts[dstOffset + 1] = uv[srcOffset + 1]; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var node = sprite.node, cw = node.width, ch = node.height, appx = node.anchorX * cw, appy = node.anchorY * ch, l, b, r, t; + if (sprite.trim) { + l = -appx; + b = -appy; + r = cw - appx; + t = ch - appy; + } else { + var frame = sprite.spriteFrame, ow = frame._originalSize.width, oh = frame._originalSize.height, rw = frame._rect.width, rh = frame._rect.height, offset = frame._offset, scaleX = cw / ow, scaleY = ch / oh; + var trimLeft = offset.x + (ow - rw) / 2; + var trimRight = offset.x - (ow - rw) / 2; + var trimBottom = offset.y + (oh - rh) / 2; + var trimTop = offset.y - (oh - rh) / 2; + l = trimLeft * scaleX - appx; + b = trimBottom * scaleY - appy; + r = cw + trimRight * scaleX - appx; + t = ch + trimTop * scaleY - appy; + } + var local = this._local; + local[0] = l; + local[1] = b; + local[2] = r; + local[3] = t; + this.updateWorldVerts(sprite); + }; + return SimpleSpriteAssembler; + })(_assembler2d["default"]); + exports["default"] = SimpleSpriteAssembler; + module.exports = exports["default"]; + }), { + "../../../../assembler-2d": 265 + }], + 298: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var SlicedAssembler = (function (_Assembler2D) { + _inheritsLoose(SlicedAssembler, _Assembler2D); + function SlicedAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = SlicedAssembler.prototype; + _proto.initData = function initData(sprite) { + if (this._renderData.meshCount > 0) return; + this._renderData.createData(0, this.verticesFloats, this.indicesCount); + var indices = this._renderData.iDatas[0]; + var indexOffset = 0; + for (var r = 0; r < 3; ++r) for (var c = 0; c < 3; ++c) { + var start = 4 * r + c; + indices[indexOffset++] = start; + indices[indexOffset++] = start + 1; + indices[indexOffset++] = start + 4; + indices[indexOffset++] = start + 1; + indices[indexOffset++] = start + 5; + indices[indexOffset++] = start + 4; + } + }; + _proto.initLocal = function initLocal() { + this._local = []; + this._local.length = 8; + }; + _proto.updateRenderData = function updateRenderData(sprite) { + var frame = sprite._spriteFrame; + this.packToDynamicAtlas(sprite, frame); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + sprite._vertsDirty = false; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var node = sprite.node, width = node.width, height = node.height, appx = node.anchorX * width, appy = node.anchorY * height; + var frame = sprite.spriteFrame; + var leftWidth = frame.insetLeft; + var rightWidth = frame.insetRight; + var topHeight = frame.insetTop; + var bottomHeight = frame.insetBottom; + var sizableWidth = width - leftWidth - rightWidth; + var sizableHeight = height - topHeight - bottomHeight; + var xScale = width / (leftWidth + rightWidth); + var yScale = height / (topHeight + bottomHeight); + xScale = isNaN(xScale) || xScale > 1 ? 1 : xScale; + yScale = isNaN(yScale) || yScale > 1 ? 1 : yScale; + sizableWidth = sizableWidth < 0 ? 0 : sizableWidth; + sizableHeight = sizableHeight < 0 ? 0 : sizableHeight; + var local = this._local; + local[0] = -appx; + local[1] = -appy; + local[2] = leftWidth * xScale - appx; + local[3] = bottomHeight * yScale - appy; + local[4] = local[2] + sizableWidth; + local[5] = local[3] + sizableHeight; + local[6] = width - appx; + local[7] = height - appy; + this.updateWorldVerts(sprite); + }; + _proto.updateUVs = function updateUVs(sprite) { + var verts = this._renderData.vDatas[0]; + var uvSliced = sprite.spriteFrame.uvSliced; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + for (var row = 0; row < 4; ++row) for (var col = 0; col < 4; ++col) { + var vid = 4 * row + col; + var uv = uvSliced[vid]; + var voffset = vid * floatsPerVert; + verts[voffset + uvOffset] = uv.u; + verts[voffset + uvOffset + 1] = uv.v; + } + }; + _proto.updateWorldVerts = function updateWorldVerts(sprite) { + var matrix = sprite.node._worldMatrix; + var matrixm = matrix.m, a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var row = 0; row < 4; ++row) { + var localRowY = local[2 * row + 1]; + for (var col = 0; col < 4; ++col) { + var localColX = local[2 * col]; + var worldIndex = (4 * row + col) * floatsPerVert; + world[worldIndex] = localColX * a + localRowY * c + tx; + world[worldIndex + 1] = localColX * b + localRowY * d + ty; + } + } + }; + return SlicedAssembler; + })(_assembler2d["default"]); + exports["default"] = SlicedAssembler; + Object.assign(SlicedAssembler.prototype, { + verticesCount: 16, + indicesCount: 54 + }); + module.exports = exports["default"]; + }), { + "../../../../assembler-2d": 265 + }], + 299: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler2d = _interopRequireDefault(require("../../../../assembler-2d")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var TiledAssembler = (function (_Assembler2D) { + _inheritsLoose(TiledAssembler, _Assembler2D); + function TiledAssembler() { + return _Assembler2D.apply(this, arguments) || this; + } + var _proto = TiledAssembler.prototype; + _proto.initData = function initData(sprite) { + this.verticesCount = 0; + this.contentWidth = 0; + this.contentHeight = 0; + this.rectWidth = 0; + this.rectHeight = 0; + this.hRepeat = 0; + this.vRepeat = 0; + this.row = 0; + this.col = 0; + this._renderData.createFlexData(0, 4, 6, this.getVfmt()); + this._updateIndices(); + }; + _proto.initLocal = function initLocal() { + this._local = { + x: [], + y: [] + }; + }; + _proto._updateIndices = function _updateIndices() { + var iData = this._renderData.iDatas[0]; + for (var i = 0, vid = 0, l = iData.length; i < l; i += 6, vid += 4) { + iData[i] = vid; + iData[i + 1] = vid + 1; + iData[i + 2] = vid + 2; + iData[i + 3] = vid + 1; + iData[i + 4] = vid + 3; + iData[i + 5] = vid + 2; + } + }; + _proto.updateRenderData = function updateRenderData(sprite) { + var frame = sprite._spriteFrame; + this.packToDynamicAtlas(sprite, frame); + var node = sprite.node; + var contentWidth = this.contentWidth = Math.abs(node.width); + var contentHeight = this.contentHeight = Math.abs(node.height); + var rect = frame._rect; + var leftWidth = frame.insetLeft, rightWidth = frame.insetRight, centerWidth = rect.width - leftWidth - rightWidth, topHeight = frame.insetTop, bottomHeight = frame.insetBottom, centerHeight = rect.height - topHeight - bottomHeight; + this.sizableWidth = contentWidth - leftWidth - rightWidth; + this.sizableHeight = contentHeight - topHeight - bottomHeight; + this.sizableWidth = this.sizableWidth > 0 ? this.sizableWidth : 0; + this.sizableHeight = this.sizableHeight > 0 ? this.sizableHeight : 0; + var hRepeat = this.hRepeat = 0 === centerWidth ? this.sizableWidth : this.sizableWidth / centerWidth; + var vRepeat = this.vRepeat = 0 === centerHeight ? this.sizableHeight : this.sizableHeight / centerHeight; + var row = this.row = Math.ceil(vRepeat + 2); + var col = this.col = Math.ceil(hRepeat + 2); + var count = row * col; + this.verticesCount = 4 * count; + this.indicesCount = 6 * count; + var renderData = this._renderData; + var flexBuffer = renderData._flexBuffer; + if (flexBuffer.reserve(this.verticesCount, this.indicesCount)) { + this._updateIndices(); + this.updateColor(sprite); + } + flexBuffer.used(this.verticesCount, this.indicesCount); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + sprite._vertsDirty = false; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var frame = sprite._spriteFrame; + var rect = frame._rect; + var node = sprite.node, appx = node.anchorX * node.width, appy = node.anchorY * node.height; + var row = this.row, col = this.col, contentWidth = this.contentWidth, contentHeight = this.contentHeight; + var _this$_local = this._local, x = _this$_local.x, y = _this$_local.y; + x.length = y.length = 0; + var leftWidth = frame.insetLeft, rightWidth = frame.insetRight, centerWidth = rect.width - leftWidth - rightWidth, topHeight = frame.insetTop, bottomHeight = frame.insetBottom, centerHeight = rect.height - topHeight - bottomHeight; + var xScale = node.width / (leftWidth + rightWidth) > 1 ? 1 : node.width / (leftWidth + rightWidth); + var yScale = node.height / (topHeight + bottomHeight) > 1 ? 1 : node.height / (topHeight + bottomHeight); + var offsetWidth = 0, offsetHeight = 0; + offsetWidth = centerWidth > 0 ? Math.floor(1e3 * this.sizableWidth) / 1e3 % centerWidth === 0 ? centerWidth : this.sizableWidth % centerWidth : this.sizableWidth; + offsetHeight = centerHeight > 0 ? Math.floor(1e3 * this.sizableHeight) / 1e3 % centerHeight === 0 ? centerHeight : this.sizableHeight % centerHeight : this.sizableHeight; + for (var i = 0; i <= col; i++) 0 === i ? x[i] = -appx : i > 0 && i < col ? x[i] = 1 === i ? leftWidth * xScale + Math.min(centerWidth, this.sizableWidth) - appx : centerWidth > 0 ? i === col - 1 ? leftWidth + offsetWidth + centerWidth * (i - 2) - appx : leftWidth + Math.min(centerWidth, this.sizableWidth) + centerWidth * (i - 2) - appx : leftWidth + this.sizableWidth - appx : i === col && (x[i] = Math.min(leftWidth + this.sizableWidth + rightWidth, contentWidth) - appx); + for (var _i = 0; _i <= row; _i++) 0 === _i ? y[_i] = -appy : _i > 0 && _i < row ? y[_i] = 1 === _i ? bottomHeight * yScale + Math.min(centerHeight, this.sizableHeight) - appy : centerHeight > 0 ? _i === row - 1 ? bottomHeight + offsetHeight + (_i - 2) * centerHeight - appy : bottomHeight + Math.min(centerHeight, this.sizableHeight) + (_i - 2) * centerHeight - appy : bottomHeight + this.sizableHeight - appy : _i === row && (y[_i] = Math.min(bottomHeight + this.sizableHeight + topHeight, contentHeight) - appy); + this.updateWorldVerts(sprite); + }; + _proto.updateWorldVerts = function updateWorldVerts(sprite) { + var renderData = this._renderData; + var local = this._local; + var localX = local.x, localY = local.y; + var world = renderData.vDatas[0]; + var row = this.row, col = this.col; + var matrix = sprite.node._worldMatrix; + var matrixm = matrix.m; + var a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5], tx = matrixm[12], ty = matrixm[13]; + var x, x1, y, y1; + var floatsPerVert = this.floatsPerVert; + var vertexOffset = 0; + for (var yindex = 0, ylength = row; yindex < ylength; ++yindex) { + y = localY[yindex]; + y1 = localY[yindex + 1]; + for (var xindex = 0, xlength = col; xindex < xlength; ++xindex) { + x = localX[xindex]; + x1 = localX[xindex + 1]; + world[vertexOffset] = x * a + y * c + tx; + world[vertexOffset + 1] = x * b + y * d + ty; + vertexOffset += floatsPerVert; + world[vertexOffset] = x1 * a + y * c + tx; + world[vertexOffset + 1] = x1 * b + y * d + ty; + vertexOffset += floatsPerVert; + world[vertexOffset] = x * a + y1 * c + tx; + world[vertexOffset + 1] = x * b + y1 * d + ty; + vertexOffset += floatsPerVert; + world[vertexOffset] = x1 * a + y1 * c + tx; + world[vertexOffset + 1] = x1 * b + y1 * d + ty; + vertexOffset += floatsPerVert; + } + } + }; + _proto.updateUVs = function updateUVs(sprite) { + var verts = this._renderData.vDatas[0]; + if (!verts) return; + var frame = sprite._spriteFrame; + var rect = frame._rect; + var leftWidth = frame.insetLeft, rightWidth = frame.insetRight, centerWidth = rect.width - leftWidth - rightWidth, topHeight = frame.insetTop, bottomHeight = frame.insetBottom, centerHeight = rect.height - topHeight - bottomHeight; + var row = this.row, col = this.col, hRepeat = this.hRepeat, vRepeat = this.vRepeat; + var coefu = 0, coefv = 0; + var uv = sprite.spriteFrame.uv; + var uvSliced = sprite.spriteFrame.uvSliced; + var rotated = sprite.spriteFrame._rotated; + var floatsPerVert = this.floatsPerVert, uvOffset = this.uvOffset; + var tempXVerts = [], tempYVerts = []; + for (var yindex = 0, ylength = row; yindex < ylength; ++yindex) { + coefv = this.sizableHeight > centerHeight ? this.sizableHeight >= yindex * centerHeight ? 1 : vRepeat % 1 : vRepeat; + for (var xindex = 0, xlength = col; xindex < xlength; ++xindex) { + coefu = this.sizableWidth > centerWidth ? this.sizableWidth >= xindex * centerWidth ? 1 : hRepeat % 1 : hRepeat; + if (rotated) { + if (0 === yindex) { + tempXVerts[0] = uvSliced[0].u; + tempXVerts[1] = uvSliced[0].u; + tempXVerts[2] = uvSliced[4].u + (uvSliced[8].u - uvSliced[4].u) * coefv; + } else if (yindex < row - 1) { + tempXVerts[0] = uvSliced[4].u; + tempXVerts[1] = uvSliced[4].u; + tempXVerts[2] = uvSliced[4].u + (uvSliced[8].u - uvSliced[4].u) * coefv; + } else if (yindex === row - 1) { + tempXVerts[0] = uvSliced[8].u; + tempXVerts[1] = uvSliced[8].u; + tempXVerts[2] = uvSliced[12].u; + } + if (0 === xindex) { + tempYVerts[0] = uvSliced[0].v; + tempYVerts[1] = uvSliced[1].v + (uvSliced[2].v - uvSliced[1].v) * coefu; + tempYVerts[2] = uvSliced[0].v; + } else if (xindex < col - 1) { + tempYVerts[0] = uvSliced[1].v; + tempYVerts[1] = uvSliced[1].v + (uvSliced[2].v - uvSliced[1].v) * coefu; + tempYVerts[2] = uvSliced[1].v; + } else if (xindex === col - 1) { + tempYVerts[0] = uvSliced[2].v; + tempYVerts[1] = uvSliced[3].v; + tempYVerts[2] = uvSliced[2].v; + } + tempXVerts[3] = tempXVerts[2]; + tempYVerts[3] = tempYVerts[1]; + } else { + if (0 === xindex) { + tempXVerts[0] = uvSliced[0].u; + tempXVerts[1] = uvSliced[1].u + (uvSliced[2].u - uvSliced[1].u) * coefu; + tempXVerts[2] = uv[0]; + } else if (xindex < col - 1) { + tempXVerts[0] = uvSliced[1].u; + tempXVerts[1] = uvSliced[1].u + (uvSliced[2].u - uvSliced[1].u) * coefu; + tempXVerts[2] = uvSliced[1].u; + } else if (xindex === col - 1) { + tempXVerts[0] = uvSliced[2].u; + tempXVerts[1] = uvSliced[3].u; + tempXVerts[2] = uvSliced[2].u; + } + if (0 === yindex) { + tempYVerts[0] = uvSliced[0].v; + tempYVerts[1] = uvSliced[0].v; + tempYVerts[2] = uvSliced[4].v + (uvSliced[8].v - uvSliced[4].v) * coefv; + } else if (yindex < row - 1) { + tempYVerts[0] = uvSliced[4].v; + tempYVerts[1] = uvSliced[4].v; + tempYVerts[2] = uvSliced[4].v + (uvSliced[8].v - uvSliced[4].v) * coefv; + } else if (yindex === row - 1) { + tempYVerts[0] = uvSliced[8].v; + tempYVerts[1] = uvSliced[8].v; + tempYVerts[2] = uvSliced[12].v; + } + tempXVerts[3] = tempXVerts[1]; + tempYVerts[3] = tempYVerts[2]; + } + verts[uvOffset] = tempXVerts[0]; + verts[uvOffset + 1] = tempYVerts[0]; + uvOffset += floatsPerVert; + verts[uvOffset] = tempXVerts[1]; + verts[uvOffset + 1] = tempYVerts[1]; + uvOffset += floatsPerVert; + verts[uvOffset] = tempXVerts[2]; + verts[uvOffset + 1] = tempYVerts[2]; + uvOffset += floatsPerVert; + verts[uvOffset] = tempXVerts[3]; + verts[uvOffset + 1] = tempYVerts[3]; + uvOffset += floatsPerVert; + } + } + }; + return TiledAssembler; + })(_assembler2d["default"]); + exports["default"] = TiledAssembler; + module.exports = exports["default"]; + }), { + "../../../../assembler-2d": 265 + }], + 300: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var BarFilledAssembler = require("../2d/bar-filled"); + var BarFilledAssembler3D = (function (_BarFilledAssembler) { + _inheritsLoose(BarFilledAssembler3D, _BarFilledAssembler); + function BarFilledAssembler3D() { + return _BarFilledAssembler.apply(this, arguments) || this; + } + return BarFilledAssembler3D; + })(BarFilledAssembler); + exports["default"] = BarFilledAssembler3D; + cc.js.mixin(BarFilledAssembler3D.prototype, Assembler3D); + module.exports = exports["default"]; + }), { + "../../../../assembler-3d": 266, + "../2d/bar-filled": 294 + }], + 301: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var MeshAssembler = require("../2d/mesh"); + var vec3_temp = new _vec["default"](); + var MeshAssembler3D = (function (_MeshAssembler) { + _inheritsLoose(MeshAssembler3D, _MeshAssembler); + function MeshAssembler3D() { + return _MeshAssembler.apply(this, arguments) || this; + } + return MeshAssembler3D; + })(MeshAssembler); + exports["default"] = MeshAssembler3D; + cc.js.mixin(MeshAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(comp) { + var matrix = comp.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var i = 0, l = local.length / 2; i < l; i++) { + _vec["default"].set(vec3_temp, local[2 * i], local[2 * i + 1], 0); + _vec["default"].transformMat4(vec3_temp, vec3_temp, matrix); + var dstOffset = floatsPerVert * i; + world[dstOffset] = vec3_temp.x; + world[dstOffset + 1] = vec3_temp.y; + world[dstOffset + 2] = vec3_temp.z; + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/mesh": 295 + }], + 302: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var RadialFilledAssembler = require("../2d/radial-filled"); + var vec3_temp_local = new _vec["default"](); + var vec3_temp_world = new _vec["default"](); + var RadialFilledAssembler3D = (function (_RadialFilledAssemble) { + _inheritsLoose(RadialFilledAssembler3D, _RadialFilledAssemble); + function RadialFilledAssembler3D() { + return _RadialFilledAssemble.apply(this, arguments) || this; + } + return RadialFilledAssembler3D; + })(RadialFilledAssembler); + exports["default"] = RadialFilledAssembler3D; + cc.js.mixin(RadialFilledAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(sprite) { + var matrix = sprite.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var offset = 0; offset < world.length; offset += floatsPerVert) { + _vec["default"].set(vec3_temp_local, local[offset], local[offset + 1], 0); + _vec["default"].transformMat4(vec3_temp_world, vec3_temp_local, matrix); + world[offset] = vec3_temp_world.x; + world[offset + 1] = vec3_temp_world.y; + world[offset + 2] = vec3_temp_world.z; + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/radial-filled": 296 + }], + 303: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var SimpleAssembler = require("../2d/simple"); + var SimpleAssembler3D = (function (_SimpleAssembler) { + _inheritsLoose(SimpleAssembler3D, _SimpleAssembler); + function SimpleAssembler3D() { + return _SimpleAssembler.apply(this, arguments) || this; + } + return SimpleAssembler3D; + })(SimpleAssembler); + exports["default"] = SimpleAssembler3D; + cc.js.mixin(SimpleAssembler3D.prototype, Assembler3D); + module.exports = exports["default"]; + }), { + "../../../../assembler-3d": 266, + "../2d/simple": 297 + }], + 304: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var SlicedAssembler = require("../2d/sliced"); + var vec3_temp_local = new _vec["default"](); + var vec3_temp_world = new _vec["default"](); + var SlicedAssembler3D = (function (_SlicedAssembler) { + _inheritsLoose(SlicedAssembler3D, _SlicedAssembler); + function SlicedAssembler3D() { + return _SlicedAssembler.apply(this, arguments) || this; + } + return SlicedAssembler3D; + })(SlicedAssembler); + exports["default"] = SlicedAssembler3D; + cc.js.mixin(SlicedAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(sprite) { + var matrix = sprite.node._worldMatrix; + var local = this._local; + var world = this._renderData.vDatas[0]; + var floatsPerVert = this.floatsPerVert; + for (var row = 0; row < 4; ++row) { + var localRowY = local[2 * row + 1]; + for (var col = 0; col < 4; ++col) { + var localColX = local[2 * col]; + _vec["default"].set(vec3_temp_local, localColX, localRowY, 0); + _vec["default"].transformMat4(vec3_temp_world, vec3_temp_local, matrix); + var worldIndex = (4 * row + col) * floatsPerVert; + world[worldIndex] = vec3_temp_world.x; + world[worldIndex + 1] = vec3_temp_world.y; + world[worldIndex + 2] = vec3_temp_world.z; + } + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/sliced": 298 + }], + 305: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _vec = _interopRequireDefault(require("../../../../../value-types/vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Assembler3D = require("../../../../assembler-3d"); + var TiledAssembler = require("../2d/tiled"); + var vec3_temps = []; + for (var i = 0; i < 4; i++) vec3_temps.push(new _vec["default"]()); + var TiledAssembler3D = (function (_TiledAssembler) { + _inheritsLoose(TiledAssembler3D, _TiledAssembler); + function TiledAssembler3D() { + return _TiledAssembler.apply(this, arguments) || this; + } + return TiledAssembler3D; + })(TiledAssembler); + exports["default"] = TiledAssembler3D; + cc.js.mixin(TiledAssembler3D.prototype, Assembler3D, { + updateWorldVerts: function updateWorldVerts(sprite) { + var local = this._local; + var localX = local.x, localY = local.y; + var world = this._renderData.vDatas[0]; + var row = this.row, col = this.col; + var matrix = sprite.node._worldMatrix; + var x, x1, y, y1; + var vertexOffset = 0; + for (var yindex = 0, ylength = row; yindex < ylength; ++yindex) { + y = localY[yindex]; + y1 = localY[yindex + 1]; + for (var xindex = 0, xlength = col; xindex < xlength; ++xindex) { + x = localX[xindex]; + x1 = localX[xindex + 1]; + _vec["default"].set(vec3_temps[0], x, y, 0); + _vec["default"].set(vec3_temps[1], x1, y, 0); + _vec["default"].set(vec3_temps[2], x, y1, 0); + _vec["default"].set(vec3_temps[3], x1, y1, 0); + for (var _i = 0; _i < 4; _i++) { + var vec3_temp = vec3_temps[_i]; + _vec["default"].transformMat4(vec3_temp, vec3_temp, matrix); + var offset = 6 * _i; + world[vertexOffset + offset] = vec3_temp.x; + world[vertexOffset + offset + 1] = vec3_temp.y; + world[vertexOffset + offset + 2] = vec3_temp.z; + } + vertexOffset += 24; + } + } + } + }); + module.exports = exports["default"]; + }), { + "../../../../../value-types/vec3": 349, + "../../../../assembler-3d": 266, + "../2d/tiled": 299 + }], + 306: [(function (require, module, exports) { + "use strict"; + var _assembler = _interopRequireDefault(require("../../../assembler")); + var _CCSprite = require("../../../../components/CCSprite"); + var _simple = _interopRequireDefault(require("./2d/simple")); + var _sliced = _interopRequireDefault(require("./2d/sliced")); + var _tiled = _interopRequireDefault(require("./2d/tiled")); + var _radialFilled = _interopRequireDefault(require("./2d/radial-filled")); + var _barFilled = _interopRequireDefault(require("./2d/bar-filled")); + var _mesh = _interopRequireDefault(require("./2d/mesh")); + var _simple2 = _interopRequireDefault(require("./3d/simple")); + var _sliced2 = _interopRequireDefault(require("./3d/sliced")); + var _tiled2 = _interopRequireDefault(require("./3d/tiled")); + var _radialFilled2 = _interopRequireDefault(require("./3d/radial-filled")); + var _barFilled2 = _interopRequireDefault(require("./3d/bar-filled")); + var _mesh2 = _interopRequireDefault(require("./3d/mesh")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ctor = { + getConstructor: function getConstructor(sprite) { + var is3DNode = sprite.node.is3DNode; + var ctor = is3DNode ? _simple2["default"] : _simple["default"]; + switch (sprite.type) { + case _CCSprite.Type.SLICED: + ctor = is3DNode ? _sliced2["default"] : _sliced["default"]; + break; + + case _CCSprite.Type.TILED: + ctor = is3DNode ? _tiled2["default"] : _tiled["default"]; + break; + + case _CCSprite.Type.FILLED: + ctor = sprite._fillType === _CCSprite.FillType.RADIAL ? is3DNode ? _radialFilled2["default"] : _radialFilled["default"] : is3DNode ? _barFilled2["default"] : _barFilled["default"]; + break; + + case _CCSprite.Type.MESH: + ctor = is3DNode ? _mesh2["default"] : _mesh["default"]; + } + return ctor; + }, + Simple: _simple["default"], + Sliced: _sliced["default"], + Tiled: _tiled["default"], + RadialFilled: _radialFilled["default"], + BarFilled: _barFilled["default"], + Mesh: _mesh["default"], + Simple3D: _simple2["default"], + Sliced3D: _sliced2["default"], + Tiled3D: _tiled2["default"], + RadialFilled3D: _radialFilled2["default"], + BarFilled3D: _barFilled2["default"], + Mesh3D: _mesh2["default"] + }; + _assembler["default"].register(cc.Sprite, ctor); + }), { + "../../../../components/CCSprite": 166, + "../../../assembler": 268, + "./2d/bar-filled": 294, + "./2d/mesh": 295, + "./2d/radial-filled": 296, + "./2d/simple": 297, + "./2d/sliced": 298, + "./2d/tiled": 299, + "./3d/bar-filled": 300, + "./3d/mesh": 301, + "./3d/radial-filled": 302, + "./3d/simple": 303, + "./3d/sliced": 304, + "./3d/tiled": 305 + }], + 307: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var FlexBuffer = (function () { + function FlexBuffer(handler, index, verticesCount, indicesCount, vfmt) { + this._handler = handler; + this._index = index; + this._vfmt = vfmt; + this._verticesBytes = vfmt._bytes; + this._initVerticesCount = verticesCount; + this._initIndicesCount = indicesCount; + this.reset(); + } + var _proto = FlexBuffer.prototype; + _proto._reallocVData = function _reallocVData(floatsCount, oldData) { + this.vData = new Float32Array(floatsCount); + this.uintVData = new Uint32Array(this.vData.buffer); + oldData && this.vData.set(oldData); + this._handler.updateMesh(this._index, this.vData, this.iData); + }; + _proto._reallocIData = function _reallocIData(indicesCount, oldData) { + this.iData = new Uint16Array(indicesCount); + oldData && this.iData.set(oldData); + this._handler.updateMesh(this._index, this.vData, this.iData); + }; + _proto.reserve = function reserve(verticesCount, indicesCount) { + var floatsCount = verticesCount * this._verticesBytes >> 2; + var newFloatsCount = this.vData.length; + var realloced = false; + if (floatsCount > newFloatsCount) { + while (newFloatsCount < floatsCount) newFloatsCount *= 2; + this._reallocVData(newFloatsCount, this.vData); + realloced = true; + } + var newIndicesCount = this.iData.length; + if (indicesCount > newIndicesCount) { + while (newIndicesCount < indicesCount) newIndicesCount *= 2; + this._reallocIData(indicesCount, this.iData); + realloced = true; + } + return realloced; + }; + _proto.used = function used(verticesCount, indicesCount) { + this.usedVertices = verticesCount; + this.usedIndices = indicesCount; + this.usedVerticesFloats = verticesCount * this._verticesBytes >> 2; + this._handler.updateMeshRange(verticesCount, indicesCount); + }; + _proto.reset = function reset() { + var floatsCount = this._initVerticesCount * this._verticesBytes >> 2; + this._reallocVData(floatsCount); + this._reallocIData(this._initIndicesCount); + this.usedVertices = 0; + this.usedVerticesFloats = 0; + this.usedIndices = 0; + }; + return FlexBuffer; + })(); + exports["default"] = FlexBuffer; + cc.FlexBuffer = FlexBuffer; + module.exports = exports["default"]; + }), {}], + 308: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../../renderer/gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var FIX_IOS14_BUFFER = (cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.MACOS) && cc.sys.isBrowser && /(OS 1[4-9])|(Version\/1[4-9])/.test(window.navigator.userAgent); + var MeshBuffer = cc.Class({ + name: "cc.MeshBuffer", + ctor: function ctor(batcher, vertexFormat) { + this.init(batcher, vertexFormat); + }, + init: function init(batcher, vertexFormat) { + this.byteOffset = 0; + this.indiceOffset = 0; + this.vertexOffset = 0; + this.indiceStart = 0; + this._dirty = false; + this._vertexFormat = vertexFormat; + this._vertexBytes = this._vertexFormat._bytes; + this._arrOffset = 0; + this._vbArr = []; + this._vb = new _gfx["default"].VertexBuffer(batcher._device, vertexFormat, _gfx["default"].USAGE_DYNAMIC, new ArrayBuffer(), 0); + this._vbArr[0] = this._vb; + this._ibArr = []; + this._ib = new _gfx["default"].IndexBuffer(batcher._device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_STATIC, new ArrayBuffer(), 0); + this._ibArr[0] = this._ib; + this._vData = null; + this._uintVData = null; + this._iData = null; + this._batcher = batcher; + this._initVDataCount = 256 * vertexFormat._bytes; + this._initIDataCount = 1536; + this._offsetInfo = { + byteOffset: 0, + vertexOffset: 0, + indiceOffset: 0 + }; + this._reallocBuffer(); + }, + uploadData: function uploadData() { + if (0 === this.byteOffset || !this._dirty) return; + var vertexsData = new Float32Array(this._vData.buffer, 0, this.byteOffset >> 2); + var indicesData = new Uint16Array(this._iData.buffer, 0, this.indiceOffset); + var vb = this._vb; + vb.update(0, vertexsData); + var ib = this._ib; + ib.update(0, indicesData); + this._dirty = false; + }, + switchBuffer: function switchBuffer() { + var offset = ++this._arrOffset; + this.byteOffset = 0; + this.vertexOffset = 0; + this.indiceOffset = 0; + this.indiceStart = 0; + if (offset < this._vbArr.length) { + this._vb = this._vbArr[offset]; + this._ib = this._ibArr[offset]; + } else { + this._vb = new _gfx["default"].VertexBuffer(this._batcher._device, this._vertexFormat, _gfx["default"].USAGE_DYNAMIC, new ArrayBuffer(), 0); + this._vbArr[offset] = this._vb; + this._ib = new _gfx["default"].IndexBuffer(this._batcher._device, _gfx["default"].INDEX_FMT_UINT16, _gfx["default"].USAGE_STATIC, new ArrayBuffer(), 0); + this._ibArr[offset] = this._ib; + } + }, + checkAndSwitchBuffer: function checkAndSwitchBuffer(vertexCount) { + if (this.vertexOffset + vertexCount > 65535) { + this.uploadData(); + this._batcher._flush(); + this.switchBuffer(); + } + }, + requestStatic: function requestStatic(vertexCount, indiceCount) { + this.checkAndSwitchBuffer(vertexCount); + var byteOffset = this.byteOffset + vertexCount * this._vertexBytes; + var indiceOffset = this.indiceOffset + indiceCount; + var byteLength = this._vData.byteLength; + var indiceLength = this._iData.length; + if (byteOffset > byteLength || indiceOffset > indiceLength) { + while (byteLength < byteOffset || indiceLength < indiceOffset) { + this._initVDataCount *= 2; + this._initIDataCount *= 2; + byteLength = 4 * this._initVDataCount; + indiceLength = this._initIDataCount; + } + this._reallocBuffer(); + } + this._updateOffset(vertexCount, indiceCount, byteOffset); + }, + _updateOffset: function _updateOffset(vertexCount, indiceCount, byteOffset) { + var offsetInfo = this._offsetInfo; + offsetInfo.vertexOffset = this.vertexOffset; + this.vertexOffset += vertexCount; + offsetInfo.indiceOffset = this.indiceOffset; + this.indiceOffset += indiceCount; + offsetInfo.byteOffset = this.byteOffset; + this.byteOffset = byteOffset; + this._dirty = true; + }, + request: function request(vertexCount, indiceCount) { + if (this._batcher._buffer !== this) { + this._batcher._flush(); + this._batcher._buffer = this; + } + this.requestStatic(vertexCount, indiceCount); + return this._offsetInfo; + }, + _reallocBuffer: function _reallocBuffer() { + this._reallocVData(true); + this._reallocIData(true); + }, + _reallocVData: function _reallocVData(copyOldData) { + var oldVData; + this._vData && (oldVData = new Uint8Array(this._vData.buffer)); + this._vData = new Float32Array(this._initVDataCount); + this._uintVData = new Uint32Array(this._vData.buffer); + var newData = new Uint8Array(this._uintVData.buffer); + if (oldVData && copyOldData) for (var i = 0, l = oldVData.length; i < l; i++) newData[i] = oldVData[i]; + }, + _reallocIData: function _reallocIData(copyOldData) { + var oldIData = this._iData; + this._iData = new Uint16Array(this._initIDataCount); + if (oldIData && copyOldData) { + var iData = this._iData; + for (var i = 0, l = oldIData.length; i < l; i++) iData[i] = oldIData[i]; + } + }, + reset: function reset() { + this._arrOffset = 0; + this._vb = this._vbArr[0]; + this._ib = this._ibArr[0]; + this.byteOffset = 0; + this.indiceOffset = 0; + this.vertexOffset = 0; + this.indiceStart = 0; + this._dirty = false; + }, + destroy: function destroy() { + this.reset(); + for (var i = 0; i < this._vbArr.length; i++) { + var vb = this._vbArr[i]; + vb.destroy(); + } + this._vbArr = null; + for (var _i = 0; _i < this._ibArr.length; _i++) { + var ib = this._ibArr[_i]; + ib.destroy(); + } + this._ibArr = null; + this._ib = null; + this._vb = null; + }, + forwardIndiceStartToOffset: function forwardIndiceStartToOffset() { + this.indiceStart = this.indiceOffset; + } + }); + if (FIX_IOS14_BUFFER) { + MeshBuffer.prototype.checkAndSwitchBuffer = function (vertexCount) { + if (this.vertexOffset + vertexCount > 65535) { + this.uploadData(); + this._batcher._flush(); + } + }; + MeshBuffer.prototype.forwardIndiceStartToOffset = function () { + this.uploadData(); + this.switchBuffer(); + }; + } + cc.MeshBuffer = module.exports = MeshBuffer; + }), { + "../../../renderer/gfx": 372 + }], + 309: [(function (require, module, exports) { + "use strict"; + var _inputAssembler = _interopRequireDefault(require("../../../renderer/core/input-assembler")); + var _recyclePool = _interopRequireDefault(require("../../../renderer/memop/recycle-pool")); + var _model = _interopRequireDefault(require("../../../renderer/scene/model")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _require = require("./vertex-format"), vfmtPosUvColor = _require.vfmtPosUvColor, vfmt3D = _require.vfmt3D; + var QuadBuffer = require("./quad-buffer"); + var MeshBuffer = require("./mesh-buffer"); + var SpineBuffer = require("./spine-buffer"); + var Material = require("../../assets/material/CCMaterial"); + var idGenerater = new (require("../../platform/id-generater"))("VertextFormat"); + var _buffers = {}; + var empty_material = new Material(); + var empty_ia = new _inputAssembler["default"](); + empty_ia._count = 0; + var ModelBatcher = function ModelBatcher(device, renderScene) { + this._renderScene = renderScene; + this._device = device; + this.walking = false; + this.material = empty_material; + this.cullingMask = 1; + this._iaPool = new _recyclePool["default"](function () { + return new _inputAssembler["default"](); + }, 16); + this._modelPool = new _recyclePool["default"](function () { + return new _model["default"](); + }, 16); + this._quadBuffer = this.getBuffer("quad", vfmtPosUvColor); + this._meshBuffer = this.getBuffer("mesh", vfmtPosUvColor); + this._quadBuffer3D = this.getBuffer("quad", vfmt3D); + this._meshBuffer3D = this.getBuffer("mesh", vfmt3D); + this._buffer = this._meshBuffer; + this._batchedModels = []; + this._dummyNode = new cc.Node(); + this._sortKey = 0; + this.node = this._dummyNode; + this.parentOpacity = 1; + this.parentOpacityDirty = 0; + this.worldMatDirty = 0; + }; + ModelBatcher.prototype = { + constructor: ModelBatcher, + reset: function reset() { + this._iaPool.reset(); + var scene = this._renderScene; + var models = this._batchedModels; + for (var i = 0; i < models.length; ++i) { + models[i].setInputAssembler(null); + models[i].setEffect(null); + scene.removeModel(models[i]); + } + this._modelPool.reset(); + models.length = 0; + this._sortKey = 0; + for (var key in _buffers) _buffers[key].reset(); + this._buffer = this._meshBuffer; + this.node = this._dummyNode; + this.material = empty_material; + this.cullingMask = 1; + this.parentOpacity = 1; + this.parentOpacityDirty = 0; + this.worldMatDirty = 0; + }, + _flushMaterial: function _flushMaterial(material) { + if (!material) return; + this.material = material; + var effect = material.effect; + if (!effect) return; + var model = this._modelPool.add(); + this._batchedModels.push(model); + model.sortKey = this._sortKey++; + model._cullingMask = this.cullingMask; + model.setNode(this.node); + model.setEffect(effect, null); + model.setInputAssembler(empty_ia); + this._renderScene.addModel(model); + }, + _flush: function _flush() { + var material = this.material, buffer = this._buffer, indiceCount = buffer.indiceOffset - buffer.indiceStart; + if (!this.walking || !material || indiceCount <= 0) return; + var effect = material.effect; + if (!effect) return; + var ia = this._iaPool.add(); + ia._vertexBuffer = buffer._vb; + ia._indexBuffer = buffer._ib; + ia._start = buffer.indiceStart; + ia._count = indiceCount; + var model = this._modelPool.add(); + this._batchedModels.push(model); + model.sortKey = this._sortKey++; + model._cullingMask = this.cullingMask; + model.setNode(this.node); + model.setEffect(effect); + model.setInputAssembler(ia); + this._renderScene.addModel(model); + buffer.forwardIndiceStartToOffset(); + }, + _flushIA: function _flushIA(ia) { + if (!ia) return; + var material = this.material; + var effect = material.effect; + if (!effect) return; + var model = this._modelPool.add(); + this._batchedModels.push(model); + model.sortKey = this._sortKey++; + model._cullingMask = this.cullingMask; + model.setNode(this.node); + model.setEffect(effect); + model.setInputAssembler(ia); + this._renderScene.addModel(model); + }, + terminate: function terminate() { + cc.dynamicAtlasManager && cc.dynamicAtlasManager.enabled && cc.dynamicAtlasManager.update(); + this._flush(); + for (var key in _buffers) _buffers[key].uploadData(); + this.walking = false; + }, + getBuffer: function getBuffer(type, vertextFormat) { + var key = type + vertextFormat.getHash(); + var buffer = _buffers[key]; + if (!buffer) { + if ("mesh" === type) buffer = new MeshBuffer(this, vertextFormat); else if ("quad" === type) buffer = new QuadBuffer(this, vertextFormat); else { + if ("spine" !== type) { + cc.error("Not support buffer type [" + type + "]"); + return null; + } + buffer = new SpineBuffer(this, vertextFormat); + } + _buffers[key] = buffer; + } + return buffer; + } + }; + module.exports = ModelBatcher; + }), { + "../../../renderer/core/input-assembler": 362, + "../../../renderer/memop/recycle-pool": 387, + "../../../renderer/scene/model": 394, + "../../assets/material/CCMaterial": 124, + "../../platform/id-generater": 256, + "./mesh-buffer": 308, + "./quad-buffer": 310, + "./spine-buffer": 312, + "./vertex-format": 313 + }], + 310: [(function (require, module, exports) { + "use strict"; + var MeshBuffer = require("./mesh-buffer"); + var QuadBuffer = cc.Class({ + name: "cc.QuadBuffer", + extends: MeshBuffer, + _fillQuadBuffer: function _fillQuadBuffer() { + var count = this._initIDataCount / 6; + var buffer = this._iData; + for (var i = 0, idx = 0; i < count; i++) { + var vertextID = 4 * i; + buffer[idx++] = vertextID; + buffer[idx++] = vertextID + 1; + buffer[idx++] = vertextID + 2; + buffer[idx++] = vertextID + 1; + buffer[idx++] = vertextID + 3; + buffer[idx++] = vertextID + 2; + } + var indicesData = new Uint16Array(this._iData.buffer, 0, 6 * count); + this._ib.update(0, indicesData); + }, + uploadData: function uploadData() { + if (0 === this.byteOffset || !this._dirty) return; + var vertexsData = new Float32Array(this._vData.buffer, 0, this.byteOffset >> 2); + this._vb.update(0, vertexsData); + this._dirty = false; + }, + switchBuffer: function switchBuffer() { + this._super(); + var indicesData = new Uint16Array(this._iData.buffer, 0, this._initIDataCount); + this._ib.update(0, indicesData); + }, + _reallocBuffer: function _reallocBuffer() { + this._reallocVData(true); + this._reallocIData(); + this._fillQuadBuffer(); + } + }); + cc.QuadBuffer = module.exports = QuadBuffer; + }), { + "./mesh-buffer": 308 + }], + 311: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = RenderData; + var _flexBuffer = _interopRequireDefault(require("./flex-buffer")); + var _vertexFormat = require("./vertex-format"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function RenderData() { + this.vDatas = []; + this.uintVDatas = []; + this.iDatas = []; + this.meshCount = 0; + this._infos = null; + this._flexBuffer = null; + } + cc.js.mixin(RenderData.prototype, { + init: function init(assembler) { }, + clear: function clear() { + this.vDatas.length = 0; + this.iDatas.length = 0; + this.uintVDatas.length = 0; + this.meshCount = 0; + this._infos = null; + this._flexBuffer && this._flexBuffer.reset(); + }, + updateMesh: function updateMesh(index, vertices, indices) { + this.vDatas[index] = vertices; + this.uintVDatas[index] = new Uint32Array(vertices.buffer, 0, vertices.length); + this.iDatas[index] = indices; + this.meshCount = this.vDatas.length; + }, + updateMeshRange: function updateMeshRange(verticesCount, indicesCount) { }, + createData: function createData(index, verticesFloats, indicesCount) { + var vertices = new Float32Array(verticesFloats); + var indices = new Uint16Array(indicesCount); + this.updateMesh(index, vertices, indices); + }, + createQuadData: function createQuadData(index, verticesFloats, indicesCount) { + this.createData(index, verticesFloats, indicesCount); + this.initQuadIndices(this.iDatas[index]); + }, + createFlexData: function createFlexData(index, verticesFloats, indicesCount, vfmt) { + vfmt = vfmt || _vertexFormat.vfmtPosUvColor; + this._flexBuffer = new _flexBuffer["default"](this, index, verticesFloats, indicesCount, vfmt); + }, + initQuadIndices: function initQuadIndices(indices) { + var count = indices.length / 6; + for (var i = 0, idx = 0; i < count; i++) { + var vertextID = 4 * i; + indices[idx++] = vertextID; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 2; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 3; + indices[idx++] = vertextID + 2; + } + } + }); + cc.RenderData = RenderData; + module.exports = exports["default"]; + }), { + "./flex-buffer": 307, + "./vertex-format": 313 + }], + 312: [(function (require, module, exports) { + "use strict"; + var SpineBuffer = cc.Class({ + name: "cc.SpineBuffer", + extends: require("./mesh-buffer"), + requestStatic: function requestStatic(vertexCount, indiceCount) { + this.checkAndSwitchBuffer(vertexCount); + var byteOffset = this.byteOffset + vertexCount * this._vertexBytes; + var indiceOffset = this.indiceOffset + indiceCount; + var byteLength = this._vData.byteLength; + var indiceLength = this._iData.length; + if (byteOffset > byteLength || indiceOffset > indiceLength) { + while (byteLength < byteOffset || indiceLength < indiceOffset) { + this._initVDataCount *= 2; + this._initIDataCount *= 2; + byteLength = 4 * this._initVDataCount; + indiceLength = this._initIDataCount; + } + this._reallocBuffer(); + } + var offsetInfo = this._offsetInfo; + offsetInfo.vertexOffset = this.vertexOffset; + offsetInfo.indiceOffset = this.indiceOffset; + offsetInfo.byteOffset = this.byteOffset; + }, + adjust: function adjust(vertexCount, indiceCount) { + this.vertexOffset += vertexCount; + this.indiceOffset += indiceCount; + this.byteOffset = this.byteOffset + vertexCount * this._vertexBytes; + this._dirty = true; + } + }); + cc.SpineBuffer = module.exports = SpineBuffer; + }), { + "./mesh-buffer": 308 + }], + 313: [(function (require, module, exports) { + "use strict"; + var _gfx = _interopRequireDefault(require("../../../renderer/gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var vfmt3D = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 3 + }, { + name: _gfx["default"].ATTR_UV0, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmt3D.name = "vfmt3D"; + _gfx["default"].VertexFormat.XYZ_UV_Color = vfmt3D; + var vfmtPosUvColor = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_UV0, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmtPosUvColor.name = "vfmtPosUvColor"; + _gfx["default"].VertexFormat.XY_UV_Color = vfmtPosUvColor; + var vfmtPosUvTwoColor = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_UV0, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }, { + name: _gfx["default"].ATTR_COLOR0, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmtPosUvTwoColor.name = "vfmtPosUvTwoColor"; + _gfx["default"].VertexFormat.XY_UV_Two_Color = vfmtPosUvTwoColor; + var vfmtPosUv = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_UV0, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }]); + vfmtPosUv.name = "vfmtPosUv"; + _gfx["default"].VertexFormat.XY_UV = vfmtPosUv; + var vfmtPosColor = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }, { + name: _gfx["default"].ATTR_COLOR, + type: _gfx["default"].ATTR_TYPE_UINT8, + num: 4, + normalize: true + }]); + vfmtPosColor.name = "vfmtPosColor"; + _gfx["default"].VertexFormat.XY_Color = vfmtPosColor; + var vfmtPos = new _gfx["default"].VertexFormat([{ + name: _gfx["default"].ATTR_POSITION, + type: _gfx["default"].ATTR_TYPE_FLOAT32, + num: 2 + }]); + vfmtPos.name = "vfmtPos"; + _gfx["default"].VertexFormat.XY = vfmtPos; + module.exports = { + vfmt3D: vfmt3D, + vfmtPosUvColor: vfmtPosUvColor, + vfmtPosUvTwoColor: vfmtPosUvTwoColor, + vfmtPosUv: vfmtPosUv, + vfmtPosColor: vfmtPosColor, + vfmtPos: vfmtPos + }; + }), { + "../../../renderer/gfx": 372 + }], + 314: [(function (require, module, exports) { + "use strict"; + require("../platform/CCSys"); + var EXTNAME_RE = /(\.[^\.\/\?\\]*)(\?.*)?$/; + var DIRNAME_RE = /((.*)(\/|\\|\\\\))?(.*?\..*$)?/; + var NORMALIZE_RE = /[^\.\/]+\/\.\.\//; + cc.path = { + join: function join() { + var l = arguments.length; + var result = ""; + for (var i = 0; i < l; i++) result = (result + ("" === result ? "" : "/") + arguments[i]).replace(/(\/|\\\\)$/, ""); + return result; + }, + extname: function extname(pathStr) { + var temp = EXTNAME_RE.exec(pathStr); + return temp ? temp[1] : ""; + }, + mainFileName: function mainFileName(fileName) { + if (fileName) { + var idx = fileName.lastIndexOf("."); + if (-1 !== idx) return fileName.substring(0, idx); + } + return fileName; + }, + basename: function basename(pathStr, extname) { + var index = pathStr.indexOf("?"); + index > 0 && (pathStr = pathStr.substring(0, index)); + var reg = /(\/|\\)([^\/\\]+)$/g; + var result = reg.exec(pathStr.replace(/(\/|\\)$/, "")); + if (!result) return pathStr; + var baseName = result[2]; + if (extname && pathStr.substring(pathStr.length - extname.length).toLowerCase() === extname.toLowerCase()) return baseName.substring(0, baseName.length - extname.length); + return baseName; + }, + dirname: function dirname(pathStr) { + var temp = DIRNAME_RE.exec(pathStr); + return temp ? temp[2] : ""; + }, + changeExtname: function changeExtname(pathStr, extname) { + extname = extname || ""; + var index = pathStr.indexOf("?"); + var tempStr = ""; + if (index > 0) { + tempStr = pathStr.substring(index); + pathStr = pathStr.substring(0, index); + } + index = pathStr.lastIndexOf("."); + if (index < 0) return pathStr + extname + tempStr; + return pathStr.substring(0, index) + extname + tempStr; + }, + changeBasename: function changeBasename(pathStr, basename, isSameExt) { + if (0 === basename.indexOf(".")) return this.changeExtname(pathStr, basename); + var index = pathStr.indexOf("?"); + var tempStr = ""; + var ext = isSameExt ? this.extname(pathStr) : ""; + if (index > 0) { + tempStr = pathStr.substring(index); + pathStr = pathStr.substring(0, index); + } + index = pathStr.lastIndexOf("/"); + index = index <= 0 ? 0 : index + 1; + return pathStr.substring(0, index) + basename + ext + tempStr; + }, + _normalize: function _normalize(url) { + var oldUrl = url = String(url); + do { + oldUrl = url; + url = url.replace(NORMALIZE_RE, ""); + } while (oldUrl.length !== url.length); + return url; + }, + sep: cc.sys.os === cc.sys.OS_WINDOWS ? "\\" : "/", + stripSep: function stripSep(path) { + return path.replace(/[\/\\]$/, ""); + } + }; + module.exports = cc.path; + }), { + "../platform/CCSys": 248 + }], + 315: [(function (require, module, exports) { + "use strict"; + var AffineTransform = function AffineTransform(a, b, c, d, tx, ty) { + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + }; + AffineTransform.create = function (a, b, c, d, tx, ty) { + return { + a: a, + b: b, + c: c, + d: d, + tx: tx, + ty: ty + }; + }; + AffineTransform.identity = function () { + return { + a: 1, + b: 0, + c: 0, + d: 1, + tx: 0, + ty: 0 + }; + }; + AffineTransform.clone = function (t) { + return { + a: t.a, + b: t.b, + c: t.c, + d: t.d, + tx: t.tx, + ty: t.ty + }; + }; + AffineTransform.concat = function (out, t1, t2) { + var a = t1.a, b = t1.b, c = t1.c, d = t1.d, tx = t1.tx, ty = t1.ty; + out.a = a * t2.a + b * t2.c; + out.b = a * t2.b + b * t2.d; + out.c = c * t2.a + d * t2.c; + out.d = c * t2.b + d * t2.d; + out.tx = tx * t2.a + ty * t2.c + t2.tx; + out.ty = tx * t2.b + ty * t2.d + t2.ty; + return out; + }; + AffineTransform.invert = function (out, t) { + var a = t.a, b = t.b, c = t.c, d = t.d; + var determinant = 1 / (a * d - b * c); + var tx = t.tx, ty = t.ty; + out.a = determinant * d; + out.b = -determinant * b; + out.c = -determinant * c; + out.d = determinant * a; + out.tx = determinant * (c * ty - d * tx); + out.ty = determinant * (b * tx - a * ty); + return out; + }; + AffineTransform.fromMat4 = function (out, mat) { + var matm = mat.m; + out.a = matm[0]; + out.b = matm[1]; + out.c = matm[4]; + out.d = matm[5]; + out.tx = matm[12]; + out.ty = matm[13]; + return out; + }; + AffineTransform.transformVec2 = function (out, point, transOrY, t) { + var x, y; + if (void 0 === t) { + t = transOrY; + x = point.x; + y = point.y; + } else { + x = point; + y = transOrY; + } + out.x = t.a * x + t.c * y + t.tx; + out.y = t.b * x + t.d * y + t.ty; + return out; + }; + AffineTransform.transformSize = function (out, size, t) { + out.width = t.a * size.width + t.c * size.height; + out.height = t.b * size.width + t.d * size.height; + return out; + }; + AffineTransform.transformRect = function (out, rect, t) { + var ol = rect.x; + var ob = rect.y; + var or = ol + rect.width; + var ot = ob + rect.height; + var lbx = t.a * ol + t.c * ob + t.tx; + var lby = t.b * ol + t.d * ob + t.ty; + var rbx = t.a * or + t.c * ob + t.tx; + var rby = t.b * or + t.d * ob + t.ty; + var ltx = t.a * ol + t.c * ot + t.tx; + var lty = t.b * ol + t.d * ot + t.ty; + var rtx = t.a * or + t.c * ot + t.tx; + var rty = t.b * or + t.d * ot + t.ty; + var minX = Math.min(lbx, rbx, ltx, rtx); + var maxX = Math.max(lbx, rbx, ltx, rtx); + var minY = Math.min(lby, rby, lty, rty); + var maxY = Math.max(lby, rby, lty, rty); + out.x = minX; + out.y = minY; + out.width = maxX - minX; + out.height = maxY - minY; + return out; + }; + AffineTransform.transformObb = function (out_bl, out_tl, out_tr, out_br, rect, anAffineTransform) { + var x = rect.x; + var y = rect.y; + var width = rect.width; + var height = rect.height; + var tx = anAffineTransform.a * x + anAffineTransform.c * y + anAffineTransform.tx; + var ty = anAffineTransform.b * x + anAffineTransform.d * y + anAffineTransform.ty; + var xa = anAffineTransform.a * width; + var xb = anAffineTransform.b * width; + var yc = anAffineTransform.c * height; + var yd = anAffineTransform.d * height; + out_tl.x = tx; + out_tl.y = ty; + out_tr.x = xa + tx; + out_tr.y = xb + ty; + out_bl.x = yc + tx; + out_bl.y = yd + ty; + out_br.x = xa + yc + tx; + out_br.y = xb + yd + ty; + }; + cc.AffineTransform = module.exports = AffineTransform; + }), {}], + 316: [(function (require, module, exports) { + "use strict"; + var Flags = require("../platform/CCObject").Flags; + var misc = require("./misc"); + var js = require("../platform/js"); + var IdGenerater = require("../platform/id-generater"); + var eventManager = require("../event-manager"); + var RenderFlow = require("../renderer/render-flow"); + var Destroying = Flags.Destroying; + var DontDestroy = Flags.DontDestroy; + var Deactivating = Flags.Deactivating; + var CHILD_ADDED = "child-added"; + var CHILD_REMOVED = "child-removed"; + var idGenerater = new IdGenerater("Node"); + function getConstructor(typeOrClassName) { + if (!typeOrClassName) { + cc.errorID(3804); + return null; + } + if ("string" === typeof typeOrClassName) return js.getClassByName(typeOrClassName); + return typeOrClassName; + } + function findComponent(node, constructor) { + if (constructor._sealed) for (var i = 0; i < node._components.length; ++i) { + var comp = node._components[i]; + if (comp.constructor === constructor) return comp; + } else for (var _i = 0; _i < node._components.length; ++_i) { + var _comp = node._components[_i]; + if (_comp instanceof constructor) return _comp; + } + return null; + } + function findComponents(node, constructor, components) { + if (constructor._sealed) for (var i = 0; i < node._components.length; ++i) { + var comp = node._components[i]; + comp.constructor === constructor && components.push(comp); + } else for (var _i2 = 0; _i2 < node._components.length; ++_i2) { + var _comp2 = node._components[_i2]; + _comp2 instanceof constructor && components.push(_comp2); + } + } + function findChildComponent(children, constructor) { + for (var i = 0; i < children.length; ++i) { + var node = children[i]; + var comp = findComponent(node, constructor); + if (comp) return comp; + if (node._children.length > 0) { + comp = findChildComponent(node._children, constructor); + if (comp) return comp; + } + } + return null; + } + function findChildComponents(children, constructor, components) { + for (var i = 0; i < children.length; ++i) { + var node = children[i]; + findComponents(node, constructor, components); + node._children.length > 0 && findChildComponents(node._children, constructor, components); + } + } + var BaseNode = cc.Class({ + name: "cc._BaseNode", + extends: cc.Object, + properties: { + _parent: null, + _children: [], + _active: true, + _components: [], + _prefab: null, + _persistNode: { + get: function get() { + return (this._objFlags & DontDestroy) > 0; + }, + set: function set(value) { + value ? this._objFlags |= DontDestroy : this._objFlags &= ~DontDestroy; + } + }, + name: { + get: function get() { + return this._name; + }, + set: function set(value) { + false; + this._name = value; + false; + } + }, + uuid: { + get: function get() { + return this._id; + } + }, + children: { + get: function get() { + return this._children; + } + }, + childrenCount: { + get: function get() { + return this._children.length; + } + }, + active: { + get: function get() { + return this._active; + }, + set: function set(value) { + value = !!value; + if (this._active !== value) { + this._active = value; + var parent = this._parent; + if (parent) { + var couldActiveInScene = parent._activeInHierarchy; + couldActiveInScene && cc.director._nodeActivator.activateNode(this, value); + } + } + } + }, + activeInHierarchy: { + get: function get() { + return this._activeInHierarchy; + } + } + }, + ctor: function ctor(name) { + this._name = void 0 !== name ? name : "New Node"; + this._activeInHierarchy = false; + this._id = idGenerater.getNewId(); + cc.director._scheduler && cc.director._scheduler.enableForTarget(this); + this.__eventTargets = []; + }, + getParent: function getParent() { + return this._parent; + }, + setParent: function setParent(value) { + if (this._parent === value) return; + false; + var oldParent = this._parent; + (true, oldParent) && oldParent._objFlags & Deactivating && cc.errorID(3821); + this._parent = value || null; + this._onSetParent(value); + if (value) { + (true, value._objFlags & Deactivating) && cc.errorID(3821); + eventManager._setDirtyForNode(this); + value._children.push(this); + value.emit && value.emit(CHILD_ADDED, this); + value._renderFlag |= RenderFlow.FLAG_CHILDREN; + } + if (oldParent) { + if (!(oldParent._objFlags & Destroying)) { + var removeAt = oldParent._children.indexOf(this); + false; + oldParent._children.splice(removeAt, 1); + oldParent.emit && oldParent.emit(CHILD_REMOVED, this); + this._onHierarchyChanged(oldParent); + 0 === oldParent._children.length && (oldParent._renderFlag &= ~RenderFlow.FLAG_CHILDREN); + } + } else value && this._onHierarchyChanged(null); + }, + attr: function attr(attrs) { + js.mixin(this, attrs); + }, + getChildByUuid: function getChildByUuid(uuid) { + if (!uuid) { + cc.log("Invalid uuid"); + return null; + } + var locChildren = this._children; + for (var i = 0, len = locChildren.length; i < len; i++) if (locChildren[i]._id === uuid) return locChildren[i]; + return null; + }, + getChildByName: function getChildByName(name) { + if (!name) { + cc.log("Invalid name"); + return null; + } + var locChildren = this._children; + for (var i = 0, len = locChildren.length; i < len; i++) if (locChildren[i]._name === name) return locChildren[i]; + return null; + }, + addChild: function addChild(child) { + false; + cc.assertID(child, 1606); + cc.assertID(null === child._parent, 1605); + child.setParent(this); + }, + insertChild: function insertChild(child, siblingIndex) { + child.parent = this; + child.setSiblingIndex(siblingIndex); + }, + getSiblingIndex: function getSiblingIndex() { + return this._parent ? this._parent._children.indexOf(this) : 0; + }, + setSiblingIndex: function setSiblingIndex(index) { + if (!this._parent) return; + if (this._parent._objFlags & Deactivating) { + cc.errorID(3821); + return; + } + var siblings = this._parent._children; + index = -1 !== index ? index : siblings.length - 1; + var oldIndex = siblings.indexOf(this); + if (index !== oldIndex) { + siblings.splice(oldIndex, 1); + index < siblings.length ? siblings.splice(index, 0, this) : siblings.push(this); + this._onSiblingIndexChanged && this._onSiblingIndexChanged(index); + } + }, + walk: function walk(prefunc, postfunc) { + var BaseNode = cc._BaseNode; + var index = 1; + var children, child, curr, i, afterChildren; + var stack = BaseNode._stacks[BaseNode._stackId]; + if (!stack) { + stack = []; + BaseNode._stacks.push(stack); + } + BaseNode._stackId++; + stack.length = 0; + stack[0] = this; + var parent = null; + afterChildren = false; + while (index) { + index--; + curr = stack[index]; + if (!curr) continue; + !afterChildren && prefunc ? prefunc(curr) : afterChildren && postfunc && postfunc(curr); + stack[index] = null; + if (!afterChildren) { + if (curr._children.length > 0) { + parent = curr; + children = curr._children; + i = 0; + stack[index] = children[i]; + index++; + } else { + stack[index] = curr; + index++; + afterChildren = true; + } + continue; + } + if (parent === this._parent) break; + afterChildren = false; + if (children) { + i++; + if (children[i]) { + stack[index] = children[i]; + index++; + } else if (parent) { + stack[index] = parent; + index++; + afterChildren = true; + if (parent._parent) { + children = parent._parent._children; + i = children.indexOf(parent); + parent = parent._parent; + } else { + parent = null; + children = null; + } + if (i < 0) break; + } + } + } + stack.length = 0; + BaseNode._stackId--; + }, + cleanup: function cleanup() { }, + removeFromParent: function removeFromParent(cleanup) { + if (this._parent) { + void 0 === cleanup && (cleanup = true); + this._parent.removeChild(this, cleanup); + } + }, + removeChild: function removeChild(child, cleanup) { + if (this._children.indexOf(child) > -1) { + (cleanup || void 0 === cleanup) && child.cleanup(); + child.parent = null; + } + }, + removeAllChildren: function removeAllChildren(cleanup) { + var children = this._children; + void 0 === cleanup && (cleanup = true); + for (var i = children.length - 1; i >= 0; i--) { + var node = children[i]; + if (node) { + cleanup && node.cleanup(); + node.parent = null; + } + } + this._children.length = 0; + }, + isChildOf: function isChildOf(parent) { + var child = this; + do { + if (child === parent) return true; + child = child._parent; + } while (child); + return false; + }, + getComponent: function getComponent(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + if (constructor) return findComponent(this, constructor); + return null; + }, + getComponents: function getComponents(typeOrClassName) { + var constructor = getConstructor(typeOrClassName), components = []; + constructor && findComponents(this, constructor, components); + return components; + }, + getComponentInChildren: function getComponentInChildren(typeOrClassName) { + var constructor = getConstructor(typeOrClassName); + if (constructor) return findChildComponent(this._children, constructor); + return null; + }, + getComponentsInChildren: function getComponentsInChildren(typeOrClassName) { + var constructor = getConstructor(typeOrClassName), components = []; + if (constructor) { + findComponents(this, constructor, components); + findChildComponents(this._children, constructor, components); + } + return components; + }, + _checkMultipleComp: (false, false) && function (ctor) { + var existing = this.getComponent(ctor._disallowMultiple); + if (existing) { + existing.constructor === ctor ? cc.errorID(3805, js.getClassName(ctor), this._name) : cc.errorID(3806, js.getClassName(ctor), this._name, js.getClassName(existing)); + return false; + } + return true; + }, + addComponent: function addComponent(typeOrClassName) { + false; + var constructor; + if ("string" === typeof typeOrClassName) { + constructor = js.getClassByName(typeOrClassName); + if (!constructor) { + cc.errorID(3807, typeOrClassName); + cc._RFpeek() && cc.errorID(3808, typeOrClassName); + return null; + } + } else { + if (!typeOrClassName) { + cc.errorID(3804); + return null; + } + constructor = typeOrClassName; + } + if ("function" !== typeof constructor) { + cc.errorID(3809); + return null; + } + if (!js.isChildClassOf(constructor, cc.Component)) { + cc.errorID(3810); + return null; + } + if ((false, false) && constructor._disallowMultiple && !this._checkMultipleComp(constructor)) return null; + var ReqComp = constructor._requireComponent; + if (ReqComp && !this.getComponent(ReqComp)) { + var depended = this.addComponent(ReqComp); + if (!depended) return null; + } + var component = new constructor(); + component.node = this; + this._components.push(component); + (false, false) && cc.engine && this._id in cc.engine.attachedObjsForEditor && (cc.engine.attachedObjsForEditor[component._id] = component); + this._activeInHierarchy && cc.director._nodeActivator.activateComp(component); + return component; + }, + _addComponentAt: false, + removeComponent: function removeComponent(component) { + if (!component) { + cc.errorID(3813); + return; + } + component instanceof cc.Component || (component = this.getComponent(component)); + component && component.destroy(); + }, + _getDependComponent: false, + _removeComponent: function _removeComponent(component) { + if (!component) { + cc.errorID(3814); + return; + } + if (!(this._objFlags & Destroying)) { + var i = this._components.indexOf(component); + if (-1 !== i) { + this._components.splice(i, 1); + (false, false) && cc.engine && delete cc.engine.attachedObjsForEditor[component._id]; + } else component.node !== this && cc.errorID(3815); + } + }, + destroy: function destroy() { + cc.Object.prototype.destroy.call(this) && (this.active = false); + }, + destroyAllChildren: function destroyAllChildren() { + var children = this._children; + for (var i = 0; i < children.length; ++i) children[i].destroy(); + }, + _onSetParent: function _onSetParent(value) { }, + _onPostActivated: function _onPostActivated() { }, + _onBatchCreated: function _onBatchCreated(dontSyncChildPrefab) { }, + _onHierarchyChanged: function _onHierarchyChanged(oldParent) { + var newParent = this._parent; + if (this._persistNode && !(newParent instanceof cc.Scene)) { + cc.game.removePersistRootNode(this); + false; + } + var scene; + var inCurrentSceneBefore; + var inCurrentSceneNow; + var newPrefabRoot; + var myPrefabInfo; + var PrefabUtils; + false, false; + var shouldActiveNow = this._active && !!(newParent && newParent._activeInHierarchy); + this._activeInHierarchy !== shouldActiveNow && cc.director._nodeActivator.activateNode(this, shouldActiveNow); + }, + _instantiate: function _instantiate(cloned, isSyncedNode) { + cloned || (cloned = cc.instantiate._clone(this, this)); + var newPrefabInfo = cloned._prefab; + var PrefabUtils; + false; + var syncing; + false; + cloned._parent = null; + cloned._onBatchCreated(isSyncedNode); + return cloned; + }, + _registerIfAttached: (false, false) && function (register) { + var attachedObjsForEditor = cc.engine.attachedObjsForEditor; + if (register) { + attachedObjsForEditor[this._id] = this; + for (var i = 0; i < this._components.length; i++) { + var comp = this._components[i]; + attachedObjsForEditor[comp._id] = comp; + } + cc.engine.emit("node-attach-to-scene", this); + } else { + cc.engine.emit("node-detach-from-scene", this); + delete attachedObjsForEditor[this._id]; + for (var _i3 = 0; _i3 < this._components.length; _i3++) { + var _comp3 = this._components[_i3]; + delete attachedObjsForEditor[_comp3._id]; + } + } + var children = this._children; + for (var _i4 = 0, len = children.length; _i4 < len; ++_i4) { + var child = children[_i4]; + child._registerIfAttached(register); + } + }, + _onPreDestroy: function _onPreDestroy() { + var i, len; + this._objFlags |= Destroying; + var parent = this._parent; + var destroyByParent = parent && parent._objFlags & Destroying; + !destroyByParent && (false, false) && this._registerIfAttached(false); + var children = this._children; + for (i = 0, len = children.length; i < len; ++i) children[i]._destroyImmediate(); + for (i = 0, len = this._components.length; i < len; ++i) { + var component = this._components[i]; + component._destroyImmediate(); + } + var eventTargets = this.__eventTargets; + for (i = 0, len = eventTargets.length; i < len; ++i) { + var target = eventTargets[i]; + target && target.targetOff(this); + } + eventTargets.length = 0; + this._persistNode && cc.game.removePersistRootNode(this); + if (!destroyByParent && parent) { + var childIndex = parent._children.indexOf(this); + parent._children.splice(childIndex, 1); + parent.emit && parent.emit("child-removed", this); + } + return destroyByParent; + }, + onRestore: false + }); + BaseNode.idGenerater = idGenerater; + BaseNode._stacks = [[]]; + BaseNode._stackId = 0; + BaseNode.prototype._onPreDestroyBase = BaseNode.prototype._onPreDestroy; + false; + BaseNode.prototype._onHierarchyChangedBase = BaseNode.prototype._onHierarchyChanged; + false; + var SameNameGetSets = ["parent", "name", "children", "childrenCount"]; + misc.propertyDefine(BaseNode, SameNameGetSets, {}); + false; + cc._BaseNode = module.exports = BaseNode; + }), { + "../event-manager": 184, + "../platform/CCObject": 245, + "../platform/id-generater": 256, + "../platform/js": 260, + "../renderer/render-flow": 272, + "./misc": 324 + }], + 317: [(function (require, module, exports) { + "use strict"; + var EPSILON = 1e-6; + function binarySearchEpsilon(array, value) { + for (var l = 0, h = array.length - 1, m = h >>> 1; l <= h; m = l + h >>> 1) { + var test = array[m]; + if (test > value + EPSILON) h = m - 1; else { + if (!(test < value - EPSILON)) return m; + l = m + 1; + } + } + return ~l; + } + module.exports = { + binarySearchEpsilon: binarySearchEpsilon + }; + }), {}], + 318: [(function (require, module, exports) { + "use strict"; + var RenderComponent = require("../components/CCRenderComponent"); + var BlendFactor = require("../platform/CCMacro").BlendFactor; + var gfx = require("../../renderer/gfx"); + var BlendFunc = cc.Class({ + properties: { + _srcBlendFactor: BlendFactor.SRC_ALPHA, + _dstBlendFactor: BlendFactor.ONE_MINUS_SRC_ALPHA, + srcBlendFactor: { + get: function get() { + return this._srcBlendFactor; + }, + set: function set(value) { + if (this._srcBlendFactor === value) return; + this._srcBlendFactor = value; + this._updateBlendFunc(true); + this._onBlendChanged && this._onBlendChanged(); + }, + animatable: false, + type: BlendFactor, + tooltip: false, + visible: true + }, + dstBlendFactor: { + get: function get() { + return this._dstBlendFactor; + }, + set: function set(value) { + if (this._dstBlendFactor === value) return; + this._dstBlendFactor = value; + this._updateBlendFunc(true); + }, + animatable: false, + type: BlendFactor, + tooltip: false, + visible: true + } + }, + setMaterial: function setMaterial(index, material) { + var materialVar = RenderComponent.prototype.setMaterial.call(this, index, material); + this._srcBlendFactor === BlendFactor.SRC_ALPHA && this._dstBlendFactor === BlendFactor.ONE_MINUS_SRC_ALPHA || this._updateMaterialBlendFunc(materialVar); + return materialVar; + }, + _updateMaterial: function _updateMaterial() { + this._updateBlendFunc(); + }, + _updateBlendFunc: function _updateBlendFunc(force) { + if (!force && this._srcBlendFactor === BlendFactor.SRC_ALPHA && this._dstBlendFactor === BlendFactor.ONE_MINUS_SRC_ALPHA) return; + var materials = this.getMaterials(); + for (var i = 0; i < materials.length; i++) { + var material = materials[i]; + this._updateMaterialBlendFunc(material); + } + }, + _updateMaterialBlendFunc: function _updateMaterialBlendFunc(material) { + material.setBlend(true, gfx.BLEND_FUNC_ADD, this._srcBlendFactor, this._dstBlendFactor, gfx.BLEND_FUNC_ADD, this._srcBlendFactor, this._dstBlendFactor); + false; + } + }); + module.exports = cc.BlendFunc = BlendFunc; + }), { + "../../renderer/gfx": 372, + "../components/CCRenderComponent": 160, + "../platform/CCMacro": 244 + }], + 319: [(function (require, module, exports) { + "use strict"; + var Base64Values = require("./misc").BASE64_VALUES; + var HexChars = "0123456789abcdef".split(""); + var _t = ["", "", "", ""]; + var UuidTemplate = _t.concat(_t, "-", _t, "-", _t, "-", _t, "-", _t, _t, _t); + var Indices = UuidTemplate.map((function (x, i) { + return "-" === x ? NaN : i; + })).filter(isFinite); + module.exports = function (base64) { + if (22 !== base64.length) return base64; + UuidTemplate[0] = base64[0]; + UuidTemplate[1] = base64[1]; + for (var i = 2, j = 2; i < 22; i += 2) { + var lhs = Base64Values[base64.charCodeAt(i)]; + var rhs = Base64Values[base64.charCodeAt(i + 1)]; + UuidTemplate[Indices[j++]] = HexChars[lhs >> 2]; + UuidTemplate[Indices[j++]] = HexChars[(3 & lhs) << 2 | rhs >> 4]; + UuidTemplate[Indices[j++]] = HexChars[15 & rhs]; + } + return UuidTemplate.join(""); + }; + false; + }), { + "./misc": 324 + }], + 320: [(function (require, module, exports) { + "use strict"; + cc.find = module.exports = function (path, referenceNode) { + if (null == path) { + cc.errorID(3814); + return null; + } + if (referenceNode) false; else { + var scene = cc.director.getScene(); + if (!scene) { + false; + return null; + } + false; + referenceNode = scene; + } + var match = referenceNode; + var startIndex = "/" !== path[0] ? 0 : 1; + var nameList = path.split("/"); + for (var n = startIndex; n < nameList.length; n++) { + var name = nameList[n]; + var children = match._children; + match = null; + for (var t = 0, len = children.length; t < len; ++t) { + var subChild = children[t]; + if (subChild.name === name) { + match = subChild; + break; + } + } + if (!match) return null; + } + return match; + }; + }), {}], + 321: [(function (require, module, exports) { + "use strict"; + var _materialVariant = _interopRequireDefault(require("../assets/material/material-variant")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Material = require("../assets/material/CCMaterial"); + var GraySpriteState = cc.Class({ + properties: { + _normalMaterial: null, + normalMaterial: { + get: function get() { + return this._normalMaterial; + }, + set: function set(val) { + this._normalMaterial = val; + this._updateDisabledState && this._updateDisabledState(); + }, + type: Material, + tooltip: false, + animatable: false + }, + _grayMaterial: null, + grayMaterial: { + get: function get() { + return this._grayMaterial; + }, + set: function set(val) { + this._grayMaterial = val; + this._updateDisabledState && this._updateDisabledState(); + }, + type: Material, + tooltip: false, + animatable: false + } + }, + _switchGrayMaterial: function _switchGrayMaterial(useGrayMaterial, renderComp) { + var material; + if (useGrayMaterial) { + material = this._grayMaterial; + material || (material = Material.getBuiltinMaterial("2d-gray-sprite")); + material = this._grayMaterial = _materialVariant["default"].create(material, renderComp); + } else { + material = this._normalMaterial; + material || (material = Material.getBuiltinMaterial("2d-sprite", renderComp)); + material = this._normalMaterial = _materialVariant["default"].create(material, renderComp); + } + renderComp.setMaterial(0, material); + } + }); + module.exports = GraySpriteState; + }), { + "../assets/material/CCMaterial": 124, + "../assets/material/material-variant": 131 + }], + 322: [(function (require, module, exports) { + "use strict"; + var eventRegx = /^(click)(\s)*=|(param)(\s)*=/; + var imageAttrReg = /(\s)*src(\s)*=|(\s)*height(\s)*=|(\s)*width(\s)*=|(\s)*align(\s)*=|(\s)*offset(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/; + var HtmlTextParser = function HtmlTextParser() { + this._parsedObject = {}; + this._specialSymbolArray = []; + this._specialSymbolArray.push([/</g, "<"]); + this._specialSymbolArray.push([/>/g, ">"]); + this._specialSymbolArray.push([/&/g, "&"]); + this._specialSymbolArray.push([/"/g, '"']); + this._specialSymbolArray.push([/'/g, "'"]); + this._specialSymbolArray.push([/ /g, " "]); + }; + HtmlTextParser.prototype = { + constructor: HtmlTextParser, + parse: function parse(htmlString) { + this._resultObjectArray = []; + this._stack = []; + var startIndex = 0; + var length = htmlString.length; + while (startIndex < length) { + var tagEndIndex = htmlString.indexOf(">", startIndex); + var tagBeginIndex = -1; + if (tagEndIndex >= 0) { + tagBeginIndex = htmlString.lastIndexOf("<", tagEndIndex); + var noTagBegin = tagBeginIndex < startIndex - 1; + if (noTagBegin) { + tagBeginIndex = htmlString.indexOf("<", tagEndIndex + 1); + tagEndIndex = htmlString.indexOf(">", tagBeginIndex + 1); + } + } + if (tagBeginIndex < 0) { + this._stack.pop(); + this._processResult(htmlString.substring(startIndex)); + startIndex = length; + } else { + var newStr = htmlString.substring(startIndex, tagBeginIndex); + var tagStr = htmlString.substring(tagBeginIndex + 1, tagEndIndex); + "" === tagStr && (newStr = htmlString.substring(startIndex, tagEndIndex + 1)); + this._processResult(newStr); + -1 === tagEndIndex ? tagEndIndex = tagBeginIndex : "/" === htmlString.charAt(tagBeginIndex + 1) ? this._stack.pop() : this._addToStack(tagStr); + startIndex = tagEndIndex + 1; + } + } + return this._resultObjectArray; + }, + _attributeToObject: function _attributeToObject(attribute) { + attribute = attribute.trim(); + var obj = {}; + var header = attribute.match(/^(color|size)(\s)*=/); + var tagName; + var nextSpace; + var eventObj; + var eventHanlderString; + if (header) { + tagName = header[0]; + attribute = attribute.substring(tagName.length).trim(); + if ("" === attribute) return obj; + nextSpace = attribute.indexOf(" "); + switch (tagName[0]) { + case "c": + obj.color = nextSpace > -1 ? attribute.substring(0, nextSpace).trim() : attribute; + break; + + case "s": + obj.size = parseInt(attribute); + } + if (nextSpace > -1) { + eventHanlderString = attribute.substring(nextSpace + 1).trim(); + eventObj = this._processEventHandler(eventHanlderString); + obj.event = eventObj; + } + return obj; + } + header = attribute.match(/^(br(\s)*\/)/); + if (header && header[0].length > 0) { + tagName = header[0].trim(); + if (tagName.startsWith("br") && "/" === tagName[tagName.length - 1]) { + obj.isNewLine = true; + this._resultObjectArray.push({ + text: "", + style: { + newline: true + } + }); + return obj; + } + } + header = attribute.match(/^(img(\s)*src(\s)*=[^>]+\/)/); + if (header && header[0].length > 0) { + tagName = header[0].trim(); + if (tagName.startsWith("img") && "/" === tagName[tagName.length - 1]) { + header = attribute.match(imageAttrReg); + var tagValue; + var remainingArgument; + var isValidImageTag = false; + while (header) { + attribute = attribute.substring(attribute.indexOf(header[0])); + tagName = attribute.substr(0, header[0].length); + remainingArgument = attribute.substring(tagName.length).trim(); + nextSpace = remainingArgument.indexOf(" "); + tagValue = nextSpace > -1 ? remainingArgument.substr(0, nextSpace) : remainingArgument; + tagName = tagName.replace(/[^a-zA-Z]/g, "").trim(); + tagName = tagName.toLocaleLowerCase(); + attribute = remainingArgument.substring(nextSpace).trim(); + tagValue.endsWith("/") && (tagValue = tagValue.slice(0, -1)); + if ("src" === tagName) { + switch (tagValue.charCodeAt(0)) { + case 34: + case 39: + isValidImageTag = true; + tagValue = tagValue.slice(1, -1); + } + obj.isImage = true; + obj.src = tagValue; + } else if ("height" === tagName) obj.imageHeight = parseInt(tagValue); else if ("width" === tagName) obj.imageWidth = parseInt(tagValue); else if ("align" === tagName) { + switch (tagValue.charCodeAt(0)) { + case 34: + case 39: + tagValue = tagValue.slice(1, -1); + } + obj.imageAlign = tagValue.toLocaleLowerCase(); + } else "offset" === tagName ? obj.imageOffset = tagValue : "click" === tagName && (obj.event = this._processEventHandler(tagName + "=" + tagValue)); + obj.event && "param" === tagName && (obj.event.param = tagValue.replace(/^\"|\"$/g, "")); + header = attribute.match(imageAttrReg); + } + isValidImageTag && obj.isImage && this._resultObjectArray.push({ + text: "", + style: obj + }); + return {}; + } + } + header = attribute.match(/^(outline(\s)*[^>]*)/); + if (header) { + attribute = header[0].substring("outline".length).trim(); + var defaultOutlineObject = { + color: "#ffffff", + width: 1 + }; + if (attribute) { + var outlineAttrReg = /(\s)*color(\s)*=|(\s)*width(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/; + header = attribute.match(outlineAttrReg); + var tagValue; + while (header) { + attribute = attribute.substring(attribute.indexOf(header[0])); + tagName = attribute.substr(0, header[0].length); + remainingArgument = attribute.substring(tagName.length).trim(); + nextSpace = remainingArgument.indexOf(" "); + tagValue = nextSpace > -1 ? remainingArgument.substr(0, nextSpace) : remainingArgument; + tagName = tagName.replace(/[^a-zA-Z]/g, "").trim(); + tagName = tagName.toLocaleLowerCase(); + attribute = remainingArgument.substring(nextSpace).trim(); + "click" === tagName ? obj.event = this._processEventHandler(tagName + "=" + tagValue) : "color" === tagName ? defaultOutlineObject.color = tagValue : "width" === tagName && (defaultOutlineObject.width = parseInt(tagValue)); + obj.event && "param" === tagName && (obj.event.param = tagValue.replace(/^\"|\"$/g, "")); + header = attribute.match(outlineAttrReg); + } + } + obj.outline = defaultOutlineObject; + } + header = attribute.match(/^(on|u|b|i)(\s)*/); + if (header && header[0].length > 0) { + tagName = header[0]; + attribute = attribute.substring(tagName.length).trim(); + switch (tagName[0]) { + case "u": + obj.underline = true; + break; + + case "i": + obj.italic = true; + break; + + case "b": + obj.bold = true; + } + if ("" === attribute) return obj; + eventObj = this._processEventHandler(attribute); + obj.event = eventObj; + } + return obj; + }, + _processEventHandler: function _processEventHandler(eventString) { + var index = 0; + var obj = {}; + var eventNames = eventString.match(eventRegx); + var isValidTag = false; + while (eventNames) { + var eventName = eventNames[0]; + var eventValue = ""; + isValidTag = false; + eventString = eventString.substring(eventName.length).trim(); + if ('"' === eventString.charAt(0)) { + index = eventString.indexOf('"', 1); + if (index > -1) { + eventValue = eventString.substring(1, index).trim(); + isValidTag = true; + } + index++; + } else if ("'" === eventString.charAt(0)) { + index = eventString.indexOf("'", 1); + if (index > -1) { + eventValue = eventString.substring(1, index).trim(); + isValidTag = true; + } + index++; + } else { + var match = eventString.match(/(\S)+/); + eventValue = match ? match[0] : ""; + index = eventValue.length; + } + if (isValidTag) { + eventName = eventName.substring(0, eventName.length - 1).trim(); + obj[eventName] = eventValue; + } + eventString = eventString.substring(index).trim(); + eventNames = eventString.match(eventRegx); + } + return obj; + }, + _addToStack: function _addToStack(attribute) { + var obj = this._attributeToObject(attribute); + if (0 === this._stack.length) this._stack.push(obj); else { + if (obj.isNewLine || obj.isImage) return; + var previousTagObj = this._stack[this._stack.length - 1]; + for (var key in previousTagObj) obj[key] || (obj[key] = previousTagObj[key]); + this._stack.push(obj); + } + }, + _processResult: function _processResult(value) { + if ("" === value) return; + value = this._escapeSpecialSymbol(value); + this._stack.length > 0 ? this._resultObjectArray.push({ + text: value, + style: this._stack[this._stack.length - 1] + }) : this._resultObjectArray.push({ + text: value + }); + }, + _escapeSpecialSymbol: function _escapeSpecialSymbol(str) { + for (var i = 0; i < this._specialSymbolArray.length; ++i) { + var key = this._specialSymbolArray[i][0]; + var value = this._specialSymbolArray[i][1]; + str = str.replace(key, value); + } + return str; + } + }; + false; + module.exports = HtmlTextParser; + }), {}], + 323: [(function (require, module, exports) { + "use strict"; + require("./CCPath"); + true; + require("./profiler/CCProfiler"); + require("./find"); + require("./mutable-forward-iterator"); + }), { + "./CCPath": 314, + "./find": 320, + "./mutable-forward-iterator": 325, + "./profiler/CCProfiler": 328 + }], + 324: [(function (require, module, exports) { + "use strict"; + var js = require("../platform/js"); + var misc = {}; + misc.propertyDefine = function (ctor, sameNameGetSets, diffNameGetSets) { + function define(np, propName, getter, setter) { + var pd = Object.getOwnPropertyDescriptor(np, propName); + if (pd) { + pd.get && (np[getter] = pd.get); + pd.set && setter && (np[setter] = pd.set); + } else { + var getterFunc = np[getter]; + var clsName; + false; + js.getset(np, propName, getterFunc, np[setter]); + } + } + var propName, np = ctor.prototype; + for (var i = 0; i < sameNameGetSets.length; i++) { + propName = sameNameGetSets[i]; + var suffix = propName[0].toUpperCase() + propName.slice(1); + define(np, propName, "get" + suffix, "set" + suffix); + } + for (propName in diffNameGetSets) { + var getset = diffNameGetSets[propName]; + define(np, propName, getset[0], getset[1]); + } + }; + misc.NextPOT = function (x) { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + }; + false; + misc.BUILTIN_CLASSID_RE = /^(?:cc|dragonBones|sp|ccsg)\..+/; + var BASE64_KEYS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var BASE64_VALUES = new Array(123); + for (var i = 0; i < 123; ++i) BASE64_VALUES[i] = 64; + for (var _i = 0; _i < 64; ++_i) BASE64_VALUES[BASE64_KEYS.charCodeAt(_i)] = _i; + misc.BASE64_VALUES = BASE64_VALUES; + misc.pushToMap = function (map, key, value, pushFront) { + var exists = map[key]; + if (exists) if (Array.isArray(exists)) if (pushFront) { + exists.push(exists[0]); + exists[0] = value; + } else exists.push(value); else map[key] = pushFront ? [value, exists] : [exists, value]; else map[key] = value; + }; + misc.clampf = function (value, min_inclusive, max_inclusive) { + if (min_inclusive > max_inclusive) { + var temp = min_inclusive; + min_inclusive = max_inclusive; + max_inclusive = temp; + } + return value < min_inclusive ? min_inclusive : value < max_inclusive ? value : max_inclusive; + }; + misc.clamp01 = function (value) { + return value < 0 ? 0 : value < 1 ? value : 1; + }; + misc.lerp = function (a, b, r) { + return a + (b - a) * r; + }; + misc.degreesToRadians = function (angle) { + return angle * cc.macro.RAD; + }; + misc.radiansToDegrees = function (angle) { + return angle * cc.macro.DEG; + }; + cc.misc = module.exports = misc; + }), { + "../platform/js": 260 + }], + 325: [(function (require, module, exports) { + "use strict"; + function MutableForwardIterator(array) { + this.i = 0; + this.array = array; + } + var proto = MutableForwardIterator.prototype; + proto.remove = function (value) { + var index = this.array.indexOf(value); + index >= 0 && this.removeAt(index); + }; + proto.removeAt = function (i) { + this.array.splice(i, 1); + i <= this.i && --this.i; + }; + proto.fastRemove = function (value) { + var index = this.array.indexOf(value); + index >= 0 && this.fastRemoveAt(index); + }; + proto.fastRemoveAt = function (i) { + var array = this.array; + array[i] = array[array.length - 1]; + --array.length; + i <= this.i && --this.i; + }; + proto.push = function (item) { + this.array.push(item); + }; + module.exports = MutableForwardIterator; + }), {}], + 326: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var Pool = (function () { + function Pool() { + this.enabled = false; + this.count = 0; + this.maxSize = 1024; + } + var _proto = Pool.prototype; + _proto.get = function get() { }; + _proto.put = function put() { }; + _proto.clear = function clear() { }; + return Pool; + })(); + exports["default"] = Pool; + cc.pool = {}; + Pool.register = function (name, pool) { + cc.pool[name] = pool; + }; + module.exports = exports["default"]; + }), {}], + 327: [(function (require, module, exports) { + "use strict"; + cc._PrefabInfo = cc.Class({ + name: "cc.PrefabInfo", + properties: { + root: null, + asset: null, + fileId: "", + sync: false + } + }); + module.exports = { + syncWithPrefab: function syncWithPrefab(node) { + var _prefab = node._prefab; + if (!_prefab.asset) { + var NodeUtils; + var PrefabUtils; + false; + cc.errorID(3701, node.name); + node._prefab = null; + return; + } + var _objFlags = node._objFlags; + var _parent = node._parent; + var _id = node._id; + var _name = node._name; + var _active = node._active; + var eulerAnglesX = node._eulerAngles.x; + var eulerAnglesY = node._eulerAngles.y; + var eulerAnglesZ = node._eulerAngles.z; + var _localZOrder = node._localZOrder; + var trs = node._trs; + var x = trs[0]; + var y = trs[1]; + var z = trs[2]; + cc.game._isCloning = true; + var prefabRoot; + true; + _prefab.asset._doInstantiate(node); + cc.game._isCloning = false; + node._objFlags = _objFlags; + node._parent = _parent; + node._id = _id; + node._prefab = _prefab; + node._name = _name; + node._active = _active; + node._localZOrder = _localZOrder; + trs = node._trs; + trs[0] = x; + trs[1] = y; + trs[2] = z; + node._eulerAngles.x = eulerAnglesX; + node._eulerAngles.y = eulerAnglesY; + node._eulerAngles.z = eulerAnglesZ; + } + }; + }), {}], + 328: [(function (require, module, exports) { + "use strict"; + var macro = require("../../platform/CCMacro"); + var PerfCounter = require("./perf-counter"); + var _showFPS = false; + var _fontSize = 15; + var _stats = null; + var _rootNode = null; + var _label = null; + function generateStats() { + if (_stats) return; + _stats = { + fps: { + desc: "Framerate (FPS)", + below: 30, + average: 500 + }, + draws: { + desc: "Draw Call" + }, + frame: { + desc: "Frame time (ms)", + min: 0, + max: 50, + average: 500 + }, + logic: { + desc: "Game Logic (ms)", + min: 0, + max: 50, + average: 500, + color: "#080" + }, + render: { + desc: "Renderer (ms)", + min: 0, + max: 50, + average: 500, + color: "#f90" + }, + mode: { + desc: cc.game.renderType === cc.game.RENDER_TYPE_WEBGL ? "WebGL" : "Canvas", + min: 1 + } + }; + var now = performance.now(); + for (var id in _stats) _stats[id]._counter = new PerfCounter(id, _stats[id], now); + } + function generateNode() { + if (_rootNode && _rootNode.isValid) return; + _rootNode = new cc.Node("PROFILER-NODE"); + _rootNode.x = _rootNode.y = 10; + _rootNode.groupIndex = cc.Node.BuiltinGroupIndex.DEBUG; + cc.Camera._setupDebugCamera(); + _rootNode.zIndex = macro.MAX_ZINDEX; + cc.game.addPersistRootNode(_rootNode); + var left = new cc.Node("LEFT-PANEL"); + left.anchorX = left.anchorY = 0; + var leftLabel = left.addComponent(cc.Label); + leftLabel.fontSize = _fontSize; + leftLabel.lineHeight = _fontSize; + left.parent = _rootNode; + var right = new cc.Node("RIGHT-PANEL"); + right.anchorX = 1; + right.anchorY = 0; + right.x = 200; + var rightLabel = right.addComponent(cc.Label); + rightLabel.horizontalAlign = cc.Label.HorizontalAlign.RIGHT; + rightLabel.fontSize = _fontSize; + rightLabel.lineHeight = _fontSize; + right.parent = _rootNode; + if (cc.sys.platform !== cc.sys.BAIDU_GAME_SUB && cc.sys.platform !== cc.sys.WECHAT_GAME_SUB) { + leftLabel.cacheMode = cc.Label.CacheMode.CHAR; + rightLabel.cacheMode = cc.Label.CacheMode.CHAR; + } + _label = { + left: leftLabel, + right: rightLabel + }; + } + function beforeUpdate() { + generateNode(); + var now = cc.director._lastUpdate; + _stats["frame"]._counter.start(now); + _stats["logic"]._counter.start(now); + } + function afterUpdate() { + var now = performance.now(); + cc.director.isPaused() ? _stats["frame"]._counter.start(now) : _stats["logic"]._counter.end(now); + _stats["render"]._counter.start(now); + } + function updateLabel(stat) { + var length = 20; + var desc = stat.desc; + var value = stat._counter.human() + ""; + stat.label.string = stat.desc + " " + stat._counter.human(); + } + function afterDraw() { + var now = performance.now(); + _stats["render"]._counter.end(now); + _stats["draws"]._counter.value = cc.renderer.drawCalls; + _stats["frame"]._counter.end(now); + _stats["fps"]._counter.frame(now); + var left = ""; + var right = ""; + for (var id in _stats) { + var stat = _stats[id]; + stat._counter.sample(now); + left += stat.desc + "\n"; + right += stat._counter.human() + "\n"; + } + if (_label) { + _label.left.string = left; + _label.right.string = right; + } + } + cc.profiler = module.exports = { + isShowingStats: function isShowingStats() { + return _showFPS; + }, + hideStats: function hideStats() { + if (_showFPS) { + _rootNode && (_rootNode.active = false); + cc.director.off(cc.Director.EVENT_BEFORE_UPDATE, beforeUpdate); + cc.director.off(cc.Director.EVENT_AFTER_UPDATE, afterUpdate); + cc.director.off(cc.Director.EVENT_AFTER_DRAW, afterDraw); + _showFPS = false; + } + }, + showStats: function showStats() { + if (!_showFPS) { + generateStats(); + _rootNode && (_rootNode.active = true); + cc.director.on(cc.Director.EVENT_BEFORE_UPDATE, beforeUpdate); + cc.director.on(cc.Director.EVENT_AFTER_UPDATE, afterUpdate); + cc.director.on(cc.Director.EVENT_AFTER_DRAW, afterDraw); + _showFPS = true; + } + } + }; + }), { + "../../platform/CCMacro": 244, + "./perf-counter": 330 + }], + 329: [(function (require, module, exports) { + "use strict"; + var Counter = cc.Class({ + name: "cc.Counter", + ctor: function ctor(id, opts, now) { + this._id = id; + this._opts = opts || {}; + this._value = 0; + this._total = 0; + this._averageValue = 0; + this._accumValue = 0; + this._accumSamples = 0; + this._accumStart = now; + }, + properties: { + value: { + get: function get() { + return this._value; + }, + set: function set(v) { + this._value = v; + } + } + }, + _average: function _average(v, now) { + if (this._opts.average) { + this._accumValue += v; + ++this._accumSamples; + var t = now; + if (t - this._accumStart >= this._opts.average) { + this._averageValue = this._accumValue / this._accumSamples; + this._accumValue = 0; + this._accumStart = t; + this._accumSamples = 0; + } + } + }, + sample: function sample(now) { + this._average(this._value, now); + }, + human: function human() { + var v = this._opts.average ? this._averageValue : this._value; + return Math.round(100 * v) / 100; + }, + alarm: function alarm() { + return this._opts.below && this._value < this._opts.below || this._opts.over && this._value > this._opts.over; + } + }); + module.exports = Counter; + }), {}], + 330: [(function (require, module, exports) { + "use strict"; + var Counter = require("./counter"); + var PerfCounter = cc.Class({ + name: "cc.PerfCounter", + extends: Counter, + ctor: function ctor(id, opts, now) { + this._time = now; + }, + start: function start(now) { + this._time = now; + }, + end: function end(now) { + this._value = now - this._time; + this._average(this._value); + }, + tick: function tick() { + this.end(); + this.start(); + }, + frame: function frame(now) { + var t = now; + var e = t - this._time; + this._total++; + var avg = this._opts.average || 1e3; + if (e > avg) { + this._value = 1e3 * this._total / e; + this._total = 0; + this._time = t; + this._average(this._value); + } + } + }); + module.exports = PerfCounter; + }), { + "./counter": 329 + }], + 331: [(function (require, module, exports) { + "use strict"; + var _js = _interopRequireDefault(require("../platform/js")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _BASELINE_RATIO = .26; + var _BASELINE_OFFSET = 0; + false; + var MAX_CACHE_SIZE = 100; + var pool = new _js["default"].Pool(2); + pool.get = function () { + var node = this._get() || { + key: null, + value: null, + prev: null, + next: null + }; + return node; + }; + function LRUCache(size) { + this.count = 0; + this.limit = size; + this.datas = {}; + this.head = null; + this.tail = null; + } + LRUCache.prototype.moveToHead = function (node) { + node.next = this.head; + node.prev = null; + null !== this.head && (this.head.prev = node); + this.head = node; + null === this.tail && (this.tail = node); + this.count++; + this.datas[node.key] = node; + }; + LRUCache.prototype.put = function (key, value) { + var node = pool.get(); + node.key = key; + node.value = value; + if (this.count >= this.limit) { + var discard = this.tail; + delete this.datas[discard.key]; + this.count--; + this.tail = discard.prev; + this.tail.next = null; + discard.prev = null; + discard.next = null; + pool.put(discard); + } + this.moveToHead(node); + }; + LRUCache.prototype.remove = function (node) { + null !== node.prev ? node.prev.next = node.next : this.head = node.next; + null !== node.next ? node.next.prev = node.prev : this.tail = node.prev; + delete this.datas[node.key]; + this.count--; + }; + LRUCache.prototype.get = function (key) { + var node = this.datas[key]; + if (node) { + this.remove(node); + this.moveToHead(node); + return node.value; + } + return null; + }; + LRUCache.prototype.clear = function () { + this.count = 0; + this.datas = {}; + this.head = null; + this.tail = null; + }; + LRUCache.prototype.has = function (key) { + return !!this.datas[key]; + }; + LRUCache.prototype["delete"] = function (key) { + var node = this.datas[key]; + this.remove(node); + }; + var measureCache = new LRUCache(MAX_CACHE_SIZE); + var textUtils = { + BASELINE_RATIO: _BASELINE_RATIO, + MIDDLE_RATIO: (_BASELINE_RATIO + 1) / 2 - _BASELINE_RATIO, + BASELINE_OFFSET: _BASELINE_OFFSET, + label_wordRex: /([a-zA-Z0-9\xc4\xd6\xdc\xe4\xf6\xfc\xdf\xe9\xe8\xe7\xe0\xf9\xea\xe2\xee\xf4\xfb\u0430-\u044f\u0410-\u042f\u0401\u0451]+|\S)/, + label_symbolRex: /^[!,.:;'}\]%\?>\u3001\u2018\u201c\u300b\uff1f\u3002\uff0c\uff01]/, + label_lastWordRex: /([a-zA-Z0-9\xc4\xd6\xdc\xe4\xf6\xfc\xdf\xe9\xe8\xe7\xe0\xf9\xea\xe2\xee\xf4\xfb\u0430\xed\xec\xcd\xcc\xef\xc1\xc0\xe1\xe0\xc9\xc8\xd2\xd3\xf2\xf3\u0150\u0151\xd9\xda\u0170\xfa\u0171\xf1\xd1\xe6\xc6\u0153\u0152\xc3\xc2\xe3\xd4\xf5\u011b\u0161\u010d\u0159\u017e\xfd\xe1\xed\xe9\xf3\xfa\u016f\u0165\u010f\u0148\u011a\u0160\u010c\u0158\u017d\xc1\xcd\xc9\xd3\xda\u0164\u017c\u017a\u015b\xf3\u0144\u0142\u0119\u0107\u0105\u017b\u0179\u015a\xd3\u0143\u0141\u0118\u0106\u0104-\u044f\u0410-\u042f\u0401\u0451]+|\S)$/, + label_lastEnglish: /[a-zA-Z0-9\xc4\xd6\xdc\xe4\xf6\xfc\xdf\xe9\xe8\xe7\xe0\xf9\xea\xe2\xee\xf4\xfb\u0430\xed\xec\xcd\xcc\xef\xc1\xc0\xe1\xe0\xc9\xc8\xd2\xd3\xf2\xf3\u0150\u0151\xd9\xda\u0170\xfa\u0171\xf1\xd1\xe6\xc6\u0153\u0152\xc3\xc2\xe3\xd4\xf5\u011b\u0161\u010d\u0159\u017e\xfd\xe1\xed\xe9\xf3\xfa\u016f\u0165\u010f\u0148\u011a\u0160\u010c\u0158\u017d\xc1\xcd\xc9\xd3\xda\u0164\u017c\u017a\u015b\xf3\u0144\u0142\u0119\u0107\u0105\u017b\u0179\u015a\xd3\u0143\u0141\u0118\u0106\u0104-\u044f\u0410-\u042f\u0401\u0451]+$/, + label_firstEnglish: /^[a-zA-Z0-9\xc4\xd6\xdc\xe4\xf6\xfc\xdf\xe9\xe8\xe7\xe0\xf9\xea\xe2\xee\xf4\xfb\u0430\xed\xec\xcd\xcc\xef\xc1\xc0\xe1\xe0\xc9\xc8\xd2\xd3\xf2\xf3\u0150\u0151\xd9\xda\u0170\xfa\u0171\xf1\xd1\xe6\xc6\u0153\u0152\xc3\xc2\xe3\xd4\xf5\u011b\u0161\u010d\u0159\u017e\xfd\xe1\xed\xe9\xf3\xfa\u016f\u0165\u010f\u0148\u011a\u0160\u010c\u0158\u017d\xc1\xcd\xc9\xd3\xda\u0164\u017c\u017a\u015b\xf3\u0144\u0142\u0119\u0107\u0105\u017b\u0179\u015a\xd3\u0143\u0141\u0118\u0106\u0104-\u044f\u0410-\u042f\u0401\u0451]/, + highSurrogateRex: /[\uD800-\uDBFF]/, + lowSurrogateRex: /[\uDC00-\uDFFF]/, + label_wrapinspection: true, + __CHINESE_REG: /^[\u4E00-\u9FFF\u3400-\u4DFF]+$/, + __JAPANESE_REG: /[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/g, + __KOREAN_REG: /^[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uAC00-\uD7AF]|[\uD7B0-\uD7FF]+$/, + isUnicodeCJK: function isUnicodeCJK(ch) { + return this.__CHINESE_REG.test(ch) || this.__JAPANESE_REG.test(ch) || this.__KOREAN_REG.test(ch); + }, + isUnicodeSpace: function isUnicodeSpace(ch) { + ch = ch.charCodeAt(0); + return ch >= 9 && ch <= 13 || 32 === ch || 133 === ch || 160 === ch || 5760 === ch || ch >= 8192 && ch <= 8202 || 8232 === ch || 8233 === ch || 8239 === ch || 8287 === ch || 12288 === ch; + }, + safeMeasureText: function safeMeasureText(ctx, string, desc) { + var font = desc || ctx.font; + var key = font + "\ud83c\udfae" + string; + var cache = measureCache.get(key); + if (null !== cache) return cache; + var metric = ctx.measureText(string); + var width = metric && metric.width || 0; + measureCache.put(key, width); + return width; + }, + _safeSubstring: function _safeSubstring(targetString, startIndex, endIndex) { + var newStartIndex = startIndex, newEndIndex = endIndex; + var startChar = targetString[startIndex]; + this.lowSurrogateRex.test(startChar) && newStartIndex--; + if (void 0 !== endIndex) if (endIndex - 1 !== startIndex) { + var endChar = targetString[endIndex - 1]; + this.highSurrogateRex.test(endChar) && newEndIndex--; + } else this.highSurrogateRex.test(startChar) && newEndIndex++; + return targetString.substring(newStartIndex, newEndIndex); + }, + fragmentText: function fragmentText(stringToken, allWidth, maxWidth, measureText) { + var wrappedWords = []; + if (0 === stringToken.length || maxWidth < 0) { + wrappedWords.push(""); + return wrappedWords; + } + var text = stringToken; + while (allWidth > maxWidth && text.length > 1) { + var fuzzyLen = text.length * (maxWidth / allWidth) | 0; + var tmpText = this._safeSubstring(text, fuzzyLen); + var width = allWidth - measureText(tmpText); + var sLine = tmpText; + var pushNum = 0; + var checkWhile = 0; + var checkCount = 10; + while (width > maxWidth && checkWhile++ < checkCount) { + fuzzyLen *= maxWidth / width; + fuzzyLen |= 0; + tmpText = this._safeSubstring(text, fuzzyLen); + width = allWidth - measureText(tmpText); + } + checkWhile = 0; + while (width <= maxWidth && checkWhile++ < checkCount) { + if (tmpText) { + var exec = this.label_wordRex.exec(tmpText); + pushNum = exec ? exec[0].length : 1; + sLine = tmpText; + } + fuzzyLen += pushNum; + tmpText = this._safeSubstring(text, fuzzyLen); + width = allWidth - measureText(tmpText); + } + fuzzyLen -= pushNum; + if (0 === fuzzyLen) { + fuzzyLen = 1; + sLine = this._safeSubstring(text, 1); + } else if (1 === fuzzyLen && this.highSurrogateRex.test(text[0])) { + fuzzyLen = 2; + sLine = this._safeSubstring(text, 2); + } + var sText = this._safeSubstring(text, 0, fuzzyLen), result; + if (this.label_wrapinspection && this.label_symbolRex.test(sLine || tmpText)) { + result = this.label_lastWordRex.exec(sText); + fuzzyLen -= result ? result[0].length : 0; + 0 === fuzzyLen && (fuzzyLen = 1); + sLine = this._safeSubstring(text, fuzzyLen); + sText = this._safeSubstring(text, 0, fuzzyLen); + } + if (this.label_firstEnglish.test(sLine)) { + result = this.label_lastEnglish.exec(sText); + if (result && sText !== result[0]) { + fuzzyLen -= result[0].length; + sLine = this._safeSubstring(text, fuzzyLen); + sText = this._safeSubstring(text, 0, fuzzyLen); + } + } + if (0 === wrappedWords.length) wrappedWords.push(sText); else { + sText = sText.trimLeft(); + sText.length > 0 && wrappedWords.push(sText); + } + text = sLine || tmpText; + allWidth = measureText(text); + } + if (0 === wrappedWords.length) wrappedWords.push(text); else { + text = text.trimLeft(); + text.length > 0 && wrappedWords.push(text); + } + return wrappedWords; + } + }; + cc.textUtils = module.exports = textUtils; + }), { + "../platform/js": 260 + }], + 332: [(function (require, module, exports) { + "use strict"; + var Texture2D = require("../assets/CCTexture2D"); + var textureUtil = { + loadImage: function loadImage(url, cb, target) { + cc.assertID(url, 3103); + var tex = cc.assetManager.assets.get(url); + if (tex) { + if (tex.loaded) { + cb && cb.call(target, null, tex); + return tex; + } + tex.once("load", (function () { + cb && cb.call(target, null, tex); + }), target); + return tex; + } + cc.assetManager.loadRemote(url, (function (err, texture) { + cb && cb.call(target, err, texture); + })); + }, + cacheImage: function cacheImage(url, image) { + if (url && image) { + var tex = new Texture2D(); + tex.initWithElement(image); + cc.assetManager.assets.add(url, tex); + return tex; + } + }, + postLoadTexture: function postLoadTexture(texture, callback) { + if (texture.loaded) { + callback && callback(); + return; + } + if (!texture.nativeUrl) { + callback && callback(); + return; + } + cc.assetManager.postLoadNative(texture, callback); + } + }; + module.exports = textureUtil; + }), { + "../assets/CCTexture2D": 121 + }], + 333: [(function (require, module, exports) { + "use strict"; + var NodeUnit = require("./node-unit"); + var NodeMemPool = require("./node-mem-pool"); + module.exports = { + NodeMemPool: new NodeMemPool(NodeUnit) + }; + }), { + "./node-mem-pool": 335, + "./node-unit": 336 + }], + 334: [(function (require, module, exports) { + "use strict"; + var MemPool = function MemPool(unitClass) { + this._unitClass = unitClass; + this._pool = []; + this._findOrder = []; + false; + }; + var proto = MemPool.prototype; + proto._initNative = function () { + this._nativeMemPool = new renderer.MemPool(); + }; + proto._buildUnit = function (unitID) { + var unit = new this._unitClass(unitID, this); + false; + return unit; + }; + proto._destroyUnit = function (unitID) { + this._pool[unitID] = null; + for (var idx = 0, n = this._findOrder.length; idx < n; idx++) { + var unit = this._findOrder[idx]; + if (unit && unit.unitID == unitID) { + this._findOrder.splice(idx, 1); + break; + } + } + false; + }; + proto._findUnitID = function () { + var unitID = 0; + var pool = this._pool; + while (pool[unitID]) unitID++; + return unitID; + }; + proto.pop = function () { + var findUnit = null; + var idx = 0; + var findOrder = this._findOrder; + var pool = this._pool; + for (var n = findOrder.length; idx < n; idx++) { + var unit = findOrder[idx]; + if (unit && unit.hasSpace()) { + findUnit = unit; + break; + } + } + if (!findUnit) { + var unitID = this._findUnitID(); + findUnit = this._buildUnit(unitID); + pool[unitID] = findUnit; + findOrder.push(findUnit); + idx = findOrder.length - 1; + } + var firstUnit = findOrder[0]; + if (firstUnit !== findUnit) { + findOrder[0] = findUnit; + findOrder[idx] = firstUnit; + } + return findUnit.pop(); + }; + proto.push = function (info) { + var unit = this._pool[info.unitID]; + unit.push(info.index); + this._findOrder.length > 1 && unit.isAllFree() && this._destroyUnit(info.unitID); + return unit; + }; + module.exports = MemPool; + }), {}], + 335: [(function (require, module, exports) { + "use strict"; + var MemPool = require("./mem-pool"); + var NodeMemPool = function NodeMemPool(unitClass) { + MemPool.call(this, unitClass); + }; + (function () { + var Super = function Super() { }; + Super.prototype = MemPool.prototype; + NodeMemPool.prototype = new Super(); + })(); + var proto = NodeMemPool.prototype; + proto._initNative = function () { + this._nativeMemPool = new renderer.NodeMemPool(); + }; + proto._destroyUnit = function (unitID) { + MemPool.prototype._destroyUnit.call(this, unitID); + false; + }; + module.exports = NodeMemPool; + }), { + "./mem-pool": 334 + }], + 336: [(function (require, module, exports) { + "use strict"; + var _utils = require("../../value-types/utils"); + var Uint32_Bytes = 4; + var Uint8_Bytes = 1; + var Dirty_Type = Uint32Array; + var Dirty_Members = 1; + var Dirty_Stride = Dirty_Members * Uint32_Bytes; + var TRS_Members = 10; + var TRS_Stride = TRS_Members * _utils.FLOAT_BYTES; + var LocalMatrix_Members = 16; + var LocalMatrix_Stride = LocalMatrix_Members * _utils.FLOAT_BYTES; + var WorldMatrix_Members = 16; + var WorldMatrix_Stride = WorldMatrix_Members * _utils.FLOAT_BYTES; + var Parent_Type = Uint32Array; + var Parent_Members = 2; + var Parent_Stride = Parent_Members * Uint32_Bytes; + var ZOrder_Type = Uint32Array; + var ZOrder_Members = 1; + var ZOrder_Stride = ZOrder_Members * Uint32_Bytes; + var CullingMask_Type = Int32Array; + var CullingMask_Members = 1; + var CullingMask_Stride = CullingMask_Members * Uint32_Bytes; + var Opacity_Type = Uint8Array; + var Opacity_Members = 1; + var Opacity_Stride = Opacity_Members * Uint8_Bytes; + var Is3D_Type = Uint8Array; + var Is3D_Members = 1; + var Is3D_Stride = Is3D_Members * Uint8_Bytes; + var Node_Type = Uint32Array; + var Node_Members = 2; + var Skew_Members = 2; + var Skew_Stride = Skew_Members * _utils.FLOAT_BYTES; + var UnitBase = require("./unit-base"); + var NodeUnit = function NodeUnit(unitID, memPool) { + UnitBase.call(this, unitID, memPool); + var contentNum = this._contentNum; + this.trsList = new _utils.FLOAT_ARRAY_TYPE(contentNum * TRS_Members); + this.localMatList = new _utils.FLOAT_ARRAY_TYPE(contentNum * LocalMatrix_Members); + this.worldMatList = new _utils.FLOAT_ARRAY_TYPE(contentNum * WorldMatrix_Members); + false; + for (var i = 0; i < contentNum; i++) { + var space = this._spacesData[i]; + space.trs = new _utils.FLOAT_ARRAY_TYPE(this.trsList.buffer, i * TRS_Stride, TRS_Members); + space.localMat = new _utils.FLOAT_ARRAY_TYPE(this.localMatList.buffer, i * LocalMatrix_Stride, LocalMatrix_Members); + space.worldMat = new _utils.FLOAT_ARRAY_TYPE(this.worldMatList.buffer, i * WorldMatrix_Stride, WorldMatrix_Members); + false; + } + }; + (function () { + var Super = function Super() { }; + Super.prototype = UnitBase.prototype; + NodeUnit.prototype = new Super(); + })(); + module.exports = NodeUnit; + }), { + "../../value-types/utils": 346, + "./unit-base": 337 + }], + 337: [(function (require, module, exports) { + "use strict"; + var POINTER_INVALID_FLAG = 65535; + var SPACE_FREE_FLAG = 0; + var SPACE_USE_FLAG = 1; + var POS_NEXT_FREE = 0; + var POS_FREE_FLAG = 1; + var UnitBase = function UnitBase(unitID, memPool, contentNum) { + contentNum = contentNum || 128; + this.unitID = unitID; + this._memPool = memPool; + this._data = new Uint16Array(2); + this._data[0] = 0; + this._data[1] = 0; + this._contentNum = contentNum; + this._signData = new Uint16Array(2 * this._contentNum); + this._spacesData = []; + for (var i = 0; i < contentNum; i++) { + var signIndex = 2 * i; + this._signData[signIndex + POS_NEXT_FREE] = i + 1; + this._signData[signIndex + POS_FREE_FLAG] = SPACE_FREE_FLAG; + this._spacesData[i] = { + index: i, + unitID: unitID + }; + } + this._signData[2 * (contentNum - 1)] = POINTER_INVALID_FLAG; + }; + var UnitBaseProto = UnitBase.prototype; + UnitBaseProto.hasSpace = function () { + return this._data[0] !== POINTER_INVALID_FLAG; + }; + UnitBaseProto.isAllFree = function () { + return 0 == this._data[1]; + }; + UnitBaseProto.pop = function () { + var headFreeIndex = this._data[0]; + if (headFreeIndex === POINTER_INVALID_FLAG) return null; + var index = headFreeIndex; + var signIndex = 2 * index; + var space = this._spacesData[index]; + this._signData[signIndex + POS_FREE_FLAG] = SPACE_USE_FLAG; + this._data[0] = this._signData[signIndex + POS_NEXT_FREE]; + this._data[1]++; + return space; + }; + UnitBaseProto.push = function (index) { + var signIndex = 2 * index; + this._signData[signIndex + POS_FREE_FLAG] = SPACE_FREE_FLAG; + this._signData[signIndex + POS_NEXT_FREE] = this._data[0]; + this._data[0] = index; + this._data[1]--; + }; + UnitBaseProto.dump = function () { + var spaceNum = 0; + var index = this._data[0]; + var freeStr = ""; + while (index != POINTER_INVALID_FLAG) { + spaceNum++; + freeStr += index + "->"; + index = this._signData[2 * index + POS_NEXT_FREE]; + } + var usingNum = 0; + var usingStr = ""; + var contentNum = this._contentNum; + for (var i = 0; i < contentNum; i++) { + var freeFlag = this._signData[2 * i + POS_FREE_FLAG]; + if (freeFlag == SPACE_USE_FLAG) { + usingNum++; + usingStr += i + "->"; + } + } + var totalNum = spaceNum + usingNum; + console.log("unitID:", this.unitID, "spaceNum:", spaceNum, "calc using num:", usingNum, "store using num:", this._data[1], "calc total num:", totalNum, "actually total num:", this._contentNum); + console.log("free info:", freeStr); + console.log("using info:", usingStr); + usingNum != this._data[1] && cc.error("using num error", "calc using num:", usingNum, "store using num:", this._data[1]); + spaceNum + usingNum != this._contentNum && cc.error("total num error", "calc total num:", totalNum, "actually total num:", this._contentNum); + }; + module.exports = UnitBase; + }), {}], + 338: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _misc = _interopRequireDefault(require("../utils/misc")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Color = (function (_ValueType) { + _inheritsLoose(Color, _ValueType); + Color.copy = function copy(out, a) { + out.r = a.r; + out.g = a.g; + out.b = a.b; + out.a = a.a; + return out; + }; + Color.clone = function clone(a) { + return new Color(a.r, a.g, a.b, a.a); + }; + Color.set = function set(out, r, g, b, a) { + void 0 === r && (r = 255); + void 0 === g && (g = 255); + void 0 === b && (b = 255); + void 0 === a && (a = 255); + out.r = r; + out.g = g; + out.b = b; + out.a = a; + return out; + }; + Color.fromHex = function fromHex(out, hex) { + var r = (hex >> 24) / 255; + var g = (hex >> 16 & 255) / 255; + var b = (hex >> 8 & 255) / 255; + var a = (255 & hex) / 255; + out.r = r; + out.g = g; + out.b = b; + out.a = a; + return out; + }; + Color.fromHEX = function fromHEX(out, hexString) { + hexString = 0 === hexString.indexOf("#") ? hexString.substring(1) : hexString; + out.r = parseInt(hexString.substr(0, 2), 16) || 0; + out.g = parseInt(hexString.substr(2, 2), 16) || 0; + out.b = parseInt(hexString.substr(4, 2), 16) || 0; + out.a = parseInt(hexString.substr(6, 2), 16) || 255; + out._val = (out.a << 24 >>> 0) + (out.b << 16) + (out.g << 8) + out.r; + return out; + }; + Color.add = function add(out, a, b) { + out.r = a.r + b.r; + out.g = a.g + b.g; + out.b = a.b + b.b; + out.a = a.a + b.a; + return out; + }; + Color.subtract = function subtract(out, a, b) { + out.r = a.r - b.r; + out.g = a.g - b.g; + out.b = a.b - b.b; + out.a = a.a - b.a; + return out; + }; + Color.multiply = function multiply(out, a, b) { + out.r = a.r * b.r; + out.g = a.g * b.g; + out.b = a.b * b.b; + out.a = a.a * b.a; + return out; + }; + Color.divide = function divide(out, a, b) { + out.r = a.r / b.r; + out.g = a.g / b.g; + out.b = a.b / b.b; + out.a = a.a / b.a; + return out; + }; + Color.scale = function scale(out, a, b) { + out.r = a.r * b; + out.g = a.g * b; + out.b = a.b * b; + out.a = a.a * b; + return out; + }; + Color.lerp = function lerp(out, a, b, t) { + var ar = a.r, ag = a.g, ab = a.b, aa = a.a; + out.r = ar + t * (b.r - ar); + out.g = ag + t * (b.g - ag); + out.b = ab + t * (b.b - ab); + out.a = aa + t * (b.a - aa); + return out; + }; + Color.toArray = function toArray(out, a, ofs) { + void 0 === ofs && (ofs = 0); + var scale = a instanceof Color || a.a > 1 ? 1 / 255 : 1; + out[ofs + 0] = a.r * scale; + out[ofs + 1] = a.g * scale; + out[ofs + 2] = a.b * scale; + out[ofs + 3] = a.a * scale; + return out; + }; + Color.fromArray = function fromArray(arr, out, ofs) { + void 0 === ofs && (ofs = 0); + out.r = 255 * arr[ofs + 0]; + out.g = 255 * arr[ofs + 1]; + out.b = 255 * arr[ofs + 2]; + out.a = 255 * arr[ofs + 3]; + return out; + }; + Color.premultiplyAlpha = function premultiplyAlpha(out, color) { + var alpha = color.a / 255; + out.r = color.r * alpha; + out.g = color.g * alpha; + out.b = color.b * alpha; + out._fastSetA(color.a); + return out; + }; + _createClass(Color, null, [{ + key: "WHITE", + get: function get() { + return new Color(255, 255, 255, 255); + } + }, { + key: "BLACK", + get: function get() { + return new Color(0, 0, 0, 255); + } + }, { + key: "TRANSPARENT", + get: function get() { + return new Color(0, 0, 0, 0); + } + }, { + key: "GRAY", + get: function get() { + return new Color(127.5, 127.5, 127.5); + } + }, { + key: "RED", + get: function get() { + return new Color(255, 0, 0); + } + }, { + key: "GREEN", + get: function get() { + return new Color(0, 255, 0); + } + }, { + key: "BLUE", + get: function get() { + return new Color(0, 0, 255); + } + }, { + key: "YELLOW", + get: function get() { + return new Color(255, 235, 4); + } + }, { + key: "ORANGE", + get: function get() { + return new Color(255, 127, 0); + } + }, { + key: "CYAN", + get: function get() { + return new Color(0, 255, 255); + } + }, { + key: "MAGENTA", + get: function get() { + return new Color(255, 0, 255); + } + }]); + function Color(r, g, b, a) { + var _this; + void 0 === r && (r = 0); + void 0 === g && (g = 0); + void 0 === b && (b = 0); + void 0 === a && (a = 255); + _this = _ValueType.call(this) || this; + _this._val = 0; + if ("object" === typeof r) { + g = r.g; + b = r.b; + a = r.a; + r = r.r; + } + _this._val = (a << 24 >>> 0) + (b << 16) + (g << 8) + (0 | r); + return _this; + } + var _proto = Color.prototype; + _proto.clone = function clone() { + var ret = new Color(); + ret._val = this._val; + return ret; + }; + _proto.equals = function equals(other) { + return other && this._val === other._val; + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Color(); + var r = this.r; + var g = this.g; + var b = this.b; + var a = this.a; + out.r = r + (to.r - r) * ratio; + out.g = g + (to.g - g) * ratio; + out.b = b + (to.b - b) * ratio; + out.a = a + (to.a - a) * ratio; + return out; + }; + _proto.toString = function toString() { + return "rgba(" + this.r.toFixed() + ", " + this.g.toFixed() + ", " + this.b.toFixed() + ", " + this.a.toFixed() + ")"; + }; + _proto.getR = function getR() { + return 255 & this._val; + }; + _proto.setR = function setR(red) { + red = ~~_misc["default"].clampf(red, 0, 255); + this._val = (4294967040 & this._val | red) >>> 0; + return this; + }; + _proto.getG = function getG() { + return (65280 & this._val) >> 8; + }; + _proto.setG = function setG(green) { + green = ~~_misc["default"].clampf(green, 0, 255); + this._val = (4294902015 & this._val | green << 8) >>> 0; + return this; + }; + _proto.getB = function getB() { + return (16711680 & this._val) >> 16; + }; + _proto.setB = function setB(blue) { + blue = ~~_misc["default"].clampf(blue, 0, 255); + this._val = (4278255615 & this._val | blue << 16) >>> 0; + return this; + }; + _proto.getA = function getA() { + return (4278190080 & this._val) >>> 24; + }; + _proto.setA = function setA(alpha) { + alpha = ~~_misc["default"].clampf(alpha, 0, 255); + this._val = (16777215 & this._val | alpha << 24) >>> 0; + return this; + }; + _proto.toCSS = function toCSS(opt) { + return opt && "rgba" !== opt ? "rgb" === opt ? "rgb(" + this.r + "," + this.g + "," + this.b + ")" : "#" + this.toHEX(opt) : "rgba(" + this.r + "," + this.g + "," + this.b + "," + (this.a / 255).toFixed(2) + ")"; + }; + _proto.fromHEX = function fromHEX(hexString) { + hexString = 0 === hexString.indexOf("#") ? hexString.substring(1) : hexString; + var r = parseInt(hexString.substr(0, 2), 16) || 0; + var g = parseInt(hexString.substr(2, 2), 16) || 0; + var b = parseInt(hexString.substr(4, 2), 16) || 0; + var a = parseInt(hexString.substr(6, 2), 16) || 255; + this._val = (a << 24 >>> 0) + (b << 16) + (g << 8) + r; + return this; + }; + _proto.toHEX = function toHEX(fmt) { + var prefix = "0"; + var hex = [(this.r < 16 ? prefix : "") + this.r.toString(16), (this.g < 16 ? prefix : "") + this.g.toString(16), (this.b < 16 ? prefix : "") + this.b.toString(16)]; + if ("#rgb" === fmt) { + hex[0] = hex[0][0]; + hex[1] = hex[1][0]; + hex[2] = hex[2][0]; + } else "#rrggbbaa" === fmt && hex.push((this.a < 16 ? prefix : "") + this.a.toString(16)); + return hex.join(""); + }; + _proto.toRGBValue = function toRGBValue() { + return 16777215 & this._val; + }; + _proto.fromHSV = function fromHSV(h, s, v) { + var r, g, b; + if (0 === s) r = g = b = v; else if (0 === v) r = g = b = 0; else { + 1 === h && (h = 0); + h *= 6; + var i = Math.floor(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - s * f); + var t = v * (1 - s * (1 - f)); + switch (i) { + case 0: + r = v; + g = t; + b = p; + break; + + case 1: + r = q; + g = v; + b = p; + break; + + case 2: + r = p; + g = v; + b = t; + break; + + case 3: + r = p; + g = q; + b = v; + break; + + case 4: + r = t; + g = p; + b = v; + break; + + case 5: + r = v; + g = p; + b = q; + } + } + r *= 255; + g *= 255; + b *= 255; + this._val = (this.a << 24 >>> 0) + (b << 16) + (g << 8) + (0 | r); + return this; + }; + _proto.toHSV = function toHSV() { + var r = this.r / 255; + var g = this.g / 255; + var b = this.b / 255; + var hsv = { + h: 0, + s: 0, + v: 0 + }; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var delta = 0; + hsv.v = max; + hsv.s = max ? (max - min) / max : 0; + if (hsv.s) { + delta = max - min; + hsv.h = r === max ? (g - b) / delta : g === max ? 2 + (b - r) / delta : 4 + (r - g) / delta; + hsv.h /= 6; + hsv.h < 0 && (hsv.h += 1); + } else hsv.h = 0; + return hsv; + }; + _proto.set = function set(color) { + if (color._val) this._val = color._val; else { + this.r = color.r; + this.g = color.g; + this.b = color.b; + this.a = color.a; + } + return this; + }; + _proto._fastSetA = function _fastSetA(alpha) { + this._val = (16777215 & this._val | alpha << 24) >>> 0; + }; + _proto.multiply = function multiply(other) { + var r = (255 & this._val) * other.r >> 8; + var g = (65280 & this._val) * other.g >> 8; + var b = (16711680 & this._val) * other.b >> 8; + var a = ((4278190080 & this._val) >>> 8) * other.a; + this._val = 4278190080 & a | 16711680 & b | 65280 & g | 255 & r; + return this; + }; + _createClass(Color, [{ + key: "r", + get: function get() { + return this.getR(); + }, + set: function set(v) { + this.setR(v); + } + }, { + key: "g", + get: function get() { + return this.getG(); + }, + set: function set(v) { + this.setG(v); + } + }, { + key: "b", + get: function get() { + return this.getB(); + }, + set: function set(v) { + this.setB(v); + } + }, { + key: "a", + get: function get() { + return this.getA(); + }, + set: function set(v) { + this.setA(v); + } + }]); + return Color; + })(_valueType["default"]); + exports["default"] = Color; + Color.div = Color.divide; + Color.sub = Color.subtract; + Color.mul = Color.multiply; + Color.WHITE_R = Color.WHITE; + Color.BLACK_R = Color.BLACK; + Color.TRANSPARENT_R = Color.TRANSPARENT; + Color.GRAY_R = Color.GRAY; + Color.RED_R = Color.RED; + Color.GREEN_R = Color.GREEN; + Color.BLUE_R = Color.BLUE; + Color.YELLOW_R = Color.YELLOW; + Color.ORANGE_R = Color.ORANGE; + Color.CYAN_R = Color.CYAN; + Color.MAGENTA_R = Color.MAGENTA; + _CCClass["default"].fastDefine("cc.Color", Color, { + r: 0, + g: 0, + b: 0, + a: 255 + }); + cc.Color = Color; + cc.color = function color(r, g, b, a) { + if ("string" === typeof r) { + var result = new Color(); + return result.fromHEX(r); + } + if ("object" === typeof r) return new Color(r.r, r.g, r.b, r.a); + return new Color(r, g, b, a); + }; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "../utils/misc": 324, + "./value-type": 347 + }], + 339: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + var _exportNames = { + Vec2: true, + Vec3: true, + Vec4: true, + Mat4: true, + Mat3: true, + Rect: true, + Size: true, + Color: true, + Quat: true, + Trs: true + }; + exports.Trs = exports.Quat = exports.Color = exports.Size = exports.Rect = exports.Mat3 = exports.Mat4 = exports.Vec4 = exports.Vec3 = exports.Vec2 = void 0; + var _vec = _interopRequireDefault(require("./vec2")); + exports.Vec2 = _vec["default"]; + var _vec2 = _interopRequireDefault(require("./vec3")); + exports.Vec3 = _vec2["default"]; + var _vec3 = _interopRequireDefault(require("./vec4")); + exports.Vec4 = _vec3["default"]; + var _mat = _interopRequireDefault(require("./mat4")); + exports.Mat4 = _mat["default"]; + var _mat2 = _interopRequireDefault(require("./mat3")); + exports.Mat3 = _mat2["default"]; + var _rect = _interopRequireDefault(require("./rect")); + exports.Rect = _rect["default"]; + var _size = _interopRequireDefault(require("./size")); + exports.Size = _size["default"]; + var _color = _interopRequireDefault(require("./color")); + exports.Color = _color["default"]; + var _quat = _interopRequireDefault(require("./quat")); + exports.Quat = _quat["default"]; + var _trs = _interopRequireDefault(require("./trs")); + exports.Trs = _trs["default"]; + var _utils = require("./utils"); + Object.keys(_utils).forEach((function (key) { + if ("default" === key || "__esModule" === key) return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _utils[key]) return; + exports[key] = _utils[key]; + })); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + cc.math = module.exports; + }), { + "./color": 338, + "./mat3": 340, + "./mat4": 341, + "./quat": 342, + "./rect": 343, + "./size": 344, + "./trs": 345, + "./utils": 346, + "./vec2": 348, + "./vec3": 349, + "./vec4": 350 + }], + 340: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _utils = require("../value-types/utils"); + var _vec = _interopRequireDefault(require("./vec3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Mat3 = (function () { + Mat3.create = function create(m00, m01, m02, m03, m04, m05, m06, m07, m08) { + void 0 === m00 && (m00 = 1); + void 0 === m01 && (m01 = 0); + void 0 === m02 && (m02 = 0); + void 0 === m03 && (m03 = 0); + void 0 === m04 && (m04 = 1); + void 0 === m05 && (m05 = 0); + void 0 === m06 && (m06 = 0); + void 0 === m07 && (m07 = 0); + void 0 === m08 && (m08 = 1); + return new Mat3(m00, m01, m02, m03, m04, m05, m06, m07, m08); + }; + Mat3.clone = function clone(a) { + var am = a.m; + return new Mat3(am[0], am[1], am[2], am[3], am[4], am[5], am[6], am[7], am[8]); + }; + Mat3.copy = function copy(out, a) { + out.m.set(a.m); + return out; + }; + Mat3.set = function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) { + var outm = out.m; + outm[0] = m00; + outm[1] = m01; + outm[2] = m02; + outm[3] = m10; + outm[4] = m11; + outm[5] = m12; + outm[6] = m20; + outm[7] = m21; + outm[8] = m22; + return out; + }; + Mat3.identity = function identity(out) { + var outm = out.m; + outm[0] = 1; + outm[1] = 0; + outm[2] = 0; + outm[3] = 0; + outm[4] = 1; + outm[5] = 0; + outm[6] = 0; + outm[7] = 0; + outm[8] = 1; + return out; + }; + Mat3.transpose = function transpose(out, a) { + var am = a.m, outm = out.m; + if (out === a) { + var a01 = am[1], a02 = am[2], a12 = am[5]; + outm[1] = am[3]; + outm[2] = am[6]; + outm[3] = a01; + outm[5] = am[7]; + outm[6] = a02; + outm[7] = a12; + } else { + outm[0] = am[0]; + outm[1] = am[3]; + outm[2] = am[6]; + outm[3] = am[1]; + outm[4] = am[4]; + outm[5] = am[7]; + outm[6] = am[2]; + outm[7] = am[5]; + outm[8] = am[8]; + } + return out; + }; + Mat3.invert = function invert(out, a) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + var b01 = a22 * a11 - a12 * a21; + var b11 = -a22 * a10 + a12 * a20; + var b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (!det) return out; + det = 1 / det; + outm[0] = b01 * det; + outm[1] = (-a22 * a01 + a02 * a21) * det; + outm[2] = (a12 * a01 - a02 * a11) * det; + outm[3] = b11 * det; + outm[4] = (a22 * a00 - a02 * a20) * det; + outm[5] = (-a12 * a00 + a02 * a10) * det; + outm[6] = b21 * det; + outm[7] = (-a21 * a00 + a01 * a20) * det; + outm[8] = (a11 * a00 - a01 * a10) * det; + return out; + }; + Mat3.adjoint = function adjoint(out, a) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + outm[0] = a11 * a22 - a12 * a21; + outm[1] = a02 * a21 - a01 * a22; + outm[2] = a01 * a12 - a02 * a11; + outm[3] = a12 * a20 - a10 * a22; + outm[4] = a00 * a22 - a02 * a20; + outm[5] = a02 * a10 - a00 * a12; + outm[6] = a10 * a21 - a11 * a20; + outm[7] = a01 * a20 - a00 * a21; + outm[8] = a00 * a11 - a01 * a10; + return out; + }; + Mat3.determinant = function determinant(a) { + var am = a.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); + }; + Mat3.multiply = function multiply(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + var b00 = bm[0], b01 = bm[1], b02 = bm[2]; + var b10 = bm[3], b11 = bm[4], b12 = bm[5]; + var b20 = bm[6], b21 = bm[7], b22 = bm[8]; + outm[0] = b00 * a00 + b01 * a10 + b02 * a20; + outm[1] = b00 * a01 + b01 * a11 + b02 * a21; + outm[2] = b00 * a02 + b01 * a12 + b02 * a22; + outm[3] = b10 * a00 + b11 * a10 + b12 * a20; + outm[4] = b10 * a01 + b11 * a11 + b12 * a21; + outm[5] = b10 * a02 + b11 * a12 + b12 * a22; + outm[6] = b20 * a00 + b21 * a10 + b22 * a20; + outm[7] = b20 * a01 + b21 * a11 + b22 * a21; + outm[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; + }; + Mat3.multiplyMat4 = function multiplyMat4(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + var b00 = bm[0], b01 = bm[1], b02 = bm[2]; + var b10 = bm[4], b11 = bm[5], b12 = bm[6]; + var b20 = bm[8], b21 = bm[9], b22 = bm[10]; + outm[0] = b00 * a00 + b01 * a10 + b02 * a20; + outm[1] = b00 * a01 + b01 * a11 + b02 * a21; + outm[2] = b00 * a02 + b01 * a12 + b02 * a22; + outm[3] = b10 * a00 + b11 * a10 + b12 * a20; + outm[4] = b10 * a01 + b11 * a11 + b12 * a21; + outm[5] = b10 * a02 + b11 * a12 + b12 * a22; + outm[6] = b20 * a00 + b21 * a10 + b22 * a20; + outm[7] = b20 * a01 + b21 * a11 + b22 * a21; + outm[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; + }; + Mat3.translate = function translate(out, a, v) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + var x = v.x, y = v.y; + outm[0] = a00; + outm[1] = a01; + outm[2] = a02; + outm[3] = a10; + outm[4] = a11; + outm[5] = a12; + outm[6] = x * a00 + y * a10 + a20; + outm[7] = x * a01 + y * a11 + a21; + outm[8] = x * a02 + y * a12 + a22; + return out; + }; + Mat3.rotate = function rotate(out, a, rad) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a10 = am[3], a11 = am[4], a12 = am[5], a20 = am[6], a21 = am[7], a22 = am[8]; + var s = Math.sin(rad); + var c = Math.cos(rad); + outm[0] = c * a00 + s * a10; + outm[1] = c * a01 + s * a11; + outm[2] = c * a02 + s * a12; + outm[3] = c * a10 - s * a00; + outm[4] = c * a11 - s * a01; + outm[5] = c * a12 - s * a02; + outm[6] = a20; + outm[7] = a21; + outm[8] = a22; + return out; + }; + Mat3.scale = function scale(out, a, v) { + var x = v.x, y = v.y; + var am = a.m, outm = out.m; + outm[0] = x * am[0]; + outm[1] = x * am[1]; + outm[2] = x * am[2]; + outm[3] = y * am[3]; + outm[4] = y * am[4]; + outm[5] = y * am[5]; + outm[6] = am[6]; + outm[7] = am[7]; + outm[8] = am[8]; + return out; + }; + Mat3.fromMat4 = function fromMat4(out, a) { + var am = a.m, outm = out.m; + outm[0] = am[0]; + outm[1] = am[1]; + outm[2] = am[2]; + outm[3] = am[4]; + outm[4] = am[5]; + outm[5] = am[6]; + outm[6] = am[8]; + outm[7] = am[9]; + outm[8] = am[10]; + return out; + }; + Mat3.fromTranslation = function fromTranslation(out, v) { + var outm = out.m; + outm[0] = 1; + outm[1] = 0; + outm[2] = 0; + outm[3] = 0; + outm[4] = 1; + outm[5] = 0; + outm[6] = v.x; + outm[7] = v.y; + outm[8] = 1; + return out; + }; + Mat3.fromRotation = function fromRotation(out, rad) { + var s = Math.sin(rad), c = Math.cos(rad); + var outm = out.m; + outm[0] = c; + outm[1] = s; + outm[2] = 0; + outm[3] = -s; + outm[4] = c; + outm[5] = 0; + outm[6] = 0; + outm[7] = 0; + outm[8] = 1; + return out; + }; + Mat3.fromScaling = function fromScaling(out, v) { + var outm = out.m; + outm[0] = v.x; + outm[1] = 0; + outm[2] = 0; + outm[3] = 0; + outm[4] = v.y; + outm[5] = 0; + outm[6] = 0; + outm[7] = 0; + outm[8] = 1; + return out; + }; + Mat3.fromQuat = function fromQuat(out, q) { + var outm = out.m; + var x = q.x, y = q.y, z = q.z, w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + outm[0] = 1 - yy - zz; + outm[3] = yx - wz; + outm[6] = zx + wy; + outm[1] = yx + wz; + outm[4] = 1 - xx - zz; + outm[7] = zy - wx; + outm[2] = zx - wy; + outm[5] = zy + wx; + outm[8] = 1 - xx - yy; + return out; + }; + Mat3.fromViewUp = function fromViewUp(out, view, up) { + var _fromViewUpIIFE = (function () { + var default_up = new _vec["default"](0, 1, 0); + var x = new _vec["default"](); + var y = new _vec["default"](); + return function (out, view, up) { + if (_vec["default"].lengthSqr(view) < _utils.EPSILON * _utils.EPSILON) { + Mat3.identity(out); + return out; + } + up = up || default_up; + _vec["default"].normalize(x, _vec["default"].cross(x, up, view)); + if (_vec["default"].lengthSqr(x) < _utils.EPSILON * _utils.EPSILON) { + Mat3.identity(out); + return out; + } + _vec["default"].cross(y, view, x); + Mat3.set(out, x.x, x.y, x.z, y.x, y.y, y.z, view.x, view.y, view.z); + return out; + }; + })(); + return _fromViewUpIIFE(out, view, up); + }; + Mat3.normalFromMat4 = function normalFromMat4(out, a) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a03 = am[3], a10 = am[4], a11 = am[5], a12 = am[6], a13 = am[7], a20 = am[8], a21 = am[9], a22 = am[10], a23 = am[11], a30 = am[12], a31 = am[13], a32 = am[14], a33 = am[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) return out; + det = 1 / det; + outm[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + outm[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + outm[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + outm[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + outm[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + outm[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + outm[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + outm[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + outm[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + return out; + }; + Mat3.frob = function frob(a) { + var am = a.m; + return Math.sqrt(Math.pow(am[0], 2) + Math.pow(am[1], 2) + Math.pow(am[2], 2) + Math.pow(am[3], 2) + Math.pow(am[4], 2) + Math.pow(am[5], 2) + Math.pow(am[6], 2) + Math.pow(am[7], 2) + Math.pow(am[8], 2)); + }; + Mat3.add = function add(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + outm[0] = am[0] + bm[0]; + outm[1] = am[1] + bm[1]; + outm[2] = am[2] + bm[2]; + outm[3] = am[3] + bm[3]; + outm[4] = am[4] + bm[4]; + outm[5] = am[5] + bm[5]; + outm[6] = am[6] + bm[6]; + outm[7] = am[7] + bm[7]; + outm[8] = am[8] + bm[8]; + return out; + }; + Mat3.subtract = function subtract(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + outm[0] = am[0] - bm[0]; + outm[1] = am[1] - bm[1]; + outm[2] = am[2] - bm[2]; + outm[3] = am[3] - bm[3]; + outm[4] = am[4] - bm[4]; + outm[5] = am[5] - bm[5]; + outm[6] = am[6] - bm[6]; + outm[7] = am[7] - bm[7]; + outm[8] = am[8] - bm[8]; + return out; + }; + Mat3.multiplyScalar = function multiplyScalar(out, a, b) { + var am = a.m, outm = out.m; + outm[0] = am[0] * b; + outm[1] = am[1] * b; + outm[2] = am[2] * b; + outm[3] = am[3] * b; + outm[4] = am[4] * b; + outm[5] = am[5] * b; + outm[6] = am[6] * b; + outm[7] = am[7] * b; + outm[8] = am[8] * b; + return out; + }; + Mat3.multiplyScalarAndAdd = function multiplyScalarAndAdd(out, a, b, scale) { + var am = a.m, bm = b.m, outm = out.m; + outm[0] = am[0] + bm[0] * scale; + outm[1] = am[1] + bm[1] * scale; + outm[2] = am[2] + bm[2] * scale; + outm[3] = am[3] + bm[3] * scale; + outm[4] = am[4] + bm[4] * scale; + outm[5] = am[5] + bm[5] * scale; + outm[6] = am[6] + bm[6] * scale; + outm[7] = am[7] + bm[7] * scale; + outm[8] = am[8] + bm[8] * scale; + return out; + }; + Mat3.exactEquals = function exactEquals(a, b) { + var am = a.m, bm = b.m; + return am[0] === bm[0] && am[1] === bm[1] && am[2] === bm[2] && am[3] === bm[3] && am[4] === bm[4] && am[5] === bm[5] && am[6] === bm[6] && am[7] === bm[7] && am[8] === bm[8]; + }; + Mat3.equals = function equals(a, b) { + var am = a.m, bm = b.m; + var a0 = am[0], a1 = am[1], a2 = am[2], a3 = am[3], a4 = am[4], a5 = am[5], a6 = am[6], a7 = am[7], a8 = am[8]; + var b0 = bm[0], b1 = bm[1], b2 = bm[2], b3 = bm[3], b4 = bm[4], b5 = bm[5], b6 = bm[6], b7 = bm[7], b8 = bm[8]; + return Math.abs(a0 - b0) <= _utils.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _utils.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _utils.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _utils.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _utils.EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _utils.EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _utils.EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _utils.EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _utils.EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)); + }; + Mat3.toArray = function toArray(out, mat, ofs) { + void 0 === ofs && (ofs = 0); + var m = mat.m; + for (var i = 0; i < 9; i++) out[ofs + i] = m[i]; + return out; + }; + Mat3.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + var m = out.m; + for (var i = 0; i < 9; i++) m[i] = arr[ofs + i]; + return out; + }; + function Mat3(m00, m01, m02, m03, m04, m05, m06, m07, m08) { + void 0 === m00 && (m00 = 1); + void 0 === m01 && (m01 = 0); + void 0 === m02 && (m02 = 0); + void 0 === m03 && (m03 = 0); + void 0 === m04 && (m04 = 1); + void 0 === m05 && (m05 = 0); + void 0 === m06 && (m06 = 0); + void 0 === m07 && (m07 = 0); + void 0 === m08 && (m08 = 1); + this.m = void 0; + if (m00 instanceof _utils.FLOAT_ARRAY_TYPE) this.m = m00; else { + this.m = new _utils.FLOAT_ARRAY_TYPE(9); + var m = this.m; + m[0] = m00; + m[1] = m01; + m[2] = m02; + m[3] = m03; + m[4] = m04; + m[5] = m05; + m[6] = m06; + m[7] = m07; + m[8] = m08; + } + } + var _proto = Mat3.prototype; + _proto.toString = function toString() { + var am = this.m; + return "mat3(" + am[0] + ", " + am[1] + ", " + am[2] + ", " + am[3] + ", " + am[4] + ", " + am[5] + ", " + am[6] + ", " + am[7] + ", " + am[8] + ")"; + }; + return Mat3; + })(); + exports["default"] = Mat3; + Mat3.sub = Mat3.subtract; + Mat3.mul = Mat3.multiply; + Mat3.IDENTITY = Object.freeze(new Mat3()); + cc.Mat3 = Mat3; + module.exports = exports["default"]; + }), { + "../value-types/utils": 346, + "./vec3": 349 + }], + 341: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _vec = _interopRequireDefault(require("./vec3")); + var _quat = _interopRequireDefault(require("./quat")); + var _utils = require("./utils"); + var _mat = _interopRequireDefault(require("./mat3")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _a00 = 0; + var _a01 = 0; + var _a02 = 0; + var _a03 = 0; + var _a10 = 0; + var _a11 = 0; + var _a12 = 0; + var _a13 = 0; + var _a20 = 0; + var _a21 = 0; + var _a22 = 0; + var _a23 = 0; + var _a30 = 0; + var _a31 = 0; + var _a32 = 0; + var _a33 = 0; + var Mat4 = (function (_ValueType) { + _inheritsLoose(Mat4, _ValueType); + var _proto = Mat4.prototype; + _proto.mul = function mul(m, out) { + return Mat4.multiply(out || new Mat4(), this, m); + }; + _proto.mulScalar = function mulScalar(num, out) { + Mat4.multiplyScalar(out || new Mat4(), this, num); + }; + _proto.sub = function sub(m, out) { + Mat4.subtract(out || new Mat4(), this, m); + }; + Mat4.clone = function clone(a) { + var m = a.m; + return new Mat4(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); + }; + Mat4.copy = function copy(out, a) { + var m = out.m, am = a.m; + m[0] = am[0]; + m[1] = am[1]; + m[2] = am[2]; + m[3] = am[3]; + m[4] = am[4]; + m[5] = am[5]; + m[6] = am[6]; + m[7] = am[7]; + m[8] = am[8]; + m[9] = am[9]; + m[10] = am[10]; + m[11] = am[11]; + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + return out; + }; + Mat4.set = function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var m = out.m; + m[0] = m00; + m[1] = m01; + m[2] = m02; + m[3] = m03; + m[4] = m10; + m[5] = m11; + m[6] = m12; + m[7] = m13; + m[8] = m20; + m[9] = m21; + m[10] = m22; + m[11] = m23; + m[12] = m30; + m[13] = m31; + m[14] = m32; + m[15] = m33; + return out; + }; + Mat4.identity = function identity(out) { + var m = out.m; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = 1; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 1; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.transpose = function transpose(out, a) { + var m = out.m, am = a.m; + if (out === a) { + var a01 = am[1], a02 = am[2], a03 = am[3], a12 = am[6], a13 = am[7], a23 = am[11]; + m[1] = am[4]; + m[2] = am[8]; + m[3] = am[12]; + m[4] = a01; + m[6] = am[9]; + m[7] = am[13]; + m[8] = a02; + m[9] = a12; + m[11] = am[14]; + m[12] = a03; + m[13] = a13; + m[14] = a23; + } else { + m[0] = am[0]; + m[1] = am[4]; + m[2] = am[8]; + m[3] = am[12]; + m[4] = am[1]; + m[5] = am[5]; + m[6] = am[9]; + m[7] = am[13]; + m[8] = am[2]; + m[9] = am[6]; + m[10] = am[10]; + m[11] = am[14]; + m[12] = am[3]; + m[13] = am[7]; + m[14] = am[11]; + m[15] = am[15]; + } + return out; + }; + Mat4.invert = function invert(out, a) { + var am = a.m; + _a00 = am[0]; + _a01 = am[1]; + _a02 = am[2]; + _a03 = am[3]; + _a10 = am[4]; + _a11 = am[5]; + _a12 = am[6]; + _a13 = am[7]; + _a20 = am[8]; + _a21 = am[9]; + _a22 = am[10]; + _a23 = am[11]; + _a30 = am[12]; + _a31 = am[13]; + _a32 = am[14]; + _a33 = am[15]; + var b00 = _a00 * _a11 - _a01 * _a10; + var b01 = _a00 * _a12 - _a02 * _a10; + var b02 = _a00 * _a13 - _a03 * _a10; + var b03 = _a01 * _a12 - _a02 * _a11; + var b04 = _a01 * _a13 - _a03 * _a11; + var b05 = _a02 * _a13 - _a03 * _a12; + var b06 = _a20 * _a31 - _a21 * _a30; + var b07 = _a20 * _a32 - _a22 * _a30; + var b08 = _a20 * _a33 - _a23 * _a30; + var b09 = _a21 * _a32 - _a22 * _a31; + var b10 = _a21 * _a33 - _a23 * _a31; + var b11 = _a22 * _a33 - _a23 * _a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (0 === det) return null; + det = 1 / det; + var m = out.m; + m[0] = (_a11 * b11 - _a12 * b10 + _a13 * b09) * det; + m[1] = (_a02 * b10 - _a01 * b11 - _a03 * b09) * det; + m[2] = (_a31 * b05 - _a32 * b04 + _a33 * b03) * det; + m[3] = (_a22 * b04 - _a21 * b05 - _a23 * b03) * det; + m[4] = (_a12 * b08 - _a10 * b11 - _a13 * b07) * det; + m[5] = (_a00 * b11 - _a02 * b08 + _a03 * b07) * det; + m[6] = (_a32 * b02 - _a30 * b05 - _a33 * b01) * det; + m[7] = (_a20 * b05 - _a22 * b02 + _a23 * b01) * det; + m[8] = (_a10 * b10 - _a11 * b08 + _a13 * b06) * det; + m[9] = (_a01 * b08 - _a00 * b10 - _a03 * b06) * det; + m[10] = (_a30 * b04 - _a31 * b02 + _a33 * b00) * det; + m[11] = (_a21 * b02 - _a20 * b04 - _a23 * b00) * det; + m[12] = (_a11 * b07 - _a10 * b09 - _a12 * b06) * det; + m[13] = (_a00 * b09 - _a01 * b07 + _a02 * b06) * det; + m[14] = (_a31 * b01 - _a30 * b03 - _a32 * b00) * det; + m[15] = (_a20 * b03 - _a21 * b01 + _a22 * b00) * det; + return out; + }; + Mat4.determinant = function determinant(a) { + var m = a.m; + _a00 = m[0]; + _a01 = m[1]; + _a02 = m[2]; + _a03 = m[3]; + _a10 = m[4]; + _a11 = m[5]; + _a12 = m[6]; + _a13 = m[7]; + _a20 = m[8]; + _a21 = m[9]; + _a22 = m[10]; + _a23 = m[11]; + _a30 = m[12]; + _a31 = m[13]; + _a32 = m[14]; + _a33 = m[15]; + var b00 = _a00 * _a11 - _a01 * _a10; + var b01 = _a00 * _a12 - _a02 * _a10; + var b02 = _a00 * _a13 - _a03 * _a10; + var b03 = _a01 * _a12 - _a02 * _a11; + var b04 = _a01 * _a13 - _a03 * _a11; + var b05 = _a02 * _a13 - _a03 * _a12; + var b06 = _a20 * _a31 - _a21 * _a30; + var b07 = _a20 * _a32 - _a22 * _a30; + var b08 = _a20 * _a33 - _a23 * _a30; + var b09 = _a21 * _a32 - _a22 * _a31; + var b10 = _a21 * _a33 - _a23 * _a31; + var b11 = _a22 * _a33 - _a23 * _a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + }; + Mat4.multiply = function multiply(out, a, b) { + var m = out.m, am = a.m, bm = b.m; + _a00 = am[0]; + _a01 = am[1]; + _a02 = am[2]; + _a03 = am[3]; + _a10 = am[4]; + _a11 = am[5]; + _a12 = am[6]; + _a13 = am[7]; + _a20 = am[8]; + _a21 = am[9]; + _a22 = am[10]; + _a23 = am[11]; + _a30 = am[12]; + _a31 = am[13]; + _a32 = am[14]; + _a33 = am[15]; + var b0 = bm[0], b1 = bm[1], b2 = bm[2], b3 = bm[3]; + m[0] = b0 * _a00 + b1 * _a10 + b2 * _a20 + b3 * _a30; + m[1] = b0 * _a01 + b1 * _a11 + b2 * _a21 + b3 * _a31; + m[2] = b0 * _a02 + b1 * _a12 + b2 * _a22 + b3 * _a32; + m[3] = b0 * _a03 + b1 * _a13 + b2 * _a23 + b3 * _a33; + b0 = bm[4]; + b1 = bm[5]; + b2 = bm[6]; + b3 = bm[7]; + m[4] = b0 * _a00 + b1 * _a10 + b2 * _a20 + b3 * _a30; + m[5] = b0 * _a01 + b1 * _a11 + b2 * _a21 + b3 * _a31; + m[6] = b0 * _a02 + b1 * _a12 + b2 * _a22 + b3 * _a32; + m[7] = b0 * _a03 + b1 * _a13 + b2 * _a23 + b3 * _a33; + b0 = bm[8]; + b1 = bm[9]; + b2 = bm[10]; + b3 = bm[11]; + m[8] = b0 * _a00 + b1 * _a10 + b2 * _a20 + b3 * _a30; + m[9] = b0 * _a01 + b1 * _a11 + b2 * _a21 + b3 * _a31; + m[10] = b0 * _a02 + b1 * _a12 + b2 * _a22 + b3 * _a32; + m[11] = b0 * _a03 + b1 * _a13 + b2 * _a23 + b3 * _a33; + b0 = bm[12]; + b1 = bm[13]; + b2 = bm[14]; + b3 = bm[15]; + m[12] = b0 * _a00 + b1 * _a10 + b2 * _a20 + b3 * _a30; + m[13] = b0 * _a01 + b1 * _a11 + b2 * _a21 + b3 * _a31; + m[14] = b0 * _a02 + b1 * _a12 + b2 * _a22 + b3 * _a32; + m[15] = b0 * _a03 + b1 * _a13 + b2 * _a23 + b3 * _a33; + return out; + }; + Mat4.transform = function transform(out, a, v) { + var x = v.x, y = v.y, z = v.z; + var m = out.m, am = a.m; + if (a === out) { + m[12] = am[0] * x + am[4] * y + am[8] * z + am[12]; + m[13] = am[1] * x + am[5] * y + am[9] * z + am[13]; + m[14] = am[2] * x + am[6] * y + am[10] * z + am[14]; + m[15] = am[3] * x + am[7] * y + am[11] * z + am[15]; + } else { + _a00 = am[0]; + _a01 = am[1]; + _a02 = am[2]; + _a03 = am[3]; + _a10 = am[4]; + _a11 = am[5]; + _a12 = am[6]; + _a13 = am[7]; + _a20 = am[8]; + _a21 = am[9]; + _a22 = am[10]; + _a23 = am[11]; + _a30 = am[12]; + _a31 = am[13]; + _a32 = am[14]; + _a33 = am[15]; + m[0] = _a00; + m[1] = _a01; + m[2] = _a02; + m[3] = _a03; + m[4] = _a10; + m[5] = _a11; + m[6] = _a12; + m[7] = _a13; + m[8] = _a20; + m[9] = _a21; + m[10] = _a22; + m[11] = _a23; + m[12] = _a00 * x + _a10 * y + _a20 * z + am[12]; + m[13] = _a01 * x + _a11 * y + _a21 * z + am[13]; + m[14] = _a02 * x + _a12 * y + _a22 * z + am[14]; + m[15] = _a03 * x + _a13 * y + _a23 * z + am[15]; + } + return out; + }; + Mat4.translate = function translate(out, a, v) { + var m = out.m, am = a.m; + if (a === out) { + m[12] += v.x; + m[13] += v.y; + m[14] += v.z; + } else { + m[0] = am[0]; + m[1] = am[1]; + m[2] = am[2]; + m[3] = am[3]; + m[4] = am[4]; + m[5] = am[5]; + m[6] = am[6]; + m[7] = am[7]; + m[8] = am[8]; + m[9] = am[9]; + m[10] = am[10]; + m[11] = am[11]; + m[12] += v.x; + m[13] += v.y; + m[14] += v.z; + m[15] = am[15]; + } + return out; + }; + Mat4.scale = function scale(out, a, v) { + var x = v.x, y = v.y, z = v.z; + var m = out.m, am = a.m; + m[0] = am[0] * x; + m[1] = am[1] * x; + m[2] = am[2] * x; + m[3] = am[3] * x; + m[4] = am[4] * y; + m[5] = am[5] * y; + m[6] = am[6] * y; + m[7] = am[7] * y; + m[8] = am[8] * z; + m[9] = am[9] * z; + m[10] = am[10] * z; + m[11] = am[11] * z; + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + return out; + }; + Mat4.rotate = function rotate(out, a, rad, axis) { + var x = axis.x, y = axis.y, z = axis.z; + var len = Math.sqrt(x * x + y * y + z * z); + if (Math.abs(len) < _utils.EPSILON) return null; + len = 1 / len; + x *= len; + y *= len; + z *= len; + var s = Math.sin(rad); + var c = Math.cos(rad); + var t = 1 - c; + var am = a.m; + _a00 = am[0]; + _a01 = am[1]; + _a02 = am[2]; + _a03 = am[3]; + _a10 = am[4]; + _a11 = am[5]; + _a12 = am[6]; + _a13 = am[7]; + _a20 = am[8]; + _a21 = am[9]; + _a22 = am[10]; + _a23 = am[11]; + var b00 = x * x * t + c, b01 = y * x * t + z * s, b02 = z * x * t - y * s; + var b10 = x * y * t - z * s, b11 = y * y * t + c, b12 = z * y * t + x * s; + var b20 = x * z * t + y * s, b21 = y * z * t - x * s, b22 = z * z * t + c; + var m = out.m; + m[0] = _a00 * b00 + _a10 * b01 + _a20 * b02; + m[1] = _a01 * b00 + _a11 * b01 + _a21 * b02; + m[2] = _a02 * b00 + _a12 * b01 + _a22 * b02; + m[3] = _a03 * b00 + _a13 * b01 + _a23 * b02; + m[4] = _a00 * b10 + _a10 * b11 + _a20 * b12; + m[5] = _a01 * b10 + _a11 * b11 + _a21 * b12; + m[6] = _a02 * b10 + _a12 * b11 + _a22 * b12; + m[7] = _a03 * b10 + _a13 * b11 + _a23 * b12; + m[8] = _a00 * b20 + _a10 * b21 + _a20 * b22; + m[9] = _a01 * b20 + _a11 * b21 + _a21 * b22; + m[10] = _a02 * b20 + _a12 * b21 + _a22 * b22; + m[11] = _a03 * b20 + _a13 * b21 + _a23 * b22; + if (a !== out) { + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + } + return out; + }; + Mat4.rotateX = function rotateX(out, a, rad) { + var m = out.m, am = a.m; + var s = Math.sin(rad), c = Math.cos(rad), a10 = am[4], a11 = am[5], a12 = am[6], a13 = am[7], a20 = am[8], a21 = am[9], a22 = am[10], a23 = am[11]; + if (a !== out) { + m[0] = am[0]; + m[1] = am[1]; + m[2] = am[2]; + m[3] = am[3]; + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + } + m[4] = a10 * c + a20 * s; + m[5] = a11 * c + a21 * s; + m[6] = a12 * c + a22 * s; + m[7] = a13 * c + a23 * s; + m[8] = a20 * c - a10 * s; + m[9] = a21 * c - a11 * s; + m[10] = a22 * c - a12 * s; + m[11] = a23 * c - a13 * s; + return out; + }; + Mat4.rotateY = function rotateY(out, a, rad) { + var m = out.m, am = a.m; + var s = Math.sin(rad), c = Math.cos(rad), a00 = am[0], a01 = am[1], a02 = am[2], a03 = am[3], a20 = am[8], a21 = am[9], a22 = am[10], a23 = am[11]; + if (a !== out) { + m[4] = am[4]; + m[5] = am[5]; + m[6] = am[6]; + m[7] = am[7]; + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + } + m[0] = a00 * c - a20 * s; + m[1] = a01 * c - a21 * s; + m[2] = a02 * c - a22 * s; + m[3] = a03 * c - a23 * s; + m[8] = a00 * s + a20 * c; + m[9] = a01 * s + a21 * c; + m[10] = a02 * s + a22 * c; + m[11] = a03 * s + a23 * c; + return out; + }; + Mat4.rotateZ = function rotateZ(out, a, rad) { + var am = a.m; + var m = out.m; + var s = Math.sin(rad), c = Math.cos(rad), a00 = a.m[0], a01 = a.m[1], a02 = a.m[2], a03 = a.m[3], a10 = a.m[4], a11 = a.m[5], a12 = a.m[6], a13 = a.m[7]; + if (a !== out) { + m[8] = am[8]; + m[9] = am[9]; + m[10] = am[10]; + m[11] = am[11]; + m[12] = am[12]; + m[13] = am[13]; + m[14] = am[14]; + m[15] = am[15]; + } + m[0] = a00 * c + a10 * s; + m[1] = a01 * c + a11 * s; + m[2] = a02 * c + a12 * s; + m[3] = a03 * c + a13 * s; + m[4] = a10 * c - a00 * s; + m[5] = a11 * c - a01 * s; + m[6] = a12 * c - a02 * s; + m[7] = a13 * c - a03 * s; + return out; + }; + Mat4.fromTranslation = function fromTranslation(out, v) { + var m = out.m; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = 1; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 1; + m[11] = 0; + m[12] = v.x; + m[13] = v.y; + m[14] = v.z; + m[15] = 1; + return out; + }; + Mat4.fromScaling = function fromScaling(out, v) { + var m = out.m; + m[0] = v.x; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = v.y; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = v.z; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.fromRotation = function fromRotation(out, rad, axis) { + var x = axis.x, y = axis.y, z = axis.z; + var len = Math.sqrt(x * x + y * y + z * z); + if (Math.abs(len) < _utils.EPSILON) return null; + len = 1 / len; + x *= len; + y *= len; + z *= len; + var s = Math.sin(rad); + var c = Math.cos(rad); + var t = 1 - c; + var m = out.m; + m[0] = x * x * t + c; + m[1] = y * x * t + z * s; + m[2] = z * x * t - y * s; + m[3] = 0; + m[4] = x * y * t - z * s; + m[5] = y * y * t + c; + m[6] = z * y * t + x * s; + m[7] = 0; + m[8] = x * z * t + y * s; + m[9] = y * z * t - x * s; + m[10] = z * z * t + c; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.fromXRotation = function fromXRotation(out, rad) { + var s = Math.sin(rad), c = Math.cos(rad); + var m = out.m; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = c; + m[6] = s; + m[7] = 0; + m[8] = 0; + m[9] = -s; + m[10] = c; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.fromYRotation = function fromYRotation(out, rad) { + var s = Math.sin(rad), c = Math.cos(rad); + var m = out.m; + m[0] = c; + m[1] = 0; + m[2] = -s; + m[3] = 0; + m[4] = 0; + m[5] = 1; + m[6] = 0; + m[7] = 0; + m[8] = s; + m[9] = 0; + m[10] = c; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.fromZRotation = function fromZRotation(out, rad) { + var s = Math.sin(rad), c = Math.cos(rad); + var m = out.m; + m[0] = c; + m[1] = s; + m[2] = 0; + m[3] = 0; + m[4] = -s; + m[5] = c; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 1; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.fromRT = function fromRT(out, q, v) { + var x = q.x, y = q.y, z = q.z, w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var m = out.m; + m[0] = 1 - (yy + zz); + m[1] = xy + wz; + m[2] = xz - wy; + m[3] = 0; + m[4] = xy - wz; + m[5] = 1 - (xx + zz); + m[6] = yz + wx; + m[7] = 0; + m[8] = xz + wy; + m[9] = yz - wx; + m[10] = 1 - (xx + yy); + m[11] = 0; + m[12] = v.x; + m[13] = v.y; + m[14] = v.z; + m[15] = 1; + return out; + }; + Mat4.getTranslation = function getTranslation(out, mat) { + var m = mat.m; + out.x = m[12]; + out.y = m[13]; + out.z = m[14]; + return out; + }; + Mat4.getScaling = function getScaling(out, mat) { + var m = mat.m; + var m3 = m3_1.m; + var m00 = m3[0] = m[0]; + var m01 = m3[1] = m[1]; + var m02 = m3[2] = m[2]; + var m04 = m3[3] = m[4]; + var m05 = m3[4] = m[5]; + var m06 = m3[5] = m[6]; + var m08 = m3[6] = m[8]; + var m09 = m3[7] = m[9]; + var m10 = m3[8] = m[10]; + out.x = Math.sqrt(m00 * m00 + m01 * m01 + m02 * m02); + out.y = Math.sqrt(m04 * m04 + m05 * m05 + m06 * m06); + out.z = Math.sqrt(m08 * m08 + m09 * m09 + m10 * m10); + _mat["default"].determinant(m3_1) < 0 && (out.x *= -1); + return out; + }; + Mat4.getRotation = function getRotation(out, mat) { + var m = mat.m; + var trace = m[0] + m[5] + m[10]; + var S = 0; + if (trace > 0) { + S = 2 * Math.sqrt(trace + 1); + out.w = .25 * S; + out.x = (m[6] - m[9]) / S; + out.y = (m[8] - m[2]) / S; + out.z = (m[1] - m[4]) / S; + } else if (m[0] > m[5] && m[0] > m[10]) { + S = 2 * Math.sqrt(1 + m[0] - m[5] - m[10]); + out.w = (m[6] - m[9]) / S; + out.x = .25 * S; + out.y = (m[1] + m[4]) / S; + out.z = (m[8] + m[2]) / S; + } else if (m[5] > m[10]) { + S = 2 * Math.sqrt(1 + m[5] - m[0] - m[10]); + out.w = (m[8] - m[2]) / S; + out.x = (m[1] + m[4]) / S; + out.y = .25 * S; + out.z = (m[6] + m[9]) / S; + } else { + S = 2 * Math.sqrt(1 + m[10] - m[0] - m[5]); + out.w = (m[1] - m[4]) / S; + out.x = (m[8] + m[2]) / S; + out.y = (m[6] + m[9]) / S; + out.z = .25 * S; + } + return out; + }; + Mat4.toRTS = function toRTS(mat, q, v, s) { + var m = mat.m; + var m3 = m3_1.m; + s.x = _vec["default"].set(v3_1, m[0], m[1], m[2]).mag(); + m3[0] = m[0] / s.x; + m3[1] = m[1] / s.x; + m3[2] = m[2] / s.x; + s.y = _vec["default"].set(v3_1, m[4], m[5], m[6]).mag(); + m3[3] = m[4] / s.y; + m3[4] = m[5] / s.y; + m3[5] = m[6] / s.y; + s.z = _vec["default"].set(v3_1, m[8], m[9], m[10]).mag(); + m3[6] = m[8] / s.z; + m3[7] = m[9] / s.z; + m3[8] = m[10] / s.z; + var det = _mat["default"].determinant(m3_1); + if (det < 0) { + s.x *= -1; + m3[0] *= -1; + m3[1] *= -1; + m3[2] *= -1; + } + _quat["default"].fromMat3(q, m3_1); + _vec["default"].set(v, m[12], m[13], m[14]); + }; + Mat4.fromRTS = function fromRTS(out, q, v, s) { + var x = q.x, y = q.y, z = q.z, w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + var m = out.m; + m[0] = (1 - (yy + zz)) * sx; + m[1] = (xy + wz) * sx; + m[2] = (xz - wy) * sx; + m[3] = 0; + m[4] = (xy - wz) * sy; + m[5] = (1 - (xx + zz)) * sy; + m[6] = (yz + wx) * sy; + m[7] = 0; + m[8] = (xz + wy) * sz; + m[9] = (yz - wx) * sz; + m[10] = (1 - (xx + yy)) * sz; + m[11] = 0; + m[12] = v.x; + m[13] = v.y; + m[14] = v.z; + m[15] = 1; + return out; + }; + Mat4.fromRTSOrigin = function fromRTSOrigin(out, q, v, s, o) { + var x = q.x, y = q.y, z = q.z, w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s.x; + var sy = s.y; + var sz = s.z; + var ox = o.x; + var oy = o.y; + var oz = o.z; + var m = out.m; + m[0] = (1 - (yy + zz)) * sx; + m[1] = (xy + wz) * sx; + m[2] = (xz - wy) * sx; + m[3] = 0; + m[4] = (xy - wz) * sy; + m[5] = (1 - (xx + zz)) * sy; + m[6] = (yz + wx) * sy; + m[7] = 0; + m[8] = (xz + wy) * sz; + m[9] = (yz - wx) * sz; + m[10] = (1 - (xx + yy)) * sz; + m[11] = 0; + m[12] = v.x + ox - (m[0] * ox + m[4] * oy + m[8] * oz); + m[13] = v.y + oy - (m[1] * ox + m[5] * oy + m[9] * oz); + m[14] = v.z + oz - (m[2] * ox + m[6] * oy + m[10] * oz); + m[15] = 1; + return out; + }; + Mat4.fromQuat = function fromQuat(out, q) { + var x = q.x, y = q.y, z = q.z, w = q.w; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var m = out.m; + m[0] = 1 - yy - zz; + m[1] = yx + wz; + m[2] = zx - wy; + m[3] = 0; + m[4] = yx - wz; + m[5] = 1 - xx - zz; + m[6] = zy + wx; + m[7] = 0; + m[8] = zx + wy; + m[9] = zy - wx; + m[10] = 1 - xx - yy; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.frustum = function frustum(out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left); + var tb = 1 / (top - bottom); + var nf = 1 / (near - far); + var m = out.m; + m[0] = 2 * near * rl; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = 2 * near * tb; + m[6] = 0; + m[7] = 0; + m[8] = (right + left) * rl; + m[9] = (top + bottom) * tb; + m[10] = (far + near) * nf; + m[11] = -1; + m[12] = 0; + m[13] = 0; + m[14] = far * near * 2 * nf; + m[15] = 0; + return out; + }; + Mat4.perspective = function perspective(out, fovy, aspect, near, far) { + var f = 1 / Math.tan(fovy / 2); + var nf = 1 / (near - far); + var m = out.m; + m[0] = f / aspect; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = f; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = (far + near) * nf; + m[11] = -1; + m[12] = 0; + m[13] = 0; + m[14] = 2 * far * near * nf; + m[15] = 0; + return out; + }; + Mat4.ortho = function ortho(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + var m = out.m; + m[0] = -2 * lr; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = -2 * bt; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 2 * nf; + m[11] = 0; + m[12] = (left + right) * lr; + m[13] = (top + bottom) * bt; + m[14] = (far + near) * nf; + m[15] = 1; + return out; + }; + Mat4.lookAt = function lookAt(out, eye, center, up) { + var eyex = eye.x; + var eyey = eye.y; + var eyez = eye.z; + var upx = up.x; + var upy = up.y; + var upz = up.z; + var centerx = center.x; + var centery = center.y; + var centerz = center.z; + var z0 = eyex - centerx; + var z1 = eyey - centery; + var z2 = eyez - centerz; + var len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + var x0 = upy * z2 - upz * z1; + var x1 = upz * z0 - upx * z2; + var x2 = upx * z1 - upy * z0; + len = 1 / Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + x0 *= len; + x1 *= len; + x2 *= len; + var y0 = z1 * x2 - z2 * x1; + var y1 = z2 * x0 - z0 * x2; + var y2 = z0 * x1 - z1 * x0; + var m = out.m; + m[0] = x0; + m[1] = y0; + m[2] = z0; + m[3] = 0; + m[4] = x1; + m[5] = y1; + m[6] = z1; + m[7] = 0; + m[8] = x2; + m[9] = y2; + m[10] = z2; + m[11] = 0; + m[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + m[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + m[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + m[15] = 1; + return out; + }; + Mat4.inverseTranspose = function inverseTranspose(out, a) { + var m = a.m; + _a00 = m[0]; + _a01 = m[1]; + _a02 = m[2]; + _a03 = m[3]; + _a10 = m[4]; + _a11 = m[5]; + _a12 = m[6]; + _a13 = m[7]; + _a20 = m[8]; + _a21 = m[9]; + _a22 = m[10]; + _a23 = m[11]; + _a30 = m[12]; + _a31 = m[13]; + _a32 = m[14]; + _a33 = m[15]; + var b00 = _a00 * _a11 - _a01 * _a10; + var b01 = _a00 * _a12 - _a02 * _a10; + var b02 = _a00 * _a13 - _a03 * _a10; + var b03 = _a01 * _a12 - _a02 * _a11; + var b04 = _a01 * _a13 - _a03 * _a11; + var b05 = _a02 * _a13 - _a03 * _a12; + var b06 = _a20 * _a31 - _a21 * _a30; + var b07 = _a20 * _a32 - _a22 * _a30; + var b08 = _a20 * _a33 - _a23 * _a30; + var b09 = _a21 * _a32 - _a22 * _a31; + var b10 = _a21 * _a33 - _a23 * _a31; + var b11 = _a22 * _a33 - _a23 * _a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) return null; + det = 1 / det; + m = out.m; + m[0] = (_a11 * b11 - _a12 * b10 + _a13 * b09) * det; + m[1] = (_a12 * b08 - _a10 * b11 - _a13 * b07) * det; + m[2] = (_a10 * b10 - _a11 * b08 + _a13 * b06) * det; + m[3] = 0; + m[4] = (_a02 * b10 - _a01 * b11 - _a03 * b09) * det; + m[5] = (_a00 * b11 - _a02 * b08 + _a03 * b07) * det; + m[6] = (_a01 * b08 - _a00 * b10 - _a03 * b06) * det; + m[7] = 0; + m[8] = (_a31 * b05 - _a32 * b04 + _a33 * b03) * det; + m[9] = (_a32 * b02 - _a30 * b05 - _a33 * b01) * det; + m[10] = (_a30 * b04 - _a31 * b02 + _a33 * b00) * det; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return out; + }; + Mat4.add = function add(out, a, b) { + var m = out.m, am = a.m, bm = b.m; + m[0] = am[0] + bm[0]; + m[1] = am[1] + bm[1]; + m[2] = am[2] + bm[2]; + m[3] = am[3] + bm[3]; + m[4] = am[4] + bm[4]; + m[5] = am[5] + bm[5]; + m[6] = am[6] + bm[6]; + m[7] = am[7] + bm[7]; + m[8] = am[8] + bm[8]; + m[9] = am[9] + bm[9]; + m[10] = am[10] + bm[10]; + m[11] = am[11] + bm[11]; + m[12] = am[12] + bm[12]; + m[13] = am[13] + bm[13]; + m[14] = am[14] + bm[14]; + m[15] = am[15] + bm[15]; + return out; + }; + Mat4.subtract = function subtract(out, a, b) { + var m = out.m, am = a.m, bm = b.m; + m[0] = am[0] - bm[0]; + m[1] = am[1] - bm[1]; + m[2] = am[2] - bm[2]; + m[3] = am[3] - bm[3]; + m[4] = am[4] - bm[4]; + m[5] = am[5] - bm[5]; + m[6] = am[6] - bm[6]; + m[7] = am[7] - bm[7]; + m[8] = am[8] - bm[8]; + m[9] = am[9] - bm[9]; + m[10] = am[10] - bm[10]; + m[11] = am[11] - bm[11]; + m[12] = am[12] - bm[12]; + m[13] = am[13] - bm[13]; + m[14] = am[14] - bm[14]; + m[15] = am[15] - bm[15]; + return out; + }; + Mat4.multiplyScalar = function multiplyScalar(out, a, b) { + var m = out.m, am = a.m; + m[0] = am[0] * b; + m[1] = am[1] * b; + m[2] = am[2] * b; + m[3] = am[3] * b; + m[4] = am[4] * b; + m[5] = am[5] * b; + m[6] = am[6] * b; + m[7] = am[7] * b; + m[8] = am[8] * b; + m[9] = am[9] * b; + m[10] = am[10] * b; + m[11] = am[11] * b; + m[12] = am[12] * b; + m[13] = am[13] * b; + m[14] = am[14] * b; + m[15] = am[15] * b; + return out; + }; + Mat4.multiplyScalarAndAdd = function multiplyScalarAndAdd(out, a, b, scale) { + var m = out.m, am = a.m, bm = b.m; + m[0] = am[0] + bm[0] * scale; + m[1] = am[1] + bm[1] * scale; + m[2] = am[2] + bm[2] * scale; + m[3] = am[3] + bm[3] * scale; + m[4] = am[4] + bm[4] * scale; + m[5] = am[5] + bm[5] * scale; + m[6] = am[6] + bm[6] * scale; + m[7] = am[7] + bm[7] * scale; + m[8] = am[8] + bm[8] * scale; + m[9] = am[9] + bm[9] * scale; + m[10] = am[10] + bm[10] * scale; + m[11] = am[11] + bm[11] * scale; + m[12] = am[12] + bm[12] * scale; + m[13] = am[13] + bm[13] * scale; + m[14] = am[14] + bm[14] * scale; + m[15] = am[15] + bm[15] * scale; + return out; + }; + Mat4.strictEquals = function strictEquals(a, b) { + var am = a.m, bm = b.m; + return am[0] === bm[0] && am[1] === bm[1] && am[2] === bm[2] && am[3] === bm[3] && am[4] === bm[4] && am[5] === bm[5] && am[6] === bm[6] && am[7] === bm[7] && am[8] === bm[8] && am[9] === bm[9] && am[10] === bm[10] && am[11] === bm[11] && am[12] === bm[12] && am[13] === bm[13] && am[14] === bm[14] && am[15] === bm[15]; + }; + Mat4.equals = function equals(a, b, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + var am = a.m, bm = b.m; + return Math.abs(am[0] - bm[0]) <= epsilon * Math.max(1, Math.abs(am[0]), Math.abs(bm[0])) && Math.abs(am[1] - bm[1]) <= epsilon * Math.max(1, Math.abs(am[1]), Math.abs(bm[1])) && Math.abs(am[2] - bm[2]) <= epsilon * Math.max(1, Math.abs(am[2]), Math.abs(bm[2])) && Math.abs(am[3] - bm[3]) <= epsilon * Math.max(1, Math.abs(am[3]), Math.abs(bm[3])) && Math.abs(am[4] - bm[4]) <= epsilon * Math.max(1, Math.abs(am[4]), Math.abs(bm[4])) && Math.abs(am[5] - bm[5]) <= epsilon * Math.max(1, Math.abs(am[5]), Math.abs(bm[5])) && Math.abs(am[6] - bm[6]) <= epsilon * Math.max(1, Math.abs(am[6]), Math.abs(bm[6])) && Math.abs(am[7] - bm[7]) <= epsilon * Math.max(1, Math.abs(am[7]), Math.abs(bm[7])) && Math.abs(am[8] - bm[8]) <= epsilon * Math.max(1, Math.abs(am[8]), Math.abs(bm[8])) && Math.abs(am[9] - bm[9]) <= epsilon * Math.max(1, Math.abs(am[9]), Math.abs(bm[9])) && Math.abs(am[10] - bm[10]) <= epsilon * Math.max(1, Math.abs(am[10]), Math.abs(bm[10])) && Math.abs(am[11] - bm[11]) <= epsilon * Math.max(1, Math.abs(am[11]), Math.abs(bm[11])) && Math.abs(am[12] - bm[12]) <= epsilon * Math.max(1, Math.abs(am[12]), Math.abs(bm[12])) && Math.abs(am[13] - bm[13]) <= epsilon * Math.max(1, Math.abs(am[13]), Math.abs(bm[13])) && Math.abs(am[14] - bm[14]) <= epsilon * Math.max(1, Math.abs(am[14]), Math.abs(bm[14])) && Math.abs(am[15] - bm[15]) <= epsilon * Math.max(1, Math.abs(am[15]), Math.abs(bm[15])); + }; + Mat4.adjoint = function adjoint(out, a) { + var am = a.m, outm = out.m; + var a00 = am[0], a01 = am[1], a02 = am[2], a03 = am[3], a10 = am[4], a11 = am[5], a12 = am[6], a13 = am[7], a20 = am[8], a21 = am[9], a22 = am[10], a23 = am[11], a30 = am[12], a31 = am[13], a32 = am[14], a33 = am[15]; + outm[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22); + outm[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); + outm[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12); + outm[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); + outm[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); + outm[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22); + outm[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); + outm[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12); + outm[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21); + outm[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); + outm[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11); + outm[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); + outm[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); + outm[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21); + outm[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); + outm[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11); + return out; + }; + Mat4.toArray = function toArray(out, mat, ofs) { + void 0 === ofs && (ofs = 0); + var m = mat.m; + for (var i = 0; i < 16; i++) out[ofs + i] = m[i]; + return out; + }; + Mat4.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + var m = out.m; + for (var i = 0; i < 16; i++) m[i] = arr[ofs + i]; + return out; + }; + function Mat4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var _this; + void 0 === m00 && (m00 = 1); + void 0 === m01 && (m01 = 0); + void 0 === m02 && (m02 = 0); + void 0 === m03 && (m03 = 0); + void 0 === m10 && (m10 = 0); + void 0 === m11 && (m11 = 1); + void 0 === m12 && (m12 = 0); + void 0 === m13 && (m13 = 0); + void 0 === m20 && (m20 = 0); + void 0 === m21 && (m21 = 0); + void 0 === m22 && (m22 = 1); + void 0 === m23 && (m23 = 0); + void 0 === m30 && (m30 = 0); + void 0 === m31 && (m31 = 0); + void 0 === m32 && (m32 = 0); + void 0 === m33 && (m33 = 1); + _this = _ValueType.call(this) || this; + _this.m = void 0; + if (m00 instanceof _utils.FLOAT_ARRAY_TYPE) _this.m = m00; else { + _this.m = new _utils.FLOAT_ARRAY_TYPE(16); + var tm = _this.m; + tm[0] = m00; + tm[1] = m01; + tm[2] = m02; + tm[3] = m03; + tm[4] = m10; + tm[5] = m11; + tm[6] = m12; + tm[7] = m13; + tm[8] = m20; + tm[9] = m21; + tm[10] = m22; + tm[11] = m23; + tm[12] = m30; + tm[13] = m31; + tm[14] = m32; + tm[15] = m33; + } + return _this; + } + _proto.clone = function clone() { + var t = this; + var tm = t.m; + return new Mat4(tm[0], tm[1], tm[2], tm[3], tm[4], tm[5], tm[6], tm[7], tm[8], tm[9], tm[10], tm[11], tm[12], tm[13], tm[14], tm[15]); + }; + _proto.set = function set(s) { + var t = this; + var tm = t.m, sm = s.m; + tm[0] = sm[0]; + tm[1] = sm[1]; + tm[2] = sm[2]; + tm[3] = sm[3]; + tm[4] = sm[4]; + tm[5] = sm[5]; + tm[6] = sm[6]; + tm[7] = sm[7]; + tm[8] = sm[8]; + tm[9] = sm[9]; + tm[10] = sm[10]; + tm[11] = sm[11]; + tm[12] = sm[12]; + tm[13] = sm[13]; + tm[14] = sm[14]; + tm[15] = sm[15]; + return this; + }; + _proto.equals = function equals(other) { + return Mat4.strictEquals(this, other); + }; + _proto.fuzzyEquals = function fuzzyEquals(other) { + return Mat4.equals(this, other); + }; + _proto.toString = function toString() { + var tm = this.m; + return tm ? "[\n" + tm[0] + ", " + tm[1] + ", " + tm[2] + ", " + tm[3] + ",\n" + tm[4] + ", " + tm[5] + ", " + tm[6] + ", " + tm[7] + ",\n" + tm[8] + ", " + tm[9] + ", " + tm[10] + ", " + tm[11] + ",\n" + tm[12] + ", " + tm[13] + ", " + tm[14] + ", " + tm[15] + "\n]" : "[\n1, 0, 0, 0\n0, 1, 0, 0\n0, 0, 1, 0\n0, 0, 0, 1\n]"; + }; + _proto.identity = function identity() { + return Mat4.identity(this); + }; + _proto.transpose = function transpose(out) { + out = out || new Mat4(); + return Mat4.transpose(out, this); + }; + _proto.invert = function invert(out) { + out = out || new Mat4(); + return Mat4.invert(out, this); + }; + _proto.adjoint = function adjoint(out) { + out = out || new Mat4(); + return Mat4.adjoint(out, this); + }; + _proto.determinant = function determinant() { + return Mat4.determinant(this); + }; + _proto.add = function add(other, out) { + out = out || new Mat4(); + return Mat4.add(out, this, other); + }; + _proto.subtract = function subtract(other) { + return Mat4.subtract(this, this, other); + }; + _proto.multiply = function multiply(other) { + return Mat4.multiply(this, this, other); + }; + _proto.multiplyScalar = function multiplyScalar(number) { + return Mat4.multiplyScalar(this, this, number); + }; + _proto.translate = function translate(v, out) { + out = out || new Mat4(); + return Mat4.translate(out, this, v); + }; + _proto.scale = function scale(v, out) { + out = out || new Mat4(); + return Mat4.scale(out, this, v); + }; + _proto.rotate = function rotate(rad, axis, out) { + out = out || new Mat4(); + return Mat4.rotate(out, this, rad, axis); + }; + _proto.getTranslation = function getTranslation(out) { + out = out || new _vec["default"](); + return Mat4.getTranslation(out, this); + }; + _proto.getScale = function getScale(out) { + out = out || new _vec["default"](); + return Mat4.getScaling(out, this); + }; + _proto.getRotation = function getRotation(out) { + out = out || new _quat["default"](); + return Mat4.getRotation(out, this); + }; + _proto.fromRTS = function fromRTS(q, v, s) { + return Mat4.fromRTS(this, q, v, s); + }; + _proto.fromQuat = function fromQuat(quat) { + return Mat4.fromQuat(this, quat); + }; + return Mat4; + })(_valueType["default"]); + exports["default"] = Mat4; + Mat4.mul = Mat4.multiply; + Mat4.sub = Mat4.subtract; + Mat4.IDENTITY = Object.freeze(new Mat4()); + var v3_1 = new _vec["default"](); + var m3_1 = new _mat["default"](); + _CCClass["default"].fastDefine("cc.Mat4", Mat4, { + m00: 1, + m01: 0, + m02: 0, + m03: 0, + m04: 0, + m05: 1, + m06: 0, + m07: 0, + m08: 0, + m09: 0, + m10: 1, + m11: 0, + m12: 0, + m13: 0, + m14: 0, + m15: 1 + }); + var _loop = function _loop(i) { + Object.defineProperty(Mat4.prototype, "m" + i, { + get: function get() { + return this.m[i]; + }, + set: function set(value) { + this.m[i] = value; + } + }); + }; + for (var i = 0; i < 16; i++) _loop(i); + cc.mat4 = function (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var mat = new Mat4(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33); + void 0 === m00 && Mat4.identity(mat); + return mat; + }; + cc.Mat4 = Mat4; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "./mat3": 340, + "./quat": 342, + "./utils": 346, + "./value-type": 347, + "./vec3": 349 + }], + 342: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _vec = _interopRequireDefault(require("./vec3")); + var _mat = _interopRequireDefault(require("./mat3")); + var _utils = require("./utils"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _x = 0; + var _y = 0; + var _z = 0; + var _w = 0; + var Quat = (function (_ValueType) { + _inheritsLoose(Quat, _ValueType); + var _proto = Quat.prototype; + _proto.mul = function mul(other, out) { + return Quat.multiply(out || new Quat(), this, other); + }; + Quat.clone = function clone(a) { + return new Quat(a.x, a.y, a.z, a.w); + }; + Quat.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = a.w; + return out; + }; + Quat.set = function set(out, x, y, z, w) { + out.x = x; + out.y = y; + out.z = z; + out.w = w; + return out; + }; + Quat.identity = function identity(out) { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 1; + return out; + }; + Quat.rotationTo = function rotationTo(out, a, b) { + var dot = _vec["default"].dot(a, b); + if (dot < -.999999) { + _vec["default"].cross(v3_1, _vec["default"].RIGHT, a); + v3_1.mag() < 1e-6 && _vec["default"].cross(v3_1, _vec["default"].UP, a); + _vec["default"].normalize(v3_1, v3_1); + Quat.fromAxisAngle(out, v3_1, Math.PI); + return out; + } + if (dot > .999999) { + out.x = 0; + out.y = 0; + out.z = 0; + out.w = 1; + return out; + } + _vec["default"].cross(v3_1, a, b); + out.x = v3_1.x; + out.y = v3_1.y; + out.z = v3_1.z; + out.w = 1 + dot; + return Quat.normalize(out, out); + }; + Quat.getAxisAngle = function getAxisAngle(outAxis, q) { + var rad = 2 * Math.acos(q.w); + var s = Math.sin(rad / 2); + if (0 !== s) { + outAxis.x = q.x / s; + outAxis.y = q.y / s; + outAxis.z = q.z / s; + } else { + outAxis.x = 1; + outAxis.y = 0; + outAxis.z = 0; + } + return rad; + }; + Quat.multiply = function multiply(out, a, b) { + _x = a.x * b.w + a.w * b.x + a.y * b.z - a.z * b.y; + _y = a.y * b.w + a.w * b.y + a.z * b.x - a.x * b.z; + _z = a.z * b.w + a.w * b.z + a.x * b.y - a.y * b.x; + _w = a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z; + out.x = _x; + out.y = _y; + out.z = _z; + out.w = _w; + return out; + }; + Quat.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + out.w = a.w * b; + return out; + }; + Quat.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + out.w = a.w + b.w * scale; + return out; + }; + Quat.rotateX = function rotateX(out, a, rad) { + rad *= .5; + var bx = Math.sin(rad); + var bw = Math.cos(rad); + _x = a.x * bw + a.w * bx; + _y = a.y * bw + a.z * bx; + _z = a.z * bw - a.y * bx; + _w = a.w * bw - a.x * bx; + out.x = _x; + out.y = _y; + out.z = _z; + out.w = _w; + return out; + }; + Quat.rotateY = function rotateY(out, a, rad) { + rad *= .5; + var by = Math.sin(rad); + var bw = Math.cos(rad); + _x = a.x * bw - a.z * by; + _y = a.y * bw + a.w * by; + _z = a.z * bw + a.x * by; + _w = a.w * bw - a.y * by; + out.x = _x; + out.y = _y; + out.z = _z; + out.w = _w; + return out; + }; + Quat.rotateZ = function rotateZ(out, a, rad) { + rad *= .5; + var bz = Math.sin(rad); + var bw = Math.cos(rad); + _x = a.x * bw + a.y * bz; + _y = a.y * bw - a.x * bz; + _z = a.z * bw + a.w * bz; + _w = a.w * bw - a.z * bz; + out.x = _x; + out.y = _y; + out.z = _z; + out.w = _w; + return out; + }; + Quat.rotateAround = function rotateAround(out, rot, axis, rad) { + Quat.invert(qt_1, rot); + _vec["default"].transformQuat(v3_1, axis, qt_1); + Quat.fromAxisAngle(qt_1, v3_1, rad); + Quat.multiply(out, rot, qt_1); + return out; + }; + Quat.rotateAroundLocal = function rotateAroundLocal(out, rot, axis, rad) { + Quat.fromAxisAngle(qt_1, axis, rad); + Quat.multiply(out, rot, qt_1); + return out; + }; + Quat.calculateW = function calculateW(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = Math.sqrt(Math.abs(1 - a.x * a.x - a.y * a.y - a.z * a.z)); + return out; + }; + Quat.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + }; + Quat.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + out.w = a.w + t * (b.w - a.w); + return out; + }; + Quat.slerp = function slerp(out, a, b, t) { + var scale0 = 0; + var scale1 = 0; + var cosom = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + if (cosom < 0) { + cosom = -cosom; + b.x = -b.x; + b.y = -b.y; + b.z = -b.z; + b.w = -b.w; + } + if (1 - cosom > 1e-6) { + var omega = Math.acos(cosom); + var sinom = Math.sin(omega); + scale0 = Math.sin((1 - t) * omega) / sinom; + scale1 = Math.sin(t * omega) / sinom; + } else { + scale0 = 1 - t; + scale1 = t; + } + out.x = scale0 * a.x + scale1 * b.x; + out.y = scale0 * a.y + scale1 * b.y; + out.z = scale0 * a.z + scale1 * b.z; + out.w = scale0 * a.w + scale1 * b.w; + return out; + }; + Quat.sqlerp = function sqlerp(out, a, b, c, d, t) { + Quat.slerp(qt_1, a, d, t); + Quat.slerp(qt_2, b, c, t); + Quat.slerp(out, qt_1, qt_2, 2 * t * (1 - t)); + return out; + }; + Quat.invert = function invert(out, a) { + var dot = a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + var invDot = dot ? 1 / dot : 0; + out.x = -a.x * invDot; + out.y = -a.y * invDot; + out.z = -a.z * invDot; + out.w = a.w * invDot; + return out; + }; + Quat.conjugate = function conjugate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + out.w = a.w; + return out; + }; + Quat.len = function len(a) { + return Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w); + }; + Quat.lengthSqr = function lengthSqr(a) { + return a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + }; + Quat.normalize = function normalize(out, a) { + var len = a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = a.x * len; + out.y = a.y * len; + out.z = a.z * len; + out.w = a.w * len; + } + return out; + }; + Quat.fromAxes = function fromAxes(out, xAxis, yAxis, zAxis) { + _mat["default"].set(m3_1, xAxis.x, xAxis.y, xAxis.z, yAxis.x, yAxis.y, yAxis.z, zAxis.x, zAxis.y, zAxis.z); + return Quat.normalize(out, Quat.fromMat3(out, m3_1)); + }; + Quat.fromViewUp = function fromViewUp(out, view, up) { + _mat["default"].fromViewUp(m3_1, view, up); + return Quat.normalize(out, Quat.fromMat3(out, m3_1)); + }; + Quat.fromAxisAngle = function fromAxisAngle(out, axis, rad) { + rad *= .5; + var s = Math.sin(rad); + out.x = s * axis.x; + out.y = s * axis.y; + out.z = s * axis.z; + out.w = Math.cos(rad); + return out; + }; + Quat.fromAngleZ = function fromAngleZ(out, z) { + z *= halfToRad; + out.x = out.y = 0; + out.z = Math.sin(z); + out.w = Math.cos(z); + return out; + }; + Quat.fromMat3 = function fromMat3(out, mat) { + var m = mat.m; + var m00 = m[0], m10 = m[1], m20 = m[2], m01 = m[3], m11 = m[4], m21 = m[5], m02 = m[6], m12 = m[7], m22 = m[8]; + var trace = m00 + m11 + m22; + if (trace > 0) { + var s = .5 / Math.sqrt(trace + 1); + out.w = .25 / s; + out.x = (m21 - m12) * s; + out.y = (m02 - m20) * s; + out.z = (m10 - m01) * s; + } else if (m00 > m11 && m00 > m22) { + var _s = 2 * Math.sqrt(1 + m00 - m11 - m22); + out.w = (m21 - m12) / _s; + out.x = .25 * _s; + out.y = (m01 + m10) / _s; + out.z = (m02 + m20) / _s; + } else if (m11 > m22) { + var _s2 = 2 * Math.sqrt(1 + m11 - m00 - m22); + out.w = (m02 - m20) / _s2; + out.x = (m01 + m10) / _s2; + out.y = .25 * _s2; + out.z = (m12 + m21) / _s2; + } else { + var _s3 = 2 * Math.sqrt(1 + m22 - m00 - m11); + out.w = (m10 - m01) / _s3; + out.x = (m02 + m20) / _s3; + out.y = (m12 + m21) / _s3; + out.z = .25 * _s3; + } + return out; + }; + Quat.fromEuler = function fromEuler(out, x, y, z) { + x *= halfToRad; + y *= halfToRad; + z *= halfToRad; + var sx = Math.sin(x); + var cx = Math.cos(x); + var sy = Math.sin(y); + var cy = Math.cos(y); + var sz = Math.sin(z); + var cz = Math.cos(z); + out.x = sx * cy * cz + cx * sy * sz; + out.y = cx * sy * cz + sx * cy * sz; + out.z = cx * cy * sz - sx * sy * cz; + out.w = cx * cy * cz - sx * sy * sz; + return out; + }; + Quat.toAxisX = function toAxisX(out, q) { + var fy = 2 * q.y; + var fz = 2 * q.z; + out.x = 1 - fy * q.y - fz * q.z; + out.y = fy * q.x + fz * q.w; + out.z = fz * q.x + fy * q.w; + return out; + }; + Quat.toAxisY = function toAxisY(out, q) { + var fx = 2 * q.x; + var fy = 2 * q.y; + var fz = 2 * q.z; + out.x = fy * q.x - fz * q.w; + out.y = 1 - fx * q.x - fz * q.z; + out.z = fz * q.y + fx * q.w; + return out; + }; + Quat.toAxisZ = function toAxisZ(out, q) { + var fx = 2 * q.x; + var fy = 2 * q.y; + var fz = 2 * q.z; + out.x = fz * q.x - fy * q.w; + out.y = fz * q.y - fx * q.w; + out.z = 1 - fx * q.x - fy * q.y; + return out; + }; + Quat.toEuler = function toEuler(out, q, outerZ) { + var x = q.x, y = q.y, z = q.z, w = q.w; + var bank = 0; + var heading = 0; + var attitude = 0; + var test = x * y + z * w; + if (test > .499999) { + bank = 0; + heading = (0, _utils.toDegree)(2 * Math.atan2(x, w)); + attitude = 90; + } else if (test < -.499999) { + bank = 0; + heading = -(0, _utils.toDegree)(2 * Math.atan2(x, w)); + attitude = -90; + } else { + var sqx = x * x; + var sqy = y * y; + var sqz = z * z; + bank = (0, _utils.toDegree)(Math.atan2(2 * x * w - 2 * y * z, 1 - 2 * sqx - 2 * sqz)); + heading = (0, _utils.toDegree)(Math.atan2(2 * y * w - 2 * x * z, 1 - 2 * sqy - 2 * sqz)); + attitude = (0, _utils.toDegree)(Math.asin(2 * test)); + if (outerZ) { + bank = -180 * Math.sign(bank + 1e-6) + bank; + heading = -180 * Math.sign(heading + 1e-6) + heading; + attitude = 180 * Math.sign(attitude + 1e-6) - attitude; + } + } + out.x = bank; + out.y = heading; + out.z = attitude; + return out; + }; + Quat.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w; + }; + Quat.equals = function equals(a, b, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + return Math.abs(a.x - b.x) <= epsilon * Math.max(1, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1, Math.abs(a.y), Math.abs(b.y)) && Math.abs(a.z - b.z) <= epsilon * Math.max(1, Math.abs(a.z), Math.abs(b.z)) && Math.abs(a.w - b.w) <= epsilon * Math.max(1, Math.abs(a.w), Math.abs(b.w)); + }; + Quat.toArray = function toArray(out, q, ofs) { + void 0 === ofs && (ofs = 0); + out[ofs + 0] = q.x; + out[ofs + 1] = q.y; + out[ofs + 2] = q.z; + out[ofs + 3] = q.w; + return out; + }; + Quat.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + out.w = arr[ofs + 3]; + return out; + }; + function Quat(x, y, z, w) { + var _this; + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === z && (z = 0); + void 0 === w && (w = 1); + _this = _ValueType.call(this) || this; + _this.x = void 0; + _this.y = void 0; + _this.z = void 0; + _this.w = void 0; + if (x && "object" === typeof x) { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + _this.w = x.w; + } else { + _this.x = x; + _this.y = y; + _this.z = z; + _this.w = w; + } + return _this; + } + _proto.clone = function clone() { + return new Quat(this.x, this.y, this.z, this.w); + }; + _proto.set = function set(newValue) { + this.x = newValue.x; + this.y = newValue.y; + this.z = newValue.z; + this.w = newValue.w; + return this; + }; + _proto.equals = function equals(other) { + return other && this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w; + }; + _proto.toEuler = function toEuler(out) { + return Quat.toEuler(out, this); + }; + _proto.fromEuler = function fromEuler(euler) { + return Quat.fromEuler(this, euler.x, euler.y, euler.z); + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Quat(); + Quat.slerp(out, this, to, ratio); + return out; + }; + _proto.multiply = function multiply(other) { + return Quat.multiply(this, this, other); + }; + _proto.rotateAround = function rotateAround(rot, axis, rad, out) { + out = out || new Quat(); + return Quat.rotateAround(out, rot, axis, rad); + }; + return Quat; + })(_valueType["default"]); + exports["default"] = Quat; + Quat.mul = Quat.multiply; + Quat.scale = Quat.multiplyScalar; + Quat.mag = Quat.len; + Quat.IDENTITY = Object.freeze(new Quat()); + var qt_1 = new Quat(); + var qt_2 = new Quat(); + var v3_1 = new _vec["default"](); + var m3_1 = new _mat["default"](); + var halfToRad = .5 * Math.PI / 180; + _CCClass["default"].fastDefine("cc.Quat", Quat, { + x: 0, + y: 0, + z: 0, + w: 1 + }); + cc.quat = function quat(x, y, z, w) { + return new Quat(x, y, z, w); + }; + cc.Quat = Quat; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "./mat3": 340, + "./utils": 346, + "./value-type": 347, + "./vec3": 349 + }], + 343: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _vec = _interopRequireDefault(require("./vec2")); + var _size = _interopRequireDefault(require("./size")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Rect = (function (_ValueType) { + _inheritsLoose(Rect, _ValueType); + Rect.fromMinMax = function fromMinMax(v1, v2) { + var min_x = Math.min(v1.x, v2.x); + var min_y = Math.min(v1.y, v2.y); + var max_x = Math.max(v1.x, v2.x); + var max_y = Math.max(v1.y, v2.y); + return new Rect(min_x, min_y, max_x - min_x, max_y - min_y); + }; + function Rect(x, y, w, h) { + var _this; + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === w && (w = 0); + void 0 === h && (h = 0); + _this = _ValueType.call(this) || this; + _this.x = void 0; + _this.y = void 0; + _this.width = void 0; + _this.height = void 0; + if (x && "object" === typeof x) { + y = x.y; + w = x.width; + h = x.height; + x = x.x; + } + _this.x = x || 0; + _this.y = y || 0; + _this.width = w || 0; + _this.height = h || 0; + return _this; + } + var _proto = Rect.prototype; + _proto.clone = function clone() { + return new Rect(this.x, this.y, this.width, this.height); + }; + _proto.equals = function equals(other) { + return other && this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height; + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Rect(); + var x = this.x; + var y = this.y; + var width = this.width; + var height = this.height; + out.x = x + (to.x - x) * ratio; + out.y = y + (to.y - y) * ratio; + out.width = width + (to.width - width) * ratio; + out.height = height + (to.height - height) * ratio; + return out; + }; + _proto.set = function set(source) { + this.x = source.x; + this.y = source.y; + this.width = source.width; + this.height = source.height; + return this; + }; + _proto.intersects = function intersects(rect) { + var maxax = this.x + this.width, maxay = this.y + this.height, maxbx = rect.x + rect.width, maxby = rect.y + rect.height; + return !(maxax < rect.x || maxbx < this.x || maxay < rect.y || maxby < this.y); + }; + _proto.intersection = function intersection(out, rectB) { + var axMin = this.x, ayMin = this.y, axMax = this.x + this.width, ayMax = this.y + this.height; + var bxMin = rectB.x, byMin = rectB.y, bxMax = rectB.x + rectB.width, byMax = rectB.y + rectB.height; + out.x = Math.max(axMin, bxMin); + out.y = Math.max(ayMin, byMin); + out.width = Math.min(axMax, bxMax) - out.x; + out.height = Math.min(ayMax, byMax) - out.y; + return out; + }; + _proto.contains = function contains(point) { + return this.x <= point.x && this.x + this.width >= point.x && this.y <= point.y && this.y + this.height >= point.y; + }; + _proto.containsRect = function containsRect(rect) { + return this.x <= rect.x && this.x + this.width >= rect.x + rect.width && this.y <= rect.y && this.y + this.height >= rect.y + rect.height; + }; + _proto.union = function union(out, rectB) { + var ax = this.x, ay = this.y, aw = this.width, ah = this.height; + var bx = rectB.x, by = rectB.y, bw = rectB.width, bh = rectB.height; + out.x = Math.min(ax, bx); + out.y = Math.min(ay, by); + out.width = Math.max(ax + aw, bx + bw) - out.x; + out.height = Math.max(ay + ah, by + bh) - out.y; + return out; + }; + _proto.transformMat4 = function transformMat4(out, mat) { + var ol = this.x; + var ob = this.y; + var or = ol + this.width; + var ot = ob + this.height; + var matm = mat.m; + var lbx = matm[0] * ol + matm[4] * ob + matm[12]; + var lby = matm[1] * ol + matm[5] * ob + matm[13]; + var rbx = matm[0] * or + matm[4] * ob + matm[12]; + var rby = matm[1] * or + matm[5] * ob + matm[13]; + var ltx = matm[0] * ol + matm[4] * ot + matm[12]; + var lty = matm[1] * ol + matm[5] * ot + matm[13]; + var rtx = matm[0] * or + matm[4] * ot + matm[12]; + var rty = matm[1] * or + matm[5] * ot + matm[13]; + var minX = Math.min(lbx, rbx, ltx, rtx); + var maxX = Math.max(lbx, rbx, ltx, rtx); + var minY = Math.min(lby, rby, lty, rty); + var maxY = Math.max(lby, rby, lty, rty); + out.x = minX; + out.y = minY; + out.width = maxX - minX; + out.height = maxY - minY; + return out; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")"; + }; + _createClass(Rect, [{ + key: "xMin", + get: function get() { + return this.x; + }, + set: function set(v) { + this.width += this.x - v; + this.x = v; + } + }, { + key: "yMin", + get: function get() { + return this.y; + }, + set: function set(v) { + this.height += this.y - v; + this.y = v; + } + }, { + key: "xMax", + get: function get() { + return this.x + this.width; + }, + set: function set(value) { + this.width = value - this.x; + } + }, { + key: "yMax", + get: function get() { + return this.y + this.height; + }, + set: function set(value) { + this.height = value - this.y; + } + }, { + key: "center", + get: function get() { + return new _vec["default"](this.x + .5 * this.width, this.y + .5 * this.height); + }, + set: function set(value) { + this.x = value.x - .5 * this.width; + this.y = value.y - .5 * this.height; + } + }, { + key: "origin", + get: function get() { + return new _vec["default"](this.x, this.y); + }, + set: function set(value) { + this.x = value.x; + this.y = value.y; + } + }, { + key: "size", + get: function get() { + return new _size["default"](this.width, this.height); + }, + set: function set(value) { + this.width = value.width; + this.height = value.height; + } + }]); + return Rect; + })(_valueType["default"]); + exports["default"] = Rect; + _CCClass["default"].fastDefine("cc.Rect", Rect, { + x: 0, + y: 0, + width: 0, + height: 0 + }); + cc.Rect = Rect; + cc.rect = function rect(x, y, w, h) { + return new Rect(x, y, w, h); + }; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "./size": 344, + "./value-type": 347, + "./vec2": 348 + }], + 344: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Size = (function (_ValueType) { + _inheritsLoose(Size, _ValueType); + _createClass(Size, null, [{ + key: "ZERO", + get: function get() { + return new Size(); + } + }]); + function Size(width, height) { + var _this; + void 0 === width && (width = 0); + void 0 === height && (height = 0); + _this = _ValueType.call(this) || this; + _this.width = void 0; + _this.height = void 0; + if (width && "object" === typeof width) { + _this.width = width.width; + _this.height = width.height; + } else { + _this.width = width || 0; + _this.height = height || 0; + } + return _this; + } + var _proto = Size.prototype; + _proto.clone = function clone() { + return new Size(this.width, this.height); + }; + _proto.equals = function equals(other) { + return other && this.width === other.width && this.height === other.height; + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Size(); + var width = this.width; + var height = this.height; + out.width = width + (to.width - width) * ratio; + out.height = height + (to.height - height) * ratio; + return out; + }; + _proto.set = function set(source) { + this.width = source.width; + this.height = source.height; + return this; + }; + _proto.toString = function toString() { + return "(" + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")"; + }; + return Size; + })(_valueType["default"]); + exports["default"] = Size; + Size.ZERO_R = Size.ZERO; + _CCClass["default"].fastDefine("cc.Size", Size, { + width: 0, + height: 0 + }); + cc.size = function (w, h) { + return new Size(w, h); + }; + cc.Size = Size; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "./value-type": 347 + }], + 345: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _quat = _interopRequireDefault(require("./quat")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var tmp_quat = new _quat["default"](); + var Trs = (function () { + function Trs() { } + Trs.toRotation = function toRotation(out, a) { + out.x = a[3]; + out.y = a[4]; + out.z = a[5]; + out.w = a[6]; + return out; + }; + Trs.fromRotation = function fromRotation(out, a) { + out[3] = a.x; + out[4] = a.y; + out[5] = a.z; + out[6] = a.w; + return out; + }; + Trs.toEuler = function toEuler(out, a) { + Trs.toRotation(tmp_quat, a); + _quat["default"].toEuler(out, tmp_quat); + return out; + }; + Trs.fromEuler = function fromEuler(out, a) { + _quat["default"].fromEuler(tmp_quat, a.x, a.y, a.z); + Trs.fromRotation(out, tmp_quat); + return out; + }; + Trs.fromEulerNumber = function fromEulerNumber(out, x, y, z) { + _quat["default"].fromEuler(tmp_quat, x, y, z); + Trs.fromRotation(out, tmp_quat); + return out; + }; + Trs.toScale = function toScale(out, a) { + out.x = a[7]; + out.y = a[8]; + out.z = a[9]; + return out; + }; + Trs.fromScale = function fromScale(out, a) { + out[7] = a.x; + out[8] = a.y; + out[9] = a.z; + return out; + }; + Trs.toPosition = function toPosition(out, a) { + out.x = a[0]; + out.y = a[1]; + out.z = a[2]; + return out; + }; + Trs.fromPosition = function fromPosition(out, a) { + out[0] = a.x; + out[1] = a.y; + out[2] = a.z; + return out; + }; + Trs.fromAngleZ = function fromAngleZ(out, a) { + _quat["default"].fromAngleZ(tmp_quat, a); + Trs.fromRotation(out, tmp_quat); + return out; + }; + Trs.toMat4 = function toMat4(out, trs) { + var x = trs[3], y = trs[4], z = trs[5], w = trs[6]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = trs[7]; + var sy = trs[8]; + var sz = trs[9]; + var m = out.m; + m[0] = (1 - (yy + zz)) * sx; + m[1] = (xy + wz) * sx; + m[2] = (xz - wy) * sx; + m[3] = 0; + m[4] = (xy - wz) * sy; + m[5] = (1 - (xx + zz)) * sy; + m[6] = (yz + wx) * sy; + m[7] = 0; + m[8] = (xz + wy) * sz; + m[9] = (yz - wx) * sz; + m[10] = (1 - (xx + yy)) * sz; + m[11] = 0; + m[12] = trs[0]; + m[13] = trs[1]; + m[14] = trs[2]; + m[15] = 1; + return out; + }; + return Trs; + })(); + exports["default"] = Trs; + cc.Trs = Trs; + module.exports = exports["default"]; + }), { + "./quat": 342 + }], + 346: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.equals = equals; + exports.approx = approx; + exports.clamp = clamp; + exports.clamp01 = clamp01; + exports.lerp = lerp; + exports.toRadian = toRadian; + exports.toDegree = toDegree; + exports.randomRange = randomRange; + exports.randomRangeInt = randomRangeInt; + exports.pseudoRandom = pseudoRandom; + exports.pseudoRandomRange = pseudoRandomRange; + exports.pseudoRandomRangeInt = pseudoRandomRangeInt; + exports.nextPow2 = nextPow2; + exports.repeat = repeat; + exports.pingPong = pingPong; + exports.inverseLerp = inverseLerp; + exports.sign = sign; + exports.random = exports.FLOAT_BYTES = exports.FLOAT_ARRAY_TYPE = exports.INT_MIN = exports.INT_MAX = exports.INT_BITS = exports.EPSILON = void 0; + var _d2r = Math.PI / 180; + var _r2d = 180 / Math.PI; + var EPSILON = 1e-6; + exports.EPSILON = EPSILON; + var INT_BITS = 32; + exports.INT_BITS = INT_BITS; + var INT_MAX = 2147483647; + exports.INT_MAX = INT_MAX; + var INT_MIN = -1 << INT_BITS - 1; + exports.INT_MIN = INT_MIN; + var FLOAT_ARRAY_TYPE = Float64Array; + exports.FLOAT_ARRAY_TYPE = FLOAT_ARRAY_TYPE; + var FLOAT_BYTES = 8; + exports.FLOAT_BYTES = FLOAT_BYTES; + function equals(a, b) { + return Math.abs(a - b) <= EPSILON * Math.max(1, Math.abs(a), Math.abs(b)); + } + function approx(a, b, maxDiff) { + maxDiff = maxDiff || EPSILON; + return Math.abs(a - b) <= maxDiff; + } + function clamp(val, min, max) { + return val < min ? min : val > max ? max : val; + } + function clamp01(val) { + return val < 0 ? 0 : val > 1 ? 1 : val; + } + function lerp(from, to, ratio) { + return from + (to - from) * ratio; + } + function toRadian(a) { + return a * _d2r; + } + function toDegree(a) { + return a * _r2d; + } + var random = Math.random; + exports.random = random; + function randomRange(min, max) { + return Math.random() * (max - min) + min; + } + function randomRangeInt(min, max) { + return Math.floor(randomRange(min, max)); + } + function pseudoRandom(seed) { + seed = (9301 * seed + 49297) % 233280; + return seed / 233280; + } + function pseudoRandomRange(seed, min, max) { + return pseudoRandom(seed) * (max - min) + min; + } + function pseudoRandomRangeInt(seed, min, max) { + return Math.floor(pseudoRandomRange(seed, min, max)); + } + function nextPow2(val) { + --val; + val |= val >> 1; + val |= val >> 2; + val |= val >> 4; + val |= val >> 8; + val |= val >> 16; + ++val; + return val; + } + function repeat(t, length) { + return t - Math.floor(t / length) * length; + } + function pingPong(t, length) { + t = repeat(t, 2 * length); + t = length - Math.abs(t - length); + return t; + } + function inverseLerp(from, to, value) { + return (value - from) / (to - from); + } + function sign(v) { + return (v > 0) - (v < 0); + } + }), {}], + 347: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _js = _interopRequireDefault(require("../platform/js")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ValueType = (function () { + function ValueType() { } + var _proto = ValueType.prototype; + _proto.clone = function clone() { + cc.errorID("0100", _js["default"].getClassName(this) + ".clone"); + return null; + }; + _proto.equals = function equals(other) { + cc.errorID("0100", _js["default"].getClassName(this) + ".equals"); + return false; + }; + _proto.lerp = function lerp(to, ratio) { + cc.errorID("0100", _js["default"].getClassName(this) + ".lerp"); + return this.clone(); + }; + _proto.set = function set(source) { + cc.errorID("0100", _js["default"].getClassName(this) + ".set"); + }; + _proto.toString = function toString() { + return "" + {}; + }; + return ValueType; + })(); + exports["default"] = ValueType; + _js["default"].setClassName("cc.ValueType", ValueType); + cc.ValueType = ValueType; + module.exports = exports["default"]; + }), { + "../platform/js": 260 + }], + 348: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _misc = _interopRequireDefault(require("../utils/misc")); + var _utils = require("./utils"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _x = 0; + var _y = 0; + var Vec2 = (function (_ValueType) { + _inheritsLoose(Vec2, _ValueType); + var _proto = Vec2.prototype; + _proto.sub = function sub(vector, out) { + return Vec2.subtract(out || new Vec2(), this, vector); + }; + _proto.mul = function mul(num, out) { + return Vec2.multiplyScalar(out || new Vec2(), this, num); + }; + _proto.div = function div(num, out) { + return Vec2.multiplyScalar(out || new Vec2(), this, 1 / num); + }; + _proto.scale = function scale(vector, out) { + return Vec2.multiply(out || new Vec2(), this, vector); + }; + _proto.neg = function neg(out) { + return Vec2.negate(out || new Vec2(), this); + }; + Vec2.clone = function clone(a) { + return new Vec2(a.x, a.y); + }; + Vec2.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + return out; + }; + Vec2.set = function set(out, x, y) { + out.x = x; + out.y = y; + return out; + }; + Vec2.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + return out; + }; + Vec2.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + return out; + }; + Vec2.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + return out; + }; + Vec2.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + return out; + }; + Vec2.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + return out; + }; + Vec2.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + return out; + }; + Vec2.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + return out; + }; + Vec2.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + return out; + }; + Vec2.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + return out; + }; + Vec2.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + return out; + }; + Vec2.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + return out; + }; + Vec2.distance = function distance(a, b) { + _x = b.x - a.x; + _y = b.y - a.y; + return Math.sqrt(_x * _x + _y * _y); + }; + Vec2.squaredDistance = function squaredDistance(a, b) { + _x = b.x - a.x; + _y = b.y - a.y; + return _x * _x + _y * _y; + }; + Vec2.len = function len(a) { + _x = a.x; + _y = a.y; + return Math.sqrt(_x * _x + _y * _y); + }; + Vec2.lengthSqr = function lengthSqr(a) { + _x = a.x; + _y = a.y; + return _x * _x + _y * _y; + }; + Vec2.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + return out; + }; + Vec2.inverse = function inverse(out, a) { + out.x = 1 / a.x; + out.y = 1 / a.y; + return out; + }; + Vec2.inverseSafe = function inverseSafe(out, a) { + _x = a.x; + _y = a.y; + Math.abs(_x) < _utils.EPSILON ? out.x = 0 : out.x = 1 / _x; + Math.abs(_y) < _utils.EPSILON ? out.y = 0 : out.y = 1 / _y; + return out; + }; + Vec2.normalize = function normalize(out, a) { + _x = a.x; + _y = a.y; + var len = _x * _x + _y * _y; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = _x * len; + out.y = _y * len; + } + return out; + }; + Vec2.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y; + }; + Vec2.cross = function cross(out, a, b) { + out.x = out.y = 0; + out.z = a.x * b.y - a.y * b.x; + return out; + }; + Vec2.lerp = function lerp(out, a, b, t) { + _x = a.x; + _y = a.y; + out.x = _x + t * (b.x - _x); + out.y = _y + t * (b.y - _y); + return out; + }; + Vec2.random = function random(out, scale) { + scale = scale || 1; + var r = 2 * (0, _utils.random)() * Math.PI; + out.x = Math.cos(r) * scale; + out.y = Math.sin(r) * scale; + return out; + }; + Vec2.transformMat3 = function transformMat3(out, a, mat) { + _x = a.x; + _y = a.y; + var m = mat.m; + out.x = m[0] * _x + m[3] * _y + m[6]; + out.y = m[1] * _x + m[4] * _y + m[7]; + return out; + }; + Vec2.transformMat4 = function transformMat4(out, a, mat) { + _x = a.x; + _y = a.y; + var m = mat.m; + out.x = m[0] * _x + m[4] * _y + m[12]; + out.y = m[1] * _x + m[5] * _y + m[13]; + return out; + }; + Vec2.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y; + }; + Vec2.equals = function equals(a, b, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + return Math.abs(a.x - b.x) <= epsilon * Math.max(1, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1, Math.abs(a.y), Math.abs(b.y)); + }; + Vec2.angle = function angle(a, b) { + Vec2.normalize(v2_1, a); + Vec2.normalize(v2_2, b); + var cosine = Vec2.dot(v2_1, v2_2); + if (cosine > 1) return 0; + if (cosine < -1) return Math.PI; + return Math.acos(cosine); + }; + Vec2.toArray = function toArray(out, v, ofs) { + void 0 === ofs && (ofs = 0); + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + return out; + }; + Vec2.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + return out; + }; + _createClass(Vec2, null, [{ + key: "ONE", + get: function get() { + return new Vec2(1, 1); + } + }, { + key: "ZERO", + get: function get() { + return new Vec2(0, 0); + } + }, { + key: "UP", + get: function get() { + return new Vec2(0, 1); + } + }, { + key: "RIGHT", + get: function get() { + return new Vec2(1, 0); + } + }]); + function Vec2(x, y) { + var _this; + void 0 === x && (x = 0); + void 0 === y && (y = 0); + _this = _ValueType.call(this) || this; + _this.mag = Vec2.prototype.len; + _this.magSqr = Vec2.prototype.lengthSqr; + _this.subSelf = Vec2.prototype.subtract; + _this.mulSelf = Vec2.prototype.multiplyScalar; + _this.divSelf = Vec2.prototype.divide; + _this.scaleSelf = Vec2.prototype.multiply; + _this.negSelf = Vec2.prototype.negate; + _this.x = void 0; + _this.y = void 0; + _this.z = 0; + if (x && "object" === typeof x) { + _this.x = x.x || 0; + _this.y = x.y || 0; + } else { + _this.x = x || 0; + _this.y = y || 0; + } + return _this; + } + _proto.clone = function clone() { + return new Vec2(this.x, this.y); + }; + _proto.set = function set(newValue) { + this.x = newValue.x; + this.y = newValue.y; + return this; + }; + _proto.equals = function equals(other) { + return other && this.x === other.x && this.y === other.y; + }; + _proto.fuzzyEquals = function fuzzyEquals(other, variance) { + if (this.x - variance <= other.x && other.x <= this.x + variance && this.y - variance <= other.y && other.y <= this.y + variance) return true; + return false; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ")"; + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Vec2(); + var x = this.x; + var y = this.y; + out.x = x + (to.x - x) * ratio; + out.y = y + (to.y - y) * ratio; + return out; + }; + _proto.clampf = function clampf(min_inclusive, max_inclusive) { + this.x = _misc["default"].clampf(this.x, min_inclusive.x, max_inclusive.x); + this.y = _misc["default"].clampf(this.y, min_inclusive.y, max_inclusive.y); + return this; + }; + _proto.add = function add(vector, out) { + out = out || new Vec2(); + out.x = this.x + vector.x; + out.y = this.y + vector.y; + return out; + }; + _proto.addSelf = function addSelf(vector) { + this.x += vector.x; + this.y += vector.y; + return this; + }; + _proto.subtract = function subtract(vector) { + this.x -= vector.x; + this.y -= vector.y; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(num) { + this.x *= num; + this.y *= num; + return this; + }; + _proto.multiply = function multiply(vector) { + this.x *= vector.x; + this.y *= vector.y; + return this; + }; + _proto.divide = function divide(num) { + this.x /= num; + this.y /= num; + return this; + }; + _proto.negate = function negate() { + this.x = -this.x; + this.y = -this.y; + return this; + }; + _proto.dot = function dot(vector) { + return this.x * vector.x + this.y * vector.y; + }; + _proto.cross = function cross(vector) { + return this.x * vector.y - this.y * vector.x; + }; + _proto.len = function len() { + return Math.sqrt(this.x * this.x + this.y * this.y); + }; + _proto.lengthSqr = function lengthSqr() { + return this.x * this.x + this.y * this.y; + }; + _proto.normalizeSelf = function normalizeSelf() { + var magSqr = this.x * this.x + this.y * this.y; + if (1 === magSqr) return this; + if (0 === magSqr) return this; + var invsqrt = 1 / Math.sqrt(magSqr); + this.x *= invsqrt; + this.y *= invsqrt; + return this; + }; + _proto.normalize = function normalize(out) { + out = out || new Vec2(); + out.x = this.x; + out.y = this.y; + out.normalizeSelf(); + return out; + }; + _proto.angle = function angle(vector) { + var magSqr1 = this.magSqr(); + var magSqr2 = vector.magSqr(); + if (0 === magSqr1 || 0 === magSqr2) { + console.warn("Can't get angle between zero vector"); + return 0; + } + var dot = this.dot(vector); + var theta = dot / Math.sqrt(magSqr1 * magSqr2); + theta = _misc["default"].clampf(theta, -1, 1); + return Math.acos(theta); + }; + _proto.signAngle = function signAngle(vector) { + var angle = this.angle(vector); + return this.cross(vector) < 0 ? -angle : angle; + }; + _proto.rotate = function rotate(radians, out) { + out = out || new Vec2(); + out.x = this.x; + out.y = this.y; + return out.rotateSelf(radians); + }; + _proto.rotateSelf = function rotateSelf(radians) { + var sin = Math.sin(radians); + var cos = Math.cos(radians); + var x = this.x; + this.x = cos * x - sin * this.y; + this.y = sin * x + cos * this.y; + return this; + }; + _proto.project = function project(vector) { + return vector.multiplyScalar(this.dot(vector) / vector.dot(vector)); + }; + _proto.transformMat4 = function transformMat4(m, out) { + out = out || new Vec2(); + Vec2.transformMat4(out, this, m); + return out; + }; + _proto.maxAxis = function maxAxis() { + return Math.max(this.x, this.y); + }; + return Vec2; + })(_valueType["default"]); + exports["default"] = Vec2; + Vec2.sub = Vec2.subtract; + Vec2.mul = Vec2.multiply; + Vec2.scale = Vec2.multiplyScalar; + Vec2.mag = Vec2.len; + Vec2.squaredMagnitude = Vec2.lengthSqr; + Vec2.div = Vec2.divide; + Vec2.ONE_R = Vec2.ONE; + Vec2.ZERO_R = Vec2.ZERO; + Vec2.UP_R = Vec2.UP; + Vec2.RIGHT_R = Vec2.RIGHT; + var v2_1 = new Vec2(); + var v2_2 = new Vec2(); + _CCClass["default"].fastDefine("cc.Vec2", Vec2, { + x: 0, + y: 0 + }); + cc.v2 = function v2(x, y) { + return new Vec2(x, y); + }; + cc.Vec2 = Vec2; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "../utils/misc": 324, + "./utils": 346, + "./value-type": 347 + }], + 349: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueType = _interopRequireDefault(require("./value-type")); + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _misc = _interopRequireDefault(require("../utils/misc")); + var _vec = _interopRequireDefault(require("./vec2")); + var _utils = require("./utils"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _x = 0; + var _y = 0; + var _z = 0; + var Vec3 = (function (_ValueType) { + _inheritsLoose(Vec3, _ValueType); + var _proto = Vec3.prototype; + _proto.sub = function sub(vector, out) { + return Vec3.subtract(out || new Vec3(), this, vector); + }; + _proto.mul = function mul(num, out) { + return Vec3.multiplyScalar(out || new Vec3(), this, num); + }; + _proto.div = function div(num, out) { + return Vec3.multiplyScalar(out || new Vec3(), this, 1 / num); + }; + _proto.scale = function scale(vector, out) { + return Vec3.multiply(out || new Vec3(), this, vector); + }; + _proto.neg = function neg(out) { + return Vec3.negate(out || new Vec3(), this); + }; + Vec3.zero = function zero(out) { + out.x = 0; + out.y = 0; + out.z = 0; + return out; + }; + Vec3.clone = function clone(a) { + return new Vec3(a.x, a.y, a.z); + }; + Vec3.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + return out; + }; + Vec3.set = function set(out, x, y, z) { + out.x = x; + out.y = y; + out.z = z; + return out; + }; + Vec3.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + out.z = a.z + b.z; + return out; + }; + Vec3.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + out.z = a.z - b.z; + return out; + }; + Vec3.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + out.z = a.z * b.z; + return out; + }; + Vec3.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + out.z = a.z / b.z; + return out; + }; + Vec3.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + out.z = Math.ceil(a.z); + return out; + }; + Vec3.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + out.z = Math.floor(a.z); + return out; + }; + Vec3.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + out.z = Math.min(a.z, b.z); + return out; + }; + Vec3.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + out.z = Math.max(a.z, b.z); + return out; + }; + Vec3.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + out.z = Math.round(a.z); + return out; + }; + Vec3.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + return out; + }; + Vec3.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + return out; + }; + Vec3.distance = function distance(a, b) { + _x = b.x - a.x; + _y = b.y - a.y; + _z = b.z - a.z; + return Math.sqrt(_x * _x + _y * _y + _z * _z); + }; + Vec3.squaredDistance = function squaredDistance(a, b) { + _x = b.x - a.x; + _y = b.y - a.y; + _z = b.z - a.z; + return _x * _x + _y * _y + _z * _z; + }; + Vec3.len = function len(a) { + _x = a.x; + _y = a.y; + _z = a.z; + return Math.sqrt(_x * _x + _y * _y + _z * _z); + }; + Vec3.lengthSqr = function lengthSqr(a) { + _x = a.x; + _y = a.y; + _z = a.z; + return _x * _x + _y * _y + _z * _z; + }; + Vec3.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + return out; + }; + Vec3.inverse = function inverse(out, a) { + out.x = 1 / a.x; + out.y = 1 / a.y; + out.z = 1 / a.z; + return out; + }; + Vec3.inverseSafe = function inverseSafe(out, a) { + _x = a.x; + _y = a.y; + _z = a.z; + Math.abs(_x) < _utils.EPSILON ? out.x = 0 : out.x = 1 / _x; + Math.abs(_y) < _utils.EPSILON ? out.y = 0 : out.y = 1 / _y; + Math.abs(_z) < _utils.EPSILON ? out.z = 0 : out.z = 1 / _z; + return out; + }; + Vec3.normalize = function normalize(out, a) { + _x = a.x; + _y = a.y; + _z = a.z; + var len = _x * _x + _y * _y + _z * _z; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = _x * len; + out.y = _y * len; + out.z = _z * len; + } + return out; + }; + Vec3.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z; + }; + Vec3.cross = function cross(out, a, b) { + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + out.x = ay * bz - az * by; + out.y = az * bx - ax * bz; + out.z = ax * by - ay * bx; + return out; + }; + Vec3.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + return out; + }; + Vec3.random = function random(out, scale) { + scale = scale || 1; + var phi = 2 * (0, _utils.random)() * Math.PI; + var cosTheta = 2 * (0, _utils.random)() - 1; + var sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + out.x = sinTheta * Math.cos(phi) * scale; + out.y = sinTheta * Math.sin(phi) * scale; + out.z = cosTheta * scale; + return out; + }; + Vec3.transformMat4 = function transformMat4(out, a, mat) { + _x = a.x; + _y = a.y; + _z = a.z; + var m = mat.m; + var rhw = m[3] * _x + m[7] * _y + m[11] * _z + m[15]; + rhw = rhw ? 1 / rhw : 1; + out.x = (m[0] * _x + m[4] * _y + m[8] * _z + m[12]) * rhw; + out.y = (m[1] * _x + m[5] * _y + m[9] * _z + m[13]) * rhw; + out.z = (m[2] * _x + m[6] * _y + m[10] * _z + m[14]) * rhw; + return out; + }; + Vec3.transformMat4Normal = function transformMat4Normal(out, a, mat) { + _x = a.x; + _y = a.y; + _z = a.z; + var m = mat.m; + var rhw = m[3] * _x + m[7] * _y + m[11] * _z; + rhw = rhw ? 1 / rhw : 1; + out.x = (m[0] * _x + m[4] * _y + m[8] * _z) * rhw; + out.y = (m[1] * _x + m[5] * _y + m[9] * _z) * rhw; + out.z = (m[2] * _x + m[6] * _y + m[10] * _z) * rhw; + return out; + }; + Vec3.transformMat3 = function transformMat3(out, a, mat) { + _x = a.x; + _y = a.y; + _z = a.z; + var m = mat.m; + out.x = _x * m[0] + _y * m[3] + _z * m[6]; + out.y = _x * m[1] + _y * m[4] + _z * m[7]; + out.z = _x * m[2] + _y * m[5] + _z * m[8]; + return out; + }; + Vec3.transformAffine = function transformAffine(out, v, mat) { + _x = v.x; + _y = v.y; + _z = v.z; + var m = mat.m; + out.x = m[0] * _x + m[1] * _y + m[2] * _z + m[3]; + out.y = m[4] * _x + m[5] * _y + m[6] * _z + m[7]; + out.x = m[8] * _x + m[9] * _y + m[10] * _z + m[11]; + return out; + }; + Vec3.transformQuat = function transformQuat(out, a, q) { + var ix = q.w * a.x + q.y * a.z - q.z * a.y; + var iy = q.w * a.y + q.z * a.x - q.x * a.z; + var iz = q.w * a.z + q.x * a.y - q.y * a.x; + var iw = -q.x * a.x - q.y * a.y - q.z * a.z; + out.x = ix * q.w + iw * -q.x + iy * -q.z - iz * -q.y; + out.y = iy * q.w + iw * -q.y + iz * -q.x - ix * -q.z; + out.z = iz * q.w + iw * -q.z + ix * -q.y - iy * -q.x; + return out; + }; + Vec3.transformRTS = function transformRTS(out, a, r, t, s) { + var x = a.x * s.x; + var y = a.y * s.y; + var z = a.z * s.z; + var ix = r.w * x + r.y * z - r.z * y; + var iy = r.w * y + r.z * x - r.x * z; + var iz = r.w * z + r.x * y - r.y * x; + var iw = -r.x * x - r.y * y - r.z * z; + out.x = ix * r.w + iw * -r.x + iy * -r.z - iz * -r.y + t.x; + out.y = iy * r.w + iw * -r.y + iz * -r.x - ix * -r.z + t.y; + out.z = iz * r.w + iw * -r.z + ix * -r.y - iy * -r.x + t.z; + return out; + }; + Vec3.transformInverseRTS = function transformInverseRTS(out, a, r, t, s) { + var x = a.x - t.x; + var y = a.y - t.y; + var z = a.z - t.z; + var ix = r.w * x - r.y * z + r.z * y; + var iy = r.w * y - r.z * x + r.x * z; + var iz = r.w * z - r.x * y + r.y * x; + var iw = r.x * x + r.y * y + r.z * z; + out.x = (ix * r.w + iw * r.x + iy * r.z - iz * r.y) / s.x; + out.y = (iy * r.w + iw * r.y + iz * r.x - ix * r.z) / s.y; + out.z = (iz * r.w + iw * r.z + ix * r.y - iy * r.x) / s.z; + return out; + }; + Vec3.rotateX = function rotateX(out, v, o, a) { + _x = v.x - o.x; + _y = v.y - o.y; + _z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = _x; + var ry = _y * cos - _z * sin; + var rz = _y * sin + _z * cos; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.rotateY = function rotateY(out, v, o, a) { + _x = v.x - o.x; + _y = v.y - o.y; + _z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = _z * sin + _x * cos; + var ry = _y; + var rz = _z * cos - _x * sin; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.rotateZ = function rotateZ(out, v, o, a) { + _x = v.x - o.x; + _y = v.y - o.y; + _z = v.z - o.z; + var cos = Math.cos(a); + var sin = Math.sin(a); + var rx = _x * cos - _y * sin; + var ry = _x * sin + _y * cos; + var rz = _z; + out.x = rx + o.x; + out.y = ry + o.y; + out.z = rz + o.z; + return out; + }; + Vec3.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z; + }; + Vec3.equals = function equals(a, b, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + var a0 = a.x, a1 = a.y, a2 = a.z; + var b0 = b.x, b1 = b.y, b2 = b.z; + return Math.abs(a0 - b0) <= epsilon * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= epsilon * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= epsilon * Math.max(1, Math.abs(a2), Math.abs(b2)); + }; + Vec3.angle = function angle(a, b) { + Vec3.normalize(v3_1, a); + Vec3.normalize(v3_2, b); + var cosine = Vec3.dot(v3_1, v3_2); + if (cosine > 1) return 0; + if (cosine < -1) return Math.PI; + return Math.acos(cosine); + }; + Vec3.projectOnPlane = function projectOnPlane(out, a, n) { + return Vec3.subtract(out, a, Vec3.project(out, a, n)); + }; + Vec3.project = function project(out, a, b) { + var sqrLen = Vec3.lengthSqr(b); + return sqrLen < 1e-6 ? Vec3.set(out, 0, 0, 0) : Vec3.multiplyScalar(out, b, Vec3.dot(a, b) / sqrLen); + }; + Vec3.toArray = function toArray(out, v, ofs) { + void 0 === ofs && (ofs = 0); + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + out[ofs + 2] = v.z; + return out; + }; + Vec3.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + return out; + }; + _createClass(Vec3, null, [{ + key: "ONE", + get: function get() { + return new Vec3(1, 1, 1); + } + }, { + key: "ZERO", + get: function get() { + return new Vec3(); + } + }, { + key: "UP", + get: function get() { + return new Vec3(0, 1, 0); + } + }, { + key: "RIGHT", + get: function get() { + return new Vec3(1, 0, 0); + } + }, { + key: "FORWARD", + get: function get() { + return new Vec3(0, 0, 1); + } + }]); + function Vec3(x, y, z) { + var _this; + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === z && (z = 0); + _this = _ValueType.call(this) || this; + _this.mag = Vec3.prototype.len; + _this.magSqr = Vec3.prototype.lengthSqr; + _this.subSelf = Vec3.prototype.subtract; + _this.mulSelf = Vec3.prototype.multiplyScalar; + _this.divSelf = Vec3.prototype.divide; + _this.scaleSelf = Vec3.prototype.multiply; + _this.negSelf = Vec3.prototype.negate; + _this.x = void 0; + _this.y = void 0; + _this.z = void 0; + _this.angle = _vec["default"].prototype.angle; + _this.project = _vec["default"].prototype.project; + if (x && "object" === typeof x) { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + } else { + _this.x = x; + _this.y = y; + _this.z = z; + } + return _this; + } + _proto.clone = function clone() { + return new Vec3(this.x, this.y, this.z); + }; + _proto.set = function set(newValue) { + this.x = newValue.x; + this.y = newValue.y; + this.z = newValue.z; + return this; + }; + _proto.equals = function equals(other) { + return other && this.x === other.x && this.y === other.y && this.z === other.z; + }; + _proto.fuzzyEquals = function fuzzyEquals(other, variance) { + if (this.x - variance <= other.x && other.x <= this.x + variance && this.y - variance <= other.y && other.y <= this.y + variance && this.z - variance <= other.z && other.z <= this.z + variance) return true; + return false; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ")"; + }; + _proto.lerp = function lerp(to, ratio, out) { + out = out || new Vec3(); + Vec3.lerp(out, this, to, ratio); + return out; + }; + _proto.clampf = function clampf(min_inclusive, max_inclusive) { + this.x = _misc["default"].clampf(this.x, min_inclusive.x, max_inclusive.x); + this.y = _misc["default"].clampf(this.y, min_inclusive.y, max_inclusive.y); + this.z = _misc["default"].clampf(this.z, min_inclusive.z, max_inclusive.z); + return this; + }; + _proto.addSelf = function addSelf(vector) { + this.x += vector.x; + this.y += vector.y; + this.z += vector.z; + return this; + }; + _proto.add = function add(vector, out) { + out = out || new Vec3(); + out.x = this.x + vector.x; + out.y = this.y + vector.y; + out.z = this.z + vector.z; + return out; + }; + _proto.subtract = function subtract(vector) { + this.x -= vector.x; + this.y -= vector.y; + this.z -= vector.z; + return this; + }; + _proto.multiplyScalar = function multiplyScalar(num) { + this.x *= num; + this.y *= num; + this.z *= num; + return this; + }; + _proto.multiply = function multiply(vector) { + this.x *= vector.x; + this.y *= vector.y; + this.z *= vector.z; + return this; + }; + _proto.divide = function divide(num) { + this.x /= num; + this.y /= num; + this.z /= num; + return this; + }; + _proto.negate = function negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + }; + _proto.dot = function dot(vector) { + return this.x * vector.x + this.y * vector.y + this.z * vector.z; + }; + _proto.cross = function cross(vector, out) { + out = out || new Vec3(); + Vec3.cross(out, this, vector); + return out; + }; + _proto.len = function len() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + _proto.lengthSqr = function lengthSqr() { + return this.x * this.x + this.y * this.y + this.z * this.z; + }; + _proto.normalizeSelf = function normalizeSelf() { + Vec3.normalize(this, this); + return this; + }; + _proto.normalize = function normalize(out) { + out = out || new Vec3(); + Vec3.normalize(out, this); + return out; + }; + _proto.transformMat4 = function transformMat4(m, out) { + out = out || new Vec3(); + Vec3.transformMat4(out, this, m); + return out; + }; + _proto.maxAxis = function maxAxis() { + return Math.max(this.x, this.y, this.z); + }; + _proto.signAngle = function signAngle(vector) { + cc.warnID(1408, "vec3.signAngle", "v2.1", "cc.v2(selfVector).signAngle(vector)"); + var vec1 = new _vec["default"](this.x, this.y); + var vec2 = new _vec["default"](vector.x, vector.y); + return vec1.signAngle(vec2); + }; + _proto.rotate = function rotate(radians, out) { + cc.warnID(1408, "vec3.rotate", "v2.1", "cc.v2(selfVector).rotate(radians, out)"); + return _vec["default"].prototype.rotate.call(this, radians, out); + }; + _proto.rotateSelf = function rotateSelf(radians) { + cc.warnID(1408, "vec3.rotateSelf", "v2.1", "cc.v2(selfVector).rotateSelf(radians)"); + return _vec["default"].prototype.rotateSelf.call(this, radians); + }; + return Vec3; + })(_valueType["default"]); + exports["default"] = Vec3; + Vec3.sub = Vec3.subtract; + Vec3.mul = Vec3.multiply; + Vec3.scale = Vec3.multiplyScalar; + Vec3.mag = Vec3.len; + Vec3.squaredMagnitude = Vec3.lengthSqr; + Vec3.div = Vec3.divide; + Vec3.ONE_R = Vec3.ONE; + Vec3.ZERO_R = Vec3.ZERO; + Vec3.UP_R = Vec3.UP; + Vec3.RIGHT_R = Vec3.RIGHT; + Vec3.FRONT_R = Vec3.FORWARD; + var v3_1 = new Vec3(); + var v3_2 = new Vec3(); + _CCClass["default"].fastDefine("cc.Vec3", Vec3, { + x: 0, + y: 0, + z: 0 + }); + cc.v3 = function v3(x, y, z) { + return new Vec3(x, y, z); + }; + cc.Vec3 = Vec3; + module.exports = exports["default"]; + }), { + "../platform/CCClass": 239, + "../utils/misc": 324, + "./utils": 346, + "./value-type": 347, + "./vec2": 348 + }], + 350: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.v4 = v4; + exports["default"] = void 0; + var _CCClass = _interopRequireDefault(require("../platform/CCClass")); + var _valueType = _interopRequireDefault(require("./value-type")); + var _utils = require("./utils"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _x = 0; + var _y = 0; + var _z = 0; + var _w = 0; + var Vec4 = (function (_ValueType) { + _inheritsLoose(Vec4, _ValueType); + var _proto = Vec4.prototype; + _proto.sub = function sub(vector, out) { + return Vec4.subtract(out || new Vec4(), this, vector); + }; + _proto.mul = function mul(num, out) { + return Vec4.multiplyScalar(out || new Vec4(), this, num); + }; + _proto.div = function div(num, out) { + return Vec4.multiplyScalar(out || new Vec4(), this, 1 / num); + }; + _proto.scale = function scale(vector, out) { + return Vec4.multiply(out || new Vec4(), this, vector); + }; + _proto.neg = function neg(out) { + return Vec4.negate(out || new Vec4(), this); + }; + Vec4.clone = function clone(a) { + return new Vec4(a.x, a.y, a.z, a.w); + }; + Vec4.copy = function copy(out, a) { + out.x = a.x; + out.y = a.y; + out.z = a.z; + out.w = a.w; + return out; + }; + Vec4.set = function set(out, x, y, z, w) { + out.x = x; + out.y = y; + out.z = z; + out.w = w; + return out; + }; + Vec4.add = function add(out, a, b) { + out.x = a.x + b.x; + out.y = a.y + b.y; + out.z = a.z + b.z; + out.w = a.w + b.w; + return out; + }; + Vec4.subtract = function subtract(out, a, b) { + out.x = a.x - b.x; + out.y = a.y - b.y; + out.z = a.z - b.z; + out.w = a.w - b.w; + return out; + }; + Vec4.multiply = function multiply(out, a, b) { + out.x = a.x * b.x; + out.y = a.y * b.y; + out.z = a.z * b.z; + out.w = a.w * b.w; + return out; + }; + Vec4.divide = function divide(out, a, b) { + out.x = a.x / b.x; + out.y = a.y / b.y; + out.z = a.z / b.z; + out.w = a.w / b.w; + return out; + }; + Vec4.ceil = function ceil(out, a) { + out.x = Math.ceil(a.x); + out.y = Math.ceil(a.y); + out.z = Math.ceil(a.z); + out.w = Math.ceil(a.w); + return out; + }; + Vec4.floor = function floor(out, a) { + out.x = Math.floor(a.x); + out.y = Math.floor(a.y); + out.z = Math.floor(a.z); + out.w = Math.floor(a.w); + return out; + }; + Vec4.min = function min(out, a, b) { + out.x = Math.min(a.x, b.x); + out.y = Math.min(a.y, b.y); + out.z = Math.min(a.z, b.z); + out.w = Math.min(a.w, b.w); + return out; + }; + Vec4.max = function max(out, a, b) { + out.x = Math.max(a.x, b.x); + out.y = Math.max(a.y, b.y); + out.z = Math.max(a.z, b.z); + out.w = Math.max(a.w, b.w); + return out; + }; + Vec4.round = function round(out, a) { + out.x = Math.round(a.x); + out.y = Math.round(a.y); + out.z = Math.round(a.z); + out.w = Math.round(a.w); + return out; + }; + Vec4.multiplyScalar = function multiplyScalar(out, a, b) { + out.x = a.x * b; + out.y = a.y * b; + out.z = a.z * b; + out.w = a.w * b; + return out; + }; + Vec4.scaleAndAdd = function scaleAndAdd(out, a, b, scale) { + out.x = a.x + b.x * scale; + out.y = a.y + b.y * scale; + out.z = a.z + b.z * scale; + out.w = a.w + b.w * scale; + return out; + }; + Vec4.distance = function distance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + var w = b.w - a.w; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + Vec4.squaredDistance = function squaredDistance(a, b) { + var x = b.x - a.x; + var y = b.y - a.y; + var z = b.z - a.z; + var w = b.w - a.w; + return x * x + y * y + z * z + w * w; + }; + Vec4.len = function len(a) { + _x = a.x; + _y = a.y; + _z = a.z; + _w = a.w; + return Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w); + }; + Vec4.lengthSqr = function lengthSqr(a) { + _x = a.x; + _y = a.y; + _z = a.z; + _w = a.w; + return _x * _x + _y * _y + _z * _z + _w * _w; + }; + Vec4.negate = function negate(out, a) { + out.x = -a.x; + out.y = -a.y; + out.z = -a.z; + out.w = -a.w; + return out; + }; + Vec4.inverse = function inverse(out, a) { + out.x = 1 / a.x; + out.y = 1 / a.y; + out.z = 1 / a.z; + out.w = 1 / a.w; + return out; + }; + Vec4.inverseSafe = function inverseSafe(out, a) { + _x = a.x; + _y = a.y; + _z = a.z; + _w = a.w; + Math.abs(_x) < _utils.EPSILON ? out.x = 0 : out.x = 1 / _x; + Math.abs(_y) < _utils.EPSILON ? out.y = 0 : out.y = 1 / _y; + Math.abs(_z) < _utils.EPSILON ? out.z = 0 : out.z = 1 / _z; + Math.abs(_w) < _utils.EPSILON ? out.w = 0 : out.w = 1 / _w; + return out; + }; + Vec4.normalize = function normalize(out, a) { + _x = a.x; + _y = a.y; + _z = a.z; + _w = a.w; + var len = _x * _x + _y * _y + _z * _z + _w * _w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = _x * len; + out.y = _y * len; + out.z = _z * len; + out.w = _w * len; + } + return out; + }; + Vec4.dot = function dot(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + }; + Vec4.lerp = function lerp(out, a, b, t) { + out.x = a.x + t * (b.x - a.x); + out.y = a.y + t * (b.y - a.y); + out.z = a.z + t * (b.z - a.z); + out.w = a.w + t * (b.w - a.w); + return out; + }; + Vec4.random = function random(out, scale) { + scale = scale || 1; + var phi = 2 * (0, _utils.random)() * Math.PI; + var cosTheta = 2 * (0, _utils.random)() - 1; + var sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + out.x = sinTheta * Math.cos(phi) * scale; + out.y = sinTheta * Math.sin(phi) * scale; + out.z = cosTheta * scale; + out.w = 0; + return out; + }; + Vec4.transformMat4 = function transformMat4(out, a, mat) { + _x = a.x; + _y = a.y; + _z = a.z; + _w = a.w; + var m = mat.m; + out.x = m[0] * _x + m[4] * _y + m[8] * _z + m[12] * _w; + out.y = m[1] * _x + m[5] * _y + m[9] * _z + m[13] * _w; + out.z = m[2] * _x + m[6] * _y + m[10] * _z + m[14] * _w; + out.w = m[3] * _x + m[7] * _y + m[11] * _z + m[15] * _w; + return out; + }; + Vec4.transformAffine = function transformAffine(out, v, mat) { + _x = v.x; + _y = v.y; + _z = v.z; + _w = v.w; + var m = mat.m; + out.x = m[0] * _x + m[1] * _y + m[2] * _z + m[3] * _w; + out.y = m[4] * _x + m[5] * _y + m[6] * _z + m[7] * _w; + out.x = m[8] * _x + m[9] * _y + m[10] * _z + m[11] * _w; + out.w = v.w; + return out; + }; + Vec4.transformQuat = function transformQuat(out, a, q) { + var x = a.x, y = a.y, z = a.z; + _x = q.x; + _y = q.y; + _z = q.z; + _w = q.w; + var ix = _w * x + _y * z - _z * y; + var iy = _w * y + _z * x - _x * z; + var iz = _w * z + _x * y - _y * x; + var iw = -_x * x - _y * y - _z * z; + out.x = ix * _w + iw * -_x + iy * -_z - iz * -_y; + out.y = iy * _w + iw * -_y + iz * -_x - ix * -_z; + out.z = iz * _w + iw * -_z + ix * -_y - iy * -_x; + out.w = a.w; + return out; + }; + Vec4.strictEquals = function strictEquals(a, b) { + return a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w; + }; + Vec4.equals = function equals(a, b, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + return Math.abs(a.x - b.x) <= epsilon * Math.max(1, Math.abs(a.x), Math.abs(b.x)) && Math.abs(a.y - b.y) <= epsilon * Math.max(1, Math.abs(a.y), Math.abs(b.y)) && Math.abs(a.z - b.z) <= epsilon * Math.max(1, Math.abs(a.z), Math.abs(b.z)) && Math.abs(a.w - b.w) <= epsilon * Math.max(1, Math.abs(a.w), Math.abs(b.w)); + }; + Vec4.toArray = function toArray(out, v, ofs) { + void 0 === ofs && (ofs = 0); + out[ofs + 0] = v.x; + out[ofs + 1] = v.y; + out[ofs + 2] = v.z; + out[ofs + 3] = v.w; + return out; + }; + Vec4.fromArray = function fromArray(out, arr, ofs) { + void 0 === ofs && (ofs = 0); + out.x = arr[ofs + 0]; + out.y = arr[ofs + 1]; + out.z = arr[ofs + 2]; + out.w = arr[ofs + 3]; + return out; + }; + _createClass(Vec4, null, [{ + key: "ZERO", + get: function get() { + return new Vec4(0, 0, 0, 0); + } + }, { + key: "ONE", + get: function get() { + return new Vec4(1, 1, 1, 1); + } + }, { + key: "NEG_ONE", + get: function get() { + return new Vec4(-1, -1, -1, -1); + } + }]); + function Vec4(x, y, z, w) { + var _this; + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === z && (z = 0); + void 0 === w && (w = 0); + _this = _ValueType.call(this) || this; + _this.mag = Vec4.prototype.len; + _this.magSqr = Vec4.prototype.lengthSqr; + _this.subSelf = Vec4.prototype.subtract; + _this.mulSelf = Vec4.prototype.multiplyScalar; + _this.divSelf = Vec4.prototype.divide; + _this.scaleSelf = Vec4.prototype.multiply; + _this.negSelf = Vec4.prototype.negate; + _this.x = void 0; + _this.y = void 0; + _this.z = void 0; + _this.w = void 0; + if (x && "object" === typeof x) { + _this.x = x.x; + _this.y = x.y; + _this.z = x.z; + _this.w = x.w; + } else { + _this.x = x; + _this.y = y; + _this.z = z; + _this.w = w; + } + return _this; + } + _proto.clone = function clone() { + return new Vec4(this.x, this.y, this.z, this.w); + }; + _proto.set = function set(x, y, z, w) { + if (x && "object" === typeof x) { + this.x = x.x; + this.y = x.y; + this.z = x.z; + this.w = x.w; + } else { + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = w || 0; + } + return this; + }; + _proto.equals = function equals(other, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + return Math.abs(this.x - other.x) <= epsilon * Math.max(1, Math.abs(this.x), Math.abs(other.x)) && Math.abs(this.y - other.y) <= epsilon * Math.max(1, Math.abs(this.y), Math.abs(other.y)) && Math.abs(this.z - other.z) <= epsilon * Math.max(1, Math.abs(this.z), Math.abs(other.z)) && Math.abs(this.w - other.w) <= epsilon * Math.max(1, Math.abs(this.w), Math.abs(other.w)); + }; + _proto.equals4f = function equals4f(x, y, z, w, epsilon) { + void 0 === epsilon && (epsilon = _utils.EPSILON); + return Math.abs(this.x - x) <= epsilon * Math.max(1, Math.abs(this.x), Math.abs(x)) && Math.abs(this.y - y) <= epsilon * Math.max(1, Math.abs(this.y), Math.abs(y)) && Math.abs(this.z - z) <= epsilon * Math.max(1, Math.abs(this.z), Math.abs(z)) && Math.abs(this.w - w) <= epsilon * Math.max(1, Math.abs(this.w), Math.abs(w)); + }; + _proto.strictEquals = function strictEquals(other) { + return this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w; + }; + _proto.strictEquals4f = function strictEquals4f(x, y, z, w) { + return this.x === x && this.y === y && this.z === z && this.w === w; + }; + _proto.lerp = function lerp(to, ratio) { + _x = this.x; + _y = this.y; + _z = this.z; + _w = this.w; + this.x = _x + ratio * (to.x - _x); + this.y = _y + ratio * (to.y - _y); + this.z = _z + ratio * (to.z - _z); + this.w = _w + ratio * (to.w - _w); + return this; + }; + _proto.toString = function toString() { + return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ", " + this.w.toFixed(2) + ")"; + }; + _proto.clampf = function clampf(minInclusive, maxInclusive) { + this.x = (0, _utils.clamp)(this.x, minInclusive.x, maxInclusive.x); + this.y = (0, _utils.clamp)(this.y, minInclusive.y, maxInclusive.y); + this.z = (0, _utils.clamp)(this.z, minInclusive.z, maxInclusive.z); + this.w = (0, _utils.clamp)(this.w, minInclusive.w, maxInclusive.w); + return this; + }; + _proto.addSelf = function addSelf(vector) { + this.x += vector.x; + this.y += vector.y; + this.z += vector.z; + this.w += vector.w; + return this; + }; + _proto.add = function add(vector, out) { + out = out || new Vec4(); + out.x = this.x + vector.x; + out.y = this.y + vector.y; + out.z = this.z + vector.z; + out.w = this.w + vector.w; + return out; + }; + _proto.subtract = function subtract(vector, out) { + out = out || new Vec4(); + out.x = this.x - vector.x; + out.y = this.y - vector.y; + out.z = this.z - vector.z; + out.w = this.w - vector.w; + return out; + }; + _proto.multiplyScalar = function multiplyScalar(num) { + this.x *= num; + this.y *= num; + this.z *= num; + this.w *= num; + return this; + }; + _proto.multiply = function multiply(vector) { + this.x *= vector.x; + this.y *= vector.y; + this.z *= vector.z; + this.w *= vector.w; + return this; + }; + _proto.divide = function divide(num) { + this.x /= num; + this.y /= num; + this.z /= num; + this.w /= num; + return this; + }; + _proto.negate = function negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + this.w = -this.w; + return this; + }; + _proto.dot = function dot(vector) { + return this.x * vector.x + this.y * vector.y + this.z * vector.z + this.w * vector.w; + }; + _proto.cross = function cross(vector, out) { + out = out || new Vec4(); + var ax = this.x, ay = this.y, az = this.z; + var bx = vector.x, by = vector.y, bz = vector.z; + out.x = ay * bz - az * by; + out.y = az * bx - ax * bz; + out.z = ax * by - ay * bx; + return out; + }; + _proto.len = function len() { + var x = this.x, y = this.y, z = this.z, w = this.w; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + _proto.lengthSqr = function lengthSqr() { + var x = this.x, y = this.y, z = this.z, w = this.w; + return x * x + y * y + z * z + w * w; + }; + _proto.normalizeSelf = function normalizeSelf() { + this.normalize(this); + return this; + }; + _proto.normalize = function normalize(out) { + out = out || new Vec4(); + _x = this.x; + _y = this.y; + _z = this.z; + _w = this.w; + var len = _x * _x + _y * _y + _z * _z + _w * _w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out.x = _x * len; + out.y = _y * len; + out.z = _z * len; + out.w = _w * len; + } + return out; + }; + _proto.transformMat4 = function transformMat4(matrix, out) { + out = out || new Vec4(); + _x = this.x; + _y = this.y; + _z = this.z; + _w = this.w; + var m = matrix.m; + out.x = m[0] * _x + m[4] * _y + m[8] * _z + m[12] * _w; + out.y = m[1] * _x + m[5] * _y + m[9] * _z + m[13] * _w; + out.z = m[2] * _x + m[6] * _y + m[10] * _z + m[14] * _w; + out.w = m[3] * _x + m[7] * _y + m[11] * _z + m[15] * _w; + return out; + }; + _proto.maxAxis = function maxAxis() { + return Math.max(this.x, this.y, this.z, this.w); + }; + return Vec4; + })(_valueType["default"]); + exports["default"] = Vec4; + Vec4.sub = Vec4.subtract; + Vec4.mul = Vec4.multiply; + Vec4.div = Vec4.divide; + Vec4.scale = Vec4.multiplyScalar; + Vec4.mag = Vec4.len; + Vec4.squaredMagnitude = Vec4.lengthSqr; + Vec4.ZERO_R = Vec4.ZERO; + Vec4.ONE_R = Vec4.ONE; + Vec4.NEG_ONE_R = Vec4.NEG_ONE; + _CCClass["default"].fastDefine("cc.Vec4", Vec4, { + x: 0, + y: 0, + z: 0, + w: 0 + }); + function v4(x, y, z, w) { + return new Vec4(x, y, z, w); + } + cc.v4 = v4; + cc.Vec4 = Vec4; + }), { + "../platform/CCClass": 239, + "./utils": 346, + "./value-type": 347 + }], + 351: [(function (require, module, exports) { + "use strict"; + var js = cc.js; + true; + var deprecateEnum = function deprecateEnum(obj, oldPath, newPath, hasTypePrefixBefore) { + false; + hasTypePrefixBefore = false !== hasTypePrefixBefore; + var enumDef = Function("return " + newPath)(); + var entries = cc.Enum.getList(enumDef); + var delimiter = hasTypePrefixBefore ? "_" : "."; + for (var i = 0; i < entries.length; i++) { + var entry = entries[i].name; + var oldPropName; + if (hasTypePrefixBefore) { + var oldTypeName = oldPath.split(".").slice(-1)[0]; + oldPropName = oldTypeName + "_" + entry; + } else oldPropName = entry; + js.get(obj, oldPropName, function (entry) { + cc.errorID(1400, oldPath + delimiter + entry, newPath + "." + entry); + return enumDef[entry]; + }.bind(null, entry)); + } + }; + var markAsRemoved = function markAsRemoved(ownerCtor, removedProps, ownerName) { + if (!ownerCtor) return; + ownerName = ownerName || js.getClassName(ownerCtor); + removedProps.forEach((function (prop) { + function error() { + cc.errorID(1406, ownerName, prop); + } + js.getset(ownerCtor.prototype, prop, error, error); + })); + }; + var markAsDeprecated = function markAsDeprecated(ownerCtor, deprecatedProps, ownerName) { + if (!ownerCtor) return; + ownerName = ownerName || js.getClassName(ownerCtor); + var descriptors = Object.getOwnPropertyDescriptors(ownerCtor.prototype); + deprecatedProps.forEach((function (prop) { + var deprecatedProp = prop[0]; + var newProp = prop[1]; + var descriptor = descriptors[deprecatedProp]; + js.getset(ownerCtor.prototype, deprecatedProp, (function () { + cc.warnID(1400, ownerName + "." + deprecatedProp, ownerName + "." + newProp); + return descriptor.get.call(this); + }), (function (v) { + cc.warnID(1400, ownerName + "." + deprecatedProp, ownerName + "." + newProp); + descriptor.set.call(this, v); + })); + })); + }; + var markAsRemovedInObject = function markAsRemovedInObject(ownerObj, removedProps, ownerName) { + if (!ownerObj) return; + removedProps.forEach((function (prop) { + function error() { + cc.errorID(1406, ownerName, prop); + } + js.getset(ownerObj, prop, error); + })); + }; + var provideClearError = function provideClearError(owner, obj, ownerName) { + if (!owner) return; + var className = ownerName || cc.js.getClassName(owner); + var Info = "Sorry, " + className + ".%s is removed, please use %s instead."; + var _loop = function _loop() { + function define(prop, getset) { + function accessor(newProp) { + cc.error(Info, prop, newProp); + } + Array.isArray(getset) || (getset = getset.split(",").map((function (x) { + return x.trim(); + }))); + try { + js.getset(owner, prop, accessor.bind(null, getset[0]), getset[1] && accessor.bind(null, getset[1])); + } catch (e) { } + } + getset = obj[prop]; + if ("*" === prop[0]) { + etProp = prop.slice(1); + define("g" + etProp, getset); + define("s" + etProp, getset); + } else prop.split(",").map((function (x) { + return x.trim(); + })).forEach((function (x) { + define(x, getset); + })); + }; + for (var prop in obj) { + var getset; + var etProp; + _loop(); + } + }; + var markFunctionWarning = function markFunctionWarning(ownerCtor, obj, ownerName) { + if (!ownerCtor) return; + ownerName = ownerName || js.getClassName(ownerCtor); + for (var prop in obj) (function () { + var propName = prop; + var originFunc = ownerCtor[propName]; + if (!originFunc) return; + function warn() { + cc.warn("Sorry, %s.%s is deprecated. Please use %s instead", ownerName, propName, obj[propName]); + return originFunc.apply(this, arguments); + } + ownerCtor[propName] = warn; + })(); + }; + js.get(cc, "info", (function () { + cc.errorID(1400, "cc.info", "cc.log"); + return cc.log; + })); + js.get(cc, "spriteFrameCache", (function () { + cc.errorID(1404); + })); + js.get(cc, "vmath", (function () { + cc.warnID(1400, "cc.vmath", "cc.math"); + return cc.math; + })); + js.get(cc.math, "vec2", (function () { + cc.warnID(1400, "cc.vmath.vec2", "cc.Vec2"); + return cc.Vec2; + })); + js.get(cc.math, "vec3", (function () { + cc.warnID(1400, "cc.vmath.vec3", "cc.Vec3"); + return cc.Vec3; + })); + js.get(cc.math, "vec4", (function () { + cc.warnID(1400, "cc.vmath.vec4", "cc.Vec4"); + return cc.Vec4; + })); + js.get(cc.math, "mat4", (function () { + cc.warnID(1400, "cc.vmath.mat4", "cc.Mat4"); + return cc.Mat4; + })); + js.get(cc.math, "mat3", (function () { + cc.warnID(1400, "cc.vmath.mat3", "cc.Mat3"); + return cc.Mat3; + })); + js.get(cc.math, "quat", (function () { + cc.warnID(1400, "cc.vmath.quat", "cc.Quat"); + return cc.Quat; + })); + js.get(cc.SpriteFrame.prototype, "_textureLoaded", (function () { + cc.errorID(1400, "spriteFrame._textureLoaded", "spriteFrame.textureLoaded()"); + return this.textureLoaded(); + })); + markAsRemoved(cc.SpriteFrame, ["addLoadedEventListener"]); + markFunctionWarning(cc.Sprite.prototype, { + setState: "cc.Sprite.setMaterial", + getState: "cc.Sprite.getMaterial" + }, "cc.Sprite"); + js.get(cc.SpriteFrame.prototype, "clearTexture", (function () { + cc.errorID(1406, "cc.SpriteFrame", "clearTexture"); + return function () { }; + })); + js.get(cc, "textureCache", (function () { + cc.errorID(1406, "cc", "textureCache"); + })); + var Texture2D = cc.Texture2D; + js.get(Texture2D.prototype, "releaseTexture", (function () { + cc.errorID(1400, "texture.releaseTexture()", "texture.destroy()"); + return this.destroy; + })); + js.get(Texture2D.prototype, "getName", (function () { + cc.errorID(1400, "texture.getName()", "texture._glID"); + return function () { + return this._glID || null; + }; + })); + js.get(Texture2D.prototype, "isLoaded", (function () { + cc.errorID(1400, "texture.isLoaded function", "texture.loaded property"); + return function () { + return this.loaded; + }; + })); + js.get(Texture2D.prototype, "setAntiAliasTexParameters", (function () { + cc.errorID(1400, "texture.setAntiAliasTexParameters()", "texture.setFilters(cc.Texture2D.Filter.LINEAR, cc.Texture2D.Filter.LINEAR)"); + return function () { + this.setFilters(Texture2D.Filter.LINEAR, Texture2D.Filter.LINEAR); + }; + })); + js.get(Texture2D.prototype, "setAliasTexParameters", (function () { + cc.errorID(1400, "texture.setAntiAliasTexParameters()", "texture.setFilters(cc.Texture2D.Filter.NEAREST, cc.Texture2D.Filter.NEAREST)"); + return function () { + this.setFilters(Texture2D.Filter.NEAREST, Texture2D.Filter.NEAREST); + }; + })); + markAsRemovedInObject(cc.macro, ["ENABLE_GL_STATE_CACHE", "FIX_ARTIFACTS_BY_STRECHING_TEXEL"], "cc.macro"); + provideClearError(cc.macro, { + PI: "Math.PI", + PI2: "Math.PI * 2", + FLT_MAX: "Number.MAX_VALUE", + FLT_MIN: "Number.MIN_VALUE", + UINT_MAX: "Number.MAX_SAFE_INTEGER" + }, "cc.macro"); + markAsRemovedInObject(cc.game, ["CONFIG_KEY"], "cc.game"); + markAsRemovedInObject(cc.sys, ["dumpRoot", "cleanScript", "BROWSER_TYPE_WECHAT_GAME", "BROWSER_TYPE_WECHAT_GAME_SUB", "BROWSER_TYPE_BAIDU_GAME", "BROWSER_TYPE_BAIDU_GAME_SUB", "BROWSER_TYPE_XIAOMI_GAME", "BROWSER_TYPE_ALIPAY_GAME"], "cc.sys"); + provideClearError(cc.Director, { + EVENT_PROJECTION_CHANGED: "", + EVENT_BEFORE_VISIT: "EVENT_AFTER_UPDATE", + EVENT_AFTER_VISIT: "EVENT_BEFORE_DRAW" + }, "cc.Director"); + markFunctionWarning(cc.Director.prototype, { + convertToGL: "cc.view.convertToLocationInView", + convertToUI: "", + getWinSize: "cc.winSize", + getWinSizeInPixels: "cc.winSize", + getVisibleSize: "cc.view.getVisibleSize", + getVisibleOrigin: "cc.view.getVisibleOrigin", + purgeCachedData: "cc.assetManager.releaseAll", + setDepthTest: "cc.Camera.main.depth", + setClearColor: "cc.Camera.main.backgroundColor", + getRunningScene: "cc.director.getScene", + getAnimationInterval: "cc.game.getFrameRate", + setAnimationInterval: "cc.game.setFrameRate", + isDisplayStats: "cc.debug.isDisplayStats", + setDisplayStats: "cc.debug.setDisplayStats", + stopAnimation: "cc.game.pause", + startAnimation: "cc.game.resume" + }, "cc.Director"); + markAsRemoved(cc.Director, ["pushScene", "popScene", "popToRootScene", "popToSceneStackLevel", "setProjection", "getProjection"], "cc.Director"); + provideClearError(cc.Scheduler, { + scheduleCallbackForTarget: "schedule", + scheduleUpdateForTarget: "scheduleUpdate", + unscheduleCallbackForTarget: "unschedule", + unscheduleUpdateForTarget: "unscheduleUpdate", + unscheduleAllCallbacksForTarget: "unscheduleAllForTarget", + unscheduleAllCallbacks: "unscheduleAll", + unscheduleAllCallbacksWithMinPriority: "unscheduleAllWithMinPriority" + }, "cc.Scheduler"); + provideClearError(cc.view, { + adjustViewPort: "adjustViewportMeta", + setViewPortInPoints: "setViewportInPoints", + getViewPortRect: "getViewportRect" + }, "cc.view"); + markAsRemovedInObject(cc.view, ["isViewReady", "setTargetDensityDPI", "getTargetDensityDPI", "setFrameZoomFactor", "canSetContentScaleFactor", "setContentTranslateLeftTop", "getContentTranslateLeftTop", "setViewName", "getViewName"], "cc.view"); + markAsRemoved(cc.PhysicsManager, ["attachDebugDrawToCamera", "detachDebugDrawFromCamera"]); + markAsRemoved(cc.CollisionManager, ["attachDebugDrawToCamera", "detachDebugDrawFromCamera"]); + provideClearError(cc._BaseNode.prototype, { + tag: "name", + getTag: "name", + setTag: "name", + getChildByTag: "getChildByName", + removeChildByTag: "getChildByName(name).destroy()" + }); + markAsRemoved(cc.Node, ["_cascadeColorEnabled", "cascadeColor", "isCascadeColorEnabled", "setCascadeColorEnabled", "_cascadeOpacityEnabled", "cascadeOpacity", "isCascadeOpacityEnabled", "setCascadeOpacityEnabled", "opacityModifyRGB", "isOpacityModifyRGB", "setOpacityModifyRGB", "ignoreAnchor", "isIgnoreAnchorPointForPosition", "ignoreAnchorPointForPosition", "isRunning", "_sgNode"]); + markFunctionWarning(cc.Node.prototype, { + getNodeToParentTransform: "getLocalMatrix", + getNodeToParentTransformAR: "getLocalMatrix", + getNodeToWorldTransform: "getWorldMatrix", + getNodeToWorldTransformAR: "getWorldMatrix", + getParentToNodeTransform: "getLocalMatrix", + getWorldToNodeTransform: "getWorldMatrix", + convertTouchToNodeSpace: "convertToNodeSpaceAR", + convertTouchToNodeSpaceAR: "convertToNodeSpaceAR", + convertToWorldSpace: "convertToWorldSpaceAR", + convertToNodeSpace: "convertToNodeSpaceAR" + }); + provideClearError(cc.Node.prototype, { + getRotationX: "rotationX", + setRotationX: "rotationX", + getRotationY: "rotationY", + setRotationY: "rotationY", + getPositionX: "x", + setPositionX: "x", + getPositionY: "y", + setPositionY: "y", + getSkewX: "skewX", + setSkewX: "skewX", + getSkewY: "skewY", + setSkewY: "skewY", + getScaleX: "scaleX", + setScaleX: "scaleX", + getScaleY: "scaleY", + setScaleY: "scaleY", + getOpacity: "opacity", + setOpacity: "opacity", + getColor: "color", + setColor: "color", + getLocalZOrder: "zIndex", + setLocalZOrder: "zIndex" + }); + provideClearError(cc.Sprite.prototype, { + setInsetLeft: "cc.SpriteFrame insetLeft", + setInsetRight: "cc.SpriteFrame insetRight", + setInsetTop: "cc.SpriteFrame insetTop", + setInsetBottom: "cc.SpriteFrame insetBottom" + }); + cc.Material.getInstantiatedBuiltinMaterial = cc.MaterialVariant.createWithBuiltin; + cc.Material.getInstantiatedMaterial = cc.MaterialVariant.create; + markFunctionWarning(cc.Material, { + getInstantiatedBuiltinMaterial: "cc.MaterialVariant.createWithBuiltin", + getInstantiatedMaterial: "cc.MaterialVariant.create" + }); + cc.js.getset(cc.RenderComponent.prototype, "sharedMaterials", (function () { + cc.warnID(1400, "sharedMaterials", "getMaterials"); + return this.materials; + }), (function (v) { + cc.warnID(1400, "sharedMaterials", "setMaterial"); + this.materials = v; + })); + markFunctionWarning(cc.Camera.prototype, { + getNodeToCameraTransform: "getWorldToScreenMatrix2D", + getCameraToWorldPoint: "getScreenToWorldPoint", + getWorldToCameraPoint: "getWorldToScreenPoint", + getCameraToWorldMatrix: "getScreenToWorldMatrix2D", + getWorldToCameraMatrix: "getWorldToScreenMatrix2D" + }); + markAsRemoved(cc.Camera, ["addTarget", "removeTarget", "getTargets"]); + var ERR = '"%s" is not defined in the Scene, it is only defined in normal nodes.'; + false, Object.defineProperties(cc.Scene.prototype, { + active: { + get: function get() { + cc.error(ERR, "active"); + return true; + }, + set: function set() { + cc.error(ERR, "active"); + } + }, + activeInHierarchy: { + get: function get() { + cc.error(ERR, "activeInHierarchy"); + return true; + } + }, + getComponent: { + get: function get() { + cc.error(ERR, "getComponent"); + return function () { + return null; + }; + } + }, + addComponent: { + get: function get() { + cc.error(ERR, "addComponent"); + return function () { + return null; + }; + } + } + }); + markAsRemovedInObject(cc.dynamicAtlasManager, ["minFrameSize"], "cc.dynamicAtlasManager"); + cc.Light && markAsRemovedInObject(cc.Light.prototype, ["shadowDepthScale"], "cc.Light.prototype"); + provideClearError(cc, { + affineTransformMake: "cc.AffineTransform.create", + affineTransformMakeIdentity: "cc.AffineTransform.identity", + affineTransformClone: "cc.AffineTransform.clone", + affineTransformConcat: "cc.AffineTransform.concat", + affineTransformConcatIn: "cc.AffineTransform.concat", + affineTransformInvert: "cc.AffineTransform.invert", + affineTransformInvertIn: "cc.AffineTransform.invert", + affineTransformInvertOut: "cc.AffineTransform.invert", + affineTransformEqualToTransform: "cc.AffineTransform.equal", + pointApplyAffineTransform: "cc.AffineTransform.transformVec2", + sizeApplyAffineTransform: "cc.AffineTransform.transformSize", + rectApplyAffineTransform: "cc.AffineTransform.transformRect", + obbApplyAffineTransform: "cc.AffineTransform.transformObb", + pointEqualToPoint: "cc.Vec2 equals", + sizeEqualToSize: "cc.Size equals", + rectEqualToRect: "rectA.equals(rectB)", + rectContainsRect: "rectA.containsRect(rectB)", + rectContainsPoint: "rect.contains(vec2)", + rectOverlapsRect: "rectA.intersects(rectB)", + rectIntersectsRect: "rectA.intersects(rectB)", + rectIntersection: "rectA.intersection(intersection, rectB)", + rectUnion: "rectA.union(union, rectB)", + rectGetMaxX: "rect.xMax", + rectGetMidX: "rect.center.x", + rectGetMinX: "rect.xMin", + rectGetMaxY: "rect.yMax", + rectGetMidY: "rect.center.y", + rectGetMinY: "rect.yMin", + colorEqual: "colorA.equals(colorB)", + hexToColor: "color.fromHEX(hexColor)", + colorToHex: "color.toHEX()", + TextAlignment: "cc.macro.TextAlignment", + VerticalTextAlignment: "cc.macro.VerticalTextAlignment", + pNeg: "p.neg()", + pAdd: "p1.add(p2)", + pSub: "p1.sub(p2)", + pMult: "p.mul(factor)", + pMidpoint: "p1.add(p2).mul(0.5)", + pDot: "p1.dot(p2)", + pCross: "p1.cross(p2)", + pPerp: "p.rotate(-90 * Math.PI / 180)", + pRPerp: "p.rotate(90 * Math.PI / 180)", + pProject: "p1.project(p2)", + pLengthSQ: "p.magSqr()", + pDistanceSQ: "p1.sub(p2).magSqr()", + pLength: "p.mag()", + pDistance: "p1.sub(p2).mag()", + pNormalize: "p.normalize()", + pForAngle: "cc.v2(Math.cos(a), Math.sin(a))", + pToAngle: "Math.atan2(v.y, v.x)", + pZeroIn: "p.x = p.y = 0", + pIn: "p1.set(p2)", + pMultIn: "p.mulSelf(factor)", + pSubIn: "p1.subSelf(p2)", + pAddIn: "p1.addSelf(p2)", + pNormalizeIn: "p.normalizeSelf()", + pSameAs: "p1.equals(p2)", + pAngle: "v1.angle(v2)", + pAngleSigned: "v1.signAngle(v2)", + pRotateByAngle: "p.rotate(radians)", + pCompMult: "v1.multiply(v2)", + pFuzzyEqual: "v1.fuzzyEquals(v2, tolerance)", + pLerp: "p.lerp(endPoint, ratio)", + pClamp: "p.clampf(min_inclusive, max_inclusive)", + rand: "Math.random() * 0xffffff", + randomMinus1To1: "(Math.random() - 0.5) * 2", + container: "cc.game.container", + _canvas: "cc.game.canvas", + _renderType: "cc.game.renderType", + _getError: "cc.debug.getError", + _initDebugSetting: "cc.debug._resetDebugSetting", + DebugMode: "cc.debug.DebugMode" + }, "cc"); + markAsRemovedInObject(cc, ["blendFuncDisable", "pFromSize", "pCompOp", "pIntersectPoint", "pSegmentIntersect", "pLineIntersect", "obbApplyMatrix", "getImageFormatByData", "initEngine"], "cc"); + markFunctionWarning(cc, { + p: "cc.v2" + }, "cc"); + provideClearError(cc.Rect, { + contain: "rectA.contains(rectB)", + transformMat4: "rect.transformMat4(out, mat4)" + }); + provideClearError(cc.Color, { + rgb2hsv: "color.toHSV()", + hsv2rgb: "color.fromHSV(h, s, v)" + }); + markFunctionWarning(cc.Color, { + fromHex: "cc.Color.fromHEX" + }); + js.get(cc, "lerp", (function () { + cc.errorID(1400, "cc.lerp", "cc.misc.lerp"); + return cc.misc.lerp; + })); + js.get(cc, "random0To1", (function () { + cc.errorID(1400, "cc.random0To1", "Math.random"); + return Math.random; + })); + js.get(cc, "degreesToRadians", (function () { + cc.errorID(1400, "cc.degreesToRadians", "cc.misc.degreesToRadians"); + return cc.misc.degreesToRadians; + })); + js.get(cc, "radiansToDegrees", (function () { + cc.errorID(1400, "cc.radiansToDegrees", "cc.misc.radiansToDegrees"); + return cc.misc.radiansToDegrees; + })); + js.get(cc, "clampf", (function () { + cc.errorID(1400, "cc.clampf", "cc.misc.clampf"); + return cc.misc.clampf; + })); + js.get(cc, "clamp01", (function () { + cc.errorID(1400, "cc.clamp01", "cc.misc.clamp01"); + return cc.misc.clamp01; + })); + js.get(cc, "ImageFormat", (function () { + cc.errorID(1400, "cc.ImageFormat", "cc.macro.ImageFormat"); + return cc.macro.ImageFormat; + })); + js.get(cc, "KEY", (function () { + cc.errorID(1400, "cc.KEY", "cc.macro.KEY"); + return cc.macro.KEY; + })); + js.get(cc, "Easing", (function () { + cc.errorID(1400, "cc.Easing", "cc.easing"); + return cc.easing; + })); + js.get(cc, "isChildClassOf", (function () { + cc.errorID(1400, "cc.isChildClassOf", "cc.js.isChildClassOf"); + return cc.js.isChildClassOf; + })); + "undefined" !== typeof dragonBones && js.get(dragonBones.CCFactory, "getFactory", (function () { + cc.errorID(1400, "dragonBones.CCFactory.getFactory", "dragonBones.CCFactory.getInstance"); + return dragonBones.CCFactory.getInstance; + })); + cc.renderer.renderEngine = { + get gfx() { + cc.warnID(1400, "cc.renderer.renderEngine.gfx", "cc.gfx"); + return cc.gfx; + }, + get math() { + cc.warnID(1400, "cc.renderer.renderEngine.math", "cc.math"); + return cc.vmath; + }, + get InputAssembler() { + cc.warnID(1400, "cc.renderer.renderEngine.InputAssembler", "cc.renderer.InputAssembler"); + return cc.renderer.InputAssembler; + } + }; + markAsRemovedInObject(cc.audioEngine, ["getProfile", "preload", "setMaxWebAudioSize"], "cc.audioEngine"); + }), {}], + 352: [(function (require, module, exports) { + "use strict"; + require("./core/CCGame"); + require("./actions"); + }), { + "./actions": 8, + "./core/CCGame": 72 + }], + 353: [(function (require, module, exports) { + "use strict"; + var zlib = require("../compression/zlib.min"); + var debug = require("../core/CCDebug"); + var PNGReader = function PNGReader(data) { + var chunkSize, colors, delayDen, delayNum, frame, i, index, key, section, ccshort, text, _i, _j, _ref; + this.data = data; + this.pos = 8; + this.palette = []; + this.imgData = []; + this.transparency = {}; + this.animation = null; + this.text = {}; + frame = null; + while (true) { + chunkSize = this.readUInt32(); + section = function () { + var _i, _results; + _results = []; + for (i = _i = 0; _i < 4; i = ++_i) _results.push(String.fromCharCode(this.data[this.pos++])); + return _results; + }.call(this).join(""); + switch (section) { + case "IHDR": + this.width = this.readUInt32(); + this.height = this.readUInt32(); + this.bits = this.data[this.pos++]; + this.colorType = this.data[this.pos++]; + this.compressionMethod = this.data[this.pos++]; + this.filterMethod = this.data[this.pos++]; + this.interlaceMethod = this.data[this.pos++]; + break; + + case "acTL": + this.animation = { + numFrames: this.readUInt32(), + numPlays: this.readUInt32() || Infinity, + frames: [] + }; + break; + + case "PLTE": + this.palette = this.read(chunkSize); + break; + + case "fcTL": + frame && this.animation.frames.push(frame); + this.pos += 4; + frame = { + width: this.readUInt32(), + height: this.readUInt32(), + xOffset: this.readUInt32(), + yOffset: this.readUInt32() + }; + delayNum = this.readUInt16(); + delayDen = this.readUInt16() || 100; + frame.delay = 1e3 * delayNum / delayDen; + frame.disposeOp = this.data[this.pos++]; + frame.blendOp = this.data[this.pos++]; + frame.data = []; + break; + + case "IDAT": + case "fdAT": + if ("fdAT" === section) { + this.pos += 4; + chunkSize -= 4; + } + data = (null != frame ? frame.data : void 0) || this.imgData; + for (i = _i = 0; 0 <= chunkSize ? _i < chunkSize : _i > chunkSize; i = 0 <= chunkSize ? ++_i : --_i) data.push(this.data[this.pos++]); + break; + + case "tRNS": + this.transparency = {}; + switch (this.colorType) { + case 3: + this.transparency.indexed = this.read(chunkSize); + ccshort = 255 - this.transparency.indexed.length; + if (ccshort > 0) for (i = _j = 0; 0 <= ccshort ? _j < ccshort : _j > ccshort; i = 0 <= ccshort ? ++_j : --_j) this.transparency.indexed.push(255); + break; + + case 0: + this.transparency.grayscale = this.read(chunkSize)[0]; + break; + + case 2: + this.transparency.rgb = this.read(chunkSize); + } + break; + + case "tEXt": + text = this.read(chunkSize); + index = text.indexOf(0); + key = String.fromCharCode.apply(String, text.slice(0, index)); + this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1)); + break; + + case "IEND": + frame && this.animation.frames.push(frame); + this.colors = function () { + switch (this.colorType) { + case 0: + case 3: + case 4: + return 1; + + case 2: + case 6: + return 3; + } + }.call(this); + this.hasAlphaChannel = 4 === (_ref = this.colorType) || 6 === _ref; + colors = this.colors + (this.hasAlphaChannel ? 1 : 0); + this.pixelBitlength = this.bits * colors; + this.colorSpace = function () { + switch (this.colors) { + case 1: + return "DeviceGray"; + + case 3: + return "DeviceRGB"; + } + }.call(this); + Uint8Array != Array && (this.imgData = new Uint8Array(this.imgData)); + return; + + default: + this.pos += chunkSize; + } + this.pos += 4; + if (this.pos > this.data.length) throw new Error(debug.getError(6017)); + } + }; + PNGReader.prototype = { + constructor: PNGReader, + read: function read(bytes) { + var i, _i, _results; + _results = []; + for (i = _i = 0; 0 <= bytes ? _i < bytes : _i > bytes; i = 0 <= bytes ? ++_i : --_i) _results.push(this.data[this.pos++]); + return _results; + }, + readUInt32: function readUInt32() { + var b1, b2, b3, b4; + b1 = this.data[this.pos++] << 24; + b2 = this.data[this.pos++] << 16; + b3 = this.data[this.pos++] << 8; + b4 = this.data[this.pos++]; + return b1 | b2 | b3 | b4; + }, + readUInt16: function readUInt16() { + var b1, b2; + b1 = this.data[this.pos++] << 8; + b2 = this.data[this.pos++]; + return b1 | b2; + }, + decodePixels: function decodePixels(data) { + var ccbyte, c, col, i, left, length, p, pa, paeth, pb, pc, pixelBytes, pixels, pos, row, scanlineLength, upper, upperLeft, _i, _j, _k, _l, _m; + null == data && (data = this.imgData); + if (0 === data.length) return new Uint8Array(0); + var inflate = new zlib.Inflate(data, { + index: 0, + verify: false + }); + data = inflate.decompress(); + pixelBytes = this.pixelBitlength / 8; + scanlineLength = pixelBytes * this.width; + pixels = new Uint8Array(scanlineLength * this.height); + length = data.length; + row = 0; + pos = 0; + c = 0; + while (pos < length) { + switch (data[pos++]) { + case 0: + for (i = _i = 0; _i < scanlineLength; i = _i += 1) pixels[c++] = data[pos++]; + break; + + case 1: + for (i = _j = 0; _j < scanlineLength; i = _j += 1) { + ccbyte = data[pos++]; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + pixels[c++] = (ccbyte + left) % 256; + } + break; + + case 2: + for (i = _k = 0; _k < scanlineLength; i = _k += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + pixels[c++] = (upper + ccbyte) % 256; + } + break; + + case 3: + for (i = _l = 0; _l < scanlineLength; i = _l += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + pixels[c++] = (ccbyte + Math.floor((left + upper) / 2)) % 256; + } + break; + + case 4: + for (i = _m = 0; _m < scanlineLength; i = _m += 1) { + ccbyte = data[pos++]; + col = (i - i % pixelBytes) / pixelBytes; + left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; + if (0 === row) upper = upperLeft = 0; else { + upper = pixels[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes]; + upperLeft = col && pixels[(row - 1) * scanlineLength + (col - 1) * pixelBytes + i % pixelBytes]; + } + p = left + upper - upperLeft; + pa = Math.abs(p - left); + pb = Math.abs(p - upper); + pc = Math.abs(p - upperLeft); + paeth = pa <= pb && pa <= pc ? left : pb <= pc ? upper : upperLeft; + pixels[c++] = (ccbyte + paeth) % 256; + } + break; + + default: + throw new Error(debug.getError(6018, data[pos - 1])); + } + row++; + } + return pixels; + }, + copyToImageData: function copyToImageData(imageData, pixels) { + var alpha, colors, data, i, input, j, k, length, palette, v, _ref; + colors = this.colors; + palette = null; + alpha = this.hasAlphaChannel; + if (this.palette.length) { + palette = null != (_ref = this._decodedPalette) ? _ref : this._decodedPalette = this.decodePalette(); + colors = 4; + alpha = true; + } + data = imageData.data || imageData; + length = data.length; + input = palette || pixels; + i = j = 0; + if (1 === colors) while (i < length) { + k = palette ? 4 * pixels[i / 4] : j; + v = input[k++]; + data[i++] = v; + data[i++] = v; + data[i++] = v; + data[i++] = alpha ? input[k++] : 255; + j = k; + } else while (i < length) { + k = palette ? 4 * pixels[i / 4] : j; + data[i++] = input[k++]; + data[i++] = input[k++]; + data[i++] = input[k++]; + data[i++] = alpha ? input[k++] : 255; + j = k; + } + }, + decodePalette: function decodePalette() { + var c, i, palette, pos, ret, transparency, _i, _ref, _ref1; + palette = this.palette; + transparency = this.transparency.indexed || []; + ret = new Uint8Array((transparency.length || 0) + palette.length); + pos = 0; + c = 0; + for (i = _i = 0, _ref = palette.length; _i < _ref; i = _i += 3) { + ret[pos++] = palette[i]; + ret[pos++] = palette[i + 1]; + ret[pos++] = palette[i + 2]; + ret[pos++] = null != (_ref1 = transparency[c++]) ? _ref1 : 255; + } + return ret; + }, + render: function render(canvas) { + var ctx, data; + canvas.width = this.width; + canvas.height = this.height; + ctx = canvas.getContext("2d"); + data = ctx.createImageData(this.width, this.height); + this.copyToImageData(data, this.decodePixels()); + return ctx.putImageData(data, 0, 0); + } + }; + module.exports = PNGReader; + }), { + "../compression/zlib.min": 26, + "../core/CCDebug": 70 + }], + 354: [(function (require, module, exports) { + "use strict"; + var Asset = require("../core/assets/CCAsset"); + var CCSpriteFrame = require("../core/assets/CCSpriteFrame"); + var ParticleAsset = cc.Class({ + name: "cc.ParticleAsset", + extends: Asset, + properties: { + spriteFrame: { + default: null, + type: CCSpriteFrame + } + } + }); + cc.ParticleAsset = module.exports = ParticleAsset; + }), { + "../core/assets/CCAsset": 106, + "../core/assets/CCSpriteFrame": 118 + }], + 355: [(function (require, module, exports) { + "use strict"; + var macro = require("../core/platform/CCMacro"); + var ParticleAsset = require("./CCParticleAsset"); + var RenderComponent = require("../core/components/CCRenderComponent"); + var codec = require("../compression/ZipUtils"); + var PNGReader = require("./CCPNGReader"); + var tiffReader = require("./CCTIFFReader"); + var textureUtil = require("../core/utils/texture-util"); + var RenderFlow = require("../core/renderer/render-flow"); + var ParticleSimulator = require("./particle-simulator"); + var Material = require("../core/assets/material/CCMaterial"); + var BlendFunc = require("../core/utils/blend-func"); + function getImageFormatByData(imgData) { + if (imgData.length > 8 && 137 === imgData[0] && 80 === imgData[1] && 78 === imgData[2] && 71 === imgData[3] && 13 === imgData[4] && 10 === imgData[5] && 26 === imgData[6] && 10 === imgData[7]) return macro.ImageFormat.PNG; + if (imgData.length > 2 && (73 === imgData[0] && 73 === imgData[1] || 77 === imgData[0] && 77 === imgData[1] || 255 === imgData[0] && 216 === imgData[1])) return macro.ImageFormat.TIFF; + return macro.ImageFormat.UNKNOWN; + } + function getParticleComponents(node) { + var parent = node.parent, comp = node.getComponent(cc.ParticleSystem); + if (!parent || !comp) return node.getComponentsInChildren(cc.ParticleSystem); + return getParticleComponents(parent); + } + var EmitterMode = cc.Enum({ + GRAVITY: 0, + RADIUS: 1 + }); + var PositionType = cc.Enum({ + FREE: 0, + RELATIVE: 1, + GROUPED: 2 + }); + var properties = { + preview: { + default: true, + editorOnly: true, + notify: false, + animatable: false, + tooltip: false + }, + _custom: false, + custom: { + get: function get() { + return this._custom; + }, + set: function set(value) { + false; + if (this._custom !== value) { + this._custom = value; + this._applyFile(); + false; + } + }, + animatable: false, + tooltip: false + }, + _file: { + default: null, + type: ParticleAsset + }, + file: { + get: function get() { + return this._file; + }, + set: function set(value, force) { + if (this._file !== value || false) { + this._file = value; + if (value) { + this._applyFile(); + false; + } else this.custom = true; + } + }, + animatable: false, + type: ParticleAsset, + tooltip: false + }, + _spriteFrame: { + default: null, + type: cc.SpriteFrame + }, + spriteFrame: { + get: function get() { + return this._spriteFrame; + }, + set: function set(value, force) { + var lastSprite = this._renderSpriteFrame; + false; + if (lastSprite === value) return; + this._renderSpriteFrame = value; + value && !value._uuid || (this._spriteFrame = value); + this._applySpriteFrame(lastSprite); + false; + }, + type: cc.SpriteFrame, + tooltip: false + }, + _texture: { + default: null, + type: cc.Texture2D, + editorOnly: true + }, + texture: { + get: function get() { + return this._getTexture(); + }, + set: function set(value) { + value && cc.warnID(6017); + }, + type: cc.Texture2D, + tooltip: false, + readonly: true, + visible: false, + animatable: false + }, + particleCount: { + visible: false, + get: function get() { + return this._simulator.particles.length; + }, + readonly: true + }, + _stopped: true, + stopped: { + get: function get() { + return this._stopped; + }, + animatable: false, + visible: false + }, + playOnLoad: true, + autoRemoveOnFinish: { + default: false, + animatable: false, + tooltip: false + }, + active: { + get: function get() { + return this._simulator.active; + }, + visible: false + }, + totalParticles: 150, + duration: -1, + emissionRate: 10, + life: 1, + lifeVar: 0, + _startColor: null, + startColor: { + type: cc.Color, + get: function get() { + return this._startColor; + }, + set: function set(val) { + this._startColor.r = val.r; + this._startColor.g = val.g; + this._startColor.b = val.b; + this._startColor.a = val.a; + } + }, + _startColorVar: null, + startColorVar: { + type: cc.Color, + get: function get() { + return this._startColorVar; + }, + set: function set(val) { + this._startColorVar.r = val.r; + this._startColorVar.g = val.g; + this._startColorVar.b = val.b; + this._startColorVar.a = val.a; + } + }, + _endColor: null, + endColor: { + type: cc.Color, + get: function get() { + return this._endColor; + }, + set: function set(val) { + this._endColor.r = val.r; + this._endColor.g = val.g; + this._endColor.b = val.b; + this._endColor.a = val.a; + } + }, + _endColorVar: null, + endColorVar: { + type: cc.Color, + get: function get() { + return this._endColorVar; + }, + set: function set(val) { + this._endColorVar.r = val.r; + this._endColorVar.g = val.g; + this._endColorVar.b = val.b; + this._endColorVar.a = val.a; + } + }, + angle: 90, + angleVar: 20, + startSize: 50, + startSizeVar: 0, + endSize: 0, + endSizeVar: 0, + startSpin: 0, + startSpinVar: 0, + endSpin: 0, + endSpinVar: 0, + sourcePos: cc.Vec2.ZERO, + posVar: cc.Vec2.ZERO, + _positionType: { + default: PositionType.FREE, + formerlySerializedAs: "positionType" + }, + positionType: { + type: PositionType, + get: function get() { + return this._positionType; + }, + set: function set(val) { + this._positionType = val; + this._updateMaterial(); + } + }, + emitterMode: { + default: EmitterMode.GRAVITY, + type: EmitterMode + }, + gravity: cc.Vec2.ZERO, + speed: 180, + speedVar: 50, + tangentialAccel: 80, + tangentialAccelVar: 0, + radialAccel: 0, + radialAccelVar: 0, + rotationIsDir: false, + startRadius: 0, + startRadiusVar: 0, + endRadius: 0, + endRadiusVar: 0, + rotatePerS: 0, + rotatePerSVar: 0 + }; + var ParticleSystem = cc.Class({ + name: "cc.ParticleSystem", + extends: RenderComponent, + mixins: [BlendFunc], + editor: false, + ctor: function ctor() { + this.initProperties(); + }, + initProperties: function initProperties() { + this._previewTimer = null; + this._focused = false; + this._aspectRatio = 1; + this._simulator = new ParticleSimulator(this); + this._startColor = cc.color(255, 255, 255, 255); + this._startColorVar = cc.color(0, 0, 0, 0); + this._endColor = cc.color(255, 255, 255, 0); + this._endColorVar = cc.color(0, 0, 0, 0); + this._renderSpriteFrame = null; + }, + properties: properties, + statics: { + DURATION_INFINITY: -1, + START_SIZE_EQUAL_TO_END_SIZE: -1, + START_RADIUS_EQUAL_TO_END_RADIUS: -1, + EmitterMode: EmitterMode, + PositionType: PositionType, + _PNGReader: PNGReader, + _TIFFReader: tiffReader + }, + onFocusInEditor: false, + onLostFocusInEditor: false, + _startPreview: false, + _stopPreview: false, + _convertTextureToSpriteFrame: false, + __preload: function __preload() { + this._super(); + false; + if (this._custom && this.spriteFrame && !this._renderSpriteFrame) this._applySpriteFrame(this.spriteFrame); else if (this._file) if (this._custom) { + var missCustomTexture = !this._getTexture(); + missCustomTexture && this._applyFile(); + } else this._applyFile(); + true; + this.playOnLoad && this.resetSystem(); + false; + }, + onDestroy: function onDestroy() { + this.autoRemoveOnFinish && (this.autoRemoveOnFinish = false); + if (this._buffer) { + this._buffer.destroy(); + this._buffer = null; + } + this._simulator._uvFilled = 0; + this._super(); + }, + lateUpdate: function lateUpdate(dt) { + this._simulator.finished || this._simulator.step(dt); + }, + addParticle: function addParticle() { }, + stopSystem: function stopSystem() { + this._stopped = true; + this._simulator.stop(); + }, + resetSystem: function resetSystem() { + this._stopped = false; + this._simulator.reset(); + this.markForRender(true); + }, + isFull: function isFull() { + return this.particleCount >= this.totalParticles; + }, + setTextureWithRect: function setTextureWithRect(texture, rect) { + texture instanceof cc.Texture2D && (this.spriteFrame = new cc.SpriteFrame(texture, rect)); + }, + _applyFile: function _applyFile() { + var file = this._file; + if (file) { + var self = this; + cc.assetManager.postLoadNative(file, (function (err) { + if (err || !file._nativeAsset) { + cc.errorID(6029); + return; + } + if (!self.isValid) return; + self._plistFile = file.nativeUrl; + if (!self._custom) { + var isDiffFrame = self._spriteFrame !== file.spriteFrame; + isDiffFrame && (self.spriteFrame = file.spriteFrame); + self._initWithDictionary(file._nativeAsset); + } + self._spriteFrame ? !self._renderSpriteFrame && self._spriteFrame && self._applySpriteFrame(self.spriteFrame) : file.spriteFrame ? self.spriteFrame = file.spriteFrame : self._custom && self._initTextureWithDictionary(file._nativeAsset); + })); + } + }, + _initTextureWithDictionary: function _initTextureWithDictionary(dict) { + var imgPath = cc.path.changeBasename(this._plistFile, dict["textureFileName"] || ""); + if (dict["textureFileName"]) textureUtil.loadImage(imgPath, (function (error, texture) { + if (error) { + dict["textureFileName"] = void 0; + this._initTextureWithDictionary(dict); + } else { + cc.assetManager.assets.add(imgPath, texture); + this.spriteFrame = new cc.SpriteFrame(texture); + } + }), this); else if (dict["textureImageData"]) { + var textureData = dict["textureImageData"]; + if (!(textureData && textureData.length > 0)) return false; + var tex = cc.assetManager.assets.get(imgPath); + if (!tex) { + var buffer = codec.unzipBase64AsArray(textureData, 1); + if (!buffer) { + cc.warnID(6030, this._file.name); + return false; + } + var imageFormat = getImageFormatByData(buffer); + if (imageFormat !== macro.ImageFormat.TIFF && imageFormat !== macro.ImageFormat.PNG) { + cc.warnID(6031, this._file.name); + return false; + } + var canvasObj = document.createElement("canvas"); + if (imageFormat === macro.ImageFormat.PNG) { + var myPngObj = new PNGReader(buffer); + myPngObj.render(canvasObj); + } else tiffReader.parseTIFF(buffer, canvasObj); + tex = textureUtil.cacheImage(imgPath, canvasObj); + } + tex || cc.warnID(6032, this._file.name); + this.spriteFrame = new cc.SpriteFrame(tex); + } + return true; + }, + _initWithDictionary: function _initWithDictionary(dict) { + this.totalParticles = parseInt(dict["maxParticles"] || 0); + this.life = parseFloat(dict["particleLifespan"] || 0); + this.lifeVar = parseFloat(dict["particleLifespanVariance"] || 0); + var _tempEmissionRate = dict["emissionRate"]; + this.emissionRate = _tempEmissionRate || Math.min(this.totalParticles / this.life, Number.MAX_VALUE); + this.duration = parseFloat(dict["duration"] || 0); + this.srcBlendFactor = parseInt(dict["blendFuncSource"] || macro.SRC_ALPHA); + this.dstBlendFactor = parseInt(dict["blendFuncDestination"] || macro.ONE_MINUS_SRC_ALPHA); + var locStartColor = this._startColor; + locStartColor.r = 255 * parseFloat(dict["startColorRed"] || 0); + locStartColor.g = 255 * parseFloat(dict["startColorGreen"] || 0); + locStartColor.b = 255 * parseFloat(dict["startColorBlue"] || 0); + locStartColor.a = 255 * parseFloat(dict["startColorAlpha"] || 0); + var locStartColorVar = this._startColorVar; + locStartColorVar.r = 255 * parseFloat(dict["startColorVarianceRed"] || 0); + locStartColorVar.g = 255 * parseFloat(dict["startColorVarianceGreen"] || 0); + locStartColorVar.b = 255 * parseFloat(dict["startColorVarianceBlue"] || 0); + locStartColorVar.a = 255 * parseFloat(dict["startColorVarianceAlpha"] || 0); + var locEndColor = this._endColor; + locEndColor.r = 255 * parseFloat(dict["finishColorRed"] || 0); + locEndColor.g = 255 * parseFloat(dict["finishColorGreen"] || 0); + locEndColor.b = 255 * parseFloat(dict["finishColorBlue"] || 0); + locEndColor.a = 255 * parseFloat(dict["finishColorAlpha"] || 0); + var locEndColorVar = this._endColorVar; + locEndColorVar.r = 255 * parseFloat(dict["finishColorVarianceRed"] || 0); + locEndColorVar.g = 255 * parseFloat(dict["finishColorVarianceGreen"] || 0); + locEndColorVar.b = 255 * parseFloat(dict["finishColorVarianceBlue"] || 0); + locEndColorVar.a = 255 * parseFloat(dict["finishColorVarianceAlpha"] || 0); + this.startSize = parseFloat(dict["startParticleSize"] || 0); + this.startSizeVar = parseFloat(dict["startParticleSizeVariance"] || 0); + this.endSize = parseFloat(dict["finishParticleSize"] || 0); + this.endSizeVar = parseFloat(dict["finishParticleSizeVariance"] || 0); + this.positionType = parseFloat(void 0 !== dict["positionType"] ? dict["positionType"] : PositionType.RELATIVE); + this.sourcePos.x = 0; + this.sourcePos.y = 0; + this.posVar.x = parseFloat(dict["sourcePositionVariancex"] || 0); + this.posVar.y = parseFloat(dict["sourcePositionVariancey"] || 0); + this.angle = parseFloat(dict["angle"] || 0); + this.angleVar = parseFloat(dict["angleVariance"] || 0); + this.startSpin = parseFloat(dict["rotationStart"] || 0); + this.startSpinVar = parseFloat(dict["rotationStartVariance"] || 0); + this.endSpin = parseFloat(dict["rotationEnd"] || 0); + this.endSpinVar = parseFloat(dict["rotationEndVariance"] || 0); + this.emitterMode = parseInt(dict["emitterType"] || EmitterMode.GRAVITY); + if (this.emitterMode === EmitterMode.GRAVITY) { + this.gravity.x = parseFloat(dict["gravityx"] || 0); + this.gravity.y = parseFloat(dict["gravityy"] || 0); + this.speed = parseFloat(dict["speed"] || 0); + this.speedVar = parseFloat(dict["speedVariance"] || 0); + this.radialAccel = parseFloat(dict["radialAcceleration"] || 0); + this.radialAccelVar = parseFloat(dict["radialAccelVariance"] || 0); + this.tangentialAccel = parseFloat(dict["tangentialAcceleration"] || 0); + this.tangentialAccelVar = parseFloat(dict["tangentialAccelVariance"] || 0); + var locRotationIsDir = dict["rotationIsDir"] || ""; + if (null !== locRotationIsDir) { + locRotationIsDir = locRotationIsDir.toString().toLowerCase(); + this.rotationIsDir = "true" === locRotationIsDir || "1" === locRotationIsDir; + } else this.rotationIsDir = false; + } else { + if (this.emitterMode !== EmitterMode.RADIUS) { + cc.warnID(6009); + return false; + } + this.startRadius = parseFloat(dict["maxRadius"] || 0); + this.startRadiusVar = parseFloat(dict["maxRadiusVariance"] || 0); + this.endRadius = parseFloat(dict["minRadius"] || 0); + this.endRadiusVar = parseFloat(dict["minRadiusVariance"] || 0); + this.rotatePerS = parseFloat(dict["rotatePerSecond"] || 0); + this.rotatePerSVar = parseFloat(dict["rotatePerSecondVariance"] || 0); + } + this._initTextureWithDictionary(dict); + return true; + }, + _validateRender: function _validateRender() { + var texture = this._getTexture(); + if (!texture || !texture.loaded) { + this.disableRender(); + return; + } + this._super(); + }, + _onTextureLoaded: function _onTextureLoaded() { + this._simulator.updateUVs(true); + this._syncAspect(); + this._updateMaterial(); + this.markForRender(true); + }, + _syncAspect: function _syncAspect() { + var frameRect = this._renderSpriteFrame._rect; + this._aspectRatio = frameRect.width / frameRect.height; + }, + _applySpriteFrame: function _applySpriteFrame() { + this._renderSpriteFrame = this._renderSpriteFrame || this._spriteFrame; + this._renderSpriteFrame && (this._renderSpriteFrame.textureLoaded() ? this._onTextureLoaded() : this._renderSpriteFrame.onTextureLoaded(this._onTextureLoaded, this)); + }, + _getTexture: function _getTexture() { + return this._renderSpriteFrame && this._renderSpriteFrame.getTexture() || this._texture; + }, + _updateMaterial: function _updateMaterial() { + var material = this.getMaterial(0); + if (!material) return; + material.define("CC_USE_MODEL", this._positionType !== PositionType.FREE); + material.setProperty("texture", this._getTexture()); + BlendFunc.prototype._updateMaterial.call(this); + }, + _finishedSimulation: function _finishedSimulation() { + false; + this.resetSystem(); + this.stopSystem(); + this.disableRender(); + this.autoRemoveOnFinish && this._stopped && this.node.destroy(); + } + }); + cc.ParticleSystem = module.exports = ParticleSystem; + }), { + "../compression/ZipUtils": 23, + "../core/assets/material/CCMaterial": 124, + "../core/components/CCRenderComponent": 160, + "../core/platform/CCMacro": 244, + "../core/renderer/render-flow": 272, + "../core/utils/blend-func": 318, + "../core/utils/texture-util": 332, + "./CCPNGReader": 353, + "./CCParticleAsset": 354, + "./CCTIFFReader": 356, + "./particle-simulator": 358, + "fire-url": void 0 + }], + 356: [(function (require, module, exports) { + "use strict"; + var debug = require("../core/CCDebug"); + var tiffReader = { + _littleEndian: false, + _tiffData: null, + _fileDirectories: [], + getUint8: function getUint8(offset) { + return this._tiffData[offset]; + }, + getUint16: function getUint16(offset) { + return this._littleEndian ? this._tiffData[offset + 1] << 8 | this._tiffData[offset] : this._tiffData[offset] << 8 | this._tiffData[offset + 1]; + }, + getUint32: function getUint32(offset) { + var a = this._tiffData; + return this._littleEndian ? a[offset + 3] << 24 | a[offset + 2] << 16 | a[offset + 1] << 8 | a[offset] : a[offset] << 24 | a[offset + 1] << 16 | a[offset + 2] << 8 | a[offset + 3]; + }, + checkLittleEndian: function checkLittleEndian() { + var BOM = this.getUint16(0); + if (18761 === BOM) this.littleEndian = true; else { + if (19789 !== BOM) { + console.log(BOM); + throw TypeError(debug.getError(6019)); + } + this.littleEndian = false; + } + return this.littleEndian; + }, + hasTowel: function hasTowel() { + if (42 !== this.getUint16(2)) throw RangeError(debug.getError(6020)); + return true; + }, + getFieldTypeName: function getFieldTypeName(fieldType) { + var typeNames = this.fieldTypeNames; + if (fieldType in typeNames) return typeNames[fieldType]; + return null; + }, + getFieldTagName: function getFieldTagName(fieldTag) { + var tagNames = this.fieldTagNames; + if (fieldTag in tagNames) return tagNames[fieldTag]; + cc.logID(6021, fieldTag); + return "Tag" + fieldTag; + }, + getFieldTypeLength: function getFieldTypeLength(fieldTypeName) { + if (-1 !== ["BYTE", "ASCII", "SBYTE", "UNDEFINED"].indexOf(fieldTypeName)) return 1; + if (-1 !== ["SHORT", "SSHORT"].indexOf(fieldTypeName)) return 2; + if (-1 !== ["LONG", "SLONG", "FLOAT"].indexOf(fieldTypeName)) return 4; + if (-1 !== ["RATIONAL", "SRATIONAL", "DOUBLE"].indexOf(fieldTypeName)) return 8; + return null; + }, + getFieldValues: function getFieldValues(fieldTagName, fieldTypeName, typeCount, valueOffset) { + var fieldValues = []; + var fieldTypeLength = this.getFieldTypeLength(fieldTypeName); + var fieldValueSize = fieldTypeLength * typeCount; + if (fieldValueSize <= 4) false === this.littleEndian ? fieldValues.push(valueOffset >>> 8 * (4 - fieldTypeLength)) : fieldValues.push(valueOffset); else for (var i = 0; i < typeCount; i++) { + var indexOffset = fieldTypeLength * i; + if (fieldTypeLength >= 8) if (-1 !== ["RATIONAL", "SRATIONAL"].indexOf(fieldTypeName)) { + fieldValues.push(this.getUint32(valueOffset + indexOffset)); + fieldValues.push(this.getUint32(valueOffset + indexOffset + 4)); + } else cc.logID(8e3); else fieldValues.push(this.getBytes(fieldTypeLength, valueOffset + indexOffset)); + } + "ASCII" === fieldTypeName && fieldValues.forEach((function (e, i, a) { + a[i] = String.fromCharCode(e); + })); + return fieldValues; + }, + getBytes: function getBytes(numBytes, offset) { + if (numBytes <= 0) cc.logID(8001); else { + if (numBytes <= 1) return this.getUint8(offset); + if (numBytes <= 2) return this.getUint16(offset); + if (numBytes <= 3) return this.getUint32(offset) >>> 8; + if (numBytes <= 4) return this.getUint32(offset); + cc.logID(8002); + } + }, + getBits: function getBits(numBits, byteOffset, bitOffset) { + bitOffset = bitOffset || 0; + var extraBytes = Math.floor(bitOffset / 8); + var newByteOffset = byteOffset + extraBytes; + var totalBits = bitOffset + numBits; + var shiftRight = 32 - numBits; + var shiftLeft, rawBits; + if (totalBits <= 0) cc.logID(6023); else if (totalBits <= 8) { + shiftLeft = 24 + bitOffset; + rawBits = this.getUint8(newByteOffset); + } else if (totalBits <= 16) { + shiftLeft = 16 + bitOffset; + rawBits = this.getUint16(newByteOffset); + } else if (totalBits <= 32) { + shiftLeft = bitOffset; + rawBits = this.getUint32(newByteOffset); + } else cc.logID(6022); + return { + bits: rawBits << shiftLeft >>> shiftRight, + byteOffset: newByteOffset + Math.floor(totalBits / 8), + bitOffset: totalBits % 8 + }; + }, + parseFileDirectory: function parseFileDirectory(byteOffset) { + var numDirEntries = this.getUint16(byteOffset); + var tiffFields = []; + for (var i = byteOffset + 2, entryCount = 0; entryCount < numDirEntries; i += 12, + entryCount++) { + var fieldTag = this.getUint16(i); + var fieldType = this.getUint16(i + 2); + var typeCount = this.getUint32(i + 4); + var valueOffset = this.getUint32(i + 8); + var fieldTagName = this.getFieldTagName(fieldTag); + var fieldTypeName = this.getFieldTypeName(fieldType); + var fieldValues = this.getFieldValues(fieldTagName, fieldTypeName, typeCount, valueOffset); + tiffFields[fieldTagName] = { + type: fieldTypeName, + values: fieldValues + }; + } + this._fileDirectories.push(tiffFields); + var nextIFDByteOffset = this.getUint32(i); + 0 !== nextIFDByteOffset && this.parseFileDirectory(nextIFDByteOffset); + }, + clampColorSample: function clampColorSample(colorSample, bitsPerSample) { + var multiplier = Math.pow(2, 8 - bitsPerSample); + return Math.floor(colorSample * multiplier + (multiplier - 1)); + }, + parseTIFF: function parseTIFF(tiffData, canvas) { + canvas = canvas || document.createElement("canvas"); + this._tiffData = tiffData; + this.canvas = canvas; + this.checkLittleEndian(); + if (!this.hasTowel()) return; + var firstIFDByteOffset = this.getUint32(4); + this._fileDirectories.length = 0; + this.parseFileDirectory(firstIFDByteOffset); + var fileDirectory = this._fileDirectories[0]; + var imageWidth = fileDirectory["ImageWidth"].values[0]; + var imageLength = fileDirectory["ImageLength"].values[0]; + this.canvas.width = imageWidth; + this.canvas.height = imageLength; + var strips = []; + var compression = fileDirectory["Compression"] ? fileDirectory["Compression"].values[0] : 1; + var samplesPerPixel = fileDirectory["SamplesPerPixel"].values[0]; + var sampleProperties = []; + var bitsPerPixel = 0; + var hasBytesPerPixel = false; + fileDirectory["BitsPerSample"].values.forEach((function (bitsPerSample, i, bitsPerSampleValues) { + sampleProperties[i] = { + bitsPerSample: bitsPerSample, + hasBytesPerSample: false, + bytesPerSample: void 0 + }; + if (bitsPerSample % 8 === 0) { + sampleProperties[i].hasBytesPerSample = true; + sampleProperties[i].bytesPerSample = bitsPerSample / 8; + } + bitsPerPixel += bitsPerSample; + }), this); + if (bitsPerPixel % 8 === 0) { + hasBytesPerPixel = true; + var bytesPerPixel = bitsPerPixel / 8; + } + var stripOffsetValues = fileDirectory["StripOffsets"].values; + var numStripOffsetValues = stripOffsetValues.length; + if (fileDirectory["StripByteCounts"]) var stripByteCountValues = fileDirectory["StripByteCounts"].values; else { + cc.logID(8003); + if (1 !== numStripOffsetValues) throw Error(debug.getError(6024)); + var stripByteCountValues = [Math.ceil(imageWidth * imageLength * bitsPerPixel / 8)]; + } + for (var i = 0; i < numStripOffsetValues; i++) { + var stripOffset = stripOffsetValues[i]; + strips[i] = []; + var stripByteCount = stripByteCountValues[i]; + for (var byteOffset = 0, bitOffset = 0, jIncrement = 1, getHeader = true, pixel = [], numBytes = 0, sample = 0, currentSample = 0; byteOffset < stripByteCount; byteOffset += jIncrement) switch (compression) { + case 1: + for (var m = 0, pixel = []; m < samplesPerPixel; m++) { + if (!sampleProperties[m].hasBytesPerSample) { + var sampleInfo = this.getBits(sampleProperties[m].bitsPerSample, stripOffset + byteOffset, bitOffset); + pixel.push(sampleInfo.bits); + byteOffset = sampleInfo.byteOffset - stripOffset; + bitOffset = sampleInfo.bitOffset; + throw RangeError(debug.getError(6025)); + } + var sampleOffset = sampleProperties[m].bytesPerSample * m; + pixel.push(this.getBytes(sampleProperties[m].bytesPerSample, stripOffset + byteOffset + sampleOffset)); + } + strips[i].push(pixel); + if (!hasBytesPerPixel) { + jIncrement = 0; + throw RangeError(debug.getError(6026)); + } + jIncrement = bytesPerPixel; + break; + + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + + case 32773: + if (getHeader) { + getHeader = false; + var blockLength = 1; + var iterations = 1; + var header = this.getInt8(stripOffset + byteOffset); + header >= 0 && header <= 127 ? blockLength = header + 1 : header >= -127 && header <= -1 ? iterations = 1 - header : getHeader = true; + } else { + var currentByte = this.getUint8(stripOffset + byteOffset); + for (var m = 0; m < iterations; m++) { + if (!sampleProperties[sample].hasBytesPerSample) throw RangeError(debug.getError(6025)); + currentSample = currentSample << 8 * numBytes | currentByte; + numBytes++; + if (numBytes === sampleProperties[sample].bytesPerSample) { + pixel.push(currentSample); + currentSample = numBytes = 0; + sample++; + } + if (sample === samplesPerPixel) { + strips[i].push(pixel); + pixel = []; + sample = 0; + } + } + blockLength--; + 0 === blockLength && (getHeader = true); + } + jIncrement = 1; + } + } + if (canvas.getContext) { + var ctx = this.canvas.getContext("2d"); + ctx.fillStyle = "rgba(255, 255, 255, 0)"; + var rowsPerStrip = fileDirectory["RowsPerStrip"] ? fileDirectory["RowsPerStrip"].values[0] : imageLength; + var numStrips = strips.length; + var imageLengthModRowsPerStrip = imageLength % rowsPerStrip; + var rowsInLastStrip = 0 === imageLengthModRowsPerStrip ? rowsPerStrip : imageLengthModRowsPerStrip; + var numRowsInStrip = rowsPerStrip; + var numRowsInPreviousStrip = 0; + var photometricInterpretation = fileDirectory["PhotometricInterpretation"].values[0]; + var extraSamplesValues = []; + var numExtraSamples = 0; + if (fileDirectory["ExtraSamples"]) { + extraSamplesValues = fileDirectory["ExtraSamples"].values; + numExtraSamples = extraSamplesValues.length; + } + if (fileDirectory["ColorMap"]) { + var colorMapValues = fileDirectory["ColorMap"].values; + var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample); + } + for (var i = 0; i < numStrips; i++) { + i + 1 === numStrips && (numRowsInStrip = rowsInLastStrip); + var numPixels = strips[i].length; + var yPadding = numRowsInPreviousStrip * i; + for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) for (var x = 0; x < imageWidth; x++, + j++) { + var pixelSamples = strips[i][j]; + var red = 0; + var green = 0; + var blue = 0; + var opacity = 1; + if (numExtraSamples > 0) for (var k = 0; k < numExtraSamples; k++) if (1 === extraSamplesValues[k] || 2 === extraSamplesValues[k]) { + opacity = pixelSamples[3 + k] / 256; + break; + } + switch (photometricInterpretation) { + case 0: + if (sampleProperties[0].hasBytesPerSample) var invertValue = Math.pow(16, 2 * sampleProperties[0].bytesPerSample); + pixelSamples.forEach((function (sample, index, samples) { + samples[index] = invertValue - sample; + })); + + case 1: + red = green = blue = this.clampColorSample(pixelSamples[0], sampleProperties[0].bitsPerSample); + break; + + case 2: + red = this.clampColorSample(pixelSamples[0], sampleProperties[0].bitsPerSample); + green = this.clampColorSample(pixelSamples[1], sampleProperties[1].bitsPerSample); + blue = this.clampColorSample(pixelSamples[2], sampleProperties[2].bitsPerSample); + break; + + case 3: + if (void 0 === colorMapValues) throw Error(debug.getError(6027)); + var colorMapIndex = pixelSamples[0]; + red = this.clampColorSample(colorMapValues[colorMapIndex], 16); + green = this.clampColorSample(colorMapValues[colorMapSampleSize + colorMapIndex], 16); + blue = this.clampColorSample(colorMapValues[2 * colorMapSampleSize + colorMapIndex], 16); + break; + + default: + throw RangeError(debug.getError(6028, photometricInterpretation)); + } + ctx.fillStyle = "rgba(" + red + ", " + green + ", " + blue + ", " + opacity + ")"; + ctx.fillRect(x, yPadding + y, 1, 1); + } + numRowsInPreviousStrip = numRowsInStrip; + } + } + return this.canvas; + }, + fieldTagNames: { + 315: "Artist", + 258: "BitsPerSample", + 265: "CellLength", + 264: "CellWidth", + 320: "ColorMap", + 259: "Compression", + 33432: "Copyright", + 306: "DateTime", + 338: "ExtraSamples", + 266: "FillOrder", + 289: "FreeByteCounts", + 288: "FreeOffsets", + 291: "GrayResponseCurve", + 290: "GrayResponseUnit", + 316: "HostComputer", + 270: "ImageDescription", + 257: "ImageLength", + 256: "ImageWidth", + 271: "Make", + 281: "MaxSampleValue", + 280: "MinSampleValue", + 272: "Model", + 254: "NewSubfileType", + 274: "Orientation", + 262: "PhotometricInterpretation", + 284: "PlanarConfiguration", + 296: "ResolutionUnit", + 278: "RowsPerStrip", + 277: "SamplesPerPixel", + 305: "Software", + 279: "StripByteCounts", + 273: "StripOffsets", + 255: "SubfileType", + 263: "Threshholding", + 282: "XResolution", + 283: "YResolution", + 326: "BadFaxLines", + 327: "CleanFaxData", + 343: "ClipPath", + 328: "ConsecutiveBadFaxLines", + 433: "Decode", + 434: "DefaultImageColor", + 269: "DocumentName", + 336: "DotRange", + 321: "HalftoneHints", + 346: "Indexed", + 347: "JPEGTables", + 285: "PageName", + 297: "PageNumber", + 317: "Predictor", + 319: "PrimaryChromaticities", + 532: "ReferenceBlackWhite", + 339: "SampleFormat", + 559: "StripRowCounts", + 330: "SubIFDs", + 292: "T4Options", + 293: "T6Options", + 325: "TileByteCounts", + 323: "TileLength", + 324: "TileOffsets", + 322: "TileWidth", + 301: "TransferFunction", + 318: "WhitePoint", + 344: "XClipPathUnits", + 286: "XPosition", + 529: "YCbCrCoefficients", + 531: "YCbCrPositioning", + 530: "YCbCrSubSampling", + 345: "YClipPathUnits", + 287: "YPosition", + 37378: "ApertureValue", + 40961: "ColorSpace", + 36868: "DateTimeDigitized", + 36867: "DateTimeOriginal", + 34665: "Exif IFD", + 36864: "ExifVersion", + 33434: "ExposureTime", + 41728: "FileSource", + 37385: "Flash", + 40960: "FlashpixVersion", + 33437: "FNumber", + 42016: "ImageUniqueID", + 37384: "LightSource", + 37500: "MakerNote", + 37377: "ShutterSpeedValue", + 37510: "UserComment", + 33723: "IPTC", + 34675: "ICC Profile", + 700: "XMP", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 34377: "Photoshop" + }, + fieldTypeNames: { + 1: "BYTE", + 2: "ASCII", + 3: "SHORT", + 4: "LONG", + 5: "RATIONAL", + 6: "SBYTE", + 7: "UNDEFINED", + 8: "SSHORT", + 9: "SLONG", + 10: "SRATIONAL", + 11: "FLOAT", + 12: "DOUBLE" + } + }; + module.exports = tiffReader; + }), { + "../core/CCDebug": 70 + }], + 357: [(function (require, module, exports) { + "use strict"; + require("./CCParticleAsset"); + require("./CCParticleSystem"); + require("./particle-simulator"); + require("./particle-system-assembler"); + }), { + "./CCParticleAsset": 354, + "./CCParticleSystem": 355, + "./particle-simulator": 358, + "./particle-system-assembler": 359 + }], + 358: [(function (require, module, exports) { + "use strict"; + var js = require("../core/platform/js"); + var misc = require("../core/utils/misc"); + var ZERO_VEC2 = cc.v2(0, 0); + var _pos = cc.v2(); + var _tpa = cc.v2(); + var _tpb = cc.v2(); + var _tpc = cc.v2(); + var Particle = function Particle() { + this.pos = cc.v2(0, 0); + this.startPos = cc.v2(0, 0); + this.color = cc.color(0, 0, 0, 255); + this.deltaColor = { + r: 0, + g: 0, + b: 0, + a: 255 + }; + this.preciseColor = { + r: 0, + g: 0, + b: 0, + a: 255 + }; + this.size = 0; + this.deltaSize = 0; + this.rotation = 0; + this.deltaRotation = 0; + this.timeToLive = 0; + this.drawPos = cc.v2(0, 0); + this.aspectRatio = 1; + this.dir = cc.v2(0, 0); + this.radialAccel = 0; + this.tangentialAccel = 0; + this.angle = 0; + this.degreesPerSecond = 0; + this.radius = 0; + this.deltaRadius = 0; + }; + var pool = new js.Pool(function (par) { + par.pos.set(ZERO_VEC2); + par.startPos.set(ZERO_VEC2); + par.color._val = 4278190080; + par.deltaColor.r = par.deltaColor.g = par.deltaColor.b = 0; + par.deltaColor.a = 255; + par.size = 0; + par.deltaSize = 0; + par.rotation = 0; + par.deltaRotation = 0; + par.timeToLive = 0; + par.drawPos.set(ZERO_VEC2); + par.aspectRatio = 1; + par.dir.set(ZERO_VEC2); + par.radialAccel = 0; + par.tangentialAccel = 0; + par.angle = 0; + par.degreesPerSecond = 0; + par.radius = 0; + par.deltaRadius = 0; + }, 1024); + pool.get = function () { + return this._get() || new Particle(); + }; + var Simulator = function Simulator(system) { + this.sys = system; + this.particles = []; + this.active = false; + this.readyToPlay = true; + this.finished = false; + this.elapsed = 0; + this.emitCounter = 0; + this._uvFilled = 0; + this._worldRotation = 0; + }; + Simulator.prototype.stop = function () { + this.active = false; + this.readyToPlay = false; + this.elapsed = this.sys.duration; + this.emitCounter = 0; + }; + Simulator.prototype.reset = function () { + this.active = true; + this.readyToPlay = true; + this.elapsed = 0; + this.emitCounter = 0; + this.finished = false; + var particles = this.particles; + for (var id = 0; id < particles.length; ++id) pool.put(particles[id]); + particles.length = 0; + }; + Simulator.prototype.emitParticle = function (pos) { + var psys = this.sys; + var clampf = misc.clampf; + var particle = pool.get(); + this.particles.push(particle); + particle.timeToLive = psys.life + psys.lifeVar * (Math.random() - .5) * 2; + var timeToLive = particle.timeToLive = Math.max(0, particle.timeToLive); + particle.pos.x = psys.sourcePos.x + psys.posVar.x * (Math.random() - .5) * 2; + particle.pos.y = psys.sourcePos.y + psys.posVar.y * (Math.random() - .5) * 2; + var sr, sg, sb, sa; + var startColor = psys._startColor, startColorVar = psys._startColorVar; + var endColor = psys._endColor, endColorVar = psys._endColorVar; + particle.color.r = sr = clampf(startColor.r + startColorVar.r * (Math.random() - .5) * 2, 0, 255); + particle.color.g = sg = clampf(startColor.g + startColorVar.g * (Math.random() - .5) * 2, 0, 255); + particle.color.b = sb = clampf(startColor.b + startColorVar.b * (Math.random() - .5) * 2, 0, 255); + particle.color.a = sa = clampf(startColor.a + startColorVar.a * (Math.random() - .5) * 2, 0, 255); + var color = particle.color; + var preciseColor = particle.preciseColor; + preciseColor.r = color.r; + preciseColor.g = color.g; + preciseColor.b = color.b; + preciseColor.a = color.a; + particle.deltaColor.r = (clampf(endColor.r + endColorVar.r * (Math.random() - .5) * 2, 0, 255) - sr) / timeToLive; + particle.deltaColor.g = (clampf(endColor.g + endColorVar.g * (Math.random() - .5) * 2, 0, 255) - sg) / timeToLive; + particle.deltaColor.b = (clampf(endColor.b + endColorVar.b * (Math.random() - .5) * 2, 0, 255) - sb) / timeToLive; + particle.deltaColor.a = (clampf(endColor.a + endColorVar.a * (Math.random() - .5) * 2, 0, 255) - sa) / timeToLive; + var startS = psys.startSize + psys.startSizeVar * (Math.random() - .5) * 2; + startS = Math.max(0, startS); + particle.size = startS; + if (psys.endSize === cc.ParticleSystem.START_SIZE_EQUAL_TO_END_SIZE) particle.deltaSize = 0; else { + var endS = psys.endSize + psys.endSizeVar * (Math.random() - .5) * 2; + endS = Math.max(0, endS); + particle.deltaSize = (endS - startS) / timeToLive; + } + var startA = psys.startSpin + psys.startSpinVar * (Math.random() - .5) * 2; + var endA = psys.endSpin + psys.endSpinVar * (Math.random() - .5) * 2; + particle.rotation = startA; + particle.deltaRotation = (endA - startA) / timeToLive; + particle.startPos.x = pos.x; + particle.startPos.y = pos.y; + particle.aspectRatio = psys._aspectRatio || 1; + var a = misc.degreesToRadians(psys.angle + this._worldRotation + psys.angleVar * (Math.random() - .5) * 2); + if (psys.emitterMode === cc.ParticleSystem.EmitterMode.GRAVITY) { + var s = psys.speed + psys.speedVar * (Math.random() - .5) * 2; + particle.dir.x = Math.cos(a); + particle.dir.y = Math.sin(a); + particle.dir.mulSelf(s); + particle.radialAccel = psys.radialAccel + psys.radialAccelVar * (Math.random() - .5) * 2; + particle.tangentialAccel = psys.tangentialAccel + psys.tangentialAccelVar * (Math.random() - .5) * 2; + psys.rotationIsDir && (particle.rotation = -misc.radiansToDegrees(Math.atan2(particle.dir.y, particle.dir.x))); + } else { + var startRadius = psys.startRadius + psys.startRadiusVar * (Math.random() - .5) * 2; + var endRadius = psys.endRadius + psys.endRadiusVar * (Math.random() - .5) * 2; + particle.radius = startRadius; + particle.deltaRadius = psys.endRadius === cc.ParticleSystem.START_RADIUS_EQUAL_TO_END_RADIUS ? 0 : (endRadius - startRadius) / timeToLive; + particle.angle = a; + particle.degreesPerSecond = misc.degreesToRadians(psys.rotatePerS + psys.rotatePerSVar * (Math.random() - .5) * 2); + } + }; + function getWorldRotation(node) { + var rotation = 0; + var tempNode = node; + while (tempNode) { + rotation += tempNode.angle; + tempNode = tempNode.parent; + } + return rotation; + } + Simulator.prototype.updateUVs = function (force) { + var assembler = this.sys._assembler; + if (!assembler) return; + var buffer = assembler.getBuffer(); + if (buffer && this.sys._renderSpriteFrame) { + var FLOAT_PER_PARTICLE = 4 * assembler._vfmt._bytes / 4; + var vbuf = buffer._vData; + var uv = this.sys._renderSpriteFrame.uv; + var start = force ? 0 : this._uvFilled; + var particleCount = this.particles.length; + for (var i = start; i < particleCount; i++) { + var offset = i * FLOAT_PER_PARTICLE; + vbuf[offset + 2] = uv[0]; + vbuf[offset + 3] = uv[1]; + vbuf[offset + 7] = uv[2]; + vbuf[offset + 8] = uv[3]; + vbuf[offset + 12] = uv[4]; + vbuf[offset + 13] = uv[5]; + vbuf[offset + 17] = uv[6]; + vbuf[offset + 18] = uv[7]; + } + this._uvFilled = particleCount; + } + }; + Simulator.prototype.updateParticleBuffer = function (particle, pos, buffer, offset) { + var vbuf = buffer._vData; + var uintbuf = buffer._uintVData; + var x = pos.x, y = pos.y; + var width = particle.size; + var height = width; + var aspectRatio = particle.aspectRatio; + aspectRatio > 1 ? height = width / aspectRatio : width = height * aspectRatio; + var halfWidth = width / 2; + var halfHeight = height / 2; + if (particle.rotation) { + var x1 = -halfWidth, y1 = -halfHeight; + var x2 = halfWidth, y2 = halfHeight; + var rad = -misc.degreesToRadians(particle.rotation); + var cr = Math.cos(rad), sr = Math.sin(rad); + vbuf[offset] = x1 * cr - y1 * sr + x; + vbuf[offset + 1] = x1 * sr + y1 * cr + y; + vbuf[offset + 5] = x2 * cr - y1 * sr + x; + vbuf[offset + 6] = x2 * sr + y1 * cr + y; + vbuf[offset + 10] = x1 * cr - y2 * sr + x; + vbuf[offset + 11] = x1 * sr + y2 * cr + y; + vbuf[offset + 15] = x2 * cr - y2 * sr + x; + vbuf[offset + 16] = x2 * sr + y2 * cr + y; + } else { + vbuf[offset] = x - halfWidth; + vbuf[offset + 1] = y - halfHeight; + vbuf[offset + 5] = x + halfWidth; + vbuf[offset + 6] = y - halfHeight; + vbuf[offset + 10] = x - halfWidth; + vbuf[offset + 11] = y + halfHeight; + vbuf[offset + 15] = x + halfWidth; + vbuf[offset + 16] = y + halfHeight; + } + uintbuf[offset + 4] = particle.color._val; + uintbuf[offset + 9] = particle.color._val; + uintbuf[offset + 14] = particle.color._val; + uintbuf[offset + 19] = particle.color._val; + }; + Simulator.prototype.step = function (dt) { + dt = dt > cc.director._maxParticleDeltaTime ? cc.director._maxParticleDeltaTime : dt; + var psys = this.sys; + var node = psys.node; + var particles = this.particles; + var FLOAT_PER_PARTICLE = 4 * this.sys._assembler._vfmt._bytes / 4; + var PositionType = cc.ParticleSystem.PositionType; + node._updateWorldMatrix(); + if (psys.positionType === PositionType.FREE) { + this._worldRotation = getWorldRotation(node); + var m = node._worldMatrix.m; + _pos.x = m[12]; + _pos.y = m[13]; + } else if (psys.positionType === PositionType.RELATIVE) { + this._worldRotation = node.angle; + _pos.x = node.x; + _pos.y = node.y; + } else this._worldRotation = 0; + if (this.active && psys.emissionRate) { + var rate = 1 / psys.emissionRate; + particles.length < psys.totalParticles && (this.emitCounter += dt); + while (particles.length < psys.totalParticles && this.emitCounter > rate) { + this.emitParticle(_pos); + this.emitCounter -= rate; + } + this.elapsed += dt; + -1 !== psys.duration && psys.duration < this.elapsed && psys.stopSystem(); + } + var buffer = psys._assembler.getBuffer(); + var particleCount = particles.length; + buffer.reset(); + buffer.request(4 * particleCount, 6 * particleCount); + particleCount > this._uvFilled && this.updateUVs(); + var particleIdx = 0; + while (particleIdx < particles.length) { + _tpa.x = _tpa.y = _tpb.x = _tpb.y = _tpc.x = _tpc.y = 0; + var particle = particles[particleIdx]; + particle.timeToLive -= dt; + if (particle.timeToLive > 0) { + if (psys.emitterMode === cc.ParticleSystem.EmitterMode.GRAVITY) { + var tmp = _tpc, radial = _tpa, tangential = _tpb; + if (particle.pos.x || particle.pos.y) { + radial.set(particle.pos); + radial.normalizeSelf(); + } + tangential.set(radial); + radial.mulSelf(particle.radialAccel); + var newy = tangential.x; + tangential.x = -tangential.y; + tangential.y = newy; + tangential.mulSelf(particle.tangentialAccel); + tmp.set(radial); + tmp.addSelf(tangential); + tmp.addSelf(psys.gravity); + tmp.mulSelf(dt); + particle.dir.addSelf(tmp); + tmp.set(particle.dir); + tmp.mulSelf(dt); + particle.pos.addSelf(tmp); + } else { + particle.angle += particle.degreesPerSecond * dt; + particle.radius += particle.deltaRadius * dt; + particle.pos.x = -Math.cos(particle.angle) * particle.radius; + particle.pos.y = -Math.sin(particle.angle) * particle.radius; + } + var preciseColor = particle.preciseColor; + var deltaColor = particle.deltaColor; + preciseColor.r += deltaColor.r * dt; + preciseColor.g += deltaColor.g * dt; + preciseColor.b += deltaColor.b * dt; + preciseColor.a += deltaColor.a * dt; + var color = particle.color; + color.r = preciseColor.r; + color.g = preciseColor.g; + color.b = preciseColor.b; + color.a = preciseColor.a; + particle.size += particle.deltaSize * dt; + particle.size < 0 && (particle.size = 0); + particle.rotation += particle.deltaRotation * dt; + var newPos = _tpa; + newPos.set(particle.pos); + psys.positionType !== PositionType.GROUPED && newPos.addSelf(particle.startPos); + var offset = FLOAT_PER_PARTICLE * particleIdx; + this.updateParticleBuffer(particle, newPos, buffer, offset); + ++particleIdx; + } else { + var deadParticle = particles[particleIdx]; + particleIdx !== particles.length - 1 && (particles[particleIdx] = particles[particles.length - 1]); + pool.put(deadParticle); + particles.length--; + } + } + psys._assembler._ia._count = 6 * particles.length; + if (particles.length > 0) buffer.uploadData(); else if (!this.active && !this.readyToPlay) { + this.finished = true; + psys._finishedSimulation(); + } + }; + module.exports = Simulator; + }), { + "../core/platform/js": 260, + "../core/utils/misc": 324 + }], + 359: [(function (require, module, exports) { + "use strict"; + var _assembler = _interopRequireDefault(require("../core/renderer/assembler")); + var _inputAssembler = _interopRequireDefault(require("../renderer/core/input-assembler")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var ParticleSystem = require("./CCParticleSystem"); + var renderer = require("../core/renderer/"); + var QuadBuffer = require("../core/renderer/webgl/quad-buffer"); + var vfmtPosUvColor = require("../core/renderer/webgl/vertex-format").vfmtPosUvColor; + var ParticleAssembler = (function (_Assembler) { + _inheritsLoose(ParticleAssembler, _Assembler); + function ParticleAssembler(comp) { + var _this; + _this = _Assembler.call(this, comp) || this; + _this._buffer = null; + _this._ia = null; + _this._vfmt = vfmtPosUvColor; + return _this; + } + var _proto = ParticleAssembler.prototype; + _proto.getBuffer = function getBuffer() { + if (!this._buffer) { + this._buffer = new QuadBuffer(renderer._handle, vfmtPosUvColor); + this._ia = new _inputAssembler["default"](); + this._ia._vertexBuffer = this._buffer._vb; + this._ia._indexBuffer = this._buffer._ib; + this._ia._start = 0; + this._ia._count = 0; + } + return this._buffer; + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + if (!this._ia) return; + var PositionType = cc.ParticleSystem.PositionType; + comp.positionType === PositionType.RELATIVE ? renderer.node = comp.node.parent : renderer.node = comp.node; + renderer.material = comp._materials[0]; + renderer._flushIA(this._ia); + }; + return ParticleAssembler; + })(_assembler["default"]); + _assembler["default"].register(ParticleSystem, ParticleAssembler); + module.exports = ParticleAssembler; + }), { + "../core/renderer/": 271, + "../core/renderer/assembler": 268, + "../core/renderer/webgl/quad-buffer": 310, + "../core/renderer/webgl/vertex-format": 313, + "../renderer/core/input-assembler": 362, + "./CCParticleSystem": 355 + }], + 360: [(function (require, module, exports) { + "use strict"; + var enums = { + USAGE_STATIC: 35044, + USAGE_DYNAMIC: 35048, + USAGE_STREAM: 35040, + INDEX_FMT_UINT8: 5121, + INDEX_FMT_UINT16: 5123, + INDEX_FMT_UINT32: 5125, + ATTR_POSITION: "a_position", + ATTR_NORMAL: "a_normal", + ATTR_TANGENT: "a_tangent", + ATTR_BITANGENT: "a_bitangent", + ATTR_WEIGHTS: "a_weights", + ATTR_JOINTS: "a_joints", + ATTR_COLOR: "a_color", + ATTR_COLOR0: "a_color0", + ATTR_COLOR1: "a_color1", + ATTR_UV: "a_uv", + ATTR_UV0: "a_uv0", + ATTR_UV1: "a_uv1", + ATTR_UV2: "a_uv2", + ATTR_UV3: "a_uv3", + ATTR_UV4: "a_uv4", + ATTR_UV5: "a_uv5", + ATTR_UV6: "a_uv6", + ATTR_UV7: "a_uv7", + ATTR_TYPE_INT8: 5120, + ATTR_TYPE_UINT8: 5121, + ATTR_TYPE_INT16: 5122, + ATTR_TYPE_UINT16: 5123, + ATTR_TYPE_INT32: 5124, + ATTR_TYPE_UINT32: 5125, + ATTR_TYPE_FLOAT32: 5126, + FILTER_NEAREST: 0, + FILTER_LINEAR: 1, + WRAP_REPEAT: 10497, + WRAP_CLAMP: 33071, + WRAP_MIRROR: 33648, + TEXTURE_FMT_RGB_DXT1: 0, + TEXTURE_FMT_RGBA_DXT1: 1, + TEXTURE_FMT_RGBA_DXT3: 2, + TEXTURE_FMT_RGBA_DXT5: 3, + TEXTURE_FMT_RGB_ETC1: 4, + TEXTURE_FMT_RGB_PVRTC_2BPPV1: 5, + TEXTURE_FMT_RGBA_PVRTC_2BPPV1: 6, + TEXTURE_FMT_RGB_PVRTC_4BPPV1: 7, + TEXTURE_FMT_RGBA_PVRTC_4BPPV1: 8, + TEXTURE_FMT_A8: 9, + TEXTURE_FMT_L8: 10, + TEXTURE_FMT_L8_A8: 11, + TEXTURE_FMT_R5_G6_B5: 12, + TEXTURE_FMT_R5_G5_B5_A1: 13, + TEXTURE_FMT_R4_G4_B4_A4: 14, + TEXTURE_FMT_RGB8: 15, + TEXTURE_FMT_RGBA8: 16, + TEXTURE_FMT_RGB16F: 17, + TEXTURE_FMT_RGBA16F: 18, + TEXTURE_FMT_RGB32F: 19, + TEXTURE_FMT_RGBA32F: 20, + TEXTURE_FMT_R32F: 21, + TEXTURE_FMT_111110F: 22, + TEXTURE_FMT_SRGB: 23, + TEXTURE_FMT_SRGBA: 24, + TEXTURE_FMT_D16: 25, + TEXTURE_FMT_D32: 26, + TEXTURE_FMT_D24S8: 27, + TEXTURE_FMT_RGB_ETC2: 28, + TEXTURE_FMT_RGBA_ETC2: 29, + DS_FUNC_NEVER: 512, + DS_FUNC_LESS: 513, + DS_FUNC_EQUAL: 514, + DS_FUNC_LEQUAL: 515, + DS_FUNC_GREATER: 516, + DS_FUNC_NOTEQUAL: 517, + DS_FUNC_GEQUAL: 518, + DS_FUNC_ALWAYS: 519, + RB_FMT_RGBA4: 32854, + RB_FMT_RGB5_A1: 32855, + RB_FMT_RGB565: 36194, + RB_FMT_D16: 33189, + RB_FMT_S8: 36168, + RB_FMT_D24S8: 34041, + BLEND_FUNC_ADD: 32774, + BLEND_FUNC_SUBTRACT: 32778, + BLEND_FUNC_REVERSE_SUBTRACT: 32779, + BLEND_ZERO: 0, + BLEND_ONE: 1, + BLEND_SRC_COLOR: 768, + BLEND_ONE_MINUS_SRC_COLOR: 769, + BLEND_DST_COLOR: 774, + BLEND_ONE_MINUS_DST_COLOR: 775, + BLEND_SRC_ALPHA: 770, + BLEND_ONE_MINUS_SRC_ALPHA: 771, + BLEND_DST_ALPHA: 772, + BLEND_ONE_MINUS_DST_ALPHA: 773, + BLEND_CONSTANT_COLOR: 32769, + BLEND_ONE_MINUS_CONSTANT_COLOR: 32770, + BLEND_CONSTANT_ALPHA: 32771, + BLEND_ONE_MINUS_CONSTANT_ALPHA: 32772, + BLEND_SRC_ALPHA_SATURATE: 776, + STENCIL_DISABLE: 0, + STENCIL_ENABLE: 1, + STENCIL_INHERIT: 2, + STENCIL_OP_KEEP: 7680, + STENCIL_OP_ZERO: 0, + STENCIL_OP_REPLACE: 7681, + STENCIL_OP_INCR: 7682, + STENCIL_OP_INCR_WRAP: 34055, + STENCIL_OP_DECR: 7683, + STENCIL_OP_DECR_WRAP: 34056, + STENCIL_OP_INVERT: 5386, + CULL_NONE: 0, + CULL_FRONT: 1028, + CULL_BACK: 1029, + CULL_FRONT_AND_BACK: 1032, + PT_POINTS: 0, + PT_LINES: 1, + PT_LINE_LOOP: 2, + PT_LINE_STRIP: 3, + PT_TRIANGLES: 4, + PT_TRIANGLE_STRIP: 5, + PT_TRIANGLE_FAN: 6 + }; + var RenderQueue = { + OPAQUE: 0, + TRANSPARENT: 1, + OVERLAY: 2 + }; + function murmurhash2_32_gc(str, seed) { + var l = str.length, h = seed ^ l, i = 0, k; + while (l >= 4) { + k = 255 & str.charCodeAt(i) | (255 & str.charCodeAt(++i)) << 8 | (255 & str.charCodeAt(++i)) << 16 | (255 & str.charCodeAt(++i)) << 24; + k = 1540483477 * (65535 & k) + ((1540483477 * (k >>> 16) & 65535) << 16); + k ^= k >>> 24; + k = 1540483477 * (65535 & k) + ((1540483477 * (k >>> 16) & 65535) << 16); + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16) ^ k; + l -= 4; + ++i; + } + switch (l) { + case 3: + h ^= (255 & str.charCodeAt(i + 2)) << 16; + + case 2: + h ^= (255 & str.charCodeAt(i + 1)) << 8; + + case 1: + h ^= 255 & str.charCodeAt(i); + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16); + } + h ^= h >>> 13; + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16); + h ^= h >>> 15; + return h >>> 0; + } + var WebGLEXT; + (function (WebGLEXT) { + WebGLEXT[WebGLEXT["COMPRESSED_RGB_S3TC_DXT1_EXT"] = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT1_EXT"] = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT3_EXT"] = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_S3TC_DXT5_EXT"] = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_S3TC_DXT1_EXT"] = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"] = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"] = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"] = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_PVRTC_4BPPV1_IMG"] = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_PVRTC_2BPPV1_IMG"] = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"] = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"] = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; + WebGLEXT[WebGLEXT["COMPRESSED_RGB_ETC1_WEBGL"] = 36196] = "COMPRESSED_RGB_ETC1_WEBGL"; + })(WebGLEXT || (WebGLEXT = {})); + var GFXObjectType; + (function (GFXObjectType) { + GFXObjectType[GFXObjectType["UNKNOWN"] = 0] = "UNKNOWN"; + GFXObjectType[GFXObjectType["BUFFER"] = 1] = "BUFFER"; + GFXObjectType[GFXObjectType["TEXTURE"] = 2] = "TEXTURE"; + GFXObjectType[GFXObjectType["TEXTURE_VIEW"] = 3] = "TEXTURE_VIEW"; + GFXObjectType[GFXObjectType["RENDER_PASS"] = 4] = "RENDER_PASS"; + GFXObjectType[GFXObjectType["FRAMEBUFFER"] = 5] = "FRAMEBUFFER"; + GFXObjectType[GFXObjectType["SAMPLER"] = 6] = "SAMPLER"; + GFXObjectType[GFXObjectType["SHADER"] = 7] = "SHADER"; + GFXObjectType[GFXObjectType["PIPELINE_LAYOUT"] = 8] = "PIPELINE_LAYOUT"; + GFXObjectType[GFXObjectType["PIPELINE_STATE"] = 9] = "PIPELINE_STATE"; + GFXObjectType[GFXObjectType["BINDING_LAYOUT"] = 10] = "BINDING_LAYOUT"; + GFXObjectType[GFXObjectType["INPUT_ASSEMBLER"] = 11] = "INPUT_ASSEMBLER"; + GFXObjectType[GFXObjectType["COMMAND_ALLOCATOR"] = 12] = "COMMAND_ALLOCATOR"; + GFXObjectType[GFXObjectType["COMMAND_BUFFER"] = 13] = "COMMAND_BUFFER"; + GFXObjectType[GFXObjectType["QUEUE"] = 14] = "QUEUE"; + GFXObjectType[GFXObjectType["WINDOW"] = 15] = "WINDOW"; + })(GFXObjectType || (GFXObjectType = {})); + var GFXStatus; + (function (GFXStatus) { + GFXStatus[GFXStatus["UNREADY"] = 0] = "UNREADY"; + GFXStatus[GFXStatus["FAILED"] = 1] = "FAILED"; + GFXStatus[GFXStatus["SUCCESS"] = 2] = "SUCCESS"; + })(GFXStatus || (GFXStatus = {})); + var GFXObject = (function () { + function GFXObject(gfxType) { + this._gfxType = GFXObjectType.UNKNOWN; + this._status = GFXStatus.UNREADY; + this._gfxType = gfxType; + } + Object.defineProperty(GFXObject.prototype, "gfxType", { + get: function get() { + return this._gfxType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(GFXObject.prototype, "status", { + get: function get() { + return this._status; + }, + enumerable: true, + configurable: true + }); + return GFXObject; + })(); + var GFXAttributeName; + (function (GFXAttributeName) { + GFXAttributeName["ATTR_POSITION"] = "a_position"; + GFXAttributeName["ATTR_NORMAL"] = "a_normal"; + GFXAttributeName["ATTR_TANGENT"] = "a_tangent"; + GFXAttributeName["ATTR_BITANGENT"] = "a_bitangent"; + GFXAttributeName["ATTR_WEIGHTS"] = "a_weights"; + GFXAttributeName["ATTR_JOINTS"] = "a_joints"; + GFXAttributeName["ATTR_COLOR"] = "a_color"; + GFXAttributeName["ATTR_COLOR1"] = "a_color1"; + GFXAttributeName["ATTR_COLOR2"] = "a_color2"; + GFXAttributeName["ATTR_TEX_COORD"] = "a_texCoord"; + GFXAttributeName["ATTR_TEX_COORD1"] = "a_texCoord1"; + GFXAttributeName["ATTR_TEX_COORD2"] = "a_texCoord2"; + GFXAttributeName["ATTR_TEX_COORD3"] = "a_texCoord3"; + GFXAttributeName["ATTR_TEX_COORD4"] = "a_texCoord4"; + GFXAttributeName["ATTR_TEX_COORD5"] = "a_texCoord5"; + GFXAttributeName["ATTR_TEX_COORD6"] = "a_texCoord6"; + GFXAttributeName["ATTR_TEX_COORD7"] = "a_texCoord7"; + GFXAttributeName["ATTR_TEX_COORD8"] = "a_texCoord8"; + })(GFXAttributeName || (GFXAttributeName = {})); + var GFXType; + (function (GFXType) { + GFXType[GFXType["UNKNOWN"] = 0] = "UNKNOWN"; + GFXType[GFXType["BOOL"] = 1] = "BOOL"; + GFXType[GFXType["BOOL2"] = 2] = "BOOL2"; + GFXType[GFXType["BOOL3"] = 3] = "BOOL3"; + GFXType[GFXType["BOOL4"] = 4] = "BOOL4"; + GFXType[GFXType["INT"] = 5] = "INT"; + GFXType[GFXType["INT2"] = 6] = "INT2"; + GFXType[GFXType["INT3"] = 7] = "INT3"; + GFXType[GFXType["INT4"] = 8] = "INT4"; + GFXType[GFXType["UINT"] = 9] = "UINT"; + GFXType[GFXType["UINT2"] = 10] = "UINT2"; + GFXType[GFXType["UINT3"] = 11] = "UINT3"; + GFXType[GFXType["UINT4"] = 12] = "UINT4"; + GFXType[GFXType["FLOAT"] = 13] = "FLOAT"; + GFXType[GFXType["FLOAT2"] = 14] = "FLOAT2"; + GFXType[GFXType["FLOAT3"] = 15] = "FLOAT3"; + GFXType[GFXType["FLOAT4"] = 16] = "FLOAT4"; + GFXType[GFXType["COLOR4"] = 17] = "COLOR4"; + GFXType[GFXType["MAT2"] = 18] = "MAT2"; + GFXType[GFXType["MAT2X3"] = 19] = "MAT2X3"; + GFXType[GFXType["MAT2X4"] = 20] = "MAT2X4"; + GFXType[GFXType["MAT3X2"] = 21] = "MAT3X2"; + GFXType[GFXType["MAT3"] = 22] = "MAT3"; + GFXType[GFXType["MAT3X4"] = 23] = "MAT3X4"; + GFXType[GFXType["MAT4X2"] = 24] = "MAT4X2"; + GFXType[GFXType["MAT4X3"] = 25] = "MAT4X3"; + GFXType[GFXType["MAT4"] = 26] = "MAT4"; + GFXType[GFXType["SAMPLER1D"] = 27] = "SAMPLER1D"; + GFXType[GFXType["SAMPLER1D_ARRAY"] = 28] = "SAMPLER1D_ARRAY"; + GFXType[GFXType["SAMPLER2D"] = 29] = "SAMPLER2D"; + GFXType[GFXType["SAMPLER2D_ARRAY"] = 30] = "SAMPLER2D_ARRAY"; + GFXType[GFXType["SAMPLER3D"] = 31] = "SAMPLER3D"; + GFXType[GFXType["SAMPLER_CUBE"] = 32] = "SAMPLER_CUBE"; + GFXType[GFXType["COUNT"] = 33] = "COUNT"; + })(GFXType || (GFXType = {})); + var GFXFormat; + (function (GFXFormat) { + GFXFormat[GFXFormat["UNKNOWN"] = 0] = "UNKNOWN"; + GFXFormat[GFXFormat["A8"] = 1] = "A8"; + GFXFormat[GFXFormat["L8"] = 2] = "L8"; + GFXFormat[GFXFormat["LA8"] = 3] = "LA8"; + GFXFormat[GFXFormat["R8"] = 4] = "R8"; + GFXFormat[GFXFormat["R8SN"] = 5] = "R8SN"; + GFXFormat[GFXFormat["R8UI"] = 6] = "R8UI"; + GFXFormat[GFXFormat["R8I"] = 7] = "R8I"; + GFXFormat[GFXFormat["R16F"] = 8] = "R16F"; + GFXFormat[GFXFormat["R16UI"] = 9] = "R16UI"; + GFXFormat[GFXFormat["R16I"] = 10] = "R16I"; + GFXFormat[GFXFormat["R32F"] = 11] = "R32F"; + GFXFormat[GFXFormat["R32UI"] = 12] = "R32UI"; + GFXFormat[GFXFormat["R32I"] = 13] = "R32I"; + GFXFormat[GFXFormat["RG8"] = 14] = "RG8"; + GFXFormat[GFXFormat["RG8SN"] = 15] = "RG8SN"; + GFXFormat[GFXFormat["RG8UI"] = 16] = "RG8UI"; + GFXFormat[GFXFormat["RG8I"] = 17] = "RG8I"; + GFXFormat[GFXFormat["RG16F"] = 18] = "RG16F"; + GFXFormat[GFXFormat["RG16UI"] = 19] = "RG16UI"; + GFXFormat[GFXFormat["RG16I"] = 20] = "RG16I"; + GFXFormat[GFXFormat["RG32F"] = 21] = "RG32F"; + GFXFormat[GFXFormat["RG32UI"] = 22] = "RG32UI"; + GFXFormat[GFXFormat["RG32I"] = 23] = "RG32I"; + GFXFormat[GFXFormat["RGB8"] = 24] = "RGB8"; + GFXFormat[GFXFormat["SRGB8"] = 25] = "SRGB8"; + GFXFormat[GFXFormat["RGB8SN"] = 26] = "RGB8SN"; + GFXFormat[GFXFormat["RGB8UI"] = 27] = "RGB8UI"; + GFXFormat[GFXFormat["RGB8I"] = 28] = "RGB8I"; + GFXFormat[GFXFormat["RGB16F"] = 29] = "RGB16F"; + GFXFormat[GFXFormat["RGB16UI"] = 30] = "RGB16UI"; + GFXFormat[GFXFormat["RGB16I"] = 31] = "RGB16I"; + GFXFormat[GFXFormat["RGB32F"] = 32] = "RGB32F"; + GFXFormat[GFXFormat["RGB32UI"] = 33] = "RGB32UI"; + GFXFormat[GFXFormat["RGB32I"] = 34] = "RGB32I"; + GFXFormat[GFXFormat["RGBA8"] = 35] = "RGBA8"; + GFXFormat[GFXFormat["SRGB8_A8"] = 36] = "SRGB8_A8"; + GFXFormat[GFXFormat["RGBA8SN"] = 37] = "RGBA8SN"; + GFXFormat[GFXFormat["RGBA8UI"] = 38] = "RGBA8UI"; + GFXFormat[GFXFormat["RGBA8I"] = 39] = "RGBA8I"; + GFXFormat[GFXFormat["RGBA16F"] = 40] = "RGBA16F"; + GFXFormat[GFXFormat["RGBA16UI"] = 41] = "RGBA16UI"; + GFXFormat[GFXFormat["RGBA16I"] = 42] = "RGBA16I"; + GFXFormat[GFXFormat["RGBA32F"] = 43] = "RGBA32F"; + GFXFormat[GFXFormat["RGBA32UI"] = 44] = "RGBA32UI"; + GFXFormat[GFXFormat["RGBA32I"] = 45] = "RGBA32I"; + GFXFormat[GFXFormat["R5G6B5"] = 46] = "R5G6B5"; + GFXFormat[GFXFormat["R11G11B10F"] = 47] = "R11G11B10F"; + GFXFormat[GFXFormat["RGB5A1"] = 48] = "RGB5A1"; + GFXFormat[GFXFormat["RGBA4"] = 49] = "RGBA4"; + GFXFormat[GFXFormat["RGB10A2"] = 50] = "RGB10A2"; + GFXFormat[GFXFormat["RGB10A2UI"] = 51] = "RGB10A2UI"; + GFXFormat[GFXFormat["RGB9E5"] = 52] = "RGB9E5"; + GFXFormat[GFXFormat["D16"] = 53] = "D16"; + GFXFormat[GFXFormat["D16S8"] = 54] = "D16S8"; + GFXFormat[GFXFormat["D24"] = 55] = "D24"; + GFXFormat[GFXFormat["D24S8"] = 56] = "D24S8"; + GFXFormat[GFXFormat["D32F"] = 57] = "D32F"; + GFXFormat[GFXFormat["D32F_S8"] = 58] = "D32F_S8"; + GFXFormat[GFXFormat["BC1"] = 59] = "BC1"; + GFXFormat[GFXFormat["BC1_ALPHA"] = 60] = "BC1_ALPHA"; + GFXFormat[GFXFormat["BC1_SRGB"] = 61] = "BC1_SRGB"; + GFXFormat[GFXFormat["BC1_SRGB_ALPHA"] = 62] = "BC1_SRGB_ALPHA"; + GFXFormat[GFXFormat["BC2"] = 63] = "BC2"; + GFXFormat[GFXFormat["BC2_SRGB"] = 64] = "BC2_SRGB"; + GFXFormat[GFXFormat["BC3"] = 65] = "BC3"; + GFXFormat[GFXFormat["BC3_SRGB"] = 66] = "BC3_SRGB"; + GFXFormat[GFXFormat["BC4"] = 67] = "BC4"; + GFXFormat[GFXFormat["BC4_SNORM"] = 68] = "BC4_SNORM"; + GFXFormat[GFXFormat["BC5"] = 69] = "BC5"; + GFXFormat[GFXFormat["BC5_SNORM"] = 70] = "BC5_SNORM"; + GFXFormat[GFXFormat["BC6H_UF16"] = 71] = "BC6H_UF16"; + GFXFormat[GFXFormat["BC6H_SF16"] = 72] = "BC6H_SF16"; + GFXFormat[GFXFormat["BC7"] = 73] = "BC7"; + GFXFormat[GFXFormat["BC7_SRGB"] = 74] = "BC7_SRGB"; + GFXFormat[GFXFormat["ETC_RGB8"] = 75] = "ETC_RGB8"; + GFXFormat[GFXFormat["ETC2_RGB8"] = 76] = "ETC2_RGB8"; + GFXFormat[GFXFormat["ETC2_SRGB8"] = 77] = "ETC2_SRGB8"; + GFXFormat[GFXFormat["ETC2_RGB8_A1"] = 78] = "ETC2_RGB8_A1"; + GFXFormat[GFXFormat["ETC2_SRGB8_A1"] = 79] = "ETC2_SRGB8_A1"; + GFXFormat[GFXFormat["ETC2_RGBA8"] = 80] = "ETC2_RGBA8"; + GFXFormat[GFXFormat["ETC2_SRGB8_A8"] = 81] = "ETC2_SRGB8_A8"; + GFXFormat[GFXFormat["EAC_R11"] = 82] = "EAC_R11"; + GFXFormat[GFXFormat["EAC_R11SN"] = 83] = "EAC_R11SN"; + GFXFormat[GFXFormat["EAC_RG11"] = 84] = "EAC_RG11"; + GFXFormat[GFXFormat["EAC_RG11SN"] = 85] = "EAC_RG11SN"; + GFXFormat[GFXFormat["PVRTC_RGB2"] = 86] = "PVRTC_RGB2"; + GFXFormat[GFXFormat["PVRTC_RGBA2"] = 87] = "PVRTC_RGBA2"; + GFXFormat[GFXFormat["PVRTC_RGB4"] = 88] = "PVRTC_RGB4"; + GFXFormat[GFXFormat["PVRTC_RGBA4"] = 89] = "PVRTC_RGBA4"; + GFXFormat[GFXFormat["PVRTC2_2BPP"] = 90] = "PVRTC2_2BPP"; + GFXFormat[GFXFormat["PVRTC2_4BPP"] = 91] = "PVRTC2_4BPP"; + })(GFXFormat || (GFXFormat = {})); + var GFXBufferUsageBit; + (function (GFXBufferUsageBit) { + GFXBufferUsageBit[GFXBufferUsageBit["NONE"] = 0] = "NONE"; + GFXBufferUsageBit[GFXBufferUsageBit["TRANSFER_SRC"] = 1] = "TRANSFER_SRC"; + GFXBufferUsageBit[GFXBufferUsageBit["TRANSFER_DST"] = 2] = "TRANSFER_DST"; + GFXBufferUsageBit[GFXBufferUsageBit["INDEX"] = 4] = "INDEX"; + GFXBufferUsageBit[GFXBufferUsageBit["VERTEX"] = 8] = "VERTEX"; + GFXBufferUsageBit[GFXBufferUsageBit["UNIFORM"] = 16] = "UNIFORM"; + GFXBufferUsageBit[GFXBufferUsageBit["STORAGE"] = 32] = "STORAGE"; + GFXBufferUsageBit[GFXBufferUsageBit["INDIRECT"] = 64] = "INDIRECT"; + })(GFXBufferUsageBit || (GFXBufferUsageBit = {})); + var GFXMemoryUsageBit; + (function (GFXMemoryUsageBit) { + GFXMemoryUsageBit[GFXMemoryUsageBit["NONE"] = 0] = "NONE"; + GFXMemoryUsageBit[GFXMemoryUsageBit["DEVICE"] = 1] = "DEVICE"; + GFXMemoryUsageBit[GFXMemoryUsageBit["HOST"] = 2] = "HOST"; + })(GFXMemoryUsageBit || (GFXMemoryUsageBit = {})); + var GFXBufferAccessBit; + (function (GFXBufferAccessBit) { + GFXBufferAccessBit[GFXBufferAccessBit["NONE"] = 0] = "NONE"; + GFXBufferAccessBit[GFXBufferAccessBit["READ"] = 1] = "READ"; + GFXBufferAccessBit[GFXBufferAccessBit["WRITE"] = 2] = "WRITE"; + })(GFXBufferAccessBit || (GFXBufferAccessBit = {})); + var GFXPrimitiveMode; + (function (GFXPrimitiveMode) { + GFXPrimitiveMode[GFXPrimitiveMode["POINT_LIST"] = 0] = "POINT_LIST"; + GFXPrimitiveMode[GFXPrimitiveMode["LINE_LIST"] = 1] = "LINE_LIST"; + GFXPrimitiveMode[GFXPrimitiveMode["LINE_STRIP"] = 2] = "LINE_STRIP"; + GFXPrimitiveMode[GFXPrimitiveMode["LINE_LOOP"] = 3] = "LINE_LOOP"; + GFXPrimitiveMode[GFXPrimitiveMode["LINE_LIST_ADJACENCY"] = 4] = "LINE_LIST_ADJACENCY"; + GFXPrimitiveMode[GFXPrimitiveMode["LINE_STRIP_ADJACENCY"] = 5] = "LINE_STRIP_ADJACENCY"; + GFXPrimitiveMode[GFXPrimitiveMode["ISO_LINE_LIST"] = 6] = "ISO_LINE_LIST"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_LIST"] = 7] = "TRIANGLE_LIST"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_STRIP"] = 8] = "TRIANGLE_STRIP"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_FAN"] = 9] = "TRIANGLE_FAN"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_LIST_ADJACENCY"] = 10] = "TRIANGLE_LIST_ADJACENCY"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_STRIP_ADJACENCY"] = 11] = "TRIANGLE_STRIP_ADJACENCY"; + GFXPrimitiveMode[GFXPrimitiveMode["TRIANGLE_PATCH_ADJACENCY"] = 12] = "TRIANGLE_PATCH_ADJACENCY"; + GFXPrimitiveMode[GFXPrimitiveMode["QUAD_PATCH_LIST"] = 13] = "QUAD_PATCH_LIST"; + })(GFXPrimitiveMode || (GFXPrimitiveMode = {})); + var GFXPolygonMode; + (function (GFXPolygonMode) { + GFXPolygonMode[GFXPolygonMode["FILL"] = 0] = "FILL"; + GFXPolygonMode[GFXPolygonMode["POINT"] = 1] = "POINT"; + GFXPolygonMode[GFXPolygonMode["LINE"] = 2] = "LINE"; + })(GFXPolygonMode || (GFXPolygonMode = {})); + var GFXShadeModel; + (function (GFXShadeModel) { + GFXShadeModel[GFXShadeModel["GOURAND"] = 0] = "GOURAND"; + GFXShadeModel[GFXShadeModel["FLAT"] = 1] = "FLAT"; + })(GFXShadeModel || (GFXShadeModel = {})); + var GFXCullMode; + (function (GFXCullMode) { + GFXCullMode[GFXCullMode["NONE"] = 0] = "NONE"; + GFXCullMode[GFXCullMode["FRONT"] = 1] = "FRONT"; + GFXCullMode[GFXCullMode["BACK"] = 2] = "BACK"; + })(GFXCullMode || (GFXCullMode = {})); + var GFXComparisonFunc; + (function (GFXComparisonFunc) { + GFXComparisonFunc[GFXComparisonFunc["NEVER"] = 0] = "NEVER"; + GFXComparisonFunc[GFXComparisonFunc["LESS"] = 1] = "LESS"; + GFXComparisonFunc[GFXComparisonFunc["EQUAL"] = 2] = "EQUAL"; + GFXComparisonFunc[GFXComparisonFunc["LESS_EQUAL"] = 3] = "LESS_EQUAL"; + GFXComparisonFunc[GFXComparisonFunc["GREATER"] = 4] = "GREATER"; + GFXComparisonFunc[GFXComparisonFunc["NOT_EQUAL"] = 5] = "NOT_EQUAL"; + GFXComparisonFunc[GFXComparisonFunc["GREATER_EQUAL"] = 6] = "GREATER_EQUAL"; + GFXComparisonFunc[GFXComparisonFunc["ALWAYS"] = 7] = "ALWAYS"; + })(GFXComparisonFunc || (GFXComparisonFunc = {})); + var GFXStencilOp; + (function (GFXStencilOp) { + GFXStencilOp[GFXStencilOp["ZERO"] = 0] = "ZERO"; + GFXStencilOp[GFXStencilOp["KEEP"] = 1] = "KEEP"; + GFXStencilOp[GFXStencilOp["REPLACE"] = 2] = "REPLACE"; + GFXStencilOp[GFXStencilOp["INCR"] = 3] = "INCR"; + GFXStencilOp[GFXStencilOp["DECR"] = 4] = "DECR"; + GFXStencilOp[GFXStencilOp["INVERT"] = 5] = "INVERT"; + GFXStencilOp[GFXStencilOp["INCR_WRAP"] = 6] = "INCR_WRAP"; + GFXStencilOp[GFXStencilOp["DECR_WRAP"] = 7] = "DECR_WRAP"; + })(GFXStencilOp || (GFXStencilOp = {})); + var GFXBlendOp; + (function (GFXBlendOp) { + GFXBlendOp[GFXBlendOp["ADD"] = 0] = "ADD"; + GFXBlendOp[GFXBlendOp["SUB"] = 1] = "SUB"; + GFXBlendOp[GFXBlendOp["REV_SUB"] = 2] = "REV_SUB"; + GFXBlendOp[GFXBlendOp["MIN"] = 3] = "MIN"; + GFXBlendOp[GFXBlendOp["MAX"] = 4] = "MAX"; + })(GFXBlendOp || (GFXBlendOp = {})); + var GFXBlendFactor; + (function (GFXBlendFactor) { + GFXBlendFactor[GFXBlendFactor["ZERO"] = 0] = "ZERO"; + GFXBlendFactor[GFXBlendFactor["ONE"] = 1] = "ONE"; + GFXBlendFactor[GFXBlendFactor["SRC_ALPHA"] = 2] = "SRC_ALPHA"; + GFXBlendFactor[GFXBlendFactor["DST_ALPHA"] = 3] = "DST_ALPHA"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_SRC_ALPHA"] = 4] = "ONE_MINUS_SRC_ALPHA"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_DST_ALPHA"] = 5] = "ONE_MINUS_DST_ALPHA"; + GFXBlendFactor[GFXBlendFactor["SRC_COLOR"] = 6] = "SRC_COLOR"; + GFXBlendFactor[GFXBlendFactor["DST_COLOR"] = 7] = "DST_COLOR"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_SRC_COLOR"] = 8] = "ONE_MINUS_SRC_COLOR"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_DST_COLOR"] = 9] = "ONE_MINUS_DST_COLOR"; + GFXBlendFactor[GFXBlendFactor["SRC_ALPHA_SATURATE"] = 10] = "SRC_ALPHA_SATURATE"; + GFXBlendFactor[GFXBlendFactor["CONSTANT_COLOR"] = 11] = "CONSTANT_COLOR"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_CONSTANT_COLOR"] = 12] = "ONE_MINUS_CONSTANT_COLOR"; + GFXBlendFactor[GFXBlendFactor["CONSTANT_ALPHA"] = 13] = "CONSTANT_ALPHA"; + GFXBlendFactor[GFXBlendFactor["ONE_MINUS_CONSTANT_ALPHA"] = 14] = "ONE_MINUS_CONSTANT_ALPHA"; + })(GFXBlendFactor || (GFXBlendFactor = {})); + var GFXColorMask; + (function (GFXColorMask) { + GFXColorMask[GFXColorMask["NONE"] = 0] = "NONE"; + GFXColorMask[GFXColorMask["R"] = 1] = "R"; + GFXColorMask[GFXColorMask["G"] = 2] = "G"; + GFXColorMask[GFXColorMask["B"] = 4] = "B"; + GFXColorMask[GFXColorMask["A"] = 8] = "A"; + GFXColorMask[GFXColorMask["ALL"] = 15] = "ALL"; + })(GFXColorMask || (GFXColorMask = {})); + var GFXFilter; + (function (GFXFilter) { + GFXFilter[GFXFilter["NONE"] = 0] = "NONE"; + GFXFilter[GFXFilter["POINT"] = 1] = "POINT"; + GFXFilter[GFXFilter["LINEAR"] = 2] = "LINEAR"; + GFXFilter[GFXFilter["ANISOTROPIC"] = 3] = "ANISOTROPIC"; + })(GFXFilter || (GFXFilter = {})); + var GFXAddress; + (function (GFXAddress) { + GFXAddress[GFXAddress["WRAP"] = 0] = "WRAP"; + GFXAddress[GFXAddress["MIRROR"] = 1] = "MIRROR"; + GFXAddress[GFXAddress["CLAMP"] = 2] = "CLAMP"; + GFXAddress[GFXAddress["BORDER"] = 3] = "BORDER"; + })(GFXAddress || (GFXAddress = {})); + var GFXTextureType; + (function (GFXTextureType) { + GFXTextureType[GFXTextureType["TEX1D"] = 0] = "TEX1D"; + GFXTextureType[GFXTextureType["TEX2D"] = 1] = "TEX2D"; + GFXTextureType[GFXTextureType["TEX3D"] = 2] = "TEX3D"; + })(GFXTextureType || (GFXTextureType = {})); + var GFXTextureUsageBit; + (function (GFXTextureUsageBit) { + GFXTextureUsageBit[GFXTextureUsageBit["NONE"] = 0] = "NONE"; + GFXTextureUsageBit[GFXTextureUsageBit["TRANSFER_SRC"] = 1] = "TRANSFER_SRC"; + GFXTextureUsageBit[GFXTextureUsageBit["TRANSFER_DST"] = 2] = "TRANSFER_DST"; + GFXTextureUsageBit[GFXTextureUsageBit["SAMPLED"] = 4] = "SAMPLED"; + GFXTextureUsageBit[GFXTextureUsageBit["STORAGE"] = 8] = "STORAGE"; + GFXTextureUsageBit[GFXTextureUsageBit["COLOR_ATTACHMENT"] = 16] = "COLOR_ATTACHMENT"; + GFXTextureUsageBit[GFXTextureUsageBit["DEPTH_STENCIL_ATTACHMENT"] = 32] = "DEPTH_STENCIL_ATTACHMENT"; + GFXTextureUsageBit[GFXTextureUsageBit["TRANSIENT_ATTACHMENT"] = 64] = "TRANSIENT_ATTACHMENT"; + GFXTextureUsageBit[GFXTextureUsageBit["INPUT_ATTACHMENT"] = 128] = "INPUT_ATTACHMENT"; + })(GFXTextureUsageBit || (GFXTextureUsageBit = {})); + var GFXSampleCount; + (function (GFXSampleCount) { + GFXSampleCount[GFXSampleCount["X1"] = 0] = "X1"; + GFXSampleCount[GFXSampleCount["X2"] = 1] = "X2"; + GFXSampleCount[GFXSampleCount["X4"] = 2] = "X4"; + GFXSampleCount[GFXSampleCount["X8"] = 3] = "X8"; + GFXSampleCount[GFXSampleCount["X16"] = 4] = "X16"; + GFXSampleCount[GFXSampleCount["X32"] = 5] = "X32"; + GFXSampleCount[GFXSampleCount["X64"] = 6] = "X64"; + })(GFXSampleCount || (GFXSampleCount = {})); + var GFXTextureFlagBit; + (function (GFXTextureFlagBit) { + GFXTextureFlagBit[GFXTextureFlagBit["NONE"] = 0] = "NONE"; + GFXTextureFlagBit[GFXTextureFlagBit["GEN_MIPMAP"] = 1] = "GEN_MIPMAP"; + GFXTextureFlagBit[GFXTextureFlagBit["CUBEMAP"] = 2] = "CUBEMAP"; + GFXTextureFlagBit[GFXTextureFlagBit["BAKUP_BUFFER"] = 4] = "BAKUP_BUFFER"; + })(GFXTextureFlagBit || (GFXTextureFlagBit = {})); + var GFXTextureViewType; + (function (GFXTextureViewType) { + GFXTextureViewType[GFXTextureViewType["TV1D"] = 0] = "TV1D"; + GFXTextureViewType[GFXTextureViewType["TV2D"] = 1] = "TV2D"; + GFXTextureViewType[GFXTextureViewType["TV3D"] = 2] = "TV3D"; + GFXTextureViewType[GFXTextureViewType["CUBE"] = 3] = "CUBE"; + GFXTextureViewType[GFXTextureViewType["TV1D_ARRAY"] = 4] = "TV1D_ARRAY"; + GFXTextureViewType[GFXTextureViewType["TV2D_ARRAY"] = 5] = "TV2D_ARRAY"; + })(GFXTextureViewType || (GFXTextureViewType = {})); + var GFXShaderType; + (function (GFXShaderType) { + GFXShaderType[GFXShaderType["VERTEX"] = 0] = "VERTEX"; + GFXShaderType[GFXShaderType["HULL"] = 1] = "HULL"; + GFXShaderType[GFXShaderType["DOMAIN"] = 2] = "DOMAIN"; + GFXShaderType[GFXShaderType["GEOMETRY"] = 3] = "GEOMETRY"; + GFXShaderType[GFXShaderType["FRAGMENT"] = 4] = "FRAGMENT"; + GFXShaderType[GFXShaderType["COMPUTE"] = 5] = "COMPUTE"; + GFXShaderType[GFXShaderType["COUNT"] = 6] = "COUNT"; + })(GFXShaderType || (GFXShaderType = {})); + var GFXBindingType; + (function (GFXBindingType) { + GFXBindingType[GFXBindingType["UNKNOWN"] = 0] = "UNKNOWN"; + GFXBindingType[GFXBindingType["UNIFORM_BUFFER"] = 1] = "UNIFORM_BUFFER"; + GFXBindingType[GFXBindingType["SAMPLER"] = 2] = "SAMPLER"; + GFXBindingType[GFXBindingType["STORAGE_BUFFER"] = 3] = "STORAGE_BUFFER"; + })(GFXBindingType || (GFXBindingType = {})); + var GFXCommandBufferType; + (function (GFXCommandBufferType) { + GFXCommandBufferType[GFXCommandBufferType["PRIMARY"] = 0] = "PRIMARY"; + GFXCommandBufferType[GFXCommandBufferType["SECONDARY"] = 1] = "SECONDARY"; + })(GFXCommandBufferType || (GFXCommandBufferType = {})); + var GFXLoadOp; + (function (GFXLoadOp) { + GFXLoadOp[GFXLoadOp["LOAD"] = 0] = "LOAD"; + GFXLoadOp[GFXLoadOp["CLEAR"] = 1] = "CLEAR"; + GFXLoadOp[GFXLoadOp["DISCARD"] = 2] = "DISCARD"; + })(GFXLoadOp || (GFXLoadOp = {})); + var GFXStoreOp; + (function (GFXStoreOp) { + GFXStoreOp[GFXStoreOp["STORE"] = 0] = "STORE"; + GFXStoreOp[GFXStoreOp["DISCARD"] = 1] = "DISCARD"; + })(GFXStoreOp || (GFXStoreOp = {})); + var GFXTextureLayout; + (function (GFXTextureLayout) { + GFXTextureLayout[GFXTextureLayout["UNDEFINED"] = 0] = "UNDEFINED"; + GFXTextureLayout[GFXTextureLayout["GENERAL"] = 1] = "GENERAL"; + GFXTextureLayout[GFXTextureLayout["COLOR_ATTACHMENT_OPTIMAL"] = 2] = "COLOR_ATTACHMENT_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["DEPTH_STENCIL_ATTACHMENT_OPTIMAL"] = 3] = "DEPTH_STENCIL_ATTACHMENT_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["DEPTH_STENCIL_READONLY_OPTIMAL"] = 4] = "DEPTH_STENCIL_READONLY_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["SHADER_READONLY_OPTIMAL"] = 5] = "SHADER_READONLY_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["TRANSFER_SRC_OPTIMAL"] = 6] = "TRANSFER_SRC_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["TRANSFER_DST_OPTIMAL"] = 7] = "TRANSFER_DST_OPTIMAL"; + GFXTextureLayout[GFXTextureLayout["PREINITIALIZED"] = 8] = "PREINITIALIZED"; + GFXTextureLayout[GFXTextureLayout["PRESENT_SRC"] = 9] = "PRESENT_SRC"; + })(GFXTextureLayout || (GFXTextureLayout = {})); + var GFXPipelineBindPoint; + (function (GFXPipelineBindPoint) { + GFXPipelineBindPoint[GFXPipelineBindPoint["GRAPHICS"] = 0] = "GRAPHICS"; + GFXPipelineBindPoint[GFXPipelineBindPoint["COMPUTE"] = 1] = "COMPUTE"; + GFXPipelineBindPoint[GFXPipelineBindPoint["RAY_TRACING"] = 2] = "RAY_TRACING"; + })(GFXPipelineBindPoint || (GFXPipelineBindPoint = {})); + var GFXDynamicState; + (function (GFXDynamicState) { + GFXDynamicState[GFXDynamicState["VIEWPORT"] = 0] = "VIEWPORT"; + GFXDynamicState[GFXDynamicState["SCISSOR"] = 1] = "SCISSOR"; + GFXDynamicState[GFXDynamicState["LINE_WIDTH"] = 2] = "LINE_WIDTH"; + GFXDynamicState[GFXDynamicState["DEPTH_BIAS"] = 3] = "DEPTH_BIAS"; + GFXDynamicState[GFXDynamicState["BLEND_CONSTANTS"] = 4] = "BLEND_CONSTANTS"; + GFXDynamicState[GFXDynamicState["DEPTH_BOUNDS"] = 5] = "DEPTH_BOUNDS"; + GFXDynamicState[GFXDynamicState["STENCIL_WRITE_MASK"] = 6] = "STENCIL_WRITE_MASK"; + GFXDynamicState[GFXDynamicState["STENCIL_COMPARE_MASK"] = 7] = "STENCIL_COMPARE_MASK"; + })(GFXDynamicState || (GFXDynamicState = {})); + var GFXStencilFace; + (function (GFXStencilFace) { + GFXStencilFace[GFXStencilFace["FRONT"] = 0] = "FRONT"; + GFXStencilFace[GFXStencilFace["BACK"] = 1] = "BACK"; + GFXStencilFace[GFXStencilFace["ALL"] = 2] = "ALL"; + })(GFXStencilFace || (GFXStencilFace = {})); + var GFXQueueType; + (function (GFXQueueType) { + GFXQueueType[GFXQueueType["GRAPHICS"] = 0] = "GRAPHICS"; + GFXQueueType[GFXQueueType["COMPUTE"] = 1] = "COMPUTE"; + GFXQueueType[GFXQueueType["TRANSFER"] = 2] = "TRANSFER"; + })(GFXQueueType || (GFXQueueType = {})); + var GFXClearFlag; + (function (GFXClearFlag) { + GFXClearFlag[GFXClearFlag["NONE"] = 0] = "NONE"; + GFXClearFlag[GFXClearFlag["COLOR"] = 1] = "COLOR"; + GFXClearFlag[GFXClearFlag["DEPTH"] = 2] = "DEPTH"; + GFXClearFlag[GFXClearFlag["STENCIL"] = 4] = "STENCIL"; + GFXClearFlag[GFXClearFlag["DEPTH_STENCIL"] = 6] = "DEPTH_STENCIL"; + GFXClearFlag[GFXClearFlag["ALL"] = 7] = "ALL"; + })(GFXClearFlag || (GFXClearFlag = {})); + function GFXGetTypeSize(type) { + switch (type) { + case GFXType.BOOL: + case GFXType.INT: + case GFXType.UINT: + case GFXType.FLOAT: + return 4; + + case GFXType.BOOL2: + case GFXType.INT2: + case GFXType.UINT2: + case GFXType.FLOAT2: + return 8; + + case GFXType.BOOL3: + case GFXType.INT3: + case GFXType.UINT3: + case GFXType.FLOAT3: + return 12; + + case GFXType.BOOL4: + case GFXType.INT4: + case GFXType.UINT4: + case GFXType.FLOAT4: + case GFXType.MAT2: + return 16; + + case GFXType.MAT2X3: + return 24; + + case GFXType.MAT2X4: + return 32; + + case GFXType.MAT3X2: + return 24; + + case GFXType.MAT3: + return 36; + + case GFXType.MAT3X4: + return 48; + + case GFXType.MAT4X2: + case GFXType.MAT4X2: + return 32; + + case GFXType.MAT4: + return 64; + + case GFXType.SAMPLER1D: + case GFXType.SAMPLER1D_ARRAY: + case GFXType.SAMPLER2D: + case GFXType.SAMPLER2D_ARRAY: + case GFXType.SAMPLER3D: + case GFXType.SAMPLER_CUBE: + return 4; + + default: + return 0; + } + } + var RenderPassStage; + (function (RenderPassStage) { + RenderPassStage[RenderPassStage["DEFAULT"] = 100] = "DEFAULT"; + })(RenderPassStage || (RenderPassStage = {})); + var RenderPriority; + (function (RenderPriority) { + RenderPriority[RenderPriority["MIN"] = 0] = "MIN"; + RenderPriority[RenderPriority["MAX"] = 255] = "MAX"; + RenderPriority[RenderPriority["DEFAULT"] = 128] = "DEFAULT"; + })(RenderPriority || (RenderPriority = {})); + var MAX_BINDING_SUPPORTED = 24; + var UniformBinding; + (function (UniformBinding) { + UniformBinding[UniformBinding["UBO_GLOBAL"] = MAX_BINDING_SUPPORTED - 1] = "UBO_GLOBAL"; + UniformBinding[UniformBinding["UBO_SHADOW"] = MAX_BINDING_SUPPORTED - 2] = "UBO_SHADOW"; + UniformBinding[UniformBinding["UBO_LOCAL"] = MAX_BINDING_SUPPORTED - 3] = "UBO_LOCAL"; + UniformBinding[UniformBinding["UBO_FORWARD_LIGHTS"] = MAX_BINDING_SUPPORTED - 4] = "UBO_FORWARD_LIGHTS"; + UniformBinding[UniformBinding["UBO_SKINNING"] = MAX_BINDING_SUPPORTED - 5] = "UBO_SKINNING"; + UniformBinding[UniformBinding["UBO_SKINNING_TEXTURE"] = MAX_BINDING_SUPPORTED - 6] = "UBO_SKINNING_TEXTURE"; + UniformBinding[UniformBinding["UBO_UI"] = MAX_BINDING_SUPPORTED - 7] = "UBO_UI"; + UniformBinding[UniformBinding["SAMPLER_JOINTS"] = MAX_BINDING_SUPPORTED + 1] = "SAMPLER_JOINTS"; + UniformBinding[UniformBinding["SAMPLER_ENVIRONMENT"] = MAX_BINDING_SUPPORTED + 2] = "SAMPLER_ENVIRONMENT"; + UniformBinding[UniformBinding["CUSTUM_UBO_BINDING_END_POINT"] = MAX_BINDING_SUPPORTED - 7] = "CUSTUM_UBO_BINDING_END_POINT"; + UniformBinding[UniformBinding["CUSTOM_SAMPLER_BINDING_START_POINT"] = MAX_BINDING_SUPPORTED + 6] = "CUSTOM_SAMPLER_BINDING_START_POINT"; + })(UniformBinding || (UniformBinding = {})); + var _a, _b; + var SamplerInfoIndex; + (function (SamplerInfoIndex) { + SamplerInfoIndex[SamplerInfoIndex["minFilter"] = 0] = "minFilter"; + SamplerInfoIndex[SamplerInfoIndex["magFilter"] = 1] = "magFilter"; + SamplerInfoIndex[SamplerInfoIndex["mipFilter"] = 2] = "mipFilter"; + SamplerInfoIndex[SamplerInfoIndex["addressU"] = 3] = "addressU"; + SamplerInfoIndex[SamplerInfoIndex["addressV"] = 4] = "addressV"; + SamplerInfoIndex[SamplerInfoIndex["addressW"] = 5] = "addressW"; + SamplerInfoIndex[SamplerInfoIndex["maxAnisotropy"] = 6] = "maxAnisotropy"; + SamplerInfoIndex[SamplerInfoIndex["cmpFunc"] = 7] = "cmpFunc"; + SamplerInfoIndex[SamplerInfoIndex["minLOD"] = 8] = "minLOD"; + SamplerInfoIndex[SamplerInfoIndex["maxLOD"] = 9] = "maxLOD"; + SamplerInfoIndex[SamplerInfoIndex["mipLODBias"] = 10] = "mipLODBias"; + SamplerInfoIndex[SamplerInfoIndex["borderColor"] = 11] = "borderColor"; + SamplerInfoIndex[SamplerInfoIndex["total"] = 15] = "total"; + })(SamplerInfoIndex || (SamplerInfoIndex = {})); + var typeMap = {}; + typeMap[typeMap["bool"] = GFXType.BOOL] = "bool"; + typeMap[typeMap["int"] = GFXType.INT] = "int"; + typeMap[typeMap["ivec2"] = GFXType.INT2] = "ivec2invTypeParams"; + typeMap[typeMap["ivec3"] = GFXType.INT3] = "ivec3"; + typeMap[typeMap["ivec4"] = GFXType.INT4] = "ivec4"; + typeMap[typeMap["float"] = GFXType.FLOAT] = "float"; + typeMap[typeMap["vec2"] = GFXType.FLOAT2] = "vec2"; + typeMap[typeMap["vec3"] = GFXType.FLOAT3] = "vec3"; + typeMap[typeMap["vec4"] = GFXType.FLOAT4] = "vec4"; + typeMap[typeMap["mat2"] = GFXType.MAT2] = "mat2"; + typeMap[typeMap["mat3"] = GFXType.MAT3] = "mat3"; + typeMap[typeMap["mat4"] = GFXType.MAT4] = "mat4"; + typeMap[typeMap["sampler2D"] = GFXType.SAMPLER2D] = "sampler2D"; + typeMap[typeMap["samplerCube"] = GFXType.SAMPLER_CUBE] = "samplerCube"; + var sizeMap = (_a = {}, _a[GFXType.BOOL] = 4, _a[GFXType.INT] = 4, _a[GFXType.INT2] = 8, + _a[GFXType.INT3] = 12, _a[GFXType.INT4] = 16, _a[GFXType.FLOAT] = 4, _a[GFXType.FLOAT2] = 8, + _a[GFXType.FLOAT3] = 12, _a[GFXType.FLOAT4] = 16, _a[GFXType.MAT2] = 16, _a[GFXType.MAT3] = 36, + _a[GFXType.MAT4] = 64, _a[GFXType.SAMPLER2D] = 4, _a[GFXType.SAMPLER_CUBE] = 4, + _a); + var formatMap = (_b = {}, _b[GFXType.BOOL] = GFXFormat.R32I, _b[GFXType.INT] = GFXFormat.R32I, + _b[GFXType.INT2] = GFXFormat.RG32I, _b[GFXType.INT3] = GFXFormat.RGB32I, _b[GFXType.INT4] = GFXFormat.RGBA32I, + _b[GFXType.FLOAT] = GFXFormat.R32F, _b[GFXType.FLOAT2] = GFXFormat.RG32F, _b[GFXType.FLOAT3] = GFXFormat.RGB32F, + _b[GFXType.FLOAT4] = GFXFormat.RGBA32F, _b); + var passParams = { + BACK: enums.CULL_BACK, + FRONT: enums.CULL_FRONT, + NONE: enums.CULL_NONE, + ADD: enums.BLEND_FUNC_ADD, + SUB: enums.BLEND_FUNC_SUBTRACT, + REV_SUB: enums.BLEND_FUNC_REVERSE_SUBTRACT, + ZERO: enums.BLEND_ZERO, + ONE: enums.BLEND_ONE, + SRC_COLOR: enums.BLEND_SRC_COLOR, + ONE_MINUS_SRC_COLOR: enums.BLEND_ONE_MINUS_SRC_COLOR, + DST_COLOR: enums.BLEND_DST_COLOR, + ONE_MINUS_DST_COLOR: enums.BLEND_ONE_MINUS_DST_COLOR, + SRC_ALPHA: enums.BLEND_SRC_ALPHA, + ONE_MINUS_SRC_ALPHA: enums.BLEND_ONE_MINUS_SRC_ALPHA, + DST_ALPHA: enums.BLEND_DST_ALPHA, + ONE_MINUS_DST_ALPHA: enums.BLEND_ONE_MINUS_DST_ALPHA, + CONSTANT_COLOR: enums.BLEND_CONSTANT_COLOR, + ONE_MINUS_CONSTANT_COLOR: enums.BLEND_ONE_MINUS_CONSTANT_COLOR, + CONSTANT_ALPHA: enums.BLEND_CONSTANT_ALPHA, + ONE_MINUS_CONSTANT_ALPHA: enums.BLEND_ONE_MINUS_CONSTANT_ALPHA, + SRC_ALPHA_SATURATE: enums.BLEND_SRC_ALPHA_SATURATE, + NEVER: enums.DS_FUNC_NEVER, + LESS: enums.DS_FUNC_LESS, + EQUAL: enums.DS_FUNC_EQUAL, + LEQUAL: enums.DS_FUNC_LEQUAL, + GREATER: enums.DS_FUNC_GREATER, + NOTEQUAL: enums.DS_FUNC_NOTEQUAL, + GEQUAL: enums.DS_FUNC_GEQUAL, + ALWAYS: enums.DS_FUNC_ALWAYS, + KEEP: enums.STENCIL_OP_KEEP, + REPLACE: enums.STENCIL_OP_REPLACE, + INCR: enums.STENCIL_OP_INCR, + INCR_WRAP: enums.STENCIL_OP_INCR_WRAP, + DECR: enums.STENCIL_OP_DECR, + DECR_WRAP: enums.STENCIL_OP_DECR_WRAP, + INVERT: enums.STENCIL_OP_INVERT + }; + Object.assign(passParams, RenderPassStage); + var effectStructure = { + $techniques: [{ + $passes: [{ + depthStencilState: {}, + rasterizerState: {}, + blendState: { + targets: [{}] + }, + properties: { + any: { + sampler: {}, + inspector: {} + } + } + }] + }] + }; + var mappings = { + murmurhash2_32_gc: murmurhash2_32_gc, + SamplerInfoIndex: SamplerInfoIndex, + effectStructure: effectStructure, + typeMap: typeMap, + sizeMap: sizeMap, + formatMap: formatMap, + passParams: passParams, + RenderQueue: RenderQueue, + RenderPriority: RenderPriority, + GFXGetTypeSize: GFXGetTypeSize, + UniformBinding: UniformBinding + }; + module.exports = mappings; + }), {}], + 361: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _memop = require("../memop"); + var _enums = _interopRequireDefault(require("../enums")); + var _valueTypes = require("../../core/value-types"); + var _programLib = _interopRequireDefault(require("./program-lib")); + var _view = _interopRequireDefault(require("./view")); + var _gfx = _interopRequireDefault(require("../gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _m4_tmp = new _valueTypes.Mat4(); + var _stageInfos = new _memop.RecyclePool(function () { + return { + stage: null, + items: null + }; + }, 8); + var _float2_pool = new _memop.RecyclePool(function () { + return new Float32Array(2); + }, 8); + var _float3_pool = new _memop.RecyclePool(function () { + return new Float32Array(3); + }, 8); + var _float4_pool = new _memop.RecyclePool(function () { + return new Float32Array(4); + }, 8); + var _float9_pool = new _memop.RecyclePool(function () { + return new Float32Array(9); + }, 8); + var _float16_pool = new _memop.RecyclePool(function () { + return new Float32Array(16); + }, 8); + var _float64_pool = new _memop.RecyclePool(function () { + return new Float32Array(64); + }, 8); + var _int2_pool = new _memop.RecyclePool(function () { + return new Int32Array(2); + }, 8); + var _int3_pool = new _memop.RecyclePool(function () { + return new Int32Array(3); + }, 8); + var _int4_pool = new _memop.RecyclePool(function () { + return new Int32Array(4); + }, 8); + var _int64_pool = new _memop.RecyclePool(function () { + return new Int32Array(64); + }, 8); + var Base = (function () { + function Base(device, opts) { + var _this$_type2defaultVa; + this._device = device; + this._programLib = new _programLib["default"](device); + this._opts = opts; + this._type2defaultValue = (_this$_type2defaultVa = {}, _this$_type2defaultVa[_enums["default"].PARAM_INT] = 0, + _this$_type2defaultVa[_enums["default"].PARAM_INT2] = new _valueTypes.Vec2(0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_INT3] = new _valueTypes.Vec3(0, 0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_INT4] = new _valueTypes.Vec4(0, 0, 0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_FLOAT] = 0, _this$_type2defaultVa[_enums["default"].PARAM_FLOAT2] = new _valueTypes.Vec2(0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_FLOAT3] = new _valueTypes.Vec3(0, 0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_FLOAT4] = new _valueTypes.Vec4(0, 0, 0, 0), + _this$_type2defaultVa[_enums["default"].PARAM_COLOR4] = new _valueTypes.Color(0, 0, 0, 1), + _this$_type2defaultVa[_enums["default"].PARAM_MAT3] = new _valueTypes.Mat3(), _this$_type2defaultVa[_enums["default"].PARAM_MAT4] = new _valueTypes.Mat4(), + _this$_type2defaultVa[_enums["default"].PARAM_TEXTURE_2D] = opts.defaultTexture, + _this$_type2defaultVa[_enums["default"].PARAM_TEXTURE_CUBE] = opts.defaultTextureCube, + _this$_type2defaultVa); + this._stage2fn = {}; + this._usedTextureUnits = 0; + this._viewPools = new _memop.RecyclePool(function () { + return new _view["default"](); + }, 8); + this._drawItemsPools = new _memop.RecyclePool(function () { + return { + model: null, + node: null, + ia: null, + effect: null, + defines: null, + uniforms: null + }; + }, 100); + this._stageItemsPools = new _memop.RecyclePool(function () { + return new _memop.RecyclePool(function () { + return { + model: null, + node: null, + ia: null, + effect: null, + defines: null, + passes: [], + sortKey: -1, + uniforms: null + }; + }, 100); + }, 16); + this._definesChanged = false; + } + var _proto = Base.prototype; + _proto._resetTextuerUnit = function _resetTextuerUnit() { + this._usedTextureUnits = 0; + }; + _proto._allocTextureUnit = function _allocTextureUnit() { + var device = this._device; + var unit = this._usedTextureUnits; + unit >= device._caps.maxTextureUnits && console.warn("Trying to use " + unit + " texture units while this GPU supports only " + device._caps.maxTextureUnits); + this._usedTextureUnits += 1; + return unit; + }; + _proto._registerStage = function _registerStage(name, fn) { + this._stage2fn[name] = fn; + }; + _proto.clear = function clear() { + this._programLib.clear(); + this.reset(); + }; + _proto.reset = function reset() { + this._viewPools.reset(); + this._stageItemsPools.reset(); + this._definesChanged = false; + }; + _proto._requestView = function _requestView() { + return this._viewPools.add(); + }; + _proto._render = function _render(view, scene) { + var device = this._device; + device.setFrameBuffer(view._framebuffer); + device.setViewport(view._rect.x, view._rect.y, view._rect.w, view._rect.h); + var clearOpts = {}; + view._clearFlags & _enums["default"].CLEAR_COLOR && (clearOpts.color = _valueTypes.Vec4.toArray([], view._color)); + view._clearFlags & _enums["default"].CLEAR_DEPTH && (clearOpts.depth = view._depth); + view._clearFlags & _enums["default"].CLEAR_STENCIL && (clearOpts.stencil = view._stencil); + device.clear(clearOpts); + this._drawItemsPools.reset(); + for (var i = 0; i < scene._models.length; ++i) { + var model = scene._models.data[i]; + if (0 === (model._cullingMask & view._cullingMask)) continue; + var drawItem = this._drawItemsPools.add(); + model.extractDrawItem(drawItem); + } + _stageInfos.reset(); + for (var _i = 0; _i < view._stages.length; ++_i) { + var stage = view._stages[_i]; + var stageItems = this._stageItemsPools.add(); + stageItems.reset(); + for (var j = 0; j < this._drawItemsPools.length; ++j) { + var _drawItem = this._drawItemsPools.data[j]; + var passes = _drawItem.effect.stagePasses[stage]; + if (!passes || 0 === passes.length) continue; + var stageItem = stageItems.add(); + stageItem.passes = passes; + stageItem.model = _drawItem.model; + stageItem.node = _drawItem.node; + stageItem.ia = _drawItem.ia; + stageItem.effect = _drawItem.effect; + stageItem.defines = _drawItem.defines; + stageItem.sortKey = -1; + stageItem.uniforms = _drawItem.uniforms; + } + var stageInfo = _stageInfos.add(); + stageInfo.stage = stage; + stageInfo.items = stageItems; + } + for (var _i2 = 0; _i2 < _stageInfos.length; ++_i2) { + var info = _stageInfos.data[_i2]; + var fn = this._stage2fn[info.stage]; + fn(view, info.items); + } + }; + _proto._setProperty = function _setProperty(prop) { + var device = this._device; + var param = prop.value; + void 0 === param && (param = prop.val); + void 0 === param && (param = this._type2defaultValue[prop.type]); + if (void 0 === param) { + console.warn("Failed to set technique property " + prop.name + ", value not found."); + return; + } + if (prop.type === _enums["default"].PARAM_TEXTURE_2D || prop.type === _enums["default"].PARAM_TEXTURE_CUBE) if (Array.isArray(param)) { + if (param.length > prop.count) { + console.error("Failed to set property [" + prop.name + "] : The length of texture array [" + param.length + "] is bigger than [" + prop.count + "]."); + return; + } + var slots = _int64_pool.add(); + for (var index = 0; index < param.length; ++index) slots[index] = this._allocTextureUnit(); + device.setTextureArray(prop.name, param, slots); + } else device.setTexture(prop.name, param, this._allocTextureUnit()); else prop.directly ? device.setUniformDirectly(prop.name, param) : device.setUniform(prop.name, param); + }; + _proto._draw = function _draw(item) { + var device = this._device; + var programLib = this._programLib; + var node = item.node, ia = item.ia, passes = item.passes, effect = item.effect; + _float2_pool.reset(); + _float3_pool.reset(); + _float4_pool.reset(); + _float9_pool.reset(); + _float16_pool.reset(); + _float64_pool.reset(); + _int2_pool.reset(); + _int3_pool.reset(); + _int4_pool.reset(); + _int64_pool.reset(); + node.getWorldMatrix(_m4_tmp); + device.setUniform("cc_matWorld", _valueTypes.Mat4.toArray(_float16_pool.add(), _m4_tmp)); + _valueTypes.Mat4.invert(_m4_tmp, _m4_tmp); + _valueTypes.Mat4.transpose(_m4_tmp, _m4_tmp); + device.setUniform("cc_matWorldIT", _valueTypes.Mat4.toArray(_float16_pool.add(), _m4_tmp)); + var defines = this._defines; + for (var i = 0; i < passes.length; ++i) { + var pass = passes[i]; + this._definesChanged && (pass._programKey = null); + var count = ia.count; + ia._vertexBuffer && device.setVertexBuffer(0, ia._vertexBuffer); + ia._indexBuffer && device.setIndexBuffer(ia._indexBuffer); + device.setPrimitiveType(ia._primitiveType); + Object.setPrototypeOf(defines, pass._defines); + var program = programLib.getProgram(pass, defines, effect.name); + device.setProgram(program); + var uniforms = program._uniforms; + var variants = pass._properties; + for (var j = 0; j < uniforms.length; j++) { + var prop = variants[uniforms[j].name]; + void 0 !== prop && this._setProperty(prop); + } + device.setCullMode(pass._cullMode); + if (pass._blend) { + device.enableBlend(); + device.setBlendFuncSep(pass._blendSrc, pass._blendDst, pass._blendSrcAlpha, pass._blendDstAlpha); + device.setBlendEqSep(pass._blendEq, pass._blendAlphaEq); + device.setBlendColor32(pass._blendColor); + } + if (pass._depthTest) { + device.enableDepthTest(); + device.setDepthFunc(pass._depthFunc); + } + pass._depthWrite && device.enableDepthWrite(); + device.setStencilTest(pass._stencilTest); + if (pass._stencilTest === _gfx["default"].STENCIL_ENABLE) { + device.setStencilFuncFront(pass._stencilFuncFront, pass._stencilRefFront, pass._stencilMaskFront); + device.setStencilOpFront(pass._stencilFailOpFront, pass._stencilZFailOpFront, pass._stencilZPassOpFront, pass._stencilWriteMaskFront); + device.setStencilFuncBack(pass._stencilFuncBack, pass._stencilRefBack, pass._stencilMaskBack); + device.setStencilOpBack(pass._stencilFailOpBack, pass._stencilZFailOpBack, pass._stencilZPassOpBack, pass._stencilWriteMaskBack); + } + device.draw(ia._start, count); + this._resetTextuerUnit(); + } + }; + return Base; + })(); + exports["default"] = Base; + module.exports = exports["default"]; + }), { + "../../core/value-types": 339, + "../enums": 367, + "../gfx": 372, + "../memop": 384, + "./program-lib": 364, + "./view": 366 + }], + 362: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var InputAssembler = (function () { + function InputAssembler(vb, ib, pt) { + void 0 === pt && (pt = _gfx["default"].PT_TRIANGLES); + this._vertexBuffer = vb; + this._indexBuffer = ib; + this._primitiveType = pt; + this._start = 0; + this._count = -1; + } + _createClass(InputAssembler, [{ + key: "count", + get: function get() { + if (-1 !== this._count) return this._count; + if (this._indexBuffer) return this._indexBuffer.count; + if (this._vertexBuffer) return this._vertexBuffer.count; + return 0; + } + }]); + return InputAssembler; + })(); + exports["default"] = InputAssembler; + module.exports = exports["default"]; + }), { + "../gfx": 372 + }], + 363: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../gfx")); + var _enums = _interopRequireDefault(require("../enums")); + var _valueType = _interopRequireDefault(require("../../core/value-types/value-type")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Pass = (function () { + function Pass(name, detailName, programName, stage, properties, defines) { + void 0 === properties && (properties = {}); + void 0 === defines && (defines = {}); + this._name = name; + this._detailName = detailName; + this._programName = programName; + this._programKey = null; + this._stage = stage; + this._properties = properties; + this._defines = defines; + this._cullMode = _gfx["default"].CULL_BACK; + this._blend = false; + this._blendEq = _gfx["default"].BLEND_FUNC_ADD; + this._blendAlphaEq = _gfx["default"].BLEND_FUNC_ADD; + this._blendSrc = _gfx["default"].BLEND_SRC_ALPHA; + this._blendDst = _gfx["default"].BLEND_ONE_MINUS_SRC_ALPHA; + this._blendSrcAlpha = _gfx["default"].BLEND_SRC_ALPHA; + this._blendDstAlpha = _gfx["default"].BLEND_ONE_MINUS_SRC_ALPHA; + this._blendColor = 4294967295; + this._depthTest = false; + this._depthWrite = false; + this._depthFunc = _gfx["default"].DS_FUNC_LESS, this._stencilTest = _gfx["default"].STENCIL_INHERIT; + this._stencilFuncFront = _gfx["default"].DS_FUNC_ALWAYS; + this._stencilRefFront = 0; + this._stencilMaskFront = 255; + this._stencilFailOpFront = _gfx["default"].STENCIL_OP_KEEP; + this._stencilZFailOpFront = _gfx["default"].STENCIL_OP_KEEP; + this._stencilZPassOpFront = _gfx["default"].STENCIL_OP_KEEP; + this._stencilWriteMaskFront = 255; + this._stencilFuncBack = _gfx["default"].DS_FUNC_ALWAYS; + this._stencilRefBack = 0; + this._stencilMaskBack = 255; + this._stencilFailOpBack = _gfx["default"].STENCIL_OP_KEEP; + this._stencilZFailOpBack = _gfx["default"].STENCIL_OP_KEEP; + this._stencilZPassOpBack = _gfx["default"].STENCIL_OP_KEEP; + this._stencilWriteMaskBack = 255; + } + var _proto = Pass.prototype; + _proto.setCullMode = function setCullMode(cullMode) { + void 0 === cullMode && (cullMode = _gfx["default"].CULL_BACK); + this._cullMode = cullMode; + }; + _proto.setBlend = function setBlend(enabled, blendEq, blendSrc, blendDst, blendAlphaEq, blendSrcAlpha, blendDstAlpha, blendColor) { + void 0 === enabled && (enabled = false); + void 0 === blendEq && (blendEq = _gfx["default"].BLEND_FUNC_ADD); + void 0 === blendSrc && (blendSrc = _gfx["default"].BLEND_SRC_ALPHA); + void 0 === blendDst && (blendDst = _gfx["default"].BLEND_ONE_MINUS_SRC_ALPHA); + void 0 === blendAlphaEq && (blendAlphaEq = _gfx["default"].BLEND_FUNC_ADD); + void 0 === blendSrcAlpha && (blendSrcAlpha = _gfx["default"].BLEND_SRC_ALPHA); + void 0 === blendDstAlpha && (blendDstAlpha = _gfx["default"].BLEND_ONE_MINUS_SRC_ALPHA); + void 0 === blendColor && (blendColor = 4294967295); + this._blend = enabled; + this._blendEq = blendEq; + this._blendSrc = blendSrc; + this._blendDst = blendDst; + this._blendAlphaEq = blendAlphaEq; + this._blendSrcAlpha = blendSrcAlpha; + this._blendDstAlpha = blendDstAlpha; + this._blendColor = blendColor; + }; + _proto.setDepth = function setDepth(depthTest, depthWrite, depthFunc) { + void 0 === depthTest && (depthTest = false); + void 0 === depthWrite && (depthWrite = false); + void 0 === depthFunc && (depthFunc = _gfx["default"].DS_FUNC_LESS); + this._depthTest = depthTest; + this._depthWrite = depthWrite; + this._depthFunc = depthFunc; + }; + _proto.setStencilFront = function setStencilFront(enabled, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask) { + void 0 === enabled && (enabled = _gfx["default"].STENCIL_INHERIT); + void 0 === stencilFunc && (stencilFunc = _gfx["default"].DS_FUNC_ALWAYS); + void 0 === stencilRef && (stencilRef = 0); + void 0 === stencilMask && (stencilMask = 255); + void 0 === stencilFailOp && (stencilFailOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilZFailOp && (stencilZFailOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilZPassOp && (stencilZPassOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilWriteMask && (stencilWriteMask = 255); + this._stencilTest = enabled; + this._stencilFuncFront = stencilFunc; + this._stencilRefFront = stencilRef; + this._stencilMaskFront = stencilMask; + this._stencilFailOpFront = stencilFailOp; + this._stencilZFailOpFront = stencilZFailOp; + this._stencilZPassOpFront = stencilZPassOp; + this._stencilWriteMaskFront = stencilWriteMask; + }; + _proto.setStencilEnabled = function setStencilEnabled(stencilTest) { + void 0 === stencilTest && (stencilTest = _gfx["default"].STENCIL_INHERIT); + this._stencilTest = stencilTest; + }; + _proto.setStencilBack = function setStencilBack(stencilTest, stencilFunc, stencilRef, stencilMask, stencilFailOp, stencilZFailOp, stencilZPassOp, stencilWriteMask) { + void 0 === stencilTest && (stencilTest = _gfx["default"].STENCIL_INHERIT); + void 0 === stencilFunc && (stencilFunc = _gfx["default"].DS_FUNC_ALWAYS); + void 0 === stencilRef && (stencilRef = 0); + void 0 === stencilMask && (stencilMask = 255); + void 0 === stencilFailOp && (stencilFailOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilZFailOp && (stencilZFailOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilZPassOp && (stencilZPassOp = _gfx["default"].STENCIL_OP_KEEP); + void 0 === stencilWriteMask && (stencilWriteMask = 255); + this._stencilTest = stencilTest; + this._stencilFuncBack = stencilFunc; + this._stencilRefBack = stencilRef; + this._stencilMaskBack = stencilMask; + this._stencilFailOpBack = stencilFailOp; + this._stencilZFailOpBack = stencilZFailOp; + this._stencilZPassOpBack = stencilZPassOp; + this._stencilWriteMaskBack = stencilWriteMask; + }; + _proto.setStage = function setStage(stage) { + this._stage = stage; + }; + _proto.setProperties = function setProperties(properties) { + this._properties = properties; + }; + _proto.getProperty = function getProperty(name) { + if (!this._properties[name]) return; + return this._properties[name].value; + }; + _proto.setProperty = function setProperty(name, value, directly) { + var prop = this._properties[name]; + if (!prop) return false; + prop.directly = directly; + if (Array.isArray(value)) { + var array = prop.value; + if (array.length !== value.length) { + cc.warnID(9105, this._name, name); + return; + } + for (var i = 0; i < value.length; i++) array[i] = value[i]; + } else if (value && !ArrayBuffer.isView(value)) if (prop.type === _enums["default"].PARAM_TEXTURE_2D) prop.value = value.getImpl(); else if (value instanceof _valueType["default"]) value.constructor.toArray(prop.value, value); else { + "object" === typeof value && cc.warnID(9106, this._name, name); + prop.value = value; + } else prop.value = value; + return true; + }; + _proto.getDefine = function getDefine(name) { + return this._defines[name]; + }; + _proto.define = function define(name, value, force) { + var oldValue = this._defines[name]; + if (!force && void 0 === oldValue) return false; + if (oldValue !== value) { + this._defines[name] = value; + this._programKey = null; + } + return true; + }; + _proto.clone = function clone() { + var pass = new Pass(this._programName); + Object.assign(pass, this); + var newProperties = {}; + var properties = this._properties; + for (var name in properties) { + var prop = properties[name]; + var newProp = newProperties[name] = {}; + var value = prop.value; + Array.isArray(value) ? newProp.value = value.concat() : ArrayBuffer.isView(value) ? newProp.value = new value.__proto__.constructor(value) : newProp.value = value; + for (var _name in prop) { + if ("value" === _name) continue; + newProp[_name] = prop[_name]; + } + } + pass._properties = newProperties; + pass._defines = Object.assign({}, this._defines); + return pass; + }; + return Pass; + })(); + exports["default"] = Pass; + module.exports = exports["default"]; + }), { + "../../core/value-types/value-type": 347, + "../enums": 367, + "../gfx": 372 + }], + 364: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _gfx = _interopRequireDefault(require("../gfx")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _shdID = 0; + function _generateDefines(tmpDefines, defines) { + var results = []; + for (var i = 0; i < tmpDefines.length; i++) { + var name = tmpDefines[i].name; + var value = defines[name]; + "number" !== typeof value && (value = value ? 1 : 0); + results.push("#define " + name + " " + value); + } + return results.join("\n") + "\n"; + } + function _replaceMacroNums(string, tmpDefines, defines) { + var tmp = string; + for (var i = 0; i < tmpDefines.length; i++) { + var name = tmpDefines[i].name; + var value = defines[name]; + if (Number.isInteger(value)) { + var reg = new RegExp(name, "g"); + tmp = tmp.replace(reg, value); + } + } + return tmp; + } + function _unrollLoops(string) { + var pattern = /#pragma for (\w+) in range\(\s*(\d+)\s*,\s*(\d+)\s*\)([\s\S]+?)#pragma endFor/g; + function replace(match, index, begin, end, snippet) { + var unroll = ""; + var parsedBegin = parseInt(begin); + var parsedEnd = parseInt(end); + (parsedBegin.isNaN || parsedEnd.isNaN) && console.error("Unroll For Loops Error: begin and end of range must be an int num."); + for (var i = parsedBegin; i < parsedEnd; ++i) unroll += snippet.replace(new RegExp("{" + index + "}", "g"), i); + return unroll; + } + return string.replace(pattern, replace); + } + function _replaceHighp(string) { + return string.replace(/\bhighp\b/g, "mediump"); + } + var ProgramLib = (function () { + function ProgramLib(device) { + this._device = device; + this._templates = {}; + this._cache = {}; + this._checkPrecision(); + } + var _proto = ProgramLib.prototype; + _proto.clear = function clear() { + this._templates = {}; + this._cache = {}; + }; + _proto.define = function define(prog) { + var name = prog.name, defines = prog.defines, glsl1 = prog.glsl1; + var _ref = glsl1 || prog, vert = _ref.vert, frag = _ref.frag; + if (this._templates[name]) return; + var id = ++_shdID; + var offset = 0; + for (var i = 0; i < defines.length; ++i) { + var def = defines[i]; + var cnt = 1; + if ("number" === def.type) { + var range = def.range || []; + def.min = range[0] || 0; + def.max = range[1] || 4; + cnt = Math.ceil(Math.log2(def.max - def.min)); + def._map = function (value) { + return value - this.min << this._offset; + }.bind(def); + } else def._map = function (value) { + if (value) return 1 << this._offset; + return 0; + }.bind(def); + def._offset = offset; + offset += cnt; + } + var uniforms = prog.uniforms || []; + if (prog.samplers) for (var _i = 0; _i < prog.samplers.length; _i++) uniforms.push(prog.samplers[_i]); + if (prog.blocks) for (var _i2 = 0; _i2 < prog.blocks.length; _i2++) { + var _defines = prog.blocks[_i2].defines; + var members = prog.blocks[_i2].members; + for (var j = 0; j < members.length; j++) uniforms.push({ + defines: _defines, + name: members[j].name, + type: members[j].type + }); + } + this._templates[name] = { + id: id, + name: name, + vert: vert, + frag: frag, + defines: defines, + attributes: prog.attributes, + uniforms: uniforms, + extensions: prog.extensions + }; + }; + _proto.getTemplate = function getTemplate(name) { + return this._templates[name]; + }; + _proto.hasProgram = function hasProgram(name) { + return void 0 !== this._templates[name]; + }; + _proto.getKey = function getKey(name, defines) { + var tmpl = this._templates[name]; + var key = 0; + for (var i = 0; i < tmpl.defines.length; ++i) { + var tmplDefs = tmpl.defines[i]; + var value = defines[tmplDefs.name]; + if (void 0 === value) continue; + key |= tmplDefs._map(value); + } + return tmpl.id + ":" + key; + }; + _proto.getProgram = function getProgram(pass, defines, errPrefix) { + var key = pass._programKey = pass._programKey || this.getKey(pass._programName, defines); + var program = this._cache[key]; + if (program) return program; + var tmpl = this._templates[pass._programName]; + var customDef = _generateDefines(tmpl.defines, defines); + var vert = _replaceMacroNums(tmpl.vert, tmpl.defines, defines); + vert = customDef + _unrollLoops(vert); + this._highpSupported || (vert = _replaceHighp(vert)); + var frag = _replaceMacroNums(tmpl.frag, tmpl.defines, defines); + frag = customDef + _unrollLoops(frag); + this._highpSupported || (frag = _replaceHighp(frag)); + program = new _gfx["default"].Program(this._device, { + vert: vert, + frag: frag + }); + var errors = program.link(); + if (errors) { + var vertLines = vert.split("\n"); + var fragLines = frag.split("\n"); + var defineLength = tmpl.defines.length; + errors.forEach((function (err) { + var line = err.line - 1; + var originLine = err.line - defineLength; + var lines = "vs" === err.type ? vertLines : fragLines; + var source = lines[line]; + var info = err.info || "Failed to compile " + err.type + " " + err.fileID + " (ln " + originLine + "): \n " + err.message + ": \n " + source; + cc.error(errPrefix + " : " + info); + })); + } + this._cache[key] = program; + return program; + }; + _proto._checkPrecision = function _checkPrecision() { + var gl = this._device._gl; + var highpSupported = false; + if (gl.getShaderPrecisionFormat) { + var vertHighp = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT); + var fragHighp = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT); + highpSupported = vertHighp && vertHighp.precision > 0 && fragHighp && fragHighp.precision > 0; + } + highpSupported || cc.warnID(9102); + this._highpSupported = highpSupported; + }; + return ProgramLib; + })(); + exports["default"] = ProgramLib; + module.exports = exports["default"]; + }), { + "../gfx": 372 + }], + 365: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var Technique = (function () { + function Technique(name, passes) { + this._name = name; + this._passes = passes; + } + var _proto = Technique.prototype; + _proto.clone = function clone() { + var passes = []; + for (var i = 0; i < this._passes.length; i++) passes.push(this._passes[i].clone()); + return new Technique(this._name, passes); + }; + _createClass(Technique, [{ + key: "name", + get: function get() { + return this._name; + } + }, { + key: "passes", + get: function get() { + return this._passes; + } + }]); + return Technique; + })(); + exports["default"] = Technique; + module.exports = exports["default"]; + }), {}], + 366: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../core/value-types"); + var _enums = _interopRequireDefault(require("../enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var _m4_tmp = new _valueTypes.Mat4(); + var _genID = 0; + var View = (function () { + function View() { + this._id = _genID++; + this._priority = 0; + this._rect = { + x: 0, + y: 0, + w: 1, + h: 1 + }; + this._color = new _valueTypes.Vec4(.3, .3, .3, 1); + this._depth = 1; + this._stencil = 0; + this._clearFlags = _enums["default"].CLEAR_COLOR | _enums["default"].CLEAR_DEPTH; + this._clearModel = null; + this._matView = cc.mat4(); + this._matViewInv = cc.mat4(); + this._matProj = cc.mat4(); + this._matViewProj = cc.mat4(); + this._matInvViewProj = cc.mat4(); + this._stages = []; + this._cullingByID = false; + this._framebuffer = null; + this._shadowLight = null; + this._cullingMask = 4294967295; + } + var _proto = View.prototype; + _proto.getForward = function getForward(out) { + var m = this._matView.m; + return _valueTypes.Vec3.set(out, -m[2], -m[6], -m[10]); + }; + _proto.getPosition = function getPosition(out) { + _valueTypes.Mat4.invert(_m4_tmp, this._matView); + return _valueTypes.Mat4.getTranslation(out, _m4_tmp); + }; + return View; + })(); + exports["default"] = View; + module.exports = exports["default"]; + }), { + "../../core/value-types": 339, + "../enums": 367 + }], + 367: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _mappings = require("./build/mappings"); + var _default = { + PROJ_PERSPECTIVE: 0, + PROJ_ORTHO: 1, + LIGHT_DIRECTIONAL: 0, + LIGHT_POINT: 1, + LIGHT_SPOT: 2, + LIGHT_AMBIENT: 3, + SHADOW_NONE: 0, + SHADOW_HARD: 1, + SHADOW_SOFT: 2, + PARAM_INT: _mappings.typeMap["int"], + PARAM_INT2: _mappings.typeMap.ivec2, + PARAM_INT3: _mappings.typeMap.ivec3, + PARAM_INT4: _mappings.typeMap.ivec4, + PARAM_FLOAT: _mappings.typeMap["float"], + PARAM_FLOAT2: _mappings.typeMap.vec2, + PARAM_FLOAT3: _mappings.typeMap.vec3, + PARAM_FLOAT4: _mappings.typeMap.vec4, + PARAM_MAT2: _mappings.typeMap.mat2, + PARAM_MAT3: _mappings.typeMap.mat3, + PARAM_MAT4: _mappings.typeMap.mat4, + PARAM_TEXTURE_2D: _mappings.typeMap.sampler2D, + PARAM_TEXTURE_CUBE: _mappings.typeMap.samplerCube, + CLEAR_COLOR: 1, + CLEAR_DEPTH: 2, + CLEAR_STENCIL: 4, + CLEAR_SKYBOX: 8, + BUFFER_VIEW_INT8: 0, + BUFFER_VIEW_UINT8: 1, + BUFFER_VIEW_INT16: 2, + BUFFER_VIEW_UINT16: 3, + BUFFER_VIEW_INT32: 4, + BUFFER_VIEW_UINT32: 5, + BUFFER_VIEW_FLOAT32: 6 + }; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "./build/mappings": 360 + }], + 368: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _state = _interopRequireDefault(require("./state")); + var _enums = require("./enums"); + var _texture2d = _interopRequireDefault(require("./texture-2d")); + var _textureCube = _interopRequireDefault(require("./texture-cube")); + var _type2uniformCommit2, _type2uniformArrayCom; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var GL_INT = 5124; + var GL_FLOAT = 5126; + var GL_FLOAT_VEC2 = 35664; + var GL_FLOAT_VEC3 = 35665; + var GL_FLOAT_VEC4 = 35666; + var GL_INT_VEC2 = 35667; + var GL_INT_VEC3 = 35668; + var GL_INT_VEC4 = 35669; + var GL_BOOL = 35670; + var GL_BOOL_VEC2 = 35671; + var GL_BOOL_VEC3 = 35672; + var GL_BOOL_VEC4 = 35673; + var GL_FLOAT_MAT2 = 35674; + var GL_FLOAT_MAT3 = 35675; + var GL_FLOAT_MAT4 = 35676; + var GL_SAMPLER_2D = 35678; + var GL_SAMPLER_CUBE = 35680; + var _type2uniformCommit = (_type2uniformCommit2 = {}, _type2uniformCommit2[GL_INT] = function (gl, id, value) { + gl.uniform1i(id, value); + }, _type2uniformCommit2[GL_FLOAT] = function (gl, id, value) { + gl.uniform1f(id, value); + }, _type2uniformCommit2[GL_FLOAT_VEC2] = function (gl, id, value) { + gl.uniform2fv(id, value); + }, _type2uniformCommit2[GL_FLOAT_VEC3] = function (gl, id, value) { + gl.uniform3fv(id, value); + }, _type2uniformCommit2[GL_FLOAT_VEC4] = function (gl, id, value) { + gl.uniform4fv(id, value); + }, _type2uniformCommit2[GL_INT_VEC2] = function (gl, id, value) { + gl.uniform2iv(id, value); + }, _type2uniformCommit2[GL_INT_VEC3] = function (gl, id, value) { + gl.uniform3iv(id, value); + }, _type2uniformCommit2[GL_INT_VEC4] = function (gl, id, value) { + gl.uniform4iv(id, value); + }, _type2uniformCommit2[GL_BOOL] = function (gl, id, value) { + gl.uniform1i(id, value); + }, _type2uniformCommit2[GL_BOOL_VEC2] = function (gl, id, value) { + gl.uniform2iv(id, value); + }, _type2uniformCommit2[GL_BOOL_VEC3] = function (gl, id, value) { + gl.uniform3iv(id, value); + }, _type2uniformCommit2[GL_BOOL_VEC4] = function (gl, id, value) { + gl.uniform4iv(id, value); + }, _type2uniformCommit2[GL_FLOAT_MAT2] = function (gl, id, value) { + gl.uniformMatrix2fv(id, false, value); + }, _type2uniformCommit2[GL_FLOAT_MAT3] = function (gl, id, value) { + gl.uniformMatrix3fv(id, false, value); + }, _type2uniformCommit2[GL_FLOAT_MAT4] = function (gl, id, value) { + gl.uniformMatrix4fv(id, false, value); + }, _type2uniformCommit2[GL_SAMPLER_2D] = function (gl, id, value) { + gl.uniform1i(id, value); + }, _type2uniformCommit2[GL_SAMPLER_CUBE] = function (gl, id, value) { + gl.uniform1i(id, value); + }, _type2uniformCommit2); + var _type2uniformArrayCommit = (_type2uniformArrayCom = {}, _type2uniformArrayCom[GL_INT] = function (gl, id, value) { + gl.uniform1iv(id, value); + }, _type2uniformArrayCom[GL_FLOAT] = function (gl, id, value) { + gl.uniform1fv(id, value); + }, _type2uniformArrayCom[GL_FLOAT_VEC2] = function (gl, id, value) { + gl.uniform2fv(id, value); + }, _type2uniformArrayCom[GL_FLOAT_VEC3] = function (gl, id, value) { + gl.uniform3fv(id, value); + }, _type2uniformArrayCom[GL_FLOAT_VEC4] = function (gl, id, value) { + gl.uniform4fv(id, value); + }, _type2uniformArrayCom[GL_INT_VEC2] = function (gl, id, value) { + gl.uniform2iv(id, value); + }, _type2uniformArrayCom[GL_INT_VEC3] = function (gl, id, value) { + gl.uniform3iv(id, value); + }, _type2uniformArrayCom[GL_INT_VEC4] = function (gl, id, value) { + gl.uniform4iv(id, value); + }, _type2uniformArrayCom[GL_BOOL] = function (gl, id, value) { + gl.uniform1iv(id, value); + }, _type2uniformArrayCom[GL_BOOL_VEC2] = function (gl, id, value) { + gl.uniform2iv(id, value); + }, _type2uniformArrayCom[GL_BOOL_VEC3] = function (gl, id, value) { + gl.uniform3iv(id, value); + }, _type2uniformArrayCom[GL_BOOL_VEC4] = function (gl, id, value) { + gl.uniform4iv(id, value); + }, _type2uniformArrayCom[GL_FLOAT_MAT2] = function (gl, id, value) { + gl.uniformMatrix2fv(id, false, value); + }, _type2uniformArrayCom[GL_FLOAT_MAT3] = function (gl, id, value) { + gl.uniformMatrix3fv(id, false, value); + }, _type2uniformArrayCom[GL_FLOAT_MAT4] = function (gl, id, value) { + gl.uniformMatrix4fv(id, false, value); + }, _type2uniformArrayCom[GL_SAMPLER_2D] = function (gl, id, value) { + gl.uniform1iv(id, value); + }, _type2uniformArrayCom[GL_SAMPLER_CUBE] = function (gl, id, value) { + gl.uniform1iv(id, value); + }, _type2uniformArrayCom); + function _commitBlendStates(gl, cur, next) { + if (cur.blend !== next.blend) { + if (!next.blend) { + gl.disable(gl.BLEND); + return; + } + gl.enable(gl.BLEND); + next.blendSrc !== _enums.enums.BLEND_CONSTANT_COLOR && next.blendSrc !== _enums.enums.BLEND_ONE_MINUS_CONSTANT_COLOR && next.blendDst !== _enums.enums.BLEND_CONSTANT_COLOR && next.blendDst !== _enums.enums.BLEND_ONE_MINUS_CONSTANT_COLOR || gl.blendColor((next.blendColor >> 24) / 255, (next.blendColor >> 16 & 255) / 255, (next.blendColor >> 8 & 255) / 255, (255 & next.blendColor) / 255); + if (next.blendSep) { + gl.blendFuncSeparate(next.blendSrc, next.blendDst, next.blendSrcAlpha, next.blendDstAlpha); + gl.blendEquationSeparate(next.blendEq, next.blendAlphaEq); + } else { + gl.blendFunc(next.blendSrc, next.blendDst); + gl.blendEquation(next.blendEq); + } + return; + } + if (false === next.blend) return; + cur.blendColor !== next.blendColor && gl.blendColor((next.blendColor >> 24) / 255, (next.blendColor >> 16 & 255) / 255, (next.blendColor >> 8 & 255) / 255, (255 & next.blendColor) / 255); + if (cur.blendSep !== next.blendSep) { + if (next.blendSep) { + gl.blendFuncSeparate(next.blendSrc, next.blendDst, next.blendSrcAlpha, next.blendDstAlpha); + gl.blendEquationSeparate(next.blendEq, next.blendAlphaEq); + } else { + gl.blendFunc(next.blendSrc, next.blendDst); + gl.blendEquation(next.blendEq); + } + return; + } + if (next.blendSep) { + cur.blendSrc === next.blendSrc && cur.blendDst === next.blendDst && cur.blendSrcAlpha === next.blendSrcAlpha && cur.blendDstAlpha === next.blendDstAlpha || gl.blendFuncSeparate(next.blendSrc, next.blendDst, next.blendSrcAlpha, next.blendDstAlpha); + cur.blendEq === next.blendEq && cur.blendAlphaEq === next.blendAlphaEq || gl.blendEquationSeparate(next.blendEq, next.blendAlphaEq); + } else { + cur.blendSrc === next.blendSrc && cur.blendDst === next.blendDst || gl.blendFunc(next.blendSrc, next.blendDst); + cur.blendEq !== next.blendEq && gl.blendEquation(next.blendEq); + } + } + function _commitDepthStates(gl, cur, next) { + if (cur.depthTest !== next.depthTest) { + if (!next.depthTest) { + gl.disable(gl.DEPTH_TEST); + return; + } + gl.enable(gl.DEPTH_TEST); + gl.depthFunc(next.depthFunc); + gl.depthMask(next.depthWrite); + return; + } + cur.depthWrite !== next.depthWrite && gl.depthMask(next.depthWrite); + if (false === next.depthTest) { + if (next.depthWrite) { + next.depthTest = true; + next.depthFunc = _enums.enums.DS_FUNC_ALWAYS; + gl.enable(gl.DEPTH_TEST); + gl.depthFunc(next.depthFunc); + } + return; + } + cur.depthFunc !== next.depthFunc && gl.depthFunc(next.depthFunc); + } + function _commitStencilStates(gl, cur, next) { + if (next.stencilTest === _enums.enums.STENCIL_INHERIT) return; + if (next.stencilTest !== cur.stencilTest) { + if (next.stencilTest === _enums.enums.STENCIL_DISABLE) { + gl.disable(gl.STENCIL_TEST); + return; + } + gl.enable(gl.STENCIL_TEST); + if (next.stencilSep) { + gl.stencilFuncSeparate(gl.FRONT, next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + gl.stencilMaskSeparate(gl.FRONT, next.stencilWriteMaskFront); + gl.stencilOpSeparate(gl.FRONT, next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + gl.stencilFuncSeparate(gl.BACK, next.stencilFuncBack, next.stencilRefBack, next.stencilMaskBack); + gl.stencilMaskSeparate(gl.BACK, next.stencilWriteMaskBack); + gl.stencilOpSeparate(gl.BACK, next.stencilFailOpBack, next.stencilZFailOpBack, next.stencilZPassOpBack); + } else { + gl.stencilFunc(next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + gl.stencilMask(next.stencilWriteMaskFront); + gl.stencilOp(next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + } + return; + } + if (next.stencilTest === _enums.enums.STENCIL_DISABLE) return; + if (cur.stencilSep !== next.stencilSep) { + if (next.stencilSep) { + gl.stencilFuncSeparate(gl.FRONT, next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + gl.stencilMaskSeparate(gl.FRONT, next.stencilWriteMaskFront); + gl.stencilOpSeparate(gl.FRONT, next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + gl.stencilFuncSeparate(gl.BACK, next.stencilFuncBack, next.stencilRefBack, next.stencilMaskBack); + gl.stencilMaskSeparate(gl.BACK, next.stencilWriteMaskBack); + gl.stencilOpSeparate(gl.BACK, next.stencilFailOpBack, next.stencilZFailOpBack, next.stencilZPassOpBack); + } else { + gl.stencilFunc(next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + gl.stencilMask(next.stencilWriteMaskFront); + gl.stencilOp(next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + } + return; + } + if (next.stencilSep) { + cur.stencilFuncFront === next.stencilFuncFront && cur.stencilRefFront === next.stencilRefFront && cur.stencilMaskFront === next.stencilMaskFront || gl.stencilFuncSeparate(gl.FRONT, next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + cur.stencilWriteMaskFront !== next.stencilWriteMaskFront && gl.stencilMaskSeparate(gl.FRONT, next.stencilWriteMaskFront); + cur.stencilFailOpFront === next.stencilFailOpFront && cur.stencilZFailOpFront === next.stencilZFailOpFront && cur.stencilZPassOpFront === next.stencilZPassOpFront || gl.stencilOpSeparate(gl.FRONT, next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + cur.stencilFuncBack === next.stencilFuncBack && cur.stencilRefBack === next.stencilRefBack && cur.stencilMaskBack === next.stencilMaskBack || gl.stencilFuncSeparate(gl.BACK, next.stencilFuncBack, next.stencilRefBack, next.stencilMaskBack); + cur.stencilWriteMaskBack !== next.stencilWriteMaskBack && gl.stencilMaskSeparate(gl.BACK, next.stencilWriteMaskBack); + cur.stencilFailOpBack === next.stencilFailOpBack && cur.stencilZFailOpBack === next.stencilZFailOpBack && cur.stencilZPassOpBack === next.stencilZPassOpBack || gl.stencilOpSeparate(gl.BACK, next.stencilFailOpBack, next.stencilZFailOpBack, next.stencilZPassOpBack); + } else { + cur.stencilFuncFront === next.stencilFuncFront && cur.stencilRefFront === next.stencilRefFront && cur.stencilMaskFront === next.stencilMaskFront || gl.stencilFunc(next.stencilFuncFront, next.stencilRefFront, next.stencilMaskFront); + cur.stencilWriteMaskFront !== next.stencilWriteMaskFront && gl.stencilMask(next.stencilWriteMaskFront); + cur.stencilFailOpFront === next.stencilFailOpFront && cur.stencilZFailOpFront === next.stencilZFailOpFront && cur.stencilZPassOpFront === next.stencilZPassOpFront || gl.stencilOp(next.stencilFailOpFront, next.stencilZFailOpFront, next.stencilZPassOpFront); + } + } + function _commitCullMode(gl, cur, next) { + if (cur.cullMode === next.cullMode) return; + if (next.cullMode === _enums.enums.CULL_NONE) { + gl.disable(gl.CULL_FACE); + return; + } + gl.enable(gl.CULL_FACE); + gl.cullFace(next.cullMode); + } + function _commitVertexBuffers(device, gl, cur, next) { + var attrsDirty = false; + if (-1 === next.maxStream) return; + if (cur.maxStream !== next.maxStream) attrsDirty = true; else if (cur.program !== next.program) attrsDirty = true; else for (var i = 0; i < next.maxStream + 1; ++i) if (cur.vertexBuffers[i] !== next.vertexBuffers[i] || cur.vertexBufferOffsets[i] !== next.vertexBufferOffsets[i]) { + attrsDirty = true; + break; + } + if (attrsDirty) { + for (var _i = 0; _i < device._caps.maxVertexAttribs; ++_i) device._newAttributes[_i] = 0; + for (var _i2 = 0; _i2 < next.maxStream + 1; ++_i2) { + var vb = next.vertexBuffers[_i2]; + var vbOffset = next.vertexBufferOffsets[_i2]; + if (!vb || -1 === vb._glID) continue; + gl.bindBuffer(gl.ARRAY_BUFFER, vb._glID); + for (var j = 0; j < next.program._attributes.length; ++j) { + var attr = next.program._attributes[j]; + var el = vb._format.element(attr.name); + if (!el) { + console.warn("Can not find vertex attribute: " + attr.name); + continue; + } + if (0 === device._enabledAttributes[attr.location]) { + gl.enableVertexAttribArray(attr.location); + device._enabledAttributes[attr.location] = 1; + } + device._newAttributes[attr.location] = 1; + gl.vertexAttribPointer(attr.location, el.num, el.type, el.normalize, el.stride, el.offset + vbOffset * el.stride); + } + } + for (var _i3 = 0; _i3 < device._caps.maxVertexAttribs; ++_i3) if (device._enabledAttributes[_i3] !== device._newAttributes[_i3]) { + gl.disableVertexAttribArray(_i3); + device._enabledAttributes[_i3] = 0; + } + } + } + function _commitTextures(gl, cur, next) { + for (var i = 0; i < next.maxTextureSlot + 1; ++i) if (cur.textureUnits[i] !== next.textureUnits[i]) { + var texture = next.textureUnits[i]; + if (texture && -1 !== texture._glID) { + gl.activeTexture(gl.TEXTURE0 + i); + gl.bindTexture(texture._target, texture._glID); + } + } + } + function _attach(gl, location, attachment, face) { + void 0 === face && (face = 0); + attachment instanceof _texture2d["default"] ? gl.framebufferTexture2D(gl.FRAMEBUFFER, location, gl.TEXTURE_2D, attachment._glID, 0) : attachment instanceof _textureCube["default"] ? gl.framebufferTexture2D(gl.FRAMEBUFFER, location, gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, attachment._glID, 0) : gl.framebufferRenderbuffer(gl.FRAMEBUFFER, location, gl.RENDERBUFFER, attachment._glID); + } + var Device = (function () { + _createClass(Device, [{ + key: "caps", + get: function get() { + return this._caps; + } + }]); + function Device(canvasEL, opts) { + var gl; + opts = opts || {}; + void 0 === opts.alpha && (opts.alpha = false); + void 0 === opts.stencil && (opts.stencil = true); + void 0 === opts.depth && (opts.depth = true); + void 0 === opts.antialias && (opts.antialias = false); + void 0 === opts.preserveDrawingBuffer && (opts.preserveDrawingBuffer = false); + try { + gl = canvasEL.getContext("webgl", opts) || canvasEL.getContext("experimental-webgl", opts) || canvasEL.getContext("webkit-3d", opts) || canvasEL.getContext("moz-webgl", opts); + } catch (err) { + console.error(err); + return; + } + gl || console.error("This device does not support webgl"); + this._gl = gl; + this._extensions = {}; + this._caps = {}; + this._stats = { + texture: 0, + vb: 0, + ib: 0, + drawcalls: 0 + }; + this._initExtensions(["EXT_texture_filter_anisotropic", "EXT_shader_texture_lod", "OES_standard_derivatives", "OES_texture_float", "OES_texture_float_linear", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_compressed_texture_atc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_pvrtc", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "WEBGL_draw_buffers"]); + this._initCaps(); + this._initStates(); + _state["default"].initDefault(this); + this._current = new _state["default"](this); + this._next = new _state["default"](this); + this._uniforms = {}; + this._vx = this._vy = this._vw = this._vh = 0; + this._sx = this._sy = this._sw = this._sh = 0; + this._framebuffer = null; + this._enabledAttributes = new Array(this._caps.maxVertexAttribs); + this._newAttributes = new Array(this._caps.maxVertexAttribs); + for (var i = 0; i < this._caps.maxVertexAttribs; ++i) { + this._enabledAttributes[i] = 0; + this._newAttributes[i] = 0; + } + } + var _proto = Device.prototype; + _proto._initExtensions = function _initExtensions(extensions) { + var gl = this._gl; + for (var i = 0; i < extensions.length; ++i) { + var name = extensions[i]; + var vendorPrefixes = ["", "WEBKIT_", "MOZ_"]; + for (var j = 0; j < vendorPrefixes.length; j++) try { + var ext = gl.getExtension(vendorPrefixes[j] + name); + if (ext) { + this._extensions[name] = ext; + break; + } + } catch (e) { + console.error(e); + } + } + }; + _proto._initCaps = function _initCaps() { + var gl = this._gl; + var extDrawBuffers = this.ext("WEBGL_draw_buffers"); + this._caps.maxVertexStreams = 4; + this._caps.maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + this._caps.maxFragUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + this._caps.maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this._caps.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this._caps.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + this._caps.maxDrawBuffers = extDrawBuffers ? gl.getParameter(extDrawBuffers.MAX_DRAW_BUFFERS_WEBGL) : 1; + this._caps.maxColorAttachments = extDrawBuffers ? gl.getParameter(extDrawBuffers.MAX_COLOR_ATTACHMENTS_WEBGL) : 1; + }; + _proto._initStates = function _initStates() { + var gl = this._gl; + gl.disable(gl.BLEND); + gl.blendFunc(gl.ONE, gl.ZERO); + gl.blendEquation(gl.FUNC_ADD); + gl.blendColor(1, 1, 1, 1); + gl.colorMask(true, true, true, true); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + gl.disable(gl.DEPTH_TEST); + gl.depthFunc(gl.LESS); + gl.depthMask(false); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.depthRange(0, 1); + gl.disable(gl.STENCIL_TEST); + gl.stencilFunc(gl.ALWAYS, 0, 255); + gl.stencilMask(255); + gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); + gl.clearDepth(1); + gl.clearColor(0, 0, 0, 0); + gl.clearStencil(0); + gl.disable(gl.SCISSOR_TEST); + }; + _proto._restoreTexture = function _restoreTexture(unit) { + var gl = this._gl; + var texture = this._current.textureUnits[unit]; + texture && -1 !== texture._glID ? gl.bindTexture(texture._target, texture._glID) : gl.bindTexture(gl.TEXTURE_2D, null); + }; + _proto._restoreIndexBuffer = function _restoreIndexBuffer() { + var gl = this._gl; + var ib = this._current.indexBuffer; + ib && -1 !== ib._glID ? gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ib._glID) : gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + _proto.ext = function ext(name) { + return this._extensions[name]; + }; + _proto.allowFloatTexture = function allowFloatTexture() { + return null != this.ext("OES_texture_float"); + }; + _proto.setFrameBuffer = function setFrameBuffer(fb) { + if (this._framebuffer === fb) return; + this._framebuffer = fb; + var gl = this._gl; + if (!fb) { + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + return; + } + gl.bindFramebuffer(gl.FRAMEBUFFER, fb._glID); + var numColors = fb._colors.length; + for (var i = 0; i < numColors; ++i) { + var colorBuffer = fb._colors[i]; + _attach(gl, gl.COLOR_ATTACHMENT0 + i, colorBuffer); + } + for (var _i4 = numColors; _i4 < this._caps.maxColorAttachments; ++_i4) gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + _i4, gl.TEXTURE_2D, null, 0); + fb._depth && _attach(gl, gl.DEPTH_ATTACHMENT, fb._depth); + fb._stencil && _attach(gl, gl.STENCIL_ATTACHMENT, fb._stencil); + fb._depthStencil && _attach(gl, gl.DEPTH_STENCIL_ATTACHMENT, fb._depthStencil); + }; + _proto.setViewport = function setViewport(x, y, w, h) { + if (this._vx !== x || this._vy !== y || this._vw !== w || this._vh !== h) { + this._gl.viewport(x, y, w, h); + this._vx = x; + this._vy = y; + this._vw = w; + this._vh = h; + } + }; + _proto.setScissor = function setScissor(x, y, w, h) { + if (this._sx !== x || this._sy !== y || this._sw !== w || this._sh !== h) { + this._gl.scissor(x, y, w, h); + this._sx = x; + this._sy = y; + this._sw = w; + this._sh = h; + } + }; + _proto.clear = function clear(opts) { + if (void 0 === opts.color && void 0 === opts.depth && void 0 === opts.stencil) return; + var gl = this._gl; + var flags = 0; + if (void 0 !== opts.color) { + flags |= gl.COLOR_BUFFER_BIT; + gl.clearColor(opts.color[0], opts.color[1], opts.color[2], opts.color[3]); + } + if (void 0 !== opts.depth) { + flags |= gl.DEPTH_BUFFER_BIT; + gl.clearDepth(opts.depth); + gl.enable(gl.DEPTH_TEST); + gl.depthMask(true); + gl.depthFunc(gl.ALWAYS); + } + if (void 0 !== opts.stencil) { + flags |= gl.STENCIL_BUFFER_BIT; + gl.clearStencil(opts.stencil); + } + gl.clear(flags); + if (void 0 !== opts.depth) if (false === this._current.depthTest) gl.disable(gl.DEPTH_TEST); else { + false === this._current.depthWrite && gl.depthMask(false); + this._current.depthFunc !== _enums.enums.DS_FUNC_ALWAYS && gl.depthFunc(this._current.depthFunc); + } + }; + _proto.enableBlend = function enableBlend() { + this._next.blend = true; + }; + _proto.enableDepthTest = function enableDepthTest() { + this._next.depthTest = true; + }; + _proto.enableDepthWrite = function enableDepthWrite() { + this._next.depthWrite = true; + }; + _proto.setStencilTest = function setStencilTest(stencilTest) { + this._next.stencilTest = stencilTest; + }; + _proto.setStencilFunc = function setStencilFunc(func, ref, mask) { + this._next.stencilSep = false; + this._next.stencilFuncFront = this._next.stencilFuncBack = func; + this._next.stencilRefFront = this._next.stencilRefBack = ref; + this._next.stencilMaskFront = this._next.stencilMaskBack = mask; + }; + _proto.setStencilFuncFront = function setStencilFuncFront(func, ref, mask) { + this._next.stencilSep = true; + this._next.stencilFuncFront = func; + this._next.stencilRefFront = ref; + this._next.stencilMaskFront = mask; + }; + _proto.setStencilFuncBack = function setStencilFuncBack(func, ref, mask) { + this._next.stencilSep = true; + this._next.stencilFuncBack = func; + this._next.stencilRefBack = ref; + this._next.stencilMaskBack = mask; + }; + _proto.setStencilOp = function setStencilOp(failOp, zFailOp, zPassOp, writeMask) { + this._next.stencilFailOpFront = this._next.stencilFailOpBack = failOp; + this._next.stencilZFailOpFront = this._next.stencilZFailOpBack = zFailOp; + this._next.stencilZPassOpFront = this._next.stencilZPassOpBack = zPassOp; + this._next.stencilWriteMaskFront = this._next.stencilWriteMaskBack = writeMask; + }; + _proto.setStencilOpFront = function setStencilOpFront(failOp, zFailOp, zPassOp, writeMask) { + this._next.stencilSep = true; + this._next.stencilFailOpFront = failOp; + this._next.stencilZFailOpFront = zFailOp; + this._next.stencilZPassOpFront = zPassOp; + this._next.stencilWriteMaskFront = writeMask; + }; + _proto.setStencilOpBack = function setStencilOpBack(failOp, zFailOp, zPassOp, writeMask) { + this._next.stencilSep = true; + this._next.stencilFailOpBack = failOp; + this._next.stencilZFailOpBack = zFailOp; + this._next.stencilZPassOpBack = zPassOp; + this._next.stencilWriteMaskBack = writeMask; + }; + _proto.setDepthFunc = function setDepthFunc(depthFunc) { + this._next.depthFunc = depthFunc; + }; + _proto.setBlendColor32 = function setBlendColor32(rgba) { + this._next.blendColor = rgba; + }; + _proto.setBlendColor = function setBlendColor(r, g, b, a) { + this._next.blendColor = (255 * r << 24 | 255 * g << 16 | 255 * b << 8 | 255 * a) >>> 0; + }; + _proto.setBlendFunc = function setBlendFunc(src, dst) { + this._next.blendSep = false; + this._next.blendSrc = src; + this._next.blendDst = dst; + }; + _proto.setBlendFuncSep = function setBlendFuncSep(src, dst, srcAlpha, dstAlpha) { + this._next.blendSep = true; + this._next.blendSrc = src; + this._next.blendDst = dst; + this._next.blendSrcAlpha = srcAlpha; + this._next.blendDstAlpha = dstAlpha; + }; + _proto.setBlendEq = function setBlendEq(eq) { + this._next.blendSep = false; + this._next.blendEq = eq; + }; + _proto.setBlendEqSep = function setBlendEqSep(eq, alphaEq) { + this._next.blendSep = true; + this._next.blendEq = eq; + this._next.blendAlphaEq = alphaEq; + }; + _proto.setCullMode = function setCullMode(mode) { + this._next.cullMode = mode; + }; + _proto.setVertexBuffer = function setVertexBuffer(stream, buffer, start) { + void 0 === start && (start = 0); + this._next.vertexBuffers[stream] = buffer; + this._next.vertexBufferOffsets[stream] = start; + this._next.maxStream < stream && (this._next.maxStream = stream); + }; + _proto.setIndexBuffer = function setIndexBuffer(buffer) { + this._next.indexBuffer = buffer; + }; + _proto.setProgram = function setProgram(program) { + this._next.program = program; + }; + _proto.setTexture = function setTexture(name, texture, slot) { + if (slot >= this._caps.maxTextureUnits) { + console.warn("Can not set texture " + name + " at stage " + slot + ", max texture exceed: " + this._caps.maxTextureUnits); + return; + } + this._next.textureUnits[slot] = texture; + this.setUniform(name, slot); + this._next.maxTextureSlot < slot && (this._next.maxTextureSlot = slot); + }; + _proto.setTextureArray = function setTextureArray(name, textures, slots) { + var len = textures.length; + if (len >= this._caps.maxTextureUnits) { + console.warn("Can not set " + len + " textures for " + name + ", max texture exceed: " + this._caps.maxTextureUnits); + return; + } + for (var i = 0; i < len; ++i) { + var slot = slots[i]; + this._next.textureUnits[slot] = textures[i]; + this._next.maxTextureSlot < slot && (this._next.maxTextureSlot = slot); + } + this.setUniform(name, slots); + }; + _proto.setUniform = function setUniform(name, value) { + var uniform = this._uniforms[name]; + var sameType = false; + var isArray = false, isFloat32Array = false, isInt32Array = false; + do { + if (!uniform) break; + isFloat32Array = Array.isArray(value) || value instanceof Float32Array; + isInt32Array = value instanceof Int32Array; + isArray = isFloat32Array || isInt32Array; + if (uniform.isArray !== isArray) break; + if (uniform.isArray && uniform.value.length !== value.length) break; + sameType = true; + } while (false); + if (sameType) { + var oldValue = uniform.value; + var dirty = false; + if (uniform.isArray) { + for (var i = 0, l = oldValue.length; i < l; i++) if (oldValue[i] !== value[i]) { + dirty = true; + oldValue[i] = value[i]; + } + } else if (oldValue !== value) { + dirty = true; + uniform.value = value; + } + dirty && (uniform.dirty = true); + } else { + var newValue = value; + isFloat32Array ? newValue = new Float32Array(value) : isInt32Array && (newValue = new Int32Array(value)); + uniform = { + dirty: true, + value: newValue, + isArray: isArray + }; + } + this._uniforms[name] = uniform; + }; + _proto.setUniformDirectly = function setUniformDirectly(name, value) { + var uniform = this._uniforms[name]; + uniform || (this._uniforms[name] = uniform = {}); + uniform.dirty = true; + uniform.value = value; + }; + _proto.setPrimitiveType = function setPrimitiveType(type) { + this._next.primitiveType = type; + }; + _proto.resetDrawCalls = function resetDrawCalls() { + this._stats.drawcalls = 0; + }; + _proto.getDrawCalls = function getDrawCalls() { + return this._stats.drawcalls; + }; + _proto.draw = function draw(base, count) { + var gl = this._gl; + var cur = this._current; + var next = this._next; + _commitBlendStates(gl, cur, next); + _commitDepthStates(gl, cur, next); + _commitStencilStates(gl, cur, next); + _commitCullMode(gl, cur, next); + _commitVertexBuffers(this, gl, cur, next); + cur.indexBuffer !== next.indexBuffer && gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, next.indexBuffer && -1 !== next.indexBuffer._glID ? next.indexBuffer._glID : null); + var programDirty = false; + if (cur.program !== next.program) { + next.program._linked ? gl.useProgram(next.program._glID) : console.warn("Failed to use program: has not linked yet."); + programDirty = true; + } + _commitTextures(gl, cur, next); + for (var i = 0; i < next.program._uniforms.length; ++i) { + var uniformInfo = next.program._uniforms[i]; + var uniform = this._uniforms[uniformInfo.name]; + if (!uniform) continue; + if (!programDirty && !uniform.dirty) continue; + uniform.dirty = false; + var commitFunc = void 0 === uniformInfo.size ? _type2uniformCommit[uniformInfo.type] : _type2uniformArrayCommit[uniformInfo.type]; + if (!commitFunc) { + console.warn("Can not find commit function for uniform " + uniformInfo.name); + continue; + } + commitFunc(gl, uniformInfo.location, uniform.value); + } + if (count) { + next.indexBuffer ? gl.drawElements(this._next.primitiveType, count, next.indexBuffer._format, base * next.indexBuffer._bytesPerIndex) : gl.drawArrays(this._next.primitiveType, base, count); + this._stats.drawcalls++; + } + cur.set(next); + next.reset(); + }; + return Device; + })(); + exports["default"] = Device; + module.exports = exports["default"]; + }), { + "./enums": 369, + "./state": 376, + "./texture-2d": 377, + "./texture-cube": 378 + }], + 369: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.attrTypeBytes = attrTypeBytes; + exports.glFilter = glFilter; + exports.glTextureFmt = glTextureFmt; + exports.enums = void 0; + var GL_NEAREST = 9728; + var GL_LINEAR = 9729; + var GL_NEAREST_MIPMAP_NEAREST = 9984; + var GL_LINEAR_MIPMAP_NEAREST = 9985; + var GL_NEAREST_MIPMAP_LINEAR = 9986; + var GL_LINEAR_MIPMAP_LINEAR = 9987; + var GL_UNSIGNED_BYTE = 5121; + var GL_UNSIGNED_SHORT = 5123; + var GL_UNSIGNED_INT = 5125; + var GL_FLOAT = 5126; + var GL_UNSIGNED_SHORT_5_6_5 = 33635; + var GL_UNSIGNED_SHORT_4_4_4_4 = 32819; + var GL_UNSIGNED_SHORT_5_5_5_1 = 32820; + var GL_HALF_FLOAT_OES = 36193; + var GL_DEPTH_COMPONENT = 6402; + var GL_ALPHA = 6406; + var GL_RGB = 6407; + var GL_RGBA = 6408; + var GL_LUMINANCE = 6409; + var GL_LUMINANCE_ALPHA = 6410; + var GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 33776; + var GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777; + var GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778; + var GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779; + var GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840; + var GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841; + var GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842; + var GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843; + var GL_COMPRESSED_RGB_ETC1_WEBGL = 36196; + var GL_COMPRESSED_RGB8_ETC2 = 37492; + var GL_COMPRESSED_RGBA8_ETC2_EAC = 37496; + var _filterGL = [[GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR], [GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR]]; + var _textureFmtGL = [{ + format: GL_RGB, + internalFormat: GL_COMPRESSED_RGB_S3TC_DXT1_EXT, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, + pixelType: null + }, { + format: GL_RGB, + internalFormat: GL_COMPRESSED_RGB_ETC1_WEBGL, + pixelType: null + }, { + format: GL_RGB, + internalFormat: GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, + pixelType: null + }, { + format: GL_RGB, + internalFormat: GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, + pixelType: null + }, { + format: GL_ALPHA, + internalFormat: GL_ALPHA, + pixelType: GL_UNSIGNED_BYTE + }, { + format: GL_LUMINANCE, + internalFormat: GL_LUMINANCE, + pixelType: GL_UNSIGNED_BYTE + }, { + format: GL_LUMINANCE_ALPHA, + internalFormat: GL_LUMINANCE_ALPHA, + pixelType: GL_UNSIGNED_BYTE + }, { + format: GL_RGB, + internalFormat: GL_RGB, + pixelType: GL_UNSIGNED_SHORT_5_6_5 + }, { + format: GL_RGBA, + internalFormat: GL_RGBA, + pixelType: GL_UNSIGNED_SHORT_5_5_5_1 + }, { + format: GL_RGBA, + internalFormat: GL_RGBA, + pixelType: GL_UNSIGNED_SHORT_4_4_4_4 + }, { + format: GL_RGB, + internalFormat: GL_RGB, + pixelType: GL_UNSIGNED_BYTE + }, { + format: GL_RGBA, + internalFormat: GL_RGBA, + pixelType: GL_UNSIGNED_BYTE + }, { + format: GL_RGB, + internalFormat: GL_RGB, + pixelType: GL_HALF_FLOAT_OES + }, { + format: GL_RGBA, + internalFormat: GL_RGBA, + pixelType: GL_HALF_FLOAT_OES + }, { + format: GL_RGB, + internalFormat: GL_RGB, + pixelType: GL_FLOAT + }, { + format: GL_RGBA, + internalFormat: GL_RGBA, + pixelType: GL_FLOAT + }, { + format: null, + internalFormat: null, + pixelType: null + }, { + format: null, + internalFormat: null, + pixelType: null + }, { + format: null, + internalFormat: null, + pixelType: null + }, { + format: null, + internalFormat: null, + pixelType: null + }, { + format: GL_DEPTH_COMPONENT, + internalFormat: GL_DEPTH_COMPONENT, + pixelType: GL_UNSIGNED_SHORT + }, { + format: GL_DEPTH_COMPONENT, + internalFormat: GL_DEPTH_COMPONENT, + pixelType: GL_UNSIGNED_INT + }, { + format: GL_DEPTH_COMPONENT, + internalFormat: GL_DEPTH_COMPONENT, + pixelType: GL_UNSIGNED_INT + }, { + format: GL_RGB, + internalFormat: GL_COMPRESSED_RGB8_ETC2, + pixelType: null + }, { + format: GL_RGBA, + internalFormat: GL_COMPRESSED_RGBA8_ETC2_EAC, + pixelType: null + }]; + var enums = { + USAGE_STATIC: 35044, + USAGE_DYNAMIC: 35048, + USAGE_STREAM: 35040, + INDEX_FMT_UINT8: 5121, + INDEX_FMT_UINT16: 5123, + INDEX_FMT_UINT32: 5125, + ATTR_POSITION: "a_position", + ATTR_NORMAL: "a_normal", + ATTR_TANGENT: "a_tangent", + ATTR_BITANGENT: "a_bitangent", + ATTR_WEIGHTS: "a_weights", + ATTR_JOINTS: "a_joints", + ATTR_COLOR: "a_color", + ATTR_COLOR0: "a_color0", + ATTR_COLOR1: "a_color1", + ATTR_UV: "a_uv", + ATTR_UV0: "a_uv0", + ATTR_UV1: "a_uv1", + ATTR_UV2: "a_uv2", + ATTR_UV3: "a_uv3", + ATTR_UV4: "a_uv4", + ATTR_UV5: "a_uv5", + ATTR_UV6: "a_uv6", + ATTR_UV7: "a_uv7", + ATTR_TEX_COORD: "a_texCoord", + ATTR_TEX_COORD1: "a_texCoord1", + ATTR_TEX_COORD2: "a_texCoord2", + ATTR_TEX_COORD3: "a_texCoord3", + ATTR_TEX_COORD4: "a_texCoord4", + ATTR_TEX_COORD5: "a_texCoord5", + ATTR_TEX_COORD6: "a_texCoord6", + ATTR_TEX_COORD7: "a_texCoord7", + ATTR_TEX_COORD8: "a_texCoord8", + ATTR_TYPE_INT8: 5120, + ATTR_TYPE_UINT8: 5121, + ATTR_TYPE_INT16: 5122, + ATTR_TYPE_UINT16: 5123, + ATTR_TYPE_INT32: 5124, + ATTR_TYPE_UINT32: 5125, + ATTR_TYPE_FLOAT32: 5126, + FILTER_NEAREST: 0, + FILTER_LINEAR: 1, + WRAP_REPEAT: 10497, + WRAP_CLAMP: 33071, + WRAP_MIRROR: 33648, + TEXTURE_FMT_RGB_DXT1: 0, + TEXTURE_FMT_RGBA_DXT1: 1, + TEXTURE_FMT_RGBA_DXT3: 2, + TEXTURE_FMT_RGBA_DXT5: 3, + TEXTURE_FMT_RGB_ETC1: 4, + TEXTURE_FMT_RGB_PVRTC_2BPPV1: 5, + TEXTURE_FMT_RGBA_PVRTC_2BPPV1: 6, + TEXTURE_FMT_RGB_PVRTC_4BPPV1: 7, + TEXTURE_FMT_RGBA_PVRTC_4BPPV1: 8, + TEXTURE_FMT_A8: 9, + TEXTURE_FMT_L8: 10, + TEXTURE_FMT_L8_A8: 11, + TEXTURE_FMT_R5_G6_B5: 12, + TEXTURE_FMT_R5_G5_B5_A1: 13, + TEXTURE_FMT_R4_G4_B4_A4: 14, + TEXTURE_FMT_RGB8: 15, + TEXTURE_FMT_RGBA8: 16, + TEXTURE_FMT_RGB16F: 17, + TEXTURE_FMT_RGBA16F: 18, + TEXTURE_FMT_RGB32F: 19, + TEXTURE_FMT_RGBA32F: 20, + TEXTURE_FMT_R32F: 21, + TEXTURE_FMT_111110F: 22, + TEXTURE_FMT_SRGB: 23, + TEXTURE_FMT_SRGBA: 24, + TEXTURE_FMT_D16: 25, + TEXTURE_FMT_D32: 26, + TEXTURE_FMT_D24S8: 27, + TEXTURE_FMT_RGB_ETC2: 28, + TEXTURE_FMT_RGBA_ETC2: 29, + DS_FUNC_NEVER: 512, + DS_FUNC_LESS: 513, + DS_FUNC_EQUAL: 514, + DS_FUNC_LEQUAL: 515, + DS_FUNC_GREATER: 516, + DS_FUNC_NOTEQUAL: 517, + DS_FUNC_GEQUAL: 518, + DS_FUNC_ALWAYS: 519, + RB_FMT_RGBA4: 32854, + RB_FMT_RGB5_A1: 32855, + RB_FMT_RGB565: 36194, + RB_FMT_D16: 33189, + RB_FMT_S8: 36168, + RB_FMT_D24S8: 34041, + BLEND_FUNC_ADD: 32774, + BLEND_FUNC_SUBTRACT: 32778, + BLEND_FUNC_REVERSE_SUBTRACT: 32779, + BLEND_ZERO: 0, + BLEND_ONE: 1, + BLEND_SRC_COLOR: 768, + BLEND_ONE_MINUS_SRC_COLOR: 769, + BLEND_DST_COLOR: 774, + BLEND_ONE_MINUS_DST_COLOR: 775, + BLEND_SRC_ALPHA: 770, + BLEND_ONE_MINUS_SRC_ALPHA: 771, + BLEND_DST_ALPHA: 772, + BLEND_ONE_MINUS_DST_ALPHA: 773, + BLEND_CONSTANT_COLOR: 32769, + BLEND_ONE_MINUS_CONSTANT_COLOR: 32770, + BLEND_CONSTANT_ALPHA: 32771, + BLEND_ONE_MINUS_CONSTANT_ALPHA: 32772, + BLEND_SRC_ALPHA_SATURATE: 776, + STENCIL_DISABLE: 0, + STENCIL_ENABLE: 1, + STENCIL_INHERIT: 2, + STENCIL_OP_KEEP: 7680, + STENCIL_OP_ZERO: 0, + STENCIL_OP_REPLACE: 7681, + STENCIL_OP_INCR: 7682, + STENCIL_OP_INCR_WRAP: 34055, + STENCIL_OP_DECR: 7683, + STENCIL_OP_DECR_WRAP: 34056, + STENCIL_OP_INVERT: 5386, + CULL_NONE: 0, + CULL_FRONT: 1028, + CULL_BACK: 1029, + CULL_FRONT_AND_BACK: 1032, + PT_POINTS: 0, + PT_LINES: 1, + PT_LINE_LOOP: 2, + PT_LINE_STRIP: 3, + PT_TRIANGLES: 4, + PT_TRIANGLE_STRIP: 5, + PT_TRIANGLE_FAN: 6 + }; + exports.enums = enums; + function attrTypeBytes(attrType) { + if (attrType === enums.ATTR_TYPE_INT8) return 1; + if (attrType === enums.ATTR_TYPE_UINT8) return 1; + if (attrType === enums.ATTR_TYPE_INT16) return 2; + if (attrType === enums.ATTR_TYPE_UINT16) return 2; + if (attrType === enums.ATTR_TYPE_INT32) return 4; + if (attrType === enums.ATTR_TYPE_UINT32) return 4; + if (attrType === enums.ATTR_TYPE_FLOAT32) return 4; + console.warn("Unknown ATTR_TYPE: " + attrType); + return 0; + } + function glFilter(gl, filter, mipFilter) { + void 0 === mipFilter && (mipFilter = -1); + var result = _filterGL[filter][mipFilter + 1]; + if (void 0 === result) { + console.warn("Unknown FILTER: " + filter); + return -1 === mipFilter ? gl.LINEAR : gl.LINEAR_MIPMAP_LINEAR; + } + return result; + } + function glTextureFmt(fmt) { + var result = _textureFmtGL[fmt]; + if (void 0 === result) { + console.warn("Unknown TEXTURE_FMT: " + fmt); + return _textureFmtGL[enums.TEXTURE_FMT_RGBA8]; + } + return result; + } + }), {}], + 370: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var FrameBuffer = (function () { + function FrameBuffer(device, width, height, options) { + this._device = device; + this._width = width; + this._height = height; + this._colors = options.colors || []; + this._depth = options.depth || null; + this._stencil = options.stencil || null; + this._depthStencil = options.depthStencil || null; + this._glID = device._gl.createFramebuffer(); + } + var _proto = FrameBuffer.prototype; + _proto.destroy = function destroy() { + if (null === this._glID) { + console.error("The frame-buffer already destroyed"); + return; + } + var gl = this._device._gl; + gl.deleteFramebuffer(this._glID); + this._glID = null; + }; + _proto.getHandle = function getHandle() { + return this._glID; + }; + return FrameBuffer; + })(); + exports["default"] = FrameBuffer; + module.exports = exports["default"]; + }), {}], + 371: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + var _BYTES_PER_INDEX; + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var BYTES_PER_INDEX = (_BYTES_PER_INDEX = {}, _BYTES_PER_INDEX[_enums.enums.INDEX_FMT_UINT8] = 1, + _BYTES_PER_INDEX[_enums.enums.INDEX_FMT_UINT16] = 2, _BYTES_PER_INDEX[_enums.enums.INDEX_FMT_UINT32] = 4, + _BYTES_PER_INDEX); + var IndexBuffer = (function () { + function IndexBuffer(device, format, usage, data) { + this._device = device; + this._format = format; + this._usage = usage; + this._bytesPerIndex = BYTES_PER_INDEX[format]; + this._bytes = data.byteLength; + this._numIndices = this._bytes / this._bytesPerIndex; + this._needExpandDataStore = true; + this._glID = device._gl.createBuffer(); + this.update(0, data); + device._stats.ib += this._bytes; + } + var _proto = IndexBuffer.prototype; + _proto.destroy = function destroy() { + if (-1 === this._glID) { + console.error("The buffer already destroyed"); + return; + } + var gl = this._device._gl; + gl.deleteBuffer(this._glID); + this._device._stats.ib -= this.bytes; + this._glID = -1; + }; + _proto.update = function update(byteOffset, data) { + if (-1 === this._glID) { + console.error("The buffer is destroyed"); + return; + } + if (0 === data.byteLength) return; + if (byteOffset + data.byteLength > this._bytes) { + if (byteOffset) { + console.error("Failed to update data, bytes exceed."); + return; + } + this._needExpandDataStore = true; + this._bytes = byteOffset + data.byteLength; + this._numIndices = this._bytes / this._bytesPerIndex; + } + var gl = this._device._gl; + var glUsage = this._usage; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._glID); + if (this._needExpandDataStore) { + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, glUsage); + this._needExpandDataStore = false; + } else gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, byteOffset, data); + this._device._restoreIndexBuffer(); + }; + _proto.setUsage = function setUsage(usage) { + this._usage = usage; + }; + _createClass(IndexBuffer, [{ + key: "count", + get: function get() { + return this._numIndices; + } + }]); + return IndexBuffer; + })(); + IndexBuffer.BYTES_PER_INDEX = BYTES_PER_INDEX; + var _default = IndexBuffer; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "./enums": 369 + }], + 372: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + var gfx = null; + false; + var VertexFormat = require("./vertex-format"); + var IndexBuffer = require("./index-buffer"); + var VertexBuffer = require("./vertex-buffer"); + var Program = require("./program"); + var Texture = require("./texture"); + var Texture2D = require("./texture-2d"); + var TextureCube = require("./texture-cube"); + var RenderBuffer = require("./render-buffer"); + var FrameBuffer = require("./frame-buffer"); + var Device = require("./device"); + gfx = { + VertexFormat: VertexFormat, + IndexBuffer: IndexBuffer, + VertexBuffer: VertexBuffer, + Program: Program, + Texture: Texture, + Texture2D: Texture2D, + TextureCube: TextureCube, + RenderBuffer: RenderBuffer, + FrameBuffer: FrameBuffer, + Device: Device, + attrTypeBytes: _enums.attrTypeBytes, + glFilter: _enums.glFilter, + glTextureFmt: _enums.glTextureFmt + }; + Object.assign(gfx, _enums.enums); + var _default = gfx; + exports["default"] = _default; + cc.gfx = gfx; + module.exports = exports["default"]; + }), { + "./device": 368, + "./enums": 369, + "./frame-buffer": 370, + "./index-buffer": 371, + "./program": 374, + "./render-buffer": 375, + "./texture": 379, + "./texture-2d": 377, + "./texture-cube": 378, + "./vertex-buffer": 380, + "./vertex-format": 381 + }], + 373: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.isPow2 = isPow2; + function isPow2(v) { + return !(v & v - 1) && !!v; + } + }), {}], + 374: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var _genID = 0; + function _parseError(out, type, errorLog) { + errorLog.split("\n").forEach((function (msg) { + if (msg.length < 5) return; + var parts = /^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(msg); + parts ? out.push({ + type: type, + fileID: 0 | parts[1], + line: 0 | parts[2], + message: parts[3].trim() + }) : msg.length > 0 && out.push({ + type: type, + fileID: -1, + line: 0, + message: msg + }); + })); + } + var Program = (function () { + function Program(device, options) { + this._device = device; + this._attributes = []; + this._uniforms = []; + this._samplers = []; + this._errors = []; + this._linked = false; + this._vertSource = options.vert; + this._fragSource = options.frag; + this._glID = null; + this._id = _genID++; + } + var _proto = Program.prototype; + _proto.link = function link() { + if (this._linked) return; + var gl = this._device._gl; + var vertShader = _createShader(gl, gl.VERTEX_SHADER, this._vertSource); + var fragShader = _createShader(gl, gl.FRAGMENT_SHADER, this._fragSource); + var program = gl.createProgram(); + gl.attachShader(program, vertShader); + gl.attachShader(program, fragShader); + gl.linkProgram(program); + var failed = false; + var errors = this._errors; + if (!gl.getShaderParameter(vertShader, gl.COMPILE_STATUS)) { + _parseError(errors, "vs", gl.getShaderInfoLog(vertShader)); + failed = true; + } + if (!gl.getShaderParameter(fragShader, gl.COMPILE_STATUS)) { + _parseError(errors, "fs", gl.getShaderInfoLog(fragShader)); + failed = true; + } + gl.deleteShader(vertShader); + gl.deleteShader(fragShader); + if (failed) return errors; + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + errors.push({ + info: "Failed to link shader program: " + gl.getProgramInfoLog(program) + }); + return errors; + } + this._glID = program; + var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); + for (var i = 0; i < numAttributes; ++i) { + var info = gl.getActiveAttrib(program, i); + var location = gl.getAttribLocation(program, info.name); + this._attributes.push({ + name: info.name, + location: location, + type: info.type + }); + } + var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + for (var _i = 0; _i < numUniforms; ++_i) { + var _info = gl.getActiveUniform(program, _i); + var name = _info.name; + var _location = gl.getUniformLocation(program, name); + var isArray = "[0]" === name.substr(name.length - 3); + isArray && (name = name.substr(0, name.length - 3)); + var uniform = { + name: name, + location: _location, + type: _info.type, + size: isArray ? _info.size : void 0 + }; + this._uniforms.push(uniform); + } + this._linked = true; + }; + _proto.destroy = function destroy() { + var gl = this._device._gl; + gl.deleteProgram(this._glID); + this._linked = false; + this._glID = null; + this._attributes = []; + this._uniforms = []; + this._samplers = []; + }; + _createClass(Program, [{ + key: "id", + get: function get() { + return this._id; + } + }]); + return Program; + })(); + exports["default"] = Program; + function _createShader(gl, type, src) { + var shader = gl.createShader(type); + gl.shaderSource(shader, src); + gl.compileShader(shader); + return shader; + } + module.exports = exports["default"]; + }), {}], + 375: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var RenderBuffer = (function () { + function RenderBuffer(device, format, width, height) { + this._device = device; + this._format = format; + this._glID = device._gl.createRenderbuffer(); + this.update(width, height); + } + var _proto = RenderBuffer.prototype; + _proto.update = function update(width, height) { + this._width = width; + this._height = height; + var gl = this._device._gl; + gl.bindRenderbuffer(gl.RENDERBUFFER, this._glID); + gl.renderbufferStorage(gl.RENDERBUFFER, this._format, width, height); + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + }; + _proto.destroy = function destroy() { + if (null === this._glID) { + console.error("The render-buffer already destroyed"); + return; + } + var gl = this._device._gl; + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + gl.deleteRenderbuffer(this._glID); + this._glID = null; + }; + return RenderBuffer; + })(); + exports["default"] = RenderBuffer; + module.exports = exports["default"]; + }), {}], + 376: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + var _default = { + blend: false, + blendSep: false, + blendColor: 4294967295, + blendEq: _enums.enums.BLEND_FUNC_ADD, + blendAlphaEq: _enums.enums.BLEND_FUNC_ADD, + blendSrc: _enums.enums.BLEND_ONE, + blendDst: _enums.enums.BLEND_ZERO, + blendSrcAlpha: _enums.enums.BLEND_ONE, + blendDstAlpha: _enums.enums.BLEND_ZERO, + depthTest: false, + depthWrite: false, + depthFunc: _enums.enums.DS_FUNC_LESS, + stencilTest: false, + stencilSep: false, + stencilFuncFront: _enums.enums.DS_FUNC_ALWAYS, + stencilRefFront: 0, + stencilMaskFront: 255, + stencilFailOpFront: _enums.enums.STENCIL_OP_KEEP, + stencilZFailOpFront: _enums.enums.STENCIL_OP_KEEP, + stencilZPassOpFront: _enums.enums.STENCIL_OP_KEEP, + stencilWriteMaskFront: 255, + stencilFuncBack: _enums.enums.DS_FUNC_ALWAYS, + stencilRefBack: 0, + stencilMaskBack: 255, + stencilFailOpBack: _enums.enums.STENCIL_OP_KEEP, + stencilZFailOpBack: _enums.enums.STENCIL_OP_KEEP, + stencilZPassOpBack: _enums.enums.STENCIL_OP_KEEP, + stencilWriteMaskBack: 255, + cullMode: _enums.enums.CULL_BACK, + primitiveType: _enums.enums.PT_TRIANGLES, + maxStream: -1, + vertexBuffers: [], + vertexBufferOffsets: [], + indexBuffer: null, + maxTextureSlot: -1, + textureUnits: [], + program: null + }; + var State = (function () { + function State(device) { + this.vertexBuffers = new Array(device._caps.maxVertexStreams); + this.vertexBufferOffsets = new Array(device._caps.maxVertexStreams); + this.textureUnits = new Array(device._caps.maxTextureUnits); + this.set(_default); + } + State.initDefault = function initDefault(device) { + _default.vertexBuffers = new Array(device._caps.maxVertexStreams); + _default.vertexBufferOffsets = new Array(device._caps.maxVertexStreams); + _default.textureUnits = new Array(device._caps.maxTextureUnits); + }; + var _proto = State.prototype; + _proto.reset = function reset() { + this.set(_default); + }; + _proto.set = function set(cpy) { + this.blend = cpy.blend; + this.blendSep = cpy.blendSep; + this.blendColor = cpy.blendColor; + this.blendEq = cpy.blendEq; + this.blendAlphaEq = cpy.blendAlphaEq; + this.blendSrc = cpy.blendSrc; + this.blendDst = cpy.blendDst; + this.blendSrcAlpha = cpy.blendSrcAlpha; + this.blendDstAlpha = cpy.blendDstAlpha; + this.depthTest = cpy.depthTest; + this.depthWrite = cpy.depthWrite; + this.depthFunc = cpy.depthFunc; + this.stencilTest = cpy.stencilTest; + this.stencilSep = cpy.stencilSep; + this.stencilFuncFront = cpy.stencilFuncFront; + this.stencilRefFront = cpy.stencilRefFront; + this.stencilMaskFront = cpy.stencilMaskFront; + this.stencilFailOpFront = cpy.stencilFailOpFront; + this.stencilZFailOpFront = cpy.stencilZFailOpFront; + this.stencilZPassOpFront = cpy.stencilZPassOpFront; + this.stencilWriteMaskFront = cpy.stencilWriteMaskFront; + this.stencilFuncBack = cpy.stencilFuncBack; + this.stencilRefBack = cpy.stencilRefBack; + this.stencilMaskBack = cpy.stencilMaskBack; + this.stencilFailOpBack = cpy.stencilFailOpBack; + this.stencilZFailOpBack = cpy.stencilZFailOpBack; + this.stencilZPassOpBack = cpy.stencilZPassOpBack; + this.stencilWriteMaskBack = cpy.stencilWriteMaskBack; + this.cullMode = cpy.cullMode; + this.primitiveType = cpy.primitiveType; + this.maxStream = cpy.maxStream; + for (var i = 0; i < cpy.vertexBuffers.length; ++i) this.vertexBuffers[i] = cpy.vertexBuffers[i]; + for (var _i = 0; _i < cpy.vertexBufferOffsets.length; ++_i) this.vertexBufferOffsets[_i] = cpy.vertexBufferOffsets[_i]; + this.indexBuffer = cpy.indexBuffer; + this.maxTextureSlot = cpy.maxTextureSlot; + for (var _i2 = 0; _i2 < cpy.textureUnits.length; ++_i2) this.textureUnits[_i2] = cpy.textureUnits[_i2]; + this.program = cpy.program; + }; + return State; + })(); + exports["default"] = State; + module.exports = exports["default"]; + }), { + "./enums": 369 + }], + 377: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _texture = _interopRequireDefault(require("./texture")); + var _enums = require("./enums"); + var _misc = require("./misc"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Texture2D = (function (_Texture) { + _inheritsLoose(Texture2D, _Texture); + function Texture2D(device, options) { + var _this; + _this = _Texture.call(this, device) || this; + var gl = _this._device._gl; + _this._target = gl.TEXTURE_2D; + _this._glID = gl.createTexture(); + options.images = options.images || [null]; + _this.update(options); + return _this; + } + var _proto = Texture2D.prototype; + _proto.update = function update(options) { + var gl = this._device._gl; + var genMipmaps = this._genMipmap; + if (options) { + void 0 !== options.width && (this._width = options.width); + void 0 !== options.height && (this._height = options.height); + void 0 !== options.anisotropy && (this._anisotropy = options.anisotropy); + void 0 !== options.minFilter && (this._minFilter = options.minFilter); + void 0 !== options.magFilter && (this._magFilter = options.magFilter); + void 0 !== options.mipFilter && (this._mipFilter = options.mipFilter); + void 0 !== options.wrapS && (this._wrapS = options.wrapS); + void 0 !== options.wrapT && (this._wrapT = options.wrapT); + if (void 0 !== options.format) { + this._format = options.format; + this._compressed = this._format >= _enums.enums.TEXTURE_FMT_RGB_DXT1 && this._format <= _enums.enums.TEXTURE_FMT_RGBA_PVRTC_4BPPV1 || this._format >= _enums.enums.TEXTURE_FMT_RGB_ETC2 && this._format <= _enums.enums.TEXTURE_FMT_RGBA_ETC2; + } + if (void 0 !== options.genMipmaps) { + this._genMipmap = options.genMipmaps; + genMipmaps = options.genMipmaps; + } + var maxSize = this._device.caps.maxTextureSize || Number.MAX_VALUE; + var textureMaxSize = Math.max(options.width || 0, options.height || 0); + maxSize < textureMaxSize && console.warn("The current texture size " + textureMaxSize + " exceeds the maximum size [" + maxSize + "] supported on the device."); + if (void 0 !== options.images && options.images.length > 1) { + genMipmaps = false; + var maxLength = options.width > options.height ? options.width : options.height; + maxLength >> options.images.length - 1 !== 1 && console.error("texture-2d mipmap is invalid, should have a 1x1 mipmap."); + } + } + var pot = (0, _misc.isPow2)(this._width) && (0, _misc.isPow2)(this._height); + pot || (genMipmaps = false); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this._glID); + if (void 0 !== options.images && options.images.length > 0) { + this._setMipmap(options.images, options.flipY, options.premultiplyAlpha); + options.images.length > 1 && (this._genMipmap = true); + } + if (genMipmaps) { + gl.hint(gl.GENERATE_MIPMAP_HINT, gl.NICEST); + gl.generateMipmap(gl.TEXTURE_2D); + this._genMipmap = true; + } + this._setTexInfo(); + this._device._restoreTexture(0); + }; + _proto.updateSubImage = function updateSubImage(options) { + var gl = this._device._gl; + var glFmt = (0, _enums.glTextureFmt)(this._format); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this._glID); + this._setSubImage(glFmt, options); + this._device._restoreTexture(0); + }; + _proto.updateImage = function updateImage(options) { + var gl = this._device._gl; + var glFmt = (0, _enums.glTextureFmt)(this._format); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this._glID); + this._setImage(glFmt, options); + this._device._restoreTexture(0); + }; + _proto._setSubImage = function _setSubImage(glFmt, options) { + var gl = this._device._gl; + var flipY = options.flipY; + var premultiplyAlpha = options.premultiplyAlpha; + var img = options.image; + if (!img || ArrayBuffer.isView(img) || img instanceof ArrayBuffer) { + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + this._compressed ? gl.compressedTexSubImage2D(gl.TEXTURE_2D, options.level, options.x, options.y, options.width, options.height, glFmt.format, img) : gl.texSubImage2D(gl.TEXTURE_2D, options.level, options.x, options.y, options.width, options.height, glFmt.format, glFmt.pixelType, img); + } else { + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + gl.texSubImage2D(gl.TEXTURE_2D, options.level, options.x, options.y, glFmt.format, glFmt.pixelType, img); + } + }; + _proto._setImage = function _setImage(glFmt, options) { + var gl = this._device._gl; + var flipY = options.flipY; + var premultiplyAlpha = options.premultiplyAlpha; + var img = options.image; + if (!img || ArrayBuffer.isView(img) || img instanceof ArrayBuffer) { + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + this._compressed ? gl.compressedTexImage2D(gl.TEXTURE_2D, options.level, glFmt.internalFormat, options.width, options.height, 0, img) : gl.texImage2D(gl.TEXTURE_2D, options.level, glFmt.internalFormat, options.width, options.height, 0, glFmt.format, glFmt.pixelType, img); + } else { + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + gl.texImage2D(gl.TEXTURE_2D, options.level, glFmt.internalFormat, glFmt.format, glFmt.pixelType, img); + } + }; + _proto._setMipmap = function _setMipmap(images, flipY, premultiplyAlpha) { + var glFmt = (0, _enums.glTextureFmt)(this._format); + var options = { + width: this._width, + height: this._height, + flipY: flipY, + premultiplyAlpha: premultiplyAlpha, + level: 0, + image: null + }; + for (var i = 0; i < images.length; ++i) { + options.level = i; + options.width = this._width >> i; + options.height = this._height >> i; + options.image = images[i]; + this._setImage(glFmt, options); + } + }; + _proto._setTexInfo = function _setTexInfo() { + var gl = this._device._gl; + var pot = (0, _misc.isPow2)(this._width) && (0, _misc.isPow2)(this._height); + if (!pot && (this._wrapS !== _enums.enums.WRAP_CLAMP || this._wrapT !== _enums.enums.WRAP_CLAMP)) { + console.warn("WebGL1 doesn't support all wrap modes with NPOT textures"); + this._wrapS = _enums.enums.WRAP_CLAMP; + this._wrapT = _enums.enums.WRAP_CLAMP; + } + var mipFilter = this._genMipmap ? this._mipFilter : -1; + if (!pot && -1 !== mipFilter) { + console.warn("NPOT textures do not support mipmap filter"); + mipFilter = -1; + } + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, (0, _enums.glFilter)(gl, this._minFilter, mipFilter)); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, (0, _enums.glFilter)(gl, this._magFilter, -1)); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._wrapS); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._wrapT); + var ext = this._device.ext("EXT_texture_filter_anisotropic"); + ext && gl.texParameteri(gl.TEXTURE_2D, ext.TEXTURE_MAX_ANISOTROPY_EXT, this._anisotropy); + }; + return Texture2D; + })(_texture["default"]); + exports["default"] = Texture2D; + module.exports = exports["default"]; + }), { + "./enums": 369, + "./misc": 373, + "./texture": 379 + }], + 378: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _texture = _interopRequireDefault(require("./texture")); + var _enums = require("./enums"); + var _misc = require("./misc"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var TextureCube = (function (_Texture) { + _inheritsLoose(TextureCube, _Texture); + function TextureCube(device, options) { + var _this; + _this = _Texture.call(this, device) || this; + var gl = _this._device._gl; + _this._target = gl.TEXTURE_CUBE_MAP; + _this._glID = gl.createTexture(); + _this.update(options); + return _this; + } + var _proto = TextureCube.prototype; + _proto.update = function update(options) { + var gl = this._device._gl; + var genMipmaps = this._genMipmaps; + if (options) { + void 0 !== options.width && (this._width = options.width); + void 0 !== options.height && (this._height = options.height); + void 0 !== options.anisotropy && (this._anisotropy = options.anisotropy); + void 0 !== options.minFilter && (this._minFilter = options.minFilter); + void 0 !== options.magFilter && (this._magFilter = options.magFilter); + void 0 !== options.mipFilter && (this._mipFilter = options.mipFilter); + void 0 !== options.wrapS && (this._wrapS = options.wrapS); + void 0 !== options.wrapT && (this._wrapT = options.wrapT); + if (void 0 !== options.format) { + this._format = options.format; + this._compressed = this._format >= _enums.enums.TEXTURE_FMT_RGB_DXT1 && this._format <= _enums.enums.TEXTURE_FMT_RGBA_PVRTC_4BPPV1 || this._format >= _enums.enums.TEXTURE_FMT_RGB_ETC2 && this._format <= _enums.enums.TEXTURE_FMT_RGBA_ETC2; + } + if (void 0 !== options.genMipmaps) { + this._genMipmaps = options.genMipmaps; + genMipmaps = options.genMipmaps; + } + if (void 0 !== options.images && options.images.length > 1) { + genMipmaps = false; + options.width !== options.height && console.warn("texture-cube width and height should be identical."); + options.width >> options.images.length - 1 !== 1 && console.error("texture-cube mipmap is invalid. please set mipmap as 1x1, 2x2, 4x4 ... nxn"); + } + } + var pot = (0, _misc.isPow2)(this._width) && (0, _misc.isPow2)(this._height); + pot || (genMipmaps = false); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this._glID); + if (void 0 !== options.images && options.images.length > 0) { + this._setMipmap(options.images, options.flipY, options.premultiplyAlpha); + options.images.length > 1 && (this._genMipmaps = true); + } + if (genMipmaps) { + gl.hint(gl.GENERATE_MIPMAP_HINT, gl.NICEST); + gl.generateMipmap(gl.TEXTURE_CUBE_MAP); + this._genMipmaps = true; + } + this._setTexInfo(); + this._device._restoreTexture(0); + }; + _proto.updateSubImage = function updateSubImage(options) { + var gl = this._device._gl; + var glFmt = (0, _enums.glTextureFmt)(this._format); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this._glID); + this._setSubImage(glFmt, options); + this._device._restoreTexture(0); + }; + _proto.updateImage = function updateImage(options) { + var gl = this._device._gl; + var glFmt = (0, _enums.glTextureFmt)(this._format); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this._glID); + this._setImage(glFmt, options); + this._device._restoreTexture(0); + }; + _proto._setSubImage = function _setSubImage(glFmt, options) { + var gl = this._device._gl; + var flipY = options.flipY; + var premultiplyAlpha = options.premultiplyAlpha; + var faceIndex = options.faceIndex; + var img = options.image; + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + !img || ArrayBuffer.isView(img) || img instanceof ArrayBuffer ? this._compressed ? gl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, options.x, options.y, options.width, options.height, glFmt.format, img) : gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, options.x, options.y, options.width, options.height, glFmt.format, glFmt.pixelType, img) : gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, options.x, options.y, glFmt.format, glFmt.pixelType, img); + }; + _proto._setImage = function _setImage(glFmt, options) { + var gl = this._device._gl; + var flipY = options.flipY; + var premultiplyAlpha = options.premultiplyAlpha; + var faceIndex = options.faceIndex; + var img = options.image; + void 0 === flipY ? gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false) : gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + void 0 === premultiplyAlpha ? gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false) : gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + !img || ArrayBuffer.isView(img) || img instanceof ArrayBuffer ? this._compressed ? gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, glFmt.internalFormat, options.width, options.height, 0, img) : gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, glFmt.internalFormat, options.width, options.height, 0, glFmt.format, glFmt.pixelType, img) : gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, options.level, glFmt.internalFormat, glFmt.format, glFmt.pixelType, img); + }; + _proto._setMipmap = function _setMipmap(images, flipY, premultiplyAlpha) { + var glFmt = (0, _enums.glTextureFmt)(this._format); + var options = { + width: this._width, + height: this._height, + faceIndex: 0, + flipY: flipY, + premultiplyAlpha: premultiplyAlpha, + level: 0, + image: null + }; + for (var i = 0; i < images.length; ++i) { + var levelImages = images[i]; + options.level = i; + options.width = this._width >> i; + options.height = this._height >> i; + for (var face = 0; face < 6; ++face) { + options.faceIndex = face; + options.image = levelImages[face]; + this._setImage(glFmt, options); + } + } + }; + _proto._setTexInfo = function _setTexInfo() { + var gl = this._device._gl; + var pot = (0, _misc.isPow2)(this._width) && (0, _misc.isPow2)(this._height); + if (!pot && (this._wrapS !== _enums.enums.WRAP_CLAMP || this._wrapT !== _enums.enums.WRAP_CLAMP)) { + console.warn("WebGL1 doesn't support all wrap modes with NPOT textures"); + this._wrapS = _enums.enums.WRAP_CLAMP; + this._wrapT = _enums.enums.WRAP_CLAMP; + } + var mipFilter = this._genMipmaps ? this._mipFilter : -1; + if (!pot && -1 !== mipFilter) { + console.warn("NPOT textures do not support mipmap filter"); + mipFilter = -1; + } + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, (0, _enums.glFilter)(gl, this._minFilter, mipFilter)); + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, (0, _enums.glFilter)(gl, this._magFilter, -1)); + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, this._wrapS); + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, this._wrapT); + var ext = this._device.ext("EXT_texture_filter_anisotropic"); + ext && gl.texParameteri(gl.TEXTURE_CUBE_MAP, ext.TEXTURE_MAX_ANISOTROPY_EXT, this._anisotropy); + }; + return TextureCube; + })(_texture["default"]); + exports["default"] = TextureCube; + module.exports = exports["default"]; + }), { + "./enums": 369, + "./misc": 373, + "./texture": 379 + }], + 379: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + var _nullWebGLTexture = null; + var _textureID = 0; + var Texture = (function () { + function Texture(device) { + this._device = device; + this._width = 4; + this._height = 4; + this._genMipmaps = false; + this._compressed = false; + this._anisotropy = 1; + this._minFilter = _enums.enums.FILTER_LINEAR; + this._magFilter = _enums.enums.FILTER_LINEAR; + this._mipFilter = _enums.enums.FILTER_LINEAR; + this._wrapS = _enums.enums.WRAP_REPEAT; + this._wrapT = _enums.enums.WRAP_REPEAT; + this._format = _enums.enums.TEXTURE_FMT_RGBA8; + this._target = -1; + this._id = _textureID++; + } + var _proto = Texture.prototype; + _proto.destroy = function destroy() { + if (this._glID === _nullWebGLTexture) { + console.error("The texture already destroyed"); + return; + } + var gl = this._device._gl; + gl.deleteTexture(this._glID); + this._device._stats.tex -= this.bytes; + this._glID = _nullWebGLTexture; + }; + return Texture; + })(); + exports["default"] = Texture; + module.exports = exports["default"]; + }), { + "./enums": 369 + }], + 380: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var VertexBuffer = (function () { + function VertexBuffer(device, format, usage, data) { + this._device = device; + this._format = format; + this._usage = usage; + this._bytesPerVertex = this._format._bytes; + this._bytes = data.byteLength; + this._numVertices = this._bytes / this._bytesPerVertex; + this._needExpandDataStore = true; + this._glID = device._gl.createBuffer(); + this.update(0, data); + device._stats.vb += this._bytes; + } + var _proto = VertexBuffer.prototype; + _proto.destroy = function destroy() { + if (-1 === this._glID) { + console.error("The buffer already destroyed"); + return; + } + var gl = this._device._gl; + gl.deleteBuffer(this._glID); + this._device._stats.vb -= this.bytes; + this._glID = -1; + }; + _proto.update = function update(byteOffset, data) { + if (-1 === this._glID) { + console.error("The buffer is destroyed"); + return; + } + if (0 === data.byteLength) return; + if (byteOffset + data.byteLength > this._bytes) { + if (byteOffset) { + console.error("Failed to update data, bytes exceed."); + return; + } + this._needExpandDataStore = true; + this._bytes = byteOffset + data.byteLength; + this._numVertices = this._bytes / this._bytesPerVertex; + } + var gl = this._device._gl; + var glUsage = this._usage; + gl.bindBuffer(gl.ARRAY_BUFFER, this._glID); + if (this._needExpandDataStore) { + gl.bufferData(gl.ARRAY_BUFFER, data, glUsage); + this._needExpandDataStore = false; + } else gl.bufferSubData(gl.ARRAY_BUFFER, byteOffset, data); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + }; + _proto.getFormat = function getFormat(name) { + return this._format.element(name); + }; + _proto.setUsage = function setUsage(usage) { + this._usage = usage; + }; + _createClass(VertexBuffer, [{ + key: "count", + get: function get() { + return this._numVertices; + } + }]); + return VertexBuffer; + })(); + var _default = VertexBuffer; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "./enums": 369 + }], + 381: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _enums = require("./enums"); + var _murmurhash2_gc = _interopRequireDefault(require("../murmurhash2_gc")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var VertexFormat = (function () { + function VertexFormat(infos) { + this._attr2el = {}; + this._elements = []; + this._bytes = 0; + var hash = ""; + for (var i = 0, len = infos.length; i < len; ++i) { + var info = infos[i]; + var el = { + name: info.name, + offset: this._bytes, + stride: 0, + stream: -1, + type: info.type, + num: info.num, + normalize: void 0 !== info.normalize && info.normalize, + bytes: info.num * (0, _enums.attrTypeBytes)(info.type) + }; + this._attr2el[el.name] = el; + this._elements.push(el); + this._bytes += el.bytes; + hash += el.name + ":" + el.num + ":" + el.type + ":" + el.normalize; + } + for (var _i = 0, _len = this._elements.length; _i < _len; ++_i) { + var _el = this._elements[_i]; + _el.stride = this._bytes; + } + this._hash = (0, _murmurhash2_gc["default"])(hash, 666); + } + var _proto = VertexFormat.prototype; + _proto.element = function element(attrName) { + return this._attr2el[attrName]; + }; + _proto.getHash = function getHash() { + return this._hash; + }; + return VertexFormat; + })(); + exports["default"] = VertexFormat; + module.exports = exports["default"]; + }), { + "../murmurhash2_gc": 390, + "./enums": 369 + }], + 382: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var CircularPool = (function () { + function CircularPool(fn, size) { + this._cursor = 0; + this._data = new Array(size); + for (var i = 0; i < size; ++i) this._data[i] = fn(); + } + var _proto = CircularPool.prototype; + _proto.request = function request() { + var item = this._data[this._cursor]; + this._cursor = (this._cursor + 1) % this._data.length; + return item; + }; + return CircularPool; + })(); + exports["default"] = CircularPool; + module.exports = exports["default"]; + }), {}], + 383: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _timsort = _interopRequireDefault(require("./timsort")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var FixedArray = (function () { + function FixedArray(size) { + this._count = 0; + this._data = new Array(size); + } + var _proto = FixedArray.prototype; + _proto._resize = function _resize(size) { + if (size > this._data.length) for (var i = this._data.length; i < size; ++i) this._data[i] = void 0; + }; + _proto.reset = function reset() { + for (var i = 0; i < this._count; ++i) this._data[i] = void 0; + this._count = 0; + }; + _proto.push = function push(val) { + this._count >= this._data.length && this._resize(2 * this._data.length); + this._data[this._count] = val; + ++this._count; + }; + _proto.pop = function pop() { + --this._count; + this._count < 0 && (this._count = 0); + var ret = this._data[this._count]; + this._data[this._count] = void 0; + return ret; + }; + _proto.fastRemove = function fastRemove(idx) { + if (idx >= this._count || idx < 0) return; + var last = this._count - 1; + this._data[idx] = this._data[last]; + this._data[last] = void 0; + this._count -= 1; + }; + _proto.indexOf = function indexOf(val) { + return this._data.indexOf(val); + }; + _proto.sort = function sort(cmp) { + return (0, _timsort["default"])(this._data, 0, this._count, cmp); + }; + _createClass(FixedArray, [{ + key: "length", + get: function get() { + return this._count; + } + }, { + key: "data", + get: function get() { + return this._data; + } + }]); + return FixedArray; + })(); + exports["default"] = FixedArray; + module.exports = exports["default"]; + }), { + "./timsort": 388 + }], + 384: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.TypedArrayPool = exports.RecyclePool = exports.Pool = exports.LinkedArray = exports.FixedArray = exports.CircularPool = void 0; + var _circularPool = _interopRequireDefault(require("./circular-pool")); + exports.CircularPool = _circularPool["default"]; + var _fixedArray = _interopRequireDefault(require("./fixed-array")); + exports.FixedArray = _fixedArray["default"]; + var _linkedArray = _interopRequireDefault(require("./linked-array")); + exports.LinkedArray = _linkedArray["default"]; + var _pool = _interopRequireDefault(require("./pool")); + exports.Pool = _pool["default"]; + var _recyclePool = _interopRequireDefault(require("./recycle-pool")); + exports.RecyclePool = _recyclePool["default"]; + var _typedArrayPool = _interopRequireDefault(require("./typed-array-pool")); + exports.TypedArrayPool = _typedArrayPool["default"]; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + }), { + "./circular-pool": 382, + "./fixed-array": 383, + "./linked-array": 385, + "./pool": 386, + "./recycle-pool": 387, + "./typed-array-pool": 389 + }], + 385: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _pool = _interopRequireDefault(require("./pool")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var LinkedArray = (function () { + function LinkedArray(fn, size) { + this._fn = fn; + this._count = 0; + this._head = null; + this._tail = null; + this._pool = new _pool["default"](fn, size); + } + var _proto = LinkedArray.prototype; + _proto.add = function add() { + var node = this._pool.alloc(); + if (this._tail) { + this._tail._next = node; + node._prev = this._tail; + } else this._head = node; + this._tail = node; + this._count += 1; + return node; + }; + _proto.remove = function remove(node) { + node._prev ? node._prev._next = node._next : this._head = node._next; + node._next ? node._next._prev = node._prev : this._tail = node._prev; + node._next = null; + node._prev = null; + this._pool.free(node); + this._count -= 1; + }; + _proto.forEach = function forEach(fn, binder) { + var cursor = this._head; + if (!cursor) return; + binder && (fn = fn.bind(binder)); + var idx = 0; + var next = cursor; + while (cursor) { + next = cursor._next; + fn(cursor, idx, this); + cursor = next; + ++idx; + } + }; + _createClass(LinkedArray, [{ + key: "head", + get: function get() { + return this._head; + } + }, { + key: "tail", + get: function get() { + return this._tail; + } + }, { + key: "length", + get: function get() { + return this._count; + } + }]); + return LinkedArray; + })(); + exports["default"] = LinkedArray; + module.exports = exports["default"]; + }), { + "./pool": 386 + }], + 386: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var Pool = (function () { + function Pool(fn, size) { + this._fn = fn; + this._idx = size - 1; + this._frees = new Array(size); + for (var i = 0; i < size; ++i) this._frees[i] = fn(); + } + var _proto = Pool.prototype; + _proto._expand = function _expand(size) { + var old = this._frees; + this._frees = new Array(size); + var len = size - old.length; + for (var i = 0; i < len; ++i) this._frees[i] = this._fn(); + for (var _i = len, j = 0; _i < size; ++_i, ++j) this._frees[_i] = old[j]; + this._idx += len; + }; + _proto.alloc = function alloc() { + this._idx < 0 && this._expand(Math.round(1.2 * this._frees.length) + 1); + var ret = this._frees[this._idx]; + this._frees[this._idx] = null; + --this._idx; + return ret; + }; + _proto.free = function free(obj) { + ++this._idx; + this._frees[this._idx] = obj; + }; + _proto.clear = function clear(fn) { + for (var i = 0; i <= this._idx; i++) fn && fn(this._frees[i]); + this._frees.length = 0; + this._idx = -1; + }; + return Pool; + })(); + exports["default"] = Pool; + module.exports = exports["default"]; + }), {}], + 387: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _timsort = _interopRequireDefault(require("./timsort")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var RecyclePool = (function () { + function RecyclePool(fn, size) { + this._fn = fn; + this._count = 0; + this._data = new Array(size); + for (var i = 0; i < size; ++i) this._data[i] = fn(); + } + var _proto = RecyclePool.prototype; + _proto.reset = function reset() { + this._count = 0; + }; + _proto.resize = function resize(size) { + if (size > this._data.length) for (var i = this._data.length; i < size; ++i) this._data[i] = this._fn(); + }; + _proto.add = function add() { + this._count >= this._data.length && this.resize(2 * this._data.length); + return this._data[this._count++]; + }; + _proto.remove = function remove(idx) { + if (idx >= this._count) return; + var last = this._count - 1; + var tmp = this._data[idx]; + this._data[idx] = this._data[last]; + this._data[last] = tmp; + this._count -= 1; + }; + _proto.sort = function sort(cmp) { + return (0, _timsort["default"])(this._data, 0, this._count, cmp); + }; + _createClass(RecyclePool, [{ + key: "length", + get: function get() { + return this._count; + } + }, { + key: "data", + get: function get() { + return this._data; + } + }]); + return RecyclePool; + })(); + exports["default"] = RecyclePool; + cc.RecyclePool = RecyclePool; + module.exports = exports["default"]; + }), { + "./timsort": 388 + }], + 388: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = _default; + var DEFAULT_MIN_MERGE = 32; + var DEFAULT_MIN_GALLOPING = 7; + var DEFAULT_TMP_STORAGE_LENGTH = 256; + var POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9]; + function log10(x) { + if (x < 1e5) { + if (x < 100) return x < 10 ? 0 : 1; + if (x < 1e4) return x < 1e3 ? 2 : 3; + return 4; + } + if (x < 1e7) return x < 1e6 ? 5 : 6; + if (x < 1e9) return x < 1e8 ? 7 : 8; + return 9; + } + function alphabeticalCompare(a, b) { + if (a === b) return 0; + if (~~a === a && ~~b === b) { + if (0 === a || 0 === b) return a < b ? -1 : 1; + if (a < 0 || b < 0) { + if (b >= 0) return -1; + if (a >= 0) return 1; + a = -a; + b = -b; + } + var al = log10(a); + var bl = log10(b); + var t = 0; + if (al < bl) { + a *= POWERS_OF_TEN[bl - al - 1]; + b /= 10; + t = -1; + } else if (al > bl) { + b *= POWERS_OF_TEN[al - bl - 1]; + a /= 10; + t = 1; + } + if (a === b) return t; + return a < b ? -1 : 1; + } + var aStr = String(a); + var bStr = String(b); + if (aStr === bStr) return 0; + return aStr < bStr ? -1 : 1; + } + function minRunLength(n) { + var r = 0; + while (n >= DEFAULT_MIN_MERGE) { + r |= 1 & n; + n >>= 1; + } + return n + r; + } + function makeAscendingRun(array, lo, hi, compare) { + var runHi = lo + 1; + if (runHi === hi) return 1; + if (compare(array[runHi++], array[lo]) < 0) { + while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) runHi++; + reverseRun(array, lo, runHi); + } else while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) runHi++; + return runHi - lo; + } + function reverseRun(array, lo, hi) { + hi--; + while (lo < hi) { + var t = array[lo]; + array[lo++] = array[hi]; + array[hi--] = t; + } + } + function binaryInsertionSort(array, lo, hi, start, compare) { + start === lo && start++; + for (; start < hi; start++) { + var pivot = array[start]; + var left = lo; + var right = start; + while (left < right) { + var mid = left + right >>> 1; + compare(pivot, array[mid]) < 0 ? right = mid : left = mid + 1; + } + var n = start - left; + switch (n) { + case 3: + array[left + 3] = array[left + 2]; + + case 2: + array[left + 2] = array[left + 1]; + + case 1: + array[left + 1] = array[left]; + break; + + default: + while (n > 0) { + array[left + n] = array[left + n - 1]; + n--; + } + } + array[left] = pivot; + } + } + function gallopLeft(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + if (compare(value, array[start + hint]) > 0) { + maxOffset = length - hint; + while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) { + lastOffset = offset; + offset = 1 + (offset << 1); + offset <= 0 && (offset = maxOffset); + } + offset > maxOffset && (offset = maxOffset); + lastOffset += hint; + offset += hint; + } else { + maxOffset = hint + 1; + while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) { + lastOffset = offset; + offset = 1 + (offset << 1); + offset <= 0 && (offset = maxOffset); + } + offset > maxOffset && (offset = maxOffset); + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } + lastOffset++; + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + compare(value, array[start + m]) > 0 ? lastOffset = m + 1 : offset = m; + } + return offset; + } + function gallopRight(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + if (compare(value, array[start + hint]) < 0) { + maxOffset = hint + 1; + while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) { + lastOffset = offset; + offset = 1 + (offset << 1); + offset <= 0 && (offset = maxOffset); + } + offset > maxOffset && (offset = maxOffset); + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } else { + maxOffset = length - hint; + while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) { + lastOffset = offset; + offset = 1 + (offset << 1); + offset <= 0 && (offset = maxOffset); + } + offset > maxOffset && (offset = maxOffset); + lastOffset += hint; + offset += hint; + } + lastOffset++; + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + compare(value, array[start + m]) < 0 ? offset = m : lastOffset = m + 1; + } + return offset; + } + var TimSort = (function () { + function TimSort(array, compare) { + this.array = array; + this.compare = compare; + this.minGallop = DEFAULT_MIN_GALLOPING; + this.length = array.length; + this.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH; + this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH && (this.tmpStorageLength = this.length >>> 1); + this.tmp = new Array(this.tmpStorageLength); + this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40; + this.runStart = new Array(this.stackLength); + this.runLength = new Array(this.stackLength); + this.stackSize = 0; + } + var _proto = TimSort.prototype; + _proto.pushRun = function pushRun(runStart, runLength) { + this.runStart[this.stackSize] = runStart; + this.runLength[this.stackSize] = runLength; + this.stackSize += 1; + }; + _proto.mergeRuns = function mergeRuns() { + while (this.stackSize > 1) { + var n = this.stackSize - 2; + if (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) this.runLength[n - 1] < this.runLength[n + 1] && n--; else if (this.runLength[n] > this.runLength[n + 1]) break; + this.mergeAt(n); + } + }; + _proto.forceMergeRuns = function forceMergeRuns() { + while (this.stackSize > 1) { + var n = this.stackSize - 2; + n > 0 && this.runLength[n - 1] < this.runLength[n + 1] && n--; + this.mergeAt(n); + } + }; + _proto.mergeAt = function mergeAt(i) { + var compare = this.compare; + var array = this.array; + var start1 = this.runStart[i]; + var length1 = this.runLength[i]; + var start2 = this.runStart[i + 1]; + var length2 = this.runLength[i + 1]; + this.runLength[i] = length1 + length2; + if (i === this.stackSize - 3) { + this.runStart[i + 1] = this.runStart[i + 2]; + this.runLength[i + 1] = this.runLength[i + 2]; + } + this.stackSize--; + var k = gallopRight(array[start2], array, start1, length1, 0, compare); + start1 += k; + length1 -= k; + if (0 === length1) return; + length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare); + if (0 === length2) return; + length1 <= length2 ? this.mergeLow(start1, length1, start2, length2) : this.mergeHigh(start1, length1, start2, length2); + }; + _proto.mergeLow = function mergeLow(start1, length1, start2, length2) { + var compare = this.compare; + var array = this.array; + var tmp = this.tmp; + var i = 0; + for (i = 0; i < length1; i++) tmp[i] = array[start1 + i]; + var cursor1 = 0; + var cursor2 = start2; + var dest = start1; + array[dest++] = array[cursor2++]; + if (0 === --length2) { + for (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i]; + return; + } + if (1 === length1) { + for (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i]; + array[dest + length2] = tmp[cursor1]; + return; + } + var minGallop = this.minGallop; + while (true) { + var count1 = 0; + var count2 = 0; + var exit = false; + do { + if (compare(array[cursor2], tmp[cursor1]) < 0) { + array[dest++] = array[cursor2++]; + count2++; + count1 = 0; + if (0 === --length2) { + exit = true; + break; + } + } else { + array[dest++] = tmp[cursor1++]; + count1++; + count2 = 0; + if (1 === --length1) { + exit = true; + break; + } + } + } while ((count1 | count2) < minGallop); + if (exit) break; + do { + count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare); + if (0 !== count1) { + for (i = 0; i < count1; i++) array[dest + i] = tmp[cursor1 + i]; + dest += count1; + cursor1 += count1; + length1 -= count1; + if (length1 <= 1) { + exit = true; + break; + } + } + array[dest++] = array[cursor2++]; + if (0 === --length2) { + exit = true; + break; + } + count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare); + if (0 !== count2) { + for (i = 0; i < count2; i++) array[dest + i] = array[cursor2 + i]; + dest += count2; + cursor2 += count2; + length2 -= count2; + if (0 === length2) { + exit = true; + break; + } + } + array[dest++] = tmp[cursor1++]; + if (1 === --length1) { + exit = true; + break; + } + minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + if (exit) break; + minGallop < 0 && (minGallop = 0); + minGallop += 2; + } + this.minGallop = minGallop; + minGallop < 1 && (this.minGallop = 1); + if (1 === length1) { + for (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i]; + array[dest + length2] = tmp[cursor1]; + } else { + if (0 === length1) throw new Error("mergeLow preconditions were not respected"); + for (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i]; + } + }; + _proto.mergeHigh = function mergeHigh(start1, length1, start2, length2) { + var compare = this.compare; + var array = this.array; + var tmp = this.tmp; + var i = 0; + for (i = 0; i < length2; i++) tmp[i] = array[start2 + i]; + var cursor1 = start1 + length1 - 1; + var cursor2 = length2 - 1; + var dest = start2 + length2 - 1; + var customCursor = 0; + var customDest = 0; + array[dest--] = array[cursor1--]; + if (0 === --length1) { + customCursor = dest - (length2 - 1); + for (i = 0; i < length2; i++) array[customCursor + i] = tmp[i]; + return; + } + if (1 === length2) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i]; + array[dest] = tmp[cursor2]; + return; + } + var minGallop = this.minGallop; + while (true) { + var count1 = 0; + var count2 = 0; + var exit = false; + do { + if (compare(tmp[cursor2], array[cursor1]) < 0) { + array[dest--] = array[cursor1--]; + count1++; + count2 = 0; + if (0 === --length1) { + exit = true; + break; + } + } else { + array[dest--] = tmp[cursor2--]; + count2++; + count1 = 0; + if (1 === --length2) { + exit = true; + break; + } + } + } while ((count1 | count2) < minGallop); + if (exit) break; + do { + count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare); + if (0 !== count1) { + dest -= count1; + cursor1 -= count1; + length1 -= count1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = count1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i]; + if (0 === length1) { + exit = true; + break; + } + } + array[dest--] = tmp[cursor2--]; + if (1 === --length2) { + exit = true; + break; + } + count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare); + if (0 !== count2) { + dest -= count2; + cursor2 -= count2; + length2 -= count2; + customDest = dest + 1; + customCursor = cursor2 + 1; + for (i = 0; i < count2; i++) array[customDest + i] = tmp[customCursor + i]; + if (length2 <= 1) { + exit = true; + break; + } + } + array[dest--] = array[cursor1--]; + if (0 === --length1) { + exit = true; + break; + } + minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + if (exit) break; + minGallop < 0 && (minGallop = 0); + minGallop += 2; + } + this.minGallop = minGallop; + minGallop < 1 && (this.minGallop = 1); + if (1 === length2) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i]; + array[dest] = tmp[cursor2]; + } else { + if (0 === length2) throw new Error("mergeHigh preconditions were not respected"); + customCursor = dest - (length2 - 1); + for (i = 0; i < length2; i++) array[customCursor + i] = tmp[i]; + } + }; + return TimSort; + })(); + function _default(array, lo, hi, compare) { + if (!Array.isArray(array)) throw new TypeError("Can only sort arrays"); + void 0 === lo && (lo = 0); + void 0 === hi && (hi = array.length); + void 0 === compare && (compare = alphabeticalCompare); + var remaining = hi - lo; + if (remaining < 2) return; + var runLength = 0; + if (remaining < DEFAULT_MIN_MERGE) { + runLength = makeAscendingRun(array, lo, hi, compare); + binaryInsertionSort(array, lo, hi, lo + runLength, compare); + return; + } + var ts = new TimSort(array, compare); + var minRun = minRunLength(remaining); + do { + runLength = makeAscendingRun(array, lo, hi, compare); + if (runLength < minRun) { + var force = remaining; + force > minRun && (force = minRun); + binaryInsertionSort(array, lo, lo + force, lo + runLength, compare); + runLength = force; + } + ts.pushRun(lo, runLength); + ts.mergeRuns(); + remaining -= runLength; + lo += runLength; + } while (0 !== remaining); + ts.forceMergeRuns(); + } + module.exports = exports["default"]; + }), {}], + 389: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _bufferPools = Array(8); + for (var i = 0; i < 8; ++i) _bufferPools[i] = []; + function _nextPow16(v) { + for (var _i = 16; _i <= 1 << 28; _i *= 16) if (v <= _i) return _i; + return 0; + } + function _log2(v) { + var r, shift; + r = (v > 65535) << 4; + v >>>= r; + shift = (v > 255) << 3; + v >>>= shift; + r |= shift; + shift = (v > 15) << 2; + v >>>= shift; + r |= shift; + shift = (v > 3) << 1; + v >>>= shift; + r |= shift; + return r | v >> 1; + } + function _alloc(n) { + var sz = _nextPow16(n); + var bin = _bufferPools[_log2(sz) >> 2]; + if (bin.length > 0) return bin.pop(); + return new ArrayBuffer(sz); + } + function _free(buf) { + _bufferPools[_log2(buf.byteLength) >> 2].push(buf); + } + var _default = { + alloc_int8: function alloc_int8(n) { + var result = new Int8Array(_alloc(n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_uint8: function alloc_uint8(n) { + var result = new Uint8Array(_alloc(n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_int16: function alloc_int16(n) { + var result = new Int16Array(_alloc(2 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_uint16: function alloc_uint16(n) { + var result = new Uint16Array(_alloc(2 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_int32: function alloc_int32(n) { + var result = new Int32Array(_alloc(4 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_uint32: function alloc_uint32(n) { + var result = new Uint32Array(_alloc(4 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_float32: function alloc_float32(n) { + var result = new Float32Array(_alloc(4 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_float64: function alloc_float64(n) { + var result = new Float64Array(_alloc(8 * n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + alloc_dataview: function alloc_dataview(n) { + var result = new DataView(_alloc(n), 0, n); + if (result.length !== n) return result.subarray(0, n); + return result; + }, + free: function free(array) { + _free(array.buffer); + }, + reset: function reset() { + var _bufferPools = Array(8); + for (var _i2 = 0; _i2 < 8; ++_i2) _bufferPools[_i2] = []; + } + }; + exports["default"] = _default; + module.exports = exports["default"]; + }), {}], + 390: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = murmurhash2_32_gc; + function murmurhash2_32_gc(str, seed) { + var l = str.length, h = seed ^ l, i = 0, k; + while (l >= 4) { + k = 255 & str.charCodeAt(i) | (255 & str.charCodeAt(++i)) << 8 | (255 & str.charCodeAt(++i)) << 16 | (255 & str.charCodeAt(++i)) << 24; + k = 1540483477 * (65535 & k) + ((1540483477 * (k >>> 16) & 65535) << 16); + k ^= k >>> 24; + k = 1540483477 * (65535 & k) + ((1540483477 * (k >>> 16) & 65535) << 16); + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16) ^ k; + l -= 4; + ++i; + } + switch (l) { + case 3: + h ^= (255 & str.charCodeAt(i + 2)) << 16; + + case 2: + h ^= (255 & str.charCodeAt(i + 1)) << 8; + + case 1: + h ^= 255 & str.charCodeAt(i); + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16); + } + h ^= h >>> 13; + h = 1540483477 * (65535 & h) + ((1540483477 * (h >>> 16) & 65535) << 16); + h ^= h >>> 15; + return h >>> 0; + } + module.exports = exports["default"]; + }), {}], + 391: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../core/value-types"); + var _baseRenderer = _interopRequireDefault(require("../core/base-renderer")); + var _enums = _interopRequireDefault(require("../enums")); + var _memop = require("../memop"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _assertThisInitialized(self) { + if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return self; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var _a16_view = new Float32Array(16); + var _a16_view_inv = new Float32Array(16); + var _a16_proj = new Float32Array(16); + var _a16_viewProj = new Float32Array(16); + var _a4_camPos = new Float32Array(4); + var _a64_shadow_lightViewProj = new Float32Array(64); + var _a16_shadow_lightViewProjs = []; + var _a4_shadow_info = new Float32Array(4); + var _camPos = new _valueTypes.Vec4(0, 0, 0, 0); + var _camFwd = new _valueTypes.Vec3(0, 0, 0); + var _v3_tmp1 = new _valueTypes.Vec3(0, 0, 0); + var CC_MAX_LIGHTS = 4; + var CC_MAX_SHADOW_LIGHTS = 2; + var _float16_pool = new _memop.RecyclePool(function () { + return new Float32Array(16); + }, 8); + function sortView(a, b) { + return a._priority - b._priority; + } + var ForwardRenderer = (function (_BaseRenderer) { + _inheritsLoose(ForwardRenderer, _BaseRenderer); + function ForwardRenderer(device, builtin) { + var _this; + _this = _BaseRenderer.call(this, device, builtin) || this; + _this._time = new Float32Array(4); + _this._lights = []; + _this._shadowLights = []; + _this._numLights = 0; + _this._defines = {}; + _this._registerStage("shadowcast", _this._shadowStage.bind(_assertThisInitialized(_this))); + _this._registerStage("opaque", _this._opaqueStage.bind(_assertThisInitialized(_this))); + _this._registerStage("transparent", _this._transparentStage.bind(_assertThisInitialized(_this))); + return _this; + } + var _proto = ForwardRenderer.prototype; + _proto.reset = function reset() { + _float16_pool.reset(); + _BaseRenderer.prototype.reset.call(this); + }; + _proto.render = function render(scene, dt) { + this.reset(); + true; + if (dt) { + this._time[0] += dt; + this._time[1] = dt; + this._time[2]++; + } + this._device.setUniform("cc_time", this._time); + this._updateLights(scene); + var canvas = this._device._gl.canvas; + for (var i = 0; i < scene._cameras.length; ++i) { + var view = this._requestView(); + var width = canvas.width; + var height = canvas.height; + var camera = scene._cameras.data[i]; + camera.extractView(view, width, height); + } + this._viewPools.sort(sortView); + for (var _i = 0; _i < this._viewPools.length; ++_i) { + var _view = this._viewPools.data[_i]; + this._render(_view, scene); + } + }; + _proto.renderCamera = function renderCamera(camera, scene) { + this.reset(); + this._updateLights(scene); + var canvas = this._device._gl.canvas; + var width = canvas.width; + var height = canvas.height; + var view = this._requestView(); + camera.extractView(view, width, height); + this._viewPools.sort(sortView); + for (var i = 0; i < this._viewPools.length; ++i) { + var _view2 = this._viewPools.data[i]; + this._render(_view2, scene); + } + }; + _proto._updateLights = function _updateLights(scene) { + this._lights.length = 0; + this._shadowLights.length = 0; + var lights = scene._lights; + for (var i = 0; i < lights.length; ++i) { + var light = lights.data[i]; + light.update(this._device); + if (light.shadowType !== _enums["default"].SHADOW_NONE) { + this._shadowLights.length < CC_MAX_SHADOW_LIGHTS && this._shadowLights.splice(0, 0, light); + var view = this._requestView(); + light.extractView(view, ["shadowcast"]); + this._lights.splice(0, 0, light); + } else this._lights.push(light); + } + this._updateLightDefines(); + this._numLights = lights._count; + }; + _proto._updateLightDefines = function _updateLightDefines() { + var defines = this._defines; + for (var i = 0; i < this._lights.length; ++i) { + var light = this._lights[i]; + var lightKey = "CC_LIGHT_" + i + "_TYPE"; + var shadowKey = "CC_SHADOW_" + i + "_TYPE"; + if (defines[lightKey] !== light._type) { + defines[lightKey] = light._type; + this._definesChanged = true; + } + if (defines[shadowKey] !== light._shadowType) { + defines[shadowKey] = light._shadowType; + this._definesChanged = true; + } + } + var newCount = Math.min(CC_MAX_LIGHTS, this._lights.length); + if (defines.CC_NUM_LIGHTS !== newCount) { + defines.CC_NUM_LIGHTS = newCount; + this._definesChanged = true; + } + newCount = Math.min(CC_MAX_LIGHTS, this._shadowLights.length); + if (defines.CC_NUM_SHADOW_LIGHTS !== newCount) { + defines.CC_NUM_SHADOW_LIGHTS = newCount; + this._definesChanged = true; + } + }; + _proto._submitLightsUniforms = function _submitLightsUniforms() { + var device = this._device; + if (this._lights.length > 0) { + var positionAndRanges = _float16_pool.add(); + var directions = _float16_pool.add(); + var colors = _float16_pool.add(); + var lightNum = Math.min(CC_MAX_LIGHTS, this._lights.length); + for (var i = 0; i < lightNum; ++i) { + var light = this._lights[i]; + var index = 4 * i; + colors.set(light._colorUniform, index); + directions.set(light._directionUniform, index); + positionAndRanges.set(light._positionUniform, index); + positionAndRanges[index + 3] = light._range; + if (light._type === _enums["default"].LIGHT_SPOT) { + directions[index + 3] = light._spotUniform[0]; + colors[index + 3] = light._spotUniform[1]; + } else { + directions[index + 3] = 0; + colors[index + 3] = 0; + } + } + device.setUniform("cc_lightDirection", directions); + device.setUniform("cc_lightColor", colors); + device.setUniform("cc_lightPositionAndRange", positionAndRanges); + } + }; + _proto._submitShadowStageUniforms = function _submitShadowStageUniforms(view) { + var light = view._shadowLight; + var shadowInfo = _a4_shadow_info; + shadowInfo[0] = light.shadowMinDepth; + shadowInfo[1] = light.shadowMaxDepth; + shadowInfo[2] = light.shadowDepthScale; + shadowInfo[3] = light.shadowDarkness; + this._device.setUniform("cc_shadow_map_lightViewProjMatrix", _valueTypes.Mat4.toArray(_a16_viewProj, view._matViewProj)); + this._device.setUniform("cc_shadow_map_info", shadowInfo); + this._device.setUniform("cc_shadow_map_bias", light.shadowBias); + this._defines.CC_SHADOW_TYPE = light._shadowType; + }; + _proto._submitOtherStagesUniforms = function _submitOtherStagesUniforms() { + var shadowInfo = _float16_pool.add(); + for (var i = 0; i < this._shadowLights.length; ++i) { + var light = this._shadowLights[i]; + var view = _a16_shadow_lightViewProjs[i]; + view || (view = _a16_shadow_lightViewProjs[i] = new Float32Array(_a64_shadow_lightViewProj.buffer, 64 * i, 16)); + _valueTypes.Mat4.toArray(view, light.viewProjMatrix); + var index = 4 * i; + shadowInfo[index] = light.shadowMinDepth; + shadowInfo[index + 1] = light.shadowMaxDepth; + shadowInfo[index + 2] = light._shadowResolution; + shadowInfo[index + 3] = light.shadowDarkness; + } + this._device.setUniform("cc_shadow_lightViewProjMatrix", _a64_shadow_lightViewProj); + this._device.setUniform("cc_shadow_info", shadowInfo); + }; + _proto._sortItems = function _sortItems(items) { + items.sort((function (a, b) { + if (a.passes.length !== b.passes.length) return a.passes.length - b.passes.length; + return a.sortKey - b.sortKey; + })); + }; + _proto._shadowStage = function _shadowStage(view, items) { + this._submitShadowStageUniforms(view); + for (var i = 0; i < items.length; ++i) { + var item = items.data[i]; + item.effect.getDefine("CC_CASTING_SHADOW") && this._draw(item); + } + }; + _proto._drawItems = function _drawItems(view, items) { + var shadowLights = this._shadowLights; + if (0 === shadowLights.length && 0 === this._numLights) for (var i = 0; i < items.length; ++i) { + var item = items.data[i]; + this._draw(item); + } else for (var _i2 = 0; _i2 < items.length; ++_i2) { + var _item = items.data[_i2]; + for (var shadowIdx = 0; shadowIdx < shadowLights.length; ++shadowIdx) this._device.setTexture("cc_shadow_map_" + shadowIdx, shadowLights[shadowIdx].shadowMap, this._allocTextureUnit()); + this._draw(_item); + } + }; + _proto._opaqueStage = function _opaqueStage(view, items) { + view.getPosition(_camPos); + this._device.setUniform("cc_matView", _valueTypes.Mat4.toArray(_a16_view, view._matView)); + this._device.setUniform("cc_matViewInv", _valueTypes.Mat4.toArray(_a16_view_inv, view._matViewInv)); + this._device.setUniform("cc_matProj", _valueTypes.Mat4.toArray(_a16_proj, view._matProj)); + this._device.setUniform("cc_matViewProj", _valueTypes.Mat4.toArray(_a16_viewProj, view._matViewProj)); + this._device.setUniform("cc_cameraPos", _valueTypes.Vec4.toArray(_a4_camPos, _camPos)); + this._submitLightsUniforms(); + this._submitOtherStagesUniforms(); + this._drawItems(view, items); + }; + _proto._transparentStage = function _transparentStage(view, items) { + view.getPosition(_camPos); + view.getForward(_camFwd); + this._device.setUniform("cc_matView", _valueTypes.Mat4.toArray(_a16_view, view._matView)); + this._device.setUniform("cc_matViewInv", _valueTypes.Mat4.toArray(_a16_view_inv, view._matViewInv)); + this._device.setUniform("cc_matProj", _valueTypes.Mat4.toArray(_a16_proj, view._matProj)); + this._device.setUniform("cc_matViewProj", _valueTypes.Mat4.toArray(_a16_viewProj, view._matViewProj)); + this._device.setUniform("cc_cameraPos", _valueTypes.Vec4.toArray(_a4_camPos, _camPos)); + this._submitLightsUniforms(); + this._submitOtherStagesUniforms(); + for (var i = 0; i < items.length; ++i) { + var item = items.data[i]; + item.node.getWorldPosition(_v3_tmp1); + _valueTypes.Vec3.sub(_v3_tmp1, _v3_tmp1, _camPos); + item.sortKey = -_valueTypes.Vec3.dot(_v3_tmp1, _camFwd); + } + this._sortItems(items); + this._drawItems(view, items); + }; + return ForwardRenderer; + })(_baseRenderer["default"]); + exports["default"] = ForwardRenderer; + module.exports = exports["default"]; + }), { + "../../core/value-types": 339, + "../core/base-renderer": 361, + "../enums": 367, + "../memop": 384 + }], + 392: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../core/value-types"); + var _geomUtils = require("../../core/geom-utils"); + var _enums = _interopRequireDefault(require("../enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var _tmp_mat4 = new _valueTypes.Mat4(); + var _matView = new _valueTypes.Mat4(); + var _matViewInv = new _valueTypes.Mat4(); + var _matProj = new _valueTypes.Mat4(); + var _matViewProj = new _valueTypes.Mat4(); + var _matInvViewProj = new _valueTypes.Mat4(); + var _tmp_v3 = new _valueTypes.Vec3(); + var _tmp2_v3 = new _valueTypes.Vec3(); + var Camera = (function () { + function Camera() { + this._poolID = -1; + this._node = null; + this._projection = _enums["default"].PROJ_PERSPECTIVE; + this._priority = 0; + this._color = new _valueTypes.Vec4(.2, .3, .47, 1); + this._depth = 1; + this._stencil = 0; + this._clearFlags = _enums["default"].CLEAR_COLOR | _enums["default"].CLEAR_DEPTH; + this._clearModel = null; + this._stages = []; + this._framebuffer = null; + this._near = .01; + this._far = 1e3; + this._fov = Math.PI / 4; + this._rect = { + x: 0, + y: 0, + w: 1, + h: 1 + }; + this._orthoHeight = 10; + this._cullingMask = 4294967295; + } + var _proto = Camera.prototype; + _proto.setCullingMask = function setCullingMask(mask) { + this._cullingMask = mask; + }; + _proto.getNode = function getNode() { + return this._node; + }; + _proto.setNode = function setNode(node) { + this._node = node; + }; + _proto.getType = function getType() { + return this._projection; + }; + _proto.setType = function setType(type) { + this._projection = type; + }; + _proto.getPriority = function getPriority() { + return this._priority; + }; + _proto.setPriority = function setPriority(priority) { + this._priority = priority; + }; + _proto.getOrthoHeight = function getOrthoHeight() { + return this._orthoHeight; + }; + _proto.setOrthoHeight = function setOrthoHeight(val) { + this._orthoHeight = val; + }; + _proto.getFov = function getFov() { + return this._fov; + }; + _proto.setFov = function setFov(fov) { + this._fov = fov; + }; + _proto.getNear = function getNear() { + return this._near; + }; + _proto.setNear = function setNear(near) { + this._near = near; + }; + _proto.getFar = function getFar() { + return this._far; + }; + _proto.setFar = function setFar(far) { + this._far = far; + }; + _proto.getColor = function getColor(out) { + return _valueTypes.Vec4.copy(out, this._color); + }; + _proto.setColor = function setColor(r, g, b, a) { + _valueTypes.Vec4.set(this._color, r, g, b, a); + }; + _proto.getDepth = function getDepth() { + return this._depth; + }; + _proto.setDepth = function setDepth(depth) { + this._depth = depth; + }; + _proto.getStencil = function getStencil() { + return this._stencil; + }; + _proto.setStencil = function setStencil(stencil) { + this._stencil = stencil; + }; + _proto.getClearFlags = function getClearFlags() { + return this._clearFlags; + }; + _proto.setClearFlags = function setClearFlags(flags) { + this._clearFlags = flags; + }; + _proto.getRect = function getRect(out) { + out.x = this._rect.x; + out.y = this._rect.y; + out.w = this._rect.w; + out.h = this._rect.h; + return out; + }; + _proto.setRect = function setRect(x, y, w, h) { + this._rect.x = x; + this._rect.y = y; + this._rect.w = w; + this._rect.h = h; + }; + _proto.getStages = function getStages() { + return this._stages; + }; + _proto.setStages = function setStages(stages) { + this._stages = stages; + }; + _proto.getFramebuffer = function getFramebuffer() { + return this._framebuffer; + }; + _proto.setFrameBuffer = function setFrameBuffer(framebuffer) { + this._framebuffer = framebuffer; + }; + _proto._calcMatrices = function _calcMatrices(width, height) { + this._node.getWorldRT(_matViewInv); + _valueTypes.Mat4.invert(_matView, _matViewInv); + var aspect = width / height; + if (this._projection === _enums["default"].PROJ_PERSPECTIVE) _valueTypes.Mat4.perspective(_matProj, this._fov, aspect, this._near, this._far); else { + var x = this._orthoHeight * aspect; + var y = this._orthoHeight; + _valueTypes.Mat4.ortho(_matProj, -x, x, -y, y, this._near, this._far); + } + _valueTypes.Mat4.mul(_matViewProj, _matProj, _matView); + _valueTypes.Mat4.invert(_matInvViewProj, _matViewProj); + }; + _proto.extractView = function extractView(out, width, height) { + if (this._framebuffer) { + width = this._framebuffer._width; + height = this._framebuffer._height; + } + out._priority = this._priority; + out._rect.x = this._rect.x * width; + out._rect.y = this._rect.y * height; + out._rect.w = this._rect.w * width; + out._rect.h = this._rect.h * height; + this.getColor(out._color); + out._depth = this._depth; + out._stencil = this._stencil; + out._clearFlags = this._clearFlags; + out._clearModel = this._clearModel; + out._stages = this._stages; + out._framebuffer = this._framebuffer; + this._calcMatrices(width, height); + _valueTypes.Mat4.copy(out._matView, _matView); + _valueTypes.Mat4.copy(out._matViewInv, _matViewInv); + _valueTypes.Mat4.copy(out._matProj, _matProj); + _valueTypes.Mat4.copy(out._matViewProj, _matViewProj); + _valueTypes.Mat4.copy(out._matInvViewProj, _matInvViewProj); + out._cullingMask = this._cullingMask; + }; + _proto.screenPointToRay = function screenPointToRay(x, y, width, height, out) { + if (!cc.geomUtils) return out; + out = out || new _geomUtils.Ray(); + this._calcMatrices(width, height); + var cx = this._rect.x * width; + var cy = this._rect.y * height; + var cw = this._rect.w * width; + var ch = this._rect.h * height; + _valueTypes.Vec3.set(_tmp2_v3, (x - cx) / cw * 2 - 1, (y - cy) / ch * 2 - 1, 1); + _valueTypes.Vec3.transformMat4(_tmp2_v3, _tmp2_v3, _matInvViewProj); + if (this._projection === _enums["default"].PROJ_PERSPECTIVE) this._node.getWorldPosition(_tmp_v3); else { + _valueTypes.Vec3.set(_tmp_v3, (x - cx) / cw * 2 - 1, (y - cy) / ch * 2 - 1, -1); + _valueTypes.Vec3.transformMat4(_tmp_v3, _tmp_v3, _matInvViewProj); + } + return _geomUtils.Ray.fromPoints(out, _tmp_v3, _tmp2_v3); + }; + _proto.screenToWorld = function screenToWorld(out, screenPos, width, height) { + this._calcMatrices(width, height); + var cx = this._rect.x * width; + var cy = this._rect.y * height; + var cw = this._rect.w * width; + var ch = this._rect.h * height; + if (this._projection === _enums["default"].PROJ_PERSPECTIVE) { + _valueTypes.Vec3.set(out, (screenPos.x - cx) / cw * 2 - 1, (screenPos.y - cy) / ch * 2 - 1, .9999); + _valueTypes.Vec3.transformMat4(out, out, _matInvViewProj); + this._node.getWorldPosition(_tmp_v3); + _valueTypes.Vec3.lerp(out, _tmp_v3, out, (0, _valueTypes.lerp)(this._near / this._far, 1, screenPos.z)); + } else { + _valueTypes.Vec3.set(out, (screenPos.x - cx) / cw * 2 - 1, (screenPos.y - cy) / ch * 2 - 1, 2 * screenPos.z - 1); + _valueTypes.Vec3.transformMat4(out, out, _matInvViewProj); + } + return out; + }; + _proto.worldToScreen = function worldToScreen(out, worldPos, width, height) { + this._calcMatrices(width, height); + var cx = this._rect.x * width; + var cy = this._rect.y * height; + var cw = this._rect.w * width; + var ch = this._rect.h * height; + _valueTypes.Vec3.transformMat4(out, worldPos, _matViewProj); + out.x = cx + .5 * (out.x + 1) * cw; + out.y = cy + .5 * (out.y + 1) * ch; + out.z = .5 * out.z + .5; + return out; + }; + _proto.worldMatrixToScreen = function worldMatrixToScreen(out, worldMatrix, width, height) { + this._calcMatrices(width, height); + _valueTypes.Mat4.mul(out, _matViewProj, worldMatrix); + var halfWidth = width / 2; + var halfHeight = height / 2; + _valueTypes.Mat4.identity(_tmp_mat4); + _valueTypes.Mat4.transform(_tmp_mat4, _tmp_mat4, _valueTypes.Vec3.set(_tmp_v3, halfWidth, halfHeight, 0)); + _valueTypes.Mat4.scale(_tmp_mat4, _tmp_mat4, _valueTypes.Vec3.set(_tmp_v3, halfWidth, halfHeight, 1)); + _valueTypes.Mat4.mul(out, _tmp_mat4, out); + return out; + }; + _createClass(Camera, [{ + key: "cullingMask", + get: function get() { + return this._cullingMask; + }, + set: function set(mask) { + this._cullingMask = mask; + } + }]); + return Camera; + })(); + exports["default"] = Camera; + module.exports = exports["default"]; + }), { + "../../core/geom-utils": 194, + "../../core/value-types": 339, + "../enums": 367 + }], + 393: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _valueTypes = require("../../core/value-types"); + var _gfx = _interopRequireDefault(require("../gfx")); + var _enums = _interopRequireDefault(require("../enums")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + "value" in descriptor && (descriptor.writable = true); + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + protoProps && _defineProperties(Constructor.prototype, protoProps); + staticProps && _defineProperties(Constructor, staticProps); + return Constructor; + } + var _forward = cc.v3(0, 0, -1); + var _m4_tmp = cc.mat4(); + var _m3_tmp = _valueTypes.Mat3.create(); + var _transformedLightDirection = cc.v3(0, 0, 0); + function _computeSpotLightViewProjMatrix(light, outView, outProj) { + light._node.getWorldRT(outView); + _valueTypes.Mat4.invert(outView, outView); + _valueTypes.Mat4.perspective(outProj, light._spotAngle * light._spotAngleScale, 1, light._shadowMinDepth, light._shadowMaxDepth); + } + function _computeDirectionalLightViewProjMatrix(light, outView, outProj) { + light._node.getWorldRT(outView); + _valueTypes.Mat4.invert(outView, outView); + var halfSize = light._shadowFrustumSize / 2; + _valueTypes.Mat4.ortho(outProj, -halfSize, halfSize, -halfSize, halfSize, light._shadowMinDepth, light._shadowMaxDepth); + } + function _computePointLightViewProjMatrix(light, outView, outProj) { + light._node.getWorldRT(outView); + _valueTypes.Mat4.invert(outView, outView); + _valueTypes.Mat4.perspective(outProj, (0, _valueTypes.toRadian)(179), 1, light._shadowMinDepth, light._shadowMaxDepth); + } + var Light = (function () { + function Light() { + this._poolID = -1; + this._node = null; + this._type = _enums["default"].LIGHT_DIRECTIONAL; + this._color = new _valueTypes.Vec3(1, 1, 1); + this._intensity = 1; + this._range = 1; + this._spotAngle = (0, _valueTypes.toRadian)(60); + this._spotExp = 1; + this._directionUniform = new Float32Array(3); + this._positionUniform = new Float32Array(3); + this._colorUniform = new Float32Array([this._color.x * this._intensity, this._color.y * this._intensity, this._color.z * this._intensity]); + this._spotUniform = new Float32Array([Math.cos(.5 * this._spotAngle), this._spotExp]); + this._shadowType = _enums["default"].SHADOW_NONE; + this._shadowFrameBuffer = null; + this._shadowMap = null; + this._shadowMapDirty = false; + this._shadowDepthBuffer = null; + this._shadowResolution = 1024; + this._shadowBias = 5e-4; + this._shadowDarkness = 1; + this._shadowMinDepth = 1; + this._shadowMaxDepth = 1e3; + this._frustumEdgeFalloff = 0; + this._viewProjMatrix = cc.mat4(); + this._spotAngleScale = 1; + this._shadowFrustumSize = 50; + } + var _proto = Light.prototype; + _proto.getNode = function getNode() { + return this._node; + }; + _proto.setNode = function setNode(node) { + this._node = node; + }; + _proto.setColor = function setColor(r, g, b) { + _valueTypes.Vec3.set(this._color, r, g, b); + this._colorUniform[0] = r * this._intensity; + this._colorUniform[1] = g * this._intensity; + this._colorUniform[2] = b * this._intensity; + }; + _proto.setIntensity = function setIntensity(val) { + this._intensity = val; + this._colorUniform[0] = val * this._color.x; + this._colorUniform[1] = val * this._color.y; + this._colorUniform[2] = val * this._color.z; + }; + _proto.setType = function setType(type) { + this._type = type; + }; + _proto.setSpotAngle = function setSpotAngle(val) { + this._spotAngle = val; + this._spotUniform[0] = Math.cos(.5 * this._spotAngle); + }; + _proto.setSpotExp = function setSpotExp(val) { + this._spotExp = val; + this._spotUniform[1] = val; + }; + _proto.setRange = function setRange(val) { + this._range = val; + }; + _proto.setShadowType = function setShadowType(type) { + this._shadowType === _enums["default"].SHADOW_NONE && type !== _enums["default"].SHADOW_NONE && (this._shadowMapDirty = true); + this._shadowType = type; + }; + _proto.setShadowResolution = function setShadowResolution(val) { + this._shadowResolution !== val && (this._shadowMapDirty = true); + this._shadowResolution = val; + }; + _proto.setShadowBias = function setShadowBias(val) { + this._shadowBias = val; + }; + _proto.setShadowDarkness = function setShadowDarkness(val) { + this._shadowDarkness = val; + }; + _proto.setShadowMinDepth = function setShadowMinDepth(val) { + this._shadowMinDepth = val; + }; + _proto.setShadowMaxDepth = function setShadowMaxDepth(val) { + this._shadowMaxDepth = val; + }; + _proto.setFrustumEdgeFalloff = function setFrustumEdgeFalloff(val) { + this._frustumEdgeFalloff = val; + }; + _proto.setShadowFrustumSize = function setShadowFrustumSize(val) { + this._shadowFrustumSize = val; + }; + _proto.extractView = function extractView(out, stages) { + out._shadowLight = this; + out._priority = -1; + out._rect.x = 0; + out._rect.y = 0; + out._rect.w = this._shadowResolution; + out._rect.h = this._shadowResolution; + _valueTypes.Vec3.set(out._color, 1, 1, 1); + out._depth = 1; + out._stencil = 1; + out._clearFlags = _enums["default"].CLEAR_COLOR | _enums["default"].CLEAR_DEPTH; + out._stages = stages; + out._framebuffer = this._shadowFrameBuffer; + switch (this._type) { + case _enums["default"].LIGHT_SPOT: + _computeSpotLightViewProjMatrix(this, out._matView, out._matProj); + break; + + case _enums["default"].LIGHT_DIRECTIONAL: + _computeDirectionalLightViewProjMatrix(this, out._matView, out._matProj); + break; + + case _enums["default"].LIGHT_POINT: + _computePointLightViewProjMatrix(this, out._matView, out._matProj); + break; + + case _enums["default"].LIGHT_AMBIENT: + break; + + default: + console.warn("shadow of this light type is not supported"); + } + _valueTypes.Mat4.mul(out._matViewProj, out._matProj, out._matView); + this._viewProjMatrix = out._matViewProj; + _valueTypes.Mat4.invert(out._matInvViewProj, out._matViewProj); + out._cullingMask = 4294967295; + }; + _proto._updateLightPositionAndDirection = function _updateLightPositionAndDirection() { + this._node.getWorldMatrix(_m4_tmp); + _valueTypes.Mat3.fromMat4(_m3_tmp, _m4_tmp); + _valueTypes.Vec3.transformMat3(_transformedLightDirection, _forward, _m3_tmp); + _valueTypes.Vec3.toArray(this._directionUniform, _transformedLightDirection); + var pos = this._positionUniform; + var m = _m4_tmp.m; + pos[0] = m[12]; + pos[1] = m[13]; + pos[2] = m[14]; + }; + _proto._generateShadowMap = function _generateShadowMap(device) { + this._shadowMap = new _gfx["default"].Texture2D(device, { + width: this._shadowResolution, + height: this._shadowResolution, + format: _gfx["default"].TEXTURE_FMT_RGBA8, + wrapS: _gfx["default"].WRAP_CLAMP, + wrapT: _gfx["default"].WRAP_CLAMP + }); + this._shadowDepthBuffer = new _gfx["default"].RenderBuffer(device, _gfx["default"].RB_FMT_D16, this._shadowResolution, this._shadowResolution); + this._shadowFrameBuffer = new _gfx["default"].FrameBuffer(device, this._shadowResolution, this._shadowResolution, { + colors: [this._shadowMap], + depth: this._shadowDepthBuffer + }); + }; + _proto._destroyShadowMap = function _destroyShadowMap() { + if (this._shadowMap) { + this._shadowMap.destroy(); + this._shadowDepthBuffer.destroy(); + this._shadowFrameBuffer.destroy(); + this._shadowMap = null; + this._shadowDepthBuffer = null; + this._shadowFrameBuffer = null; + } + }; + _proto.update = function update(device) { + this._updateLightPositionAndDirection(); + if (this._shadowType === _enums["default"].SHADOW_NONE) this._destroyShadowMap(); else if (this._shadowMapDirty) { + this._destroyShadowMap(); + this._generateShadowMap(device); + this._shadowMapDirty = false; + } + }; + _createClass(Light, [{ + key: "color", + get: function get() { + return this._color; + } + }, { + key: "intensity", + get: function get() { + return this._intensity; + } + }, { + key: "type", + get: function get() { + return this._type; + } + }, { + key: "spotAngle", + get: function get() { + return this._spotAngle; + } + }, { + key: "spotExp", + get: function get() { + return this._spotExp; + } + }, { + key: "range", + get: function get() { + return this._range; + } + }, { + key: "shadowType", + get: function get() { + return this._shadowType; + } + }, { + key: "shadowMap", + get: function get() { + return this._shadowMap; + } + }, { + key: "viewProjMatrix", + get: function get() { + return this._viewProjMatrix; + } + }, { + key: "shadowResolution", + get: function get() { + return this._shadowResolution; + } + }, { + key: "shadowBias", + get: function get() { + return this._shadowBias; + } + }, { + key: "shadowDarkness", + get: function get() { + return this._shadowDarkness; + } + }, { + key: "shadowMinDepth", + get: function get() { + if (this._type === _enums["default"].LIGHT_DIRECTIONAL) return 1; + return this._shadowMinDepth; + } + }, { + key: "shadowMaxDepth", + get: function get() { + if (this._type === _enums["default"].LIGHT_DIRECTIONAL) return 1; + return this._shadowMaxDepth; + } + }, { + key: "frustumEdgeFalloff", + get: function get() { + return this._frustumEdgeFalloff; + } + }, { + key: "shadowFrustumSize", + get: function get() { + return this._shadowFrustumSize; + } + }]); + return Light; + })(); + exports["default"] = Light; + module.exports = exports["default"]; + }), { + "../../core/value-types": 339, + "../enums": 367, + "../gfx": 372 + }], + 394: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var Model = (function () { + function Model() { + this._type = "default"; + this._poolID = -1; + this._node = null; + this._inputAssembler = null; + this._effect = null; + this._viewID = -1; + this._cameraID = -1; + this._userKey = -1; + this._castShadow = false; + this._boundingShape = null; + } + var _proto = Model.prototype; + _proto.setNode = function setNode(node) { + this._node = node; + }; + _proto.setInputAssembler = function setInputAssembler(ia) { + this._inputAssembler = ia; + }; + _proto.setEffect = function setEffect(effect) { + this._effect = effect; + }; + _proto.setUserKey = function setUserKey(key) { + this._userKey = key; + }; + _proto.extractDrawItem = function extractDrawItem(out) { + out.model = this; + out.node = this._node; + out.ia = this._inputAssembler; + out.effect = this._effect; + }; + return Model; + })(); + exports["default"] = Model; + module.exports = exports["default"]; + }), {}], + 395: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _memop = require("../memop"); + var Scene = (function () { + function Scene(app) { + this._lights = new _memop.FixedArray(16); + this._models = new _memop.FixedArray(16); + this._cameras = new _memop.FixedArray(16); + this._debugCamera = null; + this._app = app; + this._views = []; + } + var _proto = Scene.prototype; + _proto._add = function _add(pool, item) { + if (-1 !== item._poolID) return; + pool.push(item); + item._poolID = pool.length - 1; + }; + _proto._remove = function _remove(pool, item) { + if (-1 === item._poolID) return; + pool.data[pool.length - 1]._poolID = item._poolID; + pool.fastRemove(item._poolID); + item._poolID = -1; + }; + _proto.reset = function reset() { + for (var i = 0; i < this._models.length; ++i) { + var model = this._models.data[i]; + model._viewID = -1; + } + }; + _proto.setDebugCamera = function setDebugCamera(cam) { + this._debugCamera = cam; + }; + _proto.getCameraCount = function getCameraCount() { + return this._cameras.length; + }; + _proto.getCamera = function getCamera(idx) { + return this._cameras.data[idx]; + }; + _proto.addCamera = function addCamera(camera) { + this._add(this._cameras, camera); + }; + _proto.removeCamera = function removeCamera(camera) { + this._remove(this._cameras, camera); + }; + _proto.getModelCount = function getModelCount() { + return this._models.length; + }; + _proto.getModel = function getModel(idx) { + return this._models.data[idx]; + }; + _proto.addModel = function addModel(model) { + this._add(this._models, model); + }; + _proto.removeModel = function removeModel(model) { + this._remove(this._models, model); + }; + _proto.getLightCount = function getLightCount() { + return this._lights.length; + }; + _proto.getLight = function getLight(idx) { + return this._lights.data[idx]; + }; + _proto.addLight = function addLight(light) { + this._add(this._lights, light); + }; + _proto.removeLight = function removeLight(light) { + this._remove(this._lights, light); + }; + _proto.addView = function addView(view) { + -1 === this._views.indexOf(view) && this._views.push(view); + }; + _proto.removeView = function removeView(view) { + var idx = this._views.indexOf(view); + -1 !== idx && this._views.splice(idx, 1); + }; + return Scene; + })(); + var _default = Scene; + exports["default"] = _default; + module.exports = exports["default"]; + }), { + "../memop": 384 + }], + 396: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports.getInspectorProps = getInspectorProps; + exports.getClassName = exports.getInstanceCtor = exports.getInstanceType = exports.enums2default = exports.ctor2enums = void 0; + var _enums = _interopRequireDefault(require("./enums")); + var _valueTypes = require("../core/value-types"); + var _CCTexture2D = _interopRequireDefault(require("../core/assets/CCTexture2D")); + var _ctor2default, _enums2ctor, _ctor2enums, _enums2default; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var gfxTexture2D = null, gfxTextureCube = null; + false; + gfxTexture2D = require("./gfx/texture-2d"); + var CCObject = cc.Object; + var ctor2default = (_ctor2default = {}, _ctor2default[Boolean] = function (v) { + return v || false; + }, _ctor2default[Number] = function (v) { + return v ? ArrayBuffer.isView(v) ? v[0] : v : 0; + }, _ctor2default[_valueTypes.Vec2] = function (v) { + return v ? cc.v2(v[0], v[1]) : cc.v2(); + }, _ctor2default[_valueTypes.Vec3] = function (v) { + return v ? cc.v3(v[0], v[1], v[2]) : cc.v3(); + }, _ctor2default[_valueTypes.Vec4] = function (v) { + return v ? cc.v4(v[0], v[1], v[2], v[3]) : cc.v4(); + }, _ctor2default[_valueTypes.Color] = function (v) { + return v ? cc.color(255 * v[0], 255 * v[1], 255 * v[2], 255 * (v[3] || 1)) : cc.color(); + }, _ctor2default[_valueTypes.Mat4] = function (v) { + return v ? cc.mat4(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15]) : cc.mat4(); + }, _ctor2default[_CCTexture2D["default"]] = function () { + return null; + }, _ctor2default[CCObject] = function () { + return null; + }, _ctor2default); + var enums2ctor = (_enums2ctor = {}, _enums2ctor[_enums["default"].PARAM_INT] = Number, + _enums2ctor[_enums["default"].PARAM_INT2] = _valueTypes.Vec2, _enums2ctor[_enums["default"].PARAM_INT3] = _valueTypes.Vec3, + _enums2ctor[_enums["default"].PARAM_INT4] = _valueTypes.Vec4, _enums2ctor[_enums["default"].PARAM_FLOAT] = Number, + _enums2ctor[_enums["default"].PARAM_FLOAT2] = _valueTypes.Vec2, _enums2ctor[_enums["default"].PARAM_FLOAT3] = _valueTypes.Vec3, + _enums2ctor[_enums["default"].PARAM_FLOAT4] = _valueTypes.Vec4, _enums2ctor[_enums["default"].PARAM_MAT4] = _valueTypes.Mat4, + _enums2ctor[_enums["default"].PARAM_TEXTURE_2D] = _CCTexture2D["default"], _enums2ctor.color = _valueTypes.Color, + _enums2ctor.number = Number, _enums2ctor["boolean"] = Boolean, _enums2ctor["default"] = CCObject, + _enums2ctor); + var ctor2enums = (_ctor2enums = {}, _ctor2enums[Number] = _enums["default"].PARAM_FLOAT, + _ctor2enums[_valueTypes.Vec2] = _enums["default"].PARAM_FLOAT2, _ctor2enums[_valueTypes.Vec3] = _enums["default"].PARAM_FLOAT3, + _ctor2enums[_valueTypes.Vec4] = _enums["default"].PARAM_FLOAT4, _ctor2enums[_valueTypes.Color] = _enums["default"].PARAM_COLOR3, + _ctor2enums[_valueTypes.Color] = _enums["default"].PARAM_COLOR4, _ctor2enums[_valueTypes.Mat4] = _enums["default"].PARAM_MAT4, + _ctor2enums[_CCTexture2D["default"]] = _enums["default"].PARAM_TEXTURE_2D, _ctor2enums[gfxTexture2D] = _enums["default"].PARAM_TEXTURE_2D, + _ctor2enums); + exports.ctor2enums = ctor2enums; + var enums2default = (_enums2default = {}, _enums2default[_enums["default"].PARAM_INT] = new Uint32Array([0]), + _enums2default[_enums["default"].PARAM_INT2] = new Uint32Array([0, 0]), _enums2default[_enums["default"].PARAM_INT3] = new Uint32Array([0, 0, 0]), + _enums2default[_enums["default"].PARAM_INT4] = new Uint32Array([0, 0, 0, 0]), + _enums2default[_enums["default"].PARAM_FLOAT] = new Float32Array([0]), _enums2default[_enums["default"].PARAM_FLOAT2] = new Float32Array([0, 0]), + _enums2default[_enums["default"].PARAM_FLOAT3] = new Float32Array([0, 0, 0]), + _enums2default[_enums["default"].PARAM_FLOAT4] = new Float32Array([0, 0, 0, 0]), + _enums2default[_enums["default"].PARAM_MAT4] = cc.mat4().m, _enums2default[_enums["default"].PARAM_TEXTURE_2D] = null, + _enums2default.number = 0, _enums2default["boolean"] = false, _enums2default); + exports.enums2default = enums2default; + var getInstanceType = function getInstanceType(t) { + return enums2ctor[t] || enums2ctor["default"]; + }; + exports.getInstanceType = getInstanceType; + var getInstanceCtor = function getInstanceCtor(t) { + return ctor2default[getInstanceType(t)]; + }; + exports.getInstanceCtor = getInstanceCtor; + var getClassName = function getClassName(t) { + return cc.js.getClassName(getInstanceType(t)); + }; + exports.getClassName = getClassName; + var className2InspectorName = { + Number: "number", + Boolean: "boolean" + }; + function getInspectorProps(prop) { + var editor = { + type: prop.type + }; + Object.assign(editor, prop.editor || prop.inspector); + editor.defines = prop.defines; + editor.value = getInstanceCtor(editor.type)(prop.value); + prop.range && (editor.range = prop.range); + var className = getClassName(editor.type); + editor.typeName = className2InspectorName[className] || className; + editor.valueCtor = enums2ctor[editor.type]; + if ("cc.Texture2D" == editor.typeName) { + editor.typeName = "cc.Asset"; + editor.assetType = "cc.Texture2D"; + } + return editor; + } + }), { + "../core/assets/CCTexture2D": 121, + "../core/value-types": 339, + "./enums": 367, + "./gfx/texture-2d": 377 + }], + 397: [(function (require, module, exports) { + "use strict"; + var codec = require("../compression/ZipUtils"); + var zlib = require("../compression/zlib.min"); + var js = require("../core/platform/js"); + require("../core/platform/CCSAXParser"); + function uint8ArrayToUint32Array(uint8Arr) { + if (uint8Arr.length % 4 !== 0) return null; + var arrLen = uint8Arr.length / 4; + var retArr = window.Uint32Array ? new Uint32Array(arrLen) : []; + for (var i = 0; i < arrLen; i++) { + var offset = 4 * i; + retArr[i] = uint8Arr[offset] + 256 * uint8Arr[offset + 1] + 65536 * uint8Arr[offset + 2] + uint8Arr[offset + 3] * (1 << 24); + } + return retArr; + } + cc.TMXLayerInfo = function () { + this.properties = {}; + this.name = ""; + this._layerSize = null; + this._tiles = []; + this.visible = true; + this._opacity = 0; + this.ownTiles = true; + this._minGID = 1e5; + this._maxGID = 0; + this.offset = cc.v2(0, 0); + }; + cc.TMXLayerInfo.prototype = { + constructor: cc.TMXLayerInfo, + getProperties: function getProperties() { + return this.properties; + }, + setProperties: function setProperties(value) { + this.properties = value; + } + }; + cc.TMXImageLayerInfo = function () { + this.name = ""; + this.visible = true; + this.width = 0; + this.height = 0; + this.offset = cc.v2(0, 0); + this._opacity = 0; + this._trans = new cc.Color(255, 255, 255, 255); + this.sourceImage = null; + }; + cc.TMXObjectGroupInfo = function () { + this.properties = {}; + this.name = ""; + this._objects = []; + this.visible = true; + this._opacity = 0; + this._color = new cc.Color(255, 255, 255, 255); + this.offset = cc.v2(0, 0); + this._draworder = "topdown"; + }; + cc.TMXObjectGroupInfo.prototype = { + constructor: cc.TMXObjectGroupInfo, + getProperties: function getProperties() { + return this.properties; + }, + setProperties: function setProperties(value) { + this.properties = value; + } + }; + cc.TMXTilesetInfo = function () { + this.name = ""; + this.firstGid = 0; + this.spacing = 0; + this.margin = 0; + this.sourceImage = null; + this.imageSize = cc.size(0, 0); + this.tileOffset = cc.v2(0, 0); + this._tileSize = cc.size(0, 0); + }; + cc.TMXTilesetInfo.prototype = { + constructor: cc.TMXTilesetInfo, + rectForGID: function rectForGID(gid, result) { + var rect = result || cc.rect(0, 0, 0, 0); + rect.width = this._tileSize.width; + rect.height = this._tileSize.height; + gid &= cc.TiledMap.TileFlag.FLIPPED_MASK; + gid -= parseInt(this.firstGid, 10); + var max_x = parseInt((this.imageSize.width - 2 * this.margin + this.spacing) / (this._tileSize.width + this.spacing), 10); + rect.x = parseInt(gid % max_x * (this._tileSize.width + this.spacing) + this.margin, 10); + rect.y = parseInt(parseInt(gid / max_x, 10) * (this._tileSize.height + this.spacing) + this.margin, 10); + return rect; + } + }; + function strToHAlign(value) { + var hAlign = cc.Label.HorizontalAlign; + switch (value) { + case "center": + return hAlign.CENTER; + + case "right": + return hAlign.RIGHT; + + default: + return hAlign.LEFT; + } + } + function strToVAlign(value) { + var vAlign = cc.Label.VerticalAlign; + switch (value) { + case "center": + return vAlign.CENTER; + + case "bottom": + return vAlign.BOTTOM; + + default: + return vAlign.TOP; + } + } + function strToColor(value) { + if (!value) return cc.color(0, 0, 0, 255); + value = -1 !== value.indexOf("#") ? value.substring(1) : value; + if (8 === value.length) { + var a = parseInt(value.substr(0, 2), 16) || 255; + var r = parseInt(value.substr(2, 2), 16) || 0; + var g = parseInt(value.substr(4, 2), 16) || 0; + var b = parseInt(value.substr(6, 2), 16) || 0; + return cc.color(r, g, b, a); + } + var _r = parseInt(value.substr(0, 2), 16) || 0; + var _g = parseInt(value.substr(2, 2), 16) || 0; + var _b = parseInt(value.substr(4, 2), 16) || 0; + return cc.color(_r, _g, _b, 255); + } + function getPropertyList(node, map) { + var res = []; + var properties = node.getElementsByTagName("properties"); + for (var i = 0; i < properties.length; ++i) { + var property = properties[i].getElementsByTagName("property"); + for (var j = 0; j < property.length; ++j) res.push(property[j]); + } + map = map || {}; + for (var _i = 0; _i < res.length; _i++) { + var element = res[_i]; + var name = element.getAttribute("name"); + var type = element.getAttribute("type") || "string"; + var value = element.getAttribute("value"); + "int" === type ? value = parseInt(value) : "float" === type ? value = parseFloat(value) : "bool" === type ? value = "true" === value : "color" === type && (value = strToColor(value)); + map[name] = value; + } + return map; + } + cc.TMXMapInfo = function (tmxFile, tsxMap, textures, textureSizes, imageLayerTextures) { + this.properties = []; + this.orientation = null; + this.parentElement = null; + this.parentGID = null; + this.layerAttrs = 0; + this.storingCharacters = false; + this.currentString = null; + this.renderOrder = cc.TiledMap.RenderOrder.RightDown; + this._supportVersion = [1, 2, 0]; + this._parser = new cc.SAXParser(); + this._objectGroups = []; + this._allChildren = []; + this._mapSize = cc.size(0, 0); + this._tileSize = cc.size(0, 0); + this._layers = []; + this._tilesets = []; + this._imageLayers = []; + this._tileProperties = {}; + this._tileAnimations = {}; + this._tsxMap = null; + this._textures = null; + this._staggerAxis = null; + this._staggerIndex = null; + this._hexSideLength = 0; + this._imageLayerTextures = null; + this.initWithXML(tmxFile, tsxMap, textures, textureSizes, imageLayerTextures); + }; + cc.TMXMapInfo.prototype = { + constructor: cc.TMXMapInfo, + getOrientation: function getOrientation() { + return this.orientation; + }, + setOrientation: function setOrientation(value) { + this.orientation = value; + }, + getStaggerAxis: function getStaggerAxis() { + return this._staggerAxis; + }, + setStaggerAxis: function setStaggerAxis(value) { + this._staggerAxis = value; + }, + getStaggerIndex: function getStaggerIndex() { + return this._staggerIndex; + }, + setStaggerIndex: function setStaggerIndex(value) { + this._staggerIndex = value; + }, + getHexSideLength: function getHexSideLength() { + return this._hexSideLength; + }, + setHexSideLength: function setHexSideLength(value) { + this._hexSideLength = value; + }, + getMapSize: function getMapSize() { + return cc.size(this._mapSize.width, this._mapSize.height); + }, + setMapSize: function setMapSize(value) { + this._mapSize.width = value.width; + this._mapSize.height = value.height; + }, + _getMapWidth: function _getMapWidth() { + return this._mapSize.width; + }, + _setMapWidth: function _setMapWidth(width) { + this._mapSize.width = width; + }, + _getMapHeight: function _getMapHeight() { + return this._mapSize.height; + }, + _setMapHeight: function _setMapHeight(height) { + this._mapSize.height = height; + }, + getTileSize: function getTileSize() { + return cc.size(this._tileSize.width, this._tileSize.height); + }, + setTileSize: function setTileSize(value) { + this._tileSize.width = value.width; + this._tileSize.height = value.height; + }, + _getTileWidth: function _getTileWidth() { + return this._tileSize.width; + }, + _setTileWidth: function _setTileWidth(width) { + this._tileSize.width = width; + }, + _getTileHeight: function _getTileHeight() { + return this._tileSize.height; + }, + _setTileHeight: function _setTileHeight(height) { + this._tileSize.height = height; + }, + getLayers: function getLayers() { + return this._layers; + }, + setLayers: function setLayers(value) { + this._allChildren.push(value); + this._layers.push(value); + }, + getImageLayers: function getImageLayers() { + return this._imageLayers; + }, + setImageLayers: function setImageLayers(value) { + this._allChildren.push(value); + this._imageLayers.push(value); + }, + getTilesets: function getTilesets() { + return this._tilesets; + }, + setTilesets: function setTilesets(value) { + this._tilesets.push(value); + }, + getObjectGroups: function getObjectGroups() { + return this._objectGroups; + }, + setObjectGroups: function setObjectGroups(value) { + this._allChildren.push(value); + this._objectGroups.push(value); + }, + getAllChildren: function getAllChildren() { + return this._allChildren; + }, + getParentElement: function getParentElement() { + return this.parentElement; + }, + setParentElement: function setParentElement(value) { + this.parentElement = value; + }, + getParentGID: function getParentGID() { + return this.parentGID; + }, + setParentGID: function setParentGID(value) { + this.parentGID = value; + }, + getLayerAttribs: function getLayerAttribs() { + return this.layerAttrs; + }, + setLayerAttribs: function setLayerAttribs(value) { + this.layerAttrs = value; + }, + getStoringCharacters: function getStoringCharacters() { + return this.storingCharacters; + }, + setStoringCharacters: function setStoringCharacters(value) { + this.storingCharacters = value; + }, + getProperties: function getProperties() { + return this.properties; + }, + setProperties: function setProperties(value) { + this.properties = value; + }, + initWithXML: function initWithXML(tmxString, tsxMap, textures, textureSizes, imageLayerTextures) { + this._tilesets.length = 0; + this._layers.length = 0; + this._imageLayers.length = 0; + this._tsxMap = tsxMap; + this._textures = textures; + this._imageLayerTextures = imageLayerTextures; + this._textureSizes = textureSizes; + this._objectGroups.length = 0; + this._allChildren.length = 0; + this.properties.length = 0; + this._tileProperties = {}; + this._tileAnimations = {}; + this.currentString = ""; + this.storingCharacters = false; + this.layerAttrs = cc.TMXLayerInfo.ATTRIB_NONE; + this.parentElement = cc.TiledMap.NONE; + return this.parseXMLString(tmxString); + }, + parseXMLString: function parseXMLString(xmlStr, tilesetFirstGid) { + var mapXML = this._parser._parseXML(xmlStr); + var i; + var map = mapXML.documentElement; + var orientationStr = map.getAttribute("orientation"); + var staggerAxisStr = map.getAttribute("staggeraxis"); + var staggerIndexStr = map.getAttribute("staggerindex"); + var hexSideLengthStr = map.getAttribute("hexsidelength"); + var renderorderStr = map.getAttribute("renderorder"); + var version = map.getAttribute("version") || "1.0.0"; + if ("map" === map.nodeName) { + var versionArr = version.split("."); + var supportVersion = this._supportVersion; + for (var _i2 = 0; _i2 < supportVersion.length; _i2++) { + var v = parseInt(versionArr[_i2]) || 0; + var sv = supportVersion[_i2]; + if (sv < v) { + cc.logID(7216, version); + break; + } + } + "orthogonal" === orientationStr ? this.orientation = cc.TiledMap.Orientation.ORTHO : "isometric" === orientationStr ? this.orientation = cc.TiledMap.Orientation.ISO : "hexagonal" === orientationStr ? this.orientation = cc.TiledMap.Orientation.HEX : null !== orientationStr && cc.logID(7217, orientationStr); + this.renderOrder = "right-up" === renderorderStr ? cc.TiledMap.RenderOrder.RightUp : "left-up" === renderorderStr ? cc.TiledMap.RenderOrder.LeftUp : "left-down" === renderorderStr ? cc.TiledMap.RenderOrder.LeftDown : cc.TiledMap.RenderOrder.RightDown; + "x" === staggerAxisStr ? this.setStaggerAxis(cc.TiledMap.StaggerAxis.STAGGERAXIS_X) : "y" === staggerAxisStr && this.setStaggerAxis(cc.TiledMap.StaggerAxis.STAGGERAXIS_Y); + "odd" === staggerIndexStr ? this.setStaggerIndex(cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD) : "even" === staggerIndexStr && this.setStaggerIndex(cc.TiledMap.StaggerIndex.STAGGERINDEX_EVEN); + hexSideLengthStr && this.setHexSideLength(parseFloat(hexSideLengthStr)); + var mapSize = cc.size(0, 0); + mapSize.width = parseFloat(map.getAttribute("width")); + mapSize.height = parseFloat(map.getAttribute("height")); + this.setMapSize(mapSize); + mapSize = cc.size(0, 0); + mapSize.width = parseFloat(map.getAttribute("tilewidth")); + mapSize.height = parseFloat(map.getAttribute("tileheight")); + this.setTileSize(mapSize); + this.properties = getPropertyList(map); + } + var tilesets = map.getElementsByTagName("tileset"); + if ("map" !== map.nodeName) { + tilesets = []; + tilesets.push(map); + } + for (i = 0; i < tilesets.length; i++) { + var selTileset = tilesets[i]; + var tsxName = selTileset.getAttribute("source"); + if (tsxName) { + var currentFirstGID = parseInt(selTileset.getAttribute("firstgid")); + var tsxXmlString = this._tsxMap[tsxName]; + tsxXmlString && this.parseXMLString(tsxXmlString, currentFirstGID); + } else { + var images = selTileset.getElementsByTagName("image"); + var multiTextures = images.length > 1; + var image = images[0]; + var firstImageName = image.getAttribute("source"); + firstImageName = firstImageName.replace(/\\/g, "/"); + var tiles = selTileset.getElementsByTagName("tile"); + var tileCount = tiles && tiles.length || 1; + var tile = null; + var tilesetName = selTileset.getAttribute("name") || ""; + var tilesetSpacing = parseInt(selTileset.getAttribute("spacing")) || 0; + var tilesetMargin = parseInt(selTileset.getAttribute("margin")) || 0; + var fgid = parseInt(tilesetFirstGid); + fgid || (fgid = parseInt(selTileset.getAttribute("firstgid")) || 0); + var tilesetSize = cc.size(0, 0); + tilesetSize.width = parseFloat(selTileset.getAttribute("tilewidth")); + tilesetSize.height = parseFloat(selTileset.getAttribute("tileheight")); + var offset = selTileset.getElementsByTagName("tileoffset")[0]; + var tileOffset = cc.v2(0, 0); + if (offset) { + tileOffset.x = parseFloat(offset.getAttribute("x")); + tileOffset.y = parseFloat(offset.getAttribute("y")); + } + var tileset = null; + for (var tileIdx = 0; tileIdx < tileCount; tileIdx++) { + if (!tileset || multiTextures) { + tileset = new cc.TMXTilesetInfo(); + tileset.name = tilesetName; + tileset.firstGid = fgid; + tileset.spacing = tilesetSpacing; + tileset.margin = tilesetMargin; + tileset._tileSize = tilesetSize; + tileset.tileOffset = tileOffset; + tileset.sourceImage = this._textures[firstImageName]; + tileset.imageSize = this._textureSizes[firstImageName] || tileset.imageSize; + tileset.sourceImage || cc.errorID(7221, firstImageName); + this.setTilesets(tileset); + } + tile = tiles && tiles[tileIdx]; + if (!tile) continue; + this.parentGID = parseInt(fgid) + parseInt(tile.getAttribute("id") || 0); + var tileImages = tile.getElementsByTagName("image"); + if (tileImages && tileImages.length > 0) { + image = tileImages[0]; + var imageName = image.getAttribute("source"); + imageName = imageName.replace(/\\/g, "/"); + tileset.sourceImage = this._textures[imageName]; + tileset.sourceImage || cc.errorID(7221, imageName); + var tileSize = cc.size(0, 0); + tileSize.width = parseFloat(image.getAttribute("width")); + tileSize.height = parseFloat(image.getAttribute("height")); + tileset._tileSize = tileSize; + tileset.firstGid = this.parentGID; + } + this._tileProperties[this.parentGID] = getPropertyList(tile); + var animations = tile.getElementsByTagName("animation"); + if (animations && animations.length > 0) { + var animation = animations[0]; + var framesData = animation.getElementsByTagName("frame"); + var animationProp = { + frames: [], + dt: 0, + frameIdx: 0 + }; + this._tileAnimations[this.parentGID] = animationProp; + var frames = animationProp.frames; + for (var frameIdx = 0; frameIdx < framesData.length; frameIdx++) { + var frame = framesData[frameIdx]; + var tileid = parseInt(fgid) + parseInt(frame.getAttribute("tileid")); + var duration = parseFloat(frame.getAttribute("duration")); + frames.push({ + tileid: tileid, + duration: duration / 1e3, + grid: null + }); + } + } + } + } + } + var childNodes = map.childNodes; + for (i = 0; i < childNodes.length; i++) { + var childNode = childNodes[i]; + if (this._shouldIgnoreNode(childNode)) continue; + if ("imagelayer" === childNode.nodeName) { + var imageLayer = this._parseImageLayer(childNode); + imageLayer && this.setImageLayers(imageLayer); + } + if ("layer" === childNode.nodeName) { + var layer = this._parseLayer(childNode); + this.setLayers(layer); + } + if ("objectgroup" === childNode.nodeName) { + var objectGroup = this._parseObjectGroup(childNode); + this.setObjectGroups(objectGroup); + } + } + return map; + }, + _shouldIgnoreNode: function _shouldIgnoreNode(node) { + return 3 === node.nodeType || 8 === node.nodeType || 4 === node.nodeType; + }, + _parseImageLayer: function _parseImageLayer(selLayer) { + var datas = selLayer.getElementsByTagName("image"); + if (!datas || 0 == datas.length) return null; + var imageLayer = new cc.TMXImageLayerInfo(); + imageLayer.name = selLayer.getAttribute("name"); + imageLayer.offset.x = parseFloat(selLayer.getAttribute("offsetx")) || 0; + imageLayer.offset.y = parseFloat(selLayer.getAttribute("offsety")) || 0; + var visible = selLayer.getAttribute("visible"); + imageLayer.visible = !("0" === visible); + var opacity = selLayer.getAttribute("opacity") || 1; + imageLayer.opacity = parseInt(255 * parseFloat(opacity)) || 255; + var data = datas[0]; + var source = data.getAttribute("source"); + imageLayer.sourceImage = this._imageLayerTextures[source]; + imageLayer.width = parseInt(data.getAttribute("width")) || 0; + imageLayer.height = parseInt(data.getAttribute("height")) || 0; + imageLayer.trans = strToColor(data.getAttribute("trans")); + if (!imageLayer.sourceImage) { + cc.errorID(7221, source); + return null; + } + return imageLayer; + }, + _parseLayer: function _parseLayer(selLayer) { + var data = selLayer.getElementsByTagName("data")[0]; + var layer = new cc.TMXLayerInfo(); + layer.name = selLayer.getAttribute("name"); + var layerSize = cc.size(0, 0); + layerSize.width = parseFloat(selLayer.getAttribute("width")); + layerSize.height = parseFloat(selLayer.getAttribute("height")); + layer._layerSize = layerSize; + var visible = selLayer.getAttribute("visible"); + layer.visible = !("0" === visible); + var opacity = selLayer.getAttribute("opacity") || 1; + layer._opacity = opacity ? parseInt(255 * parseFloat(opacity)) : 255; + layer.offset = cc.v2(parseFloat(selLayer.getAttribute("offsetx")) || 0, parseFloat(selLayer.getAttribute("offsety")) || 0); + var nodeValue = ""; + for (var j = 0; j < data.childNodes.length; j++) nodeValue += data.childNodes[j].nodeValue; + nodeValue = nodeValue.trim(); + var compression = data.getAttribute("compression"); + var encoding = data.getAttribute("encoding"); + if (compression && "gzip" !== compression && "zlib" !== compression) { + cc.logID(7218); + return null; + } + var tiles; + switch (compression) { + case "gzip": + tiles = codec.unzipBase64AsArray(nodeValue, 4); + break; + + case "zlib": + var inflator = new zlib.Inflate(codec.Base64.decodeAsArray(nodeValue, 1)); + tiles = uint8ArrayToUint32Array(inflator.decompress()); + break; + + case null: + case "": + if ("base64" === encoding) tiles = codec.Base64.decodeAsArray(nodeValue, 4); else if ("csv" === encoding) { + tiles = []; + var csvTiles = nodeValue.split(","); + for (var csvIdx = 0; csvIdx < csvTiles.length; csvIdx++) tiles.push(parseInt(csvTiles[csvIdx])); + } else { + var selDataTiles = data.getElementsByTagName("tile"); + tiles = []; + for (var xmlIdx = 0; xmlIdx < selDataTiles.length; xmlIdx++) tiles.push(parseInt(selDataTiles[xmlIdx].getAttribute("gid"))); + } + break; + + default: + this.layerAttrs === cc.TMXLayerInfo.ATTRIB_NONE && cc.logID(7219); + } + tiles && (layer._tiles = new Uint32Array(tiles)); + layer.properties = getPropertyList(selLayer); + return layer; + }, + _parseObjectGroup: function _parseObjectGroup(selGroup) { + var objectGroup = new cc.TMXObjectGroupInfo(); + objectGroup.name = selGroup.getAttribute("name") || ""; + objectGroup.offset = cc.v2(parseFloat(selGroup.getAttribute("offsetx")), parseFloat(selGroup.getAttribute("offsety"))); + var opacity = selGroup.getAttribute("opacity") || 1; + objectGroup._opacity = opacity ? parseInt(255 * parseFloat(opacity)) : 255; + var visible = selGroup.getAttribute("visible"); + visible && 0 === parseInt(visible) && (objectGroup.visible = false); + var color = selGroup.getAttribute("color"); + color && objectGroup._color.fromHEX(color); + var draworder = selGroup.getAttribute("draworder"); + draworder && (objectGroup._draworder = draworder); + objectGroup.setProperties(getPropertyList(selGroup)); + var objects = selGroup.getElementsByTagName("object"); + if (objects) { + for (var j = 0; j < objects.length; j++) { + var selObj = objects[j]; + var objectProp = {}; + objectProp["id"] = selObj.getAttribute("id") || j; + objectProp["name"] = selObj.getAttribute("name") || ""; + objectProp["width"] = parseFloat(selObj.getAttribute("width")) || 0; + objectProp["height"] = parseFloat(selObj.getAttribute("height")) || 0; + objectProp["x"] = parseFloat(selObj.getAttribute("x")) || 0; + objectProp["y"] = parseFloat(selObj.getAttribute("y")) || 0; + objectProp["rotation"] = parseFloat(selObj.getAttribute("rotation")) || 0; + getPropertyList(selObj, objectProp); + var visibleAttr = selObj.getAttribute("visible"); + objectProp["visible"] = !(visibleAttr && 0 === parseInt(visibleAttr)); + var texts = selObj.getElementsByTagName("text"); + if (texts && texts.length > 0) { + var text = texts[0]; + objectProp["type"] = cc.TiledMap.TMXObjectType.TEXT; + objectProp["wrap"] = "1" == text.getAttribute("wrap"); + objectProp["color"] = strToColor(text.getAttribute("color")); + objectProp["halign"] = strToHAlign(text.getAttribute("halign")); + objectProp["valign"] = strToVAlign(text.getAttribute("valign")); + objectProp["pixelsize"] = parseInt(text.getAttribute("pixelsize")) || 16; + objectProp["text"] = text.childNodes[0].nodeValue; + } + var gid = selObj.getAttribute("gid"); + if (gid) { + objectProp["gid"] = parseInt(gid); + objectProp["type"] = cc.TiledMap.TMXObjectType.IMAGE; + } + var ellipse = selObj.getElementsByTagName("ellipse"); + ellipse && ellipse.length > 0 && (objectProp["type"] = cc.TiledMap.TMXObjectType.ELLIPSE); + var polygonProps = selObj.getElementsByTagName("polygon"); + if (polygonProps && polygonProps.length > 0) { + objectProp["type"] = cc.TiledMap.TMXObjectType.POLYGON; + var selPgPointStr = polygonProps[0].getAttribute("points"); + selPgPointStr && (objectProp["points"] = this._parsePointsString(selPgPointStr)); + } + var polylineProps = selObj.getElementsByTagName("polyline"); + if (polylineProps && polylineProps.length > 0) { + objectProp["type"] = cc.TiledMap.TMXObjectType.POLYLINE; + var selPlPointStr = polylineProps[0].getAttribute("points"); + selPlPointStr && (objectProp["polylinePoints"] = this._parsePointsString(selPlPointStr)); + } + objectProp["type"] || (objectProp["type"] = cc.TiledMap.TMXObjectType.RECT); + objectGroup._objects.push(objectProp); + } + "index" !== draworder && objectGroup._objects.sort((function (a, b) { + return a.y - b.y; + })); + } + return objectGroup; + }, + _parsePointsString: function _parsePointsString(pointsString) { + if (!pointsString) return null; + var points = []; + var pointsStr = pointsString.split(" "); + for (var i = 0; i < pointsStr.length; i++) { + var selPointStr = pointsStr[i].split(","); + points.push({ + x: parseFloat(selPointStr[0]), + y: parseFloat(selPointStr[1]) + }); + } + return points; + }, + setTileAnimations: function setTileAnimations(animations) { + this._tileAnimations = animations; + }, + getTileAnimations: function getTileAnimations() { + return this._tileAnimations; + }, + getTileProperties: function getTileProperties() { + return this._tileProperties; + }, + setTileProperties: function setTileProperties(tileProperties) { + this._tileProperties = tileProperties; + }, + getCurrentString: function getCurrentString() { + return this.currentString; + }, + setCurrentString: function setCurrentString(currentString) { + this.currentString = currentString; + } + }; + var _p = cc.TMXMapInfo.prototype; + js.getset(_p, "mapWidth", _p._getMapWidth, _p._setMapWidth); + js.getset(_p, "mapHeight", _p._getMapHeight, _p._setMapHeight); + js.getset(_p, "tileWidth", _p._getTileWidth, _p._setTileWidth); + js.getset(_p, "tileHeight", _p._getTileHeight, _p._setTileHeight); + cc.TMXLayerInfo.ATTRIB_NONE = 1; + cc.TMXLayerInfo.ATTRIB_BASE64 = 2; + cc.TMXLayerInfo.ATTRIB_GZIP = 4; + cc.TMXLayerInfo.ATTRIB_ZLIB = 8; + }), { + "../compression/ZipUtils": 23, + "../compression/zlib.min": 26, + "../core/platform/CCSAXParser": 246, + "../core/platform/js": 260 + }], + 398: [(function (require, module, exports) { + "use strict"; + var _valueTypes = require("../core/value-types"); + var _materialVariant = _interopRequireDefault(require("../core/assets/material/material-variant")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var RenderComponent = require("../core/components/CCRenderComponent"); + var Material = require("../core/assets/material/CCMaterial"); + var RenderFlow = require("../core/renderer/render-flow"); + var _mat4_temp = cc.mat4(); + var _vec2_temp = cc.v2(); + var _vec2_temp2 = cc.v2(); + var _vec2_temp3 = cc.v2(); + var _tempRowCol = { + row: 0, + col: 0 + }; + var TiledUserNodeData = cc.Class({ + name: "cc.TiledUserNodeData", + extends: cc.Component, + ctor: function ctor() { + this._index = -1; + this._row = -1; + this._col = -1; + this._tiledLayer = null; + } + }); + var TiledLayer = cc.Class({ + name: "cc.TiledLayer", + extends: RenderComponent, + editor: { + inspector: "packages://inspector/inspectors/comps/tiled-layer.js" + }, + ctor: function ctor() { + this._userNodeGrid = {}; + this._userNodeMap = {}; + this._userNodeDirty = false; + this._tiledTiles = []; + this._tilesetIndexArr = []; + this._tilesetIndexToArrIndex = {}; + this._texIdToMatIndex = {}; + this._viewPort = { + x: -1, + y: -1, + width: -1, + height: -1 + }; + this._cullingRect = { + leftDown: { + row: -1, + col: -1 + }, + rightTop: { + row: -1, + col: -1 + } + }; + this._cullingDirty = true; + this._rightTop = { + row: -1, + col: -1 + }; + this._layerInfo = null; + this._mapInfo = null; + this._topOffset = 0; + this._downOffset = 0; + this._leftOffset = 0; + this._rightOffset = 0; + this._tiles = []; + this._vertices = []; + this._verticesDirty = true; + this._layerName = ""; + this._layerOrientation = null; + this._texGrids = null; + this._textures = null; + this._tilesets = null; + this._leftDownToCenterX = 0; + this._leftDownToCenterY = 0; + this._hasTiledNodeGrid = false; + this._hasAniGrid = false; + this._animations = null; + this._enableCulling = cc.macro.ENABLE_TILEDMAP_CULLING; + }, + _hasTiledNode: function _hasTiledNode() { + return this._hasTiledNodeGrid; + }, + _hasAnimation: function _hasAnimation() { + return this._hasAniGrid; + }, + enableCulling: function enableCulling(value) { + if (this._enableCulling != value) { + this._enableCulling = value; + this._cullingDirty = true; + } + }, + addUserNode: function addUserNode(node) { + var dataComp = node.getComponent(TiledUserNodeData); + if (dataComp) { + cc.warn("CCTiledLayer:addUserNode node has been added"); + return false; + } + dataComp = node.addComponent(TiledUserNodeData); + node.parent = this.node; + node._renderFlag |= RenderFlow.FLAG_BREAK_FLOW; + this._userNodeMap[node._id] = dataComp; + dataComp._row = -1; + dataComp._col = -1; + dataComp._tiledLayer = this; + this._nodeLocalPosToLayerPos(node, _vec2_temp); + this._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + this._addUserNodeToGrid(dataComp, _tempRowCol); + this._updateCullingOffsetByUserNode(node); + node.on(cc.Node.EventType.POSITION_CHANGED, this._userNodePosChange, dataComp); + node.on(cc.Node.EventType.SIZE_CHANGED, this._userNodeSizeChange, dataComp); + return true; + }, + removeUserNode: function removeUserNode(node) { + var dataComp = node.getComponent(TiledUserNodeData); + if (!dataComp) { + cc.warn("CCTiledLayer:removeUserNode node is not exist"); + return false; + } + node.off(cc.Node.EventType.POSITION_CHANGED, this._userNodePosChange, dataComp); + node.off(cc.Node.EventType.SIZE_CHANGED, this._userNodeSizeChange, dataComp); + this._removeUserNodeFromGrid(dataComp); + delete this._userNodeMap[node._id]; + node._removeComponent(dataComp); + dataComp.destroy(); + node.removeFromParent(true); + node._renderFlag &= ~RenderFlow.FLAG_BREAK_FLOW; + return true; + }, + destroyUserNode: function destroyUserNode(node) { + this.removeUserNode(node); + node.destroy(); + }, + _nodeLocalPosToLayerPos: function _nodeLocalPosToLayerPos(nodePos, out) { + out.x = nodePos.x + this._leftDownToCenterX; + out.y = nodePos.y + this._leftDownToCenterY; + }, + _getNodesByRowCol: function _getNodesByRowCol(row, col) { + var rowData = this._userNodeGrid[row]; + if (!rowData) return null; + return rowData[col]; + }, + _getNodesCountByRow: function _getNodesCountByRow(row) { + var rowData = this._userNodeGrid[row]; + if (!rowData) return 0; + return rowData.count; + }, + _updateAllUserNode: function _updateAllUserNode() { + this._userNodeGrid = {}; + for (var dataId in this._userNodeMap) { + var dataComp = this._userNodeMap[dataId]; + this._nodeLocalPosToLayerPos(dataComp.node, _vec2_temp); + this._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + this._addUserNodeToGrid(dataComp, _tempRowCol); + this._updateCullingOffsetByUserNode(dataComp.node); + } + }, + _updateCullingOffsetByUserNode: function _updateCullingOffsetByUserNode(node) { + this._topOffset < node.height && (this._topOffset = node.height); + this._downOffset < node.height && (this._downOffset = node.height); + this._leftOffset < node.width && (this._leftOffset = node.width); + this._rightOffset < node.width && (this._rightOffset = node.width); + }, + _userNodeSizeChange: function _userNodeSizeChange() { + var dataComp = this; + var node = dataComp.node; + var self = dataComp._tiledLayer; + self._updateCullingOffsetByUserNode(node); + }, + _userNodePosChange: function _userNodePosChange() { + var dataComp = this; + var node = dataComp.node; + var self = dataComp._tiledLayer; + self._nodeLocalPosToLayerPos(node, _vec2_temp); + self._positionToRowCol(_vec2_temp.x, _vec2_temp.y, _tempRowCol); + self._limitInLayer(_tempRowCol); + if (_tempRowCol.row === dataComp._row && _tempRowCol.col === dataComp._col) return; + self._removeUserNodeFromGrid(dataComp); + self._addUserNodeToGrid(dataComp, _tempRowCol); + }, + _removeUserNodeFromGrid: function _removeUserNodeFromGrid(dataComp) { + var row = dataComp._row; + var col = dataComp._col; + var index = dataComp._index; + var rowData = this._userNodeGrid[row]; + var colData = rowData && rowData[col]; + if (colData) { + rowData.count--; + colData.count--; + colData.list[index] = null; + if (colData.count <= 0) { + colData.list.length = 0; + colData.count = 0; + } + } + dataComp._row = -1; + dataComp._col = -1; + dataComp._index = -1; + this._userNodeDirty = true; + }, + _limitInLayer: function _limitInLayer(rowCol) { + var row = rowCol.row; + var col = rowCol.col; + row < 0 && (rowCol.row = 0); + row > this._rightTop.row && (rowCol.row = this._rightTop.row); + col < 0 && (rowCol.col = 0); + col > this._rightTop.col && (rowCol.col = this._rightTop.col); + }, + _addUserNodeToGrid: function _addUserNodeToGrid(dataComp, tempRowCol) { + var row = tempRowCol.row; + var col = tempRowCol.col; + var rowData = this._userNodeGrid[row] = this._userNodeGrid[row] || { + count: 0 + }; + var colData = rowData[col] = rowData[col] || { + count: 0, + list: [] + }; + dataComp._row = row; + dataComp._col = col; + dataComp._index = colData.list.length; + rowData.count++; + colData.count++; + colData.list.push(dataComp); + this._userNodeDirty = true; + }, + _isUserNodeDirty: function _isUserNodeDirty() { + return this._userNodeDirty; + }, + _setUserNodeDirty: function _setUserNodeDirty(value) { + this._userNodeDirty = value; + }, + onEnable: function onEnable() { + this._super(); + this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + this._activateMaterial(); + }, + onDisable: function onDisable() { + this._super(); + this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + }, + _syncAnchorPoint: function _syncAnchorPoint() { + var node = this.node; + this._leftDownToCenterX = node.width * node.anchorX * node.scaleX; + this._leftDownToCenterY = node.height * node.anchorY * node.scaleY; + this._cullingDirty = true; + }, + onDestroy: function onDestroy() { + this._super(); + if (this._buffer) { + this._buffer.destroy(); + this._buffer = null; + } + this._renderDataList = null; + }, + getLayerName: function getLayerName() { + return this._layerName; + }, + setLayerName: function setLayerName(layerName) { + this._layerName = layerName; + }, + getProperty: function getProperty(propertyName) { + return this._properties[propertyName]; + }, + getPositionAt: function getPositionAt(pos, y) { + var x; + if (void 0 !== y) { + x = Math.floor(pos); + y = Math.floor(y); + } else { + x = Math.floor(pos.x); + y = Math.floor(pos.y); + } + var ret; + switch (this._layerOrientation) { + case cc.TiledMap.Orientation.ORTHO: + ret = this._positionForOrthoAt(x, y); + break; + + case cc.TiledMap.Orientation.ISO: + ret = this._positionForIsoAt(x, y); + break; + + case cc.TiledMap.Orientation.HEX: + ret = this._positionForHexAt(x, y); + } + return ret; + }, + _isInvalidPosition: function _isInvalidPosition(x, y) { + if (x && "object" === typeof x) { + var pos = x; + y = pos.y; + x = pos.x; + } + return x >= this._layerSize.width || y >= this._layerSize.height || x < 0 || y < 0; + }, + _positionForIsoAt: function _positionForIsoAt(x, y) { + var offsetX = 0, offsetY = 0; + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var gidAndFlags = this._tiles[index]; + if (gidAndFlags) { + var gid = (gidAndFlags & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0; + var tileset = this._texGrids[gid].tileset; + var offset = tileset.tileOffset; + offsetX = offset.x; + offsetY = offset.y; + } + return cc.v2(.5 * this._mapTileSize.width * (this._layerSize.height + x - y - 1) + offsetX, .5 * this._mapTileSize.height * (this._layerSize.width - x + this._layerSize.height - y - 2) - offsetY); + }, + _positionForOrthoAt: function _positionForOrthoAt(x, y) { + var offsetX = 0, offsetY = 0; + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var gidAndFlags = this._tiles[index]; + if (gidAndFlags) { + var gid = (gidAndFlags & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0; + var tileset = this._texGrids[gid].tileset; + var offset = tileset.tileOffset; + offsetX = offset.x; + offsetY = offset.y; + } + return cc.v2(x * this._mapTileSize.width + offsetX, (this._layerSize.height - y - 1) * this._mapTileSize.height - offsetY); + }, + _positionForHexAt: function _positionForHexAt(col, row) { + var tileWidth = this._mapTileSize.width; + var tileHeight = this._mapTileSize.height; + var rows = this._layerSize.height; + var index = Math.floor(col) + Math.floor(row) * this._layerSize.width; + var gid = this._tiles[index]; + var offset; + offset = this._texGrids[gid] ? this._texGrids[gid].tileset.tileOffset : { + x: 0, + y: 0 + }; + var odd_even = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + var x = 0, y = 0; + var diffX = 0; + var diffY = 0; + switch (this._staggerAxis) { + case cc.TiledMap.StaggerAxis.STAGGERAXIS_Y: + diffX = 0; + row % 2 === 1 && (diffX = tileWidth / 2 * odd_even); + x = col * tileWidth + diffX + offset.x; + y = (rows - row - 1) * (tileHeight - (tileHeight - this._hexSideLength) / 2) - offset.y; + break; + + case cc.TiledMap.StaggerAxis.STAGGERAXIS_X: + diffY = 0; + col % 2 === 1 && (diffY = tileHeight / 2 * -odd_even); + x = col * (tileWidth - (tileWidth - this._hexSideLength) / 2) + offset.x; + y = (rows - row - 1) * tileHeight + diffY - offset.y; + } + return cc.v2(x, y); + }, + setTilesGIDAt: function setTilesGIDAt(gids, beginCol, beginRow, totalCols) { + if (!gids || 0 === gids.length || totalCols <= 0) return; + beginRow < 0 && (beginRow = 0); + beginCol < 0 && (beginCol = 0); + var gidsIdx = 0; + var endCol = beginCol + totalCols; + for (var row = beginRow; ; row++) for (var col = beginCol; col < endCol; col++) { + if (gidsIdx >= gids.length) return; + this._updateTileForGID(gids[gidsIdx], col, row); + gidsIdx++; + } + }, + setTileGIDAt: function setTileGIDAt(gid, posOrX, flagsOrY, flags) { + if (void 0 === posOrX) throw new Error("cc.TiledLayer.setTileGIDAt(): pos should be non-null"); + var pos; + if (void 0 === flags && posOrX instanceof cc.Vec2) { + pos = posOrX; + flags = flagsOrY; + } else { + _vec2_temp3.x = posOrX; + _vec2_temp3.y = flagsOrY; + pos = _vec2_temp3; + } + var ugid = gid & cc.TiledMap.TileFlag.FLIPPED_MASK; + pos.x = Math.floor(pos.x); + pos.y = Math.floor(pos.y); + if (this._isInvalidPosition(pos)) throw new Error("cc.TiledLayer.setTileGIDAt(): invalid position"); + if (!this._tiles || !this._tilesets || 0 == this._tilesets.length) { + cc.logID(7238); + return; + } + if (0 !== ugid && ugid < this._tilesets[0].firstGid) { + cc.logID(7239, gid); + return; + } + flags = flags || 0; + this._updateTileForGID((gid | flags) >>> 0, pos.x, pos.y); + }, + _updateTileForGID: function _updateTileForGID(gidAndFlags, x, y) { + var idx = 0 | x + y * this._layerSize.width; + if (idx >= this._tiles.length) return; + var oldGIDAndFlags = this._tiles[idx]; + if (gidAndFlags === oldGIDAndFlags) return; + var gid = (gidAndFlags & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0; + var grid = this._texGrids[gid]; + var tilesetIdx = grid && grid.texId; + if (grid) { + this._tiles[idx] = gidAndFlags; + this._updateVertex(x, y); + this._buildMaterial(tilesetIdx); + } else this._tiles[idx] = 0; + this._cullingDirty = true; + }, + getTiles: function getTiles() { + return this._tiles; + }, + getTileGIDAt: function getTileGIDAt(pos, y) { + if (void 0 === pos) throw new Error("cc.TiledLayer.getTileGIDAt(): pos should be non-null"); + var x = pos; + if (void 0 === y) { + x = pos.x; + y = pos.y; + } + if (this._isInvalidPosition(x, y)) throw new Error("cc.TiledLayer.getTileGIDAt(): invalid position"); + if (!this._tiles) { + cc.logID(7237); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var tile = this._tiles[index]; + return (tile & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0; + }, + getTileFlagsAt: function getTileFlagsAt(pos, y) { + if (!pos) throw new Error("TiledLayer.getTileFlagsAt: pos should be non-null"); + void 0 !== y && (pos = cc.v2(pos, y)); + if (this._isInvalidPosition(pos)) throw new Error("TiledLayer.getTileFlagsAt: invalid position"); + if (!this._tiles) { + cc.logID(7240); + return null; + } + var idx = Math.floor(pos.x) + Math.floor(pos.y) * this._layerSize.width; + var tile = this._tiles[idx]; + return (tile & cc.TiledMap.TileFlag.FLIPPED_ALL) >>> 0; + }, + _setCullingDirty: function _setCullingDirty(value) { + this._cullingDirty = value; + }, + _isCullingDirty: function _isCullingDirty() { + return this._cullingDirty; + }, + _updateViewPort: function _updateViewPort(x, y, width, height) { + if (this._viewPort.width === width && this._viewPort.height === height && this._viewPort.x === x && this._viewPort.y === y) return; + this._viewPort.x = x; + this._viewPort.y = y; + this._viewPort.width = width; + this._viewPort.height = height; + var reserveLine = 1; + this._layerOrientation === cc.TiledMap.Orientation.ISO && (reserveLine = 2); + var vpx = this._viewPort.x - this._offset.x + this._leftDownToCenterX; + var vpy = this._viewPort.y - this._offset.y + this._leftDownToCenterY; + var leftDownX = vpx - this._leftOffset; + var leftDownY = vpy - this._downOffset; + var rightTopX = vpx + width + this._rightOffset; + var rightTopY = vpy + height + this._topOffset; + var leftDown = this._cullingRect.leftDown; + var rightTop = this._cullingRect.rightTop; + leftDownX < 0 && (leftDownX = 0); + leftDownY < 0 && (leftDownY = 0); + this._positionToRowCol(leftDownX, leftDownY, _tempRowCol); + _tempRowCol.row -= reserveLine; + _tempRowCol.col -= reserveLine; + _tempRowCol.row = _tempRowCol.row > 0 ? _tempRowCol.row : 0; + _tempRowCol.col = _tempRowCol.col > 0 ? _tempRowCol.col : 0; + if (_tempRowCol.row !== leftDown.row || _tempRowCol.col !== leftDown.col) { + leftDown.row = _tempRowCol.row; + leftDown.col = _tempRowCol.col; + this._cullingDirty = true; + } + if (rightTopX < 0 || rightTopY < 0) { + _tempRowCol.row = -1; + _tempRowCol.col = -1; + } else { + this._positionToRowCol(rightTopX, rightTopY, _tempRowCol); + _tempRowCol.row++; + _tempRowCol.col++; + } + _tempRowCol.row > this._rightTop.row && (_tempRowCol.row = this._rightTop.row); + _tempRowCol.col > this._rightTop.col && (_tempRowCol.col = this._rightTop.col); + if (_tempRowCol.row !== rightTop.row || _tempRowCol.col !== rightTop.col) { + rightTop.row = _tempRowCol.row; + rightTop.col = _tempRowCol.col; + this._cullingDirty = true; + } + }, + _positionToRowCol: function _positionToRowCol(x, y, result) { + var TiledMap = cc.TiledMap; + var Orientation = TiledMap.Orientation; + var StaggerAxis = TiledMap.StaggerAxis; + var maptw = this._mapTileSize.width, mapth = this._mapTileSize.height, maptw2 = .5 * maptw, mapth2 = .5 * mapth; + var row = 0, col = 0, diffX2 = 0, diffY2 = 0, axis = this._staggerAxis; + var cols = this._layerSize.width; + switch (this._layerOrientation) { + case Orientation.ORTHO: + col = Math.floor(x / maptw); + row = Math.floor(y / mapth); + break; + + case Orientation.ISO: + col = Math.floor(x / maptw2); + row = Math.floor(y / mapth2); + break; + + case Orientation.HEX: + if (axis === StaggerAxis.STAGGERAXIS_Y) { + row = Math.floor(y / (mapth - this._diffY1)); + diffX2 = row % 2 === 1 ? maptw2 * this._odd_even : 0; + col = Math.floor((x - diffX2) / maptw); + } else { + col = Math.floor(x / (maptw - this._diffX1)); + diffY2 = col % 2 === 1 ? mapth2 * -this._odd_even : 0; + row = Math.floor((y - diffY2) / mapth); + } + } + result.row = row; + result.col = col; + return result; + }, + _updateCulling: function _updateCulling() { + false; + if (this._enableCulling) { + this.node._updateWorldMatrix(); + _valueTypes.Mat4.invert(_mat4_temp, this.node._worldMatrix); + var rect = cc.visibleRect; + var camera = cc.Camera.findCamera(this.node); + if (camera) { + _vec2_temp.x = 0; + _vec2_temp.y = 0; + _vec2_temp2.x = _vec2_temp.x + rect.width; + _vec2_temp2.y = _vec2_temp.y + rect.height; + camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); + camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); + _valueTypes.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); + _valueTypes.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); + this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); + } + } + }, + getLayerOrientation: function getLayerOrientation() { + return this._layerOrientation; + }, + getProperties: function getProperties() { + return this._properties; + }, + _updateVertex: function _updateVertex(col, row) { + var TiledMap = cc.TiledMap; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var StaggerAxis = TiledMap.StaggerAxis; + var Orientation = TiledMap.Orientation; + var vertices = this._vertices; + var layerOrientation = this._layerOrientation, tiles = this._tiles; + if (!tiles) return; + var rightTop = this._rightTop; + var maptw = this._mapTileSize.width, mapth = this._mapTileSize.height, maptw2 = .5 * maptw, mapth2 = .5 * mapth, rows = this._layerSize.height, cols = this._layerSize.width, grids = this._texGrids; + var gid, grid, left, bottom, axis, diffX1, diffY1, odd_even, diffX2, diffY2; + if (layerOrientation === Orientation.HEX) { + axis = this._staggerAxis; + diffX1 = this._diffX1; + diffY1 = this._diffY1; + odd_even = this._odd_even; + } + var cullingCol = 0, cullingRow = 0; + var tileOffset = null, gridGID = 0; + var topBorder = 0, downBorder = 0, leftBorder = 0, rightBorder = 0; + var index = row * cols + col; + gid = tiles[index]; + gridGID = (gid & FLIPPED_MASK) >>> 0; + grid = grids[gridGID]; + if (!grid) return; + this._animations[gridGID] && (this._hasAniGrid = this._hasAniGrid || true); + switch (layerOrientation) { + case Orientation.ORTHO: + cullingCol = col; + cullingRow = rows - row - 1; + left = cullingCol * maptw; + bottom = cullingRow * mapth; + break; + + case Orientation.ISO: + cullingCol = rows + col - row - 1; + cullingRow = rows + cols - col - row - 2; + left = maptw2 * cullingCol; + bottom = mapth2 * cullingRow; + break; + + case Orientation.HEX: + diffX2 = axis === StaggerAxis.STAGGERAXIS_Y && row % 2 === 1 ? maptw2 * odd_even : 0; + diffY2 = axis === StaggerAxis.STAGGERAXIS_X && col % 2 === 1 ? mapth2 * -odd_even : 0; + left = col * (maptw - diffX1) + diffX2; + bottom = (rows - row - 1) * (mapth - diffY1) + diffY2; + cullingCol = col; + cullingRow = rows - row - 1; + } + var rowData = vertices[cullingRow] = vertices[cullingRow] || { + minCol: 0, + maxCol: 0 + }; + var colData = rowData[cullingCol] = rowData[cullingCol] || {}; + rowData.minCol > cullingCol && (rowData.minCol = cullingCol); + rowData.maxCol < cullingCol && (rowData.maxCol = cullingCol); + rightTop.row < cullingRow && (rightTop.row = cullingRow); + rightTop.col < cullingCol && (rightTop.col = cullingCol); + tileOffset = grid.tileset.tileOffset; + left += this._offset.x + tileOffset.x; + bottom += this._offset.y - tileOffset.y; + topBorder = -tileOffset.y + grid.tileset._tileSize.height - mapth; + topBorder = topBorder < 0 ? 0 : topBorder; + downBorder = tileOffset.y < 0 ? 0 : tileOffset.y; + leftBorder = -tileOffset.x < 0 ? 0 : -tileOffset.x; + rightBorder = tileOffset.x + grid.tileset._tileSize.width - maptw; + rightBorder = rightBorder < 0 ? 0 : rightBorder; + this._rightOffset < leftBorder && (this._rightOffset = leftBorder); + this._leftOffset < rightBorder && (this._leftOffset = rightBorder); + this._topOffset < downBorder && (this._topOffset = downBorder); + this._downOffset < topBorder && (this._downOffset = topBorder); + colData.left = left; + colData.bottom = bottom; + colData.index = index; + this._cullingDirty = true; + }, + _updateVertices: function _updateVertices() { + var vertices = this._vertices; + vertices.length = 0; + var tiles = this._tiles; + if (!tiles) return; + var rightTop = this._rightTop; + rightTop.row = -1; + rightTop.col = -1; + var rows = this._layerSize.height, cols = this._layerSize.width; + this._topOffset = 0; + this._downOffset = 0; + this._leftOffset = 0; + this._rightOffset = 0; + this._hasAniGrid = false; + for (var row = 0; row < rows; ++row) for (var col = 0; col < cols; ++col) this._updateVertex(col, row); + this._verticesDirty = false; + }, + getTiledTileAt: function getTiledTileAt(x, y, forceCreate) { + if (this._isInvalidPosition(x, y)) throw new Error("TiledLayer.getTiledTileAt: invalid position"); + if (!this._tiles) { + cc.logID(7236); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + var tile = this._tiledTiles[index]; + if (!tile && forceCreate) { + var node = new cc.Node(); + tile = node.addComponent(cc.TiledTile); + tile._x = x; + tile._y = y; + tile._layer = this; + tile._updateInfo(); + node.parent = this.node; + return tile; + } + return tile; + }, + setTiledTileAt: function setTiledTileAt(x, y, tiledTile) { + if (this._isInvalidPosition(x, y)) throw new Error("TiledLayer.setTiledTileAt: invalid position"); + if (!this._tiles) { + cc.logID(7236); + return null; + } + var index = Math.floor(x) + Math.floor(y) * this._layerSize.width; + this._tiledTiles[index] = tiledTile; + this._cullingDirty = true; + this._hasTiledNodeGrid = !!tiledTile || this._tiledTiles.some((function (tiledNode, index) { + return !!tiledNode; + })); + return tiledTile; + }, + getTexture: function getTexture(index) { + index = index || 0; + if (this._textures && index >= 0 && this._textures.length > index) return this._textures[index]; + return null; + }, + getTextures: function getTextures() { + return this._textures; + }, + setTexture: function setTexture(texture) { + this.setTextures([texture]); + }, + setTextures: function setTextures(textures) { + this._textures = textures; + this._activateMaterial(); + }, + getLayerSize: function getLayerSize() { + return this._layerSize; + }, + getMapTileSize: function getMapTileSize() { + return this._mapTileSize; + }, + getTileSet: function getTileSet(index) { + index = index || 0; + if (this._tilesets && index >= 0 && this._tilesets.length > index) return this._tilesets[index]; + return null; + }, + getTileSets: function getTileSets() { + return this._tilesets; + }, + setTileSet: function setTileSet(tileset) { + this.setTileSets([tileset]); + }, + setTileSets: function setTileSets(tilesets) { + this._tilesets = tilesets; + var textures = this._textures = []; + var texGrids = this._texGrids = []; + for (var i = 0; i < tilesets.length; i++) { + var tileset = tilesets[i]; + tileset && (textures[i] = tileset.sourceImage); + } + cc.TiledMap.loadAllTextures(textures, function () { + for (var _i = 0, l = tilesets.length; _i < l; ++_i) { + var tilesetInfo = tilesets[_i]; + if (!tilesetInfo) continue; + cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, _i); + } + this._prepareToRender(); + }.bind(this)); + }, + _traverseAllGrid: function _traverseAllGrid() { + var tiles = this._tiles; + var texGrids = this._texGrids; + var tilesetIndexArr = this._tilesetIndexArr; + var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; + var TiledMap = cc.TiledMap; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + tilesetIndexArr.length = 0; + for (var i = 0; i < tiles.length; i++) { + var gid = tiles[i]; + if (0 === gid) continue; + gid = (gid & FLIPPED_MASK) >>> 0; + var grid = texGrids[gid]; + if (!grid) { + cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); + continue; + } + var tilesetIdx = grid.texId; + if (void 0 !== tilesetIndexToArrIndex[tilesetIdx]) continue; + tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; + tilesetIndexArr.push(tilesetIdx); + } + }, + _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids) { + this._cullingDirty = true; + this._layerInfo = layerInfo; + this._mapInfo = mapInfo; + var size = layerInfo._layerSize; + this._layerName = layerInfo.name; + this._tiles = layerInfo._tiles; + this._properties = layerInfo.properties; + this._layerSize = size; + this._minGID = layerInfo._minGID; + this._maxGID = layerInfo._maxGID; + this._opacity = layerInfo._opacity; + this._renderOrder = mapInfo.renderOrder; + this._staggerAxis = mapInfo.getStaggerAxis(); + this._staggerIndex = mapInfo.getStaggerIndex(); + this._hexSideLength = mapInfo.getHexSideLength(); + this._animations = mapInfo.getTileAnimations(); + this._tilesets = tilesets; + this._textures = textures; + this._texGrids = texGrids; + this._layerOrientation = mapInfo.orientation; + this._mapTileSize = mapInfo.getTileSize(); + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var layerW = this._layerSize.width; + var layerH = this._layerSize.height; + if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { + var TiledMap = cc.TiledMap; + var StaggerAxis = TiledMap.StaggerAxis; + var StaggerIndex = TiledMap.StaggerIndex; + var width = 0, height = 0; + this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { + this._diffX1 = (maptw - this._hexSideLength) / 2; + this._diffY1 = 0; + height = mapth * (layerH + .5); + width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); + } else { + this._diffX1 = 0; + this._diffY1 = (mapth - this._hexSideLength) / 2; + width = maptw * (layerW + .5); + height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); + } + this.node.setContentSize(width, height); + } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { + var wh = layerW + layerH; + this.node.setContentSize(.5 * maptw * wh, .5 * mapth * wh); + } else this.node.setContentSize(layerW * maptw, layerH * mapth); + this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + this._useAutomaticVertexZ = false; + this._vertexZvalue = 0; + this._syncAnchorPoint(); + this._prepareToRender(); + }, + _prepareToRender: function _prepareToRender() { + this._updateVertices(); + this._traverseAllGrid(); + this._updateAllUserNode(); + this._activateMaterial(); + }, + _buildMaterial: function _buildMaterial(tilesetIdx) { + var texIdMatIdx = this._texIdToMatIndex; + if (void 0 !== texIdMatIdx[tilesetIdx]) return null; + var tilesetIndexArr = this._tilesetIndexArr; + var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex; + var index = tilesetIndexToArrIndex[tilesetIdx]; + if (void 0 === index) { + tilesetIndexToArrIndex[tilesetIdx] = index = tilesetIndexArr.length; + tilesetIndexArr.push(tilesetIdx); + } + var texture = this._textures[tilesetIdx]; + var material = this._materials[index]; + material || (material = Material.getBuiltinMaterial("2d-sprite")); + material = _materialVariant["default"].create(material, this); + material.define("CC_USE_MODEL", true); + material.setProperty("texture", texture); + this._materials[index] = material; + texIdMatIdx[tilesetIdx] = index; + return material; + }, + _activateMaterial: function _activateMaterial() { + var tilesetIndexArr = this._tilesetIndexArr; + if (0 === tilesetIndexArr.length) { + this.disableRender(); + return; + } + var matLen = tilesetIndexArr.length; + for (var i = 0; i < matLen; i++) this._buildMaterial(tilesetIndexArr[i]); + this._materials.length = matLen; + this.markForRender(true); + } + }); + cc.TiledLayer = module.exports = TiledLayer; + }), { + "../core/assets/material/CCMaterial": 124, + "../core/assets/material/material-variant": 131, + "../core/components/CCRenderComponent": 160, + "../core/renderer/render-flow": 272, + "../core/value-types": 339 + }], + 399: [(function (require, module, exports) { + "use strict"; + require("./CCTMXXMLParser"); + require("./CCTiledMapAsset"); + require("./CCTiledLayer"); + require("./CCTiledTile"); + require("./CCTiledObjectGroup"); + var Orientation = cc.Enum({ + ORTHO: 0, + HEX: 1, + ISO: 2 + }); + var Property = cc.Enum({ + NONE: 0, + MAP: 1, + LAYER: 2, + OBJECTGROUP: 3, + OBJECT: 4, + TILE: 5 + }); + var TileFlag = cc.Enum({ + HORIZONTAL: 2147483648, + VERTICAL: 1073741824, + DIAGONAL: 536870912, + FLIPPED_ALL: 4026531840, + FLIPPED_MASK: 268435455 + }); + var StaggerAxis = cc.Enum({ + STAGGERAXIS_X: 0, + STAGGERAXIS_Y: 1 + }); + var StaggerIndex = cc.Enum({ + STAGGERINDEX_ODD: 0, + STAGGERINDEX_EVEN: 1 + }); + var RenderOrder = cc.Enum({ + RightDown: 0, + RightUp: 1, + LeftDown: 2, + LeftUp: 3 + }); + var TMXObjectType = cc.Enum({ + RECT: 0, + ELLIPSE: 1, + POLYGON: 2, + POLYLINE: 3, + IMAGE: 4, + TEXT: 5 + }); + var TiledMap = cc.Class({ + name: "cc.TiledMap", + extends: cc.Component, + editor: false, + ctor: function ctor() { + this._texGrids = []; + this._textures = []; + this._tilesets = []; + this._animations = []; + this._imageLayers = []; + this._layers = []; + this._groups = []; + this._images = []; + this._properties = []; + this._tileProperties = []; + this._mapSize = cc.size(0, 0); + this._tileSize = cc.size(0, 0); + }, + statics: { + Orientation: Orientation, + Property: Property, + TileFlag: TileFlag, + StaggerAxis: StaggerAxis, + StaggerIndex: StaggerIndex, + TMXObjectType: TMXObjectType, + RenderOrder: RenderOrder + }, + properties: { + _tmxFile: { + default: null, + type: cc.TiledMapAsset + }, + tmxAsset: { + get: function get() { + return this._tmxFile; + }, + set: function set(value, force) { + if (this._tmxFile !== value || false) { + this._tmxFile = value; + this._applyFile(); + } + }, + type: cc.TiledMapAsset + } + }, + getMapSize: function getMapSize() { + return this._mapSize; + }, + getTileSize: function getTileSize() { + return this._tileSize; + }, + getMapOrientation: function getMapOrientation() { + return this._mapOrientation; + }, + getObjectGroups: function getObjectGroups() { + return this._groups; + }, + getObjectGroup: function getObjectGroup(groupName) { + var groups = this._groups; + for (var i = 0, l = groups.length; i < l; i++) { + var group = groups[i]; + if (group && group.getGroupName() === groupName) return group; + } + return null; + }, + enableCulling: function enableCulling(value) { + var layers = this._layers; + for (var i = 0; i < layers.length; ++i) layers[i].enableCulling(value); + }, + getProperties: function getProperties() { + return this._properties; + }, + getLayers: function getLayers() { + return this._layers; + }, + getLayer: function getLayer(layerName) { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + var layer = layers[i]; + if (layer && layer.getLayerName() === layerName) return layer; + } + return null; + }, + _changeLayer: function _changeLayer(layerName, replaceLayer) { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + var layer = layers[i]; + if (layer && layer.getLayerName() === layerName) { + layers[i] = replaceLayer; + return; + } + } + }, + getProperty: function getProperty(propertyName) { + return this._properties[propertyName.toString()]; + }, + getPropertiesForGID: function getPropertiesForGID(GID) { + return this._tileProperties[GID]; + }, + __preload: function __preload() { + this._tmxFile && this._applyFile(); + }, + onEnable: function onEnable() { + this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + }, + onDisable: function onDisable() { + this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this); + }, + _applyFile: function _applyFile() { + var file = this._tmxFile; + if (file) { + var texValues = file.textures; + var texKeys = file.textureNames; + var texSizes = file.textureSizes; + var textures = {}; + var textureSizes = {}; + for (var i = 0; i < texValues.length; ++i) { + var texName = texKeys[i]; + textures[texName] = texValues[i]; + textureSizes[texName] = texSizes[i]; + } + var imageLayerTextures = {}; + texValues = file.imageLayerTextures; + texKeys = file.imageLayerTextureNames; + for (var _i = 0; _i < texValues.length; ++_i) imageLayerTextures[texKeys[_i]] = texValues[_i]; + var tsxFileNames = file.tsxFileNames; + var tsxFiles = file.tsxFiles; + var tsxMap = {}; + for (var _i2 = 0; _i2 < tsxFileNames.length; ++_i2) tsxFileNames[_i2].length > 0 && (tsxMap[tsxFileNames[_i2]] = tsxFiles[_i2].text); + var mapInfo = new cc.TMXMapInfo(file.tmxXmlStr, tsxMap, textures, textureSizes, imageLayerTextures); + var tilesets = mapInfo.getTilesets(); + tilesets && 0 !== tilesets.length || cc.logID(7241); + this._buildWithMapInfo(mapInfo); + } else this._releaseMapInfo(); + }, + _releaseMapInfo: function _releaseMapInfo() { + var layers = this._layers; + for (var i = 0, l = layers.length; i < l; i++) { + layers[i].node.removeFromParent(true); + layers[i].node.destroy(); + } + layers.length = 0; + var groups = this._groups; + for (var _i3 = 0, _l = groups.length; _i3 < _l; _i3++) { + groups[_i3].node.removeFromParent(true); + groups[_i3].node.destroy(); + } + groups.length = 0; + var images = this._images; + for (var _i4 = 0, _l2 = images.length; _i4 < _l2; _i4++) { + images[_i4].removeFromParent(true); + images[_i4].destroy(); + } + images.length = 0; + }, + _syncAnchorPoint: function _syncAnchorPoint() { + var anchor = this.node.getAnchorPoint(); + var leftTopX = this.node.width * anchor.x; + var leftTopY = this.node.height * (1 - anchor.y); + var i, l; + for (i = 0, l = this._layers.length; i < l; i++) { + var layerInfo = this._layers[i]; + var layerNode = layerInfo.node; + layerNode.setAnchorPoint(anchor); + } + for (i = 0, l = this._groups.length; i < l; i++) { + var groupInfo = this._groups[i]; + var groupNode = groupInfo.node; + groupNode.anchorX = .5; + groupNode.anchorY = .5; + groupNode.x = groupInfo._offset.x - leftTopX + groupNode.width * groupNode.anchorX; + groupNode.y = groupInfo._offset.y + leftTopY - groupNode.height * groupNode.anchorY; + } + for (i = 0, l = this._images.length; i < l; i++) { + var image = this._images[i]; + image.anchorX = .5; + image.anchorY = .5; + image.x = image._offset.x - leftTopX + image.width * image.anchorX; + image.y = image._offset.y + leftTopY - image.height * image.anchorY; + } + }, + _fillAniGrids: function _fillAniGrids(texGrids, animations) { + for (var i in animations) { + var animation = animations[i]; + if (!animation) continue; + var frames = animation.frames; + for (var j = 0; j < frames.length; j++) { + var frame = frames[j]; + frame.grid = texGrids[frame.tileid]; + } + } + }, + _buildLayerAndGroup: function _buildLayerAndGroup() { + var tilesets = this._tilesets; + var texGrids = this._texGrids; + var animations = this._animations; + texGrids.length = 0; + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo) continue; + cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i); + } + this._fillAniGrids(texGrids, animations); + var layers = this._layers; + var groups = this._groups; + var images = this._images; + var oldNodeNames = {}; + for (var _i5 = 0, n = layers.length; _i5 < n; _i5++) oldNodeNames[layers[_i5].node._name] = true; + for (var _i6 = 0, _n = groups.length; _i6 < _n; _i6++) oldNodeNames[groups[_i6].node._name] = true; + for (var _i7 = 0, _n2 = images.length; _i7 < _n2; _i7++) oldNodeNames[images[_i7]._name] = true; + layers = this._layers = []; + groups = this._groups = []; + images = this._images = []; + var mapInfo = this._mapInfo; + var node = this.node; + var layerInfos = mapInfo.getAllChildren(); + var textures = this._textures; + var maxWidth = 0; + var maxHeight = 0; + if (layerInfos && layerInfos.length > 0) for (var _i8 = 0, len = layerInfos.length; _i8 < len; _i8++) { + var layerInfo = layerInfos[_i8]; + var name = layerInfo.name; + var child = this.node.getChildByName(name); + oldNodeNames[name] = false; + if (!child) { + child = new cc.Node(); + child.name = name; + node.addChild(child); + } + child.setSiblingIndex(_i8); + child.active = layerInfo.visible; + if (layerInfo instanceof cc.TMXLayerInfo) { + var layer = child.getComponent(cc.TiledLayer); + layer || (layer = child.addComponent(cc.TiledLayer)); + layer._init(layerInfo, mapInfo, tilesets, textures, texGrids); + layerInfo.ownTiles = false; + layers.push(layer); + } else if (layerInfo instanceof cc.TMXObjectGroupInfo) { + var group = child.getComponent(cc.TiledObjectGroup); + group || (group = child.addComponent(cc.TiledObjectGroup)); + group._init(layerInfo, mapInfo, texGrids); + groups.push(group); + } else if (layerInfo instanceof cc.TMXImageLayerInfo) { + var texture = layerInfo.sourceImage; + child.opacity = layerInfo.opacity; + child.layerInfo = layerInfo; + child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + var image = child.getComponent(cc.Sprite); + image || (image = child.addComponent(cc.Sprite)); + var spf = image.spriteFrame || new cc.SpriteFrame(); + spf.setTexture(texture); + image.spriteFrame = spf; + child.width = texture.width; + child.height = texture.height; + images.push(child); + } + maxWidth = Math.max(maxWidth, child.width); + maxHeight = Math.max(maxHeight, child.height); + } + var children = node.children; + for (var _i9 = 0, _n3 = children.length; _i9 < _n3; _i9++) { + var c = children[_i9]; + oldNodeNames[c._name] && c.destroy(); + } + this.node.width = maxWidth; + this.node.height = maxHeight; + this._syncAnchorPoint(); + }, + _buildWithMapInfo: function _buildWithMapInfo(mapInfo) { + this._mapInfo = mapInfo; + this._mapSize = mapInfo.getMapSize(); + this._tileSize = mapInfo.getTileSize(); + this._mapOrientation = mapInfo.orientation; + this._properties = mapInfo.properties; + this._tileProperties = mapInfo.getTileProperties(); + this._imageLayers = mapInfo.getImageLayers(); + this._animations = mapInfo.getTileAnimations(); + this._tilesets = mapInfo.getTilesets(); + var tilesets = this._tilesets; + this._textures.length = 0; + var totalTextures = []; + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo || !tilesetInfo.sourceImage) continue; + this._textures[i] = tilesetInfo.sourceImage; + totalTextures.push(tilesetInfo.sourceImage); + } + for (var _i10 = 0; _i10 < this._imageLayers.length; _i10++) { + var imageLayer = this._imageLayers[_i10]; + if (!imageLayer || !imageLayer.sourceImage) continue; + totalTextures.push(imageLayer.sourceImage); + } + cc.TiledMap.loadAllTextures(totalTextures, function () { + this._buildLayerAndGroup(); + }.bind(this)); + }, + update: function update(dt) { + var animations = this._animations; + var texGrids = this._texGrids; + for (var aniGID in animations) { + var animation = animations[aniGID]; + var frames = animation.frames; + var frame = frames[animation.frameIdx]; + animation.dt += dt; + if (frame.duration < animation.dt) { + animation.dt = 0; + animation.frameIdx++; + animation.frameIdx >= frames.length && (animation.frameIdx = 0); + frame = frames[animation.frameIdx]; + } + texGrids[aniGID] = frame.grid; + } + } + }); + cc.TiledMap = module.exports = TiledMap; + cc.TiledMap.loadAllTextures = function (textures, loadedCallback) { + var totalNum = textures.length; + if (0 === totalNum) { + loadedCallback(); + return; + } + var curNum = 0; + var itemCallback = function itemCallback() { + curNum++; + curNum >= totalNum && loadedCallback(); + }; + for (var i = 0; i < totalNum; i++) { + var tex = textures[i]; + tex.loaded ? itemCallback() : tex.once("load", (function () { + itemCallback(); + })); + } + }; + cc.TiledMap.fillTextureGrids = function (tileset, texGrids, texId) { + var tex = tileset.sourceImage; + if (!tileset.imageSize.width || !tileset.imageSize.height) { + tileset.imageSize.width = tex.width; + tileset.imageSize.height = tex.height; + } + var tw = tileset._tileSize.width, th = tileset._tileSize.height, imageW = tex.width, imageH = tex.height, spacing = tileset.spacing, margin = tileset.margin, cols = Math.floor((imageW - 2 * margin + spacing) / (tw + spacing)), rows = Math.floor((imageH - 2 * margin + spacing) / (th + spacing)), count = rows * cols, gid = tileset.firstGid, grid = null, override = !!texGrids[gid], texelCorrect = cc.macro.FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX ? .5 : 0; + count <= 0 && (count = 1); + var maxGid = tileset.firstGid + count; + for (; gid < maxGid; ++gid) { + override && !texGrids[gid] && (override = false); + if (!override && texGrids[gid]) break; + grid = { + texId: texId, + tileset: tileset, + x: 0, + y: 0, + width: tw, + height: th, + t: 0, + l: 0, + r: 0, + b: 0, + gid: gid + }; + tileset.rectForGID(gid, grid); + grid.x += texelCorrect; + grid.y += texelCorrect; + grid.width -= 2 * texelCorrect; + grid.height -= 2 * texelCorrect; + grid.t = grid.y / imageH; + grid.l = grid.x / imageW; + grid.r = (grid.x + grid.width) / imageW; + grid.b = (grid.y + grid.height) / imageH; + texGrids[gid] = grid; + } + }; + cc.js.obsolete(cc.TiledMap.prototype, "cc.TiledMap.tmxFile", "tmxAsset", true); + cc.js.get(cc.TiledMap.prototype, "mapLoaded", (function () { + cc.errorID(7203); + return []; + }), false); + }), { + "./CCTMXXMLParser": 397, + "./CCTiledLayer": 398, + "./CCTiledMapAsset": 400, + "./CCTiledObjectGroup": 402, + "./CCTiledTile": 403 + }], + 400: [(function (require, module, exports) { + "use strict"; + var TiledMapAsset = cc.Class({ + name: "cc.TiledMapAsset", + extends: cc.Asset, + properties: { + tmxXmlStr: "", + textures: { + default: [], + type: [cc.Texture2D] + }, + textureNames: [cc.String], + textureSizes: { + default: [], + type: [cc.Size] + }, + imageLayerTextures: { + default: [], + type: [cc.Texture2D] + }, + imageLayerTextureNames: [cc.String], + tsxFiles: [cc.TextAsset], + tsxFileNames: [cc.String] + }, + statics: { + preventDeferredLoadDependents: true + }, + createNode: false + }); + cc.TiledMapAsset = TiledMapAsset; + module.exports = TiledMapAsset; + }), {}], + 401: [(function (require, module, exports) { + "use strict"; + var _inputAssembler = _interopRequireDefault(require("../renderer/core/input-assembler")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var TiledMapRenderDataList = cc.Class({ + name: "cc.TiledMapRenderDataList", + ctor: function ctor() { + this._dataList = []; + this._offset = 0; + }, + _pushRenderData: function _pushRenderData() { + var renderData = {}; + renderData.ia = new _inputAssembler["default"](); + renderData.nodesRenderList = []; + this._dataList.push(renderData); + }, + popRenderData: function popRenderData(buffer) { + this._offset >= this._dataList.length && this._pushRenderData(); + var renderData = this._dataList[this._offset]; + renderData.nodesRenderList.length = 0; + var ia = renderData.ia; + ia._vertexBuffer = buffer._vb; + ia._indexBuffer = buffer._ib; + ia._start = buffer.indiceOffset; + ia._count = 0; + this._offset++; + return renderData; + }, + pushNodesList: function pushNodesList(renderData, nodesList) { + renderData.nodesRenderList.push(nodesList); + }, + reset: function reset() { + this._offset = 0; + } + }); + cc.TiledMapRenderDataList = module.exports = TiledMapRenderDataList; + }), { + "../renderer/core/input-assembler": 362 + }], + 402: [(function (require, module, exports) { + "use strict"; + var TiledObjectGroup = cc.Class({ + name: "cc.TiledObjectGroup", + extends: cc.Component, + getPositionOffset: function getPositionOffset() { + return this._positionOffset; + }, + getProperties: function getProperties() { + this._properties; + }, + getGroupName: function getGroupName() { + return this._groupName; + }, + getProperty: function getProperty(propertyName) { + return this._properties[propertyName.toString()]; + }, + getObject: function getObject(objectName) { + for (var i = 0, len = this._objects.length; i < len; i++) { + var obj = this._objects[i]; + if (obj && obj.name === objectName) return obj; + } + return null; + }, + getObjects: function getObjects() { + return this._objects; + }, + _init: function _init(groupInfo, mapInfo, texGrids) { + var TiledMap = cc.TiledMap; + var TMXObjectType = TiledMap.TMXObjectType; + var Orientation = TiledMap.Orientation; + var StaggerAxis = TiledMap.StaggerAxis; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; + var FLAG_VERTICAL = TileFlag.VERTICAL; + this._groupName = groupInfo.name; + this._positionOffset = groupInfo.offset; + this._mapInfo = mapInfo; + this._properties = groupInfo.getProperties(); + this._offset = cc.v2(groupInfo.offset.x, -groupInfo.offset.y); + this._opacity = groupInfo._opacity; + var mapSize = mapInfo._mapSize; + var tileSize = mapInfo._tileSize; + var width = 0, height = 0; + if (mapInfo.orientation === Orientation.HEX) if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { + height = tileSize.height * (mapSize.height + .5); + width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); + } else { + width = tileSize.width * (mapSize.width + .5); + height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); + } else if (mapInfo.orientation === Orientation.ISO) { + var wh = mapSize.width + mapSize.height; + width = .5 * tileSize.width * wh; + height = .5 * tileSize.height * wh; + } else { + width = mapSize.width * tileSize.width; + height = mapSize.height * tileSize.height; + } + this.node.setContentSize(width, height); + var leftTopX = width * this.node.anchorX; + var leftTopY = height * (1 - this.node.anchorY); + var objects = groupInfo._objects; + var aliveNodes = {}; + for (var i = 0, l = objects.length; i < l; i++) { + var object = objects[i]; + var objType = object.type; + object.offset = cc.v2(object.x, object.y); + var points = object.points || object.polylinePoints; + if (points) for (var pi = 0; pi < points.length; pi++) points[pi].y *= -1; + if (Orientation.ISO !== mapInfo.orientation) object.y = height - object.y; else { + var posIdxX = object.x / tileSize.height; + var posIdxY = object.y / tileSize.height; + object.x = .5 * tileSize.width * (mapSize.height + posIdxX - posIdxY); + object.y = .5 * tileSize.height * (mapSize.width + mapSize.height - posIdxX - posIdxY); + } + if (objType === TMXObjectType.TEXT) { + var textName = "text" + object.id; + aliveNodes[textName] = true; + var textNode = this.node.getChildByName(textName); + textNode || (textNode = new cc.Node()); + textNode.active = object.visible; + textNode.anchorX = 0; + textNode.anchorY = 1; + textNode.angle = -object.rotation; + textNode.x = object.x - leftTopX; + textNode.y = object.y - leftTopY; + textNode.name = textName; + textNode.parent = this.node; + textNode.color = object.color; + textNode.opacity = this._opacity; + textNode.setSiblingIndex(i); + var label = textNode.getComponent(cc.Label); + label || (label = textNode.addComponent(cc.Label)); + label.overflow = cc.Label.Overflow.SHRINK; + label.lineHeight = object.height; + label.string = object.text; + label.horizontalAlign = object.halign; + label.verticalAlign = object.valign; + label.fontSize = object.pixelsize; + textNode.width = object.width; + textNode.height = object.height; + } + if (objType === TMXObjectType.IMAGE) { + var gid = object.gid; + var grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; + if (!grid) continue; + var tileset = grid.tileset; + var imgName = "img" + object.id; + aliveNodes[imgName] = true; + var imgNode = this.node.getChildByName(imgName); + var imgWidth = object.width || grid.width; + var imgHeight = object.height || grid.height; + var tileOffsetX = tileset.tileOffset.x; + var tileOffsetY = tileset.tileOffset.y; + if (imgNode instanceof cc.PrivateNode) { + imgNode.removeFromParent(); + imgNode.destroy(); + imgNode = null; + } + imgNode || (imgNode = new cc.Node()); + if (Orientation.ISO == mapInfo.orientation) { + imgNode.anchorX = .5 + tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } else { + imgNode.anchorX = tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } + imgNode.active = object.visible; + imgNode.angle = -object.rotation; + imgNode.x = object.x - leftTopX; + imgNode.y = object.y - leftTopY; + imgNode.name = imgName; + imgNode.parent = this.node; + imgNode.opacity = this._opacity; + imgNode.setSiblingIndex(i); + var sp = imgNode.getComponent(cc.Sprite); + sp || (sp = imgNode.addComponent(cc.Sprite)); + var spf = sp.spriteFrame; + spf || (spf = new cc.SpriteFrame()); + (gid & FLAG_HORIZONTAL) >>> 0 ? spf.setFlipX(true) : spf.setFlipX(false); + (gid & FLAG_VERTICAL) >>> 0 ? spf.setFlipY(true) : spf.setFlipY(false); + spf.setTexture(grid.tileset.sourceImage, cc.rect(grid)); + sp.spriteFrame = spf; + sp.setVertsDirty(); + imgNode.width = imgWidth; + imgNode.height = imgHeight; + } + } + this._objects = objects; + var children = this.node.children; + var uselessExp = /^(?:img|text)\d+$/; + for (var _i = 0, n = children.length; _i < n; _i++) { + var c = children[_i]; + var cName = c._name; + var isUseless = uselessExp.test(cName); + isUseless && !aliveNodes[cName] && c.destroy(); + } + } + }); + cc.TiledObjectGroup = module.exports = TiledObjectGroup; + }), {}], + 403: [(function (require, module, exports) { + "use strict"; + var TiledTile = cc.Class({ + name: "cc.TiledTile", + extends: cc.Component, + editor: false, + ctor: function ctor() { + this._layer = null; + }, + properties: { + _x: 0, + _y: 0, + x: { + get: function get() { + return this._x; + }, + set: function set(value) { + if (value === this._x) return; + if (this._layer && this._layer._isInvalidPosition(value, this._y)) { + cc.warn("Invalid x, the valid value is between [%s] ~ [%s]", 0, this._layer._layerSize.width); + return; + } + this._resetTile(); + this._x = value; + this._updateInfo(); + }, + type: cc.Integer + }, + y: { + get: function get() { + return this._y; + }, + set: function set(value) { + if (value === this._y) return; + if (this._layer && this._layer._isInvalidPosition(this._x, value)) { + cc.warn("Invalid y, the valid value is between [%s] ~ [%s]", 0, this._layer._layerSize.height); + return; + } + this._resetTile(); + this._y = value; + this._updateInfo(); + }, + type: cc.Integer + }, + gid: { + get: function get() { + if (this._layer) return this._layer.getTileGIDAt(this._x, this._y); + return 0; + }, + set: function set(value) { + this._layer && this._layer.setTileGIDAt(value, this._x, this._y); + }, + type: cc.Integer + } + }, + onEnable: function onEnable() { + var parent = this.node.parent; + this._layer = parent.getComponent(cc.TiledLayer); + this._resetTile(); + this._updateInfo(); + }, + onDisable: function onDisable() { + this._resetTile(); + }, + _resetTile: function _resetTile() { + this._layer && this._layer.getTiledTileAt(this._x, this._y) === this && this._layer.setTiledTileAt(this._x, this._y, null); + }, + _updateInfo: function _updateInfo() { + if (!this._layer) return; + var x = this._x, y = this._y; + if (this._layer.getTiledTileAt(x, y)) { + cc.warn("There is already a TiledTile at [%s, %s]", x, y); + return; + } + this.node.setPosition(this._layer.getPositionAt(x, y)); + this._layer.setTiledTileAt(x, y, this); + } + }); + cc.TiledTile = module.exports = TiledTile; + }), {}], + 404: [(function (require, module, exports) { + "use strict"; + require("./CCTiledMap"); + require("./CCTiledMapRenderDataList"); + require("./tiledmap-buffer"); + require("./tmx-layer-assembler"); + }), { + "./CCTiledMap": 399, + "./CCTiledMapRenderDataList": 401, + "./tiledmap-buffer": 405, + "./tmx-layer-assembler": 406 + }], + 405: [(function (require, module, exports) { + "use strict"; + var TiledMapBuffer = cc.Class({ + name: "cc.TiledMapBuffer", + extends: require("../core/renderer/webgl/quad-buffer"), + _updateOffset: function _updateOffset() { + var offsetInfo = this._offsetInfo; + offsetInfo.vertexOffset = this.vertexOffset; + offsetInfo.indiceOffset = this.indiceOffset; + offsetInfo.byteOffset = this.byteOffset; + }, + adjust: function adjust(vertexCount, indiceCount) { + this.vertexOffset += vertexCount; + this.indiceOffset += indiceCount; + this.indiceStart = this.indiceOffset; + this.byteOffset = this.byteOffset + vertexCount * this._vertexBytes; + this._dirty = true; + } + }); + cc.TiledMapBuffer = module.exports = TiledMapBuffer; + }), { + "../core/renderer/webgl/quad-buffer": 310 + }], + 406: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("../core/renderer/assembler")); + var _valueTypes = require("../core/value-types"); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var TiledLayer = require("./CCTiledLayer"); + var TiledMap = require("./CCTiledMap"); + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var renderer = require("../core/renderer/"); + var vfmtPosUvColor = require("../core/renderer/webgl/vertex-format").vfmtPosUvColor; + var MaxGridsLimit = parseInt(10922.5); + var RenderOrder = TiledMap.RenderOrder; + var RenderFlow = require("../core/renderer/render-flow"); + var _mat4_temp = cc.mat4(); + var _vec3_temp = cc.v3(); + var _leftDown = { + row: 0, + col: 0 + }; + var _uva = { + x: 0, + y: 0 + }; + var _uvb = { + x: 0, + y: 0 + }; + var _uvc = { + x: 0, + y: 0 + }; + var _uvd = { + x: 0, + y: 0 + }; + var _renderData = null, _ia = null, _fillGrids = 0, _vfOffset = 0, _moveX = 0, _moveY = 0, _layerMat = null, _renderer = null, _renderDataList = null, _buffer = null, _curMaterial = null, _comp = null, _vbuf = null, _uintbuf = null; + function _visitUserNode(userNode) { + false; + userNode._updateLocalMatrix(); + _valueTypes.Mat4.mul(userNode._worldMatrix, _layerMat, userNode._matrix); + userNode._renderFlag &= ~(RenderFlow.FLAG_TRANSFORM | RenderFlow.FLAG_BREAK_FLOW); + RenderFlow.visitRootNode(userNode); + userNode._renderFlag |= RenderFlow.FLAG_BREAK_FLOW; + } + function _flush() { + if (0 === _ia._count) return; + _renderer.material = _renderData.material; + _renderer.node = _comp.node; + _renderer._flushIA(_renderData.ia); + var needSwitchBuffer = _fillGrids >= MaxGridsLimit; + if (needSwitchBuffer) { + _buffer.uploadData(); + _buffer.switchBuffer(); + _vbuf = _buffer._vData; + _uintbuf = _buffer._uintVData; + _renderData = _renderDataList.popRenderData(_buffer); + _ia = _renderData.ia; + _vfOffset = 0; + _fillGrids = 0; + } else { + _renderData = _renderDataList.popRenderData(_buffer); + _ia = _renderData.ia; + } + _renderData.material = _curMaterial; + } + function _renderNodes(nodeRow, nodeCol) { + var nodesInfo = _comp._getNodesByRowCol(nodeRow, nodeCol); + if (!nodesInfo || 0 == nodesInfo.count) return; + var nodesList = nodesInfo.list; + var newIdx = 0, oldIdx = 0; + _flush(); + _renderer.worldMatDirty++; + for (; newIdx < nodesInfo.count;) { + var dataComp = nodesList[oldIdx]; + oldIdx++; + if (!dataComp) continue; + _visitUserNode(dataComp.node); + if (newIdx !== oldIdx) { + nodesList[newIdx] = dataComp; + dataComp._index = newIdx; + } + newIdx++; + } + nodesList.length = newIdx; + _renderer.worldMatDirty--; + _renderDataList.pushNodesList(_renderData, nodesList); + _renderer._flush(); + _renderer.node = _comp.node; + } + function _flipTexture(inGrid, gid) { + _uva.x = inGrid.l; + _uva.y = inGrid.t; + _uvb.x = inGrid.r; + _uvb.y = inGrid.t; + _uvc.x = inGrid.l; + _uvc.y = inGrid.b; + _uvd.x = inGrid.r; + _uvd.y = inGrid.b; + var tempVal = null; + if ((gid & TileFlag.DIAGONAL) >>> 0) { + tempVal = _uvb; + _uvb = _uvc; + _uvc = tempVal; + } + if ((gid & TileFlag.HORIZONTAL) >>> 0) { + tempVal = _uva; + _uva = _uvb; + _uvb = tempVal; + tempVal = _uvc; + _uvc = _uvd; + _uvd = tempVal; + } + if ((gid & TileFlag.VERTICAL) >>> 0) { + tempVal = _uva; + _uva = _uvc; + _uvc = tempVal; + tempVal = _uvb; + _uvb = _uvd; + _uvd = tempVal; + } + } + var TmxAssembler = (function (_Assembler) { + _inheritsLoose(TmxAssembler, _Assembler); + function TmxAssembler() { + return _Assembler.apply(this, arguments) || this; + } + var _proto = TmxAssembler.prototype; + _proto.updateRenderData = function updateRenderData(comp) { + if (!comp._renderDataList) { + comp._buffer = new cc.TiledMapBuffer(renderer._handle, vfmtPosUvColor); + comp._renderDataList = new cc.TiledMapRenderDataList(); + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + var vertices = comp._vertices; + if (0 === vertices.length) return; + comp._updateCulling(); + var layerNode = comp.node; + _moveX = comp._leftDownToCenterX; + _moveY = comp._leftDownToCenterY; + _layerMat = layerNode._worldMatrix; + _renderer = renderer; + _comp = comp; + _renderDataList = comp._renderDataList; + _buffer = comp._buffer; + if (comp._isCullingDirty() || comp._isUserNodeDirty() || comp._hasAnimation() || comp._hasTiledNode()) { + _buffer.reset(); + var leftDown, rightTop; + if (comp._enableCulling) { + var cullingRect = comp._cullingRect; + leftDown = cullingRect.leftDown; + rightTop = cullingRect.rightTop; + } else { + leftDown = _leftDown; + rightTop = comp._rightTop; + } + var maxRows = rightTop.row - leftDown.row + 1; + var maxCols = rightTop.col - leftDown.col + 1; + var maxGrids = maxRows * maxCols; + maxGrids > MaxGridsLimit && (maxGrids = MaxGridsLimit); + _buffer.request(4 * maxGrids, 6 * maxGrids); + switch (comp._renderOrder) { + case RenderOrder.RightDown: + this.traverseGrids(leftDown, rightTop, -1, 1); + break; + + case RenderOrder.LeftDown: + this.traverseGrids(leftDown, rightTop, -1, -1); + break; + + case RenderOrder.RightUp: + this.traverseGrids(leftDown, rightTop, 1, 1); + break; + + case RenderOrder.LeftUp: + this.traverseGrids(leftDown, rightTop, 1, -1); + } + comp._setCullingDirty(false); + comp._setUserNodeDirty(false); + } else { + true; + var renderData = null; + var nodesRenderList = null; + var nodesList = null; + for (var i = 0; i < _renderDataList._offset; i++) { + renderData = _renderDataList._dataList[i]; + nodesRenderList = renderData.nodesRenderList; + if (nodesRenderList.length > 0) { + renderer.worldMatDirty++; + for (var j = 0; j < nodesRenderList.length; j++) { + nodesList = nodesRenderList[j]; + if (!nodesList) continue; + for (var idx = 0; idx < nodesList.length; idx++) { + var dataComp = nodesList[idx]; + if (!dataComp) continue; + _visitUserNode(dataComp.node); + } + } + renderer.worldMatDirty--; + renderer._flush(); + } + if (renderData.ia._count > 0) { + renderer.material = renderData.material; + renderer.node = layerNode; + renderer._flushIA(renderData.ia); + } + } + } + _renderData = null; + _ia = null; + _layerMat = null; + _renderer = null; + _renderDataList = null; + _buffer = null; + _curMaterial = null; + _comp = null; + _vbuf = null; + _uintbuf = null; + }; + _proto.traverseGrids = function traverseGrids(leftDown, rightTop, rowMoveDir, colMoveDir) { + _renderDataList.reset(); + if (rightTop.row < 0 || rightTop.col < 0) return; + _renderData = _renderDataList.popRenderData(_buffer); + _ia = _renderData.ia; + _vbuf = _buffer._vData; + _uintbuf = _buffer._uintVData; + _fillGrids = 0; + _vfOffset = 0; + _curMaterial = null; + var layerNode = _comp.node; + var pOpacity = layerNode.parent ? layerNode.parent._opacity / 255 : 1; + var opacity = pOpacity * layerNode._opacity; + layerNode._color._fastSetA(opacity); + var color = layerNode._color._val; + var tiledTiles = _comp._tiledTiles; + var texGrids = _comp._texGrids; + var tiles = _comp._tiles; + var texIdToMatIdx = _comp._texIdToMatIndex; + var mats = _comp._materials; + var vertices = _comp._vertices; + var rowData, col, cols, row, rows, colData, tileSize, grid = null, gid = 0; + var left = 0, bottom = 0, right = 0, top = 0; + var tiledNode = null, curTexIdx = -1, matIdx; + var colNodesCount = 0, checkColRange = true; + if (-1 == rowMoveDir) { + row = rightTop.row; + rows = leftDown.row; + } else { + row = leftDown.row; + rows = rightTop.row; + } + for (; (rows - row) * rowMoveDir >= 0; row += rowMoveDir) { + rowData = vertices[row]; + colNodesCount = _comp._getNodesCountByRow(row); + checkColRange = 0 == colNodesCount && void 0 != rowData; + if (1 == colMoveDir) { + col = checkColRange && leftDown.col < rowData.minCol ? rowData.minCol : leftDown.col; + cols = checkColRange && rightTop.col > rowData.maxCol ? rowData.maxCol : rightTop.col; + } else { + col = checkColRange && rightTop.col > rowData.maxCol ? rowData.maxCol : rightTop.col; + cols = checkColRange && leftDown.col < rowData.minCol ? rowData.minCol : leftDown.col; + } + for (; (cols - col) * colMoveDir >= 0; col += colMoveDir) { + colData = rowData && rowData[col]; + if (!colData) { + colNodesCount > 0 && _renderNodes(row, col); + continue; + } + gid = tiles[colData.index]; + grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; + if (!grid) continue; + if (curTexIdx !== grid.texId) { + -1 !== curTexIdx && _flush(); + curTexIdx = grid.texId; + matIdx = texIdToMatIdx[curTexIdx]; + _curMaterial = mats[matIdx]; + _renderData.material = _curMaterial; + } + if (!_curMaterial) continue; + left = colData.left - _moveX; + bottom = colData.bottom - _moveY; + tileSize = grid.tileset._tileSize; + right = left + tileSize.width; + top = bottom + tileSize.height; + tiledNode = tiledTiles[colData.index]; + if (tiledNode) { + if (tiledNode.node.active) { + tiledNode.node._color._fastSetA(tiledNode.node._opacity * opacity / 255); + this.fillByTiledNode(tiledNode.node, _vbuf, _uintbuf, left, right, top, bottom); + } + } else { + _vbuf[_vfOffset] = left; + _vbuf[_vfOffset + 1] = top; + _uintbuf[_vfOffset + 4] = color; + _vbuf[_vfOffset + 5] = left; + _vbuf[_vfOffset + 6] = bottom; + _uintbuf[_vfOffset + 9] = color; + _vbuf[_vfOffset + 10] = right; + _vbuf[_vfOffset + 11] = top; + _uintbuf[_vfOffset + 14] = color; + _vbuf[_vfOffset + 15] = right; + _vbuf[_vfOffset + 16] = bottom; + _uintbuf[_vfOffset + 19] = color; + } + _flipTexture(grid, gid); + _vbuf[_vfOffset + 2] = _uva.x; + _vbuf[_vfOffset + 3] = _uva.y; + _vbuf[_vfOffset + 7] = _uvc.x; + _vbuf[_vfOffset + 8] = _uvc.y; + _vbuf[_vfOffset + 12] = _uvb.x; + _vbuf[_vfOffset + 13] = _uvb.y; + _vbuf[_vfOffset + 17] = _uvd.x; + _vbuf[_vfOffset + 18] = _uvd.y; + _vfOffset += 20; + _buffer.adjust(4, 6); + _ia._count += 6; + _fillGrids++; + colNodesCount > 0 && _renderNodes(row, col); + _fillGrids >= MaxGridsLimit && _flush(); + } + } + _buffer.uploadData(); + if (_ia._count > 0) { + _renderer.material = _renderData.material; + _renderer.node = _comp.node; + _renderer._flushIA(_renderData.ia); + } + }; + _proto.fillByTiledNode = function fillByTiledNode(tiledNode, vbuf, uintbuf, left, right, top, bottom) { + tiledNode._updateLocalMatrix(); + _valueTypes.Mat4.copy(_mat4_temp, tiledNode._matrix); + _valueTypes.Vec3.set(_vec3_temp, -(left + _moveX), -(bottom + _moveY), 0); + _valueTypes.Mat4.transform(_mat4_temp, _mat4_temp, _vec3_temp); + var m = _mat4_temp.m; + var a = m[0]; + var b = m[1]; + var c = m[4]; + var d = m[5]; + var tx = m[12]; + var ty = m[13]; + var color = tiledNode._color._val; + vbuf[_vfOffset] = left * a + top * c + tx; + vbuf[_vfOffset + 1] = left * b + top * d + ty; + uintbuf[_vfOffset + 4] = color; + vbuf[_vfOffset + 5] = left * a + bottom * c + tx; + vbuf[_vfOffset + 6] = left * b + bottom * d + ty; + uintbuf[_vfOffset + 9] = color; + vbuf[_vfOffset + 10] = right * a + top * c + tx; + vbuf[_vfOffset + 11] = right * b + top * d + ty; + uintbuf[_vfOffset + 14] = color; + vbuf[_vfOffset + 15] = right * a + bottom * c + tx; + vbuf[_vfOffset + 16] = right * b + bottom * d + ty; + uintbuf[_vfOffset + 19] = color; + }; + return TmxAssembler; + })(_assembler["default"]); + exports["default"] = TmxAssembler; + _assembler["default"].register(TiledLayer, TmxAssembler); + module.exports = exports["default"]; + }), { + "../core/renderer/": 271, + "../core/renderer/assembler": 268, + "../core/renderer/render-flow": 272, + "../core/renderer/webgl/vertex-format": 313, + "../core/value-types": 339, + "./CCTiledLayer": 398, + "./CCTiledMap": 399 + }], + 407: [(function (require, module, exports) { + "use strict"; + var VideoPlayerImpl = require("./video-player-impl"); + var EventType = VideoPlayerImpl.EventType; + var ResourceType = cc.Enum({ + REMOTE: 0, + LOCAL: 1 + }); + var VideoPlayer = cc.Class({ + name: "cc.VideoPlayer", + extends: cc.Component, + editor: false, + properties: { + _resourceType: ResourceType.REMOTE, + resourceType: { + tooltip: false, + type: ResourceType, + set: function set(value) { + this._resourceType = value; + this._updateVideoSource(); + }, + get: function get() { + return this._resourceType; + } + }, + _remoteURL: "", + remoteURL: { + tooltip: false, + type: cc.String, + set: function set(url) { + this._remoteURL = url; + this._updateVideoSource(); + }, + get: function get() { + return this._remoteURL; + } + }, + _clip: { + default: null, + type: cc.Asset + }, + clip: { + tooltip: false, + get: function get() { + return this._clip; + }, + set: function set(value) { + this._clip = value; + this._updateVideoSource(); + }, + type: cc.Asset + }, + currentTime: { + tooltip: false, + type: cc.Float, + set: function set(time) { + this._impl && this._impl.seekTo(time); + }, + get: function get() { + if (this._impl) { + if (this._currentStatus === EventType.NONE || this._currentStatus === EventType.STOPPED || this._currentStatus === EventType.META_LOADED || this._currentStatus === EventType.READY_TO_PLAY) return 0; + if (this._currentStatus === EventType.COMPLETED) return this._impl.duration(); + return this._impl.currentTime(); + } + return -1; + } + }, + _volume: 1, + volume: { + get: function get() { + return this._volume; + }, + set: function set(value) { + this._volume = value; + this.isPlaying() && !this._mute && this._syncVolume(); + }, + range: [0, 1], + type: cc.Float, + tooltip: false + }, + _mute: false, + mute: { + get: function get() { + return this._mute; + }, + set: function set(value) { + this._mute = value; + this._syncVolume(); + }, + tooltip: false + }, + keepAspectRatio: { + tooltip: false, + default: true, + type: cc.Boolean, + notify: function notify() { + this._impl && this._impl.setKeepAspectRatioEnabled(this.keepAspectRatio); + } + }, + _isFullscreen: { + default: false, + formerlySerializedAs: "_N$isFullscreen" + }, + isFullscreen: { + get: function get() { + true; + this._isFullscreen = this._impl && this._impl.isFullScreenEnabled(); + return this._isFullscreen; + }, + set: function set(enable) { + this._isFullscreen = enable; + true; + this._impl && this._impl.setFullScreenEnabled(enable); + }, + animatable: false, + tooltip: false + }, + _stayOnBottom: false, + stayOnBottom: { + get: function get() { + return this._stayOnBottom; + }, + set: function set(enable) { + this._stayOnBottom = enable; + this._impl && this._impl.setStayOnBottom(enable); + }, + animatable: false, + tooltip: false + }, + videoPlayerEvent: { + default: [], + type: cc.Component.EventHandler + } + }, + statics: { + EventType: EventType, + ResourceType: ResourceType, + Impl: VideoPlayerImpl + }, + ctor: function ctor() { + this._impl = new VideoPlayerImpl(); + this._currentStatus = EventType.NONE; + }, + _syncVolume: function _syncVolume() { + var impl = this._impl; + if (impl) { + var volume = this._mute ? 0 : this._volume; + impl.setVolume(volume); + } + }, + _updateVideoSource: function _updateVideoSource() { + var url = ""; + this.resourceType === ResourceType.REMOTE ? url = this.remoteURL : this._clip && (url = this._clip.nativeUrl); + this._impl.setURL(url, this._mute || 0 === this._volume); + this._impl.setKeepAspectRatioEnabled(this.keepAspectRatio); + }, + onLoad: function onLoad() { + var impl = this._impl; + if (impl) { + impl.createDomElementIfNeeded(this._mute || 0 === this._volume); + impl.setStayOnBottom(this._stayOnBottom); + this._updateVideoSource(); + true; + impl.seekTo(this.currentTime); + impl.setFullScreenEnabled(this._isFullscreen); + this.pause(); + impl.setEventListener(EventType.PLAYING, this.onPlaying.bind(this)); + impl.setEventListener(EventType.PAUSED, this.onPasued.bind(this)); + impl.setEventListener(EventType.STOPPED, this.onStopped.bind(this)); + impl.setEventListener(EventType.COMPLETED, this.onCompleted.bind(this)); + impl.setEventListener(EventType.META_LOADED, this.onMetaLoaded.bind(this)); + impl.setEventListener(EventType.CLICKED, this.onClicked.bind(this)); + impl.setEventListener(EventType.READY_TO_PLAY, this.onReadyToPlay.bind(this)); + } + }, + onRestore: function onRestore() { + this._impl || (this._impl = new VideoPlayerImpl()); + }, + onEnable: function onEnable() { + this._impl && this._impl.enable(); + }, + onDisable: function onDisable() { + this._impl && this._impl.disable(); + }, + onDestroy: function onDestroy() { + if (this._impl) { + this._impl.destroy(); + this._impl = null; + } + }, + update: function update(dt) { + this._impl && this._impl.updateMatrix(this.node); + }, + onReadyToPlay: function onReadyToPlay() { + this._currentStatus = EventType.READY_TO_PLAY; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.READY_TO_PLAY); + this.node.emit("ready-to-play", this); + }, + onMetaLoaded: function onMetaLoaded() { + this._currentStatus = EventType.META_LOADED; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.META_LOADED); + this.node.emit("meta-loaded", this); + }, + onClicked: function onClicked() { + this._currentStatus = EventType.CLICKED; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.CLICKED); + this.node.emit("clicked", this); + }, + onPlaying: function onPlaying() { + this._currentStatus = EventType.PLAYING; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.PLAYING); + this.node.emit("playing", this); + }, + onPasued: function onPasued() { + this._currentStatus = EventType.PAUSED; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.PAUSED); + this.node.emit("paused", this); + }, + onStopped: function onStopped() { + this._currentStatus = EventType.STOPPED; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.STOPPED); + this.node.emit("stopped", this); + }, + onCompleted: function onCompleted() { + this._currentStatus = EventType.COMPLETED; + cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, EventType.COMPLETED); + this.node.emit("completed", this); + }, + play: function play() { + if (this._impl) { + this._syncVolume(); + this._impl.play(); + } + }, + resume: function resume() { + if (this._impl) { + this._syncVolume(); + this._impl.resume(); + } + }, + pause: function pause() { + this._impl && this._impl.pause(); + }, + stop: function stop() { + this._impl && this._impl.stop(); + }, + getDuration: function getDuration() { + if (this._impl) return this._impl.duration(); + return -1; + }, + isPlaying: function isPlaying() { + if (this._impl) return this._impl.isPlaying(); + return false; + } + }); + cc.VideoPlayer = module.exports = VideoPlayer; + }), { + "./video-player-impl": 408 + }], + 408: [(function (require, module, exports) { + "use strict"; + var utils = require("../core/platform/utils"); + var sys = require("../core/platform/CCSys"); + var macro = require("../core/platform/CCMacro"); + var READY_STATE = { + HAVE_NOTHING: 0, + HAVE_METADATA: 1, + HAVE_CURRENT_DATA: 2, + HAVE_FUTURE_DATA: 3, + HAVE_ENOUGH_DATA: 4 + }; + var _mat4_temp = cc.mat4(); + var VideoPlayerImpl = cc.Class({ + name: "VideoPlayerImpl", + ctor: function ctor() { + this._EventList = {}; + this._video = null; + this._url = ""; + this._waitingFullscreen = false; + this._fullScreenEnabled = false; + this._stayOnBottom = false; + this._loadedmeta = false; + this._loaded = false; + this._visible = false; + this._playing = false; + this._ignorePause = false; + this._forceUpdate = false; + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._w = 0; + this._h = 0; + this.__eventListeners = {}; + }, + _bindEvent: function _bindEvent() { + var video = this._video, self = this; + var cbs = this.__eventListeners; + cbs.loadedmetadata = function () { + self._loadedmeta = true; + self._forceUpdate = true; + if (self._waitingFullscreen) { + self._waitingFullscreen = false; + self._toggleFullscreen(true); + } + self._dispatchEvent(VideoPlayerImpl.EventType.META_LOADED); + }; + cbs.ended = function () { + if (self._video !== video) return; + self._playing = false; + self._dispatchEvent(VideoPlayerImpl.EventType.COMPLETED); + }; + cbs.play = function () { + if (self._video !== video) return; + self._playing = true; + self._updateVisibility(); + self._dispatchEvent(VideoPlayerImpl.EventType.PLAYING); + }; + cbs.pause = function () { + if (self._video !== video) return; + self._playing = false; + self._ignorePause || self._dispatchEvent(VideoPlayerImpl.EventType.PAUSED); + }; + cbs.click = function () { + self._dispatchEvent(VideoPlayerImpl.EventType.CLICKED); + }; + video.addEventListener("loadedmetadata", cbs.loadedmetadata); + video.addEventListener("ended", cbs.ended); + video.addEventListener("play", cbs.play); + video.addEventListener("pause", cbs.pause); + video.addEventListener("click", cbs.click); + function onCanPlay() { + if (self._loaded || self._playing) return; + var video = self._video; + if (video.readyState === READY_STATE.HAVE_ENOUGH_DATA || video.readyState === READY_STATE.HAVE_METADATA) { + video.currentTime = 0; + self._loaded = true; + self._forceUpdate = true; + self._dispatchEvent(VideoPlayerImpl.EventType.READY_TO_PLAY); + self._updateVisibility(); + } + } + cbs.onCanPlay = onCanPlay; + video.addEventListener("canplay", cbs.onCanPlay); + video.addEventListener("canplaythrough", cbs.onCanPlay); + video.addEventListener("suspend", cbs.onCanPlay); + }, + _updateVisibility: function _updateVisibility() { + var video = this._video; + if (!video) return; + if (this._visible) video.style.visibility = "visible"; else { + video.style.visibility = "hidden"; + video.pause(); + this._playing = false; + } + }, + _updateSize: function _updateSize(width, height) { + var video = this._video; + if (!video) return; + video.style.width = width + "px"; + video.style.height = height + "px"; + }, + _createDom: function _createDom(muted) { + var video = document.createElement("video"); + video.style.position = "absolute"; + video.style.bottom = "0px"; + video.style.left = "0px"; + video.style["z-index"] = this._stayOnBottom ? macro.MIN_ZINDEX : 0; + video.className = "cocosVideo"; + video.setAttribute("preload", "auto"); + video.setAttribute("webkit-playsinline", ""); + video.setAttribute("x5-playsinline", ""); + video.setAttribute("playsinline", ""); + muted && video.setAttribute("muted", ""); + this._video = video; + cc.game.container.appendChild(video); + }, + createDomElementIfNeeded: function createDomElementIfNeeded(muted) { + this._video || this._createDom(muted); + }, + removeDom: function removeDom() { + var video = this._video; + if (video) { + var hasChild = utils.contains(cc.game.container, video); + hasChild && cc.game.container.removeChild(video); + var cbs = this.__eventListeners; + video.removeEventListener("loadedmetadata", cbs.loadedmetadata); + video.removeEventListener("ended", cbs.ended); + video.removeEventListener("play", cbs.play); + video.removeEventListener("pause", cbs.pause); + video.removeEventListener("click", cbs.click); + video.removeEventListener("canplay", cbs.onCanPlay); + video.removeEventListener("canplaythrough", cbs.onCanPlay); + video.removeEventListener("suspend", cbs.onCanPlay); + cbs.loadedmetadata = null; + cbs.ended = null; + cbs.play = null; + cbs.pause = null; + cbs.click = null; + cbs.onCanPlay = null; + } + this._video = null; + this._url = ""; + }, + setURL: function setURL(path, muted) { + var source, extname; + if (this._url === path) return; + this.removeDom(); + this._url = path; + this.createDomElementIfNeeded(muted); + this._bindEvent(); + var video = this._video; + video.style["visibility"] = "hidden"; + this._loaded = false; + this._playing = false; + this._loadedmeta = false; + source = document.createElement("source"); + source.src = path; + video.appendChild(source); + extname = cc.path.extname(path); + var polyfill = VideoPlayerImpl._polyfill; + for (var i = 0; i < polyfill.canPlayType.length; i++) if (extname !== polyfill.canPlayType[i]) { + source = document.createElement("source"); + source.src = path.replace(extname, polyfill.canPlayType[i]); + video.appendChild(source); + } + }, + getURL: function getURL() { + return this._url; + }, + play: function play() { + var video = this._video; + if (!video || !this._visible || this._playing) return; + video.play(); + }, + pause: function pause() { + var video = this._video; + if (!this._playing || !video) return; + video.pause(); + }, + resume: function resume() { + this.play(); + }, + stop: function stop() { + var video = this._video; + if (!video || !this._visible) return; + this._ignorePause = true; + video.currentTime = 0; + video.pause(); + setTimeout(function () { + this._dispatchEvent(VideoPlayerImpl.EventType.STOPPED); + this._ignorePause = false; + }.bind(this), 0); + }, + setVolume: function setVolume(volume) { + var video = this._video; + video && (video.volume = volume); + }, + seekTo: function seekTo(time) { + var video = this._video; + if (!video) return; + if (this._loaded) video.currentTime = time; else { + var cb = function cb() { + video.currentTime = time; + video.removeEventListener(VideoPlayerImpl._polyfill.event, cb); + }; + video.addEventListener(VideoPlayerImpl._polyfill.event, cb); + } + }, + isPlaying: function isPlaying() { + return this._playing; + }, + duration: function duration() { + var video = this._video; + var duration = -1; + if (!video) return duration; + duration = video.duration; + duration <= 0 && cc.logID(7702); + return duration; + }, + currentTime: function currentTime() { + var video = this._video; + if (!video) return -1; + return video.currentTime; + }, + setKeepAspectRatioEnabled: function setKeepAspectRatioEnabled() { + false; + cc.logID(7700); + }, + isKeepAspectRatioEnabled: function isKeepAspectRatioEnabled() { + return true; + }, + _toggleFullscreen: function _toggleFullscreen(enable) { + var self = this, video = this._video; + if (!video) return; + function handleFullscreenChange(event) { + var fullscreenElement = sys.browserType === sys.BROWSER_TYPE_IE ? document.msFullscreenElement : document.fullscreenElement; + self._fullScreenEnabled = fullscreenElement === video; + } + function handleFullScreenError(event) { + self._fullScreenEnabled = false; + } + if (enable) { + sys.browserType === sys.BROWSER_TYPE_IE && (video.style["transform"] = ""); + cc.screen.requestFullScreen(video, handleFullscreenChange, handleFullScreenError); + } else cc.screen.fullScreen() && cc.screen.exitFullScreen(video); + }, + setStayOnBottom: function setStayOnBottom(enabled) { + this._stayOnBottom = enabled; + if (!this._video) return; + this._video.style["z-index"] = enabled ? macro.MIN_ZINDEX : 0; + }, + setFullScreenEnabled: function setFullScreenEnabled(enable) { + !this._loadedmeta && enable ? this._waitingFullscreen = true : this._toggleFullscreen(enable); + }, + isFullScreenEnabled: function isFullScreenEnabled() { + return this._fullScreenEnabled; + }, + setEventListener: function setEventListener(event, callback) { + this._EventList[event] = callback; + }, + removeEventListener: function removeEventListener(event) { + this._EventList[event] = null; + }, + _dispatchEvent: function _dispatchEvent(event) { + var callback = this._EventList[event]; + callback && callback.call(this, this, this._video.src); + }, + onPlayEvent: function onPlayEvent() { + var callback = this._EventList[VideoPlayerImpl.EventType.PLAYING]; + callback.call(this, this, this._video.src); + }, + enable: function enable() { + var list = VideoPlayerImpl.elements; + -1 === list.indexOf(this) && list.push(this); + this.setVisible(true); + }, + disable: function disable() { + var list = VideoPlayerImpl.elements; + var index = list.indexOf(this); + -1 !== index && list.splice(index, 1); + this.setVisible(false); + }, + destroy: function destroy() { + this.disable(); + this.removeDom(); + }, + setVisible: function setVisible(visible) { + if (this._visible !== visible) { + this._visible = !!visible; + this._updateVisibility(); + } + }, + updateMatrix: function updateMatrix(node) { + if (!this._video || !this._visible || this._fullScreenEnabled) return; + node.getWorldMatrix(_mat4_temp); + var renderCamera = cc.Camera._findRendererCamera(node); + renderCamera && renderCamera.worldMatrixToScreen(_mat4_temp, _mat4_temp, cc.game.canvas.width, cc.game.canvas.height); + var _mat4_tempm = _mat4_temp.m; + if (!this._forceUpdate && this._m00 === _mat4_tempm[0] && this._m01 === _mat4_tempm[1] && this._m04 === _mat4_tempm[4] && this._m05 === _mat4_tempm[5] && this._m12 === _mat4_tempm[12] && this._m13 === _mat4_tempm[13] && this._w === node._contentSize.width && this._h === node._contentSize.height) return; + this._m00 = _mat4_tempm[0]; + this._m01 = _mat4_tempm[1]; + this._m04 = _mat4_tempm[4]; + this._m05 = _mat4_tempm[5]; + this._m12 = _mat4_tempm[12]; + this._m13 = _mat4_tempm[13]; + this._w = node._contentSize.width; + this._h = node._contentSize.height; + var dpr = cc.view._devicePixelRatio; + var scaleX = 1 / dpr; + var scaleY = 1 / dpr; + var container = cc.game.container; + var a = _mat4_tempm[0] * scaleX, b = _mat4_tempm[1], c = _mat4_tempm[4], d = _mat4_tempm[5] * scaleY; + var offsetX = container && container.style.paddingLeft ? parseInt(container.style.paddingLeft) : 0; + var offsetY = container && container.style.paddingBottom ? parseInt(container.style.paddingBottom) : 0; + var w, h; + if (VideoPlayerImpl._polyfill.zoomInvalid) { + this._updateSize(this._w * a, this._h * d); + a = 1; + d = 1; + w = this._w * scaleX; + h = this._h * scaleY; + } else { + w = this._w * scaleX; + h = this._h * scaleY; + this._updateSize(this._w, this._h); + } + var appx = w * _mat4_tempm[0] * node._anchorPoint.x; + var appy = h * _mat4_tempm[5] * node._anchorPoint.y; + var tx = _mat4_tempm[12] * scaleX - appx + offsetX, ty = _mat4_tempm[13] * scaleY - appy + offsetY; + var matrix = "matrix(" + a + "," + -b + "," + -c + "," + d + "," + tx + "," + -ty + ")"; + this._video.style["transform"] = matrix; + this._video.style["-webkit-transform"] = matrix; + this._video.style["transform-origin"] = "0px 100% 0px"; + this._video.style["-webkit-transform-origin"] = "0px 100% 0px"; + sys.browserType !== sys.BROWSER_TYPE_IE && (this._forceUpdate = false); + } + }); + VideoPlayerImpl.EventType = { + NONE: -1, + PLAYING: 0, + PAUSED: 1, + STOPPED: 2, + COMPLETED: 3, + META_LOADED: 4, + CLICKED: 5, + READY_TO_PLAY: 6 + }; + VideoPlayerImpl.elements = []; + VideoPlayerImpl.pauseElements = []; + cc.game.on(cc.game.EVENT_HIDE, (function () { + var list = VideoPlayerImpl.elements; + for (var element, i = 0; i < list.length; i++) { + element = list[i]; + if (element.isPlaying()) { + element.pause(); + VideoPlayerImpl.pauseElements.push(element); + } + } + })); + cc.game.on(cc.game.EVENT_SHOW, (function () { + var list = VideoPlayerImpl.pauseElements; + var element = list.pop(); + while (element) { + element.play(); + element = list.pop(); + } + })); + VideoPlayerImpl._polyfill = { + devicePixelRatio: false, + event: "canplay", + canPlayType: [] + }; + var dom = document.createElement("video"); + if (dom.canPlayType) { + if (dom.canPlayType("video/ogg")) { + VideoPlayerImpl._polyfill.canPlayType.push(".ogg"); + VideoPlayerImpl._polyfill.canPlayType.push(".ogv"); + } + dom.canPlayType("video/mp4") && VideoPlayerImpl._polyfill.canPlayType.push(".mp4"); + dom.canPlayType("video/webm") && VideoPlayerImpl._polyfill.canPlayType.push(".webm"); + } + sys.OS_ANDROID !== sys.os || sys.browserType !== sys.BROWSER_TYPE_SOUGOU && sys.browserType !== sys.BROWSER_TYPE_360 || (VideoPlayerImpl._polyfill.zoomInvalid = true); + var style = document.createElement("style"); + style.innerHTML = ".cocosVideo:-moz-full-screen{transform:matrix(1,0,0,1,0,0) !important;}.cocosVideo:full-screen{transform:matrix(1,0,0,1,0,0) !important;}.cocosVideo:-webkit-full-screen{transform:matrix(1,0,0,1,0,0) !important;}"; + document.head.appendChild(style); + module.exports = VideoPlayerImpl; + }), { + "../core/platform/CCMacro": 244, + "../core/platform/CCSys": 248, + "../core/platform/utils": 263 + }], + 409: [(function (require, module, exports) { + "use strict"; + var WebViewImpl = require("./webview-impl"); + var EventType = WebViewImpl.EventType; + function emptyCallback() { } + var WebView = cc.Class({ + name: "cc.WebView", + extends: cc.Component, + editor: false, + properties: { + _url: "", + url: { + type: cc.String, + tooltip: false, + get: function get() { + return this._url; + }, + set: function set(url) { + this._url = url; + var impl = this._impl; + impl && impl.loadURL(url); + } + }, + webviewEvents: { + default: [], + type: cc.Component.EventHandler + } + }, + statics: { + EventType: EventType, + Impl: WebViewImpl + }, + ctor: function ctor() { + this._impl = new WebView.Impl(); + }, + onRestore: function onRestore() { + this._impl || (this._impl = new WebView.Impl()); + }, + onEnable: function onEnable() { + var impl = this._impl; + impl.createDomElementIfNeeded(this.node.width, this.node.height); + true; + impl.setEventListener(EventType.LOADED, this._onWebViewLoaded.bind(this)); + impl.setEventListener(EventType.LOADING, this._onWebViewLoading.bind(this)); + impl.setEventListener(EventType.ERROR, this._onWebViewLoadError.bind(this)); + impl.loadURL(this._url); + impl.setVisible(true); + }, + onDisable: function onDisable() { + var impl = this._impl; + impl.setVisible(false); + true; + impl.setEventListener(EventType.LOADED, emptyCallback); + impl.setEventListener(EventType.LOADING, emptyCallback); + impl.setEventListener(EventType.ERROR, emptyCallback); + }, + onDestroy: function onDestroy() { + if (this._impl) { + this._impl.destroy(); + this._impl = null; + } + }, + update: function update(dt) { + this._impl && this._impl.updateMatrix(this.node); + }, + _onWebViewLoaded: function _onWebViewLoaded() { + cc.Component.EventHandler.emitEvents(this.webviewEvents, this, EventType.LOADED); + this.node.emit("loaded", this); + }, + _onWebViewLoading: function _onWebViewLoading() { + cc.Component.EventHandler.emitEvents(this.webviewEvents, this, EventType.LOADING); + this.node.emit("loading", this); + return true; + }, + _onWebViewLoadError: function _onWebViewLoadError() { + cc.Component.EventHandler.emitEvents(this.webviewEvents, this, EventType.ERROR); + this.node.emit("error", this); + }, + setJavascriptInterfaceScheme: function setJavascriptInterfaceScheme(scheme) { + this._impl && this._impl.setJavascriptInterfaceScheme(scheme); + }, + setOnJSCallback: function setOnJSCallback(callback) { + this._impl && this._impl.setOnJSCallback(callback); + }, + evaluateJS: function evaluateJS(str) { + this._impl && this._impl.evaluateJS(str); + } + }); + cc.WebView = module.exports = WebView; + }), { + "./webview-impl": 410 + }], + 410: [(function (require, module, exports) { + "use strict"; + var utils = require("../core/platform/utils"); + var sys = require("../core/platform/CCSys"); + var _mat4_temp = cc.mat4(); + var WebViewImpl = cc.Class({ + name: "WebViewImpl", + ctor: function ctor() { + this._EventList = {}; + this._visible = false; + this._parent = null; + this._div = null; + this._iframe = null; + this._listener = null; + this._forceUpdate = false; + this._m00 = 0; + this._m01 = 0; + this._m04 = 0; + this._m05 = 0; + this._m12 = 0; + this._m13 = 0; + this._w = 0; + this._h = 0; + this.__eventListeners = {}; + }, + _updateVisibility: function _updateVisibility() { + if (!this._div) return; + var div = this._div; + this._visible ? div.style.visibility = "visible" : div.style.visibility = "hidden"; + }, + _updateSize: function _updateSize(w, h) { + var div = this._div; + if (div) { + div.style.width = w + "px"; + div.style.height = h + "px"; + } + }, + _initEvent: function _initEvent() { + var iframe = this._iframe; + if (iframe) { + var cbs = this.__eventListeners, self = this; + cbs.load = function () { + self._forceUpdate = true; + self._dispatchEvent(WebViewImpl.EventType.LOADED); + }; + cbs.error = function () { + self._dispatchEvent(WebViewImpl.EventType.ERROR); + }; + iframe.addEventListener("load", cbs.load); + iframe.addEventListener("error", cbs.error); + } + }, + _initStyle: function _initStyle() { + if (!this._div) return; + var div = this._div; + div.style.position = "absolute"; + div.style.bottom = "0px"; + div.style.left = "0px"; + }, + _setOpacity: function _setOpacity(opacity) { + var iframe = this._iframe; + iframe && iframe.style && (iframe.style.opacity = opacity / 255); + }, + _createDom: function _createDom(w, h) { + if (WebViewImpl._polyfill.enableDiv) { + this._div = document.createElement("div"); + this._div.style["-webkit-overflow"] = "auto"; + this._div.style["-webkit-overflow-scrolling"] = "touch"; + this._iframe = document.createElement("iframe"); + this._div.appendChild(this._iframe); + this._iframe.style.width = "100%"; + this._iframe.style.height = "100%"; + } else this._div = this._iframe = document.createElement("iframe"); + WebViewImpl._polyfill.enableBG && (this._div.style["background"] = "#FFF"); + this._div.style.height = h + "px"; + this._div.style.width = w + "px"; + this._div.style.overflow = "scroll"; + this._iframe.style.border = "none"; + cc.game.container.appendChild(this._div); + this._updateVisibility(); + }, + _createNativeControl: function _createNativeControl(w, h) { + this._createDom(w, h); + this._initStyle(); + this._initEvent(); + }, + createDomElementIfNeeded: function (w, h) { + this._div ? this._updateSize(w, h) : this._createNativeControl(w, h); + }, + removeDom: function removeDom() { + var div = this._div; + if (div) { + var hasChild = utils.contains(cc.game.container, div); + hasChild && cc.game.container.removeChild(div); + this._div = null; + } + var iframe = this._iframe; + if (iframe) { + var cbs = this.__eventListeners; + iframe.removeEventListener("load", cbs.load); + iframe.removeEventListener("error", cbs.error); + cbs.load = null; + cbs.error = null; + this._iframe = null; + } + }, + setOnJSCallback: function setOnJSCallback(callback) { }, + setJavascriptInterfaceScheme: function setJavascriptInterfaceScheme(scheme) { }, + loadData: function loadData(data, MIMEType, encoding, baseURL) { }, + loadHTMLString: function loadHTMLString(string, baseURL) { }, + loadURL: function (url) { + var iframe = this._iframe; + if (iframe) { + iframe.src = url; + var self = this; + var cb = function cb() { + self._loaded = true; + self._updateVisibility(); + iframe.removeEventListener("load", cb); + }; + iframe.addEventListener("load", cb); + this._dispatchEvent(WebViewImpl.EventType.LOADING); + } + }, + stopLoading: function stopLoading() { + cc.logID(7800); + }, + reload: function reload() { + var iframe = this._iframe; + if (iframe) { + var win = iframe.contentWindow; + win && win.location && win.location.reload(); + } + }, + canGoBack: function canGoBack() { + cc.logID(7801); + return true; + }, + canGoForward: function canGoForward() { + cc.logID(7802); + return true; + }, + goBack: function goBack() { + try { + if (WebViewImpl._polyfill.closeHistory) return cc.logID(7803); + var iframe = this._iframe; + if (iframe) { + var win = iframe.contentWindow; + win && win.location && win.history.back.call(win); + } + } catch (err) { + cc.log(err); + } + }, + goForward: function goForward() { + try { + if (WebViewImpl._polyfill.closeHistory) return cc.logID(7804); + var iframe = this._iframe; + if (iframe) { + var win = iframe.contentWindow; + win && win.location && win.history.forward.call(win); + } + } catch (err) { + cc.log(err); + } + }, + evaluateJS: function evaluateJS(str) { + var iframe = this._iframe; + if (iframe) { + var win = iframe.contentWindow; + try { + win.eval(str); + this._dispatchEvent(WebViewImpl.EventType.JS_EVALUATED); + } catch (err) { + console.error(err); + } + } + }, + setScalesPageToFit: function setScalesPageToFit() { + cc.logID(7805); + }, + setEventListener: function setEventListener(event, callback) { + this._EventList[event] = callback; + }, + removeEventListener: function removeEventListener(event) { + this._EventList[event] = null; + }, + _dispatchEvent: function _dispatchEvent(event) { + var callback = this._EventList[event]; + callback && callback.call(this, this, this._iframe.src); + }, + _createRenderCmd: function _createRenderCmd() { + return new WebViewImpl.RenderCmd(this); + }, + destroy: function destroy() { + this.removeDom(); + }, + setVisible: function setVisible(visible) { + if (this._visible !== visible) { + this._visible = !!visible; + this._updateVisibility(); + } + }, + updateMatrix: function updateMatrix(node) { + if (!this._div || !this._visible) return; + node.getWorldMatrix(_mat4_temp); + var renderCamera = cc.Camera._findRendererCamera(node); + renderCamera && renderCamera.worldMatrixToScreen(_mat4_temp, _mat4_temp, cc.game.canvas.width, cc.game.canvas.height); + var _mat4_tempm = _mat4_temp.m; + if (!this._forceUpdate && this._m00 === _mat4_tempm[0] && this._m01 === _mat4_tempm[1] && this._m04 === _mat4_tempm[4] && this._m05 === _mat4_tempm[5] && this._m12 === _mat4_tempm[12] && this._m13 === _mat4_tempm[13] && this._w === node._contentSize.width && this._h === node._contentSize.height) return; + this._m00 = _mat4_tempm[0]; + this._m01 = _mat4_tempm[1]; + this._m04 = _mat4_tempm[4]; + this._m05 = _mat4_tempm[5]; + this._m12 = _mat4_tempm[12]; + this._m13 = _mat4_tempm[13]; + this._w = node._contentSize.width; + this._h = node._contentSize.height; + var dpr = cc.view._devicePixelRatio; + var scaleX = 1 / dpr; + var scaleY = 1 / dpr; + var container = cc.game.container; + var a = _mat4_tempm[0] * scaleX, b = _mat4_tempm[1], c = _mat4_tempm[4], d = _mat4_tempm[5] * scaleY; + var offsetX = container && container.style.paddingLeft ? parseInt(container.style.paddingLeft) : 0; + var offsetY = container && container.style.paddingBottom ? parseInt(container.style.paddingBottom) : 0; + this._updateSize(this._w, this._h); + var w = this._w * scaleX; + var h = this._h * scaleY; + var appx = w * _mat4_tempm[0] * node._anchorPoint.x; + var appy = h * _mat4_tempm[5] * node._anchorPoint.y; + var tx = _mat4_tempm[12] * scaleX - appx + offsetX, ty = _mat4_tempm[13] * scaleY - appy + offsetY; + var matrix = "matrix(" + a + "," + -b + "," + -c + "," + d + "," + tx + "," + -ty + ")"; + this._div.style["transform"] = matrix; + this._div.style["-webkit-transform"] = matrix; + this._div.style["transform-origin"] = "0px 100% 0px"; + this._div.style["-webkit-transform-origin"] = "0px 100% 0px"; + this._setOpacity(node.opacity); + this._forceUpdate = false; + } + }); + WebViewImpl.EventType = { + LOADING: 0, + LOADED: 1, + ERROR: 2, + JS_EVALUATED: 3 + }; + var polyfill = WebViewImpl._polyfill = { + devicePixelRatio: false, + enableDiv: false + }; + sys.os === sys.OS_IOS && (polyfill.enableDiv = true); + sys.isMobile ? sys.browserType === sys.BROWSER_TYPE_FIREFOX && (polyfill.enableBG = true) : sys.browserType === sys.BROWSER_TYPE_IE && (polyfill.closeHistory = true); + module.exports = WebViewImpl; + }), { + "../core/platform/CCSys": 248, + "../core/platform/utils": 263 + }], + 411: [(function (require, module, exports) { + "use strict"; + require("./cocos2d/core"); + require("./cocos2d/animation"); + false; + require("./cocos2d/particle"); + require("./cocos2d/tilemap"); + require("./cocos2d/videoplayer/CCVideoPlayer"); + require("./cocos2d/webview/CCWebView"); + require("./cocos2d/core/components/CCStudioComponent"); + require("./extensions/ccpool/CCNodePool"); + require("./cocos2d/actions"); + require("./extensions/spine"); + require("./extensions/dragonbones"); + true; + require("./cocos2d/deprecated"); + }), { + "./cocos2d/actions": 8, + "./cocos2d/animation": 17, + "./cocos2d/core": 206, + "./cocos2d/core/components/CCStudioComponent": 167, + "./cocos2d/deprecated": 351, + "./cocos2d/particle": 357, + "./cocos2d/particle/CCParticleAsset": 354, + "./cocos2d/tilemap": 404, + "./cocos2d/tilemap/CCTiledMapAsset": 400, + "./cocos2d/videoplayer/CCVideoPlayer": 407, + "./cocos2d/webview/CCWebView": 409, + "./extensions/ccpool/CCNodePool": 412, + "./extensions/dragonbones": 422, + "./extensions/spine": 427 + }], + 412: [(function (require, module, exports) { + "use strict"; + cc.NodePool = function (poolHandlerComp) { + this.poolHandlerComp = poolHandlerComp; + this._pool = []; + }; + cc.NodePool.prototype = { + constructor: cc.NodePool, + size: function size() { + return this._pool.length; + }, + clear: function clear() { + var count = this._pool.length; + for (var i = 0; i < count; ++i) this._pool[i].destroy(); + this._pool.length = 0; + }, + put: function put(obj) { + if (obj && -1 === this._pool.indexOf(obj)) { + obj.removeFromParent(false); + var handler = this.poolHandlerComp ? obj.getComponent(this.poolHandlerComp) : null; + handler && handler.unuse && handler.unuse(); + this._pool.push(obj); + } + }, + get: function get() { + var last = this._pool.length - 1; + if (last < 0) return null; + var obj = this._pool[last]; + this._pool.length = last; + var handler = this.poolHandlerComp ? obj.getComponent(this.poolHandlerComp) : null; + handler && handler.reuse && handler.reuse.apply(handler, arguments); + return obj; + } + }; + module.exports = cc.NodePool; + }), {}], + 413: [(function (require, module, exports) { + "use strict"; + var MaxCacheTime = 30; + var FrameTime = 1 / 60; + var _vertices = []; + var _indices = []; + var _boneInfoOffset = 0; + var _vertexOffset = 0; + var _indexOffset = 0; + var _vfOffset = 0; + var _preTexUrl = null; + var _preBlendMode = null; + var _segVCount = 0; + var _segICount = 0; + var _segOffset = 0; + var _colorOffset = 0; + var _preColor = null; + var _x, _y; + var AnimationCache = cc.Class({ + ctor: function ctor() { + this._privateMode = false; + this._inited = false; + this._invalid = true; + this._enableCacheAttachedInfo = false; + this.frames = []; + this.totalTime = 0; + this.isCompleted = false; + this._frameIdx = -1; + this._armatureInfo = null; + this._animationName = null; + this._tempSegments = null; + this._tempColors = null; + this._tempBoneInfos = null; + }, + init: function init(armatureInfo, animationName) { + this._inited = true; + this._armatureInfo = armatureInfo; + this._animationName = animationName; + }, + clear: function clear() { + this._inited = false; + for (var i = 0, n = this.frames.length; i < n; i++) { + var frame = this.frames[i]; + frame.segments.length = 0; + } + this.invalidAllFrame(); + }, + begin: function begin() { + if (!this._invalid) return; + var armatureInfo = this._armatureInfo; + var curAnimationCache = armatureInfo.curAnimationCache; + curAnimationCache && curAnimationCache != this && (this._privateMode ? curAnimationCache.invalidAllFrame() : curAnimationCache.updateToFrame()); + var armature = armatureInfo.armature; + var animation = armature.animation; + animation.play(this._animationName, 1); + armatureInfo.curAnimationCache = this; + this._invalid = false; + this._frameIdx = -1; + this.totalTime = 0; + this.isCompleted = false; + }, + end: function end() { + if (!this._needToUpdate()) { + this._armatureInfo.curAnimationCache = null; + this.frames.length = this._frameIdx + 1; + this.isCompleted = true; + } + }, + _needToUpdate: function _needToUpdate(toFrameIdx) { + var armatureInfo = this._armatureInfo; + var armature = armatureInfo.armature; + var animation = armature.animation; + return !animation.isCompleted && this.totalTime < MaxCacheTime && (void 0 == toFrameIdx || this._frameIdx < toFrameIdx); + }, + updateToFrame: function updateToFrame(toFrameIdx) { + if (!this._inited) return; + this.begin(); + if (!this._needToUpdate(toFrameIdx)) return; + var armatureInfo = this._armatureInfo; + var armature = armatureInfo.armature; + do { + armature.advanceTime(FrameTime); + this._frameIdx++; + this._updateFrame(armature, this._frameIdx); + this.totalTime += FrameTime; + } while (this._needToUpdate(toFrameIdx)); + this.end(); + }, + isInited: function isInited() { + return this._inited; + }, + isInvalid: function isInvalid() { + return this._invalid; + }, + invalidAllFrame: function invalidAllFrame() { + this.isCompleted = false; + this._invalid = true; + }, + updateAllFrame: function updateAllFrame() { + this.invalidAllFrame(); + this.updateToFrame(); + }, + enableCacheAttachedInfo: function enableCacheAttachedInfo() { + if (!this._enableCacheAttachedInfo) { + this._enableCacheAttachedInfo = true; + this.invalidAllFrame(); + } + }, + _updateFrame: function _updateFrame(armature, index) { + _vfOffset = 0; + _boneInfoOffset = 0; + _indexOffset = 0; + _vertexOffset = 0; + _preTexUrl = null; + _preBlendMode = null; + _segVCount = 0; + _segICount = 0; + _segOffset = 0; + _colorOffset = 0; + _preColor = null; + this.frames[index] = this.frames[index] || { + segments: [], + colors: [], + boneInfos: [], + vertices: null, + uintVert: null, + indices: null + }; + var frame = this.frames[index]; + var segments = this._tempSegments = frame.segments; + var colors = this._tempColors = frame.colors; + var boneInfos = this._tempBoneInfos = frame.boneInfos; + this._traverseArmature(armature, 1); + _colorOffset > 0 && (colors[_colorOffset - 1].vfOffset = _vfOffset); + colors.length = _colorOffset; + boneInfos.length = _boneInfoOffset; + var preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) if (_segICount > 0) { + var preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vfCount = 5 * _segVCount; + preSegInfo.vertexCount = _segVCount; + segments.length = _segOffset; + } else segments.length = _segOffset - 1; + if (0 === segments.length) return; + var vertices = frame.vertices; + var uintVert = frame.uintVert; + if (!vertices || vertices.length < _vfOffset) { + vertices = frame.vertices = new Float32Array(_vfOffset); + uintVert = frame.uintVert = new Uint32Array(vertices.buffer); + } + for (var i = 0, j = 0; i < _vfOffset;) { + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + uintVert[i++] = _vertices[j++]; + } + var indices = frame.indices; + (!indices || indices.length < _indexOffset) && (indices = frame.indices = new Uint16Array(_indexOffset)); + for (var _i = 0; _i < _indexOffset; _i++) indices[_i] = _indices[_i]; + frame.vertices = vertices; + frame.uintVert = uintVert; + frame.indices = indices; + }, + _traverseArmature: function _traverseArmature(armature, parentOpacity) { + var colors = this._tempColors; + var segments = this._tempSegments; + var boneInfos = this._tempBoneInfos; + var gVertices = _vertices; + var gIndices = _indices; + var slotVertices, slotIndices; + var slots = armature._slots, slot, slotMatrix, slotMatrixm, slotColor, colorVal; + var texture; + var preSegOffset, preSegInfo; + var bones = armature._bones; + if (this._enableCacheAttachedInfo) for (var i = 0, l = bones.length; i < l; i++, + _boneInfoOffset++) { + var bone = bones[i]; + var boneInfo = boneInfos[_boneInfoOffset]; + boneInfo || (boneInfo = boneInfos[_boneInfoOffset] = { + globalTransformMatrix: new dragonBones.Matrix() + }); + var boneMat = bone.globalTransformMatrix; + var cacheBoneMat = boneInfo.globalTransformMatrix; + cacheBoneMat.copyFrom(boneMat); + } + for (var _i2 = 0, _l = slots.length; _i2 < _l; _i2++) { + slot = slots[_i2]; + if (!slot._visible || !slot._displayData) continue; + slot.updateWorldMatrix(); + slotColor = slot._color; + if (slot.childArmature) { + this._traverseArmature(slot.childArmature, parentOpacity * slotColor.a / 255); + continue; + } + texture = slot.getTexture(); + if (!texture) continue; + if (_preTexUrl !== texture.nativeUrl || _preBlendMode !== slot._blendMode) { + _preTexUrl = texture.nativeUrl; + _preBlendMode = slot._blendMode; + preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) if (_segICount > 0) { + preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vertexCount = _segVCount; + preSegInfo.vfCount = 5 * _segVCount; + } else _segOffset--; + segments[_segOffset] = { + tex: texture, + blendMode: slot._blendMode, + indexCount: 0, + vertexCount: 0, + vfCount: 0 + }; + _segOffset++; + _segICount = 0; + _segVCount = 0; + } + colorVal = (slotColor.a * parentOpacity << 24 >>> 0) + (slotColor.b << 16) + (slotColor.g << 8) + slotColor.r; + if (_preColor !== colorVal) { + _preColor = colorVal; + _colorOffset > 0 && (colors[_colorOffset - 1].vfOffset = _vfOffset); + colors[_colorOffset++] = { + r: slotColor.r, + g: slotColor.g, + b: slotColor.b, + a: slotColor.a * parentOpacity, + vfOffset: 0 + }; + } + slotVertices = slot._localVertices; + slotIndices = slot._indices; + slotMatrix = slot._worldMatrix; + slotMatrixm = slotMatrix.m; + for (var j = 0, vl = slotVertices.length; j < vl;) { + _x = slotVertices[j++]; + _y = slotVertices[j++]; + gVertices[_vfOffset++] = _x * slotMatrixm[0] + _y * slotMatrixm[4] + slotMatrixm[12]; + gVertices[_vfOffset++] = _x * slotMatrixm[1] + _y * slotMatrixm[5] + slotMatrixm[13]; + gVertices[_vfOffset++] = slotVertices[j++]; + gVertices[_vfOffset++] = slotVertices[j++]; + gVertices[_vfOffset++] = colorVal; + } + for (var ii = 0, il = slotIndices.length; ii < il; ii++) gIndices[_indexOffset++] = _segVCount + slotIndices[ii]; + _vertexOffset = _vfOffset / 5; + _segICount += slotIndices.length; + _segVCount += slotVertices.length / 4; + } + } + }); + var ArmatureCache = cc.Class({ + ctor: function ctor() { + this._privateMode = false; + this._animationPool = {}; + this._armatureCache = {}; + }, + enablePrivateMode: function enablePrivateMode() { + this._privateMode = true; + }, + dispose: function dispose() { + for (var key in this._armatureCache) { + var armatureInfo = this._armatureCache[key]; + if (armatureInfo) { + var armature = armatureInfo.armature; + armature && armature.dispose(); + } + } + this._armatureCache = null; + this._animationPool = null; + }, + _removeArmature: function _removeArmature(armatureKey) { + var armatureInfo = this._armatureCache[armatureKey]; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + if (!animationCache) continue; + this._animationPool[armatureKey + "#" + aniKey] = animationCache; + animationCache.clear(); + } + var armature = armatureInfo.armature; + armature && armature.dispose(); + delete this._armatureCache[armatureKey]; + }, + resetArmature: function resetArmature(uuid) { + for (var armatureKey in this._armatureCache) { + if (-1 == armatureKey.indexOf(uuid)) continue; + this._removeArmature(armatureKey); + } + }, + getArmatureCache: function getArmatureCache(armatureName, armatureKey, atlasUUID) { + var armatureInfo = this._armatureCache[armatureKey]; + var armature; + if (armatureInfo) armature = armatureInfo.armature; else { + var factory = dragonBones.CCFactory.getInstance(); + var proxy = factory.buildArmatureDisplay(armatureName, armatureKey, "", atlasUUID); + if (!proxy || !proxy._armature) return; + armature = proxy._armature; + if (!ArmatureCache.canCache(armature)) { + armature.dispose(); + return; + } + this._armatureCache[armatureKey] = { + armature: armature, + animationsCache: {}, + curAnimationCache: null + }; + } + return armature; + }, + getAnimationCache: function getAnimationCache(armatureKey, animationName) { + var armatureInfo = this._armatureCache[armatureKey]; + if (!armatureInfo) return null; + var animationsCache = armatureInfo.animationsCache; + return animationsCache[animationName]; + }, + initAnimationCache: function initAnimationCache(armatureKey, animationName) { + if (!animationName) return null; + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return null; + var animation = armature.animation; + var hasAni = animation.hasAnimation(animationName); + if (!hasAni) return null; + var animationsCache = armatureInfo.animationsCache; + var animationCache = animationsCache[animationName]; + if (!animationCache) { + var poolKey = armatureKey + "#" + animationName; + animationCache = this._animationPool[poolKey]; + if (animationCache) delete this._animationPool[poolKey]; else { + animationCache = new AnimationCache(); + animationCache._privateMode = this._privateMode; + } + animationCache.init(armatureInfo, animationName); + animationsCache[animationName] = animationCache; + } + return animationCache; + }, + invalidAnimationCache: function invalidAnimationCache(armatureKey) { + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return null; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + animationCache.invalidAllFrame(); + } + }, + updateAnimationCache: function updateAnimationCache(armatureKey, animationName) { + if (animationName) { + var animationCache = this.initAnimationCache(armatureKey, animationName); + if (!animationCache) return; + animationCache.updateAllFrame(); + } else { + var armatureInfo = this._armatureCache[armatureKey]; + var armature = armatureInfo && armatureInfo.armature; + if (!armature) return null; + var animationsCache = armatureInfo.animationsCache; + for (var aniKey in animationsCache) { + var _animationCache = animationsCache[aniKey]; + _animationCache.updateAllFrame(); + } + } + } + }); + ArmatureCache.FrameTime = FrameTime; + ArmatureCache.sharedCache = new ArmatureCache(); + ArmatureCache.canCache = function (armature) { + var slots = armature._slots; + for (var i = 0, l = slots.length; i < l; i++) { + var slot = slots[i]; + if (slot.childArmature) return false; + } + return true; + }, module.exports = ArmatureCache; + }), {}], + 414: [(function (require, module, exports) { + "use strict"; + var RenderComponent = require("../../cocos2d/core/components/CCRenderComponent"); + var EventTarget = require("../../cocos2d/core/event/event-target"); + var Graphics = require("../../cocos2d/core/graphics/graphics"); + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var FLAG_POST_RENDER = RenderFlow.FLAG_POST_RENDER; + var ArmatureCache = require("./ArmatureCache"); + var AttachUtil = require("./AttachUtil"); + var DefaultArmaturesEnum = cc.Enum({ + default: -1 + }); + var DefaultAnimsEnum = cc.Enum({ + "": 0 + }); + var DefaultCacheMode = cc.Enum({ + REALTIME: 0 + }); + var AnimationCacheMode = cc.Enum({ + REALTIME: 0, + SHARED_CACHE: 1, + PRIVATE_CACHE: 2 + }); + function setEnumAttr(obj, propName, enumDef) { + cc.Class.Attr.setClassAttr(obj, propName, "type", "Enum"); + cc.Class.Attr.setClassAttr(obj, propName, "enumList", cc.Enum.getList(enumDef)); + } + var ArmatureDisplay = cc.Class({ + name: "dragonBones.ArmatureDisplay", + extends: RenderComponent, + editor: false, + statics: { + AnimationCacheMode: AnimationCacheMode + }, + properties: { + _factory: { + default: null, + type: dragonBones.CCFactory, + serializable: false + }, + dragonAsset: { + default: null, + type: dragonBones.DragonBonesAsset, + notify: function notify() { + this._refresh(); + false; + }, + tooltip: false + }, + dragonAtlasAsset: { + default: null, + type: dragonBones.DragonBonesAtlasAsset, + notify: function notify() { + this._parseDragonAtlasAsset(); + this._refresh(); + }, + tooltip: false + }, + _armatureName: "", + armatureName: { + get: function get() { + return this._armatureName; + }, + set: function set(value) { + this._armatureName = value; + var animNames = this.getAnimationNames(this._armatureName); + if (!this.animationName || animNames.indexOf(this.animationName) < 0) { + false; + this.animationName = ""; + } + this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.remove(this._armature); + this._refresh(); + this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.add(this._armature); + }, + visible: false + }, + _animationName: "", + animationName: { + get: function get() { + return this._animationName; + }, + set: function set(value) { + this._animationName = value; + }, + visible: false + }, + _defaultArmatureIndex: { + default: 0, + notify: function notify() { + var armatureName = ""; + if (this.dragonAsset) { + var armaturesEnum; + this.dragonAsset && (armaturesEnum = this.dragonAsset.getArmatureEnum()); + if (!armaturesEnum) return cc.errorID(7400, this.name); + armatureName = armaturesEnum[this._defaultArmatureIndex]; + } + void 0 !== armatureName ? this.armatureName = armatureName : cc.errorID(7401, this.name); + }, + type: DefaultArmaturesEnum, + visible: true, + editorOnly: true, + animatable: false, + displayName: "Armature", + tooltip: false + }, + _animationIndex: { + default: 0, + notify: function notify() { + if (0 === this._animationIndex) { + this.animationName = ""; + return; + } + var animsEnum; + this.dragonAsset && (animsEnum = this.dragonAsset.getAnimsEnum(this.armatureName)); + if (!animsEnum) return; + var animName = animsEnum[this._animationIndex]; + void 0 !== animName ? this.playAnimation(animName, this.playTimes) : cc.errorID(7402, this.name); + }, + type: DefaultAnimsEnum, + visible: true, + editorOnly: true, + animatable: false, + displayName: "Animation", + tooltip: false + }, + _preCacheMode: -1, + _cacheMode: AnimationCacheMode.REALTIME, + _defaultCacheMode: { + default: 0, + type: AnimationCacheMode, + notify: function notify() { + if (this._defaultCacheMode !== AnimationCacheMode.REALTIME && this._armature && !ArmatureCache.canCache(this._armature)) { + this._defaultCacheMode = AnimationCacheMode.REALTIME; + cc.warn("Animation cache mode doesn't support skeletal nesting"); + return; + } + this.setAnimationCacheMode(this._defaultCacheMode); + }, + editorOnly: true, + visible: true, + animatable: false, + displayName: "Animation Cache Mode", + tooltip: false + }, + timeScale: { + default: 1, + notify: function notify() { + this._armature && !this.isAnimationCached() && (this._armature.animation.timeScale = this.timeScale); + }, + tooltip: false + }, + playTimes: { + default: -1, + tooltip: false + }, + premultipliedAlpha: { + default: false, + tooltip: false + }, + debugBones: { + default: false, + notify: function notify() { + this._updateDebugDraw(); + }, + tooltip: false + }, + enableBatch: { + default: false, + notify: function notify() { + this._updateBatch(); + }, + tooltip: false + }, + _armatureKey: "", + _accTime: 0, + _playCount: 0, + _frameCache: null, + _curFrame: null, + _playing: false, + _armatureCache: null + }, + ctor: function ctor() { + this._eventTarget = new EventTarget(); + this._materialCache = {}; + this._inited = false; + this.attachUtil = new AttachUtil(); + this._factory = dragonBones.CCFactory.getInstance(); + }, + onLoad: function onLoad() { + var children = this.node.children; + for (var i = 0, n = children.length; i < n; i++) { + var child = children[i]; + var pos = child._name && child._name.search("CHILD_ARMATURE-"); + 0 === pos && child.destroy(); + } + }, + _updateBatch: function _updateBatch() { + var baseMaterial = this.getMaterial(0); + baseMaterial && baseMaterial.define("CC_USE_MODEL", !this.enableBatch); + this._materialCache = {}; + }, + _updateMaterial: function _updateMaterial() { + var baseMaterial = this.getMaterial(0); + if (baseMaterial) { + baseMaterial.define("CC_USE_MODEL", !this.enableBatch); + baseMaterial.define("USE_TEXTURE", true); + var srcBlendFactor = this.premultipliedAlpha ? cc.gfx.BLEND_ONE : cc.gfx.BLEND_SRC_ALPHA; + var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA; + baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor); + } + this._materialCache = {}; + }, + disableRender: function disableRender() { + this._super(); + this.node._renderFlag &= ~FLAG_POST_RENDER; + }, + markForRender: function markForRender(enable) { + this._super(enable); + enable ? this.node._renderFlag |= FLAG_POST_RENDER : this.node._renderFlag &= ~FLAG_POST_RENDER; + }, + _validateRender: function _validateRender() { + var texture = this.dragonAtlasAsset && this.dragonAtlasAsset.texture; + if (!texture || !texture.loaded) { + this.disableRender(); + return; + } + this._super(); + }, + __preload: function __preload() { + this._init(); + }, + _init: function _init() { + if (this._inited) return; + this._inited = true; + this._resetAssembler(); + this._activateMaterial(); + this._parseDragonAtlasAsset(); + this._refresh(); + var children = this.node.children; + for (var i = 0, n = children.length; i < n; i++) { + var child = children[i]; + child && "DEBUG_DRAW_NODE" === child._name && child.destroy(); + } + this._updateDebugDraw(); + }, + getArmatureKey: function getArmatureKey() { + return this._armatureKey; + }, + setAnimationCacheMode: function setAnimationCacheMode(cacheMode) { + if (this._preCacheMode !== cacheMode) { + this._cacheMode = cacheMode; + this._buildArmature(); + this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.add(this._armature); + } + }, + isAnimationCached: function isAnimationCached() { + false; + return this._cacheMode !== AnimationCacheMode.REALTIME; + }, + onEnable: function onEnable() { + this._super(); + this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.add(this._armature); + }, + onDisable: function onDisable() { + this._super(); + this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.remove(this._armature); + }, + _emitCacheCompleteEvent: function _emitCacheCompleteEvent() { + this._eventTarget.emit(dragonBones.EventObject.LOOP_COMPLETE); + this._eventTarget.emit(dragonBones.EventObject.COMPLETE); + }, + update: function update(dt) { + if (!this.isAnimationCached()) return; + if (!this._frameCache) return; + var frameCache = this._frameCache; + if (!frameCache.isInited()) return; + var frames = frameCache.frames; + if (!this._playing) { + if (frameCache.isInvalid()) { + frameCache.updateToFrame(); + this._curFrame = frames[frames.length - 1]; + } + return; + } + var frameTime = ArmatureCache.FrameTime; + 0 == this._accTime && 0 == this._playCount && this._eventTarget.emit(dragonBones.EventObject.START); + var globalTimeScale = dragonBones.timeScale; + this._accTime += dt * this.timeScale * globalTimeScale; + var frameIdx = Math.floor(this._accTime / frameTime); + frameCache.isCompleted || frameCache.updateToFrame(frameIdx); + if (frameCache.isCompleted && frameIdx >= frames.length) { + this._playCount++; + if (this.playTimes > 0 && this._playCount >= this.playTimes) { + this._curFrame = frames[frames.length - 1]; + this._accTime = 0; + this._playing = false; + this._playCount = 0; + this._emitCacheCompleteEvent(); + return; + } + this._accTime = 0; + frameIdx = 0; + this._emitCacheCompleteEvent(); + } + this._curFrame = frames[frameIdx]; + }, + onDestroy: function onDestroy() { + this._super(); + this._inited = false; + true; + if (this._cacheMode === AnimationCacheMode.PRIVATE_CACHE) { + this._armatureCache.dispose(); + this._armatureCache = null; + this._armature = null; + } else if (this._cacheMode === AnimationCacheMode.SHARED_CACHE) { + this._armatureCache = null; + this._armature = null; + } else if (this._armature) { + this._armature.dispose(); + this._armature = null; + } + }, + _updateDebugDraw: function _updateDebugDraw() { + if (this.debugBones) { + if (!this._debugDraw) { + var debugDrawNode = new cc.PrivateNode(); + debugDrawNode.name = "DEBUG_DRAW_NODE"; + var debugDraw = debugDrawNode.addComponent(Graphics); + debugDraw.lineWidth = 1; + debugDraw.strokeColor = cc.color(255, 0, 0, 255); + this._debugDraw = debugDraw; + } + this._debugDraw.node.parent = this.node; + } else this._debugDraw && (this._debugDraw.node.parent = null); + }, + _buildArmature: function _buildArmature() { + if (!this.dragonAsset || !this.dragonAtlasAsset || !this.armatureName) return; + if (this._armature) { + true; + this._preCacheMode === AnimationCacheMode.PRIVATE_CACHE ? this._armatureCache.dispose() : this._preCacheMode === AnimationCacheMode.REALTIME && this._armature.dispose(); + this._armatureCache = null; + this._armature = null; + this._displayProxy = null; + this._frameCache = null; + this._curFrame = null; + this._playing = false; + this._preCacheMode = null; + } + true; + if (this._cacheMode === AnimationCacheMode.SHARED_CACHE) this._armatureCache = ArmatureCache.sharedCache; else if (this._cacheMode === AnimationCacheMode.PRIVATE_CACHE) { + this._armatureCache = new ArmatureCache(); + this._armatureCache.enablePrivateMode(); + } + var atlasUUID = this.dragonAtlasAsset._uuid; + this._armatureKey = this.dragonAsset.init(this._factory, atlasUUID); + if (this.isAnimationCached()) { + this._armature = this._armatureCache.getArmatureCache(this.armatureName, this._armatureKey, atlasUUID); + this._armature || (this._cacheMode = AnimationCacheMode.REALTIME); + } + this._preCacheMode = this._cacheMode; + if (false, this._cacheMode === AnimationCacheMode.REALTIME) { + this._displayProxy = this._factory.buildArmatureDisplay(this.armatureName, this._armatureKey, "", atlasUUID); + if (!this._displayProxy) return; + this._displayProxy._ccNode = this.node; + this._displayProxy.setEventTarget(this._eventTarget); + this._armature = this._displayProxy._armature; + this._armature.animation.timeScale = this.timeScale; + } + this._cacheMode !== AnimationCacheMode.REALTIME && this.debugBones && cc.warn("Debug bones is invalid in cached mode"); + if (this._armature) { + var armatureData = this._armature.armatureData; + var aabb = armatureData.aabb; + this.node.setContentSize(aabb.width, aabb.height); + } + this._updateBatch(); + this.attachUtil.init(this); + this.attachUtil._associateAttachedNode(); + this.animationName && this.playAnimation(this.animationName, this.playTimes); + this.markForRender(true); + }, + _parseDragonAtlasAsset: function _parseDragonAtlasAsset() { + this.dragonAtlasAsset && this.dragonAtlasAsset.init(this._factory); + }, + _refresh: function _refresh() { + this._buildArmature(); + false; + }, + _updateCacheModeEnum: false, + _updateAnimEnum: false, + _updateArmatureEnum: false, + playAnimation: function playAnimation(animName, playTimes) { + this.playTimes = void 0 === playTimes ? -1 : playTimes; + this.animationName = animName; + if (this.isAnimationCached()) { + var cache = this._armatureCache.getAnimationCache(this._armatureKey, animName); + cache || (cache = this._armatureCache.initAnimationCache(this._armatureKey, animName)); + if (cache) { + this._accTime = 0; + this._playCount = 0; + this._frameCache = cache; + this.attachUtil._hasAttachedNode() && this._frameCache.enableCacheAttachedInfo(); + this._frameCache.updateToFrame(0); + this._playing = true; + this._curFrame = this._frameCache.frames[0]; + } + } else if (this._armature) return this._armature.animation.play(animName, this.playTimes); + }, + updateAnimationCache: function updateAnimationCache(animName) { + if (!this.isAnimationCached()) return; + this._armatureCache.updateAnimationCache(this._armatureKey, animName); + }, + invalidAnimationCache: function invalidAnimationCache() { + if (!this.isAnimationCached()) return; + this._armatureCache.invalidAnimationCache(this._armatureKey); + }, + getArmatureNames: function getArmatureNames() { + var dragonBonesData = this._factory.getDragonBonesData(this._armatureKey); + return dragonBonesData && dragonBonesData.armatureNames || []; + }, + getAnimationNames: function getAnimationNames(armatureName) { + var ret = []; + var dragonBonesData = this._factory.getDragonBonesData(this._armatureKey); + if (dragonBonesData) { + var armatureData = dragonBonesData.getArmature(armatureName); + if (armatureData) for (var animName in armatureData.animations) armatureData.animations.hasOwnProperty(animName) && ret.push(animName); + } + return ret; + }, + on: function on(eventType, listener, target) { + this.addEventListener(eventType, listener, target); + }, + off: function off(eventType, listener, target) { + this.removeEventListener(eventType, listener, target); + }, + once: function once(eventType, listener, target) { + this._eventTarget.once(eventType, listener, target); + }, + addEventListener: function addEventListener(eventType, listener, target) { + this._eventTarget.on(eventType, listener, target); + }, + removeEventListener: function removeEventListener(eventType, listener, target) { + this._eventTarget.off(eventType, listener, target); + }, + buildArmature: function buildArmature(armatureName, node) { + return this._factory.createArmatureNode(this, armatureName, node); + }, + armature: function armature() { + return this._armature; + } + }); + module.exports = dragonBones.ArmatureDisplay = ArmatureDisplay; + }), { + "../../cocos2d/core/components/CCRenderComponent": 160, + "../../cocos2d/core/event/event-target": 186, + "../../cocos2d/core/graphics/graphics": 202, + "../../cocos2d/core/renderer/render-flow": 272, + "./ArmatureCache": 413, + "./AttachUtil": 415 + }], + 415: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../cocos2d/core/value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var FLAG_TRANSFORM = RenderFlow.FLAG_TRANSFORM; + var EmptyHandle = function EmptyHandle() { }; + var ATTACHED_ROOT_NAME = "ATTACHED_NODE_TREE"; + var ATTACHED_PRE_NAME = "ATTACHED_NODE:"; + var limitNode = function limitNode(node) { + Object.defineProperty(node, "_worldMatDirty", { + get: function get() { + return true; + }, + set: function set(value) { } + }); + node._calculWorldMatrix = EmptyHandle; + node._mulMat = EmptyHandle; + }; + var _tempMat4 = new _mat["default"](); + var AttachUtil = cc.Class({ + name: "dragonBones.AttachUtil", + ctor: function ctor() { + this._inited = false; + this._armature = null; + this._armatureNode = null; + this._armatureDisplay = null; + this._attachedRootNode = null; + this._attachedNodeArray = []; + this._boneIndexToNode = {}; + }, + init: function init(armatureDisplay) { + this._inited = true; + this._armature = armatureDisplay._armature; + this._armatureNode = armatureDisplay.node; + this._armatureDisplay = armatureDisplay; + }, + reset: function reset() { + this._inited = false; + this._armature = null; + this._armatureNode = null; + this._armatureDisplay = null; + }, + _prepareAttachNode: function _prepareAttachNode() { + var armature = this._armature; + if (!armature) return; + var rootNode = this._armatureNode.getChildByName(ATTACHED_ROOT_NAME); + if (!rootNode || !rootNode.isValid) { + rootNode = new cc.Node(ATTACHED_ROOT_NAME); + limitNode(rootNode); + this._armatureNode.addChild(rootNode); + } + var isCached = this._armatureDisplay.isAnimationCached(); + isCached && this._armatureDisplay._frameCache && this._armatureDisplay._frameCache.enableCacheAttachedInfo(); + this._attachedRootNode = rootNode; + return rootNode; + }, + _buildBoneAttachedNode: function _buildBoneAttachedNode(bone, boneIndex) { + var boneNodeName = ATTACHED_PRE_NAME + bone.name; + var boneNode = new cc.Node(boneNodeName); + this._buildBoneRelation(boneNode, bone, boneIndex); + return boneNode; + }, + _buildBoneRelation: function _buildBoneRelation(boneNode, bone, boneIndex) { + limitNode(boneNode); + boneNode._bone = bone; + boneNode._boneIndex = boneIndex; + this._attachedNodeArray.push(boneNode); + this._boneIndexToNode[boneIndex] = boneNode; + }, + getAttachedRootNode: function getAttachedRootNode() { + return this._attachedRootNode; + }, + getAttachedNodes: function getAttachedNodes(boneName) { + var nodeArray = this._attachedNodeArray; + var res = []; + if (!this._inited) return res; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) continue; + boneNode.name === ATTACHED_PRE_NAME + boneName && res.push(boneNode); + } + return res; + }, + _rebuildNodeArray: function _rebuildNodeArray() { + var findMap = this._boneIndexToNode = {}; + var oldNodeArray = this._attachedNodeArray; + var nodeArray = this._attachedNodeArray = []; + for (var i = 0, n = oldNodeArray.length; i < n; i++) { + var boneNode = oldNodeArray[i]; + if (!boneNode || !boneNode.isValid || boneNode._toRemove) continue; + nodeArray.push(boneNode); + findMap[boneNode._boneIndex] = boneNode; + } + }, + _sortNodeArray: function _sortNodeArray() { + var nodeArray = this._attachedNodeArray; + nodeArray.sort((function (a, b) { + return a._boneIndex < b._boneIndex ? -1 : 1; + })); + }, + _getNodeByBoneIndex: function _getNodeByBoneIndex(boneIndex) { + var findMap = this._boneIndexToNode; + var boneNode = findMap[boneIndex]; + if (!boneNode || !boneNode.isValid) return null; + return boneNode; + }, + destroyAttachedNodes: function destroyAttachedNodes(boneName) { + if (!this._inited) return; + var nodeArray = this._attachedNodeArray; + var markTree = function markTree(rootNode) { + var children = rootNode.children; + for (var i = 0, n = children.length; i < n; i++) { + var c = children[i]; + c && markTree(c); + } + rootNode._toRemove = true; + }; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) continue; + var delName = boneNode.name.split(ATTACHED_PRE_NAME)[1]; + if (delName === boneName) { + markTree(boneNode); + boneNode.removeFromParent(true); + boneNode.destroy(); + nodeArray[i] = null; + } + } + this._rebuildNodeArray(); + }, + generateAttachedNodes: function generateAttachedNodes(boneName) { + var targetNodes = []; + if (!this._inited) return targetNodes; + var rootNode = this._prepareAttachNode(); + if (!rootNode) return targetNodes; + var boneIndex = 0; + var res = []; + var attachedTraverse = function (armature) { + if (!armature) return; + var bones = armature.getBones(), bone; + for (var i = 0, l = bones.length; i < l; i++) { + bone = bones[i]; + bone._boneIndex = boneIndex++; + boneName === bone.name && res.push(bone); + } + var slots = armature.getSlots(), slot; + for (var _i = 0, _l = slots.length; _i < _l; _i++) { + slot = slots[_i]; + slot.childArmature && attachedTraverse(slot.childArmature); + } + }.bind(this); + attachedTraverse(this._armature); + var buildBoneTree = function (bone) { + if (!bone) return; + var boneNode = this._getNodeByBoneIndex(bone._boneIndex); + if (boneNode) return boneNode; + boneNode = this._buildBoneAttachedNode(bone, bone._boneIndex); + var subArmatureParentBone = null; + if (bone.armature.parent) { + var parentSlot = bone.armature.parent; + subArmatureParentBone = parentSlot.parent; + } + var parentBoneNode = buildBoneTree(bone.parent || subArmatureParentBone) || rootNode; + boneNode.parent = parentBoneNode; + bone.parent ? boneNode._rootNode = parentBoneNode._rootNode : boneNode._rootNode = parentBoneNode; + return boneNode; + }.bind(this); + for (var i = 0, n = res.length; i < n; i++) { + var targetNode = buildBoneTree(res[i]); + targetNode && targetNodes.push(targetNode); + } + this._sortNodeArray(); + return targetNodes; + }, + destroyAllAttachedNodes: function destroyAllAttachedNodes() { + this._attachedRootNode = null; + this._attachedNodeArray.length = 0; + this._boneIndexToNode = {}; + if (!this._inited) return; + var rootNode = this._armatureNode.getChildByName(ATTACHED_ROOT_NAME); + if (rootNode) { + rootNode.removeFromParent(true); + rootNode.destroy(); + rootNode = null; + } + }, + generateAllAttachedNodes: function generateAllAttachedNodes() { + if (!this._inited) return; + this._boneIndexToNode = {}; + this._attachedNodeArray.length = 0; + var rootNode = this._prepareAttachNode(); + if (!rootNode) return; + var boneIndex = 0; + var attachedTraverse = function (armature) { + if (!armature) return; + var subArmatureParentNode = rootNode; + if (armature.parent) { + var parentSlot = armature.parent; + var parentBone = parentSlot.parent; + subArmatureParentNode = parentBone._attachedNode; + } + var bones = armature.getBones(), bone; + for (var i = 0, l = bones.length; i < l; i++) { + var curBoneIndex = boneIndex++; + bone = bones[i]; + bone._attachedNode = null; + var parentNode = null; + parentNode = bone.parent ? bone.parent._attachedNode : subArmatureParentNode; + if (parentNode) { + var boneNode = parentNode.getChildByName(ATTACHED_PRE_NAME + bone.name); + if (boneNode && boneNode.isValid) this._buildBoneRelation(boneNode, bone, curBoneIndex); else { + boneNode = this._buildBoneAttachedNode(bone, curBoneIndex); + parentNode.addChild(boneNode); + } + boneNode._rootNode = subArmatureParentNode; + bone._attachedNode = boneNode; + } + } + var slots = armature.getSlots(), slot; + for (var _i2 = 0, _l2 = slots.length; _i2 < _l2; _i2++) { + slot = slots[_i2]; + slot.childArmature && attachedTraverse(slot.childArmature); + } + }.bind(this); + attachedTraverse(this._armature); + return rootNode; + }, + _hasAttachedNode: function _hasAttachedNode() { + if (!this._inited) return false; + var attachedRootNode = this._armatureNode.getChildByName(ATTACHED_ROOT_NAME); + return !!attachedRootNode; + }, + _associateAttachedNode: function _associateAttachedNode() { + if (!this._inited) return; + var rootNode = this._armatureNode.getChildByName(ATTACHED_ROOT_NAME); + if (!rootNode || !rootNode.isValid) return; + this._attachedRootNode = rootNode; + this._boneIndexToNode = {}; + var nodeArray = this._attachedNodeArray; + nodeArray.length = 0; + var armature = this._armature; + if (!armature) return; + limitNode(rootNode); + true; + var isCached = this._armatureDisplay.isAnimationCached(); + isCached && this._armatureDisplay._frameCache && this._armatureDisplay._frameCache.enableCacheAttachedInfo(); + var boneIndex = 0; + var attachedTraverse = function (armature) { + if (!armature) return; + var subArmatureParentNode = rootNode; + if (armature.parent) { + var parentSlot = armature.parent; + var parentBone = parentSlot.parent; + subArmatureParentNode = parentBone._attachedNode; + } + var bones = armature.getBones(), bone; + for (var i = 0, l = bones.length; i < l; i++) { + var curBoneIndex = boneIndex++; + bone = bones[i]; + bone._attachedNode = null; + var parentNode = null; + parentNode = bone.parent ? bone.parent._attachedNode : subArmatureParentNode; + if (parentNode) { + var boneNode = parentNode.getChildByName(ATTACHED_PRE_NAME + bone.name); + if (boneNode && boneNode.isValid) { + this._buildBoneRelation(boneNode, bone, curBoneIndex); + boneNode._rootNode = subArmatureParentNode; + bone._attachedNode = boneNode; + } + } + } + var slots = armature.getSlots(), slot; + for (var _i3 = 0, _l3 = slots.length; _i3 < _l3; _i3++) { + slot = slots[_i3]; + slot.childArmature && attachedTraverse(slot.childArmature); + } + }.bind(this); + attachedTraverse(armature); + }, + _syncAttachedNode: function _syncAttachedNode() { + if (!this._inited) return; + var rootNode = this._attachedRootNode; + var nodeArray = this._attachedNodeArray; + if (!rootNode || !rootNode.isValid) { + this._attachedRootNode = null; + nodeArray.length = 0; + return; + } + var rootMatrix = this._armatureNode._worldMatrix; + _mat["default"].copy(rootNode._worldMatrix, rootMatrix); + rootNode._renderFlag &= ~FLAG_TRANSFORM; + var boneInfos = null; + var isCached = this._armatureDisplay.isAnimationCached(); + if (isCached) { + boneInfos = this._armatureDisplay._curFrame && this._armatureDisplay._curFrame.boneInfos; + if (!boneInfos) return; + } + var mulMat = this._armatureNode._mulMat; + var matrixHandle = function matrixHandle(nodeMat, parentMat, boneMat) { + var tm = _tempMat4.m; + tm[0] = boneMat.a; + tm[1] = boneMat.b; + tm[4] = -boneMat.c; + tm[5] = -boneMat.d; + tm[12] = boneMat.tx; + tm[13] = boneMat.ty; + mulMat(nodeMat, parentMat, _tempMat4); + }; + var nodeArrayDirty = false; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) { + nodeArray[i] = null; + nodeArrayDirty = true; + continue; + } + var bone = isCached ? boneInfos[boneNode._boneIndex] : boneNode._bone; + if (!bone || bone._isInPool) { + boneNode.removeFromParent(true); + boneNode.destroy(); + nodeArray[i] = null; + nodeArrayDirty = true; + continue; + } + matrixHandle(boneNode._worldMatrix, boneNode._rootNode._worldMatrix, bone.globalTransformMatrix); + boneNode._renderFlag &= ~FLAG_TRANSFORM; + } + nodeArrayDirty && this._rebuildNodeArray(); + } + }); + module.exports = dragonBones.AttachUtil = AttachUtil; + }), { + "../../cocos2d/core/renderer/render-flow": 272, + "../../cocos2d/core/value-types/mat4": 341 + }], + 416: [(function (require, module, exports) { + "use strict"; + var EventTarget = require("../../cocos2d/core/event/event-target"); + dragonBones.CCArmatureDisplay = cc.Class({ + name: "dragonBones.CCArmatureDisplay", + properties: { + node: { + get: function get() { + return this; + } + } + }, + ctor: function ctor() { + this._eventTarget = new EventTarget(); + }, + setEventTarget: function setEventTarget(eventTarget) { + this._eventTarget = eventTarget; + }, + getRootDisplay: function getRootDisplay() { + var parentSlot = this._armature._parent; + if (!parentSlot) return this; + var slot; + while (parentSlot) { + slot = parentSlot; + parentSlot = parentSlot._armature._parent; + } + return slot._armature.getDisplay(); + }, + convertToRootSpace: function convertToRootSpace(pos) { + var slot = this._armature._parent; + if (!slot) return pos; + slot.updateWorldMatrix(); + var worldMatrix = slot._worldMatrix; + var worldMatrixm = worldMatrix.m; + var newPos = cc.v2(0, 0); + newPos.x = pos.x * worldMatrixm[0] + pos.y * worldMatrixm[4] + worldMatrixm[12]; + newPos.y = pos.x * worldMatrixm[1] + pos.y * worldMatrixm[5] + worldMatrixm[13]; + return newPos; + }, + convertToWorldSpace: function convertToWorldSpace(point) { + var newPos = this.convertToRootSpace(point); + var ccNode = this.getRootNode(); + var finalPos = ccNode.convertToWorldSpaceAR(newPos); + return finalPos; + }, + getRootNode: function getRootNode() { + var rootDisplay = this.getRootDisplay(); + return rootDisplay && rootDisplay._ccNode; + }, + dbInit: function dbInit(armature) { + this._armature = armature; + }, + dbClear: function dbClear() { + this._armature = null; + }, + dbUpdate: function dbUpdate() { }, + advanceTimeBySelf: function advanceTimeBySelf(on) { + this.shouldAdvanced = !!on; + }, + hasDBEventListener: function hasDBEventListener(type) { + return this._eventTarget.hasEventListener(type); + }, + addDBEventListener: function addDBEventListener(type, listener, target) { + this._eventTarget.on(type, listener, target); + }, + removeDBEventListener: function removeDBEventListener(type, listener, target) { + this._eventTarget.off(type, listener, target); + }, + dispatchDBEvent: function dispatchDBEvent(type, eventObject) { + this._eventTarget.emit(type, eventObject); + } + }); + }), { + "../../cocos2d/core/event/event-target": 186 + }], + 417: [(function (require, module, exports) { + "use strict"; + var BaseObject = dragonBones.BaseObject, BaseFactory = dragonBones.BaseFactory; + var CCFactory = dragonBones.CCFactory = cc.Class({ + name: "dragonBones.CCFactory", + extends: BaseFactory, + statics: { + _factory: null, + getInstance: function getInstance() { + CCFactory._factory || (CCFactory._factory = new CCFactory()); + return CCFactory._factory; + } + }, + ctor: function ctor() { + var eventManager = new dragonBones.CCArmatureDisplay(); + this._dragonBones = new dragonBones.DragonBones(eventManager); + if ((true, true) && cc.director._scheduler) { + cc.game.on(cc.game.EVENT_RESTART, this.initUpdate, this); + this.initUpdate(); + } + }, + initUpdate: function initUpdate(dt) { + cc.director._scheduler.enableForTarget(this); + cc.director._scheduler.scheduleUpdate(this, cc.Scheduler.PRIORITY_SYSTEM, false); + }, + update: function update(dt) { + this._dragonBones.advanceTime(dt); + }, + getDragonBonesDataByRawData: function getDragonBonesDataByRawData(rawData) { + var dataParser = rawData instanceof ArrayBuffer ? BaseFactory._binaryParser : this._dataParser; + return dataParser.parseDragonBonesData(rawData, 1); + }, + buildArmatureDisplay: function buildArmatureDisplay(armatureName, dragonBonesName, skinName, textureAtlasName) { + var armature = this.buildArmature(armatureName, dragonBonesName, skinName, textureAtlasName); + return armature && armature._display; + }, + createArmatureNode: function createArmatureNode(comp, armatureName, node) { + node = node || new cc.Node(); + var display = node.getComponent(dragonBones.ArmatureDisplay); + display || (display = node.addComponent(dragonBones.ArmatureDisplay)); + node.name = armatureName; + display._armatureName = armatureName; + display._N$dragonAsset = comp.dragonAsset; + display._N$dragonAtlasAsset = comp.dragonAtlasAsset; + display._init(); + return display; + }, + _buildTextureAtlasData: function _buildTextureAtlasData(textureAtlasData, textureAtlas) { + textureAtlasData ? textureAtlasData.renderTexture = textureAtlas : textureAtlasData = BaseObject.borrowObject(dragonBones.CCTextureAtlasData); + return textureAtlasData; + }, + _sortSlots: function _sortSlots() { + var slots = this._slots; + var sortedSlots = []; + for (var i = 0, l = slots.length; i < l; i++) { + var slot = slots[i]; + var zOrder = slot._zOrder; + var inserted = false; + for (var j = sortedSlots.length - 1; j >= 0; j--) if (zOrder >= sortedSlots[j]._zOrder) { + sortedSlots.splice(j + 1, 0, slot); + inserted = true; + break; + } + inserted || sortedSlots.splice(0, 0, slot); + } + this._slots = sortedSlots; + }, + _buildArmature: function _buildArmature(dataPackage) { + var armature = BaseObject.borrowObject(dragonBones.Armature); + armature._skinData = dataPackage.skin; + armature._animation = BaseObject.borrowObject(dragonBones.Animation); + armature._animation._armature = armature; + armature._animation.animations = dataPackage.armature.animations; + armature._isChildArmature = false; + var display = new dragonBones.CCArmatureDisplay(); + armature.init(dataPackage.armature, display, display, this._dragonBones); + return armature; + }, + _buildSlot: function _buildSlot(dataPackage, slotData, displays) { + var slot = BaseObject.borrowObject(dragonBones.CCSlot); + var display = slot; + slot.init(slotData, displays, display, display); + return slot; + }, + getDragonBonesDataByUUID: function getDragonBonesDataByUUID(uuid) { + for (var name in this._dragonBonesDataMap) if (-1 != name.indexOf(uuid)) return this._dragonBonesDataMap[name]; + return null; + }, + removeDragonBonesDataByUUID: function removeDragonBonesDataByUUID(uuid, disposeData) { + void 0 === disposeData && (disposeData = true); + for (var name in this._dragonBonesDataMap) { + if (-1 === name.indexOf(uuid)) continue; + disposeData && this._dragonBones.bufferObject(this._dragonBonesDataMap[name]); + delete this._dragonBonesDataMap[name]; + } + } + }); + }), {}], + 418: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../cocos2d/core/value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var BinaryOffset = dragonBones.BinaryOffset; + var BoneType = dragonBones.BoneType; + dragonBones.CCSlot = cc.Class({ + name: "dragonBones.CCSlot", + extends: dragonBones.Slot, + ctor: function ctor() { + this._localVertices = []; + this._indices = []; + this._matrix = cc.mat4(); + this._worldMatrix = cc.mat4(); + this._worldMatrixDirty = true; + this._visible = false; + this._color = cc.color(); + }, + _onClear: function _onClear() { + this._super(); + this._localVertices.length = 0; + this._indices.length = 0; + _mat["default"].identity(this._matrix); + _mat["default"].identity(this._worldMatrix); + this._worldMatrixDirty = true; + this._color = cc.color(); + this._visible = false; + }, + statics: { + toString: function toString() { + return "[class dragonBones.CCSlot]"; + } + }, + _onUpdateDisplay: function _onUpdateDisplay() { }, + _initDisplay: function _initDisplay(value) { }, + _addDisplay: function _addDisplay() { + this._visible = true; + }, + _replaceDisplay: function _replaceDisplay(value) { }, + _removeDisplay: function _removeDisplay() { + this._visible = false; + }, + _disposeDisplay: function _disposeDisplay(object) { }, + _updateVisible: function _updateVisible() { + this._visible = this.parent._visible; + }, + _updateZOrder: function _updateZOrder() { }, + _updateBlendMode: function _updateBlendMode() { + if (this._childArmature) { + var childSlots = this._childArmature.getSlots(); + for (var i = 0, l = childSlots.length; i < l; i++) { + var slot = childSlots[i]; + slot._blendMode = this._blendMode; + slot._updateBlendMode(); + } + } + }, + _updateColor: function _updateColor() { + var c = this._color; + c.r = 255 * this._colorTransform.redMultiplier; + c.g = 255 * this._colorTransform.greenMultiplier; + c.b = 255 * this._colorTransform.blueMultiplier; + c.a = 255 * this._colorTransform.alphaMultiplier; + }, + getTexture: function getTexture() { + return this._textureData && this._textureData.spriteFrame && this._textureData.spriteFrame.getTexture(); + }, + _updateFrame: function _updateFrame() { + this._indices.length = 0; + var indices = this._indices, localVertices = this._localVertices; + var indexOffset = 0, vfOffset = 0; + var currentTextureData = this._textureData; + if (!this._display || this._displayIndex < 0 || !currentTextureData || !currentTextureData.spriteFrame) return; + var texture = currentTextureData.spriteFrame.getTexture(); + var textureAtlasWidth = texture.width; + var textureAtlasHeight = texture.height; + var region = currentTextureData.region; + var currentVerticesData = null !== this._deformVertices && this._display === this._meshDisplay ? this._deformVertices.verticesData : null; + if (currentVerticesData) { + var data = currentVerticesData.data; + var intArray = data.intArray; + var floatArray = data.floatArray; + var vertexCount = intArray[currentVerticesData.offset + BinaryOffset.MeshVertexCount]; + var triangleCount = intArray[currentVerticesData.offset + BinaryOffset.MeshTriangleCount]; + var vertexOffset = intArray[currentVerticesData.offset + BinaryOffset.MeshFloatOffset]; + vertexOffset < 0 && (vertexOffset += 65536); + var uvOffset = vertexOffset + 2 * vertexCount; + var scale = this._armature._armatureData.scale; + for (var i = 0, l = 2 * vertexCount; i < l; i += 2) { + localVertices[vfOffset++] = floatArray[vertexOffset + i] * scale; + localVertices[vfOffset++] = -floatArray[vertexOffset + i + 1] * scale; + if (currentVerticesData.rotated) { + localVertices[vfOffset++] = (region.x + (1 - floatArray[uvOffset + i]) * region.width) / textureAtlasWidth; + localVertices[vfOffset++] = (region.y + floatArray[uvOffset + i + 1] * region.height) / textureAtlasHeight; + } else { + localVertices[vfOffset++] = (region.x + floatArray[uvOffset + i] * region.width) / textureAtlasWidth; + localVertices[vfOffset++] = (region.y + floatArray[uvOffset + i + 1] * region.height) / textureAtlasHeight; + } + } + for (var _i = 0; _i < 3 * triangleCount; ++_i) indices[indexOffset++] = intArray[currentVerticesData.offset + BinaryOffset.MeshVertexIndices + _i]; + localVertices.length = vfOffset; + indices.length = indexOffset; + var isSkinned = !!currentVerticesData.weight; + isSkinned && this._identityTransform(); + } else { + var _l = region.x / textureAtlasWidth; + var b = (region.y + region.height) / textureAtlasHeight; + var r = (region.x + region.width) / textureAtlasWidth; + var t = region.y / textureAtlasHeight; + localVertices[vfOffset++] = 0; + localVertices[vfOffset++] = 0; + localVertices[vfOffset++] = _l; + localVertices[vfOffset++] = b; + localVertices[vfOffset++] = region.width; + localVertices[vfOffset++] = 0; + localVertices[vfOffset++] = r; + localVertices[vfOffset++] = b; + localVertices[vfOffset++] = 0; + localVertices[vfOffset++] = region.height; + localVertices[vfOffset++] = _l; + localVertices[vfOffset++] = t; + localVertices[vfOffset++] = region.width; + localVertices[vfOffset++] = region.height; + localVertices[vfOffset++] = r; + localVertices[vfOffset++] = t; + indices[0] = 0; + indices[1] = 1; + indices[2] = 2; + indices[3] = 1; + indices[4] = 3; + indices[5] = 2; + localVertices.length = vfOffset; + indices.length = 6; + } + this._visibleDirty = true; + this._blendModeDirty = true; + this._colorDirty = true; + }, + _updateMesh: function _updateMesh() { + var scale = this._armature._armatureData.scale; + var deformVertices = this._deformVertices.vertices; + var bones = this._deformVertices.bones; + var verticesData = this._deformVertices.verticesData; + var weightData = verticesData.weight; + var hasDeform = deformVertices.length > 0 && verticesData.inheritDeform; + var localVertices = this._localVertices; + if (weightData) { + var data = verticesData.data; + var intArray = data.intArray; + var floatArray = data.floatArray; + var vertexCount = intArray[verticesData.offset + BinaryOffset.MeshVertexCount]; + var weightFloatOffset = intArray[weightData.offset + BinaryOffset.WeigthFloatOffset]; + weightFloatOffset < 0 && (weightFloatOffset += 65536); + for (var i = 0, iB = weightData.offset + BinaryOffset.WeigthBoneIndices + bones.length, iV = weightFloatOffset, iF = 0, lvi = 0; i < vertexCount; i++, + lvi += 4) { + var boneCount = intArray[iB++]; + var xG = 0, yG = 0; + for (var j = 0; j < boneCount; ++j) { + var boneIndex = intArray[iB++]; + var bone = bones[boneIndex]; + if (null !== bone) { + var matrix = bone.globalTransformMatrix; + var weight = floatArray[iV++]; + var xL = floatArray[iV++] * scale; + var yL = floatArray[iV++] * scale; + if (hasDeform) { + xL += deformVertices[iF++]; + yL += deformVertices[iF++]; + } + xG += (matrix.a * xL + matrix.c * yL + matrix.tx) * weight; + yG += (matrix.b * xL + matrix.d * yL + matrix.ty) * weight; + } + } + localVertices[lvi] = xG; + localVertices[lvi + 1] = -yG; + } + } else if (hasDeform) { + var isSurface = this._parent._boneData.type !== BoneType.Bone; + var _data = verticesData.data; + var _intArray = _data.intArray; + var _floatArray = _data.floatArray; + var _vertexCount = _intArray[verticesData.offset + BinaryOffset.MeshVertexCount]; + var vertexOffset = _intArray[verticesData.offset + BinaryOffset.MeshFloatOffset]; + vertexOffset < 0 && (vertexOffset += 65536); + for (var _i2 = 0, l = _vertexCount, _lvi = 0; _i2 < l; _i2++, _lvi += 4) { + var x = _floatArray[vertexOffset + 2 * _i2] * scale + deformVertices[2 * _i2]; + var y = _floatArray[vertexOffset + 2 * _i2 + 1] * scale + deformVertices[2 * _i2 + 1]; + if (isSurface) { + var _matrix = this._parent._getGlobalTransformMatrix(x, y); + localVertices[_lvi] = _matrix.a * x + _matrix.c * y + _matrix.tx; + localVertices[_lvi + 1] = -_matrix.b * x + _matrix.d * y + _matrix.ty; + } else { + localVertices[_lvi] = x; + localVertices[_lvi + 1] = -y; + } + } + } + weightData && this._identityTransform(); + }, + _identityTransform: function _identityTransform() { + var m = this._matrix.m; + m[0] = 1; + m[1] = 0; + m[4] = -0; + m[5] = -1; + m[12] = 0; + m[13] = 0; + this._worldMatrixDirty = true; + }, + _updateTransform: function _updateTransform() { + var t = this._matrix; + var tm = t.m; + tm[0] = this.globalTransformMatrix.a; + tm[1] = this.globalTransformMatrix.b; + tm[4] = -this.globalTransformMatrix.c; + tm[5] = -this.globalTransformMatrix.d; + if (this._childArmature) { + tm[12] = this.globalTransformMatrix.tx; + tm[13] = this.globalTransformMatrix.ty; + } else { + tm[12] = this.globalTransformMatrix.tx - (this.globalTransformMatrix.a * this._pivotX - this.globalTransformMatrix.c * this._pivotY); + tm[13] = this.globalTransformMatrix.ty - (this.globalTransformMatrix.b * this._pivotX - this.globalTransformMatrix.d * this._pivotY); + } + this._worldMatrixDirty = true; + }, + updateWorldMatrix: function updateWorldMatrix() { + if (!this._armature) return; + var parentSlot = this._armature._parent; + parentSlot && parentSlot.updateWorldMatrix(); + if (this._worldMatrixDirty) { + this.calculWorldMatrix(); + var childArmature = this.childArmature; + if (!childArmature) return; + var slots = childArmature.getSlots(); + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + slot && (slot._worldMatrixDirty = true); + } + } + }, + _mulMat: function _mulMat(out, a, b) { + var am = a.m, bm = b.m, outm = out.m; + var aa = am[0], ab = am[1], ac = am[4], ad = am[5], atx = am[12], aty = am[13]; + var ba = bm[0], bb = bm[1], bc = bm[4], bd = bm[5], btx = bm[12], bty = bm[13]; + if (0 !== ab || 0 !== ac) { + outm[0] = ba * aa + bb * ac; + outm[1] = ba * ab + bb * ad; + outm[4] = bc * aa + bd * ac; + outm[5] = bc * ab + bd * ad; + outm[12] = aa * btx + ac * bty + atx; + outm[13] = ab * btx + ad * bty + aty; + } else { + outm[0] = ba * aa; + outm[1] = bb * ad; + outm[4] = bc * aa; + outm[5] = bd * ad; + outm[12] = aa * btx + atx; + outm[13] = ad * bty + aty; + } + }, + calculWorldMatrix: function calculWorldMatrix() { + var parent = this._armature._parent; + parent ? this._mulMat(this._worldMatrix, parent._worldMatrix, this._matrix) : _mat["default"].copy(this._worldMatrix, this._matrix); + this._worldMatrixDirty = false; + } + }); + }), { + "../../cocos2d/core/value-types/mat4": 341 + }], + 419: [(function (require, module, exports) { + "use strict"; + dragonBones.CCTextureAtlasData = cc.Class({ + extends: dragonBones.TextureAtlasData, + name: "dragonBones.CCTextureAtlasData", + properties: { + _renderTexture: { + default: null, + serializable: false + }, + renderTexture: { + get: function get() { + return this._renderTexture; + }, + set: function set(value) { + this._renderTexture = value; + if (value) for (var k in this.textures) { + var textureData = this.textures[k]; + if (!textureData.spriteFrame) { + var rect = null; + rect = textureData.rotated ? cc.rect(textureData.region.x, textureData.region.y, textureData.region.height, textureData.region.width) : cc.rect(textureData.region.x, textureData.region.y, textureData.region.width, textureData.region.height); + var offset = cc.v2(0, 0); + var size = cc.size(rect.width, rect.height); + textureData.spriteFrame = new cc.SpriteFrame(); + textureData.spriteFrame.setTexture(value, rect, false, offset, size); + } + } else for (var _k in this.textures) { + var _textureData = this.textures[_k]; + _textureData.spriteFrame = null; + } + } + } + }, + statics: { + toString: function toString() { + return "[class dragonBones.CCTextureAtlasData]"; + } + }, + _onClear: function _onClear() { + dragonBones.TextureAtlasData.prototype._onClear.call(this); + this.renderTexture = null; + }, + createTexture: function createTexture() { + return dragonBones.BaseObject.borrowObject(dragonBones.CCTextureData); + } + }); + dragonBones.CCTextureData = cc.Class({ + extends: dragonBones.TextureData, + name: "dragonBones.CCTextureData", + properties: { + spriteFrame: { + default: null, + serializable: false + } + }, + statics: { + toString: function toString() { + return "[class dragonBones.CCTextureData]"; + } + }, + _onClear: function _onClear() { + dragonBones.TextureData.prototype._onClear.call(this); + this.spriteFrame = null; + } + }); + }), {}], + 420: [(function (require, module, exports) { + "use strict"; + var ArmatureCache = (true, require("./ArmatureCache").sharedCache); + var DragonBonesAsset = cc.Class({ + name: "dragonBones.DragonBonesAsset", + extends: cc.Asset, + ctor: function ctor() { + this.reset(); + }, + properties: { + _dragonBonesJson: "", + dragonBonesJson: { + get: function get() { + return this._dragonBonesJson; + }, + set: function set(value) { + this._dragonBonesJson = value; + this._dragonBonesJsonData = JSON.parse(value); + this.reset(); + } + }, + _nativeAsset: { + get: function get() { + return this._buffer; + }, + set: function set(bin) { + this._buffer = bin.buffer || bin; + this.reset(); + }, + override: true + } + }, + statics: { + preventDeferredLoadDependents: true + }, + createNode: false, + reset: function reset() { + this._clear(); + false; + }, + init: function init(factory, atlasUUID) { + false; + this._factory = factory; + !this._dragonBonesJsonData && this.dragonBonesJson && (this._dragonBonesJsonData = JSON.parse(this.dragonBonesJson)); + var rawData = null; + rawData = this._dragonBonesJsonData ? this._dragonBonesJsonData : this._nativeAsset; + if (!this._uuid) { + var dbData = this._factory.getDragonBonesDataByRawData(rawData); + dbData ? this._uuid = dbData.name : cc.warn("dragonbones name is empty"); + } + var armatureKey = this._uuid + "#" + atlasUUID; + var dragonBonesData = this._factory.getDragonBonesData(armatureKey); + if (dragonBonesData) return armatureKey; + this._factory.parseDragonBonesData(rawData, armatureKey); + return armatureKey; + }, + getArmatureEnum: false, + getAnimsEnum: false, + _clear: function _clear() { + if (this._factory) { + ArmatureCache.resetArmature(this._uuid); + this._factory.removeDragonBonesDataByUUID(this._uuid, true); + } + }, + destroy: function destroy() { + this._clear(); + this._super(); + } + }); + dragonBones.DragonBonesAsset = module.exports = DragonBonesAsset; + }), { + "./ArmatureCache": 413 + }], + 421: [(function (require, module, exports) { + "use strict"; + var ArmatureCache = (true, require("./ArmatureCache").sharedCache); + var DragonBonesAtlasAsset = cc.Class({ + name: "dragonBones.DragonBonesAtlasAsset", + extends: cc.Asset, + ctor: function ctor() { + this._clear(); + }, + properties: { + _atlasJson: "", + atlasJson: { + get: function get() { + return this._atlasJson; + }, + set: function set(value) { + this._atlasJson = value; + this._atlasJsonData = JSON.parse(this.atlasJson); + this._clear(); + } + }, + _texture: { + default: null, + type: cc.Texture2D, + formerlySerializedAs: "texture" + }, + texture: { + get: function get() { + return this._texture; + }, + set: function set(value) { + this._texture = value; + this._clear(); + } + }, + _textureAtlasData: null + }, + statics: { + preventDeferredLoadDependents: true + }, + createNode: false, + init: function init(factory) { + this._factory = factory; + this._atlasJsonData || (this._atlasJsonData = JSON.parse(this.atlasJson)); + var atlasJsonObj = this._atlasJsonData; + this._uuid = this._uuid || atlasJsonObj.name; + this._textureAtlasData ? factory.addTextureAtlasData(this._textureAtlasData, this._uuid) : this._textureAtlasData = factory.parseTextureAtlasData(atlasJsonObj, this.texture, this._uuid); + }, + _clear: function _clear() { + false; + if (this._factory) { + ArmatureCache.resetArmature(this._uuid); + this._factory.removeTextureAtlasData(this._uuid, true); + this._factory.removeDragonBonesDataByUUID(this._uuid, true); + } + this._textureAtlasData = null; + }, + destroy: function destroy() { + this._clear(); + this._super(); + } + }); + dragonBones.DragonBonesAtlasAsset = module.exports = DragonBonesAtlasAsset; + }), { + "./ArmatureCache": 413 + }], + 422: [(function (require, module, exports) { + "use strict"; + var _global = "undefined" === typeof window ? global : window; + true; + _global.dragonBones = require("./lib/dragonBones"); + if (void 0 !== _global.dragonBones) { + dragonBones._timeScale = 1; + Object.defineProperty(dragonBones, "timeScale", { + get: function get() { + return this._timeScale; + }, + set: function set(value) { + this._timeScale = value; + var factory = this.CCFactory.getInstance(); + factory._dragonBones.clock.timeScale = value; + }, + configurable: true + }); + dragonBones.DisplayType = { + Image: 0, + Armature: 1, + Mesh: 2 + }; + dragonBones.ArmatureType = { + Armature: 0, + MovieClip: 1, + Stage: 2 + }; + dragonBones.ExtensionType = { + FFD: 0, + AdjustColor: 10, + BevelFilter: 11, + BlurFilter: 12, + DropShadowFilter: 13, + GlowFilter: 14, + GradientBevelFilter: 15, + GradientGlowFilter: 16 + }; + dragonBones.EventType = { + Frame: 0, + Sound: 1 + }; + dragonBones.ActionType = { + Play: 0, + Stop: 1, + GotoAndPlay: 2, + GotoAndStop: 3, + FadeIn: 4, + FadeOut: 5 + }; + dragonBones.AnimationFadeOutMode = { + None: 0, + SameLayer: 1, + SameGroup: 2, + SameLayerAndGroup: 3, + All: 4 + }; + dragonBones.BinaryOffset = { + WeigthBoneCount: 0, + WeigthFloatOffset: 1, + WeigthBoneIndices: 2, + MeshVertexCount: 0, + MeshTriangleCount: 1, + MeshFloatOffset: 2, + MeshWeightOffset: 3, + MeshVertexIndices: 4, + TimelineScale: 0, + TimelineOffset: 1, + TimelineKeyFrameCount: 2, + TimelineFrameValueCount: 3, + TimelineFrameValueOffset: 4, + TimelineFrameOffset: 5, + FramePosition: 0, + FrameTweenType: 1, + FrameTweenEasingOrCurveSampleCount: 2, + FrameCurveSamples: 3, + DeformMeshOffset: 0, + DeformCount: 1, + DeformValueCount: 2, + DeformValueOffset: 3, + DeformFloatOffset: 4 + }; + dragonBones.BoneType = { + Bone: 0, + Surface: 1 + }; + true; + true; + require("./CCFactory"); + require("./CCSlot"); + require("./CCTextureData"); + require("./CCArmatureDisplay"); + require("./ArmatureCache"); + require("./DragonBonesAsset"); + require("./DragonBonesAtlasAsset"); + require("./ArmatureDisplay"); + require("./webgl-assembler"); + } + }), { + "./ArmatureCache": 413, + "./ArmatureDisplay": 414, + "./CCArmatureDisplay": 416, + "./CCFactory": 417, + "./CCSlot": 418, + "./CCTextureData": 419, + "./DragonBonesAsset": 420, + "./DragonBonesAtlasAsset": 421, + "./lib/dragonBones": 423, + "./webgl-assembler": 424 + }], + 423: [(function (require, module, exports) { + "use strict"; + var __extends = (void 0, (function () { + var extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]); + }; + return function (d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })()); + var dragonBones; + (function (dragonBones) { })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var DragonBones = (function () { + function DragonBones(eventManager) { + this._clock = new dragonBones.WorldClock(); + this._events = []; + this._objects = []; + this._eventManager = null; + this._eventManager = eventManager; + console.info("DragonBones: " + DragonBones.VERSION + "\nWebsite: http://dragonbones.com/\nSource and Demo: https://github.com/DragonBones/"); + } + DragonBones.prototype.advanceTime = function (passedTime) { + if (this._objects.length > 0) { + for (var _i = 0, _a = this._objects; _i < _a.length; _i++) { + var object = _a[_i]; + object.returnToPool(); + } + this._objects.length = 0; + } + this._clock.advanceTime(passedTime); + if (this._events.length > 0) { + for (var i = 0; i < this._events.length; ++i) { + var eventObject = this._events[i]; + var armature = eventObject.armature; + if (null !== armature._armatureData) { + armature.eventDispatcher.dispatchDBEvent(eventObject.type, eventObject); + eventObject.type === dragonBones.EventObject.SOUND_EVENT && this._eventManager.dispatchDBEvent(eventObject.type, eventObject); + } + this.bufferObject(eventObject); + } + this._events.length = 0; + } + }; + DragonBones.prototype.bufferEvent = function (value) { + this._events.indexOf(value) < 0 && this._events.push(value); + }; + DragonBones.prototype.bufferObject = function (object) { + this._objects.indexOf(object) < 0 && this._objects.push(object); + }; + Object.defineProperty(DragonBones.prototype, "clock", { + get: function get() { + return this._clock; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DragonBones.prototype, "eventManager", { + get: function get() { + return this._eventManager; + }, + enumerable: true, + configurable: true + }); + DragonBones.VERSION = "5.6.300"; + DragonBones.yDown = false; + DragonBones.debug = false; + DragonBones.debugDraw = false; + DragonBones.webAssembly = false; + return DragonBones; + })(); + dragonBones.DragonBones = DragonBones; + })(dragonBones || (dragonBones = {})); + console.warn || (console.warn = function () { }); + console.assert || (console.assert = function () { }); + Date.now || (Date.now = function now() { + return new Date().getTime(); + }); + var __extends = function __extends(t, e) { + function r() { + this.constructor = t; + } + for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); + r.prototype = e.prototype, t.prototype = new r(); + }; + var dragonBones; + (function (dragonBones) { + var BaseObject = (function () { + function BaseObject() { + this.hashCode = BaseObject._hashCode++; + this._isInPool = false; + } + BaseObject._returnObject = function (object) { + var classType = String(object.constructor); + var maxCount = classType in BaseObject._maxCountMap ? BaseObject._maxCountMap[classType] : BaseObject._defaultMaxCount; + var pool = BaseObject._poolsMap[classType] = BaseObject._poolsMap[classType] || []; + if (pool.length < maxCount) if (object._isInPool) console.warn("The object is already in the pool."); else { + object._isInPool = true; + pool.push(object); + } + }; + BaseObject.toString = function () { + throw new Error(); + }; + BaseObject.setMaxCount = function (objectConstructor, maxCount) { + (maxCount < 0 || maxCount !== maxCount) && (maxCount = 0); + if (null !== objectConstructor) { + var classType = String(objectConstructor); + var pool = classType in BaseObject._poolsMap ? BaseObject._poolsMap[classType] : null; + null !== pool && pool.length > maxCount && (pool.length = maxCount); + BaseObject._maxCountMap[classType] = maxCount; + } else { + BaseObject._defaultMaxCount = maxCount; + for (var classType in BaseObject._poolsMap) { + var pool = BaseObject._poolsMap[classType]; + pool.length > maxCount && (pool.length = maxCount); + classType in BaseObject._maxCountMap && (BaseObject._maxCountMap[classType] = maxCount); + } + } + }; + BaseObject.clearPool = function (objectConstructor) { + void 0 === objectConstructor && (objectConstructor = null); + if (null !== objectConstructor) { + var classType = String(objectConstructor); + var pool = classType in BaseObject._poolsMap ? BaseObject._poolsMap[classType] : null; + null !== pool && pool.length > 0 && (pool.length = 0); + } else for (var k in BaseObject._poolsMap) { + var pool = BaseObject._poolsMap[k]; + pool.length = 0; + } + }; + BaseObject.borrowObject = function (objectConstructor) { + var classType = String(objectConstructor); + var pool = classType in BaseObject._poolsMap ? BaseObject._poolsMap[classType] : null; + if (null !== pool && pool.length > 0) { + var object_1 = pool.pop(); + object_1._isInPool = false; + return object_1; + } + var object = new objectConstructor(); + object._onClear(); + return object; + }; + BaseObject.prototype.returnToPool = function () { + this._onClear(); + BaseObject._returnObject(this); + }; + BaseObject._hashCode = 0; + BaseObject._defaultMaxCount = 3e3; + BaseObject._maxCountMap = {}; + BaseObject._poolsMap = {}; + return BaseObject; + })(); + dragonBones.BaseObject = BaseObject; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Matrix = (function () { + function Matrix(a, b, c, d, tx, ty) { + void 0 === a && (a = 1); + void 0 === b && (b = 0); + void 0 === c && (c = 0); + void 0 === d && (d = 1); + void 0 === tx && (tx = 0); + void 0 === ty && (ty = 0); + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + } + Matrix.prototype.toString = function () { + return "[object dragonBones.Matrix] a:" + this.a + " b:" + this.b + " c:" + this.c + " d:" + this.d + " tx:" + this.tx + " ty:" + this.ty; + }; + Matrix.prototype.copyFrom = function (value) { + this.a = value.a; + this.b = value.b; + this.c = value.c; + this.d = value.d; + this.tx = value.tx; + this.ty = value.ty; + return this; + }; + Matrix.prototype.copyFromArray = function (value, offset) { + void 0 === offset && (offset = 0); + this.a = value[offset]; + this.b = value[offset + 1]; + this.c = value[offset + 2]; + this.d = value[offset + 3]; + this.tx = value[offset + 4]; + this.ty = value[offset + 5]; + return this; + }; + Matrix.prototype.identity = function () { + this.a = this.d = 1; + this.b = this.c = 0; + this.tx = this.ty = 0; + return this; + }; + Matrix.prototype.concat = function (value) { + var aA = this.a * value.a; + var bA = 0; + var cA = 0; + var dA = this.d * value.d; + var txA = this.tx * value.a + value.tx; + var tyA = this.ty * value.d + value.ty; + if (0 !== this.b || 0 !== this.c) { + aA += this.b * value.c; + bA += this.b * value.d; + cA += this.c * value.a; + dA += this.c * value.b; + } + if (0 !== value.b || 0 !== value.c) { + bA += this.a * value.b; + cA += this.d * value.c; + txA += this.ty * value.c; + tyA += this.tx * value.b; + } + this.a = aA; + this.b = bA; + this.c = cA; + this.d = dA; + this.tx = txA; + this.ty = tyA; + return this; + }; + Matrix.prototype.invert = function () { + var aA = this.a; + var bA = this.b; + var cA = this.c; + var dA = this.d; + var txA = this.tx; + var tyA = this.ty; + if (0 === bA && 0 === cA) { + this.b = this.c = 0; + if (0 === aA || 0 === dA) this.a = this.b = this.tx = this.ty = 0; else { + aA = this.a = 1 / aA; + dA = this.d = 1 / dA; + this.tx = -aA * txA; + this.ty = -dA * tyA; + } + return this; + } + var determinant = aA * dA - bA * cA; + if (0 === determinant) { + this.a = this.d = 1; + this.b = this.c = 0; + this.tx = this.ty = 0; + return this; + } + determinant = 1 / determinant; + var k = this.a = dA * determinant; + bA = this.b = -bA * determinant; + cA = this.c = -cA * determinant; + dA = this.d = aA * determinant; + this.tx = -(k * txA + cA * tyA); + this.ty = -(bA * txA + dA * tyA); + return this; + }; + Matrix.prototype.transformPoint = function (x, y, result, delta) { + void 0 === delta && (delta = false); + result.x = this.a * x + this.c * y; + result.y = this.b * x + this.d * y; + if (!delta) { + result.x += this.tx; + result.y += this.ty; + } + }; + Matrix.prototype.transformRectangle = function (rectangle, delta) { + void 0 === delta && (delta = false); + var a = this.a; + var b = this.b; + var c = this.c; + var d = this.d; + var tx = delta ? 0 : this.tx; + var ty = delta ? 0 : this.ty; + var x = rectangle.x; + var y = rectangle.y; + var xMax = x + rectangle.width; + var yMax = y + rectangle.height; + var x0 = a * x + c * y + tx; + var y0 = b * x + d * y + ty; + var x1 = a * xMax + c * y + tx; + var y1 = b * xMax + d * y + ty; + var x2 = a * xMax + c * yMax + tx; + var y2 = b * xMax + d * yMax + ty; + var x3 = a * x + c * yMax + tx; + var y3 = b * x + d * yMax + ty; + var tmp = 0; + if (x0 > x1) { + tmp = x0; + x0 = x1; + x1 = tmp; + } + if (x2 > x3) { + tmp = x2; + x2 = x3; + x3 = tmp; + } + rectangle.x = Math.floor(x0 < x2 ? x0 : x2); + rectangle.width = Math.ceil((x1 > x3 ? x1 : x3) - rectangle.x); + if (y0 > y1) { + tmp = y0; + y0 = y1; + y1 = tmp; + } + if (y2 > y3) { + tmp = y2; + y2 = y3; + y3 = tmp; + } + rectangle.y = Math.floor(y0 < y2 ? y0 : y2); + rectangle.height = Math.ceil((y1 > y3 ? y1 : y3) - rectangle.y); + }; + return Matrix; + })(); + dragonBones.Matrix = Matrix; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Transform = (function () { + function Transform(x, y, skew, rotation, scaleX, scaleY) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === skew && (skew = 0); + void 0 === rotation && (rotation = 0); + void 0 === scaleX && (scaleX = 1); + void 0 === scaleY && (scaleY = 1); + this.x = x; + this.y = y; + this.skew = skew; + this.rotation = rotation; + this.scaleX = scaleX; + this.scaleY = scaleY; + } + Transform.normalizeRadian = function (value) { + value = (value + Math.PI) % (2 * Math.PI); + value += value > 0 ? -Math.PI : Math.PI; + return value; + }; + Transform.prototype.toString = function () { + return "[object dragonBones.Transform] x:" + this.x + " y:" + this.y + " skewX:" + 180 * this.skew / Math.PI + " skewY:" + 180 * this.rotation / Math.PI + " scaleX:" + this.scaleX + " scaleY:" + this.scaleY; + }; + Transform.prototype.copyFrom = function (value) { + this.x = value.x; + this.y = value.y; + this.skew = value.skew; + this.rotation = value.rotation; + this.scaleX = value.scaleX; + this.scaleY = value.scaleY; + return this; + }; + Transform.prototype.identity = function () { + this.x = this.y = 0; + this.skew = this.rotation = 0; + this.scaleX = this.scaleY = 1; + return this; + }; + Transform.prototype.add = function (value) { + this.x += value.x; + this.y += value.y; + this.skew += value.skew; + this.rotation += value.rotation; + this.scaleX *= value.scaleX; + this.scaleY *= value.scaleY; + return this; + }; + Transform.prototype.minus = function (value) { + this.x -= value.x; + this.y -= value.y; + this.skew -= value.skew; + this.rotation -= value.rotation; + this.scaleX /= value.scaleX; + this.scaleY /= value.scaleY; + return this; + }; + Transform.prototype.fromMatrix = function (matrix) { + var backupScaleX = this.scaleX, backupScaleY = this.scaleY; + var PI_Q = Transform.PI_Q; + this.x = matrix.tx; + this.y = matrix.ty; + this.rotation = Math.atan(matrix.b / matrix.a); + var skewX = Math.atan(-matrix.c / matrix.d); + this.scaleX = this.rotation > -PI_Q && this.rotation < PI_Q ? matrix.a / Math.cos(this.rotation) : matrix.b / Math.sin(this.rotation); + this.scaleY = skewX > -PI_Q && skewX < PI_Q ? matrix.d / Math.cos(skewX) : -matrix.c / Math.sin(skewX); + if (backupScaleX >= 0 && this.scaleX < 0) { + this.scaleX = -this.scaleX; + this.rotation = this.rotation - Math.PI; + } + if (backupScaleY >= 0 && this.scaleY < 0) { + this.scaleY = -this.scaleY; + skewX -= Math.PI; + } + this.skew = skewX - this.rotation; + return this; + }; + Transform.prototype.toMatrix = function (matrix) { + if (0 === this.rotation) { + matrix.a = 1; + matrix.b = 0; + } else { + matrix.a = Math.cos(this.rotation); + matrix.b = Math.sin(this.rotation); + } + if (0 === this.skew) { + matrix.c = -matrix.b; + matrix.d = matrix.a; + } else { + matrix.c = -Math.sin(this.skew + this.rotation); + matrix.d = Math.cos(this.skew + this.rotation); + } + if (1 !== this.scaleX) { + matrix.a *= this.scaleX; + matrix.b *= this.scaleX; + } + if (1 !== this.scaleY) { + matrix.c *= this.scaleY; + matrix.d *= this.scaleY; + } + matrix.tx = this.x; + matrix.ty = this.y; + return this; + }; + Transform.PI = Math.PI; + Transform.PI_D = 2 * Math.PI; + Transform.PI_H = Math.PI / 2; + Transform.PI_Q = Math.PI / 4; + Transform.RAD_DEG = 180 / Math.PI; + Transform.DEG_RAD = Math.PI / 180; + return Transform; + })(); + dragonBones.Transform = Transform; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var ColorTransform = (function () { + function ColorTransform(alphaMultiplier, redMultiplier, greenMultiplier, blueMultiplier, alphaOffset, redOffset, greenOffset, blueOffset) { + void 0 === alphaMultiplier && (alphaMultiplier = 1); + void 0 === redMultiplier && (redMultiplier = 1); + void 0 === greenMultiplier && (greenMultiplier = 1); + void 0 === blueMultiplier && (blueMultiplier = 1); + void 0 === alphaOffset && (alphaOffset = 0); + void 0 === redOffset && (redOffset = 0); + void 0 === greenOffset && (greenOffset = 0); + void 0 === blueOffset && (blueOffset = 0); + this.alphaMultiplier = alphaMultiplier; + this.redMultiplier = redMultiplier; + this.greenMultiplier = greenMultiplier; + this.blueMultiplier = blueMultiplier; + this.alphaOffset = alphaOffset; + this.redOffset = redOffset; + this.greenOffset = greenOffset; + this.blueOffset = blueOffset; + } + ColorTransform.prototype.copyFrom = function (value) { + this.alphaMultiplier = value.alphaMultiplier; + this.redMultiplier = value.redMultiplier; + this.greenMultiplier = value.greenMultiplier; + this.blueMultiplier = value.blueMultiplier; + this.alphaOffset = value.alphaOffset; + this.redOffset = value.redOffset; + this.greenOffset = value.greenOffset; + this.blueOffset = value.blueOffset; + }; + ColorTransform.prototype.identity = function () { + this.alphaMultiplier = this.redMultiplier = this.greenMultiplier = this.blueMultiplier = 1; + this.alphaOffset = this.redOffset = this.greenOffset = this.blueOffset = 0; + }; + return ColorTransform; + })(); + dragonBones.ColorTransform = ColorTransform; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Point = (function () { + function Point(x, y) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + this.x = x; + this.y = y; + } + Point.prototype.copyFrom = function (value) { + this.x = value.x; + this.y = value.y; + }; + Point.prototype.clear = function () { + this.x = this.y = 0; + }; + return Point; + })(); + dragonBones.Point = Point; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Rectangle = (function () { + function Rectangle(x, y, width, height) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === width && (width = 0); + void 0 === height && (height = 0); + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + Rectangle.prototype.copyFrom = function (value) { + this.x = value.x; + this.y = value.y; + this.width = value.width; + this.height = value.height; + }; + Rectangle.prototype.clear = function () { + this.x = this.y = 0; + this.width = this.height = 0; + }; + return Rectangle; + })(); + dragonBones.Rectangle = Rectangle; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var UserData = (function (_super) { + __extends(UserData, _super); + function UserData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.ints = []; + _this.floats = []; + _this.strings = []; + return _this; + } + UserData.toString = function () { + return "[class dragonBones.UserData]"; + }; + UserData.prototype._onClear = function () { + this.ints.length = 0; + this.floats.length = 0; + this.strings.length = 0; + }; + UserData.prototype.addInt = function (value) { + this.ints.push(value); + }; + UserData.prototype.addFloat = function (value) { + this.floats.push(value); + }; + UserData.prototype.addString = function (value) { + this.strings.push(value); + }; + UserData.prototype.getInt = function (index) { + void 0 === index && (index = 0); + return index >= 0 && index < this.ints.length ? this.ints[index] : 0; + }; + UserData.prototype.getFloat = function (index) { + void 0 === index && (index = 0); + return index >= 0 && index < this.floats.length ? this.floats[index] : 0; + }; + UserData.prototype.getString = function (index) { + void 0 === index && (index = 0); + return index >= 0 && index < this.strings.length ? this.strings[index] : ""; + }; + return UserData; + })(dragonBones.BaseObject); + dragonBones.UserData = UserData; + var ActionData = (function (_super) { + __extends(ActionData, _super); + function ActionData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.data = null; + return _this; + } + ActionData.toString = function () { + return "[class dragonBones.ActionData]"; + }; + ActionData.prototype._onClear = function () { + null !== this.data && this.data.returnToPool(); + this.type = 0; + this.name = ""; + this.bone = null; + this.slot = null; + this.data = null; + }; + return ActionData; + })(dragonBones.BaseObject); + dragonBones.ActionData = ActionData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var DragonBonesData = (function (_super) { + __extends(DragonBonesData, _super); + function DragonBonesData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.frameIndices = []; + _this.cachedFrames = []; + _this.armatureNames = []; + _this.armatures = {}; + _this.userData = null; + return _this; + } + DragonBonesData.toString = function () { + return "[class dragonBones.DragonBonesData]"; + }; + DragonBonesData.prototype._onClear = function () { + for (var k in this.armatures) { + this.armatures[k].returnToPool(); + delete this.armatures[k]; + } + null !== this.userData && this.userData.returnToPool(); + this.autoSearch = false; + this.frameRate = 0; + this.version = ""; + this.name = ""; + this.stage = null; + this.frameIndices.length = 0; + this.cachedFrames.length = 0; + this.armatureNames.length = 0; + this.binary = null; + this.intArray = null; + this.floatArray = null; + this.frameIntArray = null; + this.frameFloatArray = null; + this.frameArray = null; + this.timelineArray = null; + this.userData = null; + }; + DragonBonesData.prototype.addArmature = function (value) { + if (value.name in this.armatures) { + console.warn("Same armature: " + value.name); + return; + } + value.parent = this; + this.armatures[value.name] = value; + this.armatureNames.push(value.name); + }; + DragonBonesData.prototype.getArmature = function (armatureName) { + return armatureName in this.armatures ? this.armatures[armatureName] : null; + }; + DragonBonesData.prototype.dispose = function () { + console.warn("\u5df2\u5e9f\u5f03"); + this.returnToPool(); + }; + return DragonBonesData; + })(dragonBones.BaseObject); + dragonBones.DragonBonesData = DragonBonesData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var ArmatureData = (function (_super) { + __extends(ArmatureData, _super); + function ArmatureData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.aabb = new dragonBones.Rectangle(); + _this.animationNames = []; + _this.sortedBones = []; + _this.sortedSlots = []; + _this.defaultActions = []; + _this.actions = []; + _this.bones = {}; + _this.slots = {}; + _this.constraints = {}; + _this.skins = {}; + _this.animations = {}; + _this.canvas = null; + _this.userData = null; + return _this; + } + ArmatureData.toString = function () { + return "[class dragonBones.ArmatureData]"; + }; + ArmatureData.prototype._onClear = function () { + for (var _i = 0, _a = this.defaultActions; _i < _a.length; _i++) { + var action = _a[_i]; + action.returnToPool(); + } + for (var _b = 0, _c = this.actions; _b < _c.length; _b++) { + var action = _c[_b]; + action.returnToPool(); + } + for (var k in this.bones) { + this.bones[k].returnToPool(); + delete this.bones[k]; + } + for (var k in this.slots) { + this.slots[k].returnToPool(); + delete this.slots[k]; + } + for (var k in this.constraints) { + this.constraints[k].returnToPool(); + delete this.constraints[k]; + } + for (var k in this.skins) { + this.skins[k].returnToPool(); + delete this.skins[k]; + } + for (var k in this.animations) { + this.animations[k].returnToPool(); + delete this.animations[k]; + } + null !== this.canvas && this.canvas.returnToPool(); + null !== this.userData && this.userData.returnToPool(); + this.type = 0; + this.frameRate = 0; + this.cacheFrameRate = 0; + this.scale = 1; + this.name = ""; + this.aabb.clear(); + this.animationNames.length = 0; + this.sortedBones.length = 0; + this.sortedSlots.length = 0; + this.defaultActions.length = 0; + this.actions.length = 0; + this.defaultSkin = null; + this.defaultAnimation = null; + this.canvas = null; + this.userData = null; + this.parent = null; + }; + ArmatureData.prototype.sortBones = function () { + var total = this.sortedBones.length; + if (total <= 0) return; + var sortHelper = this.sortedBones.concat(); + var index = 0; + var count = 0; + this.sortedBones.length = 0; + while (count < total) { + var bone = sortHelper[index++]; + index >= total && (index = 0); + if (this.sortedBones.indexOf(bone) >= 0) continue; + var flag = false; + for (var k in this.constraints) { + var constraint = this.constraints[k]; + if (constraint.root === bone && this.sortedBones.indexOf(constraint.target) < 0) { + flag = true; + break; + } + } + if (flag) continue; + if (null !== bone.parent && this.sortedBones.indexOf(bone.parent) < 0) continue; + this.sortedBones.push(bone); + count++; + } + }; + ArmatureData.prototype.cacheFrames = function (frameRate) { + if (this.cacheFrameRate > 0) return; + this.cacheFrameRate = frameRate; + for (var k in this.animations) this.animations[k].cacheFrames(this.cacheFrameRate); + }; + ArmatureData.prototype.setCacheFrame = function (globalTransformMatrix, transform) { + var dataArray = this.parent.cachedFrames; + var arrayOffset = dataArray.length; + dataArray.length += 10; + dataArray[arrayOffset] = globalTransformMatrix.a; + dataArray[arrayOffset + 1] = globalTransformMatrix.b; + dataArray[arrayOffset + 2] = globalTransformMatrix.c; + dataArray[arrayOffset + 3] = globalTransformMatrix.d; + dataArray[arrayOffset + 4] = globalTransformMatrix.tx; + dataArray[arrayOffset + 5] = globalTransformMatrix.ty; + dataArray[arrayOffset + 6] = transform.rotation; + dataArray[arrayOffset + 7] = transform.skew; + dataArray[arrayOffset + 8] = transform.scaleX; + dataArray[arrayOffset + 9] = transform.scaleY; + return arrayOffset; + }; + ArmatureData.prototype.getCacheFrame = function (globalTransformMatrix, transform, arrayOffset) { + var dataArray = this.parent.cachedFrames; + globalTransformMatrix.a = dataArray[arrayOffset]; + globalTransformMatrix.b = dataArray[arrayOffset + 1]; + globalTransformMatrix.c = dataArray[arrayOffset + 2]; + globalTransformMatrix.d = dataArray[arrayOffset + 3]; + globalTransformMatrix.tx = dataArray[arrayOffset + 4]; + globalTransformMatrix.ty = dataArray[arrayOffset + 5]; + transform.rotation = dataArray[arrayOffset + 6]; + transform.skew = dataArray[arrayOffset + 7]; + transform.scaleX = dataArray[arrayOffset + 8]; + transform.scaleY = dataArray[arrayOffset + 9]; + transform.x = globalTransformMatrix.tx; + transform.y = globalTransformMatrix.ty; + }; + ArmatureData.prototype.addBone = function (value) { + if (value.name in this.bones) { + console.warn("Same bone: " + value.name); + return; + } + this.bones[value.name] = value; + this.sortedBones.push(value); + }; + ArmatureData.prototype.addSlot = function (value) { + if (value.name in this.slots) { + console.warn("Same slot: " + value.name); + return; + } + this.slots[value.name] = value; + this.sortedSlots.push(value); + }; + ArmatureData.prototype.addConstraint = function (value) { + if (value.name in this.constraints) { + console.warn("Same constraint: " + value.name); + return; + } + this.constraints[value.name] = value; + }; + ArmatureData.prototype.addSkin = function (value) { + if (value.name in this.skins) { + console.warn("Same skin: " + value.name); + return; + } + value.parent = this; + this.skins[value.name] = value; + null === this.defaultSkin && (this.defaultSkin = value); + "default" === value.name && (this.defaultSkin = value); + }; + ArmatureData.prototype.addAnimation = function (value) { + if (value.name in this.animations) { + console.warn("Same animation: " + value.name); + return; + } + value.parent = this; + this.animations[value.name] = value; + this.animationNames.push(value.name); + null === this.defaultAnimation && (this.defaultAnimation = value); + }; + ArmatureData.prototype.addAction = function (value, isDefault) { + isDefault ? this.defaultActions.push(value) : this.actions.push(value); + }; + ArmatureData.prototype.getBone = function (boneName) { + return boneName in this.bones ? this.bones[boneName] : null; + }; + ArmatureData.prototype.getSlot = function (slotName) { + return slotName in this.slots ? this.slots[slotName] : null; + }; + ArmatureData.prototype.getConstraint = function (constraintName) { + return constraintName in this.constraints ? this.constraints[constraintName] : null; + }; + ArmatureData.prototype.getSkin = function (skinName) { + return skinName in this.skins ? this.skins[skinName] : null; + }; + ArmatureData.prototype.getMesh = function (skinName, slotName, meshName) { + var skin = this.getSkin(skinName); + if (null === skin) return null; + return skin.getDisplay(slotName, meshName); + }; + ArmatureData.prototype.getAnimation = function (animationName) { + return animationName in this.animations ? this.animations[animationName] : null; + }; + return ArmatureData; + })(dragonBones.BaseObject); + dragonBones.ArmatureData = ArmatureData; + var BoneData = (function (_super) { + __extends(BoneData, _super); + function BoneData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.transform = new dragonBones.Transform(); + _this.userData = null; + return _this; + } + BoneData.toString = function () { + return "[class dragonBones.BoneData]"; + }; + BoneData.prototype._onClear = function () { + null !== this.userData && this.userData.returnToPool(); + this.inheritTranslation = false; + this.inheritRotation = false; + this.inheritScale = false; + this.inheritReflection = false; + this.type = 0; + this.length = 0; + this.name = ""; + this.transform.identity(); + this.userData = null; + this.parent = null; + }; + return BoneData; + })(dragonBones.BaseObject); + dragonBones.BoneData = BoneData; + var SurfaceData = (function (_super) { + __extends(SurfaceData, _super); + function SurfaceData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.vertices = []; + return _this; + } + SurfaceData.toString = function () { + return "[class dragonBones.SurfaceData]"; + }; + SurfaceData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 1; + this.segmentX = 0; + this.segmentY = 0; + this.vertices.length = 0; + }; + return SurfaceData; + })(BoneData); + dragonBones.SurfaceData = SurfaceData; + var SlotData = (function (_super) { + __extends(SlotData, _super); + function SlotData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.color = null; + _this.userData = null; + return _this; + } + SlotData.createColor = function () { + return new dragonBones.ColorTransform(); + }; + SlotData.toString = function () { + return "[class dragonBones.SlotData]"; + }; + SlotData.prototype._onClear = function () { + null !== this.userData && this.userData.returnToPool(); + this.blendMode = 0; + this.displayIndex = 0; + this.zOrder = 0; + this.name = ""; + this.color = null; + this.userData = null; + this.parent = null; + }; + SlotData.DEFAULT_COLOR = new dragonBones.ColorTransform(); + return SlotData; + })(dragonBones.BaseObject); + dragonBones.SlotData = SlotData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var ConstraintData = (function (_super) { + __extends(ConstraintData, _super); + function ConstraintData() { + return null !== _super && _super.apply(this, arguments) || this; + } + ConstraintData.prototype._onClear = function () { + this.order = 0; + this.name = ""; + this.type = 0; + this.target = null; + this.root = null; + this.bone = null; + }; + return ConstraintData; + })(dragonBones.BaseObject); + dragonBones.ConstraintData = ConstraintData; + var IKConstraintData = (function (_super) { + __extends(IKConstraintData, _super); + function IKConstraintData() { + return null !== _super && _super.apply(this, arguments) || this; + } + IKConstraintData.toString = function () { + return "[class dragonBones.IKConstraintData]"; + }; + IKConstraintData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.scaleEnabled = false; + this.bendPositive = false; + this.weight = 1; + }; + return IKConstraintData; + })(ConstraintData); + dragonBones.IKConstraintData = IKConstraintData; + var PathConstraintData = (function (_super) { + __extends(PathConstraintData, _super); + function PathConstraintData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.bones = []; + return _this; + } + PathConstraintData.toString = function () { + return "[class dragonBones.PathConstraintData]"; + }; + PathConstraintData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.pathSlot = null; + this.pathDisplayData = null; + this.bones.length = 0; + this.positionMode = 0; + this.spacingMode = 1; + this.rotateMode = 1; + this.position = 0; + this.spacing = 0; + this.rotateOffset = 0; + this.rotateMix = 0; + this.translateMix = 0; + }; + PathConstraintData.prototype.AddBone = function (value) { + this.bones.push(value); + }; + return PathConstraintData; + })(ConstraintData); + dragonBones.PathConstraintData = PathConstraintData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var CanvasData = (function (_super) { + __extends(CanvasData, _super); + function CanvasData() { + return null !== _super && _super.apply(this, arguments) || this; + } + CanvasData.toString = function () { + return "[class dragonBones.CanvasData]"; + }; + CanvasData.prototype._onClear = function () { + this.hasBackground = false; + this.color = 0; + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + }; + return CanvasData; + })(dragonBones.BaseObject); + dragonBones.CanvasData = CanvasData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var SkinData = (function (_super) { + __extends(SkinData, _super); + function SkinData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.displays = {}; + return _this; + } + SkinData.toString = function () { + return "[class dragonBones.SkinData]"; + }; + SkinData.prototype._onClear = function () { + for (var k in this.displays) { + var slotDisplays = this.displays[k]; + for (var _i = 0, slotDisplays_1 = slotDisplays; _i < slotDisplays_1.length; _i++) { + var display = slotDisplays_1[_i]; + null !== display && display.returnToPool(); + } + delete this.displays[k]; + } + this.name = ""; + this.parent = null; + }; + SkinData.prototype.addDisplay = function (slotName, value) { + slotName in this.displays || (this.displays[slotName] = []); + null !== value && (value.parent = this); + var slotDisplays = this.displays[slotName]; + slotDisplays.push(value); + }; + SkinData.prototype.getDisplay = function (slotName, displayName) { + var slotDisplays = this.getDisplays(slotName); + if (null !== slotDisplays) for (var _i = 0, slotDisplays_2 = slotDisplays; _i < slotDisplays_2.length; _i++) { + var display = slotDisplays_2[_i]; + if (null !== display && display.name === displayName) return display; + } + return null; + }; + SkinData.prototype.getDisplays = function (slotName) { + if (!(slotName in this.displays)) return null; + return this.displays[slotName]; + }; + return SkinData; + })(dragonBones.BaseObject); + dragonBones.SkinData = SkinData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var VerticesData = (function () { + function VerticesData() { + this.weight = null; + } + VerticesData.prototype.clear = function () { + this.isShared || null === this.weight || this.weight.returnToPool(); + this.isShared = false; + this.inheritDeform = false; + this.offset = 0; + this.data = null; + this.weight = null; + }; + VerticesData.prototype.shareFrom = function (value) { + this.isShared = true; + this.offset = value.offset; + this.weight = value.weight; + }; + return VerticesData; + })(); + dragonBones.VerticesData = VerticesData; + var DisplayData = (function (_super) { + __extends(DisplayData, _super); + function DisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.transform = new dragonBones.Transform(); + return _this; + } + DisplayData.prototype._onClear = function () { + this.name = ""; + this.path = ""; + this.transform.identity(); + this.parent = null; + }; + return DisplayData; + })(dragonBones.BaseObject); + dragonBones.DisplayData = DisplayData; + var ImageDisplayData = (function (_super) { + __extends(ImageDisplayData, _super); + function ImageDisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.pivot = new dragonBones.Point(); + return _this; + } + ImageDisplayData.toString = function () { + return "[class dragonBones.ImageDisplayData]"; + }; + ImageDisplayData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 0; + this.pivot.clear(); + this.texture = null; + }; + return ImageDisplayData; + })(DisplayData); + dragonBones.ImageDisplayData = ImageDisplayData; + var ArmatureDisplayData = (function (_super) { + __extends(ArmatureDisplayData, _super); + function ArmatureDisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.actions = []; + return _this; + } + ArmatureDisplayData.toString = function () { + return "[class dragonBones.ArmatureDisplayData]"; + }; + ArmatureDisplayData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + for (var _i = 0, _a = this.actions; _i < _a.length; _i++) { + var action = _a[_i]; + action.returnToPool(); + } + this.type = 1; + this.inheritAnimation = false; + this.actions.length = 0; + this.armature = null; + }; + ArmatureDisplayData.prototype.addAction = function (value) { + this.actions.push(value); + }; + return ArmatureDisplayData; + })(DisplayData); + dragonBones.ArmatureDisplayData = ArmatureDisplayData; + var MeshDisplayData = (function (_super) { + __extends(MeshDisplayData, _super); + function MeshDisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.vertices = new VerticesData(); + return _this; + } + MeshDisplayData.toString = function () { + return "[class dragonBones.MeshDisplayData]"; + }; + MeshDisplayData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 2; + this.vertices.clear(); + this.texture = null; + }; + return MeshDisplayData; + })(DisplayData); + dragonBones.MeshDisplayData = MeshDisplayData; + var BoundingBoxDisplayData = (function (_super) { + __extends(BoundingBoxDisplayData, _super); + function BoundingBoxDisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.boundingBox = null; + return _this; + } + BoundingBoxDisplayData.toString = function () { + return "[class dragonBones.BoundingBoxDisplayData]"; + }; + BoundingBoxDisplayData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + null !== this.boundingBox && this.boundingBox.returnToPool(); + this.type = 3; + this.boundingBox = null; + }; + return BoundingBoxDisplayData; + })(DisplayData); + dragonBones.BoundingBoxDisplayData = BoundingBoxDisplayData; + var PathDisplayData = (function (_super) { + __extends(PathDisplayData, _super); + function PathDisplayData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.vertices = new VerticesData(); + _this.curveLengths = []; + return _this; + } + PathDisplayData.toString = function () { + return "[class dragonBones.PathDisplayData]"; + }; + PathDisplayData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 4; + this.closed = false; + this.constantSpeed = false; + this.vertices.clear(); + this.curveLengths.length = 0; + }; + return PathDisplayData; + })(DisplayData); + dragonBones.PathDisplayData = PathDisplayData; + var WeightData = (function (_super) { + __extends(WeightData, _super); + function WeightData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.bones = []; + return _this; + } + WeightData.toString = function () { + return "[class dragonBones.WeightData]"; + }; + WeightData.prototype._onClear = function () { + this.count = 0; + this.offset = 0; + this.bones.length = 0; + }; + WeightData.prototype.addBone = function (value) { + this.bones.push(value); + }; + return WeightData; + })(dragonBones.BaseObject); + dragonBones.WeightData = WeightData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var BoundingBoxData = (function (_super) { + __extends(BoundingBoxData, _super); + function BoundingBoxData() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoundingBoxData.prototype._onClear = function () { + this.color = 0; + this.width = 0; + this.height = 0; + }; + return BoundingBoxData; + })(dragonBones.BaseObject); + dragonBones.BoundingBoxData = BoundingBoxData; + var RectangleBoundingBoxData = (function (_super) { + __extends(RectangleBoundingBoxData, _super); + function RectangleBoundingBoxData() { + return null !== _super && _super.apply(this, arguments) || this; + } + RectangleBoundingBoxData.toString = function () { + return "[class dragonBones.RectangleBoundingBoxData]"; + }; + RectangleBoundingBoxData._computeOutCode = function (x, y, xMin, yMin, xMax, yMax) { + var code = 0; + x < xMin ? code |= 1 : x > xMax && (code |= 2); + y < yMin ? code |= 4 : y > yMax && (code |= 8); + return code; + }; + RectangleBoundingBoxData.rectangleIntersectsSegment = function (xA, yA, xB, yB, xMin, yMin, xMax, yMax, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var inSideA = xA > xMin && xA < xMax && yA > yMin && yA < yMax; + var inSideB = xB > xMin && xB < xMax && yB > yMin && yB < yMax; + if (inSideA && inSideB) return -1; + var intersectionCount = 0; + var outcode0 = RectangleBoundingBoxData._computeOutCode(xA, yA, xMin, yMin, xMax, yMax); + var outcode1 = RectangleBoundingBoxData._computeOutCode(xB, yB, xMin, yMin, xMax, yMax); + while (true) { + if (0 === (outcode0 | outcode1)) { + intersectionCount = 2; + break; + } + if (0 !== (outcode0 & outcode1)) break; + var x = 0; + var y = 0; + var normalRadian = 0; + var outcodeOut = 0 !== outcode0 ? outcode0 : outcode1; + if (0 !== (4 & outcodeOut)) { + x = xA + (xB - xA) * (yMin - yA) / (yB - yA); + y = yMin; + null !== normalRadians && (normalRadian = .5 * -Math.PI); + } else if (0 !== (8 & outcodeOut)) { + x = xA + (xB - xA) * (yMax - yA) / (yB - yA); + y = yMax; + null !== normalRadians && (normalRadian = .5 * Math.PI); + } else if (0 !== (2 & outcodeOut)) { + y = yA + (yB - yA) * (xMax - xA) / (xB - xA); + x = xMax; + null !== normalRadians && (normalRadian = 0); + } else if (0 !== (1 & outcodeOut)) { + y = yA + (yB - yA) * (xMin - xA) / (xB - xA); + x = xMin; + null !== normalRadians && (normalRadian = Math.PI); + } + if (outcodeOut === outcode0) { + xA = x; + yA = y; + outcode0 = RectangleBoundingBoxData._computeOutCode(xA, yA, xMin, yMin, xMax, yMax); + null !== normalRadians && (normalRadians.x = normalRadian); + } else { + xB = x; + yB = y; + outcode1 = RectangleBoundingBoxData._computeOutCode(xB, yB, xMin, yMin, xMax, yMax); + null !== normalRadians && (normalRadians.y = normalRadian); + } + } + if (intersectionCount) if (inSideA) { + intersectionCount = 2; + if (null !== intersectionPointA) { + intersectionPointA.x = xB; + intersectionPointA.y = yB; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xB; + intersectionPointB.y = xB; + } + null !== normalRadians && (normalRadians.x = normalRadians.y + Math.PI); + } else if (inSideB) { + intersectionCount = 1; + if (null !== intersectionPointA) { + intersectionPointA.x = xA; + intersectionPointA.y = yA; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xA; + intersectionPointB.y = yA; + } + null !== normalRadians && (normalRadians.y = normalRadians.x + Math.PI); + } else { + intersectionCount = 3; + if (null !== intersectionPointA) { + intersectionPointA.x = xA; + intersectionPointA.y = yA; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xB; + intersectionPointB.y = yB; + } + } + return intersectionCount; + }; + RectangleBoundingBoxData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 0; + }; + RectangleBoundingBoxData.prototype.containsPoint = function (pX, pY) { + var widthH = .5 * this.width; + if (pX >= -widthH && pX <= widthH) { + var heightH = .5 * this.height; + if (pY >= -heightH && pY <= heightH) return true; + } + return false; + }; + RectangleBoundingBoxData.prototype.intersectsSegment = function (xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var widthH = .5 * this.width; + var heightH = .5 * this.height; + var intersectionCount = RectangleBoundingBoxData.rectangleIntersectsSegment(xA, yA, xB, yB, -widthH, -heightH, widthH, heightH, intersectionPointA, intersectionPointB, normalRadians); + return intersectionCount; + }; + return RectangleBoundingBoxData; + })(BoundingBoxData); + dragonBones.RectangleBoundingBoxData = RectangleBoundingBoxData; + var EllipseBoundingBoxData = (function (_super) { + __extends(EllipseBoundingBoxData, _super); + function EllipseBoundingBoxData() { + return null !== _super && _super.apply(this, arguments) || this; + } + EllipseBoundingBoxData.toString = function () { + return "[class dragonBones.EllipseData]"; + }; + EllipseBoundingBoxData.ellipseIntersectsSegment = function (xA, yA, xB, yB, xC, yC, widthH, heightH, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var d = widthH / heightH; + var dd = d * d; + yA *= d; + yB *= d; + var dX = xB - xA; + var dY = yB - yA; + var lAB = Math.sqrt(dX * dX + dY * dY); + var xD = dX / lAB; + var yD = dY / lAB; + var a = (xC - xA) * xD + (yC - yA) * yD; + var aa = a * a; + var ee = xA * xA + yA * yA; + var rr = widthH * widthH; + var dR = rr - ee + aa; + var intersectionCount = 0; + if (dR >= 0) { + var dT = Math.sqrt(dR); + var sA = a - dT; + var sB = a + dT; + var inSideA = sA < 0 ? -1 : sA <= lAB ? 0 : 1; + var inSideB = sB < 0 ? -1 : sB <= lAB ? 0 : 1; + var sideAB = inSideA * inSideB; + if (sideAB < 0) return -1; + if (0 === sideAB) if (-1 === inSideA) { + intersectionCount = 2; + xB = xA + sB * xD; + yB = (yA + sB * yD) / d; + if (null !== intersectionPointA) { + intersectionPointA.x = xB; + intersectionPointA.y = yB; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xB; + intersectionPointB.y = yB; + } + if (null !== normalRadians) { + normalRadians.x = Math.atan2(yB / rr * dd, xB / rr); + normalRadians.y = normalRadians.x + Math.PI; + } + } else if (1 === inSideB) { + intersectionCount = 1; + xA += sA * xD; + yA = (yA + sA * yD) / d; + if (null !== intersectionPointA) { + intersectionPointA.x = xA; + intersectionPointA.y = yA; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xA; + intersectionPointB.y = yA; + } + if (null !== normalRadians) { + normalRadians.x = Math.atan2(yA / rr * dd, xA / rr); + normalRadians.y = normalRadians.x + Math.PI; + } + } else { + intersectionCount = 3; + if (null !== intersectionPointA) { + intersectionPointA.x = xA + sA * xD; + intersectionPointA.y = (yA + sA * yD) / d; + null !== normalRadians && (normalRadians.x = Math.atan2(intersectionPointA.y / rr * dd, intersectionPointA.x / rr)); + } + if (null !== intersectionPointB) { + intersectionPointB.x = xA + sB * xD; + intersectionPointB.y = (yA + sB * yD) / d; + null !== normalRadians && (normalRadians.y = Math.atan2(intersectionPointB.y / rr * dd, intersectionPointB.x / rr)); + } + } + } + return intersectionCount; + }; + EllipseBoundingBoxData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 1; + }; + EllipseBoundingBoxData.prototype.containsPoint = function (pX, pY) { + var widthH = .5 * this.width; + if (pX >= -widthH && pX <= widthH) { + var heightH = .5 * this.height; + if (pY >= -heightH && pY <= heightH) { + pY *= widthH / heightH; + return Math.sqrt(pX * pX + pY * pY) <= widthH; + } + } + return false; + }; + EllipseBoundingBoxData.prototype.intersectsSegment = function (xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var intersectionCount = EllipseBoundingBoxData.ellipseIntersectsSegment(xA, yA, xB, yB, 0, 0, .5 * this.width, .5 * this.height, intersectionPointA, intersectionPointB, normalRadians); + return intersectionCount; + }; + return EllipseBoundingBoxData; + })(BoundingBoxData); + dragonBones.EllipseBoundingBoxData = EllipseBoundingBoxData; + var PolygonBoundingBoxData = (function (_super) { + __extends(PolygonBoundingBoxData, _super); + function PolygonBoundingBoxData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.vertices = []; + return _this; + } + PolygonBoundingBoxData.toString = function () { + return "[class dragonBones.PolygonBoundingBoxData]"; + }; + PolygonBoundingBoxData.polygonIntersectsSegment = function (xA, yA, xB, yB, vertices, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + xA === xB && (xA = xB + 1e-6); + yA === yB && (yA = yB + 1e-6); + var count = vertices.length; + var dXAB = xA - xB; + var dYAB = yA - yB; + var llAB = xA * yB - yA * xB; + var intersectionCount = 0; + var xC = vertices[count - 2]; + var yC = vertices[count - 1]; + var dMin = 0; + var dMax = 0; + var xMin = 0; + var yMin = 0; + var xMax = 0; + var yMax = 0; + for (var i = 0; i < count; i += 2) { + var xD = vertices[i]; + var yD = vertices[i + 1]; + xC === xD && (xC = xD + 1e-4); + yC === yD && (yC = yD + 1e-4); + var dXCD = xC - xD; + var dYCD = yC - yD; + var llCD = xC * yD - yC * xD; + var ll = dXAB * dYCD - dYAB * dXCD; + var x = (llAB * dXCD - dXAB * llCD) / ll; + if ((x >= xC && x <= xD || x >= xD && x <= xC) && (0 === dXAB || x >= xA && x <= xB || x >= xB && x <= xA)) { + var y = (llAB * dYCD - dYAB * llCD) / ll; + if ((y >= yC && y <= yD || y >= yD && y <= yC) && (0 === dYAB || y >= yA && y <= yB || y >= yB && y <= yA)) { + if (null === intersectionPointB) { + xMin = x; + yMin = y; + xMax = x; + yMax = y; + intersectionCount++; + if (null !== normalRadians) { + normalRadians.x = Math.atan2(yD - yC, xD - xC) - .5 * Math.PI; + normalRadians.y = normalRadians.x; + } + break; + } + var d = x - xA; + d < 0 && (d = -d); + if (0 === intersectionCount) { + dMin = d; + dMax = d; + xMin = x; + yMin = y; + xMax = x; + yMax = y; + if (null !== normalRadians) { + normalRadians.x = Math.atan2(yD - yC, xD - xC) - .5 * Math.PI; + normalRadians.y = normalRadians.x; + } + } else { + if (d < dMin) { + dMin = d; + xMin = x; + yMin = y; + null !== normalRadians && (normalRadians.x = Math.atan2(yD - yC, xD - xC) - .5 * Math.PI); + } + if (d > dMax) { + dMax = d; + xMax = x; + yMax = y; + null !== normalRadians && (normalRadians.y = Math.atan2(yD - yC, xD - xC) - .5 * Math.PI); + } + } + intersectionCount++; + } + } + xC = xD; + yC = yD; + } + if (1 === intersectionCount) { + if (null !== intersectionPointA) { + intersectionPointA.x = xMin; + intersectionPointA.y = yMin; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xMin; + intersectionPointB.y = yMin; + } + null !== normalRadians && (normalRadians.y = normalRadians.x + Math.PI); + } else if (intersectionCount > 1) { + intersectionCount++; + if (null !== intersectionPointA) { + intersectionPointA.x = xMin; + intersectionPointA.y = yMin; + } + if (null !== intersectionPointB) { + intersectionPointB.x = xMax; + intersectionPointB.y = yMax; + } + } + return intersectionCount; + }; + PolygonBoundingBoxData.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.type = 2; + this.x = 0; + this.y = 0; + this.vertices.length = 0; + }; + PolygonBoundingBoxData.prototype.containsPoint = function (pX, pY) { + var isInSide = false; + if (pX >= this.x && pX <= this.width && pY >= this.y && pY <= this.height) for (var i = 0, l = this.vertices.length, iP = l - 2; i < l; i += 2) { + var yA = this.vertices[iP + 1]; + var yB = this.vertices[i + 1]; + if (yB < pY && yA >= pY || yA < pY && yB >= pY) { + var xA = this.vertices[iP]; + var xB = this.vertices[i]; + (pY - yB) * (xA - xB) / (yA - yB) + xB < pX && (isInSide = !isInSide); + } + iP = i; + } + return isInSide; + }; + PolygonBoundingBoxData.prototype.intersectsSegment = function (xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var intersectionCount = 0; + 0 !== RectangleBoundingBoxData.rectangleIntersectsSegment(xA, yA, xB, yB, this.x, this.y, this.x + this.width, this.y + this.height, null, null, null) && (intersectionCount = PolygonBoundingBoxData.polygonIntersectsSegment(xA, yA, xB, yB, this.vertices, intersectionPointA, intersectionPointB, normalRadians)); + return intersectionCount; + }; + return PolygonBoundingBoxData; + })(BoundingBoxData); + dragonBones.PolygonBoundingBoxData = PolygonBoundingBoxData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var AnimationData = (function (_super) { + __extends(AnimationData, _super); + function AnimationData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.cachedFrames = []; + _this.boneTimelines = {}; + _this.surfaceTimelines = {}; + _this.slotTimelines = {}; + _this.constraintTimelines = {}; + _this.animationTimelines = {}; + _this.boneCachedFrameIndices = {}; + _this.slotCachedFrameIndices = {}; + _this.actionTimeline = null; + _this.zOrderTimeline = null; + return _this; + } + AnimationData.toString = function () { + return "[class dragonBones.AnimationData]"; + }; + AnimationData.prototype._onClear = function () { + for (var k in this.boneTimelines) { + for (var _i = 0, _a = this.boneTimelines[k]; _i < _a.length; _i++) { + var timeline = _a[_i]; + timeline.returnToPool(); + } + delete this.boneTimelines[k]; + } + for (var k in this.surfaceTimelines) { + for (var _b = 0, _c = this.surfaceTimelines[k]; _b < _c.length; _b++) { + var timeline = _c[_b]; + timeline.returnToPool(); + } + delete this.surfaceTimelines[k]; + } + for (var k in this.slotTimelines) { + for (var _d = 0, _e = this.slotTimelines[k]; _d < _e.length; _d++) { + var timeline = _e[_d]; + timeline.returnToPool(); + } + delete this.slotTimelines[k]; + } + for (var k in this.constraintTimelines) { + for (var _f = 0, _g = this.constraintTimelines[k]; _f < _g.length; _f++) { + var timeline = _g[_f]; + timeline.returnToPool(); + } + delete this.constraintTimelines[k]; + } + for (var k in this.animationTimelines) { + for (var _h = 0, _j = this.animationTimelines[k]; _h < _j.length; _h++) { + var timeline = _j[_h]; + timeline.returnToPool(); + } + delete this.animationTimelines[k]; + } + for (var k in this.boneCachedFrameIndices) delete this.boneCachedFrameIndices[k]; + for (var k in this.slotCachedFrameIndices) delete this.slotCachedFrameIndices[k]; + null !== this.actionTimeline && this.actionTimeline.returnToPool(); + null !== this.zOrderTimeline && this.zOrderTimeline.returnToPool(); + this.frameIntOffset = 0; + this.frameFloatOffset = 0; + this.frameOffset = 0; + this.frameCount = 0; + this.playTimes = 0; + this.duration = 0; + this.scale = 1; + this.fadeInTime = 0; + this.cacheFrameRate = 0; + this.name = ""; + this.cachedFrames.length = 0; + this.actionTimeline = null; + this.zOrderTimeline = null; + this.parent = null; + }; + AnimationData.prototype.cacheFrames = function (frameRate) { + if (this.cacheFrameRate > 0) return; + this.cacheFrameRate = Math.max(Math.ceil(frameRate * this.scale), 1); + var cacheFrameCount = Math.ceil(this.cacheFrameRate * this.duration) + 1; + this.cachedFrames.length = cacheFrameCount; + for (var i = 0, l = this.cacheFrames.length; i < l; ++i) this.cachedFrames[i] = false; + for (var _i = 0, _a = this.parent.sortedBones; _i < _a.length; _i++) { + var bone = _a[_i]; + var indices = new Array(cacheFrameCount); + for (var i = 0, l = indices.length; i < l; ++i) indices[i] = -1; + this.boneCachedFrameIndices[bone.name] = indices; + } + for (var _b = 0, _c = this.parent.sortedSlots; _b < _c.length; _b++) { + var slot = _c[_b]; + var indices = new Array(cacheFrameCount); + for (var i = 0, l = indices.length; i < l; ++i) indices[i] = -1; + this.slotCachedFrameIndices[slot.name] = indices; + } + }; + AnimationData.prototype.addBoneTimeline = function (bone, timeline) { + var timelines = bone.name in this.boneTimelines ? this.boneTimelines[bone.name] : this.boneTimelines[bone.name] = []; + timelines.indexOf(timeline) < 0 && timelines.push(timeline); + }; + AnimationData.prototype.addSurfaceTimeline = function (surface, timeline) { + var timelines = surface.name in this.surfaceTimelines ? this.surfaceTimelines[surface.name] : this.surfaceTimelines[surface.name] = []; + timelines.indexOf(timeline) < 0 && timelines.push(timeline); + }; + AnimationData.prototype.addSlotTimeline = function (slot, timeline) { + var timelines = slot.name in this.slotTimelines ? this.slotTimelines[slot.name] : this.slotTimelines[slot.name] = []; + timelines.indexOf(timeline) < 0 && timelines.push(timeline); + }; + AnimationData.prototype.addConstraintTimeline = function (constraint, timeline) { + var timelines = constraint.name in this.constraintTimelines ? this.constraintTimelines[constraint.name] : this.constraintTimelines[constraint.name] = []; + timelines.indexOf(timeline) < 0 && timelines.push(timeline); + }; + AnimationData.prototype.addAnimationTimeline = function (timelineName, timeline) { + var timelines = timelineName in this.animationTimelines ? this.animationTimelines[timelineName] : this.animationTimelines[timelineName] = []; + timelines.indexOf(timeline) < 0 && timelines.push(timeline); + }; + AnimationData.prototype.getBoneTimelines = function (timelineName) { + return timelineName in this.boneTimelines ? this.boneTimelines[timelineName] : null; + }; + AnimationData.prototype.getSurfaceTimelines = function (timelineName) { + return timelineName in this.surfaceTimelines ? this.surfaceTimelines[timelineName] : null; + }; + AnimationData.prototype.getSlotTimelines = function (timelineName) { + return timelineName in this.slotTimelines ? this.slotTimelines[timelineName] : null; + }; + AnimationData.prototype.getConstraintTimelines = function (timelineName) { + return timelineName in this.constraintTimelines ? this.constraintTimelines[timelineName] : null; + }; + AnimationData.prototype.getAnimationTimelines = function (timelineName) { + return timelineName in this.animationTimelines ? this.animationTimelines[timelineName] : null; + }; + AnimationData.prototype.getBoneCachedFrameIndices = function (boneName) { + return boneName in this.boneCachedFrameIndices ? this.boneCachedFrameIndices[boneName] : null; + }; + AnimationData.prototype.getSlotCachedFrameIndices = function (slotName) { + return slotName in this.slotCachedFrameIndices ? this.slotCachedFrameIndices[slotName] : null; + }; + return AnimationData; + })(dragonBones.BaseObject); + dragonBones.AnimationData = AnimationData; + var TimelineData = (function (_super) { + __extends(TimelineData, _super); + function TimelineData() { + return null !== _super && _super.apply(this, arguments) || this; + } + TimelineData.toString = function () { + return "[class dragonBones.TimelineData]"; + }; + TimelineData.prototype._onClear = function () { + this.type = 10; + this.offset = 0; + this.frameIndicesOffset = -1; + }; + return TimelineData; + })(dragonBones.BaseObject); + dragonBones.TimelineData = TimelineData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var AnimationConfig = (function (_super) { + __extends(AnimationConfig, _super); + function AnimationConfig() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.boneMask = []; + return _this; + } + AnimationConfig.toString = function () { + return "[class dragonBones.AnimationConfig]"; + }; + AnimationConfig.prototype._onClear = function () { + this.pauseFadeOut = true; + this.fadeOutMode = 4; + this.fadeOutTweenType = 1; + this.fadeOutTime = -1; + this.actionEnabled = true; + this.additiveBlending = false; + this.displayControl = true; + this.pauseFadeIn = true; + this.resetToPose = true; + this.fadeInTweenType = 1; + this.playTimes = -1; + this.layer = 0; + this.position = 0; + this.duration = -1; + this.timeScale = -100; + this.weight = 1; + this.fadeInTime = -1; + this.autoFadeOutTime = -1; + this.name = ""; + this.animation = ""; + this.group = ""; + this.boneMask.length = 0; + }; + AnimationConfig.prototype.clear = function () { + this._onClear(); + }; + AnimationConfig.prototype.copyFrom = function (value) { + this.pauseFadeOut = value.pauseFadeOut; + this.fadeOutMode = value.fadeOutMode; + this.autoFadeOutTime = value.autoFadeOutTime; + this.fadeOutTweenType = value.fadeOutTweenType; + this.actionEnabled = value.actionEnabled; + this.additiveBlending = value.additiveBlending; + this.displayControl = value.displayControl; + this.pauseFadeIn = value.pauseFadeIn; + this.resetToPose = value.resetToPose; + this.playTimes = value.playTimes; + this.layer = value.layer; + this.position = value.position; + this.duration = value.duration; + this.timeScale = value.timeScale; + this.fadeInTime = value.fadeInTime; + this.fadeOutTime = value.fadeOutTime; + this.fadeInTweenType = value.fadeInTweenType; + this.weight = value.weight; + this.name = value.name; + this.animation = value.animation; + this.group = value.group; + this.boneMask.length = value.boneMask.length; + for (var i = 0, l = this.boneMask.length; i < l; ++i) this.boneMask[i] = value.boneMask[i]; + }; + AnimationConfig.prototype.containsBoneMask = function (boneName) { + return 0 === this.boneMask.length || this.boneMask.indexOf(boneName) >= 0; + }; + AnimationConfig.prototype.addBoneMask = function (armature, boneName, recursive) { + void 0 === recursive && (recursive = true); + var currentBone = armature.getBone(boneName); + if (null === currentBone) return; + this.boneMask.indexOf(boneName) < 0 && this.boneMask.push(boneName); + if (recursive) for (var _i = 0, _a = armature.getBones(); _i < _a.length; _i++) { + var bone = _a[_i]; + this.boneMask.indexOf(bone.name) < 0 && currentBone.contains(bone) && this.boneMask.push(bone.name); + } + }; + AnimationConfig.prototype.removeBoneMask = function (armature, boneName, recursive) { + void 0 === recursive && (recursive = true); + var index = this.boneMask.indexOf(boneName); + index >= 0 && this.boneMask.splice(index, 1); + if (recursive) { + var currentBone = armature.getBone(boneName); + if (null !== currentBone) if (this.boneMask.length > 0) for (var _i = 0, _a = armature.getBones(); _i < _a.length; _i++) { + var bone = _a[_i]; + var index_1 = this.boneMask.indexOf(bone.name); + index_1 >= 0 && currentBone.contains(bone) && this.boneMask.splice(index_1, 1); + } else for (var _b = 0, _c = armature.getBones(); _b < _c.length; _b++) { + var bone = _c[_b]; + if (bone === currentBone) continue; + currentBone.contains(bone) || this.boneMask.push(bone.name); + } + } + }; + return AnimationConfig; + })(dragonBones.BaseObject); + dragonBones.AnimationConfig = AnimationConfig; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var TextureAtlasData = (function (_super) { + __extends(TextureAtlasData, _super); + function TextureAtlasData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.textures = {}; + return _this; + } + TextureAtlasData.prototype._onClear = function () { + for (var k in this.textures) { + this.textures[k].returnToPool(); + delete this.textures[k]; + } + this.autoSearch = false; + this.width = 0; + this.height = 0; + this.scale = 1; + this.name = ""; + this.imagePath = ""; + }; + TextureAtlasData.prototype.copyFrom = function (value) { + this.autoSearch = value.autoSearch; + this.scale = value.scale; + this.width = value.width; + this.height = value.height; + this.name = value.name; + this.imagePath = value.imagePath; + for (var k in this.textures) { + this.textures[k].returnToPool(); + delete this.textures[k]; + } + for (var k in value.textures) { + var texture = this.createTexture(); + texture.copyFrom(value.textures[k]); + this.textures[k] = texture; + } + }; + TextureAtlasData.prototype.addTexture = function (value) { + if (value.name in this.textures) { + console.warn("Same texture: " + value.name); + return; + } + value.parent = this; + this.textures[value.name] = value; + }; + TextureAtlasData.prototype.getTexture = function (textureName) { + return textureName in this.textures ? this.textures[textureName] : null; + }; + return TextureAtlasData; + })(dragonBones.BaseObject); + dragonBones.TextureAtlasData = TextureAtlasData; + var TextureData = (function (_super) { + __extends(TextureData, _super); + function TextureData() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.region = new dragonBones.Rectangle(); + _this.frame = null; + return _this; + } + TextureData.createRectangle = function () { + return new dragonBones.Rectangle(); + }; + TextureData.prototype._onClear = function () { + this.rotated = false; + this.name = ""; + this.region.clear(); + this.parent = null; + this.frame = null; + }; + TextureData.prototype.copyFrom = function (value) { + this.rotated = value.rotated; + this.name = value.name; + this.region.copyFrom(value.region); + this.parent = value.parent; + null === this.frame && null !== value.frame ? this.frame = TextureData.createRectangle() : null !== this.frame && null === value.frame && (this.frame = null); + null !== this.frame && null !== value.frame && this.frame.copyFrom(value.frame); + }; + return TextureData; + })(dragonBones.BaseObject); + dragonBones.TextureData = TextureData; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var DeformVertices = (function (_super) { + __extends(DeformVertices, _super); + function DeformVertices() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.vertices = []; + _this.bones = []; + return _this; + } + DeformVertices.toString = function () { + return "[class dragonBones.DeformVertices]"; + }; + DeformVertices.prototype._onClear = function () { + this.verticesDirty = false; + this.vertices.length = 0; + this.bones.length = 0; + this.verticesData = null; + }; + DeformVertices.prototype.init = function (verticesDataValue, armature) { + this.verticesData = verticesDataValue; + if (null !== this.verticesData) { + var vertexCount = 0; + vertexCount = null !== this.verticesData.weight ? 2 * this.verticesData.weight.count : 2 * this.verticesData.data.intArray[this.verticesData.offset + 0]; + this.verticesDirty = true; + this.vertices.length = vertexCount; + this.bones.length = 0; + for (var i = 0, l = this.vertices.length; i < l; ++i) this.vertices[i] = 0; + if (null !== this.verticesData.weight) for (var i = 0, l = this.verticesData.weight.bones.length; i < l; ++i) { + var bone = armature.getBone(this.verticesData.weight.bones[i].name); + this.bones.push(bone); + } + } else { + this.verticesDirty = false; + this.vertices.length = 0; + this.bones.length = 0; + this.verticesData = null; + } + }; + DeformVertices.prototype.isBonesUpdate = function () { + for (var _i = 0, _a = this.bones; _i < _a.length; _i++) { + var bone = _a[_i]; + if (null !== bone && bone._childrenTransformDirty) return true; + } + return false; + }; + return DeformVertices; + })(dragonBones.BaseObject); + dragonBones.DeformVertices = DeformVertices; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones_1) { + var Armature = (function (_super) { + __extends(Armature, _super); + function Armature() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._bones = []; + _this._slots = []; + _this._constraints = []; + _this._actions = []; + _this._animation = null; + _this._proxy = null; + _this._replaceTextureAtlasData = null; + _this._clock = null; + return _this; + } + Armature.toString = function () { + return "[class dragonBones.Armature]"; + }; + Armature._onSortSlots = function (a, b) { + return a._zOrder > b._zOrder ? 1 : -1; + }; + Armature.prototype._onClear = function () { + null !== this._clock && this._clock.remove(this); + for (var _i = 0, _a = this._bones; _i < _a.length; _i++) { + var bone = _a[_i]; + bone.returnToPool(); + } + for (var _b = 0, _c = this._slots; _b < _c.length; _b++) { + var slot = _c[_b]; + slot.returnToPool(); + } + for (var _d = 0, _e = this._constraints; _d < _e.length; _d++) { + var constraint = _e[_d]; + constraint.returnToPool(); + } + for (var _f = 0, _g = this._actions; _f < _g.length; _f++) { + var action = _g[_f]; + action.returnToPool(); + } + null !== this._animation && this._animation.returnToPool(); + null !== this._proxy && this._proxy.dbClear(); + null !== this._replaceTextureAtlasData && this._replaceTextureAtlasData.returnToPool(); + this.inheritAnimation = true; + this.userData = null; + this._lockUpdate = false; + this._slotsDirty = true; + this._zOrderDirty = false; + this._flipX = false; + this._flipY = false; + this._cacheFrameIndex = -1; + this._bones.length = 0; + this._slots.length = 0; + this._constraints.length = 0; + this._actions.length = 0; + this._armatureData = null; + this._animation = null; + this._proxy = null; + this._display = null; + this._replaceTextureAtlasData = null; + this._replacedTexture = null; + this._dragonBones = null; + this._clock = null; + this._parent = null; + }; + Armature.prototype._sortZOrder = function (slotIndices, offset) { + var slotDatas = this._armatureData.sortedSlots; + var isOriginal = null === slotIndices; + if (this._zOrderDirty || !isOriginal) { + for (var i = 0, l = slotDatas.length; i < l; ++i) { + var slotIndex = isOriginal ? i : slotIndices[offset + i]; + if (slotIndex < 0 || slotIndex >= l) continue; + var slotData = slotDatas[slotIndex]; + var slot = this.getSlot(slotData.name); + null !== slot && slot._setZorder(i); + } + this._slotsDirty = true; + this._zOrderDirty = !isOriginal; + } + }; + Armature.prototype._addBone = function (value) { + this._bones.indexOf(value) < 0 && this._bones.push(value); + }; + Armature.prototype._addSlot = function (value) { + this._slots.indexOf(value) < 0 && this._slots.push(value); + }; + Armature.prototype._addConstraint = function (value) { + this._constraints.indexOf(value) < 0 && this._constraints.push(value); + }; + Armature.prototype._bufferAction = function (action, append) { + this._actions.indexOf(action) < 0 && (append ? this._actions.push(action) : this._actions.unshift(action)); + }; + Armature.prototype.dispose = function () { + if (null !== this._armatureData) { + this._lockUpdate = true; + this._dragonBones.bufferObject(this); + } + }; + Armature.prototype.init = function (armatureData, proxy, display, dragonBones) { + if (null !== this._armatureData) return; + this._armatureData = armatureData; + this._animation = dragonBones_1.BaseObject.borrowObject(dragonBones_1.Animation); + this._proxy = proxy; + this._display = display; + this._dragonBones = dragonBones; + this._proxy.dbInit(this); + this._animation.init(this); + this._animation.animations = this._armatureData.animations; + }; + Armature.prototype.advanceTime = function (passedTime) { + if (this._lockUpdate) return; + if (null === this._armatureData) { + console.warn("The armature has been disposed."); + return; + } + if (null === this._armatureData.parent) { + console.warn("The armature data has been disposed.\nPlease make sure dispose armature before call factory.clear()."); + return; + } + var prevCacheFrameIndex = this._cacheFrameIndex; + this._animation.advanceTime(passedTime); + if (this._slotsDirty) { + this._slotsDirty = false; + this._slots.sort(Armature._onSortSlots); + } + if (this._cacheFrameIndex < 0 || this._cacheFrameIndex !== prevCacheFrameIndex) { + var i = 0, l = 0; + for (i = 0, l = this._bones.length; i < l; ++i) this._bones[i].update(this._cacheFrameIndex); + for (i = 0, l = this._slots.length; i < l; ++i) this._slots[i].update(this._cacheFrameIndex); + } + if (this._actions.length > 0) { + this._lockUpdate = true; + for (var _i = 0, _a = this._actions; _i < _a.length; _i++) { + var action = _a[_i]; + var actionData = action.actionData; + if (null !== actionData && 0 === actionData.type) if (null !== action.slot) { + var childArmature = action.slot.childArmature; + null !== childArmature && childArmature.animation.fadeIn(actionData.name); + } else if (null !== action.bone) for (var _b = 0, _c = this.getSlots(); _b < _c.length; _b++) { + var slot = _c[_b]; + if (slot.parent === action.bone) { + var childArmature = slot.childArmature; + null !== childArmature && childArmature.animation.fadeIn(actionData.name); + } + } else this._animation.fadeIn(actionData.name); + action.returnToPool(); + } + this._actions.length = 0; + this._lockUpdate = false; + } + this._proxy.dbUpdate(); + }; + Armature.prototype.invalidUpdate = function (boneName, updateSlot) { + void 0 === boneName && (boneName = null); + void 0 === updateSlot && (updateSlot = false); + if (null !== boneName && boneName.length > 0) { + var bone = this.getBone(boneName); + if (null !== bone) { + bone.invalidUpdate(); + if (updateSlot) for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + slot.parent === bone && slot.invalidUpdate(); + } + } + } else { + for (var _b = 0, _c = this._bones; _b < _c.length; _b++) { + var bone = _c[_b]; + bone.invalidUpdate(); + } + if (updateSlot) for (var _d = 0, _e = this._slots; _d < _e.length; _d++) { + var slot = _e[_d]; + slot.invalidUpdate(); + } + } + }; + Armature.prototype.containsPoint = function (x, y) { + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + if (slot.containsPoint(x, y)) return slot; + } + return null; + }; + Armature.prototype.intersectsSegment = function (xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + var isV = xA === xB; + var dMin = 0; + var dMax = 0; + var intXA = 0; + var intYA = 0; + var intXB = 0; + var intYB = 0; + var intAN = 0; + var intBN = 0; + var intSlotA = null; + var intSlotB = null; + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + var intersectionCount = slot.intersectsSegment(xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians); + if (intersectionCount > 0) { + if (null === intersectionPointA && null === intersectionPointB) { + intSlotA = slot; + break; + } + if (null !== intersectionPointA) { + var d = isV ? intersectionPointA.y - yA : intersectionPointA.x - xA; + d < 0 && (d = -d); + if (null === intSlotA || d < dMin) { + dMin = d; + intXA = intersectionPointA.x; + intYA = intersectionPointA.y; + intSlotA = slot; + normalRadians && (intAN = normalRadians.x); + } + } + if (null !== intersectionPointB) { + var d = intersectionPointB.x - xA; + d < 0 && (d = -d); + if (null === intSlotB || d > dMax) { + dMax = d; + intXB = intersectionPointB.x; + intYB = intersectionPointB.y; + intSlotB = slot; + null !== normalRadians && (intBN = normalRadians.y); + } + } + } + } + if (null !== intSlotA && null !== intersectionPointA) { + intersectionPointA.x = intXA; + intersectionPointA.y = intYA; + null !== normalRadians && (normalRadians.x = intAN); + } + if (null !== intSlotB && null !== intersectionPointB) { + intersectionPointB.x = intXB; + intersectionPointB.y = intYB; + null !== normalRadians && (normalRadians.y = intBN); + } + return intSlotA; + }; + Armature.prototype.getBone = function (name) { + for (var _i = 0, _a = this._bones; _i < _a.length; _i++) { + var bone = _a[_i]; + if (bone.name === name) return bone; + } + return null; + }; + Armature.prototype.getBoneByDisplay = function (display) { + var slot = this.getSlotByDisplay(display); + return null !== slot ? slot.parent : null; + }; + Armature.prototype.getSlot = function (name) { + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + if (slot.name === name) return slot; + } + return null; + }; + Armature.prototype.getSlotByDisplay = function (display) { + if (null !== display) for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + if (slot.display === display) return slot; + } + return null; + }; + Armature.prototype.getBones = function () { + return this._bones; + }; + Armature.prototype.getSlots = function () { + return this._slots; + }; + Object.defineProperty(Armature.prototype, "flipX", { + get: function get() { + return this._flipX; + }, + set: function set(value) { + if (this._flipX === value) return; + this._flipX = value; + this.invalidUpdate(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "flipY", { + get: function get() { + return this._flipY; + }, + set: function set(value) { + if (this._flipY === value) return; + this._flipY = value; + this.invalidUpdate(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "cacheFrameRate", { + get: function get() { + return this._armatureData.cacheFrameRate; + }, + set: function set(value) { + if (this._armatureData.cacheFrameRate !== value) { + this._armatureData.cacheFrames(value); + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + var childArmature = slot.childArmature; + null !== childArmature && (childArmature.cacheFrameRate = value); + } + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "name", { + get: function get() { + return this._armatureData.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "armatureData", { + get: function get() { + return this._armatureData; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "animation", { + get: function get() { + return this._animation; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "proxy", { + get: function get() { + return this._proxy; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "eventDispatcher", { + get: function get() { + return this._proxy; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "display", { + get: function get() { + return this._display; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "replacedTexture", { + get: function get() { + return this._replacedTexture; + }, + set: function set(value) { + if (this._replacedTexture === value) return; + if (null !== this._replaceTextureAtlasData) { + this._replaceTextureAtlasData.returnToPool(); + this._replaceTextureAtlasData = null; + } + this._replacedTexture = value; + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + slot.invalidUpdate(); + slot.update(-1); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "clock", { + get: function get() { + return this._clock; + }, + set: function set(value) { + if (this._clock === value) return; + null !== this._clock && this._clock.remove(this); + this._clock = value; + this._clock && this._clock.add(this); + for (var _i = 0, _a = this._slots; _i < _a.length; _i++) { + var slot = _a[_i]; + var childArmature = slot.childArmature; + null !== childArmature && (childArmature.clock = this._clock); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Armature.prototype, "parent", { + get: function get() { + return this._parent; + }, + enumerable: true, + configurable: true + }); + Armature.prototype.replaceTexture = function (texture) { + this.replacedTexture = texture; + }; + Armature.prototype.hasEventListener = function (type) { + return this._proxy.hasDBEventListener(type); + }; + Armature.prototype.addEventListener = function (type, listener, target) { + this._proxy.addDBEventListener(type, listener, target); + }; + Armature.prototype.removeEventListener = function (type, listener, target) { + this._proxy.removeDBEventListener(type, listener, target); + }; + Armature.prototype.enableAnimationCache = function (frameRate) { + console.warn("Deprecated."); + this.cacheFrameRate = frameRate; + }; + Armature.prototype.getDisplay = function () { + return this._display; + }; + return Armature; + })(dragonBones_1.BaseObject); + dragonBones_1.Armature = Armature; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var TransformObject = (function (_super) { + __extends(TransformObject, _super); + function TransformObject() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.globalTransformMatrix = new dragonBones.Matrix(); + _this.global = new dragonBones.Transform(); + _this.offset = new dragonBones.Transform(); + return _this; + } + TransformObject.prototype._onClear = function () { + this.globalTransformMatrix.identity(); + this.global.identity(); + this.offset.identity(); + this.origin = null; + this.userData = null; + this._globalDirty = false; + this._armature = null; + }; + TransformObject.prototype.updateGlobalTransform = function () { + if (this._globalDirty) { + this._globalDirty = false; + this.global.fromMatrix(this.globalTransformMatrix); + } + }; + Object.defineProperty(TransformObject.prototype, "armature", { + get: function get() { + return this._armature; + }, + enumerable: true, + configurable: true + }); + TransformObject._helpMatrix = new dragonBones.Matrix(); + TransformObject._helpTransform = new dragonBones.Transform(); + TransformObject._helpPoint = new dragonBones.Point(); + return TransformObject; + })(dragonBones.BaseObject); + dragonBones.TransformObject = TransformObject; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Bone = (function (_super) { + __extends(Bone, _super); + function Bone() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.animationPose = new dragonBones.Transform(); + _this._blendState = new dragonBones.BlendState(); + return _this; + } + Bone.toString = function () { + return "[class dragonBones.Bone]"; + }; + Bone.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.offsetMode = 1; + this.animationPose.identity(); + this._transformDirty = false; + this._childrenTransformDirty = false; + this._localDirty = true; + this._hasConstraint = false; + this._visible = true; + this._cachedFrameIndex = -1; + this._blendState.clear(); + this._boneData = null; + this._parent = null; + this._cachedFrameIndices = null; + }; + Bone.prototype._updateGlobalTransformMatrix = function (isCache) { + var boneData = this._boneData; + var global = this.global; + var globalTransformMatrix = this.globalTransformMatrix; + var origin = this.origin; + var offset = this.offset; + var animationPose = this.animationPose; + var parent = this._parent; + var flipX = this._armature.flipX; + var flipY = this._armature.flipY === dragonBones.DragonBones.yDown; + var inherit = null !== parent; + var rotation = 0; + if (1 === this.offsetMode) if (null !== origin) { + global.x = origin.x + offset.x + animationPose.x; + global.scaleX = origin.scaleX * offset.scaleX * animationPose.scaleX; + global.scaleY = origin.scaleY * offset.scaleY * animationPose.scaleY; + if (dragonBones.DragonBones.yDown) { + global.y = origin.y + offset.y + animationPose.y; + global.skew = origin.skew + offset.skew + animationPose.skew; + global.rotation = origin.rotation + offset.rotation + animationPose.rotation; + } else { + global.y = origin.y - offset.y + animationPose.y; + global.skew = origin.skew - offset.skew + animationPose.skew; + global.rotation = origin.rotation - offset.rotation + animationPose.rotation; + } + } else { + global.copyFrom(offset); + if (!dragonBones.DragonBones.yDown) { + global.y = -global.y; + global.skew = -global.skew; + global.rotation = -global.rotation; + } + global.add(animationPose); + } else if (0 === this.offsetMode) null !== origin ? global.copyFrom(origin).add(animationPose) : global.copyFrom(animationPose); else { + inherit = false; + global.copyFrom(offset); + if (!dragonBones.DragonBones.yDown) { + global.y = -global.y; + global.skew = -global.skew; + global.rotation = -global.rotation; + } + } + if (inherit) { + var parentMatrix = 0 === parent._boneData.type ? parent.globalTransformMatrix : parent._getGlobalTransformMatrix(global.x, global.y); + if (boneData.inheritScale) { + if (!boneData.inheritRotation) { + parent.updateGlobalTransform(); + rotation = flipX && flipY ? global.rotation - (parent.global.rotation + Math.PI) : flipX ? global.rotation + parent.global.rotation + Math.PI : flipY ? global.rotation + parent.global.rotation : global.rotation - parent.global.rotation; + global.rotation = rotation; + } + global.toMatrix(globalTransformMatrix); + globalTransformMatrix.concat(parentMatrix); + if (boneData.inheritTranslation) { + global.x = globalTransformMatrix.tx; + global.y = globalTransformMatrix.ty; + } else { + globalTransformMatrix.tx = global.x; + globalTransformMatrix.ty = global.y; + } + isCache ? global.fromMatrix(globalTransformMatrix) : this._globalDirty = true; + } else { + if (boneData.inheritTranslation) { + var x = global.x; + var y = global.y; + global.x = parentMatrix.a * x + parentMatrix.c * y + parentMatrix.tx; + global.y = parentMatrix.b * x + parentMatrix.d * y + parentMatrix.ty; + } else { + flipX && (global.x = -global.x); + flipY && (global.y = -global.y); + } + if (boneData.inheritRotation) { + parent.updateGlobalTransform(); + rotation = parent.global.scaleX < 0 ? global.rotation + parent.global.rotation + Math.PI : global.rotation + parent.global.rotation; + if (parentMatrix.a * parentMatrix.d - parentMatrix.b * parentMatrix.c < 0) { + rotation -= 2 * global.rotation; + (flipX !== flipY || boneData.inheritReflection) && (global.skew += Math.PI); + dragonBones.DragonBones.yDown || (global.skew = -global.skew); + } + global.rotation = rotation; + } else if (flipX || flipY) { + if (flipX && flipY) rotation = global.rotation + Math.PI; else { + rotation = flipX ? Math.PI - global.rotation : -global.rotation; + global.skew += Math.PI; + } + global.rotation = rotation; + } + global.toMatrix(globalTransformMatrix); + } + } else { + if (flipX || flipY) { + flipX && (global.x = -global.x); + flipY && (global.y = -global.y); + if (flipX && flipY) rotation = global.rotation + Math.PI; else { + rotation = flipX ? Math.PI - global.rotation : -global.rotation; + global.skew += Math.PI; + } + global.rotation = rotation; + } + global.toMatrix(globalTransformMatrix); + } + }; + Bone.prototype.init = function (boneData, armatureValue) { + if (null !== this._boneData) return; + this._boneData = boneData; + this._armature = armatureValue; + null !== this._boneData.parent && (this._parent = this._armature.getBone(this._boneData.parent.name)); + this._armature._addBone(this); + this.origin = this._boneData.transform; + }; + Bone.prototype.update = function (cacheFrameIndex) { + this._blendState.dirty = false; + if (cacheFrameIndex >= 0 && null !== this._cachedFrameIndices) { + var cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex]; + if (cachedFrameIndex >= 0 && this._cachedFrameIndex === cachedFrameIndex) this._transformDirty = false; else if (cachedFrameIndex >= 0) { + this._transformDirty = true; + this._cachedFrameIndex = cachedFrameIndex; + } else { + if (this._hasConstraint) for (var _i = 0, _a = this._armature._constraints; _i < _a.length; _i++) { + var constraint = _a[_i]; + constraint._root === this && constraint.update(); + } + if (this._transformDirty || null !== this._parent && this._parent._childrenTransformDirty) { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } else if (this._cachedFrameIndex >= 0) { + this._transformDirty = false; + this._cachedFrameIndices[cacheFrameIndex] = this._cachedFrameIndex; + } else { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + } + } else { + if (this._hasConstraint) for (var _b = 0, _c = this._armature._constraints; _b < _c.length; _b++) { + var constraint = _c[_b]; + constraint._root === this && constraint.update(); + } + if (this._transformDirty || null !== this._parent && this._parent._childrenTransformDirty) { + cacheFrameIndex = -1; + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + } + if (this._transformDirty) { + this._transformDirty = false; + this._childrenTransformDirty = true; + if (this._cachedFrameIndex < 0) { + var isCache = cacheFrameIndex >= 0; + this._localDirty && this._updateGlobalTransformMatrix(isCache); + isCache && null !== this._cachedFrameIndices && (this._cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex] = this._armature._armatureData.setCacheFrame(this.globalTransformMatrix, this.global)); + } else this._armature._armatureData.getCacheFrame(this.globalTransformMatrix, this.global, this._cachedFrameIndex); + } else this._childrenTransformDirty && (this._childrenTransformDirty = false); + this._localDirty = true; + }; + Bone.prototype.updateByConstraint = function () { + if (this._localDirty) { + this._localDirty = false; + (this._transformDirty || null !== this._parent && this._parent._childrenTransformDirty) && this._updateGlobalTransformMatrix(true); + this._transformDirty = true; + } + }; + Bone.prototype.invalidUpdate = function () { + this._transformDirty = true; + }; + Bone.prototype.contains = function (value) { + if (value === this) return false; + var ancestor = value; + while (ancestor !== this && null !== ancestor) ancestor = ancestor.parent; + return ancestor === this; + }; + Object.defineProperty(Bone.prototype, "boneData", { + get: function get() { + return this._boneData; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Bone.prototype, "visible", { + get: function get() { + return this._visible; + }, + set: function set(value) { + if (this._visible === value) return; + this._visible = value; + for (var _i = 0, _a = this._armature.getSlots(); _i < _a.length; _i++) { + var slot = _a[_i]; + slot.parent === this && slot._updateVisible(); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Bone.prototype, "name", { + get: function get() { + return this._boneData.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Bone.prototype, "parent", { + get: function get() { + return this._parent; + }, + enumerable: true, + configurable: true + }); + Bone.prototype.getBones = function () { + console.warn("Deprecated."); + var bones = new Array(); + for (var _i = 0, _a = this._armature.getBones(); _i < _a.length; _i++) { + var bone = _a[_i]; + bone.parent === this && bones.push(bone); + } + return bones; + }; + Bone.prototype.getSlots = function () { + console.warn("Deprecated."); + var slots = new Array(); + for (var _i = 0, _a = this._armature.getSlots(); _i < _a.length; _i++) { + var slot = _a[_i]; + slot.parent === this && slots.push(slot); + } + return slots; + }; + Object.defineProperty(Bone.prototype, "slot", { + get: function get() { + console.warn("Deprecated."); + for (var _i = 0, _a = this._armature.getSlots(); _i < _a.length; _i++) { + var slot = _a[_i]; + if (slot.parent === this) return slot; + } + return null; + }, + enumerable: true, + configurable: true + }); + return Bone; + })(dragonBones.TransformObject); + dragonBones.Bone = Bone; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Surface = (function (_super) { + __extends(Surface, _super); + function Surface() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._vertices = []; + _this._deformVertices = []; + _this._hullCache = []; + _this._matrixCahce = []; + return _this; + } + Surface.toString = function () { + return "[class dragonBones.Surface]"; + }; + Surface.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this._dX = 0; + this._dY = 0; + this._k = 0; + this._kX = 0; + this._kY = 0; + this._vertices.length = 0; + this._deformVertices.length = 0; + this._matrixCahce.length = 0; + this._hullCache.length = 0; + }; + Surface.prototype._getAffineTransform = function (x, y, lX, lY, aX, aY, bX, bY, cX, cY, transform, matrix, isDown) { + var dabX = bX - aX; + var dabY = bY - aY; + var dacX = cX - aX; + var dacY = cY - aY; + transform.rotation = Math.atan2(dabY, dabX); + transform.skew = Math.atan2(dacY, dacX) - .5 * Math.PI - transform.rotation; + isDown && (transform.rotation += Math.PI); + transform.scaleX = Math.sqrt(dabX * dabX + dabY * dabY) / lX; + transform.scaleY = Math.sqrt(dacX * dacX + dacY * dacY) / lY; + transform.toMatrix(matrix); + transform.x = matrix.tx = aX - (matrix.a * x + matrix.c * y); + transform.y = matrix.ty = aY - (matrix.b * x + matrix.d * y); + }; + Surface.prototype._updateVertices = function () { + var originalVertices = this._boneData.vertices; + var vertices = this._vertices; + var animationVertices = this._deformVertices; + if (null !== this._parent) if (1 === this._parent._boneData.type) for (var i = 0, l = originalVertices.length; i < l; i += 2) { + var x = originalVertices[i] + animationVertices[i]; + var y = originalVertices[i + 1] + animationVertices[i]; + var matrix = this._parent._getGlobalTransformMatrix(x, y); + vertices[i] = matrix.a * x + matrix.c * y + matrix.tx; + vertices[i + 1] = matrix.b * x + matrix.d * y + matrix.ty; + } else { + var parentMatrix = this._parent.globalTransformMatrix; + for (var i = 0, l = originalVertices.length; i < l; i += 2) { + var x = originalVertices[i] + animationVertices[i]; + var y = originalVertices[i + 1] + animationVertices[i + 1]; + vertices[i] = parentMatrix.a * x + parentMatrix.c * y + parentMatrix.tx; + vertices[i + 1] = parentMatrix.b * x + parentMatrix.d * y + parentMatrix.ty; + } + } else for (var i = 0, l = originalVertices.length; i < l; i += 2) { + vertices[i] = originalVertices[i] + animationVertices[i]; + vertices[i + 1] = originalVertices[i + 1] + animationVertices[i + 1]; + } + }; + Surface.prototype._updateGlobalTransformMatrix = function (isCache) { + isCache; + var segmentXD = 2 * this._boneData.segmentX; + var lastIndex = this._vertices.length - 2; + var lA = 200; + var raX = this._vertices[0]; + var raY = this._vertices[1]; + var rbX = this._vertices[segmentXD]; + var rbY = this._vertices[segmentXD + 1]; + var rcX = this._vertices[lastIndex]; + var rcY = this._vertices[lastIndex + 1]; + var rdX = this._vertices[lastIndex - segmentXD]; + var rdY = this._vertices[lastIndex - segmentXD + 1]; + var dacX = raX + .5 * (rcX - raX); + var dacY = raY + .5 * (rcY - raY); + var dbdX = rbX + .5 * (rdX - rbX); + var dbdY = rbY + .5 * (rdY - rbY); + var aX = dacX + .5 * (dbdX - dacX); + var aY = dacY + .5 * (dbdY - dacY); + var bX = rbX + .5 * (rcX - rbX); + var bY = rbY + .5 * (rcY - rbY); + var cX = rdX + .5 * (rcX - rdX); + var cY = rdY + .5 * (rcY - rdY); + this._globalDirty = false; + this._getAffineTransform(0, 0, lA, lA, aX, aY, bX, bY, cX, cY, this.global, this.globalTransformMatrix, false); + }; + Surface.prototype._getGlobalTransformMatrix = function (x, y) { + var lB = 1e3; + if (x < -lB || lB < x || y < -lB || lB < y) return this.globalTransformMatrix; + var isDown = false; + var lA = 200; + var surfaceData = this._boneData; + var segmentX = surfaceData.segmentX; + var segmentY = surfaceData.segmentY; + var segmentXD = 2 * surfaceData.segmentX; + var dX = this._dX; + var dY = this._dY; + var indexX = Math.floor((x + lA) / dX); + var indexY = Math.floor((y + lA) / dY); + var matrixIndex = 0; + var pX = indexX * dX - lA; + var pY = indexY * dY - lA; + var matrices = this._matrixCahce; + var helpMatrix = Surface._helpMatrix; + if (x < -lA) { + if (y < -lA || y >= lA) return this.globalTransformMatrix; + isDown = y > this._kX * (x + lA) + pY; + matrixIndex = 7 * (2 * (segmentX * (segmentY + 1) + 2 * segmentX + segmentY + indexY) + (isDown ? 1 : 0)); + if (this._matrixCahce[matrixIndex] > 0) helpMatrix.copyFromArray(matrices, matrixIndex + 1); else { + var vertexIndex = indexY * (segmentXD + 2); + var ddX = this._hullCache[4]; + var ddY = this._hullCache[5]; + var sX = this._hullCache[2] - (segmentY - indexY) * ddX; + var sY = this._hullCache[3] - (segmentY - indexY) * ddY; + var vertices = this._vertices; + isDown ? this._getAffineTransform(-lA, pY + dY, lB - lA, dY, vertices[vertexIndex + segmentXD + 2], vertices[vertexIndex + segmentXD + 3], sX + ddX, sY + ddY, vertices[vertexIndex], vertices[vertexIndex + 1], Surface._helpTransform, helpMatrix, true) : this._getAffineTransform(-lB, pY, lB - lA, dY, sX, sY, vertices[vertexIndex], vertices[vertexIndex + 1], sX + ddX, sY + ddY, Surface._helpTransform, helpMatrix, false); + matrices[matrixIndex] = 1; + matrices[matrixIndex + 1] = helpMatrix.a; + matrices[matrixIndex + 2] = helpMatrix.b; + matrices[matrixIndex + 3] = helpMatrix.c; + matrices[matrixIndex + 4] = helpMatrix.d; + matrices[matrixIndex + 5] = helpMatrix.tx; + matrices[matrixIndex + 6] = helpMatrix.ty; + } + } else if (x >= lA) { + if (y < -lA || y >= lA) return this.globalTransformMatrix; + isDown = y > this._kX * (x - lB) + pY; + matrixIndex = 7 * (2 * (segmentX * (segmentY + 1) + segmentX + indexY) + (isDown ? 1 : 0)); + if (this._matrixCahce[matrixIndex] > 0) helpMatrix.copyFromArray(matrices, matrixIndex + 1); else { + var vertexIndex = (indexY + 1) * (segmentXD + 2) - 2; + var ddX = this._hullCache[4]; + var ddY = this._hullCache[5]; + var sX = this._hullCache[0] + indexY * ddX; + var sY = this._hullCache[1] + indexY * ddY; + var vertices = this._vertices; + isDown ? this._getAffineTransform(lB, pY + dY, lB - lA, dY, sX + ddX, sY + ddY, vertices[vertexIndex + segmentXD + 2], vertices[vertexIndex + segmentXD + 3], sX, sY, Surface._helpTransform, helpMatrix, true) : this._getAffineTransform(lA, pY, lB - lA, dY, vertices[vertexIndex], vertices[vertexIndex + 1], sX, sY, vertices[vertexIndex + segmentXD + 2], vertices[vertexIndex + segmentXD + 3], Surface._helpTransform, helpMatrix, false); + matrices[matrixIndex] = 1; + matrices[matrixIndex + 1] = helpMatrix.a; + matrices[matrixIndex + 2] = helpMatrix.b; + matrices[matrixIndex + 3] = helpMatrix.c; + matrices[matrixIndex + 4] = helpMatrix.d; + matrices[matrixIndex + 5] = helpMatrix.tx; + matrices[matrixIndex + 6] = helpMatrix.ty; + } + } else if (y < -lA) { + if (x < -lA || x >= lA) return this.globalTransformMatrix; + isDown = y > this._kY * (x - pX - dX) - lB; + matrixIndex = 7 * (segmentX * (segmentY + 1) + 2 * indexX + (isDown ? 1 : 0)); + if (this._matrixCahce[matrixIndex] > 0) helpMatrix.copyFromArray(matrices, matrixIndex + 1); else { + var vertexIndex = 2 * indexX; + var ddX = this._hullCache[10]; + var ddY = this._hullCache[11]; + var sX = this._hullCache[8] + indexX * ddX; + var sY = this._hullCache[9] + indexX * ddY; + var vertices = this._vertices; + isDown ? this._getAffineTransform(pX + dX, -lA, dX, lB - lA, vertices[vertexIndex + 2], vertices[vertexIndex + 3], vertices[vertexIndex], vertices[vertexIndex + 1], sX + ddX, sY + ddY, Surface._helpTransform, helpMatrix, true) : this._getAffineTransform(pX, -lB, dX, lB - lA, sX, sY, sX + ddX, sY + ddY, vertices[vertexIndex], vertices[vertexIndex + 1], Surface._helpTransform, helpMatrix, false); + matrices[matrixIndex] = 1; + matrices[matrixIndex + 1] = helpMatrix.a; + matrices[matrixIndex + 2] = helpMatrix.b; + matrices[matrixIndex + 3] = helpMatrix.c; + matrices[matrixIndex + 4] = helpMatrix.d; + matrices[matrixIndex + 5] = helpMatrix.tx; + matrices[matrixIndex + 6] = helpMatrix.ty; + } + } else if (y >= lA) { + if (x < -lA || x >= lA) return this.globalTransformMatrix; + isDown = y > this._kY * (x - pX - dX) + lA; + matrixIndex = 7 * (2 * (segmentX * (segmentY + 1) + segmentX + segmentY + indexY) + (isDown ? 1 : 0)); + if (this._matrixCahce[matrixIndex] > 0) helpMatrix.copyFromArray(matrices, matrixIndex + 1); else { + var vertexIndex = segmentY * (segmentXD + 2) + 2 * indexX; + var ddX = this._hullCache[10]; + var ddY = this._hullCache[11]; + var sX = this._hullCache[6] - (segmentX - indexX) * ddX; + var sY = this._hullCache[7] - (segmentX - indexX) * ddY; + var vertices = this._vertices; + isDown ? this._getAffineTransform(pX + dX, lB, dX, lB - lA, sX + ddX, sY + ddY, sX, sY, vertices[vertexIndex + 2], vertices[vertexIndex + 3], Surface._helpTransform, helpMatrix, true) : this._getAffineTransform(pX, lA, dX, lB - lA, vertices[vertexIndex], vertices[vertexIndex + 1], vertices[vertexIndex + 2], vertices[vertexIndex + 3], sX, sY, Surface._helpTransform, helpMatrix, false); + matrices[matrixIndex] = 1; + matrices[matrixIndex + 1] = helpMatrix.a; + matrices[matrixIndex + 2] = helpMatrix.b; + matrices[matrixIndex + 3] = helpMatrix.c; + matrices[matrixIndex + 4] = helpMatrix.d; + matrices[matrixIndex + 5] = helpMatrix.tx; + matrices[matrixIndex + 6] = helpMatrix.ty; + } + } else { + isDown = y > this._k * (x - pX - dX) + pY; + matrixIndex = 7 * (2 * (segmentX * indexY + indexX) + (isDown ? 1 : 0)); + if (this._matrixCahce[matrixIndex] > 0) helpMatrix.copyFromArray(matrices, matrixIndex + 1); else { + var vertexIndex = 2 * indexX + indexY * (segmentXD + 2); + var vertices = this._vertices; + isDown ? this._getAffineTransform(pX + dX, pY + dY, dX, dY, vertices[vertexIndex + segmentXD + 4], vertices[vertexIndex + segmentXD + 5], vertices[vertexIndex + segmentXD + 2], vertices[vertexIndex + segmentXD + 3], vertices[vertexIndex + 2], vertices[vertexIndex + 3], Surface._helpTransform, helpMatrix, true) : this._getAffineTransform(pX, pY, dX, dY, vertices[vertexIndex], vertices[vertexIndex + 1], vertices[vertexIndex + 2], vertices[vertexIndex + 3], vertices[vertexIndex + segmentXD + 2], vertices[vertexIndex + segmentXD + 3], Surface._helpTransform, helpMatrix, false); + matrices[matrixIndex] = 1; + matrices[matrixIndex + 1] = helpMatrix.a; + matrices[matrixIndex + 2] = helpMatrix.b; + matrices[matrixIndex + 3] = helpMatrix.c; + matrices[matrixIndex + 4] = helpMatrix.d; + matrices[matrixIndex + 5] = helpMatrix.tx; + matrices[matrixIndex + 6] = helpMatrix.ty; + } + } + return helpMatrix; + }; + Surface.prototype.init = function (surfaceData, armatureValue) { + if (null !== this._boneData) return; + _super.prototype.init.call(this, surfaceData, armatureValue); + var segmentX = surfaceData.segmentX; + var segmentY = surfaceData.segmentY; + var vertexCount = surfaceData.vertices.length; + var lB = 1e3; + var lA = 200; + this._dX = 2 * lA / segmentX; + this._dY = 2 * lA / segmentY; + this._k = -this._dY / this._dX; + this._kX = -this._dY / (lB - lA); + this._kY = -(lB - lA) / this._dX; + this._vertices.length = vertexCount; + this._deformVertices.length = vertexCount; + this._matrixCahce.length = 2 * (segmentX * segmentY + 2 * segmentX + 2 * segmentY) * 7; + this._hullCache.length = 10; + for (var i = 0; i < vertexCount; ++i) this._deformVertices[i] = 0; + }; + Surface.prototype.update = function (cacheFrameIndex) { + this._blendState.dirty = false; + if (cacheFrameIndex >= 0 && null !== this._cachedFrameIndices) { + var cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex]; + if (cachedFrameIndex >= 0 && this._cachedFrameIndex === cachedFrameIndex) this._transformDirty = false; else if (cachedFrameIndex >= 0) { + this._transformDirty = true; + this._cachedFrameIndex = cachedFrameIndex; + } else { + if (this._hasConstraint) for (var _i = 0, _a = this._armature._constraints; _i < _a.length; _i++) { + var constraint = _a[_i]; + constraint._root === this && constraint.update(); + } + if (this._transformDirty || null !== this._parent && this._parent._childrenTransformDirty) { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } else if (this._cachedFrameIndex >= 0) { + this._transformDirty = false; + this._cachedFrameIndices[cacheFrameIndex] = this._cachedFrameIndex; + } else { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + } + } else { + if (this._hasConstraint) for (var _b = 0, _c = this._armature._constraints; _b < _c.length; _b++) { + var constraint = _c[_b]; + constraint._root === this && constraint.update(); + } + if (this._transformDirty || null !== this._parent && this._parent._childrenTransformDirty) { + cacheFrameIndex = -1; + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + } + if (this._transformDirty) { + this._transformDirty = false; + this._childrenTransformDirty = true; + for (var i = 0, l = this._matrixCahce.length; i < l; i += 7) this._matrixCahce[i] = -1; + this._updateVertices(); + if (this._cachedFrameIndex < 0) { + var isCache = cacheFrameIndex >= 0; + this._localDirty && this._updateGlobalTransformMatrix(isCache); + isCache && null !== this._cachedFrameIndices && (this._cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex] = this._armature._armatureData.setCacheFrame(this.globalTransformMatrix, this.global)); + } else this._armature._armatureData.getCacheFrame(this.globalTransformMatrix, this.global, this._cachedFrameIndex); + var lB = 1e3; + var lA = 200; + var ddX = 2 * this.global.x; + var ddY = 2 * this.global.y; + var helpPoint = Surface._helpPoint; + this.globalTransformMatrix.transformPoint(lB, -lA, helpPoint); + this._hullCache[0] = helpPoint.x; + this._hullCache[1] = helpPoint.y; + this._hullCache[2] = ddX - helpPoint.x; + this._hullCache[3] = ddY - helpPoint.y; + this.globalTransformMatrix.transformPoint(0, this._dY, helpPoint, true); + this._hullCache[4] = helpPoint.x; + this._hullCache[5] = helpPoint.y; + this.globalTransformMatrix.transformPoint(lA, lB, helpPoint); + this._hullCache[6] = helpPoint.x; + this._hullCache[7] = helpPoint.y; + this._hullCache[8] = ddX - helpPoint.x; + this._hullCache[9] = ddY - helpPoint.y; + this.globalTransformMatrix.transformPoint(this._dX, 0, helpPoint, true); + this._hullCache[10] = helpPoint.x; + this._hullCache[11] = helpPoint.y; + } else this._childrenTransformDirty && (this._childrenTransformDirty = false); + this._localDirty = true; + }; + return Surface; + })(dragonBones.Bone); + dragonBones.Surface = Surface; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Slot = (function (_super) { + __extends(Slot, _super); + function Slot() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._localMatrix = new dragonBones.Matrix(); + _this._colorTransform = new dragonBones.ColorTransform(); + _this._displayDatas = []; + _this._displayList = []; + _this._deformVertices = null; + _this._rawDisplay = null; + _this._meshDisplay = null; + return _this; + } + Slot.prototype._onClear = function () { + _super.prototype._onClear.call(this); + var disposeDisplayList = []; + for (var _i = 0, _a = this._displayList; _i < _a.length; _i++) { + var eachDisplay = _a[_i]; + null !== eachDisplay && eachDisplay !== this._rawDisplay && eachDisplay !== this._meshDisplay && disposeDisplayList.indexOf(eachDisplay) < 0 && disposeDisplayList.push(eachDisplay); + } + for (var _b = 0, disposeDisplayList_1 = disposeDisplayList; _b < disposeDisplayList_1.length; _b++) { + var eachDisplay = disposeDisplayList_1[_b]; + eachDisplay instanceof dragonBones.Armature ? eachDisplay.dispose() : this._disposeDisplay(eachDisplay, true); + } + null !== this._deformVertices && this._deformVertices.returnToPool(); + null !== this._meshDisplay && this._meshDisplay !== this._rawDisplay && this._disposeDisplay(this._meshDisplay, false); + null !== this._rawDisplay && this._disposeDisplay(this._rawDisplay, false); + this.displayController = null; + this._displayDirty = false; + this._zOrderDirty = false; + this._blendModeDirty = false; + this._colorDirty = false; + this._transformDirty = false; + this._visible = true; + this._blendMode = 0; + this._displayIndex = -1; + this._animationDisplayIndex = -1; + this._zOrder = 0; + this._cachedFrameIndex = -1; + this._pivotX = 0; + this._pivotY = 0; + this._localMatrix.identity(); + this._colorTransform.identity(); + this._displayList.length = 0; + this._displayDatas.length = 0; + this._slotData = null; + this._rawDisplayDatas = null; + this._displayData = null; + this._boundingBoxData = null; + this._textureData = null; + this._deformVertices = null; + this._rawDisplay = null; + this._meshDisplay = null; + this._display = null; + this._childArmature = null; + this._parent = null; + this._cachedFrameIndices = null; + }; + Slot.prototype._getDefaultRawDisplayData = function (displayIndex) { + var defaultSkin = this._armature._armatureData.defaultSkin; + if (null !== defaultSkin) { + var defaultRawDisplayDatas = defaultSkin.getDisplays(this._slotData.name); + if (null !== defaultRawDisplayDatas) return displayIndex < defaultRawDisplayDatas.length ? defaultRawDisplayDatas[displayIndex] : null; + } + return null; + }; + Slot.prototype._updateDisplayData = function () { + var prevDisplayData = this._displayData; + var prevVerticesData = null !== this._deformVertices ? this._deformVertices.verticesData : null; + var prevTextureData = this._textureData; + var rawDisplayData = null; + var currentVerticesData = null; + this._displayData = null; + this._boundingBoxData = null; + this._textureData = null; + if (this._displayIndex >= 0) { + null !== this._rawDisplayDatas && (rawDisplayData = this._displayIndex < this._rawDisplayDatas.length ? this._rawDisplayDatas[this._displayIndex] : null); + null === rawDisplayData && (rawDisplayData = this._getDefaultRawDisplayData(this._displayIndex)); + this._displayIndex < this._displayDatas.length && (this._displayData = this._displayDatas[this._displayIndex]); + } + if (null !== this._displayData) { + 2 === this._displayData.type ? currentVerticesData = this._displayData.vertices : 4 === this._displayData.type ? currentVerticesData = this._displayData.vertices : null !== rawDisplayData && (2 === rawDisplayData.type ? currentVerticesData = rawDisplayData.vertices : 4 === rawDisplayData.type && (currentVerticesData = rawDisplayData.vertices)); + 3 === this._displayData.type ? this._boundingBoxData = this._displayData.boundingBox : null !== rawDisplayData && 3 === rawDisplayData.type && (this._boundingBoxData = rawDisplayData.boundingBox); + 0 === this._displayData.type ? this._textureData = this._displayData.texture : 2 === this._displayData.type && (this._textureData = this._displayData.texture); + } + if (this._displayData !== prevDisplayData || currentVerticesData !== prevVerticesData || this._textureData !== prevTextureData) { + if (null === currentVerticesData && null !== this._textureData) { + var imageDisplayData = this._displayData; + var scale = this._textureData.parent.scale * this._armature._armatureData.scale; + var frame = this._textureData.frame; + this._pivotX = imageDisplayData.pivot.x; + this._pivotY = imageDisplayData.pivot.y; + var rect = null !== frame ? frame : this._textureData.region; + var width = rect.width; + var height = rect.height; + if (this._textureData.rotated && null === frame) { + width = rect.height; + height = rect.width; + } + this._pivotX *= width * scale; + this._pivotY *= height * scale; + if (null !== frame) { + this._pivotX += frame.x * scale; + this._pivotY += frame.y * scale; + } + if (null !== this._displayData && null !== rawDisplayData && this._displayData !== rawDisplayData) { + rawDisplayData.transform.toMatrix(Slot._helpMatrix); + Slot._helpMatrix.invert(); + Slot._helpMatrix.transformPoint(0, 0, Slot._helpPoint); + this._pivotX -= Slot._helpPoint.x; + this._pivotY -= Slot._helpPoint.y; + this._displayData.transform.toMatrix(Slot._helpMatrix); + Slot._helpMatrix.invert(); + Slot._helpMatrix.transformPoint(0, 0, Slot._helpPoint); + this._pivotX += Slot._helpPoint.x; + this._pivotY += Slot._helpPoint.y; + } + dragonBones.DragonBones.yDown || (this._pivotY = (this._textureData.rotated ? this._textureData.region.width : this._textureData.region.height) * scale - this._pivotY); + } else { + this._pivotX = 0; + this._pivotY = 0; + } + null !== rawDisplayData ? this.origin = rawDisplayData.transform : null !== this._displayData ? this.origin = this._displayData.transform : this.origin = null; + if (currentVerticesData !== prevVerticesData) { + null === this._deformVertices && (this._deformVertices = dragonBones.BaseObject.borrowObject(dragonBones.DeformVertices)); + this._deformVertices.init(currentVerticesData, this._armature); + } else null !== this._deformVertices && this._textureData !== prevTextureData && (this._deformVertices.verticesDirty = true); + this._displayDirty = true; + this._transformDirty = true; + } + }; + Slot.prototype._updateDisplay = function () { + var prevDisplay = null !== this._display ? this._display : this._rawDisplay; + var prevChildArmature = this._childArmature; + if (this._displayIndex >= 0 && this._displayIndex < this._displayList.length) { + this._display = this._displayList[this._displayIndex]; + if (null !== this._display && this._display instanceof dragonBones.Armature) { + this._childArmature = this._display; + this._display = this._childArmature.display; + } else this._childArmature = null; + } else { + this._display = null; + this._childArmature = null; + } + var currentDisplay = null !== this._display ? this._display : this._rawDisplay; + if (currentDisplay !== prevDisplay) { + this._onUpdateDisplay(); + this._replaceDisplay(prevDisplay); + this._transformDirty = true; + this._visibleDirty = true; + this._blendModeDirty = true; + this._colorDirty = true; + } + currentDisplay !== this._rawDisplay && currentDisplay !== this._meshDisplay || this._updateFrame(); + if (this._childArmature !== prevChildArmature) { + if (null !== prevChildArmature) { + prevChildArmature._parent = null; + prevChildArmature.clock = null; + prevChildArmature.inheritAnimation && prevChildArmature.animation.reset(); + } + if (null !== this._childArmature) { + this._childArmature._parent = this; + this._childArmature.clock = this._armature.clock; + if (this._childArmature.inheritAnimation) { + if (0 === this._childArmature.cacheFrameRate) { + var cacheFrameRate = this._armature.cacheFrameRate; + 0 !== cacheFrameRate && (this._childArmature.cacheFrameRate = cacheFrameRate); + } + var actions = null; + if (null !== this._displayData && 1 === this._displayData.type) actions = this._displayData.actions; else if (this._displayIndex >= 0 && null !== this._rawDisplayDatas) { + var rawDisplayData = this._displayIndex < this._rawDisplayDatas.length ? this._rawDisplayDatas[this._displayIndex] : null; + null === rawDisplayData && (rawDisplayData = this._getDefaultRawDisplayData(this._displayIndex)); + null !== rawDisplayData && 1 === rawDisplayData.type && (actions = rawDisplayData.actions); + } + if (null !== actions && actions.length > 0) for (var _i = 0, actions_1 = actions; _i < actions_1.length; _i++) { + var action = actions_1[_i]; + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + dragonBones.EventObject.actionDataToInstance(action, eventObject, this._armature); + eventObject.slot = this; + this._armature._bufferAction(eventObject, false); + } else this._childArmature.animation.play(); + } + } + } + }; + Slot.prototype._updateGlobalTransformMatrix = function (isCache) { + var parentMatrix = 0 === this._parent._boneData.type ? this._parent.globalTransformMatrix : this._parent._getGlobalTransformMatrix(this.global.x, this.global.y); + this.globalTransformMatrix.copyFrom(this._localMatrix); + this.globalTransformMatrix.concat(parentMatrix); + isCache ? this.global.fromMatrix(this.globalTransformMatrix) : this._globalDirty = true; + }; + Slot.prototype._setDisplayIndex = function (value, isAnimation) { + void 0 === isAnimation && (isAnimation = false); + if (isAnimation) { + if (this._animationDisplayIndex === value) return false; + this._animationDisplayIndex = value; + } + if (this._displayIndex === value) return false; + this._displayIndex = value; + this._displayDirty = true; + this._updateDisplayData(); + return this._displayDirty; + }; + Slot.prototype._setZorder = function (value) { + this._zOrder === value; + this._zOrder = value; + this._zOrderDirty = true; + return this._zOrderDirty; + }; + Slot.prototype._setColor = function (value) { + this._colorTransform.copyFrom(value); + this._colorDirty = true; + return this._colorDirty; + }; + Slot.prototype._setDisplayList = function (value) { + if (null !== value && value.length > 0) { + this._displayList.length !== value.length && (this._displayList.length = value.length); + for (var i = 0, l = value.length; i < l; ++i) { + var eachDisplay = value[i]; + null !== eachDisplay && eachDisplay !== this._rawDisplay && eachDisplay !== this._meshDisplay && !(eachDisplay instanceof dragonBones.Armature) && this._displayList.indexOf(eachDisplay) < 0 && this._initDisplay(eachDisplay, true); + this._displayList[i] = eachDisplay; + } + } else this._displayList.length > 0 && (this._displayList.length = 0); + this._displayIndex >= 0 && this._displayIndex < this._displayList.length ? this._displayDirty = this._display !== this._displayList[this._displayIndex] : this._displayDirty = null !== this._display; + this._updateDisplayData(); + return this._displayDirty; + }; + Slot.prototype.init = function (slotData, armatureValue, rawDisplay, meshDisplay) { + if (null !== this._slotData) return; + this._slotData = slotData; + this._isFromCache = false; + this._visibleDirty = true; + this._blendModeDirty = true; + this._colorDirty = true; + this._blendMode = this._slotData.blendMode; + this._zOrder = this._slotData.zOrder; + this._colorTransform.copyFrom(this._slotData.color); + this._rawDisplay = rawDisplay; + this._meshDisplay = meshDisplay; + this._armature = armatureValue; + var slotParent = this._armature.getBone(this._slotData.parent.name); + null !== slotParent && (this._parent = slotParent); + this._armature._addSlot(this); + this._initDisplay(this._rawDisplay, false); + this._rawDisplay !== this._meshDisplay && this._initDisplay(this._meshDisplay, false); + this._onUpdateDisplay(); + this._addDisplay(); + }; + Slot.prototype.update = function (cacheFrameIndex) { + this._isFromCache = false; + if (this._displayDirty) { + this._displayDirty = false; + this._updateDisplay(); + this._transformDirty && (null !== this.origin ? this.global.copyFrom(this.origin).add(this.offset).toMatrix(this._localMatrix) : this.global.copyFrom(this.offset).toMatrix(this._localMatrix)); + } + if (this._zOrderDirty) { + this._zOrderDirty = false; + this._updateZOrder(); + } + if (cacheFrameIndex >= 0 && null !== this._cachedFrameIndices) { + var cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex]; + if (cachedFrameIndex >= 0 && this._cachedFrameIndex === cachedFrameIndex) this._transformDirty = false; else if (cachedFrameIndex >= 0) { + this._transformDirty = true; + this._cachedFrameIndex = cachedFrameIndex; + } else if (this._transformDirty || this._parent._childrenTransformDirty) { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } else if (this._cachedFrameIndex >= 0) { + this._transformDirty = false; + this._cachedFrameIndices[cacheFrameIndex] = this._cachedFrameIndex; + } else { + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + } else if (this._transformDirty || this._parent._childrenTransformDirty) { + cacheFrameIndex = -1; + this._transformDirty = true; + this._cachedFrameIndex = -1; + } + if (null === this._display) return; + if (this._visibleDirty) { + this._visibleDirty = false; + this._updateVisible(); + } + if (this._blendModeDirty) { + this._blendModeDirty = false; + this._updateBlendMode(); + } + if (this._colorDirty) { + this._colorDirty = false; + this._updateColor(); + } + if (null !== this._deformVertices && null !== this._deformVertices.verticesData && this._display === this._meshDisplay) { + var isSkinned = null !== this._deformVertices.verticesData.weight; + var isSurface = 0 !== this._parent._boneData.type; + if (this._deformVertices.verticesDirty || isSkinned && this._deformVertices.isBonesUpdate() || isSurface && this._parent._childrenTransformDirty) { + this._deformVertices.verticesDirty = false; + this._updateMesh(); + } + if (isSkinned || isSurface) return; + } + if (this._transformDirty) { + this._transformDirty = false; + if (this._cachedFrameIndex < 0) { + var isCache = cacheFrameIndex >= 0; + this._updateGlobalTransformMatrix(isCache); + isCache && null !== this._cachedFrameIndices && (this._cachedFrameIndex = this._cachedFrameIndices[cacheFrameIndex] = this._armature._armatureData.setCacheFrame(this.globalTransformMatrix, this.global)); + } else { + this._isFromCache = true; + this._armature._armatureData.getCacheFrame(this.globalTransformMatrix, this.global, this._cachedFrameIndex); + } + this._updateTransform(); + } + }; + Slot.prototype.updateTransformAndMatrix = function () { + if (this._transformDirty) { + this._transformDirty = false; + this._updateGlobalTransformMatrix(false); + } + }; + Slot.prototype.replaceDisplayData = function (value, displayIndex) { + void 0 === displayIndex && (displayIndex = -1); + displayIndex < 0 && (displayIndex = this._displayIndex < 0 ? 0 : this._displayIndex); + if (this._displayDatas.length <= displayIndex) { + this._displayDatas.length = displayIndex + 1; + for (var i = 0, l = this._displayDatas.length; i < l; ++i) this._displayDatas[i] || (this._displayDatas[i] = null); + } + this._displayDatas[displayIndex] = value; + }; + Slot.prototype.containsPoint = function (x, y) { + if (null === this._boundingBoxData) return false; + this.updateTransformAndMatrix(); + Slot._helpMatrix.copyFrom(this.globalTransformMatrix); + Slot._helpMatrix.invert(); + Slot._helpMatrix.transformPoint(x, y, Slot._helpPoint); + return this._boundingBoxData.containsPoint(Slot._helpPoint.x, Slot._helpPoint.y); + }; + Slot.prototype.intersectsSegment = function (xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians) { + void 0 === intersectionPointA && (intersectionPointA = null); + void 0 === intersectionPointB && (intersectionPointB = null); + void 0 === normalRadians && (normalRadians = null); + if (null === this._boundingBoxData) return 0; + this.updateTransformAndMatrix(); + Slot._helpMatrix.copyFrom(this.globalTransformMatrix); + Slot._helpMatrix.invert(); + Slot._helpMatrix.transformPoint(xA, yA, Slot._helpPoint); + xA = Slot._helpPoint.x; + yA = Slot._helpPoint.y; + Slot._helpMatrix.transformPoint(xB, yB, Slot._helpPoint); + xB = Slot._helpPoint.x; + yB = Slot._helpPoint.y; + var intersectionCount = this._boundingBoxData.intersectsSegment(xA, yA, xB, yB, intersectionPointA, intersectionPointB, normalRadians); + if (intersectionCount > 0) { + if (1 === intersectionCount || 2 === intersectionCount) if (null !== intersectionPointA) { + this.globalTransformMatrix.transformPoint(intersectionPointA.x, intersectionPointA.y, intersectionPointA); + if (null !== intersectionPointB) { + intersectionPointB.x = intersectionPointA.x; + intersectionPointB.y = intersectionPointA.y; + } + } else null !== intersectionPointB && this.globalTransformMatrix.transformPoint(intersectionPointB.x, intersectionPointB.y, intersectionPointB); else { + null !== intersectionPointA && this.globalTransformMatrix.transformPoint(intersectionPointA.x, intersectionPointA.y, intersectionPointA); + null !== intersectionPointB && this.globalTransformMatrix.transformPoint(intersectionPointB.x, intersectionPointB.y, intersectionPointB); + } + if (null !== normalRadians) { + this.globalTransformMatrix.transformPoint(Math.cos(normalRadians.x), Math.sin(normalRadians.x), Slot._helpPoint, true); + normalRadians.x = Math.atan2(Slot._helpPoint.y, Slot._helpPoint.x); + this.globalTransformMatrix.transformPoint(Math.cos(normalRadians.y), Math.sin(normalRadians.y), Slot._helpPoint, true); + normalRadians.y = Math.atan2(Slot._helpPoint.y, Slot._helpPoint.x); + } + } + return intersectionCount; + }; + Slot.prototype.invalidUpdate = function () { + this._displayDirty = true; + this._transformDirty = true; + }; + Object.defineProperty(Slot.prototype, "visible", { + get: function get() { + return this._visible; + }, + set: function set(value) { + if (this._visible === value) return; + this._visible = value; + this._updateVisible(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "displayIndex", { + get: function get() { + return this._displayIndex; + }, + set: function set(value) { + this._setDisplayIndex(value) && this.update(-1); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "name", { + get: function get() { + return this._slotData.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "displayList", { + get: function get() { + return this._displayList.concat(); + }, + set: function set(value) { + var backupDisplayList = this._displayList.concat(); + var disposeDisplayList = new Array(); + this._setDisplayList(value) && this.update(-1); + for (var _i = 0, backupDisplayList_1 = backupDisplayList; _i < backupDisplayList_1.length; _i++) { + var eachDisplay = backupDisplayList_1[_i]; + null !== eachDisplay && eachDisplay !== this._rawDisplay && eachDisplay !== this._meshDisplay && this._displayList.indexOf(eachDisplay) < 0 && disposeDisplayList.indexOf(eachDisplay) < 0 && disposeDisplayList.push(eachDisplay); + } + for (var _a = 0, disposeDisplayList_2 = disposeDisplayList; _a < disposeDisplayList_2.length; _a++) { + var eachDisplay = disposeDisplayList_2[_a]; + eachDisplay instanceof dragonBones.Armature || this._disposeDisplay(eachDisplay, true); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "slotData", { + get: function get() { + return this._slotData; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "rawDisplayDatas", { + get: function get() { + return this._rawDisplayDatas; + }, + set: function set(value) { + if (this._rawDisplayDatas === value) return; + this._displayDirty = true; + this._rawDisplayDatas = value; + if (null !== this._rawDisplayDatas) { + this._displayDatas.length = this._rawDisplayDatas.length; + for (var i = 0, l = this._displayDatas.length; i < l; ++i) { + var rawDisplayData = this._rawDisplayDatas[i]; + null === rawDisplayData && (rawDisplayData = this._getDefaultRawDisplayData(i)); + this._displayDatas[i] = rawDisplayData; + } + } else this._displayDatas.length = 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "displayData", { + get: function get() { + return this._displayData; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "boundingBoxData", { + get: function get() { + return this._boundingBoxData; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "rawDisplay", { + get: function get() { + return this._rawDisplay; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "meshDisplay", { + get: function get() { + return this._meshDisplay; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "display", { + get: function get() { + return this._display; + }, + set: function set(value) { + if (this._display === value) return; + var displayListLength = this._displayList.length; + this._displayIndex < 0 && 0 === displayListLength && (this._displayIndex = 0); + if (this._displayIndex < 0) return; + var replaceDisplayList = this.displayList; + displayListLength <= this._displayIndex && (replaceDisplayList.length = this._displayIndex + 1); + replaceDisplayList[this._displayIndex] = value; + this.displayList = replaceDisplayList; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "childArmature", { + get: function get() { + return this._childArmature; + }, + set: function set(value) { + if (this._childArmature === value) return; + this.display = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Slot.prototype, "parent", { + get: function get() { + return this._parent; + }, + enumerable: true, + configurable: true + }); + Slot.prototype.getDisplay = function () { + return this._display; + }; + Slot.prototype.setDisplay = function (value) { + this.display = value; + }; + return Slot; + })(dragonBones.TransformObject); + dragonBones.Slot = Slot; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Constraint = (function (_super) { + __extends(Constraint, _super); + function Constraint() { + return null !== _super && _super.apply(this, arguments) || this; + } + Constraint.prototype._onClear = function () { + this._armature = null; + this._target = null; + this._root = null; + this._bone = null; + }; + Object.defineProperty(Constraint.prototype, "name", { + get: function get() { + return this._constraintData.name; + }, + enumerable: true, + configurable: true + }); + Constraint._helpMatrix = new dragonBones.Matrix(); + Constraint._helpTransform = new dragonBones.Transform(); + Constraint._helpPoint = new dragonBones.Point(); + return Constraint; + })(dragonBones.BaseObject); + dragonBones.Constraint = Constraint; + var IKConstraint = (function (_super) { + __extends(IKConstraint, _super); + function IKConstraint() { + return null !== _super && _super.apply(this, arguments) || this; + } + IKConstraint.toString = function () { + return "[class dragonBones.IKConstraint]"; + }; + IKConstraint.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this._scaleEnabled = false; + this._bendPositive = false; + this._weight = 1; + this._constraintData = null; + }; + IKConstraint.prototype._computeA = function () { + var ikGlobal = this._target.global; + var global = this._root.global; + var globalTransformMatrix = this._root.globalTransformMatrix; + var radian = Math.atan2(ikGlobal.y - global.y, ikGlobal.x - global.x); + global.scaleX < 0 && (radian += Math.PI); + global.rotation += dragonBones.Transform.normalizeRadian(radian - global.rotation) * this._weight; + global.toMatrix(globalTransformMatrix); + }; + IKConstraint.prototype._computeB = function () { + var boneLength = this._bone._boneData.length; + var parent = this._root; + var ikGlobal = this._target.global; + var parentGlobal = parent.global; + var global = this._bone.global; + var globalTransformMatrix = this._bone.globalTransformMatrix; + var x = globalTransformMatrix.a * boneLength; + var y = globalTransformMatrix.b * boneLength; + var lLL = x * x + y * y; + var lL = Math.sqrt(lLL); + var dX = global.x - parentGlobal.x; + var dY = global.y - parentGlobal.y; + var lPP = dX * dX + dY * dY; + var lP = Math.sqrt(lPP); + var rawRadian = global.rotation; + var rawParentRadian = parentGlobal.rotation; + var rawRadianA = Math.atan2(dY, dX); + dX = ikGlobal.x - parentGlobal.x; + dY = ikGlobal.y - parentGlobal.y; + var lTT = dX * dX + dY * dY; + var lT = Math.sqrt(lTT); + var radianA = 0; + if (lL + lP <= lT || lT + lL <= lP || lT + lP <= lL) { + radianA = Math.atan2(ikGlobal.y - parentGlobal.y, ikGlobal.x - parentGlobal.x); + lL + lP <= lT || lP < lL && (radianA += Math.PI); + } else { + var h = (lPP - lLL + lTT) / (2 * lTT); + var r = Math.sqrt(lPP - h * h * lTT) / lT; + var hX = parentGlobal.x + dX * h; + var hY = parentGlobal.y + dY * h; + var rX = -dY * r; + var rY = dX * r; + var isPPR = false; + var parentParent = parent.parent; + if (null !== parentParent) { + var parentParentMatrix = parentParent.globalTransformMatrix; + isPPR = parentParentMatrix.a * parentParentMatrix.d - parentParentMatrix.b * parentParentMatrix.c < 0; + } + if (isPPR !== this._bendPositive) { + global.x = hX - rX; + global.y = hY - rY; + } else { + global.x = hX + rX; + global.y = hY + rY; + } + radianA = Math.atan2(global.y - parentGlobal.y, global.x - parentGlobal.x); + } + var dR = dragonBones.Transform.normalizeRadian(radianA - rawRadianA); + parentGlobal.rotation = rawParentRadian + dR * this._weight; + parentGlobal.toMatrix(parent.globalTransformMatrix); + var currentRadianA = rawRadianA + dR * this._weight; + global.x = parentGlobal.x + Math.cos(currentRadianA) * lP; + global.y = parentGlobal.y + Math.sin(currentRadianA) * lP; + var radianB = Math.atan2(ikGlobal.y - global.y, ikGlobal.x - global.x); + global.scaleX < 0 && (radianB += Math.PI); + global.rotation = parentGlobal.rotation + rawRadian - rawParentRadian + dragonBones.Transform.normalizeRadian(radianB - dR - rawRadian) * this._weight; + global.toMatrix(globalTransformMatrix); + }; + IKConstraint.prototype.init = function (constraintData, armature) { + if (null !== this._constraintData) return; + this._constraintData = constraintData; + this._armature = armature; + this._target = this._armature.getBone(this._constraintData.target.name); + this._root = this._armature.getBone(this._constraintData.root.name); + this._bone = null !== this._constraintData.bone ? this._armature.getBone(this._constraintData.bone.name) : null; + var ikConstraintData = this._constraintData; + this._scaleEnabled = ikConstraintData.scaleEnabled; + this._bendPositive = ikConstraintData.bendPositive; + this._weight = ikConstraintData.weight; + this._root._hasConstraint = true; + }; + IKConstraint.prototype.update = function () { + this._root.updateByConstraint(); + if (null !== this._bone) { + this._bone.updateByConstraint(); + this._computeB(); + } else this._computeA(); + }; + IKConstraint.prototype.invalidUpdate = function () { + this._root.invalidUpdate(); + null !== this._bone && this._bone.invalidUpdate(); + }; + return IKConstraint; + })(Constraint); + dragonBones.IKConstraint = IKConstraint; + var PathConstraint = (function (_super) { + __extends(PathConstraint, _super); + function PathConstraint() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._bones = []; + _this._spaces = []; + _this._positions = []; + _this._curves = []; + _this._boneLengths = []; + _this._pathGlobalVertices = []; + _this._segments = [10]; + return _this; + } + PathConstraint.toString = function () { + return "[class dragonBones.PathConstraint]"; + }; + PathConstraint.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.dirty = false; + this.pathOffset = 0; + this.position = 0; + this.spacing = 0; + this.rotateOffset = 0; + this.rotateMix = 1; + this.translateMix = 1; + this._pathSlot = null; + this._bones.length = 0; + this._spaces.length = 0; + this._positions.length = 0; + this._curves.length = 0; + this._boneLengths.length = 0; + this._pathGlobalVertices.length = 0; + }; + PathConstraint.prototype._updatePathVertices = function (verticesData) { + var armature = this._armature; + var dragonBonesData = armature.armatureData.parent; + var scale = armature.armatureData.scale; + var intArray = dragonBonesData.intArray; + var floatArray = dragonBonesData.floatArray; + var pathOffset = verticesData.offset; + var pathVertexCount = intArray[pathOffset + 0]; + var pathVertexOffset = intArray[pathOffset + 2]; + this._pathGlobalVertices.length = 2 * pathVertexCount; + var weightData = verticesData.weight; + if (null === weightData) { + var parentBone = this._pathSlot.parent; + parentBone.updateByConstraint(); + var matrix = parentBone.globalTransformMatrix; + for (var i = 0, iV_1 = pathVertexOffset; i < pathVertexCount; i += 2) { + var vx = floatArray[iV_1++] * scale; + var vy = floatArray[iV_1++] * scale; + var x = matrix.a * vx + matrix.c * vy + matrix.tx; + var y = matrix.b * vx + matrix.d * vy + matrix.ty; + this._pathGlobalVertices[i] = x; + this._pathGlobalVertices[i + 1] = y; + } + return; + } + var bones = this._pathSlot._deformVertices.bones; + var weightBoneCount = weightData.bones.length; + var weightOffset = weightData.offset; + var floatOffset = intArray[weightOffset + 1]; + var iV = floatOffset; + var iB = weightOffset + 2 + weightBoneCount; + for (var i = 0, iW = 0; i < pathVertexCount; i++) { + var vertexBoneCount = intArray[iB++]; + var xG = 0, yG = 0; + for (var ii = 0, ll = vertexBoneCount; ii < ll; ii++) { + var boneIndex = intArray[iB++]; + var bone = bones[boneIndex]; + if (null === bone) continue; + bone.updateByConstraint(); + var matrix = bone.globalTransformMatrix; + var weight = floatArray[iV++]; + var vx = floatArray[iV++] * scale; + var vy = floatArray[iV++] * scale; + xG += (matrix.a * vx + matrix.c * vy + matrix.tx) * weight; + yG += (matrix.b * vx + matrix.d * vy + matrix.ty) * weight; + } + this._pathGlobalVertices[iW++] = xG; + this._pathGlobalVertices[iW++] = yG; + } + }; + PathConstraint.prototype._computeVertices = function (start, count, offset, out) { + for (var i = offset, iW = start; i < count; i += 2) { + out[i] = this._pathGlobalVertices[iW++]; + out[i + 1] = this._pathGlobalVertices[iW++]; + } + }; + PathConstraint.prototype._computeBezierCurve = function (pathDisplayDta, spaceCount, tangents, percentPosition, percentSpacing) { + var armature = this._armature; + var intArray = armature.armatureData.parent.intArray; + var vertexCount = intArray[pathDisplayDta.vertices.offset + 0]; + var positions = this._positions; + var spaces = this._spaces; + var isClosed = pathDisplayDta.closed; + var curveVertices = Array(); + var verticesLength = 2 * vertexCount; + var curveCount = verticesLength / 6; + var preCurve = -1; + var position = this.position; + positions.length = 3 * spaceCount + 2; + var pathLength = 0; + if (!pathDisplayDta.constantSpeed) { + var lenghts = pathDisplayDta.curveLengths; + curveCount -= isClosed ? 1 : 2; + pathLength = lenghts[curveCount]; + percentPosition && (position *= pathLength); + if (percentSpacing) for (var i = 0; i < spaceCount; i++) spaces[i] *= pathLength; + curveVertices.length = 8; + for (var i = 0, o = 0, curve = 0; i < spaceCount; i++, o += 3) { + var space = spaces[i]; + position += space; + if (isClosed) { + position %= pathLength; + position < 0 && (position += pathLength); + curve = 0; + } else { + if (position < 0) continue; + if (position > pathLength) continue; + } + var percent = 0; + for (; ; curve++) { + var len = lenghts[curve]; + if (position > len) continue; + if (0 === curve) percent = position / len; else { + var preLen = lenghts[curve - 1]; + percent = (position - preLen) / (len - preLen); + } + break; + } + if (curve !== preCurve) { + preCurve = curve; + if (isClosed && curve === curveCount) { + this._computeVertices(verticesLength - 4, 4, 0, curveVertices); + this._computeVertices(0, 4, 4, curveVertices); + } else this._computeVertices(6 * curve + 2, 8, 0, curveVertices); + } + this.addCurvePosition(percent, curveVertices[0], curveVertices[1], curveVertices[2], curveVertices[3], curveVertices[4], curveVertices[5], curveVertices[6], curveVertices[7], positions, o, tangents); + } + return; + } + if (isClosed) { + verticesLength += 2; + curveVertices.length = vertexCount; + this._computeVertices(2, verticesLength - 4, 0, curveVertices); + this._computeVertices(0, 2, verticesLength - 4, curveVertices); + curveVertices[verticesLength - 2] = curveVertices[0]; + curveVertices[verticesLength - 1] = curveVertices[1]; + } else { + curveCount--; + verticesLength -= 4; + curveVertices.length = verticesLength; + this._computeVertices(2, verticesLength, 0, curveVertices); + } + var curves = new Array(curveCount); + pathLength = 0; + var x1 = curveVertices[0], y1 = curveVertices[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = curveVertices[w]; + cy1 = curveVertices[w + 1]; + cx2 = curveVertices[w + 2]; + cy2 = curveVertices[w + 3]; + x2 = curveVertices[w + 4]; + y2 = curveVertices[w + 5]; + tmpx = .1875 * (x1 - 2 * cx1 + cx2); + tmpy = .1875 * (y1 - 2 * cy1 + cy2); + dddfx = .09375 * (3 * (cx1 - cx2) - x1 + x2); + dddfy = .09375 * (3 * (cy1 - cy2) - y1 + y2); + ddfx = 2 * tmpx + dddfx; + ddfy = 2 * tmpy + dddfy; + dfx = .75 * (cx1 - x1) + tmpx + .16666667 * dddfx; + dfy = .75 * (cy1 - y1) + tmpy + .16666667 * dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + percentPosition && (position *= pathLength); + if (percentSpacing) for (var i = 0; i < spaceCount; i++) spaces[i] *= pathLength; + var segments = this._segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spaceCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (isClosed) { + p %= pathLength; + p < 0 && (p += pathLength); + curve = 0; + } else { + if (p < 0) continue; + if (p > pathLength) continue; + } + for (; ; curve++) { + var length_1 = curves[curve]; + if (p > length_1) continue; + if (0 === curve) p /= length_1; else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_1 - prev); + } + break; + } + if (curve !== preCurve) { + preCurve = curve; + var ii = 6 * curve; + x1 = curveVertices[ii]; + y1 = curveVertices[ii + 1]; + cx1 = curveVertices[ii + 2]; + cy1 = curveVertices[ii + 3]; + cx2 = curveVertices[ii + 4]; + cy2 = curveVertices[ii + 5]; + x2 = curveVertices[ii + 6]; + y2 = curveVertices[ii + 7]; + tmpx = .03 * (x1 - 2 * cx1 + cx2); + tmpy = .03 * (y1 - 2 * cy1 + cy2); + dddfx = .006 * (3 * (cx1 - cx2) - x1 + x2); + dddfy = .006 * (3 * (cy1 - cy2) - y1 + y2); + ddfx = 2 * tmpx + dddfx; + ddfy = 2 * tmpy + dddfy; + dfx = .3 * (cx1 - x1) + tmpx + .16666667 * dddfx; + dfy = .3 * (cy1 - y1) + tmpy + .16666667 * dddfy; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + p *= curveLength; + for (; ; segment++) { + var length_2 = segments[segment]; + if (p > length_2) continue; + if (0 === segment) p /= length_2; else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_2 - prev); + } + break; + } + this.addCurvePosition(.1 * p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, positions, o, tangents); + } + }; + PathConstraint.prototype.addCurvePosition = function (t, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, offset, tangents) { + if (0 === t) { + out[offset] = x1; + out[offset + 1] = y1; + out[offset + 2] = 0; + return; + } + if (1 === t) { + out[offset] = x2; + out[offset + 1] = y2; + out[offset + 2] = 0; + return; + } + var mt = 1 - t; + var mt2 = mt * mt; + var t2 = t * t; + var a = mt2 * mt; + var b = mt2 * t * 3; + var c = mt * t2 * 3; + var d = t * t2; + var x = a * x1 + b * cx1 + c * cx2 + d * x2; + var y = a * y1 + b * cy1 + c * cy2 + d * y2; + out[offset] = x; + out[offset + 1] = y; + out[offset + 2] = tangents ? Math.atan2(y - (a * y1 + b * cy1 + c * cy2), x - (a * x1 + b * cx1 + c * cx2)) : 0; + }; + PathConstraint.prototype.init = function (constraintData, armature) { + this._constraintData = constraintData; + this._armature = armature; + var data = constraintData; + this.pathOffset = data.pathDisplayData.vertices.offset; + this.position = data.position; + this.spacing = data.spacing; + this.rotateOffset = data.rotateOffset; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this._root = this._armature.getBone(data.root.name); + this._target = this._armature.getBone(data.target.name); + this._pathSlot = this._armature.getSlot(data.pathSlot.name); + for (var i = 0, l = data.bones.length; i < l; i++) { + var bone = this._armature.getBone(data.bones[i].name); + null !== bone && this._bones.push(bone); + } + 2 === data.rotateMode && (this._boneLengths.length = this._bones.length); + this._root._hasConstraint = true; + }; + PathConstraint.prototype.update = function () { + var pathSlot = this._pathSlot; + if (null === pathSlot._deformVertices || null === pathSlot._deformVertices.verticesData || pathSlot._deformVertices.verticesData.offset !== this.pathOffset) return; + var constraintData = this._constraintData; + var pathDisplayData = pathSlot._displayData; + var isPathVerticeDirty = false; + var deformVertices = pathSlot._deformVertices; + if (this._root._childrenTransformDirty) { + this._updatePathVertices(pathDisplayData.vertices); + isPathVerticeDirty = true; + } else if (null !== deformVertices && (deformVertices.verticesDirty || deformVertices.isBonesUpdate())) { + this._updatePathVertices(pathDisplayData.vertices); + deformVertices.verticesDirty = false; + isPathVerticeDirty = true; + } + if (!isPathVerticeDirty && !this.dirty) return; + var positionMode = constraintData.positionMode; + var spacingMode = constraintData.spacingMode; + var rotateMode = constraintData.rotateMode; + var bones = this._bones; + var isLengthMode = 0 === spacingMode; + var isChainScaleMode = 2 === rotateMode; + var isTangentMode = 0 === rotateMode; + var boneCount = bones.length; + var spacesCount = isTangentMode ? boneCount : boneCount + 1; + var spacing = this.spacing; + var spaces = this._spaces; + spaces.length = spacesCount; + if (isChainScaleMode || isLengthMode) { + spaces[0] = 0; + for (var i = 0, l = spacesCount - 1; i < l; i++) { + var bone = bones[i]; + bone.updateByConstraint(); + var boneLength = bone._boneData.length; + var matrix = bone.globalTransformMatrix; + var x = boneLength * matrix.a; + var y = boneLength * matrix.b; + var len = Math.sqrt(x * x + y * y); + isChainScaleMode && (this._boneLengths[i] = len); + spaces[i + 1] = (boneLength + spacing) * len / boneLength; + } + } else for (var i = 0; i < spacesCount; i++) spaces[i] = spacing; + this._computeBezierCurve(pathDisplayData, spacesCount, isTangentMode, 1 === positionMode, 2 === spacingMode); + var positions = this._positions; + var rotateOffset = this.rotateOffset; + var boneX = positions[0], boneY = positions[1]; + var tip; + if (0 === rotateOffset) tip = 1 === rotateMode; else { + tip = false; + var bone = pathSlot.parent; + if (null !== bone) { + var matrix = bone.globalTransformMatrix; + rotateOffset *= matrix.a * matrix.d - matrix.b * matrix.c > 0 ? dragonBones.Transform.DEG_RAD : -dragonBones.Transform.DEG_RAD; + } + } + var rotateMix = this.rotateMix; + var translateMix = this.translateMix; + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.updateByConstraint(); + var matrix = bone.globalTransformMatrix; + matrix.tx += (boneX - matrix.tx) * translateMix; + matrix.ty += (boneY - matrix.ty) * translateMix; + var x = positions[p], y = positions[p + 1]; + var dx = x - boneX, dy = y - boneY; + if (isChainScaleMode) { + var lenght = this._boneLengths[i]; + var s = (Math.sqrt(dx * dx + dy * dy) / lenght - 1) * rotateMix + 1; + matrix.a *= s; + matrix.b *= s; + } + boneX = x; + boneY = y; + if (rotateMix > 0) { + var a = matrix.a, b = matrix.b, c = matrix.c, d = matrix.d, r = void 0, cos = void 0, sin = void 0; + r = isTangentMode ? positions[p - 1] : Math.atan2(dy, dx); + r -= Math.atan2(b, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone._boneData.length; + boneX += (length_3 * (cos * a - sin * b) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * b) - dy) * rotateMix; + } else r += rotateOffset; + r > dragonBones.Transform.PI ? r -= dragonBones.Transform.PI_D : r < -dragonBones.Transform.PI && (r += dragonBones.Transform.PI_D); + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + matrix.a = cos * a - sin * b; + matrix.b = sin * a + cos * b; + matrix.c = cos * c - sin * d; + matrix.d = sin * c + cos * d; + } + bone.global.fromMatrix(matrix); + } + this.dirty = false; + }; + PathConstraint.prototype.invalidUpdate = function () { }; + return PathConstraint; + })(Constraint); + dragonBones.PathConstraint = PathConstraint; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var WorldClock = (function () { + function WorldClock(time) { + void 0 === time && (time = 0); + this.time = 0; + this.timeScale = 1; + this._systemTime = 0; + this._animatebles = []; + this._clock = null; + this.time = time; + this._systemTime = .001 * new Date().getTime(); + } + WorldClock.prototype.advanceTime = function (passedTime) { + passedTime !== passedTime && (passedTime = 0); + var currentTime = .001 * Date.now(); + passedTime < 0 && (passedTime = currentTime - this._systemTime); + this._systemTime = currentTime; + 1 !== this.timeScale && (passedTime *= this.timeScale); + if (0 === passedTime) return; + passedTime < 0 ? this.time -= passedTime : this.time += passedTime; + var i = 0, r = 0, l = this._animatebles.length; + for (; i < l; ++i) { + var animatable = this._animatebles[i]; + if (null !== animatable) { + if (r > 0) { + this._animatebles[i - r] = animatable; + this._animatebles[i] = null; + } + animatable.advanceTime(passedTime); + } else r++; + } + if (r > 0) { + l = this._animatebles.length; + for (; i < l; ++i) { + var animateble = this._animatebles[i]; + null !== animateble ? this._animatebles[i - r] = animateble : r++; + } + this._animatebles.length -= r; + } + }; + WorldClock.prototype.contains = function (value) { + if (value === this) return false; + var ancestor = value; + while (ancestor !== this && null !== ancestor) ancestor = ancestor.clock; + return ancestor === this; + }; + WorldClock.prototype.add = function (value) { + if (this._animatebles.indexOf(value) < 0) { + this._animatebles.push(value); + value.clock = this; + } + }; + WorldClock.prototype.remove = function (value) { + var index = this._animatebles.indexOf(value); + if (index >= 0) { + this._animatebles[index] = null; + value.clock = null; + } + }; + WorldClock.prototype.clear = function () { + for (var _i = 0, _a = this._animatebles; _i < _a.length; _i++) { + var animatable = _a[_i]; + null !== animatable && (animatable.clock = null); + } + }; + Object.defineProperty(WorldClock.prototype, "clock", { + get: function get() { + return this._clock; + }, + set: function set(value) { + if (this._clock === value) return; + null !== this._clock && this._clock.remove(this); + this._clock = value; + null !== this._clock && this._clock.add(this); + }, + enumerable: true, + configurable: true + }); + WorldClock.clock = new WorldClock(); + return WorldClock; + })(); + dragonBones.WorldClock = WorldClock; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var Animation = (function (_super) { + __extends(Animation, _super); + function Animation() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._animationNames = []; + _this._animationStates = []; + _this._animations = {}; + _this._animationConfig = null; + return _this; + } + Animation.toString = function () { + return "[class dragonBones.Animation]"; + }; + Animation.prototype._onClear = function () { + for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + animationState.returnToPool(); + } + for (var k in this._animations) delete this._animations[k]; + null !== this._animationConfig && this._animationConfig.returnToPool(); + this.timeScale = 1; + this._lockUpdate = false; + this._animationDirty = false; + this._inheritTimeScale = 1; + this._animationNames.length = 0; + this._animationStates.length = 0; + this._armature = null; + this._animationConfig = null; + this._lastAnimationState = null; + }; + Animation.prototype._fadeOut = function (animationConfig) { + switch (animationConfig.fadeOutMode) { + case 1: + for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + if (null !== animationState._parent) continue; + animationState.layer === animationConfig.layer && animationState.fadeOut(animationConfig.fadeOutTime, animationConfig.pauseFadeOut); + } + break; + + case 2: + for (var _b = 0, _c = this._animationStates; _b < _c.length; _b++) { + var animationState = _c[_b]; + if (null !== animationState._parent) continue; + animationState.group === animationConfig.group && animationState.fadeOut(animationConfig.fadeOutTime, animationConfig.pauseFadeOut); + } + break; + + case 3: + for (var _d = 0, _e = this._animationStates; _d < _e.length; _d++) { + var animationState = _e[_d]; + if (null !== animationState._parent) continue; + animationState.layer === animationConfig.layer && animationState.group === animationConfig.group && animationState.fadeOut(animationConfig.fadeOutTime, animationConfig.pauseFadeOut); + } + break; + + case 4: + for (var _f = 0, _g = this._animationStates; _f < _g.length; _f++) { + var animationState = _g[_f]; + if (null !== animationState._parent) continue; + animationState.fadeOut(animationConfig.fadeOutTime, animationConfig.pauseFadeOut); + } + } + }; + Animation.prototype.init = function (armature) { + if (null !== this._armature) return; + this._armature = armature; + this._animationConfig = dragonBones.BaseObject.borrowObject(dragonBones.AnimationConfig); + }; + Animation.prototype.advanceTime = function (passedTime) { + passedTime < 0 && (passedTime = -passedTime); + this._armature.inheritAnimation && null !== this._armature._parent ? this._inheritTimeScale = this._armature._parent._armature.animation._inheritTimeScale * this.timeScale : this._inheritTimeScale = this.timeScale; + 1 !== this._inheritTimeScale && (passedTime *= this._inheritTimeScale); + var animationStateCount = this._animationStates.length; + if (1 === animationStateCount) { + var animationState = this._animationStates[0]; + if (animationState._fadeState > 0 && animationState._subFadeState > 0) { + this._armature._dragonBones.bufferObject(animationState); + this._animationStates.length = 0; + this._lastAnimationState = null; + } else { + var animationData = animationState._animationData; + var cacheFrameRate = animationData.cacheFrameRate; + if (this._animationDirty && cacheFrameRate > 0) { + this._animationDirty = false; + for (var _i = 0, _a = this._armature.getBones(); _i < _a.length; _i++) { + var bone = _a[_i]; + bone._cachedFrameIndices = animationData.getBoneCachedFrameIndices(bone.name); + } + for (var _b = 0, _c = this._armature.getSlots(); _b < _c.length; _b++) { + var slot = _c[_b]; + var rawDisplayDatas = slot.rawDisplayDatas; + if (null !== rawDisplayDatas && rawDisplayDatas.length > 0) { + var rawDsplayData = rawDisplayDatas[0]; + if (null !== rawDsplayData && rawDsplayData.parent === this._armature.armatureData.defaultSkin) { + slot._cachedFrameIndices = animationData.getSlotCachedFrameIndices(slot.name); + continue; + } + } + slot._cachedFrameIndices = null; + } + } + animationState.advanceTime(passedTime, cacheFrameRate); + } + } else if (animationStateCount > 1) { + for (var i = 0, r = 0; i < animationStateCount; ++i) { + var animationState = this._animationStates[i]; + if (animationState._fadeState > 0 && animationState._subFadeState > 0) { + r++; + this._armature._dragonBones.bufferObject(animationState); + this._animationDirty = true; + this._lastAnimationState === animationState && (this._lastAnimationState = null); + } else { + r > 0 && (this._animationStates[i - r] = animationState); + animationState.advanceTime(passedTime, 0); + } + if (i === animationStateCount - 1 && r > 0) { + this._animationStates.length -= r; + null === this._lastAnimationState && this._animationStates.length > 0 && (this._lastAnimationState = this._animationStates[this._animationStates.length - 1]); + } + } + this._armature._cacheFrameIndex = -1; + } else this._armature._cacheFrameIndex = -1; + }; + Animation.prototype.reset = function () { + for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + animationState.returnToPool(); + } + this._animationDirty = false; + this._animationConfig.clear(); + this._animationStates.length = 0; + this._lastAnimationState = null; + }; + Animation.prototype.stop = function (animationName) { + void 0 === animationName && (animationName = null); + if (null !== animationName) { + var animationState = this.getState(animationName); + null !== animationState && animationState.stop(); + } else for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + animationState.stop(); + } + }; + Animation.prototype.playConfig = function (animationConfig) { + var animationName = animationConfig.animation; + if (!(animationName in this._animations)) { + console.warn("Non-existent animation.\n", "DragonBones name: " + this._armature.armatureData.parent.name, "Armature name: " + this._armature.name, "Animation name: " + animationName); + return null; + } + var animationData = this._animations[animationName]; + if (5 === animationConfig.fadeOutMode) for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState_1 = _a[_i]; + if (animationState_1._animationData === animationData) return animationState_1; + } + 0 === this._animationStates.length ? animationConfig.fadeInTime = 0 : animationConfig.fadeInTime < 0 && (animationConfig.fadeInTime = animationData.fadeInTime); + animationConfig.fadeOutTime < 0 && (animationConfig.fadeOutTime = animationConfig.fadeInTime); + animationConfig.timeScale <= -100 && (animationConfig.timeScale = 1 / animationData.scale); + if (animationData.frameCount > 1) { + if (animationConfig.position < 0) { + animationConfig.position %= animationData.duration; + animationConfig.position = animationData.duration - animationConfig.position; + } else animationConfig.position === animationData.duration ? animationConfig.position -= 1e-6 : animationConfig.position > animationData.duration && (animationConfig.position %= animationData.duration); + animationConfig.duration > 0 && animationConfig.position + animationConfig.duration > animationData.duration && (animationConfig.duration = animationData.duration - animationConfig.position); + animationConfig.playTimes < 0 && (animationConfig.playTimes = animationData.playTimes); + } else { + animationConfig.playTimes = 1; + animationConfig.position = 0; + animationConfig.duration > 0 && (animationConfig.duration = 0); + } + 0 === animationConfig.duration && (animationConfig.duration = -1); + this._fadeOut(animationConfig); + var animationState = dragonBones.BaseObject.borrowObject(dragonBones.AnimationState); + animationState.init(this._armature, animationData, animationConfig); + this._animationDirty = true; + this._armature._cacheFrameIndex = -1; + if (this._animationStates.length > 0) { + var added = false; + for (var i = 0, l = this._animationStates.length; i < l; ++i) { + if (animationState.layer > this._animationStates[i].layer) { + added = true; + this._animationStates.splice(i, 0, animationState); + break; + } + if (i !== l - 1 && animationState.layer > this._animationStates[i + 1].layer) { + added = true; + this._animationStates.splice(i + 1, 0, animationState); + break; + } + } + added || this._animationStates.push(animationState); + } else this._animationStates.push(animationState); + for (var _b = 0, _c = this._armature.getSlots(); _b < _c.length; _b++) { + var slot = _c[_b]; + var childArmature = slot.childArmature; + null !== childArmature && childArmature.inheritAnimation && childArmature.animation.hasAnimation(animationName) && null === childArmature.animation.getState(animationName) && childArmature.animation.fadeIn(animationName); + } + var isLocked = false; + for (var k in animationData.animationTimelines) { + if (!this._lockUpdate) { + isLocked = true; + this._lockUpdate = true; + } + var childAnimatiionState = this.fadeIn(k, animationConfig.fadeInTime, 1, animationState.layer, null, 0); + if (null !== childAnimatiionState) { + childAnimatiionState.resetToPose = false; + childAnimatiionState._parent = animationState; + childAnimatiionState.stop(); + } + } + isLocked && (this._lockUpdate = false); + if (!this._lockUpdate) { + animationConfig.fadeInTime <= 0 && this._armature.advanceTime(0); + this._lastAnimationState = animationState; + } + return animationState; + }; + Animation.prototype.play = function (animationName, playTimes) { + void 0 === animationName && (animationName = null); + void 0 === playTimes && (playTimes = -1); + this._animationConfig.clear(); + this._animationConfig.resetToPose = true; + this._animationConfig.playTimes = playTimes; + this._animationConfig.fadeInTime = 0; + this._animationConfig.animation = null !== animationName ? animationName : ""; + if (null !== animationName && animationName.length > 0) this.playConfig(this._animationConfig); else if (null === this._lastAnimationState) { + var defaultAnimation = this._armature.armatureData.defaultAnimation; + if (null !== defaultAnimation) { + this._animationConfig.animation = defaultAnimation.name; + this.playConfig(this._animationConfig); + } + } else if (this._lastAnimationState.isPlaying || this._lastAnimationState.isCompleted) { + this._animationConfig.animation = this._lastAnimationState.name; + this.playConfig(this._animationConfig); + } else this._lastAnimationState.play(); + return this._lastAnimationState; + }; + Animation.prototype.fadeIn = function (animationName, fadeInTime, playTimes, layer, group, fadeOutMode) { + void 0 === fadeInTime && (fadeInTime = -1); + void 0 === playTimes && (playTimes = -1); + void 0 === layer && (layer = 0); + void 0 === group && (group = null); + void 0 === fadeOutMode && (fadeOutMode = 3); + this._animationConfig.clear(); + this._animationConfig.fadeOutMode = fadeOutMode; + this._animationConfig.playTimes = playTimes; + this._animationConfig.layer = layer; + this._animationConfig.fadeInTime = fadeInTime; + this._animationConfig.animation = animationName; + this._animationConfig.group = null !== group ? group : ""; + return this.playConfig(this._animationConfig); + }; + Animation.prototype.gotoAndPlayByTime = function (animationName, time, playTimes) { + void 0 === time && (time = 0); + void 0 === playTimes && (playTimes = -1); + this._animationConfig.clear(); + this._animationConfig.resetToPose = true; + this._animationConfig.playTimes = playTimes; + this._animationConfig.position = time; + this._animationConfig.fadeInTime = 0; + this._animationConfig.animation = animationName; + return this.playConfig(this._animationConfig); + }; + Animation.prototype.gotoAndPlayByFrame = function (animationName, frame, playTimes) { + void 0 === frame && (frame = 0); + void 0 === playTimes && (playTimes = -1); + this._animationConfig.clear(); + this._animationConfig.resetToPose = true; + this._animationConfig.playTimes = playTimes; + this._animationConfig.fadeInTime = 0; + this._animationConfig.animation = animationName; + var animationData = animationName in this._animations ? this._animations[animationName] : null; + null !== animationData && (this._animationConfig.position = animationData.duration * frame / animationData.frameCount); + return this.playConfig(this._animationConfig); + }; + Animation.prototype.gotoAndPlayByProgress = function (animationName, progress, playTimes) { + void 0 === progress && (progress = 0); + void 0 === playTimes && (playTimes = -1); + this._animationConfig.clear(); + this._animationConfig.resetToPose = true; + this._animationConfig.playTimes = playTimes; + this._animationConfig.fadeInTime = 0; + this._animationConfig.animation = animationName; + var animationData = animationName in this._animations ? this._animations[animationName] : null; + null !== animationData && (this._animationConfig.position = animationData.duration * (progress > 0 ? progress : 0)); + return this.playConfig(this._animationConfig); + }; + Animation.prototype.gotoAndStopByTime = function (animationName, time) { + void 0 === time && (time = 0); + var animationState = this.gotoAndPlayByTime(animationName, time, 1); + null !== animationState && animationState.stop(); + return animationState; + }; + Animation.prototype.gotoAndStopByFrame = function (animationName, frame) { + void 0 === frame && (frame = 0); + var animationState = this.gotoAndPlayByFrame(animationName, frame, 1); + null !== animationState && animationState.stop(); + return animationState; + }; + Animation.prototype.gotoAndStopByProgress = function (animationName, progress) { + void 0 === progress && (progress = 0); + var animationState = this.gotoAndPlayByProgress(animationName, progress, 1); + null !== animationState && animationState.stop(); + return animationState; + }; + Animation.prototype.getState = function (animationName) { + var i = this._animationStates.length; + while (i--) { + var animationState = this._animationStates[i]; + if (animationState.name === animationName) return animationState; + } + return null; + }; + Animation.prototype.hasAnimation = function (animationName) { + return animationName in this._animations; + }; + Animation.prototype.getStates = function () { + return this._animationStates; + }; + Object.defineProperty(Animation.prototype, "isPlaying", { + get: function get() { + for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + if (animationState.isPlaying) return true; + } + return false; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "isCompleted", { + get: function get() { + for (var _i = 0, _a = this._animationStates; _i < _a.length; _i++) { + var animationState = _a[_i]; + if (!animationState.isCompleted) return false; + } + return this._animationStates.length > 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "lastAnimationName", { + get: function get() { + return null !== this._lastAnimationState ? this._lastAnimationState.name : ""; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "animationNames", { + get: function get() { + return this._animationNames; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "animations", { + get: function get() { + return this._animations; + }, + set: function set(value) { + if (this._animations === value) return; + this._animationNames.length = 0; + for (var k in this._animations) delete this._animations[k]; + for (var k in value) { + this._animationNames.push(k); + this._animations[k] = value[k]; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "animationConfig", { + get: function get() { + this._animationConfig.clear(); + return this._animationConfig; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "lastAnimationState", { + get: function get() { + return this._lastAnimationState; + }, + enumerable: true, + configurable: true + }); + Animation.prototype.gotoAndPlay = function (animationName, fadeInTime, duration, playTimes, layer, group, fadeOutMode, pauseFadeOut, pauseFadeIn) { + void 0 === fadeInTime && (fadeInTime = -1); + void 0 === duration && (duration = -1); + void 0 === playTimes && (playTimes = -1); + void 0 === layer && (layer = 0); + void 0 === group && (group = null); + void 0 === fadeOutMode && (fadeOutMode = 3); + void 0 === pauseFadeOut && (pauseFadeOut = true); + void 0 === pauseFadeIn && (pauseFadeIn = true); + console.warn("Deprecated."); + pauseFadeOut; + pauseFadeIn; + this._animationConfig.clear(); + this._animationConfig.resetToPose = true; + this._animationConfig.fadeOutMode = fadeOutMode; + this._animationConfig.playTimes = playTimes; + this._animationConfig.layer = layer; + this._animationConfig.fadeInTime = fadeInTime; + this._animationConfig.animation = animationName; + this._animationConfig.group = null !== group ? group : ""; + var animationData = this._animations[animationName]; + animationData && duration > 0 && (this._animationConfig.timeScale = animationData.duration / duration); + return this.playConfig(this._animationConfig); + }; + Animation.prototype.gotoAndStop = function (animationName, time) { + void 0 === time && (time = 0); + console.warn("Deprecated."); + return this.gotoAndStopByTime(animationName, time); + }; + Object.defineProperty(Animation.prototype, "animationList", { + get: function get() { + console.warn("Deprecated."); + return this._animationNames; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Animation.prototype, "animationDataList", { + get: function get() { + console.warn("Deprecated."); + var list = []; + for (var i = 0, l = this._animationNames.length; i < l; ++i) list.push(this._animations[this._animationNames[i]]); + return list; + }, + enumerable: true, + configurable: true + }); + return Animation; + })(dragonBones.BaseObject); + dragonBones.Animation = Animation; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var AnimationState = (function (_super) { + __extends(AnimationState, _super); + function AnimationState() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._blendState = new BlendState(); + _this._boneMask = []; + _this._boneTimelines = []; + _this._surfaceTimelines = []; + _this._slotTimelines = []; + _this._constraintTimelines = []; + _this._animationTimelines = []; + _this._poseTimelines = []; + _this._bonePoses = {}; + _this._actionTimeline = null; + _this._zOrderTimeline = null; + _this._parent = null; + return _this; + } + AnimationState.toString = function () { + return "[class dragonBones.AnimationState]"; + }; + AnimationState.prototype._onClear = function () { + for (var _i = 0, _a = this._boneTimelines; _i < _a.length; _i++) { + var timeline = _a[_i]; + timeline.returnToPool(); + } + for (var _b = 0, _c = this._surfaceTimelines; _b < _c.length; _b++) { + var timeline = _c[_b]; + timeline.returnToPool(); + } + for (var _d = 0, _e = this._slotTimelines; _d < _e.length; _d++) { + var timeline = _e[_d]; + timeline.returnToPool(); + } + for (var _f = 0, _g = this._constraintTimelines; _f < _g.length; _f++) { + var timeline = _g[_f]; + timeline.returnToPool(); + } + for (var _h = 0, _j = this._animationTimelines; _h < _j.length; _h++) { + var timeline = _j[_h]; + timeline.returnToPool(); + } + for (var k in this._bonePoses) { + this._bonePoses[k].returnToPool(); + delete this._bonePoses[k]; + } + null !== this._actionTimeline && this._actionTimeline.returnToPool(); + null !== this._zOrderTimeline && this._zOrderTimeline.returnToPool(); + this.actionEnabled = false; + this.additiveBlending = false; + this.displayControl = false; + this.resetToPose = false; + this.playTimes = 1; + this.layer = 0; + this.timeScale = 1; + this.weight = 1; + this.autoFadeOutTime = 0; + this.fadeTotalTime = 0; + this.name = ""; + this.group = ""; + this._timelineDirty = 2; + this._playheadState = 0; + this._fadeState = -1; + this._subFadeState = -1; + this._position = 0; + this._duration = 0; + this._fadeTime = 0; + this._time = 0; + this._fadeProgress = 0; + this._weightResult = 0; + this._blendState.clear(); + this._boneMask.length = 0; + this._boneTimelines.length = 0; + this._surfaceTimelines.length = 0; + this._slotTimelines.length = 0; + this._constraintTimelines.length = 0; + this._animationTimelines.length = 0; + this._poseTimelines.length = 0; + this._animationData = null; + this._armature = null; + this._actionTimeline = null; + this._zOrderTimeline = null; + this._parent = null; + }; + AnimationState.prototype._updateTimelines = function () { + for (var _i = 0, _a = this._armature._constraints; _i < _a.length; _i++) { + var constraint = _a[_i]; + var timelineDatas = this._animationData.getConstraintTimelines(constraint.name); + if (null !== timelineDatas) for (var _b = 0, timelineDatas_1 = timelineDatas; _b < timelineDatas_1.length; _b++) { + var timelineData = timelineDatas_1[_b]; + switch (timelineData.type) { + case 30: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.IKConstraintTimelineState); + timeline.constraint = constraint; + timeline.init(this._armature, this, timelineData); + this._constraintTimelines.push(timeline); + } + } else if (this.resetToPose) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.IKConstraintTimelineState); + timeline.constraint = constraint; + timeline.init(this._armature, this, null); + this._constraintTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + } + for (var _c = 0, _d = this._armature.animation.getStates(); _c < _d.length; _c++) { + var animationState = _d[_c]; + if (animationState._parent !== this) continue; + var timelineDatas = this._animationData.getAnimationTimelines(animationState.name); + if (null === timelineDatas) continue; + for (var _e = 0, timelineDatas_2 = timelineDatas; _e < timelineDatas_2.length; _e++) { + var timelineData = timelineDatas_2[_e]; + switch (timelineData.type) { + case 40: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.AnimationTimelineState); + timeline.animationState = animationState; + timeline.init(this._armature, this, timelineData); + this._animationTimelines.push(timeline); + } + } + } + }; + AnimationState.prototype._updateBoneAndSlotTimelines = function () { + var boneTimelines = {}; + for (var _i = 0, _a = this._boneTimelines; _i < _a.length; _i++) { + var timeline = _a[_i]; + var timelineName = timeline.bone.name; + timelineName in boneTimelines || (boneTimelines[timelineName] = []); + boneTimelines[timelineName].push(timeline); + } + for (var _b = 0, _c = this._armature.getBones(); _b < _c.length; _b++) { + var bone = _c[_b]; + var timelineName = bone.name; + if (!this.containsBoneMask(timelineName)) continue; + if (timelineName in boneTimelines) delete boneTimelines[timelineName]; else if (0 === bone._boneData.type) { + var timelineDatas = this._animationData.getBoneTimelines(timelineName); + var bonePose = timelineName in this._bonePoses ? this._bonePoses[timelineName] : this._bonePoses[timelineName] = dragonBones.BaseObject.borrowObject(BonePose); + if (null !== timelineDatas) for (var _d = 0, timelineDatas_3 = timelineDatas; _d < timelineDatas_3.length; _d++) { + var timelineData = timelineDatas_3[_d]; + switch (timelineData.type) { + case 10: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.BoneAllTimelineState); + timeline.bone = bone; + timeline.bonePose = bonePose; + timeline.init(this._armature, this, timelineData); + this._boneTimelines.push(timeline); + break; + + case 11: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.BoneTranslateTimelineState); + timeline.bone = bone; + timeline.bonePose = bonePose; + timeline.init(this._armature, this, timelineData); + this._boneTimelines.push(timeline); + break; + + case 12: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.BoneRotateTimelineState); + timeline.bone = bone; + timeline.bonePose = bonePose; + timeline.init(this._armature, this, timelineData); + this._boneTimelines.push(timeline); + break; + + case 13: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.BoneScaleTimelineState); + timeline.bone = bone; + timeline.bonePose = bonePose; + timeline.init(this._armature, this, timelineData); + this._boneTimelines.push(timeline); + } + } else if (this.resetToPose) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.BoneAllTimelineState); + timeline.bone = bone; + timeline.bonePose = bonePose; + timeline.init(this._armature, this, null); + this._boneTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + } else if (1 === bone._boneData.type) { + var timelineDatas = this._animationData.getSurfaceTimelines(timelineName); + if (null !== timelineDatas) for (var _e = 0, timelineDatas_4 = timelineDatas; _e < timelineDatas_4.length; _e++) { + var timelineData = timelineDatas_4[_e]; + switch (timelineData.type) { + case 50: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SurfaceTimelineState); + timeline.surface = bone; + timeline.init(this._armature, this, timelineData); + this._surfaceTimelines.push(timeline); + } + } else if (this.resetToPose) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SurfaceTimelineState); + timeline.surface = bone; + timeline.init(this._armature, this, null); + this._surfaceTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + } + } + for (var k in boneTimelines) for (var _f = 0, _g = boneTimelines[k]; _f < _g.length; _f++) { + var timeline = _g[_f]; + this._boneTimelines.splice(this._boneTimelines.indexOf(timeline), 1); + timeline.returnToPool(); + } + var slotTimelines = {}; + var ffdFlags = []; + for (var _h = 0, _j = this._slotTimelines; _h < _j.length; _h++) { + var timeline = _j[_h]; + var timelineName = timeline.slot.name; + timelineName in slotTimelines || (slotTimelines[timelineName] = []); + slotTimelines[timelineName].push(timeline); + } + for (var _k = 0, _l = this._armature.getSlots(); _k < _l.length; _k++) { + var slot = _l[_k]; + var boneName = slot.parent.name; + if (!this.containsBoneMask(boneName)) continue; + var timelineName = slot.name; + var timelineDatas = this._animationData.getSlotTimelines(timelineName); + if (timelineName in slotTimelines) delete slotTimelines[timelineName]; else { + var displayIndexFlag = false; + var colorFlag = false; + ffdFlags.length = 0; + if (null !== timelineDatas) for (var _m = 0, timelineDatas_5 = timelineDatas; _m < timelineDatas_5.length; _m++) { + var timelineData = timelineDatas_5[_m]; + switch (timelineData.type) { + case 20: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SlotDislayTimelineState); + timeline.slot = slot; + timeline.init(this._armature, this, timelineData); + this._slotTimelines.push(timeline); + displayIndexFlag = true; + break; + + case 21: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SlotColorTimelineState); + timeline.slot = slot; + timeline.init(this._armature, this, timelineData); + this._slotTimelines.push(timeline); + colorFlag = true; + break; + + case 22: + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.DeformTimelineState); + timeline.slot = slot; + timeline.init(this._armature, this, timelineData); + this._slotTimelines.push(timeline); + ffdFlags.push(timeline.vertexOffset); + } + } + if (this.resetToPose) { + if (!displayIndexFlag) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SlotDislayTimelineState); + timeline.slot = slot; + timeline.init(this._armature, this, null); + this._slotTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + if (!colorFlag) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.SlotColorTimelineState); + timeline.slot = slot; + timeline.init(this._armature, this, null); + this._slotTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + if (null !== slot.rawDisplayDatas) for (var _o = 0, _p = slot.rawDisplayDatas; _o < _p.length; _o++) { + var displayData = _p[_o]; + if (null !== displayData && 2 === displayData.type) { + var meshOffset = displayData.vertices.offset; + if (ffdFlags.indexOf(meshOffset) < 0) { + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.DeformTimelineState); + timeline.vertexOffset = meshOffset; + timeline.slot = slot; + timeline.init(this._armature, this, null); + this._slotTimelines.push(timeline); + this._poseTimelines.push(timeline); + } + } + } + } + } + } + for (var k in slotTimelines) for (var _q = 0, _r = slotTimelines[k]; _q < _r.length; _q++) { + var timeline = _r[_q]; + this._slotTimelines.splice(this._slotTimelines.indexOf(timeline), 1); + timeline.returnToPool(); + } + }; + AnimationState.prototype._advanceFadeTime = function (passedTime) { + var isFadeOut = this._fadeState > 0; + if (this._subFadeState < 0) { + this._subFadeState = 0; + var eventType = isFadeOut ? dragonBones.EventObject.FADE_OUT : dragonBones.EventObject.FADE_IN; + if (this._armature.eventDispatcher.hasDBEventListener(eventType)) { + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + eventObject.type = eventType; + eventObject.armature = this._armature; + eventObject.animationState = this; + this._armature._dragonBones.bufferEvent(eventObject); + } + } + passedTime < 0 && (passedTime = -passedTime); + this._fadeTime += passedTime; + if (this._fadeTime >= this.fadeTotalTime) { + this._subFadeState = 1; + this._fadeProgress = isFadeOut ? 0 : 1; + } else this._fadeTime > 0 ? this._fadeProgress = isFadeOut ? 1 - this._fadeTime / this.fadeTotalTime : this._fadeTime / this.fadeTotalTime : this._fadeProgress = isFadeOut ? 1 : 0; + if (this._subFadeState > 0) { + if (!isFadeOut) { + this._playheadState |= 1; + this._fadeState = 0; + } + var eventType = isFadeOut ? dragonBones.EventObject.FADE_OUT_COMPLETE : dragonBones.EventObject.FADE_IN_COMPLETE; + if (this._armature.eventDispatcher.hasDBEventListener(eventType)) { + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + eventObject.type = eventType; + eventObject.armature = this._armature; + eventObject.animationState = this; + this._armature._dragonBones.bufferEvent(eventObject); + } + } + }; + AnimationState.prototype.init = function (armature, animationData, animationConfig) { + if (null !== this._armature) return; + this._armature = armature; + this._animationData = animationData; + this.resetToPose = animationConfig.resetToPose; + this.additiveBlending = animationConfig.additiveBlending; + this.displayControl = animationConfig.displayControl; + this.actionEnabled = animationConfig.actionEnabled; + this.layer = animationConfig.layer; + this.playTimes = animationConfig.playTimes; + this.timeScale = animationConfig.timeScale; + this.fadeTotalTime = animationConfig.fadeInTime; + this.autoFadeOutTime = animationConfig.autoFadeOutTime; + this.weight = animationConfig.weight; + this.name = animationConfig.name.length > 0 ? animationConfig.name : animationConfig.animation; + this.group = animationConfig.group; + animationConfig.pauseFadeIn ? this._playheadState = 2 : this._playheadState = 3; + if (animationConfig.duration < 0) { + this._position = 0; + this._duration = this._animationData.duration; + 0 !== animationConfig.position ? this.timeScale >= 0 ? this._time = animationConfig.position : this._time = animationConfig.position - this._duration : this._time = 0; + } else { + this._position = animationConfig.position; + this._duration = animationConfig.duration; + this._time = 0; + } + this.timeScale < 0 && 0 === this._time && (this._time = -1e-6); + this.fadeTotalTime <= 0 && (this._fadeProgress = .999999); + if (animationConfig.boneMask.length > 0) { + this._boneMask.length = animationConfig.boneMask.length; + for (var i = 0, l = this._boneMask.length; i < l; ++i) this._boneMask[i] = animationConfig.boneMask[i]; + } + this._actionTimeline = dragonBones.BaseObject.borrowObject(dragonBones.ActionTimelineState); + this._actionTimeline.init(this._armature, this, this._animationData.actionTimeline); + this._actionTimeline.currentTime = this._time; + this._actionTimeline.currentTime < 0 && (this._actionTimeline.currentTime = this._duration - this._actionTimeline.currentTime); + if (null !== this._animationData.zOrderTimeline) { + this._zOrderTimeline = dragonBones.BaseObject.borrowObject(dragonBones.ZOrderTimelineState); + this._zOrderTimeline.init(this._armature, this, this._animationData.zOrderTimeline); + } + }; + AnimationState.prototype.advanceTime = function (passedTime, cacheFrameRate) { + this._blendState.dirty = false; + 0 === this._fadeState && 0 === this._subFadeState || this._advanceFadeTime(passedTime); + if (3 === this._playheadState) { + 1 !== this.timeScale && (passedTime *= this.timeScale); + this._time += passedTime; + } + if (0 !== this._timelineDirty) { + 2 === this._timelineDirty && this._updateTimelines(); + this._timelineDirty = 0; + this._updateBoneAndSlotTimelines(); + } + if (0 === this.weight) return; + var isCacheEnabled = 0 === this._fadeState && cacheFrameRate > 0; + var isUpdateTimeline = true; + var isUpdateBoneTimeline = true; + var time = this._time; + this._weightResult = this.weight * this._fadeProgress; + null !== this._parent && (this._weightResult *= this._parent._weightResult / this._parent._fadeProgress); + this._actionTimeline.playState <= 0 && this._actionTimeline.update(time); + if (isCacheEnabled) { + var internval = 2 * cacheFrameRate; + this._actionTimeline.currentTime = Math.floor(this._actionTimeline.currentTime * internval) / internval; + } + null !== this._zOrderTimeline && this._zOrderTimeline.playState <= 0 && this._zOrderTimeline.update(time); + if (isCacheEnabled) { + var cacheFrameIndex = Math.floor(this._actionTimeline.currentTime * cacheFrameRate); + if (this._armature._cacheFrameIndex === cacheFrameIndex) { + isUpdateTimeline = false; + isUpdateBoneTimeline = false; + } else { + this._armature._cacheFrameIndex = cacheFrameIndex; + this._animationData.cachedFrames[cacheFrameIndex] ? isUpdateBoneTimeline = false : this._animationData.cachedFrames[cacheFrameIndex] = true; + } + } + if (isUpdateTimeline) { + if (isUpdateBoneTimeline) for (var i = 0, l = this._boneTimelines.length; i < l; ++i) { + var timeline = this._boneTimelines[i]; + timeline.playState <= 0 && timeline.update(time); + if (i === l - 1 || timeline.bone !== this._boneTimelines[i + 1].bone) { + var state = timeline.bone._blendState.update(this._weightResult, this.layer); + 0 !== state && timeline.blend(state); + } + } + for (var i = 0, l = this._surfaceTimelines.length; i < l; ++i) { + var timeline = this._surfaceTimelines[i]; + var state = timeline.surface._blendState.update(this._weightResult, this.layer); + timeline.playState <= 0 && timeline.update(time); + 0 !== state && timeline.blend(state); + } + if (this.displayControl) for (var i = 0, l = this._slotTimelines.length; i < l; ++i) { + var timeline = this._slotTimelines[i]; + var displayController = timeline.slot.displayController; + null !== displayController && displayController !== this.name && displayController !== this.group || timeline.playState <= 0 && timeline.update(time); + } + for (var i = 0, l = this._constraintTimelines.length; i < l; ++i) { + var timeline = this._constraintTimelines[i]; + timeline.playState <= 0 && timeline.update(time); + } + for (var i = 0, l = this._animationTimelines.length; i < l; ++i) { + var timeline = this._animationTimelines[i]; + var state = timeline.animationState._blendState.update(this._weightResult, this.layer); + timeline.playState <= 0 && timeline.update(time); + 0 !== state && timeline.blend(state); + } + } + if (0 === this._fadeState) { + if (this._subFadeState > 0) { + this._subFadeState = 0; + if (this._poseTimelines.length > 0) { + for (var _i = 0, _a = this._poseTimelines; _i < _a.length; _i++) { + var timeline = _a[_i]; + timeline instanceof dragonBones.BoneTimelineState ? this._boneTimelines.splice(this._boneTimelines.indexOf(timeline), 1) : timeline instanceof dragonBones.SurfaceTimelineState ? this._surfaceTimelines.splice(this._surfaceTimelines.indexOf(timeline), 1) : timeline instanceof dragonBones.SlotTimelineState ? this._slotTimelines.splice(this._slotTimelines.indexOf(timeline), 1) : timeline instanceof dragonBones.ConstraintTimelineState && this._constraintTimelines.splice(this._constraintTimelines.indexOf(timeline), 1); + timeline.returnToPool(); + } + this._poseTimelines.length = 0; + } + } + this._actionTimeline.playState > 0 && this.autoFadeOutTime >= 0 && this.fadeOut(this.autoFadeOutTime); + } + }; + AnimationState.prototype.play = function () { + this._playheadState = 3; + }; + AnimationState.prototype.stop = function () { + this._playheadState &= 1; + }; + AnimationState.prototype.fadeOut = function (fadeOutTime, pausePlayhead) { + void 0 === pausePlayhead && (pausePlayhead = true); + fadeOutTime < 0 && (fadeOutTime = 0); + pausePlayhead && (this._playheadState &= 2); + if (this._fadeState > 0) { + if (fadeOutTime > this.fadeTotalTime - this._fadeTime) return; + } else { + this._fadeState = 1; + this._subFadeState = -1; + (fadeOutTime <= 0 || this._fadeProgress <= 0) && (this._fadeProgress = 1e-6); + for (var _i = 0, _a = this._boneTimelines; _i < _a.length; _i++) { + var timeline = _a[_i]; + timeline.fadeOut(); + } + for (var _b = 0, _c = this._surfaceTimelines; _b < _c.length; _b++) { + var timeline = _c[_b]; + timeline.fadeOut(); + } + for (var _d = 0, _e = this._slotTimelines; _d < _e.length; _d++) { + var timeline = _e[_d]; + timeline.fadeOut(); + } + for (var _f = 0, _g = this._constraintTimelines; _f < _g.length; _f++) { + var timeline = _g[_f]; + timeline.fadeOut(); + } + for (var _h = 0, _j = this._animationTimelines; _h < _j.length; _h++) { + var timeline = _j[_h]; + timeline.animationState.fadeOut(fadeOutTime, pausePlayhead); + timeline.fadeOut(); + } + } + this.displayControl = false; + this.fadeTotalTime = this._fadeProgress > 1e-6 ? fadeOutTime / this._fadeProgress : 0; + this._fadeTime = this.fadeTotalTime * (1 - this._fadeProgress); + }; + AnimationState.prototype.containsBoneMask = function (boneName) { + return 0 === this._boneMask.length || this._boneMask.indexOf(boneName) >= 0; + }; + AnimationState.prototype.addBoneMask = function (boneName, recursive) { + void 0 === recursive && (recursive = true); + var currentBone = this._armature.getBone(boneName); + if (null === currentBone) return; + this._boneMask.indexOf(boneName) < 0 && this._boneMask.push(boneName); + if (recursive) for (var _i = 0, _a = this._armature.getBones(); _i < _a.length; _i++) { + var bone = _a[_i]; + this._boneMask.indexOf(bone.name) < 0 && currentBone.contains(bone) && this._boneMask.push(bone.name); + } + this._timelineDirty = 1; + }; + AnimationState.prototype.removeBoneMask = function (boneName, recursive) { + void 0 === recursive && (recursive = true); + var index = this._boneMask.indexOf(boneName); + index >= 0 && this._boneMask.splice(index, 1); + if (recursive) { + var currentBone = this._armature.getBone(boneName); + if (null !== currentBone) { + var bones = this._armature.getBones(); + if (this._boneMask.length > 0) for (var _i = 0, bones_1 = bones; _i < bones_1.length; _i++) { + var bone = bones_1[_i]; + var index_2 = this._boneMask.indexOf(bone.name); + index_2 >= 0 && currentBone.contains(bone) && this._boneMask.splice(index_2, 1); + } else for (var _a = 0, bones_2 = bones; _a < bones_2.length; _a++) { + var bone = bones_2[_a]; + if (bone === currentBone) continue; + currentBone.contains(bone) || this._boneMask.push(bone.name); + } + } + } + this._timelineDirty = 1; + }; + AnimationState.prototype.removeAllBoneMask = function () { + this._boneMask.length = 0; + this._timelineDirty = 1; + }; + Object.defineProperty(AnimationState.prototype, "isFadeIn", { + get: function get() { + return this._fadeState < 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "isFadeOut", { + get: function get() { + return this._fadeState > 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "isFadeComplete", { + get: function get() { + return 0 === this._fadeState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "isPlaying", { + get: function get() { + return 0 !== (2 & this._playheadState) && this._actionTimeline.playState <= 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "isCompleted", { + get: function get() { + return this._actionTimeline.playState > 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "currentPlayTimes", { + get: function get() { + return this._actionTimeline.currentPlayTimes; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "totalTime", { + get: function get() { + return this._duration; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "currentTime", { + get: function get() { + return this._actionTimeline.currentTime; + }, + set: function set(value) { + var currentPlayTimes = this._actionTimeline.currentPlayTimes - (this._actionTimeline.playState > 0 ? 1 : 0); + if (value < 0 || this._duration < value) { + value = value % this._duration + currentPlayTimes * this._duration; + value < 0 && (value += this._duration); + } + this.playTimes > 0 && currentPlayTimes === this.playTimes - 1 && value === this._duration && (value = this._duration - 1e-6); + if (this._time === value) return; + this._time = value; + this._actionTimeline.setCurrentTime(this._time); + null !== this._zOrderTimeline && (this._zOrderTimeline.playState = -1); + for (var _i = 0, _a = this._boneTimelines; _i < _a.length; _i++) { + var timeline = _a[_i]; + timeline.playState = -1; + } + for (var _b = 0, _c = this._slotTimelines; _b < _c.length; _b++) { + var timeline = _c[_b]; + timeline.playState = -1; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AnimationState.prototype, "animationData", { + get: function get() { + return this._animationData; + }, + enumerable: true, + configurable: true + }); + return AnimationState; + })(dragonBones.BaseObject); + dragonBones.AnimationState = AnimationState; + var BonePose = (function (_super) { + __extends(BonePose, _super); + function BonePose() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.current = new dragonBones.Transform(); + _this.delta = new dragonBones.Transform(); + _this.result = new dragonBones.Transform(); + return _this; + } + BonePose.toString = function () { + return "[class dragonBones.BonePose]"; + }; + BonePose.prototype._onClear = function () { + this.current.identity(); + this.delta.identity(); + this.result.identity(); + }; + return BonePose; + })(dragonBones.BaseObject); + dragonBones.BonePose = BonePose; + var BlendState = (function () { + function BlendState() { } + BlendState.prototype.update = function (weight, p_layer) { + if (this.dirty) { + if (!(this.leftWeight > 0)) return 0; + if (this.layer !== p_layer) { + if (this.layerWeight >= this.leftWeight) { + this.leftWeight = 0; + return 0; + } + this.layer = p_layer; + this.leftWeight -= this.layerWeight; + this.layerWeight = 0; + } + weight *= this.leftWeight; + this.layerWeight += weight; + this.blendWeight = weight; + return 2; + } + this.dirty = true; + this.layer = p_layer; + this.layerWeight = weight; + this.leftWeight = 1; + this.blendWeight = weight; + return 1; + }; + BlendState.prototype.clear = function () { + this.dirty = false; + this.layer = 0; + this.leftWeight = 0; + this.layerWeight = 0; + this.blendWeight = 0; + }; + return BlendState; + })(); + dragonBones.BlendState = BlendState; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var TimelineState = (function (_super) { + __extends(TimelineState, _super); + function TimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + TimelineState.prototype._onClear = function () { + this.playState = -1; + this.currentPlayTimes = -1; + this.currentTime = -1; + this._tweenState = 0; + this._frameRate = 0; + this._frameValueOffset = 0; + this._frameCount = 0; + this._frameOffset = 0; + this._frameIndex = -1; + this._frameRateR = 0; + this._position = 0; + this._duration = 0; + this._timeScale = 1; + this._timeOffset = 0; + this._dragonBonesData = null; + this._animationData = null; + this._timelineData = null; + this._armature = null; + this._animationState = null; + this._actionTimeline = null; + this._frameArray = null; + this._frameIntArray = null; + this._frameFloatArray = null; + this._timelineArray = null; + this._frameIndices = null; + }; + TimelineState.prototype._setCurrentTime = function (passedTime) { + var prevState = this.playState; + var prevPlayTimes = this.currentPlayTimes; + var prevTime = this.currentTime; + if (null !== this._actionTimeline && this._frameCount <= 1) { + this.playState = this._actionTimeline.playState >= 0 ? 1 : -1; + this.currentPlayTimes = 1; + this.currentTime = this._actionTimeline.currentTime; + } else if (null === this._actionTimeline || 1 !== this._timeScale || 0 !== this._timeOffset) { + var playTimes = this._animationState.playTimes; + var totalTime = playTimes * this._duration; + passedTime *= this._timeScale; + 0 !== this._timeOffset && (passedTime += this._timeOffset * this._animationData.duration); + if (playTimes > 0 && (passedTime >= totalTime || passedTime <= -totalTime)) { + this.playState <= 0 && 3 === this._animationState._playheadState && (this.playState = 1); + this.currentPlayTimes = playTimes; + this.currentTime = passedTime < 0 ? 0 : this._duration + 1e-6; + } else { + 0 !== this.playState && 3 === this._animationState._playheadState && (this.playState = 0); + if (passedTime < 0) { + passedTime = -passedTime; + this.currentPlayTimes = Math.floor(passedTime / this._duration); + this.currentTime = this._duration - passedTime % this._duration; + } else { + this.currentPlayTimes = Math.floor(passedTime / this._duration); + this.currentTime = passedTime % this._duration; + } + } + this.currentTime += this._position; + } else { + this.playState = this._actionTimeline.playState; + this.currentPlayTimes = this._actionTimeline.currentPlayTimes; + this.currentTime = this._actionTimeline.currentTime; + } + if (this.currentPlayTimes === prevPlayTimes && this.currentTime === prevTime) return false; + (prevState < 0 && this.playState !== prevState || this.playState <= 0 && this.currentPlayTimes !== prevPlayTimes) && (this._frameIndex = -1); + return true; + }; + TimelineState.prototype.init = function (armature, animationState, timelineData) { + this._armature = armature; + this._animationState = animationState; + this._timelineData = timelineData; + this._actionTimeline = this._animationState._actionTimeline; + this === this._actionTimeline && (this._actionTimeline = null); + this._animationData = this._animationState._animationData; + this._frameRate = this._animationData.parent.frameRate; + this._frameRateR = 1 / this._frameRate; + this._position = this._animationState._position; + this._duration = this._animationState._duration; + this._dragonBonesData = this._animationData.parent.parent; + if (null !== this._timelineData) { + this._frameIntArray = this._dragonBonesData.frameIntArray; + this._frameFloatArray = this._dragonBonesData.frameFloatArray; + this._frameArray = this._dragonBonesData.frameArray; + this._timelineArray = this._dragonBonesData.timelineArray; + this._frameIndices = this._dragonBonesData.frameIndices; + this._frameCount = this._timelineArray[this._timelineData.offset + 2]; + this._frameValueOffset = this._timelineArray[this._timelineData.offset + 4]; + this._timeScale = 100 / this._timelineArray[this._timelineData.offset + 0]; + this._timeOffset = .01 * this._timelineArray[this._timelineData.offset + 1]; + } + }; + TimelineState.prototype.fadeOut = function () { }; + TimelineState.prototype.update = function (passedTime) { + if (this._setCurrentTime(passedTime)) { + if (this._frameCount > 1) { + var timelineFrameIndex = Math.floor(this.currentTime * this._frameRate); + var frameIndex = this._frameIndices[this._timelineData.frameIndicesOffset + timelineFrameIndex]; + if (this._frameIndex !== frameIndex) { + this._frameIndex = frameIndex; + this._frameOffset = this._animationData.frameOffset + this._timelineArray[this._timelineData.offset + 5 + this._frameIndex]; + this._onArriveAtFrame(); + } + } else if (this._frameIndex < 0) { + this._frameIndex = 0; + null !== this._timelineData && (this._frameOffset = this._animationData.frameOffset + this._timelineArray[this._timelineData.offset + 5]); + this._onArriveAtFrame(); + } + 0 !== this._tweenState && this._onUpdateFrame(); + } + }; + return TimelineState; + })(dragonBones.BaseObject); + dragonBones.TimelineState = TimelineState; + var TweenTimelineState = (function (_super) { + __extends(TweenTimelineState, _super); + function TweenTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + TweenTimelineState._getEasingValue = function (tweenType, progress, easing) { + var value = progress; + switch (tweenType) { + case 3: + value = Math.pow(progress, 2); + break; + + case 4: + value = 1 - Math.pow(1 - progress, 2); + break; + + case 5: + value = .5 * (1 - Math.cos(progress * Math.PI)); + } + return (value - progress) * easing + progress; + }; + TweenTimelineState._getEasingCurveValue = function (progress, samples, count, offset) { + if (progress <= 0) return 0; + if (progress >= 1) return 1; + var segmentCount = count + 1; + var valueIndex = Math.floor(progress * segmentCount); + var fromValue = 0 === valueIndex ? 0 : samples[offset + valueIndex - 1]; + var toValue = valueIndex === segmentCount - 1 ? 1e4 : samples[offset + valueIndex]; + return 1e-4 * (fromValue + (toValue - fromValue) * (progress * segmentCount - valueIndex)); + }; + TweenTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this._tweenType = 0; + this._curveCount = 0; + this._framePosition = 0; + this._frameDurationR = 0; + this._tweenProgress = 0; + this._tweenEasing = 0; + }; + TweenTimelineState.prototype._onArriveAtFrame = function () { + if (this._frameCount > 1 && (this._frameIndex !== this._frameCount - 1 || 0 === this._animationState.playTimes || this._animationState.currentPlayTimes < this._animationState.playTimes - 1)) { + this._tweenType = this._frameArray[this._frameOffset + 1]; + this._tweenState = 0 === this._tweenType ? 1 : 2; + 2 === this._tweenType ? this._curveCount = this._frameArray[this._frameOffset + 2] : 0 !== this._tweenType && 1 !== this._tweenType && (this._tweenEasing = .01 * this._frameArray[this._frameOffset + 2]); + this._framePosition = this._frameArray[this._frameOffset] * this._frameRateR; + if (this._frameIndex === this._frameCount - 1) this._frameDurationR = 1 / (this._animationData.duration - this._framePosition); else { + var nextFrameOffset = this._animationData.frameOffset + this._timelineArray[this._timelineData.offset + 5 + this._frameIndex + 1]; + var frameDuration = this._frameArray[nextFrameOffset] * this._frameRateR - this._framePosition; + this._frameDurationR = frameDuration > 0 ? 1 / frameDuration : 0; + } + } else this._tweenState = 1; + }; + TweenTimelineState.prototype._onUpdateFrame = function () { + if (2 === this._tweenState) { + this._tweenProgress = (this.currentTime - this._framePosition) * this._frameDurationR; + 2 === this._tweenType ? this._tweenProgress = TweenTimelineState._getEasingCurveValue(this._tweenProgress, this._frameArray, this._curveCount, this._frameOffset + 3) : 1 !== this._tweenType && (this._tweenProgress = TweenTimelineState._getEasingValue(this._tweenType, this._tweenProgress, this._tweenEasing)); + } else this._tweenProgress = 0; + }; + return TweenTimelineState; + })(TimelineState); + dragonBones.TweenTimelineState = TweenTimelineState; + var BoneTimelineState = (function (_super) { + __extends(BoneTimelineState, _super); + function BoneTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoneTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.bone = null; + this.bonePose = null; + }; + BoneTimelineState.prototype.blend = function (state) { + var blendWeight = this.bone._blendState.blendWeight; + var animationPose = this.bone.animationPose; + var result = this.bonePose.result; + if (2 === state) { + animationPose.x += result.x * blendWeight; + animationPose.y += result.y * blendWeight; + animationPose.rotation += result.rotation * blendWeight; + animationPose.skew += result.skew * blendWeight; + animationPose.scaleX += (result.scaleX - 1) * blendWeight; + animationPose.scaleY += (result.scaleY - 1) * blendWeight; + } else if (1 !== blendWeight) { + animationPose.x = result.x * blendWeight; + animationPose.y = result.y * blendWeight; + animationPose.rotation = result.rotation * blendWeight; + animationPose.skew = result.skew * blendWeight; + animationPose.scaleX = (result.scaleX - 1) * blendWeight + 1; + animationPose.scaleY = (result.scaleY - 1) * blendWeight + 1; + } else { + animationPose.x = result.x; + animationPose.y = result.y; + animationPose.rotation = result.rotation; + animationPose.skew = result.skew; + animationPose.scaleX = result.scaleX; + animationPose.scaleY = result.scaleY; + } + 0 === this._animationState._fadeState && 0 === this._animationState._subFadeState || (this.bone._transformDirty = true); + }; + return BoneTimelineState; + })(TweenTimelineState); + dragonBones.BoneTimelineState = BoneTimelineState; + var SlotTimelineState = (function (_super) { + __extends(SlotTimelineState, _super); + function SlotTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + SlotTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.slot = null; + }; + return SlotTimelineState; + })(TweenTimelineState); + dragonBones.SlotTimelineState = SlotTimelineState; + var ConstraintTimelineState = (function (_super) { + __extends(ConstraintTimelineState, _super); + function ConstraintTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + ConstraintTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.constraint = null; + }; + return ConstraintTimelineState; + })(TweenTimelineState); + dragonBones.ConstraintTimelineState = ConstraintTimelineState; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var ActionTimelineState = (function (_super) { + __extends(ActionTimelineState, _super); + function ActionTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + ActionTimelineState.toString = function () { + return "[class dragonBones.ActionTimelineState]"; + }; + ActionTimelineState.prototype._onCrossFrame = function (frameIndex) { + var eventDispatcher = this._armature.eventDispatcher; + if (this._animationState.actionEnabled) { + var frameOffset = this._animationData.frameOffset + this._timelineArray[this._timelineData.offset + 5 + frameIndex]; + var actionCount = this._frameArray[frameOffset + 1]; + var actions = this._animationData.parent.actions; + for (var i = 0; i < actionCount; ++i) { + var actionIndex = this._frameArray[frameOffset + 2 + i]; + var action = actions[actionIndex]; + if (0 === action.type) { + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + eventObject.time = this._frameArray[frameOffset] / this._frameRate; + eventObject.animationState = this._animationState; + dragonBones.EventObject.actionDataToInstance(action, eventObject, this._armature); + this._armature._bufferAction(eventObject, true); + } else { + var eventType = 10 === action.type ? dragonBones.EventObject.FRAME_EVENT : dragonBones.EventObject.SOUND_EVENT; + if (11 === action.type || eventDispatcher.hasDBEventListener(eventType)) { + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + eventObject.time = this._frameArray[frameOffset] / this._frameRate; + eventObject.animationState = this._animationState; + dragonBones.EventObject.actionDataToInstance(action, eventObject, this._armature); + this._armature._dragonBones.bufferEvent(eventObject); + } + } + } + } + }; + ActionTimelineState.prototype._onArriveAtFrame = function () { }; + ActionTimelineState.prototype._onUpdateFrame = function () { }; + ActionTimelineState.prototype.update = function (passedTime) { + var prevState = this.playState; + var prevPlayTimes = this.currentPlayTimes; + var prevTime = this.currentTime; + if (this._setCurrentTime(passedTime)) { + var eventDispatcher = this._armature.eventDispatcher; + if (prevState < 0) { + if (this.playState === prevState) return; + this._animationState.displayControl && this._animationState.resetToPose && this._armature._sortZOrder(null, 0); + prevPlayTimes = this.currentPlayTimes; + if (eventDispatcher.hasDBEventListener(dragonBones.EventObject.START)) { + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + eventObject.type = dragonBones.EventObject.START; + eventObject.armature = this._armature; + eventObject.animationState = this._animationState; + this._armature._dragonBones.bufferEvent(eventObject); + } + } + var isReverse = this._animationState.timeScale < 0; + var loopCompleteEvent = null; + var completeEvent = null; + if (this.currentPlayTimes !== prevPlayTimes) { + if (eventDispatcher.hasDBEventListener(dragonBones.EventObject.LOOP_COMPLETE)) { + loopCompleteEvent = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + loopCompleteEvent.type = dragonBones.EventObject.LOOP_COMPLETE; + loopCompleteEvent.armature = this._armature; + loopCompleteEvent.animationState = this._animationState; + } + if (this.playState > 0 && eventDispatcher.hasDBEventListener(dragonBones.EventObject.COMPLETE)) { + completeEvent = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + completeEvent.type = dragonBones.EventObject.COMPLETE; + completeEvent.armature = this._armature; + completeEvent.animationState = this._animationState; + } + } + if (this._frameCount > 1) { + var timelineData = this._timelineData; + var timelineFrameIndex = Math.floor(this.currentTime * this._frameRate); + var frameIndex = this._frameIndices[timelineData.frameIndicesOffset + timelineFrameIndex]; + if (this._frameIndex !== frameIndex) { + var crossedFrameIndex = this._frameIndex; + this._frameIndex = frameIndex; + if (null !== this._timelineArray) { + this._frameOffset = this._animationData.frameOffset + this._timelineArray[timelineData.offset + 5 + this._frameIndex]; + if (isReverse) { + if (crossedFrameIndex < 0) { + var prevFrameIndex = Math.floor(prevTime * this._frameRate); + crossedFrameIndex = this._frameIndices[timelineData.frameIndicesOffset + prevFrameIndex]; + this.currentPlayTimes === prevPlayTimes && crossedFrameIndex === frameIndex && (crossedFrameIndex = -1); + } + while (crossedFrameIndex >= 0) { + var frameOffset = this._animationData.frameOffset + this._timelineArray[timelineData.offset + 5 + crossedFrameIndex]; + var framePosition = this._frameArray[frameOffset] / this._frameRate; + this._position <= framePosition && framePosition <= this._position + this._duration && this._onCrossFrame(crossedFrameIndex); + if (null !== loopCompleteEvent && 0 === crossedFrameIndex) { + this._armature._dragonBones.bufferEvent(loopCompleteEvent); + loopCompleteEvent = null; + } + crossedFrameIndex > 0 ? crossedFrameIndex-- : crossedFrameIndex = this._frameCount - 1; + if (crossedFrameIndex === frameIndex) break; + } + } else { + if (crossedFrameIndex < 0) { + var prevFrameIndex = Math.floor(prevTime * this._frameRate); + crossedFrameIndex = this._frameIndices[timelineData.frameIndicesOffset + prevFrameIndex]; + var frameOffset = this._animationData.frameOffset + this._timelineArray[timelineData.offset + 5 + crossedFrameIndex]; + var framePosition = this._frameArray[frameOffset] / this._frameRate; + this.currentPlayTimes === prevPlayTimes && (prevTime <= framePosition ? crossedFrameIndex > 0 ? crossedFrameIndex-- : crossedFrameIndex = this._frameCount - 1 : crossedFrameIndex === frameIndex && (crossedFrameIndex = -1)); + } + while (crossedFrameIndex >= 0) { + crossedFrameIndex < this._frameCount - 1 ? crossedFrameIndex++ : crossedFrameIndex = 0; + var frameOffset = this._animationData.frameOffset + this._timelineArray[timelineData.offset + 5 + crossedFrameIndex]; + var framePosition = this._frameArray[frameOffset] / this._frameRate; + this._position <= framePosition && framePosition <= this._position + this._duration && this._onCrossFrame(crossedFrameIndex); + if (null !== loopCompleteEvent && 0 === crossedFrameIndex) { + this._armature._dragonBones.bufferEvent(loopCompleteEvent); + loopCompleteEvent = null; + } + if (crossedFrameIndex === frameIndex) break; + } + } + } + } + } else if (this._frameIndex < 0) { + this._frameIndex = 0; + if (null !== this._timelineData) { + this._frameOffset = this._animationData.frameOffset + this._timelineArray[this._timelineData.offset + 5]; + var framePosition = this._frameArray[this._frameOffset] / this._frameRate; + if (this.currentPlayTimes === prevPlayTimes) prevTime <= framePosition && this._onCrossFrame(this._frameIndex); else if (this._position <= framePosition) { + if (!isReverse && null !== loopCompleteEvent) { + this._armature._dragonBones.bufferEvent(loopCompleteEvent); + loopCompleteEvent = null; + } + this._onCrossFrame(this._frameIndex); + } + } + } + null !== loopCompleteEvent && this._armature._dragonBones.bufferEvent(loopCompleteEvent); + null !== completeEvent && this._armature._dragonBones.bufferEvent(completeEvent); + } + }; + ActionTimelineState.prototype.setCurrentTime = function (value) { + this._setCurrentTime(value); + this._frameIndex = -1; + }; + return ActionTimelineState; + })(dragonBones.TimelineState); + dragonBones.ActionTimelineState = ActionTimelineState; + var ZOrderTimelineState = (function (_super) { + __extends(ZOrderTimelineState, _super); + function ZOrderTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + ZOrderTimelineState.toString = function () { + return "[class dragonBones.ZOrderTimelineState]"; + }; + ZOrderTimelineState.prototype._onArriveAtFrame = function () { + if (this.playState >= 0) { + var count = this._frameArray[this._frameOffset + 1]; + count > 0 ? this._armature._sortZOrder(this._frameArray, this._frameOffset + 2) : this._armature._sortZOrder(null, 0); + } + }; + ZOrderTimelineState.prototype._onUpdateFrame = function () { }; + return ZOrderTimelineState; + })(dragonBones.TimelineState); + dragonBones.ZOrderTimelineState = ZOrderTimelineState; + var BoneAllTimelineState = (function (_super) { + __extends(BoneAllTimelineState, _super); + function BoneAllTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoneAllTimelineState.toString = function () { + return "[class dragonBones.BoneAllTimelineState]"; + }; + BoneAllTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + 6 * this._frameIndex; + var scale = this._armature._armatureData.scale; + var frameFloatArray = this._frameFloatArray; + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.x = frameFloatArray[valueOffset++] * scale; + current.y = frameFloatArray[valueOffset++] * scale; + current.rotation = frameFloatArray[valueOffset++]; + current.skew = frameFloatArray[valueOffset++]; + current.scaleX = frameFloatArray[valueOffset++]; + current.scaleY = frameFloatArray[valueOffset++]; + if (2 === this._tweenState) { + this._frameIndex === this._frameCount - 1 && (valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset); + delta.x = frameFloatArray[valueOffset++] * scale - current.x; + delta.y = frameFloatArray[valueOffset++] * scale - current.y; + delta.rotation = frameFloatArray[valueOffset++] - current.rotation; + delta.skew = frameFloatArray[valueOffset++] - current.skew; + delta.scaleX = frameFloatArray[valueOffset++] - current.scaleX; + delta.scaleY = frameFloatArray[valueOffset++] - current.scaleY; + } else { + delta.x = 0; + delta.y = 0; + delta.rotation = 0; + delta.skew = 0; + delta.scaleX = 0; + delta.scaleY = 0; + } + } else { + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.x = 0; + current.y = 0; + current.rotation = 0; + current.skew = 0; + current.scaleX = 1; + current.scaleY = 1; + delta.x = 0; + delta.y = 0; + delta.rotation = 0; + delta.skew = 0; + delta.scaleX = 0; + delta.scaleY = 0; + } + }; + BoneAllTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + var current = this.bonePose.current; + var delta = this.bonePose.delta; + var result = this.bonePose.result; + this.bone._transformDirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + result.x = current.x + delta.x * this._tweenProgress; + result.y = current.y + delta.y * this._tweenProgress; + result.rotation = current.rotation + delta.rotation * this._tweenProgress; + result.skew = current.skew + delta.skew * this._tweenProgress; + result.scaleX = current.scaleX + delta.scaleX * this._tweenProgress; + result.scaleY = current.scaleY + delta.scaleY * this._tweenProgress; + }; + BoneAllTimelineState.prototype.fadeOut = function () { + var result = this.bonePose.result; + result.rotation = dragonBones.Transform.normalizeRadian(result.rotation); + result.skew = dragonBones.Transform.normalizeRadian(result.skew); + }; + return BoneAllTimelineState; + })(dragonBones.BoneTimelineState); + dragonBones.BoneAllTimelineState = BoneAllTimelineState; + var BoneTranslateTimelineState = (function (_super) { + __extends(BoneTranslateTimelineState, _super); + function BoneTranslateTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoneTranslateTimelineState.toString = function () { + return "[class dragonBones.BoneTranslateTimelineState]"; + }; + BoneTranslateTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + 2 * this._frameIndex; + var scale = this._armature._armatureData.scale; + var frameFloatArray = this._frameFloatArray; + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.x = frameFloatArray[valueOffset++] * scale; + current.y = frameFloatArray[valueOffset++] * scale; + if (2 === this._tweenState) { + this._frameIndex === this._frameCount - 1 && (valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset); + delta.x = frameFloatArray[valueOffset++] * scale - current.x; + delta.y = frameFloatArray[valueOffset++] * scale - current.y; + } else { + delta.x = 0; + delta.y = 0; + } + } else { + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.x = 0; + current.y = 0; + delta.x = 0; + delta.y = 0; + } + }; + BoneTranslateTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + var current = this.bonePose.current; + var delta = this.bonePose.delta; + var result = this.bonePose.result; + this.bone._transformDirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + result.x = current.x + delta.x * this._tweenProgress; + result.y = current.y + delta.y * this._tweenProgress; + }; + return BoneTranslateTimelineState; + })(dragonBones.BoneTimelineState); + dragonBones.BoneTranslateTimelineState = BoneTranslateTimelineState; + var BoneRotateTimelineState = (function (_super) { + __extends(BoneRotateTimelineState, _super); + function BoneRotateTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoneRotateTimelineState.toString = function () { + return "[class dragonBones.BoneRotateTimelineState]"; + }; + BoneRotateTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + 2 * this._frameIndex; + var frameFloatArray = this._frameFloatArray; + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.rotation = frameFloatArray[valueOffset++]; + current.skew = frameFloatArray[valueOffset++]; + if (2 === this._tweenState) { + if (this._frameIndex === this._frameCount - 1) { + valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset; + delta.rotation = dragonBones.Transform.normalizeRadian(frameFloatArray[valueOffset++] - current.rotation); + } else delta.rotation = frameFloatArray[valueOffset++] - current.rotation; + delta.skew = frameFloatArray[valueOffset++] - current.skew; + } else { + delta.rotation = 0; + delta.skew = 0; + } + } else { + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.rotation = 0; + current.skew = 0; + delta.rotation = 0; + delta.skew = 0; + } + }; + BoneRotateTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + var current = this.bonePose.current; + var delta = this.bonePose.delta; + var result = this.bonePose.result; + this.bone._transformDirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + result.rotation = current.rotation + delta.rotation * this._tweenProgress; + result.skew = current.skew + delta.skew * this._tweenProgress; + }; + BoneRotateTimelineState.prototype.fadeOut = function () { + var result = this.bonePose.result; + result.rotation = dragonBones.Transform.normalizeRadian(result.rotation); + result.skew = dragonBones.Transform.normalizeRadian(result.skew); + }; + return BoneRotateTimelineState; + })(dragonBones.BoneTimelineState); + dragonBones.BoneRotateTimelineState = BoneRotateTimelineState; + var BoneScaleTimelineState = (function (_super) { + __extends(BoneScaleTimelineState, _super); + function BoneScaleTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + BoneScaleTimelineState.toString = function () { + return "[class dragonBones.BoneScaleTimelineState]"; + }; + BoneScaleTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + 2 * this._frameIndex; + var frameFloatArray = this._frameFloatArray; + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.scaleX = frameFloatArray[valueOffset++]; + current.scaleY = frameFloatArray[valueOffset++]; + if (2 === this._tweenState) { + this._frameIndex === this._frameCount - 1 && (valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset); + delta.scaleX = frameFloatArray[valueOffset++] - current.scaleX; + delta.scaleY = frameFloatArray[valueOffset++] - current.scaleY; + } else { + delta.scaleX = 0; + delta.scaleY = 0; + } + } else { + var current = this.bonePose.current; + var delta = this.bonePose.delta; + current.scaleX = 1; + current.scaleY = 1; + delta.scaleX = 0; + delta.scaleY = 0; + } + }; + BoneScaleTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + var current = this.bonePose.current; + var delta = this.bonePose.delta; + var result = this.bonePose.result; + this.bone._transformDirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + result.scaleX = current.scaleX + delta.scaleX * this._tweenProgress; + result.scaleY = current.scaleY + delta.scaleY * this._tweenProgress; + }; + return BoneScaleTimelineState; + })(dragonBones.BoneTimelineState); + dragonBones.BoneScaleTimelineState = BoneScaleTimelineState; + var SurfaceTimelineState = (function (_super) { + __extends(SurfaceTimelineState, _super); + function SurfaceTimelineState() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._current = []; + _this._delta = []; + _this._result = []; + return _this; + } + SurfaceTimelineState.toString = function () { + return "[class dragonBones.SurfaceTimelineState]"; + }; + SurfaceTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.surface = null; + this._frameFloatOffset = 0; + this._valueCount = 0; + this._deformCount = 0; + this._valueOffset = 0; + this._current.length = 0; + this._delta.length = 0; + this._result.length = 0; + }; + SurfaceTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + this._frameIndex * this._valueCount; + var scale = this._armature._armatureData.scale; + var frameFloatArray = this._frameFloatArray; + if (2 === this._tweenState) { + var nextValueOffset = valueOffset + this._valueCount; + this._frameIndex === this._frameCount - 1 && (nextValueOffset = this._animationData.frameFloatOffset + this._frameValueOffset); + for (var i = 0; i < this._valueCount; ++i) this._delta[i] = frameFloatArray[nextValueOffset + i] * scale - (this._current[i] = frameFloatArray[valueOffset + i] * scale); + } else for (var i = 0; i < this._valueCount; ++i) this._current[i] = frameFloatArray[valueOffset + i] * scale; + } else for (var i = 0; i < this._valueCount; ++i) this._current[i] = 0; + }; + SurfaceTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + this.surface._transformDirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + for (var i = 0; i < this._valueCount; ++i) this._result[i] = this._current[i] + this._delta[i] * this._tweenProgress; + }; + SurfaceTimelineState.prototype.init = function (armature, animationState, timelineData) { + _super.prototype.init.call(this, armature, animationState, timelineData); + if (null !== this._timelineData) { + var frameIntOffset = this._animationData.frameIntOffset + this._timelineArray[this._timelineData.offset + 3]; + this._deformCount = this._frameIntArray[frameIntOffset + 1]; + this._valueCount = this._frameIntArray[frameIntOffset + 2]; + this._valueOffset = this._frameIntArray[frameIntOffset + 3]; + this._frameFloatOffset = this._frameIntArray[frameIntOffset + 4] + this._animationData.frameFloatOffset; + } else { + this._deformCount = this.surface._deformVertices.length; + this._valueCount = this._deformCount; + this._valueOffset = 0; + this._frameFloatOffset = 0; + } + this._current.length = this._valueCount; + this._delta.length = this._valueCount; + this._result.length = this._valueCount; + for (var i = 0; i < this._valueCount; ++i) this._delta[i] = 0; + }; + SurfaceTimelineState.prototype.blend = function (state) { + var blendWeight = this.surface._blendState.blendWeight; + var result = this.surface._deformVertices; + for (var i = 0; i < this._deformCount; ++i) { + var value = 0; + value = i < this._valueOffset ? this._frameFloatArray[this._frameFloatOffset + i] : i < this._valueOffset + this._valueCount ? this._result[i - this._valueOffset] : this._frameFloatArray[this._frameFloatOffset + i - this._valueCount]; + 2 === state ? result[i] += value * blendWeight : result[i] = 1 !== blendWeight ? value * blendWeight : value; + } + 0 === this._animationState._fadeState && 0 === this._animationState._subFadeState || (this.surface._transformDirty = true); + }; + return SurfaceTimelineState; + })(dragonBones.TweenTimelineState); + dragonBones.SurfaceTimelineState = SurfaceTimelineState; + var SlotDislayTimelineState = (function (_super) { + __extends(SlotDislayTimelineState, _super); + function SlotDislayTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + SlotDislayTimelineState.toString = function () { + return "[class dragonBones.SlotDislayTimelineState]"; + }; + SlotDislayTimelineState.prototype._onArriveAtFrame = function () { + if (this.playState >= 0) { + var displayIndex = null !== this._timelineData ? this._frameArray[this._frameOffset + 1] : this.slot._slotData.displayIndex; + this.slot.displayIndex !== displayIndex && this.slot._setDisplayIndex(displayIndex, true); + } + }; + return SlotDislayTimelineState; + })(dragonBones.SlotTimelineState); + dragonBones.SlotDislayTimelineState = SlotDislayTimelineState; + var SlotColorTimelineState = (function (_super) { + __extends(SlotColorTimelineState, _super); + function SlotColorTimelineState() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._current = [0, 0, 0, 0, 0, 0, 0, 0]; + _this._delta = [0, 0, 0, 0, 0, 0, 0, 0]; + _this._result = [0, 0, 0, 0, 0, 0, 0, 0]; + return _this; + } + SlotColorTimelineState.toString = function () { + return "[class dragonBones.SlotColorTimelineState]"; + }; + SlotColorTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this._dirty = false; + }; + SlotColorTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var intArray = this._dragonBonesData.intArray; + var frameIntArray = this._frameIntArray; + var valueOffset = this._animationData.frameIntOffset + this._frameValueOffset + 1 * this._frameIndex; + var colorOffset = frameIntArray[valueOffset]; + colorOffset < 0 && (colorOffset += 65536); + this._current[0] = intArray[colorOffset++]; + this._current[1] = intArray[colorOffset++]; + this._current[2] = intArray[colorOffset++]; + this._current[3] = intArray[colorOffset++]; + this._current[4] = intArray[colorOffset++]; + this._current[5] = intArray[colorOffset++]; + this._current[6] = intArray[colorOffset++]; + this._current[7] = intArray[colorOffset++]; + if (2 === this._tweenState) { + colorOffset = this._frameIndex === this._frameCount - 1 ? frameIntArray[this._animationData.frameIntOffset + this._frameValueOffset] : frameIntArray[valueOffset + 1]; + colorOffset < 0 && (colorOffset += 65536); + this._delta[0] = intArray[colorOffset++] - this._current[0]; + this._delta[1] = intArray[colorOffset++] - this._current[1]; + this._delta[2] = intArray[colorOffset++] - this._current[2]; + this._delta[3] = intArray[colorOffset++] - this._current[3]; + this._delta[4] = intArray[colorOffset++] - this._current[4]; + this._delta[5] = intArray[colorOffset++] - this._current[5]; + this._delta[6] = intArray[colorOffset++] - this._current[6]; + this._delta[7] = intArray[colorOffset++] - this._current[7]; + } + } else { + var color = this.slot._slotData.color; + this._current[0] = 100 * color.alphaMultiplier; + this._current[1] = 100 * color.redMultiplier; + this._current[2] = 100 * color.greenMultiplier; + this._current[3] = 100 * color.blueMultiplier; + this._current[4] = color.alphaOffset; + this._current[5] = color.redOffset; + this._current[6] = color.greenOffset; + this._current[7] = color.blueOffset; + } + }; + SlotColorTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + this._dirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + this._result[0] = .01 * (this._current[0] + this._delta[0] * this._tweenProgress); + this._result[1] = .01 * (this._current[1] + this._delta[1] * this._tweenProgress); + this._result[2] = .01 * (this._current[2] + this._delta[2] * this._tweenProgress); + this._result[3] = .01 * (this._current[3] + this._delta[3] * this._tweenProgress); + this._result[4] = this._current[4] + this._delta[4] * this._tweenProgress; + this._result[5] = this._current[5] + this._delta[5] * this._tweenProgress; + this._result[6] = this._current[6] + this._delta[6] * this._tweenProgress; + this._result[7] = this._current[7] + this._delta[7] * this._tweenProgress; + }; + SlotColorTimelineState.prototype.fadeOut = function () { + this._tweenState = 0; + this._dirty = false; + }; + SlotColorTimelineState.prototype.update = function (passedTime) { + _super.prototype.update.call(this, passedTime); + if (0 !== this._tweenState || this._dirty) { + var result = this.slot._colorTransform; + if (0 !== this._animationState._fadeState || 0 !== this._animationState._subFadeState) { + if (result.alphaMultiplier !== this._result[0] || result.redMultiplier !== this._result[1] || result.greenMultiplier !== this._result[2] || result.blueMultiplier !== this._result[3] || result.alphaOffset !== this._result[4] || result.redOffset !== this._result[5] || result.greenOffset !== this._result[6] || result.blueOffset !== this._result[7]) { + var fadeProgress = Math.pow(this._animationState._fadeProgress, 4); + result.alphaMultiplier += (this._result[0] - result.alphaMultiplier) * fadeProgress; + result.redMultiplier += (this._result[1] - result.redMultiplier) * fadeProgress; + result.greenMultiplier += (this._result[2] - result.greenMultiplier) * fadeProgress; + result.blueMultiplier += (this._result[3] - result.blueMultiplier) * fadeProgress; + result.alphaOffset += (this._result[4] - result.alphaOffset) * fadeProgress; + result.redOffset += (this._result[5] - result.redOffset) * fadeProgress; + result.greenOffset += (this._result[6] - result.greenOffset) * fadeProgress; + result.blueOffset += (this._result[7] - result.blueOffset) * fadeProgress; + this.slot._colorDirty = true; + } + } else if (this._dirty) { + this._dirty = false; + if (result.alphaMultiplier !== this._result[0] || result.redMultiplier !== this._result[1] || result.greenMultiplier !== this._result[2] || result.blueMultiplier !== this._result[3] || result.alphaOffset !== this._result[4] || result.redOffset !== this._result[5] || result.greenOffset !== this._result[6] || result.blueOffset !== this._result[7]) { + result.alphaMultiplier = this._result[0]; + result.redMultiplier = this._result[1]; + result.greenMultiplier = this._result[2]; + result.blueMultiplier = this._result[3]; + result.alphaOffset = this._result[4]; + result.redOffset = this._result[5]; + result.greenOffset = this._result[6]; + result.blueOffset = this._result[7]; + this.slot._colorDirty = true; + } + } + } + }; + return SlotColorTimelineState; + })(dragonBones.SlotTimelineState); + dragonBones.SlotColorTimelineState = SlotColorTimelineState; + var DeformTimelineState = (function (_super) { + __extends(DeformTimelineState, _super); + function DeformTimelineState() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._current = []; + _this._delta = []; + _this._result = []; + return _this; + } + DeformTimelineState.toString = function () { + return "[class dragonBones.DeformTimelineState]"; + }; + DeformTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.vertexOffset = 0; + this._dirty = false; + this._frameFloatOffset = 0; + this._valueCount = 0; + this._deformCount = 0; + this._valueOffset = 0; + this._current.length = 0; + this._delta.length = 0; + this._result.length = 0; + }; + DeformTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameFloatOffset + this._frameValueOffset + this._frameIndex * this._valueCount; + var scale = this._armature._armatureData.scale; + var frameFloatArray = this._frameFloatArray; + if (2 === this._tweenState) { + var nextValueOffset = valueOffset + this._valueCount; + this._frameIndex === this._frameCount - 1 && (nextValueOffset = this._animationData.frameFloatOffset + this._frameValueOffset); + for (var i = 0; i < this._valueCount; ++i) this._delta[i] = frameFloatArray[nextValueOffset + i] * scale - (this._current[i] = frameFloatArray[valueOffset + i] * scale); + } else for (var i = 0; i < this._valueCount; ++i) this._current[i] = frameFloatArray[valueOffset + i] * scale; + } else for (var i = 0; i < this._valueCount; ++i) this._current[i] = 0; + }; + DeformTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + this._dirty = true; + 2 !== this._tweenState && (this._tweenState = 0); + for (var i = 0; i < this._valueCount; ++i) this._result[i] = this._current[i] + this._delta[i] * this._tweenProgress; + }; + DeformTimelineState.prototype.init = function (armature, animationState, timelineData) { + _super.prototype.init.call(this, armature, animationState, timelineData); + if (null !== this._timelineData) { + var frameIntOffset = this._animationData.frameIntOffset + this._timelineArray[this._timelineData.offset + 3]; + this.vertexOffset = this._frameIntArray[frameIntOffset + 0]; + this.vertexOffset < 0 && (this.vertexOffset += 65536); + this._deformCount = this._frameIntArray[frameIntOffset + 1]; + this._valueCount = this._frameIntArray[frameIntOffset + 2]; + this._valueOffset = this._frameIntArray[frameIntOffset + 3]; + this._frameFloatOffset = this._frameIntArray[frameIntOffset + 4] + this._animationData.frameFloatOffset; + } else { + var deformVertices = this.slot._deformVertices; + this._deformCount = null !== deformVertices ? deformVertices.vertices.length : 0; + this._valueCount = this._deformCount; + this._valueOffset = 0; + this._frameFloatOffset = 0; + } + this._current.length = this._valueCount; + this._delta.length = this._valueCount; + this._result.length = this._valueCount; + for (var i = 0; i < this._valueCount; ++i) this._delta[i] = 0; + }; + DeformTimelineState.prototype.fadeOut = function () { + this._tweenState = 0; + this._dirty = false; + }; + DeformTimelineState.prototype.update = function (passedTime) { + var deformVertices = this.slot._deformVertices; + if (null === deformVertices || null === deformVertices.verticesData || deformVertices.verticesData.offset !== this.vertexOffset) return; + _super.prototype.update.call(this, passedTime); + if (0 !== this._tweenState || this._dirty) { + var result = deformVertices.vertices; + if (0 !== this._animationState._fadeState || 0 !== this._animationState._subFadeState) { + var fadeProgress = Math.pow(this._animationState._fadeProgress, 2); + for (var i = 0; i < this._deformCount; ++i) i < this._valueOffset ? result[i] += (this._frameFloatArray[this._frameFloatOffset + i] - result[i]) * fadeProgress : i < this._valueOffset + this._valueCount ? result[i] += (this._result[i - this._valueOffset] - result[i]) * fadeProgress : result[i] += (this._frameFloatArray[this._frameFloatOffset + i - this._valueCount] - result[i]) * fadeProgress; + deformVertices.verticesDirty = true; + } else if (this._dirty) { + this._dirty = false; + for (var i = 0; i < this._deformCount; ++i) i < this._valueOffset ? result[i] = this._frameFloatArray[this._frameFloatOffset + i] : i < this._valueOffset + this._valueCount ? result[i] = this._result[i - this._valueOffset] : result[i] = this._frameFloatArray[this._frameFloatOffset + i - this._valueCount]; + deformVertices.verticesDirty = true; + } + } + }; + return DeformTimelineState; + })(dragonBones.SlotTimelineState); + dragonBones.DeformTimelineState = DeformTimelineState; + var IKConstraintTimelineState = (function (_super) { + __extends(IKConstraintTimelineState, _super); + function IKConstraintTimelineState() { + return null !== _super && _super.apply(this, arguments) || this; + } + IKConstraintTimelineState.toString = function () { + return "[class dragonBones.IKConstraintTimelineState]"; + }; + IKConstraintTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this._current = 0; + this._delta = 0; + }; + IKConstraintTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + var ikConstraint = this.constraint; + if (null !== this._timelineData) { + var valueOffset = this._animationData.frameIntOffset + this._frameValueOffset + 2 * this._frameIndex; + var frameIntArray = this._frameIntArray; + var bendPositive = 0 !== frameIntArray[valueOffset++]; + this._current = .01 * frameIntArray[valueOffset++]; + if (2 === this._tweenState) { + this._frameIndex === this._frameCount - 1 && (valueOffset = this._animationData.frameIntOffset + this._frameValueOffset); + this._delta = .01 * frameIntArray[valueOffset + 1] - this._current; + } else this._delta = 0; + ikConstraint._bendPositive = bendPositive; + } else { + var ikConstraintData = ikConstraint._constraintData; + this._current = ikConstraintData.weight; + this._delta = 0; + ikConstraint._bendPositive = ikConstraintData.bendPositive; + } + ikConstraint.invalidUpdate(); + }; + IKConstraintTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + 2 !== this._tweenState && (this._tweenState = 0); + var ikConstraint = this.constraint; + ikConstraint._weight = this._current + this._delta * this._tweenProgress; + ikConstraint.invalidUpdate(); + }; + return IKConstraintTimelineState; + })(dragonBones.ConstraintTimelineState); + dragonBones.IKConstraintTimelineState = IKConstraintTimelineState; + var AnimationTimelineState = (function (_super) { + __extends(AnimationTimelineState, _super); + function AnimationTimelineState() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._floats = [0, 0, 0, 0, 0, 0]; + return _this; + } + AnimationTimelineState.toString = function () { + return "[class dragonBones.AnimationTimelineState]"; + }; + AnimationTimelineState.prototype._onClear = function () { + _super.prototype._onClear.call(this); + this.animationState = null; + }; + AnimationTimelineState.prototype._onArriveAtFrame = function () { + _super.prototype._onArriveAtFrame.call(this); + if (null === this._timelineData) return; + var valueOffset = this._animationData.frameIntOffset + this._frameValueOffset + 2 * this._frameIndex; + var frameRateR = 1 / this.animationState._animationData.parent.frameRate; + var frameIntArray = this._frameIntArray; + this._floats[0] = frameIntArray[valueOffset++] * frameRateR; + this._floats[3] = .01 * frameIntArray[valueOffset++]; + if (2 === this._tweenState) { + this._frameIndex === this._frameCount - 1 && (valueOffset = this._animationData.frameIntOffset + this._frameValueOffset); + this._floats[1] = frameIntArray[valueOffset++] * frameRateR - this._floats[0]; + this._floats[4] = .01 * frameIntArray[valueOffset++] - this._floats[3]; + } else { + this._floats[1] = 0; + this._floats[4] = 0; + } + }; + AnimationTimelineState.prototype._onUpdateFrame = function () { + _super.prototype._onUpdateFrame.call(this); + 2 !== this._tweenState && (this._tweenState = 0); + this._floats[0] >= 0 && (this._floats[2] = this._floats[0] + this._floats[1] * this._tweenProgress); + this._floats[5] = this._floats[3] + this._floats[4] * this._tweenProgress; + }; + AnimationTimelineState.prototype.blend = function (state) { + var animationState = this.animationState; + var blendWeight = animationState._blendState.blendWeight; + if (2 === state) { + animationState.weight += this._floats[5] * blendWeight; + animationState.currentTime += this._floats[2] * blendWeight; + } else { + animationState.weight = this._floats[5] * blendWeight; + animationState.currentTime = this._floats[2] * blendWeight; + } + }; + return AnimationTimelineState; + })(dragonBones.TweenTimelineState); + dragonBones.AnimationTimelineState = AnimationTimelineState; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var EventObject = (function (_super) { + __extends(EventObject, _super); + function EventObject() { + return null !== _super && _super.apply(this, arguments) || this; + } + EventObject.actionDataToInstance = function (data, instance, armature) { + 0 === data.type ? instance.type = EventObject.FRAME_EVENT : instance.type = 10 === data.type ? EventObject.FRAME_EVENT : EventObject.SOUND_EVENT; + instance.name = data.name; + instance.armature = armature; + instance.actionData = data; + instance.data = data.data; + null !== data.bone && (instance.bone = armature.getBone(data.bone.name)); + null !== data.slot && (instance.slot = armature.getSlot(data.slot.name)); + }; + EventObject.toString = function () { + return "[class dragonBones.EventObject]"; + }; + EventObject.prototype._onClear = function () { + this.time = 0; + this.type = ""; + this.name = ""; + this.armature = null; + this.bone = null; + this.slot = null; + this.animationState = null; + this.actionData = null; + this.data = null; + }; + EventObject.START = "start"; + EventObject.LOOP_COMPLETE = "loopComplete"; + EventObject.COMPLETE = "complete"; + EventObject.FADE_IN = "fadeIn"; + EventObject.FADE_IN_COMPLETE = "fadeInComplete"; + EventObject.FADE_OUT = "fadeOut"; + EventObject.FADE_OUT_COMPLETE = "fadeOutComplete"; + EventObject.FRAME_EVENT = "frameEvent"; + EventObject.SOUND_EVENT = "soundEvent"; + return EventObject; + })(dragonBones.BaseObject); + dragonBones.EventObject = EventObject; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var DataParser = (function () { + function DataParser() { } + DataParser._getArmatureType = function (value) { + switch (value.toLowerCase()) { + case "stage": + return 2; + + case "armature": + return 0; + + case "movieclip": + return 1; + + default: + return 0; + } + }; + DataParser._getBoneType = function (value) { + switch (value.toLowerCase()) { + case "bone": + return 0; + + case "surface": + return 1; + + default: + return 0; + } + }; + DataParser._getDisplayType = function (value) { + switch (value.toLowerCase()) { + case "image": + return 0; + + case "mesh": + return 2; + + case "armature": + return 1; + + case "boundingbox": + return 3; + + case "path": + return 4; + + default: + return 0; + } + }; + DataParser._getBoundingBoxType = function (value) { + switch (value.toLowerCase()) { + case "rectangle": + return 0; + + case "ellipse": + return 1; + + case "polygon": + return 2; + + default: + return 0; + } + }; + DataParser._getActionType = function (value) { + switch (value.toLowerCase()) { + case "play": + return 0; + + case "frame": + return 10; + + case "sound": + return 11; + + default: + return 0; + } + }; + DataParser._getBlendMode = function (value) { + switch (value.toLowerCase()) { + case "normal": + return 0; + + case "add": + return 1; + + case "alpha": + return 2; + + case "darken": + return 3; + + case "difference": + return 4; + + case "erase": + return 5; + + case "hardlight": + return 6; + + case "invert": + return 7; + + case "layer": + return 8; + + case "lighten": + return 9; + + case "multiply": + return 10; + + case "overlay": + return 11; + + case "screen": + return 12; + + case "subtract": + return 13; + + default: + return 0; + } + }; + DataParser._getPositionMode = function (value) { + switch (value.toLocaleLowerCase()) { + case "percent": + return 1; + + case "fixed": + return 0; + + default: + return 1; + } + }; + DataParser._getSpacingMode = function (value) { + switch (value.toLocaleLowerCase()) { + case "length": + return 0; + + case "percent": + return 2; + + case "fixed": + return 1; + + default: + return 0; + } + }; + DataParser._getRotateMode = function (value) { + switch (value.toLocaleLowerCase()) { + case "tangent": + return 0; + + case "chain": + return 1; + + case "chainscale": + return 2; + + default: + return 0; + } + }; + DataParser.parseDragonBonesData = function (rawData) { + console.warn("Deprecated."); + return rawData instanceof ArrayBuffer ? dragonBones.BinaryDataParser.getInstance().parseDragonBonesData(rawData) : dragonBones.ObjectDataParser.getInstance().parseDragonBonesData(rawData); + }; + DataParser.parseTextureAtlasData = function (rawData, scale) { + void 0 === scale && (scale = 1); + console.warn("\u5df2\u5e9f\u5f03"); + var textureAtlasData = {}; + var subTextureList = rawData[DataParser.SUB_TEXTURE]; + for (var i = 0, len = subTextureList.length; i < len; i++) { + var subTextureObject = subTextureList[i]; + var subTextureName = subTextureObject[DataParser.NAME]; + var subTextureRegion = new dragonBones.Rectangle(); + var subTextureFrame = null; + subTextureRegion.x = subTextureObject[DataParser.X] / scale; + subTextureRegion.y = subTextureObject[DataParser.Y] / scale; + subTextureRegion.width = subTextureObject[DataParser.WIDTH] / scale; + subTextureRegion.height = subTextureObject[DataParser.HEIGHT] / scale; + if (DataParser.FRAME_WIDTH in subTextureObject) { + subTextureFrame = new dragonBones.Rectangle(); + subTextureFrame.x = subTextureObject[DataParser.FRAME_X] / scale; + subTextureFrame.y = subTextureObject[DataParser.FRAME_Y] / scale; + subTextureFrame.width = subTextureObject[DataParser.FRAME_WIDTH] / scale; + subTextureFrame.height = subTextureObject[DataParser.FRAME_HEIGHT] / scale; + } + textureAtlasData[subTextureName] = { + region: subTextureRegion, + frame: subTextureFrame, + rotated: false + }; + } + return textureAtlasData; + }; + DataParser.DATA_VERSION_2_3 = "2.3"; + DataParser.DATA_VERSION_3_0 = "3.0"; + DataParser.DATA_VERSION_4_0 = "4.0"; + DataParser.DATA_VERSION_4_5 = "4.5"; + DataParser.DATA_VERSION_5_0 = "5.0"; + DataParser.DATA_VERSION_5_5 = "5.5"; + DataParser.DATA_VERSION = DataParser.DATA_VERSION_5_5; + DataParser.DATA_VERSIONS = [DataParser.DATA_VERSION_4_0, DataParser.DATA_VERSION_4_5, DataParser.DATA_VERSION_5_0, DataParser.DATA_VERSION_5_5]; + DataParser.TEXTURE_ATLAS = "textureAtlas"; + DataParser.SUB_TEXTURE = "SubTexture"; + DataParser.FORMAT = "format"; + DataParser.IMAGE_PATH = "imagePath"; + DataParser.WIDTH = "width"; + DataParser.HEIGHT = "height"; + DataParser.ROTATED = "rotated"; + DataParser.FRAME_X = "frameX"; + DataParser.FRAME_Y = "frameY"; + DataParser.FRAME_WIDTH = "frameWidth"; + DataParser.FRAME_HEIGHT = "frameHeight"; + DataParser.DRADON_BONES = "dragonBones"; + DataParser.USER_DATA = "userData"; + DataParser.ARMATURE = "armature"; + DataParser.BONE = "bone"; + DataParser.SURFACE = "surface"; + DataParser.SLOT = "slot"; + DataParser.CONSTRAINT = "constraint"; + DataParser.IK = "ik"; + DataParser.PATH_CONSTRAINT = "path"; + DataParser.SKIN = "skin"; + DataParser.DISPLAY = "display"; + DataParser.ANIMATION = "animation"; + DataParser.Z_ORDER = "zOrder"; + DataParser.FFD = "ffd"; + DataParser.FRAME = "frame"; + DataParser.TRANSLATE_FRAME = "translateFrame"; + DataParser.ROTATE_FRAME = "rotateFrame"; + DataParser.SCALE_FRAME = "scaleFrame"; + DataParser.DISPLAY_FRAME = "displayFrame"; + DataParser.COLOR_FRAME = "colorFrame"; + DataParser.DEFAULT_ACTIONS = "defaultActions"; + DataParser.ACTIONS = "actions"; + DataParser.EVENTS = "events"; + DataParser.INTS = "ints"; + DataParser.FLOATS = "floats"; + DataParser.STRINGS = "strings"; + DataParser.CANVAS = "canvas"; + DataParser.TRANSFORM = "transform"; + DataParser.PIVOT = "pivot"; + DataParser.AABB = "aabb"; + DataParser.COLOR = "color"; + DataParser.VERSION = "version"; + DataParser.COMPATIBLE_VERSION = "compatibleVersion"; + DataParser.FRAME_RATE = "frameRate"; + DataParser.TYPE = "type"; + DataParser.SUB_TYPE = "subType"; + DataParser.NAME = "name"; + DataParser.PARENT = "parent"; + DataParser.TARGET = "target"; + DataParser.STAGE = "stage"; + DataParser.SHARE = "share"; + DataParser.PATH = "path"; + DataParser.LENGTH = "length"; + DataParser.DISPLAY_INDEX = "displayIndex"; + DataParser.BLEND_MODE = "blendMode"; + DataParser.INHERIT_TRANSLATION = "inheritTranslation"; + DataParser.INHERIT_ROTATION = "inheritRotation"; + DataParser.INHERIT_SCALE = "inheritScale"; + DataParser.INHERIT_REFLECTION = "inheritReflection"; + DataParser.INHERIT_ANIMATION = "inheritAnimation"; + DataParser.INHERIT_DEFORM = "inheritDeform"; + DataParser.SEGMENT_X = "segmentX"; + DataParser.SEGMENT_Y = "segmentY"; + DataParser.BEND_POSITIVE = "bendPositive"; + DataParser.CHAIN = "chain"; + DataParser.WEIGHT = "weight"; + DataParser.FADE_IN_TIME = "fadeInTime"; + DataParser.PLAY_TIMES = "playTimes"; + DataParser.SCALE = "scale"; + DataParser.OFFSET = "offset"; + DataParser.POSITION = "position"; + DataParser.DURATION = "duration"; + DataParser.TWEEN_EASING = "tweenEasing"; + DataParser.TWEEN_ROTATE = "tweenRotate"; + DataParser.TWEEN_SCALE = "tweenScale"; + DataParser.CLOCK_WISE = "clockwise"; + DataParser.CURVE = "curve"; + DataParser.SOUND = "sound"; + DataParser.EVENT = "event"; + DataParser.ACTION = "action"; + DataParser.X = "x"; + DataParser.Y = "y"; + DataParser.SKEW_X = "skX"; + DataParser.SKEW_Y = "skY"; + DataParser.SCALE_X = "scX"; + DataParser.SCALE_Y = "scY"; + DataParser.VALUE = "value"; + DataParser.ROTATE = "rotate"; + DataParser.SKEW = "skew"; + DataParser.ALPHA_OFFSET = "aO"; + DataParser.RED_OFFSET = "rO"; + DataParser.GREEN_OFFSET = "gO"; + DataParser.BLUE_OFFSET = "bO"; + DataParser.ALPHA_MULTIPLIER = "aM"; + DataParser.RED_MULTIPLIER = "rM"; + DataParser.GREEN_MULTIPLIER = "gM"; + DataParser.BLUE_MULTIPLIER = "bM"; + DataParser.UVS = "uvs"; + DataParser.VERTICES = "vertices"; + DataParser.TRIANGLES = "triangles"; + DataParser.WEIGHTS = "weights"; + DataParser.SLOT_POSE = "slotPose"; + DataParser.BONE_POSE = "bonePose"; + DataParser.GLUE_WEIGHTS = "glueWeights"; + DataParser.GLUE_MESHES = "glueMeshes"; + DataParser.BONES = "bones"; + DataParser.POSITION_MODE = "positionMode"; + DataParser.SPACING_MODE = "spacingMode"; + DataParser.ROTATE_MODE = "rotateMode"; + DataParser.SPACING = "spacing"; + DataParser.ROTATE_OFFSET = "rotateOffset"; + DataParser.ROTATE_MIX = "rotateMix"; + DataParser.TRANSLATE_MIX = "translateMix"; + DataParser.TARGET_DISPLAY = "targetDisplay"; + DataParser.CLOSED = "closed"; + DataParser.CONSTANT_SPEED = "constantSpeed"; + DataParser.VERTEX_COUNT = "vertexCount"; + DataParser.LENGTHS = "lengths"; + DataParser.GOTO_AND_PLAY = "gotoAndPlay"; + DataParser.DEFAULT_NAME = "default"; + return DataParser; + })(); + dragonBones.DataParser = DataParser; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var ObjectDataParser = (function (_super) { + __extends(ObjectDataParser, _super); + function ObjectDataParser() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this._rawTextureAtlasIndex = 0; + _this._rawBones = []; + _this._data = null; + _this._armature = null; + _this._bone = null; + _this._surface = null; + _this._slot = null; + _this._skin = null; + _this._mesh = null; + _this._animation = null; + _this._timeline = null; + _this._rawTextureAtlases = null; + _this._defaultColorOffset = -1; + _this._prevClockwise = 0; + _this._prevRotation = 0; + _this._helpMatrixA = new dragonBones.Matrix(); + _this._helpMatrixB = new dragonBones.Matrix(); + _this._helpTransform = new dragonBones.Transform(); + _this._helpColorTransform = new dragonBones.ColorTransform(); + _this._helpPoint = new dragonBones.Point(); + _this._helpArray = []; + _this._intArray = []; + _this._floatArray = []; + _this._frameIntArray = []; + _this._frameFloatArray = []; + _this._frameArray = []; + _this._timelineArray = []; + _this._cacheRawMeshes = []; + _this._cacheMeshes = []; + _this._actionFrames = []; + _this._weightSlotPose = {}; + _this._weightBonePoses = {}; + _this._cacheBones = {}; + _this._slotChildActions = {}; + return _this; + } + ObjectDataParser._getBoolean = function (rawData, key, defaultValue) { + if (key in rawData) { + var value = rawData[key]; + var type = typeof value; + if ("boolean" === type) return value; + if ("string" !== type) return !!value; + switch (value) { + case "0": + case "NaN": + case "": + case "false": + case "null": + case "undefined": + return false; + + default: + return true; + } + } + return defaultValue; + }; + ObjectDataParser._getNumber = function (rawData, key, defaultValue) { + if (key in rawData) { + var value = rawData[key]; + if (null === value || "NaN" === value) return defaultValue; + return +value || 0; + } + return defaultValue; + }; + ObjectDataParser._getString = function (rawData, key, defaultValue) { + if (key in rawData) { + var value = rawData[key]; + var type = typeof value; + if ("string" === type) { + if (dragonBones.DragonBones.webAssembly) for (var i = 0, l = value.length; i < l; ++i) if (value.charCodeAt(i) > 255) return encodeURI(value); + return value; + } + return String(value); + } + return defaultValue; + }; + ObjectDataParser.prototype._getCurvePoint = function (x1, y1, x2, y2, x3, y3, x4, y4, t, result) { + var l_t = 1 - t; + var powA = l_t * l_t; + var powB = t * t; + var kA = l_t * powA; + var kB = 3 * t * powA; + var kC = 3 * l_t * powB; + var kD = t * powB; + result.x = kA * x1 + kB * x2 + kC * x3 + kD * x4; + result.y = kA * y1 + kB * y2 + kC * y3 + kD * y4; + }; + ObjectDataParser.prototype._samplingEasingCurve = function (curve, samples) { + var curveCount = curve.length; + var stepIndex = -2; + for (var i = 0, l = samples.length; i < l; ++i) { + var t = (i + 1) / (l + 1); + while ((stepIndex + 6 < curveCount ? curve[stepIndex + 6] : 1) < t) stepIndex += 6; + var isInCurve = stepIndex >= 0 && stepIndex + 6 < curveCount; + var x1 = isInCurve ? curve[stepIndex] : 0; + var y1 = isInCurve ? curve[stepIndex + 1] : 0; + var x2 = curve[stepIndex + 2]; + var y2 = curve[stepIndex + 3]; + var x3 = curve[stepIndex + 4]; + var y3 = curve[stepIndex + 5]; + var x4 = isInCurve ? curve[stepIndex + 6] : 1; + var y4 = isInCurve ? curve[stepIndex + 7] : 1; + var lower = 0; + var higher = 1; + while (higher - lower > 1e-4) { + var percentage = .5 * (higher + lower); + this._getCurvePoint(x1, y1, x2, y2, x3, y3, x4, y4, percentage, this._helpPoint); + t - this._helpPoint.x > 0 ? lower = percentage : higher = percentage; + } + samples[i] = this._helpPoint.y; + } + }; + ObjectDataParser.prototype._parseActionDataInFrame = function (rawData, frameStart, bone, slot) { + dragonBones.DataParser.EVENT in rawData && this._mergeActionFrame(rawData[dragonBones.DataParser.EVENT], frameStart, 10, bone, slot); + dragonBones.DataParser.SOUND in rawData && this._mergeActionFrame(rawData[dragonBones.DataParser.SOUND], frameStart, 11, bone, slot); + dragonBones.DataParser.ACTION in rawData && this._mergeActionFrame(rawData[dragonBones.DataParser.ACTION], frameStart, 0, bone, slot); + dragonBones.DataParser.EVENTS in rawData && this._mergeActionFrame(rawData[dragonBones.DataParser.EVENTS], frameStart, 10, bone, slot); + dragonBones.DataParser.ACTIONS in rawData && this._mergeActionFrame(rawData[dragonBones.DataParser.ACTIONS], frameStart, 0, bone, slot); + }; + ObjectDataParser.prototype._mergeActionFrame = function (rawData, frameStart, type, bone, slot) { + var actionOffset = dragonBones.DragonBones.webAssembly ? this._armature.actions.size() : this._armature.actions.length; + var actions = this._parseActionData(rawData, type, bone, slot); + var frameIndex = 0; + var frame = null; + for (var _i = 0, actions_2 = actions; _i < actions_2.length; _i++) { + var action = actions_2[_i]; + this._armature.addAction(action, false); + } + if (0 === this._actionFrames.length) { + frame = new ActionFrame(); + frame.frameStart = 0; + this._actionFrames.push(frame); + frame = null; + } + for (var _a = 0, _b = this._actionFrames; _a < _b.length; _a++) { + var eachFrame = _b[_a]; + if (eachFrame.frameStart === frameStart) { + frame = eachFrame; + break; + } + if (eachFrame.frameStart > frameStart) break; + frameIndex++; + } + if (null === frame) { + frame = new ActionFrame(); + frame.frameStart = frameStart; + this._actionFrames.splice(frameIndex + 1, 0, frame); + } + for (var i = 0; i < actions.length; ++i) frame.actions.push(actionOffset + i); + }; + ObjectDataParser.prototype._parseArmature = function (rawData, scale) { + var armature = dragonBones.BaseObject.borrowObject(dragonBones.ArmatureData); + armature.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + armature.frameRate = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.FRAME_RATE, this._data.frameRate); + armature.scale = scale; + dragonBones.DataParser.TYPE in rawData && "string" === typeof rawData[dragonBones.DataParser.TYPE] ? armature.type = dragonBones.DataParser._getArmatureType(rawData[dragonBones.DataParser.TYPE]) : armature.type = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TYPE, 0); + 0 === armature.frameRate && (armature.frameRate = 24); + this._armature = armature; + if (dragonBones.DataParser.CANVAS in rawData) { + var rawCanvas = rawData[dragonBones.DataParser.CANVAS]; + var canvas = dragonBones.BaseObject.borrowObject(dragonBones.CanvasData); + dragonBones.DataParser.COLOR in rawCanvas ? canvas.hasBackground = true : canvas.hasBackground = false; + canvas.color = ObjectDataParser._getNumber(rawCanvas, dragonBones.DataParser.COLOR, 0); + canvas.x = ObjectDataParser._getNumber(rawCanvas, dragonBones.DataParser.X, 0) * armature.scale; + canvas.y = ObjectDataParser._getNumber(rawCanvas, dragonBones.DataParser.Y, 0) * armature.scale; + canvas.width = ObjectDataParser._getNumber(rawCanvas, dragonBones.DataParser.WIDTH, 0) * armature.scale; + canvas.height = ObjectDataParser._getNumber(rawCanvas, dragonBones.DataParser.HEIGHT, 0) * armature.scale; + armature.canvas = canvas; + } + if (dragonBones.DataParser.AABB in rawData) { + var rawAABB = rawData[dragonBones.DataParser.AABB]; + armature.aabb.x = ObjectDataParser._getNumber(rawAABB, dragonBones.DataParser.X, 0) * armature.scale; + armature.aabb.y = ObjectDataParser._getNumber(rawAABB, dragonBones.DataParser.Y, 0) * armature.scale; + armature.aabb.width = ObjectDataParser._getNumber(rawAABB, dragonBones.DataParser.WIDTH, 0) * armature.scale; + armature.aabb.height = ObjectDataParser._getNumber(rawAABB, dragonBones.DataParser.HEIGHT, 0) * armature.scale; + } + if (dragonBones.DataParser.BONE in rawData) { + var rawBones = rawData[dragonBones.DataParser.BONE]; + for (var _i = 0, rawBones_1 = rawBones; _i < rawBones_1.length; _i++) { + var rawBone = rawBones_1[_i]; + var parentName = ObjectDataParser._getString(rawBone, dragonBones.DataParser.PARENT, ""); + var bone = this._parseBone(rawBone); + if (parentName.length > 0) { + var parent_1 = armature.getBone(parentName); + if (null !== parent_1) bone.parent = parent_1; else { + parentName in this._cacheBones || (this._cacheBones[parentName] = []); + this._cacheBones[parentName].push(bone); + } + } + if (bone.name in this._cacheBones) { + for (var _a = 0, _b = this._cacheBones[bone.name]; _a < _b.length; _a++) { + var child = _b[_a]; + child.parent = bone; + } + delete this._cacheBones[bone.name]; + } + armature.addBone(bone); + this._rawBones.push(bone); + } + } + if (dragonBones.DataParser.IK in rawData) { + var rawIKS = rawData[dragonBones.DataParser.IK]; + for (var _c = 0, rawIKS_1 = rawIKS; _c < rawIKS_1.length; _c++) { + var rawIK = rawIKS_1[_c]; + var constraint = this._parseIKConstraint(rawIK); + constraint && armature.addConstraint(constraint); + } + } + armature.sortBones(); + if (dragonBones.DataParser.SLOT in rawData) { + var zOrder = 0; + var rawSlots = rawData[dragonBones.DataParser.SLOT]; + for (var _d = 0, rawSlots_1 = rawSlots; _d < rawSlots_1.length; _d++) { + var rawSlot = rawSlots_1[_d]; + armature.addSlot(this._parseSlot(rawSlot, zOrder++)); + } + } + if (dragonBones.DataParser.SKIN in rawData) { + var rawSkins = rawData[dragonBones.DataParser.SKIN]; + for (var _e = 0, rawSkins_1 = rawSkins; _e < rawSkins_1.length; _e++) { + var rawSkin = rawSkins_1[_e]; + armature.addSkin(this._parseSkin(rawSkin)); + } + } + if (dragonBones.DataParser.PATH_CONSTRAINT in rawData) { + var rawPaths = rawData[dragonBones.DataParser.PATH_CONSTRAINT]; + for (var _f = 0, rawPaths_1 = rawPaths; _f < rawPaths_1.length; _f++) { + var rawPath = rawPaths_1[_f]; + var constraint = this._parsePathConstraint(rawPath); + constraint && armature.addConstraint(constraint); + } + } + for (var i = 0, l = this._cacheRawMeshes.length; i < l; ++i) { + var rawMeshData = this._cacheRawMeshes[i]; + if (!(dragonBones.DataParser.GLUE_WEIGHTS in rawMeshData) || !(dragonBones.DataParser.GLUE_MESHES in rawMeshData)) continue; + this._parseMeshGlue(rawMeshData, this._cacheMeshes[i]); + } + for (var i = 0, l = this._cacheRawMeshes.length; i < l; ++i) { + var rawData_1 = this._cacheRawMeshes[i]; + var shareName = ObjectDataParser._getString(rawData_1, dragonBones.DataParser.SHARE, ""); + if (0 === shareName.length) continue; + var skinName = ObjectDataParser._getString(rawData_1, dragonBones.DataParser.SKIN, dragonBones.DataParser.DEFAULT_NAME); + 0 === skinName.length && (skinName = dragonBones.DataParser.DEFAULT_NAME); + var shareMesh = armature.getMesh(skinName, "", shareName); + if (null === shareMesh) continue; + var mesh = this._cacheMeshes[i]; + mesh.vertices.shareFrom(shareMesh.vertices); + } + if (dragonBones.DataParser.ANIMATION in rawData) { + var rawAnimations = rawData[dragonBones.DataParser.ANIMATION]; + for (var _g = 0, rawAnimations_1 = rawAnimations; _g < rawAnimations_1.length; _g++) { + var rawAnimation = rawAnimations_1[_g]; + var animation = this._parseAnimation(rawAnimation); + armature.addAnimation(animation); + } + } + if (dragonBones.DataParser.DEFAULT_ACTIONS in rawData) { + var actions = this._parseActionData(rawData[dragonBones.DataParser.DEFAULT_ACTIONS], 0, null, null); + for (var _h = 0, actions_3 = actions; _h < actions_3.length; _h++) { + var action = actions_3[_h]; + armature.addAction(action, true); + if (0 === action.type) { + var animation = armature.getAnimation(action.name); + null !== animation && (armature.defaultAnimation = animation); + } + } + } + if (dragonBones.DataParser.ACTIONS in rawData) { + var actions = this._parseActionData(rawData[dragonBones.DataParser.ACTIONS], 0, null, null); + for (var _j = 0, actions_4 = actions; _j < actions_4.length; _j++) { + var action = actions_4[_j]; + armature.addAction(action, false); + } + } + this._rawBones.length = 0; + this._cacheRawMeshes.length = 0; + this._cacheMeshes.length = 0; + this._armature = null; + for (var k in this._weightSlotPose) delete this._weightSlotPose[k]; + for (var k in this._weightBonePoses) delete this._weightBonePoses[k]; + for (var k in this._cacheBones) delete this._cacheBones[k]; + for (var k in this._slotChildActions) delete this._slotChildActions[k]; + return armature; + }; + ObjectDataParser.prototype._parseBone = function (rawData) { + var type = 0; + var scale = this._armature.scale; + type = dragonBones.DataParser.TYPE in rawData && "string" === typeof rawData[dragonBones.DataParser.TYPE] ? dragonBones.DataParser._getBoneType(rawData[dragonBones.DataParser.TYPE]) : ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TYPE, 0); + if (0 === type) { + var bone = dragonBones.BaseObject.borrowObject(dragonBones.BoneData); + bone.inheritTranslation = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.INHERIT_TRANSLATION, true); + bone.inheritRotation = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.INHERIT_ROTATION, true); + bone.inheritScale = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.INHERIT_SCALE, true); + bone.inheritReflection = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.INHERIT_REFLECTION, true); + bone.length = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.LENGTH, 0) * scale; + bone.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + dragonBones.DataParser.TRANSFORM in rawData && this._parseTransform(rawData[dragonBones.DataParser.TRANSFORM], bone.transform, scale); + return bone; + } + var surface = dragonBones.BaseObject.borrowObject(dragonBones.SurfaceData); + surface.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + surface.segmentX = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SEGMENT_X, 0); + surface.segmentY = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SEGMENT_Y, 0); + surface.vertices.length = (surface.segmentX + 1) * (surface.segmentY + 1) * 2; + if (dragonBones.DataParser.VERTICES in rawData) { + var rawVertices = rawData[dragonBones.DataParser.VERTICES]; + for (var i = 0, l = surface.vertices.length; i < l; ++i) i < rawVertices.length ? surface.vertices[i] = rawVertices[i] * scale : surface.vertices[i] = 0; + } + return surface; + }; + ObjectDataParser.prototype._parseIKConstraint = function (rawData) { + var bone = this._armature.getBone(ObjectDataParser._getString(rawData, dragonBones.DataParser.BONE, "")); + if (null === bone) return null; + var target = this._armature.getBone(ObjectDataParser._getString(rawData, dragonBones.DataParser.TARGET, "")); + if (null === target) return null; + var constraint = dragonBones.BaseObject.borrowObject(dragonBones.IKConstraintData); + constraint.scaleEnabled = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.SCALE, false); + constraint.bendPositive = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.BEND_POSITIVE, true); + constraint.weight = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.WEIGHT, 1); + constraint.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + constraint.type = 0; + constraint.target = target; + var chain = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.CHAIN, 0); + if (chain > 0 && null !== bone.parent) { + constraint.root = bone.parent; + constraint.bone = bone; + } else { + constraint.root = bone; + constraint.bone = null; + } + return constraint; + }; + ObjectDataParser.prototype._parsePathConstraint = function (rawData) { + var target = this._armature.getSlot(ObjectDataParser._getString(rawData, dragonBones.DataParser.TARGET, "")); + if (null === target) return null; + var defaultSkin = this._armature.defaultSkin; + if (null === defaultSkin) return null; + var targetDisplay = defaultSkin.getDisplay(target.name, ObjectDataParser._getString(rawData, dragonBones.DataParser.TARGET_DISPLAY, target.name)); + if (null === targetDisplay || !(targetDisplay instanceof dragonBones.PathDisplayData)) return null; + var bones = rawData[dragonBones.DataParser.BONES]; + if (null === bones || 0 === bones.length) return null; + var constraint = dragonBones.BaseObject.borrowObject(dragonBones.PathConstraintData); + constraint.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + constraint.type = 1; + constraint.pathSlot = target; + constraint.pathDisplayData = targetDisplay; + constraint.target = target.parent; + constraint.positionMode = dragonBones.DataParser._getPositionMode(ObjectDataParser._getString(rawData, dragonBones.DataParser.POSITION_MODE, "")); + constraint.spacingMode = dragonBones.DataParser._getSpacingMode(ObjectDataParser._getString(rawData, dragonBones.DataParser.SPACING_MODE, "")); + constraint.rotateMode = dragonBones.DataParser._getRotateMode(ObjectDataParser._getString(rawData, dragonBones.DataParser.ROTATE_MODE, "")); + constraint.position = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.POSITION, 0); + constraint.spacing = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SPACING, 0); + constraint.rotateOffset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ROTATE_OFFSET, 0); + constraint.rotateMix = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ROTATE_MIX, 1); + constraint.translateMix = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TRANSLATE_MIX, 1); + for (var _i = 0, bones_3 = bones; _i < bones_3.length; _i++) { + var boneName = bones_3[_i]; + var bone = this._armature.getBone(boneName); + if (null !== bone) { + constraint.AddBone(bone); + null === constraint.root && (constraint.root = bone); + } + } + return constraint; + }; + ObjectDataParser.prototype._parseSlot = function (rawData, zOrder) { + var slot = dragonBones.BaseObject.borrowObject(dragonBones.SlotData); + slot.displayIndex = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.DISPLAY_INDEX, 0); + slot.zOrder = zOrder; + slot.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + slot.parent = this._armature.getBone(ObjectDataParser._getString(rawData, dragonBones.DataParser.PARENT, "")); + dragonBones.DataParser.BLEND_MODE in rawData && "string" === typeof rawData[dragonBones.DataParser.BLEND_MODE] ? slot.blendMode = dragonBones.DataParser._getBlendMode(rawData[dragonBones.DataParser.BLEND_MODE]) : slot.blendMode = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.BLEND_MODE, 0); + if (dragonBones.DataParser.COLOR in rawData) { + slot.color = dragonBones.SlotData.createColor(); + this._parseColorTransform(rawData[dragonBones.DataParser.COLOR], slot.color); + } else slot.color = dragonBones.SlotData.DEFAULT_COLOR; + dragonBones.DataParser.ACTIONS in rawData && (this._slotChildActions[slot.name] = this._parseActionData(rawData[dragonBones.DataParser.ACTIONS], 0, null, null)); + return slot; + }; + ObjectDataParser.prototype._parseSkin = function (rawData) { + var skin = dragonBones.BaseObject.borrowObject(dragonBones.SkinData); + skin.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, dragonBones.DataParser.DEFAULT_NAME); + 0 === skin.name.length && (skin.name = dragonBones.DataParser.DEFAULT_NAME); + if (dragonBones.DataParser.SLOT in rawData) { + var rawSlots = rawData[dragonBones.DataParser.SLOT]; + this._skin = skin; + for (var _i = 0, rawSlots_2 = rawSlots; _i < rawSlots_2.length; _i++) { + var rawSlot = rawSlots_2[_i]; + var slotName = ObjectDataParser._getString(rawSlot, dragonBones.DataParser.NAME, ""); + var slot = this._armature.getSlot(slotName); + if (null !== slot) { + this._slot = slot; + if (dragonBones.DataParser.DISPLAY in rawSlot) { + var rawDisplays = rawSlot[dragonBones.DataParser.DISPLAY]; + for (var _a = 0, rawDisplays_1 = rawDisplays; _a < rawDisplays_1.length; _a++) { + var rawDisplay = rawDisplays_1[_a]; + rawDisplay ? skin.addDisplay(slotName, this._parseDisplay(rawDisplay)) : skin.addDisplay(slotName, null); + } + } + this._slot = null; + } + } + this._skin = null; + } + return skin; + }; + ObjectDataParser.prototype._parseDisplay = function (rawData) { + var name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + var path = ObjectDataParser._getString(rawData, dragonBones.DataParser.PATH, ""); + var type = 0; + var display = null; + type = dragonBones.DataParser.TYPE in rawData && "string" === typeof rawData[dragonBones.DataParser.TYPE] ? dragonBones.DataParser._getDisplayType(rawData[dragonBones.DataParser.TYPE]) : ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TYPE, type); + switch (type) { + case 0: + var imageDisplay = display = dragonBones.BaseObject.borrowObject(dragonBones.ImageDisplayData); + imageDisplay.name = name; + imageDisplay.path = path.length > 0 ? path : name; + this._parsePivot(rawData, imageDisplay); + break; + + case 1: + var armatureDisplay = display = dragonBones.BaseObject.borrowObject(dragonBones.ArmatureDisplayData); + armatureDisplay.name = name; + armatureDisplay.path = path.length > 0 ? path : name; + armatureDisplay.inheritAnimation = true; + if (dragonBones.DataParser.ACTIONS in rawData) { + var actions = this._parseActionData(rawData[dragonBones.DataParser.ACTIONS], 0, null, null); + for (var _i = 0, actions_5 = actions; _i < actions_5.length; _i++) { + var action = actions_5[_i]; + armatureDisplay.addAction(action); + } + } else if (this._slot.name in this._slotChildActions) { + var displays = this._skin.getDisplays(this._slot.name); + if (null === displays ? 0 === this._slot.displayIndex : this._slot.displayIndex === displays.length) { + for (var _a = 0, _b = this._slotChildActions[this._slot.name]; _a < _b.length; _a++) { + var action = _b[_a]; + armatureDisplay.addAction(action); + } + delete this._slotChildActions[this._slot.name]; + } + } + break; + + case 2: + var meshDisplay = display = dragonBones.BaseObject.borrowObject(dragonBones.MeshDisplayData); + meshDisplay.vertices.inheritDeform = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.INHERIT_DEFORM, true); + meshDisplay.name = name; + meshDisplay.path = path.length > 0 ? path : name; + meshDisplay.vertices.data = this._data; + if (dragonBones.DataParser.SHARE in rawData) { + this._cacheRawMeshes.push(rawData); + this._cacheMeshes.push(meshDisplay); + } else this._parseMesh(rawData, meshDisplay); + if (dragonBones.DataParser.GLUE_WEIGHTS in rawData && dragonBones.DataParser.GLUE_MESHES in rawData) { + this._cacheRawMeshes.push(rawData); + this._cacheMeshes.push(meshDisplay); + } + break; + + case 3: + var boundingBox = this._parseBoundingBox(rawData); + if (null !== boundingBox) { + var boundingBoxDisplay = display = dragonBones.BaseObject.borrowObject(dragonBones.BoundingBoxDisplayData); + boundingBoxDisplay.name = name; + boundingBoxDisplay.path = path.length > 0 ? path : name; + boundingBoxDisplay.boundingBox = boundingBox; + } + break; + + case 4: + var rawCurveLengths = rawData[dragonBones.DataParser.LENGTHS]; + var pathDisplay = display = dragonBones.BaseObject.borrowObject(dragonBones.PathDisplayData); + pathDisplay.closed = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.CLOSED, false); + pathDisplay.constantSpeed = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.CONSTANT_SPEED, false); + pathDisplay.name = name; + pathDisplay.path = path.length > 0 ? path : name; + pathDisplay.vertices.data = this._data; + pathDisplay.curveLengths.length = rawCurveLengths.length; + for (var i = 0, l = rawCurveLengths.length; i < l; ++i) pathDisplay.curveLengths[i] = rawCurveLengths[i]; + this._parsePath(rawData, pathDisplay); + } + null !== display && dragonBones.DataParser.TRANSFORM in rawData && this._parseTransform(rawData[dragonBones.DataParser.TRANSFORM], display.transform, this._armature.scale); + return display; + }; + ObjectDataParser.prototype._parsePath = function (rawData, display) { + var rawVertices = rawData[dragonBones.DataParser.VERTICES]; + var vertexCount = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.VERTEX_COUNT, 0); + var vertexOffset = this._floatArray.length; + var pathOffset = this._intArray.length; + display.vertices.offset = pathOffset; + this._intArray.length += 2; + this._intArray[pathOffset + 0] = vertexCount; + this._intArray[pathOffset + 2] = vertexOffset; + if (dragonBones.DataParser.WEIGHTS in rawData) { + var rawWeights = rawData[dragonBones.DataParser.WEIGHTS]; + var rawBones = rawData[dragonBones.DataParser.BONES]; + var weightBoneCount = rawBones.length; + var weightCount = Math.floor(rawWeights.length - vertexCount) / 2; + var weightOffset = this._intArray.length; + var floatOffset = this._floatArray.length; + var sortedBones = this._armature.sortedBones; + var weight = dragonBones.BaseObject.borrowObject(dragonBones.WeightData); + weight.count = weightCount; + weight.offset = weightOffset; + this._intArray.length += 2 + weightBoneCount + vertexCount + weightCount; + this._intArray[weightOffset + 0] = weightBoneCount; + this._intArray[weightOffset + 1] = floatOffset; + for (var i = 0; i < weightBoneCount; i++) { + var rawBoneIndex = rawBones[i]; + var bone = this._rawBones[rawBoneIndex]; + weight.addBone(bone); + this._intArray[weightOffset + 2 + i] = sortedBones.indexOf(bone); + } + this._floatArray.length += 3 * weightCount; + for (var i = 0, iW = 0, iV = 0, iB = weightOffset + 2 + weightBoneCount, iF = floatOffset; i < weightCount; i++) { + var boneCount = rawWeights[iW++]; + this._intArray[iB++] = boneCount; + for (var j = 0; j < boneCount; j++) { + var boneIndex = rawWeights[iW++]; + var boneWeight = rawWeights[iW++]; + var x = rawVertices[iV++]; + var y = rawVertices[iV++]; + this._intArray[iB++] = rawBones.indexOf(boneIndex); + this._floatArray[iF++] = boneWeight; + this._floatArray[iF++] = x; + this._floatArray[iF++] = y; + } + } + display.vertices.weight = weight; + } else { + this._floatArray.length += rawVertices.length; + for (var i = 0, l = rawVertices.length; i < l; ++i) this._floatArray[vertexOffset + i] = rawVertices[i]; + } + }; + ObjectDataParser.prototype._parsePivot = function (rawData, display) { + if (dragonBones.DataParser.PIVOT in rawData) { + var rawPivot = rawData[dragonBones.DataParser.PIVOT]; + display.pivot.x = ObjectDataParser._getNumber(rawPivot, dragonBones.DataParser.X, 0); + display.pivot.y = ObjectDataParser._getNumber(rawPivot, dragonBones.DataParser.Y, 0); + } else { + display.pivot.x = .5; + display.pivot.y = .5; + } + }; + ObjectDataParser.prototype._parseMesh = function (rawData, mesh) { + var rawVertices = rawData[dragonBones.DataParser.VERTICES]; + var rawUVs = rawData[dragonBones.DataParser.UVS]; + var rawTriangles = rawData[dragonBones.DataParser.TRIANGLES]; + var vertexCount = Math.floor(rawVertices.length / 2); + var triangleCount = Math.floor(rawTriangles.length / 3); + var vertexOffset = this._floatArray.length; + var uvOffset = vertexOffset + 2 * vertexCount; + var meshOffset = this._intArray.length; + var meshName = this._skin.name + "_" + this._slot.name + "_" + mesh.name; + mesh.vertices.offset = meshOffset; + this._intArray.length += 4 + 3 * triangleCount; + this._intArray[meshOffset + 0] = vertexCount; + this._intArray[meshOffset + 1] = triangleCount; + this._intArray[meshOffset + 2] = vertexOffset; + for (var i = 0, l = 3 * triangleCount; i < l; ++i) this._intArray[meshOffset + 4 + i] = rawTriangles[i]; + this._floatArray.length += 2 * vertexCount + 2 * vertexCount; + for (var i = 0, l = 2 * vertexCount; i < l; ++i) { + this._floatArray[vertexOffset + i] = rawVertices[i]; + this._floatArray[uvOffset + i] = rawUVs[i]; + } + if (dragonBones.DataParser.WEIGHTS in rawData) { + var rawWeights = rawData[dragonBones.DataParser.WEIGHTS]; + var rawSlotPose = rawData[dragonBones.DataParser.SLOT_POSE]; + var rawBonePoses = rawData[dragonBones.DataParser.BONE_POSE]; + var sortedBones = this._armature.sortedBones; + var weightBoneIndices = new Array(); + var weightBoneCount = Math.floor(rawBonePoses.length / 7); + var floatOffset = this._floatArray.length; + var weightCount = Math.floor(rawWeights.length - vertexCount) / 2; + var weightOffset = this._intArray.length; + var weight = dragonBones.BaseObject.borrowObject(dragonBones.WeightData); + weight.count = weightCount; + weight.offset = weightOffset; + weightBoneIndices.length = weightBoneCount; + this._intArray.length += 2 + weightBoneCount + vertexCount + weightCount; + this._intArray[weightOffset + 1] = floatOffset; + for (var i = 0; i < weightBoneCount; ++i) { + var rawBoneIndex = rawBonePoses[7 * i]; + var bone = this._rawBones[rawBoneIndex]; + weight.addBone(bone); + weightBoneIndices[i] = rawBoneIndex; + this._intArray[weightOffset + 2 + i] = sortedBones.indexOf(bone); + } + this._floatArray.length += 3 * weightCount; + this._helpMatrixA.copyFromArray(rawSlotPose, 0); + for (var i = 0, iW = 0, iB = weightOffset + 2 + weightBoneCount, iV = floatOffset; i < vertexCount; ++i) { + var iD = 2 * i; + var vertexBoneCount = this._intArray[iB++] = rawWeights[iW++]; + var x = this._floatArray[vertexOffset + iD]; + var y = this._floatArray[vertexOffset + iD + 1]; + this._helpMatrixA.transformPoint(x, y, this._helpPoint); + x = this._helpPoint.x; + y = this._helpPoint.y; + for (var j = 0; j < vertexBoneCount; ++j) { + var rawBoneIndex = rawWeights[iW++]; + var boneIndex = weightBoneIndices.indexOf(rawBoneIndex); + this._helpMatrixB.copyFromArray(rawBonePoses, 7 * boneIndex + 1); + this._helpMatrixB.invert(); + this._helpMatrixB.transformPoint(x, y, this._helpPoint); + this._intArray[iB++] = boneIndex; + this._floatArray[iV++] = rawWeights[iW++]; + this._floatArray[iV++] = this._helpPoint.x; + this._floatArray[iV++] = this._helpPoint.y; + } + } + mesh.vertices.weight = weight; + this._weightSlotPose[meshName] = rawSlotPose; + this._weightBonePoses[meshName] = rawBonePoses; + } + }; + ObjectDataParser.prototype._parseMeshGlue = function (rawData, mesh) { + rawData; + mesh; + }; + ObjectDataParser.prototype._parseBoundingBox = function (rawData) { + var boundingBox = null; + var type = 0; + type = dragonBones.DataParser.SUB_TYPE in rawData && "string" === typeof rawData[dragonBones.DataParser.SUB_TYPE] ? dragonBones.DataParser._getBoundingBoxType(rawData[dragonBones.DataParser.SUB_TYPE]) : ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SUB_TYPE, type); + switch (type) { + case 0: + boundingBox = dragonBones.BaseObject.borrowObject(dragonBones.RectangleBoundingBoxData); + break; + + case 1: + boundingBox = dragonBones.BaseObject.borrowObject(dragonBones.EllipseBoundingBoxData); + break; + + case 2: + boundingBox = this._parsePolygonBoundingBox(rawData); + } + if (null !== boundingBox) { + boundingBox.color = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.COLOR, 0); + if (0 === boundingBox.type || 1 === boundingBox.type) { + boundingBox.width = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.WIDTH, 0); + boundingBox.height = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.HEIGHT, 0); + } + } + return boundingBox; + }; + ObjectDataParser.prototype._parsePolygonBoundingBox = function (rawData) { + var polygonBoundingBox = dragonBones.BaseObject.borrowObject(dragonBones.PolygonBoundingBoxData); + if (dragonBones.DataParser.VERTICES in rawData) { + var scale = this._armature.scale; + var rawVertices = rawData[dragonBones.DataParser.VERTICES]; + var vertices = polygonBoundingBox.vertices; + dragonBones.DragonBones.webAssembly ? vertices.resize(rawVertices.length, 0) : vertices.length = rawVertices.length; + for (var i = 0, l = rawVertices.length; i < l; i += 2) { + var x = rawVertices[i] * scale; + var y = rawVertices[i + 1] * scale; + if (dragonBones.DragonBones.webAssembly) { + vertices.set(i, x); + vertices.set(i + 1, y); + } else { + vertices[i] = x; + vertices[i + 1] = y; + } + if (0 === i) { + polygonBoundingBox.x = x; + polygonBoundingBox.y = y; + polygonBoundingBox.width = x; + polygonBoundingBox.height = y; + } else { + x < polygonBoundingBox.x ? polygonBoundingBox.x = x : x > polygonBoundingBox.width && (polygonBoundingBox.width = x); + y < polygonBoundingBox.y ? polygonBoundingBox.y = y : y > polygonBoundingBox.height && (polygonBoundingBox.height = y); + } + } + polygonBoundingBox.width -= polygonBoundingBox.x; + polygonBoundingBox.height -= polygonBoundingBox.y; + } else console.warn("Data error.\n Please reexport DragonBones Data to fixed the bug."); + return polygonBoundingBox; + }; + ObjectDataParser.prototype._parseAnimation = function (rawData) { + var animation = dragonBones.BaseObject.borrowObject(dragonBones.AnimationData); + animation.frameCount = Math.max(ObjectDataParser._getNumber(rawData, dragonBones.DataParser.DURATION, 1), 1); + animation.playTimes = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.PLAY_TIMES, 1); + animation.duration = animation.frameCount / this._armature.frameRate; + animation.fadeInTime = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.FADE_IN_TIME, 0); + animation.scale = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE, 1); + animation.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, dragonBones.DataParser.DEFAULT_NAME); + 0 === animation.name.length && (animation.name = dragonBones.DataParser.DEFAULT_NAME); + animation.frameIntOffset = this._frameIntArray.length; + animation.frameFloatOffset = this._frameFloatArray.length; + animation.frameOffset = this._frameArray.length; + this._animation = animation; + if (dragonBones.DataParser.FRAME in rawData) { + var rawFrames = rawData[dragonBones.DataParser.FRAME]; + var keyFrameCount = rawFrames.length; + if (keyFrameCount > 0) for (var i = 0, frameStart = 0; i < keyFrameCount; ++i) { + var rawFrame = rawFrames[i]; + this._parseActionDataInFrame(rawFrame, frameStart, null, null); + frameStart += ObjectDataParser._getNumber(rawFrame, dragonBones.DataParser.DURATION, 1); + } + } + dragonBones.DataParser.Z_ORDER in rawData && (this._animation.zOrderTimeline = this._parseTimeline(rawData[dragonBones.DataParser.Z_ORDER], null, dragonBones.DataParser.FRAME, 1, false, false, 0, this._parseZOrderFrame)); + if (dragonBones.DataParser.BONE in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.BONE]; + for (var _i = 0, rawTimelines_1 = rawTimelines; _i < rawTimelines_1.length; _i++) { + var rawTimeline = rawTimelines_1[_i]; + this._parseBoneTimeline(rawTimeline); + } + } + if (dragonBones.DataParser.SURFACE in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.SURFACE]; + for (var _a = 0, rawTimelines_2 = rawTimelines; _a < rawTimelines_2.length; _a++) { + var rawTimeline = rawTimelines_2[_a]; + var surfaceName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.NAME, ""); + this._surface = this._armature.getBone(surfaceName); + if (null === this._surface) continue; + var timeline = this._parseTimeline(rawTimeline, null, dragonBones.DataParser.FRAME, 50, false, true, 0, this._parseSurfaceFrame); + null !== timeline && this._animation.addSurfaceTimeline(this._surface, timeline); + this._surface = null; + } + } + if (dragonBones.DataParser.SLOT in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.SLOT]; + for (var _b = 0, rawTimelines_3 = rawTimelines; _b < rawTimelines_3.length; _b++) { + var rawTimeline = rawTimelines_3[_b]; + this._parseSlotTimeline(rawTimeline); + } + } + if (dragonBones.DataParser.FFD in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.FFD]; + for (var _c = 0, rawTimelines_4 = rawTimelines; _c < rawTimelines_4.length; _c++) { + var rawTimeline = rawTimelines_4[_c]; + var skinName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.SKIN, dragonBones.DataParser.DEFAULT_NAME); + var slotName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.SLOT, ""); + var displayName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.NAME, ""); + 0 === skinName.length && (skinName = dragonBones.DataParser.DEFAULT_NAME); + this._slot = this._armature.getSlot(slotName); + this._mesh = this._armature.getMesh(skinName, slotName, displayName); + if (null === this._slot || null === this._mesh) continue; + var timeline = this._parseTimeline(rawTimeline, null, dragonBones.DataParser.FRAME, 22, false, true, 0, this._parseSlotFFDFrame); + null !== timeline && this._animation.addSlotTimeline(this._slot, timeline); + this._slot = null; + this._mesh = null; + } + } + if (dragonBones.DataParser.IK in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.IK]; + for (var _d = 0, rawTimelines_5 = rawTimelines; _d < rawTimelines_5.length; _d++) { + var rawTimeline = rawTimelines_5[_d]; + var constraintName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.NAME, ""); + var constraint = this._armature.getConstraint(constraintName); + if (null === constraint) continue; + var timeline = this._parseTimeline(rawTimeline, null, dragonBones.DataParser.FRAME, 30, true, false, 2, this._parseIKConstraintFrame); + null !== timeline && this._animation.addConstraintTimeline(constraint, timeline); + } + } + if (dragonBones.DataParser.ANIMATION in rawData) { + var rawTimelines = rawData[dragonBones.DataParser.ANIMATION]; + for (var _e = 0, rawTimelines_6 = rawTimelines; _e < rawTimelines_6.length; _e++) { + var rawTimeline = rawTimelines_6[_e]; + var animationName = ObjectDataParser._getString(rawTimeline, dragonBones.DataParser.NAME, ""); + var timeline = this._parseTimeline(rawTimeline, null, dragonBones.DataParser.FRAME, 40, true, false, 2, this._parseAnimationFrame); + null !== timeline && this._animation.addAnimationTimeline(animationName, timeline); + } + } + if (this._actionFrames.length > 0) { + this._animation.actionTimeline = this._parseTimeline(null, this._actionFrames, "", 0, false, false, 0, this._parseActionFrame); + this._actionFrames.length = 0; + } + this._animation = null; + return animation; + }; + ObjectDataParser.prototype._parseTimeline = function (rawData, rawFrames, framesKey, type, addIntOffset, addFloatOffset, frameValueCount, frameParser) { + null !== rawData && framesKey.length > 0 && framesKey in rawData && (rawFrames = rawData[framesKey]); + if (null === rawFrames) return null; + var keyFrameCount = rawFrames.length; + if (0 === keyFrameCount) return null; + var frameIntArrayLength = this._frameIntArray.length; + var frameFloatArrayLength = this._frameFloatArray.length; + var timeline = dragonBones.BaseObject.borrowObject(dragonBones.TimelineData); + var timelineOffset = this._timelineArray.length; + this._timelineArray.length += 5 + keyFrameCount; + if (null !== rawData) { + this._timelineArray[timelineOffset + 0] = Math.round(100 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE, 1)); + this._timelineArray[timelineOffset + 1] = Math.round(100 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.OFFSET, 0)); + } else { + this._timelineArray[timelineOffset + 0] = 100; + this._timelineArray[timelineOffset + 1] = 0; + } + this._timelineArray[timelineOffset + 2] = keyFrameCount; + this._timelineArray[timelineOffset + 3] = frameValueCount; + this._timelineArray[timelineOffset + 4] = addIntOffset ? frameIntArrayLength - this._animation.frameIntOffset : addFloatOffset ? frameFloatArrayLength - this._animation.frameFloatOffset : 0; + this._timeline = timeline; + timeline.type = type; + timeline.offset = timelineOffset; + if (1 === keyFrameCount) { + timeline.frameIndicesOffset = -1; + this._timelineArray[timelineOffset + 5 + 0] = frameParser.call(this, rawFrames[0], 0, 0) - this._animation.frameOffset; + } else { + var totalFrameCount = this._animation.frameCount + 1; + var frameIndices = this._data.frameIndices; + var frameIndicesOffset = 0; + if (dragonBones.DragonBones.webAssembly) { + frameIndicesOffset = frameIndices.size(); + frameIndices.resize(frameIndicesOffset + totalFrameCount, 0); + } else { + frameIndicesOffset = frameIndices.length; + frameIndices.length += totalFrameCount; + } + timeline.frameIndicesOffset = frameIndicesOffset; + for (var i = 0, iK = 0, frameStart = 0, frameCount = 0; i < totalFrameCount; ++i) { + if (frameStart + frameCount <= i && iK < keyFrameCount) { + var rawFrame = rawFrames[iK]; + frameStart = i; + frameCount = iK === keyFrameCount - 1 ? this._animation.frameCount - frameStart : rawFrame instanceof ActionFrame ? this._actionFrames[iK + 1].frameStart - frameStart : ObjectDataParser._getNumber(rawFrame, dragonBones.DataParser.DURATION, 1); + this._timelineArray[timelineOffset + 5 + iK] = frameParser.call(this, rawFrame, frameStart, frameCount) - this._animation.frameOffset; + iK++; + } + dragonBones.DragonBones.webAssembly ? frameIndices.set(frameIndicesOffset + i, iK - 1) : frameIndices[frameIndicesOffset + i] = iK - 1; + } + } + this._timeline = null; + return timeline; + }; + ObjectDataParser.prototype._parseBoneTimeline = function (rawData) { + var bone = this._armature.getBone(ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, "")); + if (null === bone) return; + this._bone = bone; + this._slot = this._armature.getSlot(this._bone.name); + if (dragonBones.DataParser.TRANSLATE_FRAME in rawData) { + var timeline = this._parseTimeline(rawData, null, dragonBones.DataParser.TRANSLATE_FRAME, 11, false, true, 2, this._parseBoneTranslateFrame); + null !== timeline && this._animation.addBoneTimeline(bone, timeline); + } + if (dragonBones.DataParser.ROTATE_FRAME in rawData) { + var timeline = this._parseTimeline(rawData, null, dragonBones.DataParser.ROTATE_FRAME, 12, false, true, 2, this._parseBoneRotateFrame); + null !== timeline && this._animation.addBoneTimeline(bone, timeline); + } + if (dragonBones.DataParser.SCALE_FRAME in rawData) { + var timeline = this._parseTimeline(rawData, null, dragonBones.DataParser.SCALE_FRAME, 13, false, true, 2, this._parseBoneScaleFrame); + null !== timeline && this._animation.addBoneTimeline(bone, timeline); + } + if (dragonBones.DataParser.FRAME in rawData) { + var timeline = this._parseTimeline(rawData, null, dragonBones.DataParser.FRAME, 10, false, true, 6, this._parseBoneAllFrame); + null !== timeline && this._animation.addBoneTimeline(bone, timeline); + } + this._bone = null; + this._slot = null; + }; + ObjectDataParser.prototype._parseSlotTimeline = function (rawData) { + var slot = this._armature.getSlot(ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, "")); + if (null === slot) return; + this._slot = slot; + var displayTimeline = null; + displayTimeline = dragonBones.DataParser.DISPLAY_FRAME in rawData ? this._parseTimeline(rawData, null, dragonBones.DataParser.DISPLAY_FRAME, 20, false, false, 0, this._parseSlotDisplayFrame) : this._parseTimeline(rawData, null, dragonBones.DataParser.FRAME, 20, false, false, 0, this._parseSlotDisplayFrame); + null !== displayTimeline && this._animation.addSlotTimeline(slot, displayTimeline); + var colorTimeline = null; + colorTimeline = dragonBones.DataParser.COLOR_FRAME in rawData ? this._parseTimeline(rawData, null, dragonBones.DataParser.COLOR_FRAME, 21, true, false, 1, this._parseSlotColorFrame) : this._parseTimeline(rawData, null, dragonBones.DataParser.FRAME, 21, true, false, 1, this._parseSlotColorFrame); + null !== colorTimeline && this._animation.addSlotTimeline(slot, colorTimeline); + this._slot = null; + }; + ObjectDataParser.prototype._parseFrame = function (rawData, frameStart, frameCount) { + rawData; + frameCount; + var frameOffset = this._frameArray.length; + this._frameArray.length += 1; + this._frameArray[frameOffset + 0] = frameStart; + return frameOffset; + }; + ObjectDataParser.prototype._parseTweenFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseFrame(rawData, frameStart, frameCount); + if (frameCount > 0) if (dragonBones.DataParser.CURVE in rawData) { + var sampleCount = frameCount + 1; + this._helpArray.length = sampleCount; + this._samplingEasingCurve(rawData[dragonBones.DataParser.CURVE], this._helpArray); + this._frameArray.length += 2 + this._helpArray.length; + this._frameArray[frameOffset + 1] = 2; + this._frameArray[frameOffset + 2] = sampleCount; + for (var i = 0; i < sampleCount; ++i) this._frameArray[frameOffset + 3 + i] = Math.round(1e4 * this._helpArray[i]); + } else { + var noTween = -2; + var tweenEasing = noTween; + dragonBones.DataParser.TWEEN_EASING in rawData && (tweenEasing = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TWEEN_EASING, noTween)); + if (tweenEasing === noTween) { + this._frameArray.length += 1; + this._frameArray[frameOffset + 1] = 0; + } else if (0 === tweenEasing) { + this._frameArray.length += 1; + this._frameArray[frameOffset + 1] = 1; + } else if (tweenEasing < 0) { + this._frameArray.length += 2; + this._frameArray[frameOffset + 1] = 3; + this._frameArray[frameOffset + 2] = Math.round(100 * -tweenEasing); + } else if (tweenEasing <= 1) { + this._frameArray.length += 2; + this._frameArray[frameOffset + 1] = 4; + this._frameArray[frameOffset + 2] = Math.round(100 * tweenEasing); + } else { + this._frameArray.length += 2; + this._frameArray[frameOffset + 1] = 5; + this._frameArray[frameOffset + 2] = Math.round(100 * tweenEasing - 100); + } + } else { + this._frameArray.length += 1; + this._frameArray[frameOffset + 1] = 0; + } + return frameOffset; + }; + ObjectDataParser.prototype._parseActionFrame = function (frame, frameStart, frameCount) { + frameCount; + var frameOffset = this._frameArray.length; + var actionCount = frame.actions.length; + this._frameArray.length += 2 + actionCount; + this._frameArray[frameOffset + 0] = frameStart; + this._frameArray[frameOffset + 0 + 1] = actionCount; + for (var i = 0; i < actionCount; ++i) this._frameArray[frameOffset + 0 + 2 + i] = frame.actions[i]; + return frameOffset; + }; + ObjectDataParser.prototype._parseZOrderFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseFrame(rawData, frameStart, frameCount); + if (dragonBones.DataParser.Z_ORDER in rawData) { + var rawZOrder = rawData[dragonBones.DataParser.Z_ORDER]; + if (rawZOrder.length > 0) { + var slotCount = this._armature.sortedSlots.length; + var unchanged = new Array(slotCount - rawZOrder.length / 2); + var zOrders = new Array(slotCount); + for (var i_1 = 0; i_1 < unchanged.length; ++i_1) unchanged[i_1] = 0; + for (var i_2 = 0; i_2 < slotCount; ++i_2) zOrders[i_2] = -1; + var originalIndex = 0; + var unchangedIndex = 0; + for (var i_3 = 0, l = rawZOrder.length; i_3 < l; i_3 += 2) { + var slotIndex = rawZOrder[i_3]; + var zOrderOffset = rawZOrder[i_3 + 1]; + while (originalIndex !== slotIndex) unchanged[unchangedIndex++] = originalIndex++; + var index = originalIndex + zOrderOffset; + zOrders[index] = originalIndex++; + } + while (originalIndex < slotCount) unchanged[unchangedIndex++] = originalIndex++; + this._frameArray.length += 1 + slotCount; + this._frameArray[frameOffset + 1] = slotCount; + var i = slotCount; + while (i--) -1 === zOrders[i] ? this._frameArray[frameOffset + 2 + i] = unchanged[--unchangedIndex] || 0 : this._frameArray[frameOffset + 2 + i] = zOrders[i] || 0; + return frameOffset; + } + } + this._frameArray.length += 1; + this._frameArray[frameOffset + 1] = 0; + return frameOffset; + }; + ObjectDataParser.prototype._parseBoneAllFrame = function (rawData, frameStart, frameCount) { + this._helpTransform.identity(); + dragonBones.DataParser.TRANSFORM in rawData && this._parseTransform(rawData[dragonBones.DataParser.TRANSFORM], this._helpTransform, 1); + var rotation = this._helpTransform.rotation; + if (0 !== frameStart) if (0 === this._prevClockwise) rotation = this._prevRotation + dragonBones.Transform.normalizeRadian(rotation - this._prevRotation); else { + (this._prevClockwise > 0 ? rotation >= this._prevRotation : rotation <= this._prevRotation) && (this._prevClockwise = this._prevClockwise > 0 ? this._prevClockwise - 1 : this._prevClockwise + 1); + rotation = this._prevRotation + rotation - this._prevRotation + dragonBones.Transform.PI_D * this._prevClockwise; + } + this._prevClockwise = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.TWEEN_ROTATE, 0); + this._prevRotation = rotation; + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameFloatOffset = this._frameFloatArray.length; + this._frameFloatArray.length += 6; + this._frameFloatArray[frameFloatOffset++] = this._helpTransform.x; + this._frameFloatArray[frameFloatOffset++] = this._helpTransform.y; + this._frameFloatArray[frameFloatOffset++] = rotation; + this._frameFloatArray[frameFloatOffset++] = this._helpTransform.skew; + this._frameFloatArray[frameFloatOffset++] = this._helpTransform.scaleX; + this._frameFloatArray[frameFloatOffset++] = this._helpTransform.scaleY; + this._parseActionDataInFrame(rawData, frameStart, this._bone, this._slot); + return frameOffset; + }; + ObjectDataParser.prototype._parseBoneTranslateFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameFloatOffset = this._frameFloatArray.length; + this._frameFloatArray.length += 2; + this._frameFloatArray[frameFloatOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.X, 0); + this._frameFloatArray[frameFloatOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.Y, 0); + return frameOffset; + }; + ObjectDataParser.prototype._parseBoneRotateFrame = function (rawData, frameStart, frameCount) { + var rotation = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ROTATE, 0) * dragonBones.Transform.DEG_RAD; + if (0 !== frameStart) if (0 === this._prevClockwise) rotation = this._prevRotation + dragonBones.Transform.normalizeRadian(rotation - this._prevRotation); else { + (this._prevClockwise > 0 ? rotation >= this._prevRotation : rotation <= this._prevRotation) && (this._prevClockwise = this._prevClockwise > 0 ? this._prevClockwise - 1 : this._prevClockwise + 1); + rotation = this._prevRotation + rotation - this._prevRotation + dragonBones.Transform.PI_D * this._prevClockwise; + } + this._prevClockwise = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.CLOCK_WISE, 0); + this._prevRotation = rotation; + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameFloatOffset = this._frameFloatArray.length; + this._frameFloatArray.length += 2; + this._frameFloatArray[frameFloatOffset++] = rotation; + this._frameFloatArray[frameFloatOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SKEW, 0) * dragonBones.Transform.DEG_RAD; + return frameOffset; + }; + ObjectDataParser.prototype._parseBoneScaleFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameFloatOffset = this._frameFloatArray.length; + this._frameFloatArray.length += 2; + this._frameFloatArray[frameFloatOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.X, 1); + this._frameFloatArray[frameFloatOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.Y, 1); + return frameOffset; + }; + ObjectDataParser.prototype._parseSurfaceFrame = function (rawData, frameStart, frameCount) { + var frameFloatOffset = this._frameFloatArray.length; + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var rawVertices = rawData[dragonBones.DataParser.VERTICES]; + var offset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.OFFSET, 0); + var vertexCount = this._surface.vertices.length / 2; + var x = 0; + var y = 0; + this._frameFloatArray.length += 2 * vertexCount; + for (var i = 0; i < 2 * vertexCount; i += 2) { + x = i < offset || i - offset >= rawVertices.length ? 0 : rawVertices[i - offset]; + y = i + 1 < offset || i + 1 - offset >= rawVertices.length ? 0 : rawVertices[i + 1 - offset]; + this._frameFloatArray[frameFloatOffset + i] = x; + this._frameFloatArray[frameFloatOffset + i + 1] = y; + } + if (0 === frameStart) { + var frameIntOffset = this._frameIntArray.length; + this._frameIntArray.length += 5; + this._frameIntArray[frameIntOffset + 0] = 0; + this._frameIntArray[frameIntOffset + 1] = this._frameFloatArray.length - frameFloatOffset; + this._frameIntArray[frameIntOffset + 2] = this._frameFloatArray.length - frameFloatOffset; + this._frameIntArray[frameIntOffset + 3] = 0; + this._frameIntArray[frameIntOffset + 4] = frameFloatOffset - this._animation.frameFloatOffset; + this._timelineArray[this._timeline.offset + 3] = frameIntOffset - this._animation.frameIntOffset; + } + return frameOffset; + }; + ObjectDataParser.prototype._parseSlotDisplayFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseFrame(rawData, frameStart, frameCount); + this._frameArray.length += 1; + dragonBones.DataParser.VALUE in rawData ? this._frameArray[frameOffset + 1] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.VALUE, 0) : this._frameArray[frameOffset + 1] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.DISPLAY_INDEX, 0); + this._parseActionDataInFrame(rawData, frameStart, this._slot.parent, this._slot); + return frameOffset; + }; + ObjectDataParser.prototype._parseSlotColorFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var colorOffset = -1; + if (dragonBones.DataParser.VALUE in rawData || dragonBones.DataParser.COLOR in rawData) { + var rawColor = dragonBones.DataParser.VALUE in rawData ? rawData[dragonBones.DataParser.VALUE] : rawData[dragonBones.DataParser.COLOR]; + for (var k in rawColor) { + k; + this._parseColorTransform(rawColor, this._helpColorTransform); + colorOffset = this._intArray.length; + this._intArray.length += 8; + this._intArray[colorOffset++] = Math.round(100 * this._helpColorTransform.alphaMultiplier); + this._intArray[colorOffset++] = Math.round(100 * this._helpColorTransform.redMultiplier); + this._intArray[colorOffset++] = Math.round(100 * this._helpColorTransform.greenMultiplier); + this._intArray[colorOffset++] = Math.round(100 * this._helpColorTransform.blueMultiplier); + this._intArray[colorOffset++] = Math.round(this._helpColorTransform.alphaOffset); + this._intArray[colorOffset++] = Math.round(this._helpColorTransform.redOffset); + this._intArray[colorOffset++] = Math.round(this._helpColorTransform.greenOffset); + this._intArray[colorOffset++] = Math.round(this._helpColorTransform.blueOffset); + colorOffset -= 8; + break; + } + } + if (colorOffset < 0) { + if (this._defaultColorOffset < 0) { + this._defaultColorOffset = colorOffset = this._intArray.length; + this._intArray.length += 8; + this._intArray[colorOffset++] = 100; + this._intArray[colorOffset++] = 100; + this._intArray[colorOffset++] = 100; + this._intArray[colorOffset++] = 100; + this._intArray[colorOffset++] = 0; + this._intArray[colorOffset++] = 0; + this._intArray[colorOffset++] = 0; + this._intArray[colorOffset++] = 0; + } + colorOffset = this._defaultColorOffset; + } + var frameIntOffset = this._frameIntArray.length; + this._frameIntArray.length += 1; + this._frameIntArray[frameIntOffset] = colorOffset; + return frameOffset; + }; + ObjectDataParser.prototype._parseSlotFFDFrame = function (rawData, frameStart, frameCount) { + var frameFloatOffset = this._frameFloatArray.length; + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var rawVertices = dragonBones.DataParser.VERTICES in rawData ? rawData[dragonBones.DataParser.VERTICES] : null; + var offset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.OFFSET, 0); + var vertexCount = this._intArray[this._mesh.vertices.offset + 0]; + var meshName = this._mesh.parent.name + "_" + this._slot.name + "_" + this._mesh.name; + var weight = this._mesh.vertices.weight; + var x = 0; + var y = 0; + var iB = 0; + var iV = 0; + if (null !== weight) { + var rawSlotPose = this._weightSlotPose[meshName]; + this._helpMatrixA.copyFromArray(rawSlotPose, 0); + this._frameFloatArray.length += 2 * weight.count; + iB = weight.offset + 2 + weight.bones.length; + } else this._frameFloatArray.length += 2 * vertexCount; + for (var i = 0; i < 2 * vertexCount; i += 2) { + if (null === rawVertices) { + x = 0; + y = 0; + } else { + x = i < offset || i - offset >= rawVertices.length ? 0 : rawVertices[i - offset]; + y = i + 1 < offset || i + 1 - offset >= rawVertices.length ? 0 : rawVertices[i + 1 - offset]; + } + if (null !== weight) { + var rawBonePoses = this._weightBonePoses[meshName]; + var vertexBoneCount = this._intArray[iB++]; + this._helpMatrixA.transformPoint(x, y, this._helpPoint, true); + x = this._helpPoint.x; + y = this._helpPoint.y; + for (var j = 0; j < vertexBoneCount; ++j) { + var boneIndex = this._intArray[iB++]; + this._helpMatrixB.copyFromArray(rawBonePoses, 7 * boneIndex + 1); + this._helpMatrixB.invert(); + this._helpMatrixB.transformPoint(x, y, this._helpPoint, true); + this._frameFloatArray[frameFloatOffset + iV++] = this._helpPoint.x; + this._frameFloatArray[frameFloatOffset + iV++] = this._helpPoint.y; + } + } else { + this._frameFloatArray[frameFloatOffset + i] = x; + this._frameFloatArray[frameFloatOffset + i + 1] = y; + } + } + if (0 === frameStart) { + var frameIntOffset = this._frameIntArray.length; + this._frameIntArray.length += 5; + this._frameIntArray[frameIntOffset + 0] = this._mesh.vertices.offset; + this._frameIntArray[frameIntOffset + 1] = this._frameFloatArray.length - frameFloatOffset; + this._frameIntArray[frameIntOffset + 2] = this._frameFloatArray.length - frameFloatOffset; + this._frameIntArray[frameIntOffset + 3] = 0; + this._frameIntArray[frameIntOffset + 4] = frameFloatOffset - this._animation.frameFloatOffset; + this._timelineArray[this._timeline.offset + 3] = frameIntOffset - this._animation.frameIntOffset; + } + return frameOffset; + }; + ObjectDataParser.prototype._parseIKConstraintFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameIntOffset = this._frameIntArray.length; + this._frameIntArray.length += 2; + this._frameIntArray[frameIntOffset++] = ObjectDataParser._getBoolean(rawData, dragonBones.DataParser.BEND_POSITIVE, true) ? 1 : 0; + this._frameIntArray[frameIntOffset++] = Math.round(100 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.WEIGHT, 1)); + return frameOffset; + }; + ObjectDataParser.prototype._parseAnimationFrame = function (rawData, frameStart, frameCount) { + var frameOffset = this._parseTweenFrame(rawData, frameStart, frameCount); + var frameIntOffset = this._frameIntArray.length; + this._frameIntArray.length += 2; + this._frameIntArray[frameIntOffset++] = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.VALUE, 0); + this._frameIntArray[frameIntOffset++] = Math.round(100 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.WEIGHT, 1)); + return frameOffset; + }; + ObjectDataParser.prototype._parseActionData = function (rawData, type, bone, slot) { + var actions = new Array(); + if ("string" === typeof rawData) { + var action = dragonBones.BaseObject.borrowObject(dragonBones.ActionData); + action.type = type; + action.name = rawData; + action.bone = bone; + action.slot = slot; + actions.push(action); + } else if (rawData instanceof Array) for (var _i = 0, rawData_2 = rawData; _i < rawData_2.length; _i++) { + var rawAction = rawData_2[_i]; + var action = dragonBones.BaseObject.borrowObject(dragonBones.ActionData); + if (dragonBones.DataParser.GOTO_AND_PLAY in rawAction) { + action.type = 0; + action.name = ObjectDataParser._getString(rawAction, dragonBones.DataParser.GOTO_AND_PLAY, ""); + } else { + dragonBones.DataParser.TYPE in rawAction && "string" === typeof rawAction[dragonBones.DataParser.TYPE] ? action.type = dragonBones.DataParser._getActionType(rawAction[dragonBones.DataParser.TYPE]) : action.type = ObjectDataParser._getNumber(rawAction, dragonBones.DataParser.TYPE, type); + action.name = ObjectDataParser._getString(rawAction, dragonBones.DataParser.NAME, ""); + } + if (dragonBones.DataParser.BONE in rawAction) { + var boneName = ObjectDataParser._getString(rawAction, dragonBones.DataParser.BONE, ""); + action.bone = this._armature.getBone(boneName); + } else action.bone = bone; + if (dragonBones.DataParser.SLOT in rawAction) { + var slotName = ObjectDataParser._getString(rawAction, dragonBones.DataParser.SLOT, ""); + action.slot = this._armature.getSlot(slotName); + } else action.slot = slot; + var userData = null; + if (dragonBones.DataParser.INTS in rawAction) { + null === userData && (userData = dragonBones.BaseObject.borrowObject(dragonBones.UserData)); + var rawInts = rawAction[dragonBones.DataParser.INTS]; + for (var _a = 0, rawInts_1 = rawInts; _a < rawInts_1.length; _a++) { + var rawValue = rawInts_1[_a]; + userData.addInt(rawValue); + } + } + if (dragonBones.DataParser.FLOATS in rawAction) { + null === userData && (userData = dragonBones.BaseObject.borrowObject(dragonBones.UserData)); + var rawFloats = rawAction[dragonBones.DataParser.FLOATS]; + for (var _b = 0, rawFloats_1 = rawFloats; _b < rawFloats_1.length; _b++) { + var rawValue = rawFloats_1[_b]; + userData.addFloat(rawValue); + } + } + if (dragonBones.DataParser.STRINGS in rawAction) { + null === userData && (userData = dragonBones.BaseObject.borrowObject(dragonBones.UserData)); + var rawStrings = rawAction[dragonBones.DataParser.STRINGS]; + for (var _c = 0, rawStrings_1 = rawStrings; _c < rawStrings_1.length; _c++) { + var rawValue = rawStrings_1[_c]; + userData.addString(rawValue); + } + } + action.data = userData; + actions.push(action); + } + return actions; + }; + ObjectDataParser.prototype._parseTransform = function (rawData, transform, scale) { + transform.x = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.X, 0) * scale; + transform.y = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.Y, 0) * scale; + if (dragonBones.DataParser.ROTATE in rawData || dragonBones.DataParser.SKEW in rawData) { + transform.rotation = dragonBones.Transform.normalizeRadian(ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ROTATE, 0) * dragonBones.Transform.DEG_RAD); + transform.skew = dragonBones.Transform.normalizeRadian(ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SKEW, 0) * dragonBones.Transform.DEG_RAD); + } else if (dragonBones.DataParser.SKEW_X in rawData || dragonBones.DataParser.SKEW_Y in rawData) { + transform.rotation = dragonBones.Transform.normalizeRadian(ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SKEW_Y, 0) * dragonBones.Transform.DEG_RAD); + transform.skew = dragonBones.Transform.normalizeRadian(ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SKEW_X, 0) * dragonBones.Transform.DEG_RAD) - transform.rotation; + } + transform.scaleX = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE_X, 1); + transform.scaleY = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE_Y, 1); + }; + ObjectDataParser.prototype._parseColorTransform = function (rawData, color) { + color.alphaMultiplier = .01 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ALPHA_MULTIPLIER, 100); + color.redMultiplier = .01 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.RED_MULTIPLIER, 100); + color.greenMultiplier = .01 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.GREEN_MULTIPLIER, 100); + color.blueMultiplier = .01 * ObjectDataParser._getNumber(rawData, dragonBones.DataParser.BLUE_MULTIPLIER, 100); + color.alphaOffset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.ALPHA_OFFSET, 0); + color.redOffset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.RED_OFFSET, 0); + color.greenOffset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.GREEN_OFFSET, 0); + color.blueOffset = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.BLUE_OFFSET, 0); + }; + ObjectDataParser.prototype._parseArray = function (rawData) { + rawData; + this._intArray.length = 0; + this._floatArray.length = 0; + this._frameIntArray.length = 0; + this._frameFloatArray.length = 0; + this._frameArray.length = 0; + this._timelineArray.length = 0; + }; + ObjectDataParser.prototype._modifyArray = function () { + this._intArray.length % Int16Array.BYTES_PER_ELEMENT !== 0 && this._intArray.push(0); + this._frameIntArray.length % Int16Array.BYTES_PER_ELEMENT !== 0 && this._frameIntArray.push(0); + this._frameArray.length % Int16Array.BYTES_PER_ELEMENT !== 0 && this._frameArray.push(0); + this._timelineArray.length % Uint16Array.BYTES_PER_ELEMENT !== 0 && this._timelineArray.push(0); + var l1 = this._intArray.length * Int16Array.BYTES_PER_ELEMENT; + var l2 = this._floatArray.length * Float32Array.BYTES_PER_ELEMENT; + var l3 = this._frameIntArray.length * Int16Array.BYTES_PER_ELEMENT; + var l4 = this._frameFloatArray.length * Float32Array.BYTES_PER_ELEMENT; + var l5 = this._frameArray.length * Int16Array.BYTES_PER_ELEMENT; + var l6 = this._timelineArray.length * Uint16Array.BYTES_PER_ELEMENT; + var lTotal = l1 + l2 + l3 + l4 + l5 + l6; + if (dragonBones.DragonBones.webAssembly) { + var shareBuffer = dragonBones.webAssemblyModule.HEAP16.buffer; + var bufferPointer = dragonBones.webAssemblyModule._malloc(lTotal); + var intArray = new Int16Array(shareBuffer, bufferPointer, this._intArray.length); + var floatArray = new Float32Array(shareBuffer, bufferPointer + l1, this._floatArray.length); + var frameIntArray = new Int16Array(shareBuffer, bufferPointer + l1 + l2, this._frameIntArray.length); + var frameFloatArray = new Float32Array(shareBuffer, bufferPointer + l1 + l2 + l3, this._frameFloatArray.length); + var frameArray = new Int16Array(shareBuffer, bufferPointer + l1 + l2 + l3 + l4, this._frameArray.length); + var timelineArray = new Uint16Array(shareBuffer, bufferPointer + l1 + l2 + l3 + l4 + l5, this._timelineArray.length); + for (var i = 0, l = this._intArray.length; i < l; ++i) intArray[i] = this._intArray[i]; + for (var i = 0, l = this._floatArray.length; i < l; ++i) floatArray[i] = this._floatArray[i]; + for (var i = 0, l = this._frameIntArray.length; i < l; ++i) frameIntArray[i] = this._frameIntArray[i]; + for (var i = 0, l = this._frameFloatArray.length; i < l; ++i) frameFloatArray[i] = this._frameFloatArray[i]; + for (var i = 0, l = this._frameArray.length; i < l; ++i) frameArray[i] = this._frameArray[i]; + for (var i = 0, l = this._timelineArray.length; i < l; ++i) timelineArray[i] = this._timelineArray[i]; + dragonBones.webAssemblyModule.setDataBinary(this._data, bufferPointer, l1, l2, l3, l4, l5, l6); + } else { + var binary = new ArrayBuffer(lTotal); + var intArray = new Int16Array(binary, 0, this._intArray.length); + var floatArray = new Float32Array(binary, l1, this._floatArray.length); + var frameIntArray = new Int16Array(binary, l1 + l2, this._frameIntArray.length); + var frameFloatArray = new Float32Array(binary, l1 + l2 + l3, this._frameFloatArray.length); + var frameArray = new Int16Array(binary, l1 + l2 + l3 + l4, this._frameArray.length); + var timelineArray = new Uint16Array(binary, l1 + l2 + l3 + l4 + l5, this._timelineArray.length); + for (var i = 0, l = this._intArray.length; i < l; ++i) intArray[i] = this._intArray[i]; + for (var i = 0, l = this._floatArray.length; i < l; ++i) floatArray[i] = this._floatArray[i]; + for (var i = 0, l = this._frameIntArray.length; i < l; ++i) frameIntArray[i] = this._frameIntArray[i]; + for (var i = 0, l = this._frameFloatArray.length; i < l; ++i) frameFloatArray[i] = this._frameFloatArray[i]; + for (var i = 0, l = this._frameArray.length; i < l; ++i) frameArray[i] = this._frameArray[i]; + for (var i = 0, l = this._timelineArray.length; i < l; ++i) timelineArray[i] = this._timelineArray[i]; + this._data.binary = binary; + this._data.intArray = intArray; + this._data.floatArray = floatArray; + this._data.frameIntArray = frameIntArray; + this._data.frameFloatArray = frameFloatArray; + this._data.frameArray = frameArray; + this._data.timelineArray = timelineArray; + } + this._defaultColorOffset = -1; + }; + ObjectDataParser.prototype.parseDragonBonesData = function (rawData, scale) { + void 0 === scale && (scale = 1); + console.assert(null !== rawData && void 0 !== rawData, "Data error."); + var version = ObjectDataParser._getString(rawData, dragonBones.DataParser.VERSION, ""); + var compatibleVersion = ObjectDataParser._getString(rawData, dragonBones.DataParser.COMPATIBLE_VERSION, ""); + if (dragonBones.DataParser.DATA_VERSIONS.indexOf(version) >= 0 || dragonBones.DataParser.DATA_VERSIONS.indexOf(compatibleVersion) >= 0) { + var data = dragonBones.BaseObject.borrowObject(dragonBones.DragonBonesData); + data.version = version; + data.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + data.frameRate = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.FRAME_RATE, 24); + 0 === data.frameRate && (data.frameRate = 24); + if (dragonBones.DataParser.ARMATURE in rawData) { + this._data = data; + this._parseArray(rawData); + var rawArmatures = rawData[dragonBones.DataParser.ARMATURE]; + for (var _i = 0, rawArmatures_1 = rawArmatures; _i < rawArmatures_1.length; _i++) { + var rawArmature = rawArmatures_1[_i]; + data.addArmature(this._parseArmature(rawArmature, scale)); + } + this._data.binary || this._modifyArray(); + dragonBones.DataParser.STAGE in rawData ? data.stage = data.getArmature(ObjectDataParser._getString(rawData, dragonBones.DataParser.STAGE, "")) : data.armatureNames.length > 0 && (data.stage = data.getArmature(data.armatureNames[0])); + this._data = null; + } + dragonBones.DataParser.TEXTURE_ATLAS in rawData && (this._rawTextureAtlases = rawData[dragonBones.DataParser.TEXTURE_ATLAS]); + return data; + } + console.assert(false, "Nonsupport data version: " + version + "\nPlease convert DragonBones data to support version.\nRead more: https://github.com/DragonBones/Tools/"); + return null; + }; + ObjectDataParser.prototype.parseTextureAtlasData = function (rawData, textureAtlasData, scale) { + void 0 === scale && (scale = 1); + console.assert(void 0 !== rawData); + if (null === rawData) { + if (null === this._rawTextureAtlases || 0 === this._rawTextureAtlases.length) return false; + var rawTextureAtlas = this._rawTextureAtlases[this._rawTextureAtlasIndex++]; + this.parseTextureAtlasData(rawTextureAtlas, textureAtlasData, scale); + if (this._rawTextureAtlasIndex >= this._rawTextureAtlases.length) { + this._rawTextureAtlasIndex = 0; + this._rawTextureAtlases = null; + } + return true; + } + textureAtlasData.width = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.WIDTH, 0); + textureAtlasData.height = ObjectDataParser._getNumber(rawData, dragonBones.DataParser.HEIGHT, 0); + textureAtlasData.scale = 1 === scale ? 1 / ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE, 1) : scale; + textureAtlasData.name = ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, ""); + textureAtlasData.imagePath = ObjectDataParser._getString(rawData, dragonBones.DataParser.IMAGE_PATH, ""); + if (dragonBones.DataParser.SUB_TEXTURE in rawData) { + var rawTextures = rawData[dragonBones.DataParser.SUB_TEXTURE]; + for (var i = 0, l = rawTextures.length; i < l; ++i) { + var rawTexture = rawTextures[i]; + var textureData = textureAtlasData.createTexture(); + textureData.rotated = ObjectDataParser._getBoolean(rawTexture, dragonBones.DataParser.ROTATED, false); + textureData.name = ObjectDataParser._getString(rawTexture, dragonBones.DataParser.NAME, ""); + textureData.region.x = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.X, 0); + textureData.region.y = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.Y, 0); + textureData.region.width = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.WIDTH, 0); + textureData.region.height = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.HEIGHT, 0); + var frameWidth = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.FRAME_WIDTH, -1); + var frameHeight = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.FRAME_HEIGHT, -1); + if (frameWidth > 0 && frameHeight > 0) { + textureData.frame = dragonBones.TextureData.createRectangle(); + textureData.frame.x = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.FRAME_X, 0); + textureData.frame.y = ObjectDataParser._getNumber(rawTexture, dragonBones.DataParser.FRAME_Y, 0); + textureData.frame.width = frameWidth; + textureData.frame.height = frameHeight; + } + textureAtlasData.addTexture(textureData); + } + } + return true; + }; + ObjectDataParser.getInstance = function () { + null === ObjectDataParser._objectDataParserInstance && (ObjectDataParser._objectDataParserInstance = new ObjectDataParser()); + return ObjectDataParser._objectDataParserInstance; + }; + ObjectDataParser._objectDataParserInstance = null; + return ObjectDataParser; + })(dragonBones.DataParser); + dragonBones.ObjectDataParser = ObjectDataParser; + var ActionFrame = (function () { + function ActionFrame() { + this.frameStart = 0; + this.actions = []; + } + return ActionFrame; + })(); + dragonBones.ActionFrame = ActionFrame; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var BinaryDataParser = (function (_super) { + __extends(BinaryDataParser, _super); + function BinaryDataParser() { + return null !== _super && _super.apply(this, arguments) || this; + } + BinaryDataParser.prototype._inRange = function (a, min, max) { + return min <= a && a <= max; + }; + BinaryDataParser.prototype._decodeUTF8 = function (data) { + var EOF_byte = -1; + var EOF_code_point = -1; + var FATAL_POINT = 65533; + var pos = 0; + var result = ""; + var code_point; + var utf8_code_point = 0; + var utf8_bytes_needed = 0; + var utf8_bytes_seen = 0; + var utf8_lower_boundary = 0; + while (data.length > pos) { + var _byte = data[pos++]; + if (_byte === EOF_byte) code_point = 0 !== utf8_bytes_needed ? FATAL_POINT : EOF_code_point; else if (0 === utf8_bytes_needed) if (this._inRange(_byte, 0, 127)) code_point = _byte; else { + if (this._inRange(_byte, 194, 223)) { + utf8_bytes_needed = 1; + utf8_lower_boundary = 128; + utf8_code_point = _byte - 192; + } else if (this._inRange(_byte, 224, 239)) { + utf8_bytes_needed = 2; + utf8_lower_boundary = 2048; + utf8_code_point = _byte - 224; + } else if (this._inRange(_byte, 240, 244)) { + utf8_bytes_needed = 3; + utf8_lower_boundary = 65536; + utf8_code_point = _byte - 240; + } + utf8_code_point *= Math.pow(64, utf8_bytes_needed); + code_point = null; + } else if (this._inRange(_byte, 128, 191)) { + utf8_bytes_seen += 1; + utf8_code_point += (_byte - 128) * Math.pow(64, utf8_bytes_needed - utf8_bytes_seen); + if (utf8_bytes_seen !== utf8_bytes_needed) code_point = null; else { + var cp = utf8_code_point; + var lower_boundary = utf8_lower_boundary; + utf8_code_point = 0; + utf8_bytes_needed = 0; + utf8_bytes_seen = 0; + utf8_lower_boundary = 0; + code_point = this._inRange(cp, lower_boundary, 1114111) && !this._inRange(cp, 55296, 57343) ? cp : _byte; + } + } else { + utf8_code_point = 0; + utf8_bytes_needed = 0; + utf8_bytes_seen = 0; + utf8_lower_boundary = 0; + pos--; + code_point = _byte; + } + if (null !== code_point && code_point !== EOF_code_point) if (code_point <= 65535) code_point > 0 && (result += String.fromCharCode(code_point)); else { + code_point -= 65536; + result += String.fromCharCode(55296 + (code_point >> 10 & 1023)); + result += String.fromCharCode(56320 + (1023 & code_point)); + } + } + return result; + }; + BinaryDataParser.prototype._getUTF16Key = function (value) { + for (var i = 0, l = value.length; i < l; ++i) if (value.charCodeAt(i) > 255) return encodeURI(value); + return value; + }; + BinaryDataParser.prototype._parseBinaryTimeline = function (type, offset, timelineData) { + void 0 === timelineData && (timelineData = null); + var timeline = null !== timelineData ? timelineData : dragonBones.BaseObject.borrowObject(dragonBones.TimelineData); + timeline.type = type; + timeline.offset = offset; + this._timeline = timeline; + var keyFrameCount = this._timelineArrayBuffer[timeline.offset + 2]; + if (1 === keyFrameCount) timeline.frameIndicesOffset = -1; else { + var frameIndicesOffset = 0; + var totalFrameCount = this._animation.frameCount + 1; + var frameIndices = this._data.frameIndices; + if (dragonBones.DragonBones.webAssembly) { + frameIndicesOffset = frameIndices.size(); + frameIndices.resize(frameIndicesOffset + totalFrameCount, 0); + } else { + frameIndicesOffset = frameIndices.length; + frameIndices.length += totalFrameCount; + } + timeline.frameIndicesOffset = frameIndicesOffset; + for (var i = 0, iK = 0, frameStart = 0, frameCount = 0; i < totalFrameCount; ++i) { + if (frameStart + frameCount <= i && iK < keyFrameCount) { + frameStart = this._frameArrayBuffer[this._animation.frameOffset + this._timelineArrayBuffer[timeline.offset + 5 + iK]]; + frameCount = iK === keyFrameCount - 1 ? this._animation.frameCount - frameStart : this._frameArrayBuffer[this._animation.frameOffset + this._timelineArrayBuffer[timeline.offset + 5 + iK + 1]] - frameStart; + iK++; + } + dragonBones.DragonBones.webAssembly ? frameIndices.set(frameIndicesOffset + i, iK - 1) : frameIndices[frameIndicesOffset + i] = iK - 1; + } + } + this._timeline = null; + return timeline; + }; + BinaryDataParser.prototype._parseVertices = function (rawData, vertices) { + vertices.offset = rawData[dragonBones.DataParser.OFFSET]; + var weightOffset = this._intArrayBuffer[vertices.offset + 3]; + if (weightOffset >= 0) { + var weight = dragonBones.BaseObject.borrowObject(dragonBones.WeightData); + var vertexCount = this._intArrayBuffer[vertices.offset + 0]; + var boneCount = this._intArrayBuffer[weightOffset + 0]; + weight.offset = weightOffset; + for (var i = 0; i < boneCount; ++i) { + var boneIndex = this._intArrayBuffer[weightOffset + 2 + i]; + weight.addBone(this._rawBones[boneIndex]); + } + var boneIndicesOffset = weightOffset + 2 + boneCount; + var weightCount = 0; + for (var i = 0, l = vertexCount; i < l; ++i) { + var vertexBoneCount = this._intArrayBuffer[boneIndicesOffset++]; + weightCount += vertexBoneCount; + boneIndicesOffset += vertexBoneCount; + } + weight.count = weightCount; + vertices.weight = weight; + } + }; + BinaryDataParser.prototype._parseMesh = function (rawData, mesh) { + this._parseVertices(rawData, mesh.vertices); + }; + BinaryDataParser.prototype._parsePath = function (rawData, path) { + this._parseVertices(rawData, path.vertices); + }; + BinaryDataParser.prototype._parseAnimation = function (rawData) { + var animation = dragonBones.BaseObject.borrowObject(dragonBones.AnimationData); + animation.frameCount = Math.max(dragonBones.ObjectDataParser._getNumber(rawData, dragonBones.DataParser.DURATION, 1), 1); + animation.playTimes = dragonBones.ObjectDataParser._getNumber(rawData, dragonBones.DataParser.PLAY_TIMES, 1); + animation.duration = animation.frameCount / this._armature.frameRate; + animation.fadeInTime = dragonBones.ObjectDataParser._getNumber(rawData, dragonBones.DataParser.FADE_IN_TIME, 0); + animation.scale = dragonBones.ObjectDataParser._getNumber(rawData, dragonBones.DataParser.SCALE, 1); + animation.name = dragonBones.ObjectDataParser._getString(rawData, dragonBones.DataParser.NAME, dragonBones.DataParser.DEFAULT_NAME); + 0 === animation.name.length && (animation.name = dragonBones.DataParser.DEFAULT_NAME); + var offsets = rawData[dragonBones.DataParser.OFFSET]; + animation.frameIntOffset = offsets[0]; + animation.frameFloatOffset = offsets[1]; + animation.frameOffset = offsets[2]; + this._animation = animation; + dragonBones.DataParser.ACTION in rawData && (animation.actionTimeline = this._parseBinaryTimeline(0, rawData[dragonBones.DataParser.ACTION])); + dragonBones.DataParser.Z_ORDER in rawData && (animation.zOrderTimeline = this._parseBinaryTimeline(1, rawData[dragonBones.DataParser.Z_ORDER])); + if (dragonBones.DataParser.BONE in rawData) { + var rawTimeliness = rawData[dragonBones.DataParser.BONE]; + for (var k in rawTimeliness) { + var rawTimelines = rawTimeliness[k]; + dragonBones.DragonBones.webAssembly && (k = this._getUTF16Key(k)); + var bone = this._armature.getBone(k); + if (null === bone) continue; + for (var i = 0, l = rawTimelines.length; i < l; i += 2) { + var timelineType = rawTimelines[i]; + var timelineOffset = rawTimelines[i + 1]; + var timeline = this._parseBinaryTimeline(timelineType, timelineOffset); + this._animation.addBoneTimeline(bone, timeline); + } + } + } + if (dragonBones.DataParser.SURFACE in rawData) { + var rawTimeliness = rawData[dragonBones.DataParser.SURFACE]; + for (var k in rawTimeliness) { + var rawTimelines = rawTimeliness[k]; + dragonBones.DragonBones.webAssembly && (k = this._getUTF16Key(k)); + var surface = this._armature.getBone(k); + if (null === surface) continue; + for (var i = 0, l = rawTimelines.length; i < l; i += 2) { + var timelineType = rawTimelines[i]; + var timelineOffset = rawTimelines[i + 1]; + var timeline = this._parseBinaryTimeline(timelineType, timelineOffset); + this._animation.addSurfaceTimeline(surface, timeline); + } + } + } + if (dragonBones.DataParser.SLOT in rawData) { + var rawTimeliness = rawData[dragonBones.DataParser.SLOT]; + for (var k in rawTimeliness) { + var rawTimelines = rawTimeliness[k]; + dragonBones.DragonBones.webAssembly && (k = this._getUTF16Key(k)); + var slot = this._armature.getSlot(k); + if (null === slot) continue; + for (var i = 0, l = rawTimelines.length; i < l; i += 2) { + var timelineType = rawTimelines[i]; + var timelineOffset = rawTimelines[i + 1]; + var timeline = this._parseBinaryTimeline(timelineType, timelineOffset); + this._animation.addSlotTimeline(slot, timeline); + } + } + } + if (dragonBones.DataParser.CONSTRAINT in rawData) { + var rawTimeliness = rawData[dragonBones.DataParser.CONSTRAINT]; + for (var k in rawTimeliness) { + var rawTimelines = rawTimeliness[k]; + dragonBones.DragonBones.webAssembly && (k = this._getUTF16Key(k)); + var constraint = this._armature.getConstraint(k); + if (null === constraint) continue; + for (var i = 0, l = rawTimelines.length; i < l; i += 2) { + var timelineType = rawTimelines[i]; + var timelineOffset = rawTimelines[i + 1]; + var timeline = this._parseBinaryTimeline(timelineType, timelineOffset); + this._animation.addConstraintTimeline(constraint, timeline); + } + } + } + if (dragonBones.DataParser.ANIMATION in rawData) { + var rawTimeliness = rawData[dragonBones.DataParser.ANIMATION]; + for (var k in rawTimeliness) { + var rawTimelines = rawTimeliness[k]; + dragonBones.DragonBones.webAssembly && (k = this._getUTF16Key(k)); + for (var i = 0, l = rawTimelines.length; i < l; i += 2) { + var timelineType = rawTimelines[i]; + var timelineOffset = rawTimelines[i + 1]; + var timeline = this._parseBinaryTimeline(timelineType, timelineOffset); + this._animation.addAnimationTimeline(k, timeline); + } + } + } + this._animation = null; + return animation; + }; + BinaryDataParser.prototype._parseArray = function (rawData) { + var offsets = rawData[dragonBones.DataParser.OFFSET]; + var l1 = offsets[1]; + var l2 = offsets[3]; + var l3 = offsets[5]; + var l4 = offsets[7]; + var l5 = offsets[9]; + var l6 = offsets[11]; + var intArray = new Int16Array(this._binary, this._binaryOffset + offsets[0], l1 / Int16Array.BYTES_PER_ELEMENT); + var floatArray = new Float32Array(this._binary, this._binaryOffset + offsets[2], l2 / Float32Array.BYTES_PER_ELEMENT); + var frameIntArray = new Int16Array(this._binary, this._binaryOffset + offsets[4], l3 / Int16Array.BYTES_PER_ELEMENT); + var frameFloatArray = new Float32Array(this._binary, this._binaryOffset + offsets[6], l4 / Float32Array.BYTES_PER_ELEMENT); + var frameArray = new Int16Array(this._binary, this._binaryOffset + offsets[8], l5 / Int16Array.BYTES_PER_ELEMENT); + var timelineArray = new Uint16Array(this._binary, this._binaryOffset + offsets[10], l6 / Uint16Array.BYTES_PER_ELEMENT); + if (dragonBones.DragonBones.webAssembly) { + var lTotal = l1 + l2 + l3 + l4 + l5 + l6; + var bufferPointer = dragonBones.webAssemblyModule._malloc(lTotal); + var rawArray = new Uint8Array(this._binary, this._binaryOffset, lTotal / Uint8Array.BYTES_PER_ELEMENT); + var copyArray = new Uint8Array(dragonBones.webAssemblyModule.HEAP16.buffer, bufferPointer, rawArray.length); + for (var i = 0, l = rawArray.length; i < l; ++i) copyArray[i] = rawArray[i]; + dragonBones.webAssemblyModule.setDataBinary(this._data, bufferPointer, l1, l2, l3, l4, l5, l6); + this._intArrayBuffer = intArray; + this._floatArrayBuffer = floatArray; + this._frameIntArrayBuffer = frameIntArray; + this._frameFloatArrayBuffer = frameFloatArray; + this._frameArrayBuffer = frameArray; + this._timelineArrayBuffer = timelineArray; + } else { + this._data.binary = this._binary; + this._data.intArray = this._intArrayBuffer = intArray; + this._data.floatArray = this._floatArrayBuffer = floatArray; + this._data.frameIntArray = this._frameIntArrayBuffer = frameIntArray; + this._data.frameFloatArray = this._frameFloatArrayBuffer = frameFloatArray; + this._data.frameArray = this._frameArrayBuffer = frameArray; + this._data.timelineArray = this._timelineArrayBuffer = timelineArray; + } + }; + BinaryDataParser.prototype.parseDragonBonesData = function (rawData, scale) { + void 0 === scale && (scale = 1); + console.assert(null !== rawData && void 0 !== rawData && rawData instanceof ArrayBuffer, "Data error."); + var tag = new Uint8Array(rawData, 0, 8); + if (tag[0] !== "D".charCodeAt(0) || tag[1] !== "B".charCodeAt(0) || tag[2] !== "D".charCodeAt(0) || tag[3] !== "T".charCodeAt(0)) { + console.assert(false, "Nonsupport data."); + return null; + } + var headerLength = new Uint32Array(rawData, 8, 1)[0]; + var headerBytes = new Uint8Array(rawData, 12, headerLength); + var headerString = this._decodeUTF8(headerBytes); + var header = JSON.parse(headerString); + this._binaryOffset = 12 + headerLength; + this._binary = rawData; + return _super.prototype.parseDragonBonesData.call(this, header, scale); + }; + BinaryDataParser.getInstance = function () { + null === BinaryDataParser._binaryDataParserInstance && (BinaryDataParser._binaryDataParserInstance = new BinaryDataParser()); + return BinaryDataParser._binaryDataParserInstance; + }; + BinaryDataParser._binaryDataParserInstance = null; + return BinaryDataParser; + })(dragonBones.ObjectDataParser); + dragonBones.BinaryDataParser = BinaryDataParser; + })(dragonBones || (dragonBones = {})); + var dragonBones; + (function (dragonBones) { + var BaseFactory = (function () { + function BaseFactory(dataParser) { + void 0 === dataParser && (dataParser = null); + this.autoSearch = false; + this._dragonBonesDataMap = {}; + this._textureAtlasDataMap = {}; + this._dragonBones = null; + this._dataParser = null; + null === BaseFactory._objectParser && (BaseFactory._objectParser = new dragonBones.ObjectDataParser()); + null === BaseFactory._binaryParser && (BaseFactory._binaryParser = new dragonBones.BinaryDataParser()); + this._dataParser = null !== dataParser ? dataParser : BaseFactory._objectParser; + } + BaseFactory.prototype._isSupportMesh = function () { + return true; + }; + BaseFactory.prototype._getTextureData = function (textureAtlasName, textureName) { + if (textureAtlasName in this._textureAtlasDataMap) for (var _i = 0, _a = this._textureAtlasDataMap[textureAtlasName]; _i < _a.length; _i++) { + var textureAtlasData = _a[_i]; + var textureData = textureAtlasData.getTexture(textureName); + if (null !== textureData) return textureData; + } + if (this.autoSearch) for (var k in this._textureAtlasDataMap) for (var _b = 0, _c = this._textureAtlasDataMap[k]; _b < _c.length; _b++) { + var textureAtlasData = _c[_b]; + if (textureAtlasData.autoSearch) { + var textureData = textureAtlasData.getTexture(textureName); + if (null !== textureData) return textureData; + } + } + return null; + }; + BaseFactory.prototype._fillBuildArmaturePackage = function (dataPackage, dragonBonesName, armatureName, skinName, textureAtlasName) { + var dragonBonesData = null; + var armatureData = null; + if (dragonBonesName.length > 0 && dragonBonesName in this._dragonBonesDataMap) { + dragonBonesData = this._dragonBonesDataMap[dragonBonesName]; + armatureData = dragonBonesData.getArmature(armatureName); + } + if (null === armatureData && (0 === dragonBonesName.length || this.autoSearch)) for (var k in this._dragonBonesDataMap) { + dragonBonesData = this._dragonBonesDataMap[k]; + if (0 === dragonBonesName.length || dragonBonesData.autoSearch) { + armatureData = dragonBonesData.getArmature(armatureName); + if (null !== armatureData) { + dragonBonesName = k; + break; + } + } + } + if (null !== armatureData) { + dataPackage.dataName = dragonBonesName; + dataPackage.textureAtlasName = textureAtlasName; + dataPackage.data = dragonBonesData; + dataPackage.armature = armatureData; + dataPackage.skin = null; + if (skinName.length > 0) { + dataPackage.skin = armatureData.getSkin(skinName); + if (null === dataPackage.skin && this.autoSearch) for (var k in this._dragonBonesDataMap) { + var skinDragonBonesData = this._dragonBonesDataMap[k]; + var skinArmatureData = skinDragonBonesData.getArmature(skinName); + if (null !== skinArmatureData) { + dataPackage.skin = skinArmatureData.defaultSkin; + break; + } + } + } + null === dataPackage.skin && (dataPackage.skin = armatureData.defaultSkin); + return true; + } + return false; + }; + BaseFactory.prototype._buildBones = function (dataPackage, armature) { + for (var _i = 0, _a = dataPackage.armature.sortedBones; _i < _a.length; _i++) { + var boneData = _a[_i]; + var bone = dragonBones.BaseObject.borrowObject(0 === boneData.type ? dragonBones.Bone : dragonBones.Surface); + bone.init(boneData, armature); + } + }; + BaseFactory.prototype._buildSlots = function (dataPackage, armature) { + var currentSkin = dataPackage.skin; + var defaultSkin = dataPackage.armature.defaultSkin; + if (null === currentSkin || null === defaultSkin) return; + var skinSlots = {}; + for (var k in defaultSkin.displays) { + var displays = defaultSkin.getDisplays(k); + skinSlots[k] = displays; + } + if (currentSkin !== defaultSkin) for (var k in currentSkin.displays) { + var displays = currentSkin.getDisplays(k); + skinSlots[k] = displays; + } + for (var _i = 0, _a = dataPackage.armature.sortedSlots; _i < _a.length; _i++) { + var slotData = _a[_i]; + var displayDatas = slotData.name in skinSlots ? skinSlots[slotData.name] : null; + var slot = this._buildSlot(dataPackage, slotData, armature); + slot.rawDisplayDatas = displayDatas; + if (null !== displayDatas) { + var displayList = new Array(); + for (var i = 0, l = dragonBones.DragonBones.webAssembly ? displayDatas.size() : displayDatas.length; i < l; ++i) { + var displayData = dragonBones.DragonBones.webAssembly ? displayDatas.get(i) : displayDatas[i]; + null !== displayData ? displayList.push(this._getSlotDisplay(dataPackage, displayData, null, slot)) : displayList.push(null); + } + slot._setDisplayList(displayList); + } + slot._setDisplayIndex(slotData.displayIndex, true); + } + }; + BaseFactory.prototype._buildConstraints = function (dataPackage, armature) { + var constraints = dataPackage.armature.constraints; + for (var k in constraints) { + var constraintData = constraints[k]; + switch (constraintData.type) { + case 0: + var ikConstraint = dragonBones.BaseObject.borrowObject(dragonBones.IKConstraint); + ikConstraint.init(constraintData, armature); + armature._addConstraint(ikConstraint); + break; + + case 1: + var pathConstraint = dragonBones.BaseObject.borrowObject(dragonBones.PathConstraint); + pathConstraint.init(constraintData, armature); + armature._addConstraint(pathConstraint); + break; + + default: + var constraint = dragonBones.BaseObject.borrowObject(dragonBones.IKConstraint); + constraint.init(constraintData, armature); + armature._addConstraint(constraint); + } + } + }; + BaseFactory.prototype._buildChildArmature = function (dataPackage, slot, displayData) { + slot; + return this.buildArmature(displayData.path, null !== dataPackage ? dataPackage.dataName : "", "", null !== dataPackage ? dataPackage.textureAtlasName : ""); + }; + BaseFactory.prototype._getSlotDisplay = function (dataPackage, displayData, rawDisplayData, slot) { + var dataName = null !== dataPackage ? dataPackage.dataName : displayData.parent.parent.parent.name; + var display = null; + switch (displayData.type) { + case 0: + var imageDisplayData = displayData; + null !== dataPackage && dataPackage.textureAtlasName.length > 0 && (imageDisplayData.texture = this._getTextureData(dataPackage.textureAtlasName, displayData.path)); + null === imageDisplayData.texture && (imageDisplayData.texture = this._getTextureData(dataName, displayData.path)); + display = null !== rawDisplayData && 2 === rawDisplayData.type && this._isSupportMesh() ? slot.meshDisplay : slot.rawDisplay; + break; + + case 2: + var meshDisplayData = displayData; + null !== dataPackage && dataPackage.textureAtlasName.length > 0 && (meshDisplayData.texture = this._getTextureData(dataPackage.textureAtlasName, meshDisplayData.path)); + null === meshDisplayData.texture && (meshDisplayData.texture = this._getTextureData(dataName, meshDisplayData.path)); + display = this._isSupportMesh() ? slot.meshDisplay : slot.rawDisplay; + break; + + case 1: + var armatureDisplayData = displayData; + var childArmature = this._buildChildArmature(dataPackage, slot, displayData); + if (null !== childArmature) { + childArmature.inheritAnimation = armatureDisplayData.inheritAnimation; + if (!childArmature.inheritAnimation) { + var actions = armatureDisplayData.actions.length > 0 ? armatureDisplayData.actions : childArmature.armatureData.defaultActions; + if (actions.length > 0) for (var _i = 0, actions_6 = actions; _i < actions_6.length; _i++) { + var action = actions_6[_i]; + var eventObject = dragonBones.BaseObject.borrowObject(dragonBones.EventObject); + dragonBones.EventObject.actionDataToInstance(action, eventObject, slot.armature); + eventObject.slot = slot; + slot.armature._bufferAction(eventObject, false); + } else childArmature.animation.play(); + } + armatureDisplayData.armature = childArmature.armatureData; + } + display = childArmature; + } + return display; + }; + BaseFactory.prototype.parseDragonBonesData = function (rawData, name, scale) { + void 0 === name && (name = null); + void 0 === scale && (scale = 1); + var dataParser = rawData instanceof ArrayBuffer ? BaseFactory._binaryParser : this._dataParser; + var dragonBonesData = dataParser.parseDragonBonesData(rawData, scale); + while (true) { + var textureAtlasData = this._buildTextureAtlasData(null, null); + if (!dataParser.parseTextureAtlasData(null, textureAtlasData, scale)) { + textureAtlasData.returnToPool(); + break; + } + this.addTextureAtlasData(textureAtlasData, name); + } + null !== dragonBonesData && this.addDragonBonesData(dragonBonesData, name); + return dragonBonesData; + }; + BaseFactory.prototype.parseTextureAtlasData = function (rawData, textureAtlas, name, scale) { + void 0 === name && (name = null); + void 0 === scale && (scale = 1); + var textureAtlasData = this._buildTextureAtlasData(null, null); + this._dataParser.parseTextureAtlasData(rawData, textureAtlasData, scale); + this._buildTextureAtlasData(textureAtlasData, textureAtlas || null); + this.addTextureAtlasData(textureAtlasData, name); + return textureAtlasData; + }; + BaseFactory.prototype.updateTextureAtlasData = function (name, textureAtlases) { + var textureAtlasDatas = this.getTextureAtlasData(name); + if (null !== textureAtlasDatas) for (var i = 0, l = textureAtlasDatas.length; i < l; ++i) i < textureAtlases.length && this._buildTextureAtlasData(textureAtlasDatas[i], textureAtlases[i]); + }; + BaseFactory.prototype.getDragonBonesData = function (name) { + return name in this._dragonBonesDataMap ? this._dragonBonesDataMap[name] : null; + }; + BaseFactory.prototype.addDragonBonesData = function (data, name) { + void 0 === name && (name = null); + name = null !== name ? name : data.name; + if (name in this._dragonBonesDataMap) { + if (this._dragonBonesDataMap[name] === data) return; + console.warn("Can not add same name data: " + name); + return; + } + this._dragonBonesDataMap[name] = data; + }; + BaseFactory.prototype.removeDragonBonesData = function (name, disposeData) { + void 0 === disposeData && (disposeData = true); + if (name in this._dragonBonesDataMap) { + disposeData && this._dragonBones.bufferObject(this._dragonBonesDataMap[name]); + delete this._dragonBonesDataMap[name]; + } + }; + BaseFactory.prototype.getTextureAtlasData = function (name) { + return name in this._textureAtlasDataMap ? this._textureAtlasDataMap[name] : null; + }; + BaseFactory.prototype.addTextureAtlasData = function (data, name) { + void 0 === name && (name = null); + name = null !== name ? name : data.name; + var textureAtlasList = name in this._textureAtlasDataMap ? this._textureAtlasDataMap[name] : this._textureAtlasDataMap[name] = []; + textureAtlasList.indexOf(data) < 0 && textureAtlasList.push(data); + }; + BaseFactory.prototype.removeTextureAtlasData = function (name, disposeData) { + void 0 === disposeData && (disposeData = true); + if (name in this._textureAtlasDataMap) { + var textureAtlasDataList = this._textureAtlasDataMap[name]; + if (disposeData) for (var _i = 0, textureAtlasDataList_1 = textureAtlasDataList; _i < textureAtlasDataList_1.length; _i++) { + var textureAtlasData = textureAtlasDataList_1[_i]; + this._dragonBones.bufferObject(textureAtlasData); + } + delete this._textureAtlasDataMap[name]; + } + }; + BaseFactory.prototype.getArmatureData = function (name, dragonBonesName) { + void 0 === dragonBonesName && (dragonBonesName = ""); + var dataPackage = new BuildArmaturePackage(); + if (!this._fillBuildArmaturePackage(dataPackage, dragonBonesName, name, "", "")) return null; + return dataPackage.armature; + }; + BaseFactory.prototype.clear = function (disposeData) { + void 0 === disposeData && (disposeData = true); + for (var k in this._dragonBonesDataMap) { + disposeData && this._dragonBones.bufferObject(this._dragonBonesDataMap[k]); + delete this._dragonBonesDataMap[k]; + } + for (var k in this._textureAtlasDataMap) { + if (disposeData) { + var textureAtlasDataList = this._textureAtlasDataMap[k]; + for (var _i = 0, textureAtlasDataList_2 = textureAtlasDataList; _i < textureAtlasDataList_2.length; _i++) { + var textureAtlasData = textureAtlasDataList_2[_i]; + this._dragonBones.bufferObject(textureAtlasData); + } + } + delete this._textureAtlasDataMap[k]; + } + }; + BaseFactory.prototype.buildArmature = function (armatureName, dragonBonesName, skinName, textureAtlasName) { + void 0 === dragonBonesName && (dragonBonesName = ""); + void 0 === skinName && (skinName = ""); + void 0 === textureAtlasName && (textureAtlasName = ""); + var dataPackage = new BuildArmaturePackage(); + if (!this._fillBuildArmaturePackage(dataPackage, dragonBonesName || "", armatureName, skinName || "", textureAtlasName || "")) { + console.warn("No armature data: " + armatureName + ", " + (null !== dragonBonesName ? dragonBonesName : "")); + return null; + } + var armature = this._buildArmature(dataPackage); + this._buildBones(dataPackage, armature); + this._buildSlots(dataPackage, armature); + this._buildConstraints(dataPackage, armature); + armature.invalidUpdate(null, true); + armature.advanceTime(0); + return armature; + }; + BaseFactory.prototype.replaceDisplay = function (slot, displayData, displayIndex) { + void 0 === displayIndex && (displayIndex = -1); + displayIndex < 0 && (displayIndex = slot.displayIndex); + displayIndex < 0 && (displayIndex = 0); + slot.replaceDisplayData(displayData, displayIndex); + var displayList = slot.displayList; + if (displayList.length <= displayIndex) { + displayList.length = displayIndex + 1; + for (var i = 0, l = displayList.length; i < l; ++i) displayList[i] || (displayList[i] = null); + } + if (null !== displayData) { + var rawDisplayDatas = slot.rawDisplayDatas; + var rawDisplayData = null; + rawDisplayDatas && (dragonBones.DragonBones.webAssembly ? displayIndex < rawDisplayDatas.size() && (rawDisplayData = rawDisplayDatas.get(displayIndex)) : displayIndex < rawDisplayDatas.length && (rawDisplayData = rawDisplayDatas[displayIndex])); + displayList[displayIndex] = this._getSlotDisplay(null, displayData, rawDisplayData, slot); + } else displayList[displayIndex] = null; + slot.displayList = displayList; + }; + BaseFactory.prototype.replaceSlotDisplay = function (dragonBonesName, armatureName, slotName, displayName, slot, displayIndex) { + void 0 === displayIndex && (displayIndex = -1); + var armatureData = this.getArmatureData(armatureName, dragonBonesName || ""); + if (!armatureData || !armatureData.defaultSkin) return false; + var displayData = armatureData.defaultSkin.getDisplay(slotName, displayName); + if (!displayData) return false; + this.replaceDisplay(slot, displayData, displayIndex); + return true; + }; + BaseFactory.prototype.replaceSlotDisplayList = function (dragonBonesName, armatureName, slotName, slot) { + var armatureData = this.getArmatureData(armatureName, dragonBonesName || ""); + if (!armatureData || !armatureData.defaultSkin) return false; + var displays = armatureData.defaultSkin.getDisplays(slotName); + if (!displays) return false; + var displayIndex = 0; + for (var i = 0, l = dragonBones.DragonBones.webAssembly ? displays.size() : displays.length; i < l; ++i) { + var displayData = dragonBones.DragonBones.webAssembly ? displays.get(i) : displays[i]; + this.replaceDisplay(slot, displayData, displayIndex++); + } + return true; + }; + BaseFactory.prototype.replaceSkin = function (armature, skin, isOverride, exclude) { + void 0 === isOverride && (isOverride = false); + void 0 === exclude && (exclude = null); + var success = false; + var defaultSkin = skin.parent.defaultSkin; + for (var _i = 0, _a = armature.getSlots(); _i < _a.length; _i++) { + var slot = _a[_i]; + if (null !== exclude && exclude.indexOf(slot.name) >= 0) continue; + var displays = skin.getDisplays(slot.name); + if (!displays) { + null !== defaultSkin && skin !== defaultSkin && (displays = defaultSkin.getDisplays(slot.name)); + if (!displays) { + if (isOverride) { + slot.rawDisplayDatas = null; + slot.displayList = []; + } + continue; + } + } + var displayCount = dragonBones.DragonBones.webAssembly ? displays.size() : displays.length; + var displayList = slot.displayList; + displayList.length = displayCount; + for (var i = 0, l = displayCount; i < l; ++i) { + var displayData = dragonBones.DragonBones.webAssembly ? displays.get(i) : displays[i]; + displayList[i] = null !== displayData ? this._getSlotDisplay(null, displayData, null, slot) : null; + } + success = true; + slot.rawDisplayDatas = displays; + slot.displayList = displayList; + } + return success; + }; + BaseFactory.prototype.replaceAnimation = function (armature, armatureData, isOverride) { + void 0 === isOverride && (isOverride = true); + var skinData = armatureData.defaultSkin; + if (null === skinData) return false; + if (isOverride) armature.animation.animations = armatureData.animations; else { + var rawAnimations = armature.animation.animations; + var animations = {}; + for (var k in rawAnimations) animations[k] = rawAnimations[k]; + for (var k in armatureData.animations) animations[k] = armatureData.animations[k]; + armature.animation.animations = animations; + } + for (var _i = 0, _a = armature.getSlots(); _i < _a.length; _i++) { + var slot = _a[_i]; + var index = 0; + for (var _b = 0, _c = slot.displayList; _b < _c.length; _b++) { + var display = _c[_b]; + if (display instanceof dragonBones.Armature) { + var displayDatas = skinData.getDisplays(slot.name); + if (null !== displayDatas && index < (dragonBones.DragonBones.webAssembly ? displayDatas.size() : displayDatas.length)) { + var displayData = dragonBones.DragonBones.webAssembly ? displayDatas.get(index) : displayDatas[index]; + if (null !== displayData && 1 === displayData.type) { + var childArmatureData = this.getArmatureData(displayData.path, displayData.parent.parent.parent.name); + childArmatureData && this.replaceAnimation(display, childArmatureData, isOverride); + } + } + } + index++; + } + } + return true; + }; + BaseFactory.prototype.getAllDragonBonesData = function () { + return this._dragonBonesDataMap; + }; + BaseFactory.prototype.getAllTextureAtlasData = function () { + return this._textureAtlasDataMap; + }; + Object.defineProperty(BaseFactory.prototype, "clock", { + get: function get() { + return this._dragonBones.clock; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BaseFactory.prototype, "dragonBones", { + get: function get() { + return this._dragonBones; + }, + enumerable: true, + configurable: true + }); + BaseFactory.prototype.changeSkin = function (armature, skin, exclude) { + void 0 === exclude && (exclude = null); + return this.replaceSkin(armature, skin, false, exclude); + }; + BaseFactory.prototype.copyAnimationsToArmature = function (toArmature, fromArmatreName, fromSkinName, fromDragonBonesDataName, replaceOriginalAnimation) { + void 0 === fromSkinName && (fromSkinName = ""); + void 0 === fromDragonBonesDataName && (fromDragonBonesDataName = ""); + void 0 === replaceOriginalAnimation && (replaceOriginalAnimation = true); + fromSkinName; + var armatureData = this.getArmatureData(fromArmatreName, fromDragonBonesDataName); + if (!armatureData) return false; + return this.replaceAnimation(toArmature, armatureData, replaceOriginalAnimation); + }; + BaseFactory._objectParser = null; + BaseFactory._binaryParser = null; + return BaseFactory; + })(); + dragonBones.BaseFactory = BaseFactory; + var BuildArmaturePackage = (function () { + function BuildArmaturePackage() { + this.dataName = ""; + this.textureAtlasName = ""; + this.skin = null; + } + return BuildArmaturePackage; + })(); + dragonBones.BuildArmaturePackage = BuildArmaturePackage; + })(dragonBones || (dragonBones = {})); + module.exports = dragonBones; + }), {}], + 424: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("../../cocos2d/core/renderer/assembler")); + var _mat = _interopRequireDefault(require("../../cocos2d/core/value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Armature = require("./ArmatureDisplay"); + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var gfx = cc.gfx; + var NEED_COLOR = 1; + var NEED_BATCH = 16; + var _boneColor = cc.color(255, 0, 0, 255); + var _slotColor = cc.color(0, 0, 255, 255); + var _originColor = cc.color(0, 255, 0, 255); + var _nodeR, _nodeG, _nodeB, _nodeA, _premultipliedAlpha, _multiply, _mustFlush, _buffer, _node, _renderer, _comp, _vfOffset, _indexOffset, _vertexOffset, _vertexCount, _indexCount, _x, _y, _c, _r, _g, _b, _a, _handleVal, _m00, _m04, _m12, _m01, _m05, _m13; + function _getSlotMaterial(tex, blendMode) { + if (!tex) return null; + var src, dst; + switch (blendMode) { + case 1: + src = _premultipliedAlpha ? cc.macro.ONE : cc.macro.SRC_ALPHA; + dst = cc.macro.ONE; + break; + + case 10: + src = cc.macro.DST_COLOR; + dst = cc.macro.ONE_MINUS_SRC_ALPHA; + break; + + case 12: + src = cc.macro.ONE; + dst = cc.macro.ONE_MINUS_SRC_COLOR; + break; + + case 0: + default: + src = _premultipliedAlpha ? cc.macro.ONE : cc.macro.SRC_ALPHA; + dst = cc.macro.ONE_MINUS_SRC_ALPHA; + } + var useModel = !_comp.enableBatch; + var baseMaterial = _comp._materials[0]; + if (!baseMaterial) return null; + var materialCache = _comp._materialCache; + var key = tex.getId() + src + dst + useModel; + var material = materialCache[key]; + if (!material) { + if (materialCache.baseMaterial) material = cc.MaterialVariant.create(baseMaterial); else { + material = baseMaterial; + materialCache.baseMaterial = baseMaterial; + } + material.define("CC_USE_MODEL", useModel); + material.setProperty("texture", tex); + material.setBlend(true, gfx.BLEND_FUNC_ADD, src, dst, gfx.BLEND_FUNC_ADD, src, dst); + materialCache[key] = material; + } + return material; + } + function _handleColor(color, parentOpacity) { + _a = color.a * parentOpacity * _nodeA; + _multiply = _premultipliedAlpha ? _a / 255 : 1; + _r = color.r * _nodeR * _multiply; + _g = color.g * _nodeG * _multiply; + _b = color.b * _nodeB * _multiply; + _c = (_a << 24 >>> 0) + (_b << 16) + (_g << 8) + _r; + } + var ArmatureAssembler = (function (_Assembler) { + _inheritsLoose(ArmatureAssembler, _Assembler); + function ArmatureAssembler() { + return _Assembler.apply(this, arguments) || this; + } + var _proto = ArmatureAssembler.prototype; + _proto.updateRenderData = function updateRenderData(comp, batchData) { }; + _proto.realTimeTraverse = function realTimeTraverse(armature, parentMat, parentOpacity) { + var slots = armature._slots; + var vbuf, ibuf, uintbuf; + var material; + var vertices, indices; + var slotColor; + var slot; + var slotMat; + var slotMatm; + var offsetInfo; + for (var i = 0, l = slots.length; i < l; i++) { + slot = slots[i]; + slotColor = slot._color; + if (!slot._visible || !slot._displayData) continue; + parentMat ? slot._mulMat(slot._worldMatrix, parentMat, slot._matrix) : _mat["default"].copy(slot._worldMatrix, slot._matrix); + if (slot.childArmature) { + this.realTimeTraverse(slot.childArmature, slot._worldMatrix, parentOpacity * slotColor.a / 255); + continue; + } + material = _getSlotMaterial(slot.getTexture(), slot._blendMode); + if (!material) continue; + if (_mustFlush || material.getHash() !== _renderer.material.getHash()) { + _mustFlush = false; + _renderer._flush(); + _renderer.node = _node; + _renderer.material = material; + } + _handleColor(slotColor, parentOpacity); + slotMat = slot._worldMatrix; + slotMatm = slotMat.m; + vertices = slot._localVertices; + _vertexCount = vertices.length >> 2; + indices = slot._indices; + _indexCount = indices.length; + offsetInfo = _buffer.request(_vertexCount, _indexCount); + _indexOffset = offsetInfo.indiceOffset; + _vfOffset = offsetInfo.byteOffset >> 2; + _vertexOffset = offsetInfo.vertexOffset; + vbuf = _buffer._vData; + ibuf = _buffer._iData; + uintbuf = _buffer._uintVData; + _m00 = slotMatm[0]; + _m04 = slotMatm[4]; + _m12 = slotMatm[12]; + _m01 = slotMatm[1]; + _m05 = slotMatm[5]; + _m13 = slotMatm[13]; + for (var vi = 0, vl = vertices.length; vi < vl;) { + _x = vertices[vi++]; + _y = vertices[vi++]; + vbuf[_vfOffset++] = _x * _m00 + _y * _m04 + _m12; + vbuf[_vfOffset++] = _x * _m01 + _y * _m05 + _m13; + vbuf[_vfOffset++] = vertices[vi++]; + vbuf[_vfOffset++] = vertices[vi++]; + uintbuf[_vfOffset++] = _c; + } + for (var ii = 0, il = indices.length; ii < il; ii++) ibuf[_indexOffset++] = _vertexOffset + indices[ii]; + } + }; + _proto.cacheTraverse = function cacheTraverse(frame, parentMat) { + if (!frame) return; + var segments = frame.segments; + if (0 == segments.length) return; + var vbuf, ibuf, uintbuf; + var material; + var offsetInfo; + var vertices = frame.vertices; + var indices = frame.indices; + var frameVFOffset = 0, frameIndexOffset = 0, segVFCount = 0; + if (parentMat) { + var parentMatm = parentMat.m; + _m00 = parentMatm[0]; + _m01 = parentMatm[1]; + _m04 = parentMatm[4]; + _m05 = parentMatm[5]; + _m12 = parentMatm[12]; + _m13 = parentMatm[13]; + } + var justTranslate = 1 === _m00 && 0 === _m01 && 0 === _m04 && 1 === _m05; + var needBatch = _handleVal & NEED_BATCH; + var calcTranslate = needBatch && justTranslate; + var colorOffset = 0; + var colors = frame.colors; + var nowColor = colors[colorOffset++]; + var maxVFOffset = nowColor.vfOffset; + _handleColor(nowColor, 1); + for (var i = 0, n = segments.length; i < n; i++) { + var segInfo = segments[i]; + material = _getSlotMaterial(segInfo.tex, segInfo.blendMode); + if (_mustFlush || material.getHash() !== _renderer.material.getHash()) { + _mustFlush = false; + _renderer._flush(); + _renderer.node = _node; + _renderer.material = material; + } + _vertexCount = segInfo.vertexCount; + _indexCount = segInfo.indexCount; + offsetInfo = _buffer.request(_vertexCount, _indexCount); + _indexOffset = offsetInfo.indiceOffset; + _vertexOffset = offsetInfo.vertexOffset; + _vfOffset = offsetInfo.byteOffset >> 2; + vbuf = _buffer._vData; + ibuf = _buffer._iData; + uintbuf = _buffer._uintVData; + for (var ii = _indexOffset, il = _indexOffset + _indexCount; ii < il; ii++) ibuf[ii] = _vertexOffset + indices[frameIndexOffset++]; + segVFCount = segInfo.vfCount; + vbuf.set(vertices.subarray(frameVFOffset, frameVFOffset + segVFCount), _vfOffset); + frameVFOffset += segVFCount; + if (calcTranslate) for (var _ii = _vfOffset, _il = _vfOffset + segVFCount; _ii < _il; _ii += 5) { + vbuf[_ii] += _m12; + vbuf[_ii + 1] += _m13; + } else if (needBatch) for (var _ii2 = _vfOffset, _il2 = _vfOffset + segVFCount; _ii2 < _il2; _ii2 += 5) { + _x = vbuf[_ii2]; + _y = vbuf[_ii2 + 1]; + vbuf[_ii2] = _x * _m00 + _y * _m04 + _m12; + vbuf[_ii2 + 1] = _x * _m01 + _y * _m05 + _m13; + } + if (!(_handleVal & NEED_COLOR)) continue; + var frameColorOffset = frameVFOffset - segVFCount; + for (var _ii3 = _vfOffset + 4, _il3 = _vfOffset + 4 + segVFCount; _ii3 < _il3; _ii3 += 5, + frameColorOffset += 5) { + if (frameColorOffset >= maxVFOffset) { + nowColor = colors[colorOffset++]; + _handleColor(nowColor, 1); + maxVFOffset = nowColor.vfOffset; + } + uintbuf[_ii3] = _c; + } + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + comp.node._renderFlag |= RenderFlow.FLAG_UPDATE_RENDER_DATA; + var armature = comp._armature; + if (!armature) return; + _mustFlush = true; + _premultipliedAlpha = comp.premultipliedAlpha; + _node = comp.node; + _buffer = renderer._meshBuffer; + _renderer = renderer; + _comp = comp; + _handleVal = 0; + var nodeColor = _node._color; + _nodeR = nodeColor.r / 255; + _nodeG = nodeColor.g / 255; + _nodeB = nodeColor.b / 255; + _nodeA = nodeColor.a / 255; + 4294967295 !== nodeColor._val && (_handleVal |= NEED_COLOR); + var worldMat = void 0; + if (_comp.enableBatch) { + worldMat = _node._worldMatrix; + _mustFlush = false; + _handleVal |= NEED_BATCH; + } + if (comp.isAnimationCached()) this.cacheTraverse(comp._curFrame, worldMat); else { + this.realTimeTraverse(armature, worldMat, 1); + var graphics = comp._debugDraw; + if (comp.debugBones && graphics) { + graphics.clear(); + graphics.lineWidth = 5; + graphics.strokeColor = _boneColor; + graphics.fillColor = _slotColor; + var bones = armature.getBones(); + for (var i = 0, l = bones.length; i < l; i++) { + var bone = bones[i]; + var boneLength = Math.max(bone.boneData.length, 5); + var startX = bone.globalTransformMatrix.tx; + var startY = bone.globalTransformMatrix.ty; + var endX = startX + bone.globalTransformMatrix.a * boneLength; + var endY = startY + bone.globalTransformMatrix.b * boneLength; + graphics.moveTo(startX, startY); + graphics.lineTo(endX, endY); + graphics.stroke(); + graphics.circle(startX, startY, 2 * Math.PI); + graphics.fill(); + 0 === i && (graphics.fillColor = _originColor); + } + } + } + renderer.worldMatDirty++; + comp.attachUtil._syncAttachedNode(); + _node = void 0; + _buffer = void 0; + _renderer = void 0; + _comp = void 0; + }; + _proto.postFillBuffers = function postFillBuffers(comp, renderer) { + renderer.worldMatDirty--; + }; + return ArmatureAssembler; + })(_assembler["default"]); + exports["default"] = ArmatureAssembler; + _assembler["default"].register(Armature, ArmatureAssembler); + module.exports = exports["default"]; + }), { + "../../cocos2d/core/renderer/assembler": 268, + "../../cocos2d/core/renderer/render-flow": 272, + "../../cocos2d/core/value-types/mat4": 341, + "./ArmatureDisplay": 414 + }], + 425: [(function (require, module, exports) { + "use strict"; + var _mat = _interopRequireDefault(require("../../cocos2d/core/value-types/mat4")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var FLAG_TRANSFORM = RenderFlow.FLAG_TRANSFORM; + var EmptyHandle = function EmptyHandle() { }; + var ATTACHED_ROOT_NAME = "ATTACHED_NODE_TREE"; + var ATTACHED_PRE_NAME = "ATTACHED_NODE:"; + var limitNode = function limitNode(node) { + Object.defineProperty(node, "_worldMatDirty", { + get: function get() { + return true; + }, + set: function set(value) { } + }); + node._calculWorldMatrix = EmptyHandle; + node._mulMat = EmptyHandle; + }; + var _tempMat4 = new _mat["default"](); + var AttachUtil = cc.Class({ + name: "sp.AttachUtil", + ctor: function ctor() { + this._inited = false; + this._skeleton = null; + this._skeletonNode = null; + this._skeletonComp = null; + this._attachedRootNode = null; + this._attachedNodeArray = []; + this._boneIndexToNode = {}; + }, + init: function init(skeletonComp) { + this._inited = true; + this._skeleton = skeletonComp._skeleton; + this._skeletonNode = skeletonComp.node; + this._skeletonComp = skeletonComp; + }, + reset: function reset() { + this._inited = false; + this._skeleton = null; + this._skeletonNode = null; + this._skeletonComp = null; + }, + _prepareAttachNode: function _prepareAttachNode() { + var armature = this._skeleton; + if (!armature) return; + var rootNode = this._skeletonNode.getChildByName(ATTACHED_ROOT_NAME); + if (!rootNode || !rootNode.isValid) { + rootNode = new cc.Node(ATTACHED_ROOT_NAME); + limitNode(rootNode); + this._skeletonNode.addChild(rootNode); + } + var isCached = this._skeletonComp.isAnimationCached(); + isCached && this._skeletonComp._frameCache && this._skeletonComp._frameCache.enableCacheAttachedInfo(); + this._attachedRootNode = rootNode; + return rootNode; + }, + _buildBoneAttachedNode: function _buildBoneAttachedNode(bone, boneIndex) { + var boneNodeName = ATTACHED_PRE_NAME + bone.data.name; + var boneNode = new cc.Node(boneNodeName); + this._buildBoneRelation(boneNode, bone, boneIndex); + return boneNode; + }, + _buildBoneRelation: function _buildBoneRelation(boneNode, bone, boneIndex) { + limitNode(boneNode); + boneNode._bone = bone; + boneNode._boneIndex = boneIndex; + this._attachedNodeArray.push(boneNode); + this._boneIndexToNode[boneIndex] = boneNode; + }, + getAttachedRootNode: function getAttachedRootNode() { + return this._attachedRootNode; + }, + getAttachedNodes: function getAttachedNodes(boneName) { + var nodeArray = this._attachedNodeArray; + var res = []; + if (!this._inited) return res; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) continue; + boneNode.name === ATTACHED_PRE_NAME + boneName && res.push(boneNode); + } + return res; + }, + _rebuildNodeArray: function _rebuildNodeArray() { + var findMap = this._boneIndexToNode = {}; + var oldNodeArray = this._attachedNodeArray; + var nodeArray = this._attachedNodeArray = []; + for (var i = 0, n = oldNodeArray.length; i < n; i++) { + var boneNode = oldNodeArray[i]; + if (!boneNode || !boneNode.isValid || boneNode._toRemove) continue; + nodeArray.push(boneNode); + findMap[boneNode._boneIndex] = boneNode; + } + }, + _sortNodeArray: function _sortNodeArray() { + var nodeArray = this._attachedNodeArray; + nodeArray.sort((function (a, b) { + return a._boneIndex < b._boneIndex ? -1 : 1; + })); + }, + _getNodeByBoneIndex: function _getNodeByBoneIndex(boneIndex) { + var findMap = this._boneIndexToNode; + var boneNode = findMap[boneIndex]; + if (!boneNode || !boneNode.isValid) return null; + return boneNode; + }, + destroyAttachedNodes: function destroyAttachedNodes(boneName) { + if (!this._inited) return; + var nodeArray = this._attachedNodeArray; + var markTree = function markTree(rootNode) { + var children = rootNode.children; + for (var i = 0, n = children.length; i < n; i++) { + var c = children[i]; + c && markTree(c); + } + rootNode._toRemove = true; + }; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) continue; + var delName = boneNode.name.split(ATTACHED_PRE_NAME)[1]; + if (delName === boneName) { + markTree(boneNode); + boneNode.removeFromParent(true); + boneNode.destroy(); + nodeArray[i] = null; + } + } + this._rebuildNodeArray(); + }, + generateAttachedNodes: function generateAttachedNodes(boneName) { + var targetNodes = []; + if (!this._inited) return targetNodes; + var rootNode = this._prepareAttachNode(); + if (!rootNode) return targetNodes; + var res = []; + var bones = this._skeleton.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var boneData = bone.data; + boneData.name == boneName && res.push(bone); + } + var buildBoneTree = function (bone) { + if (!bone) return; + var boneData = bone.data; + var boneNode = this._getNodeByBoneIndex(boneData.index); + if (boneNode) return boneNode; + boneNode = this._buildBoneAttachedNode(bone, boneData.index); + var parentBoneNode = buildBoneTree(bone.parent) || rootNode; + boneNode.parent = parentBoneNode; + return boneNode; + }.bind(this); + for (var _i = 0, _n = res.length; _i < _n; _i++) { + var targetNode = buildBoneTree(res[_i]); + targetNodes.push(targetNode); + } + this._sortNodeArray(); + return targetNodes; + }, + destroyAllAttachedNodes: function destroyAllAttachedNodes() { + this._attachedRootNode = null; + this._attachedNodeArray.length = 0; + this._boneIndexToNode = {}; + if (!this._inited) return; + var rootNode = this._skeletonNode.getChildByName(ATTACHED_ROOT_NAME); + if (rootNode) { + rootNode.removeFromParent(true); + rootNode.destroy(); + rootNode = null; + } + }, + generateAllAttachedNodes: function generateAllAttachedNodes() { + if (!this._inited) return; + this._boneIndexToNode = {}; + this._attachedNodeArray.length = 0; + var rootNode = this._prepareAttachNode(); + if (!rootNode) return; + var bones = this._skeleton.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var boneData = bone.data; + var parentNode = null; + if (bone.parent) { + var parentIndex = bone.parent.data.index; + parentNode = this._boneIndexToNode[parentIndex]; + } else parentNode = rootNode; + if (parentNode) { + var boneNode = parentNode.getChildByName(ATTACHED_PRE_NAME + boneData.name); + if (boneNode && boneNode.isValid) this._buildBoneRelation(boneNode, bone, boneData.index); else { + boneNode = this._buildBoneAttachedNode(bone, boneData.index); + parentNode.addChild(boneNode); + } + } + } + return rootNode; + }, + _hasAttachedNode: function _hasAttachedNode() { + if (!this._inited) return false; + var attachedRootNode = this._skeletonNode.getChildByName(ATTACHED_ROOT_NAME); + return !!attachedRootNode; + }, + _associateAttachedNode: function _associateAttachedNode() { + if (!this._inited) return; + var rootNode = this._skeletonNode.getChildByName(ATTACHED_ROOT_NAME); + if (!rootNode || !rootNode.isValid) return; + this._attachedRootNode = rootNode; + this._boneIndexToNode = {}; + var nodeArray = this._attachedNodeArray; + nodeArray.length = 0; + limitNode(rootNode); + true; + var isCached = this._skeletonComp.isAnimationCached(); + isCached && this._skeletonComp._frameCache && this._skeletonComp._frameCache.enableCacheAttachedInfo(); + var bones = this._skeleton.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var boneData = bone.data; + var parentNode = null; + if (bone.parent) { + var parentIndex = bone.parent.data.index; + parentNode = this._boneIndexToNode[parentIndex]; + } else parentNode = rootNode; + if (parentNode) { + var boneNode = parentNode.getChildByName(ATTACHED_PRE_NAME + boneData.name); + boneNode && boneNode.isValid && this._buildBoneRelation(boneNode, bone, boneData.index); + } + } + }, + _syncAttachedNode: function _syncAttachedNode() { + if (!this._inited) return; + var rootNode = this._attachedRootNode; + var nodeArray = this._attachedNodeArray; + if (!rootNode || !rootNode.isValid) { + this._attachedRootNode = null; + nodeArray.length = 0; + return; + } + var rootMatrix = this._skeletonNode._worldMatrix; + _mat["default"].copy(rootNode._worldMatrix, rootMatrix); + rootNode._renderFlag &= ~FLAG_TRANSFORM; + var boneInfos = null; + var isCached = this._skeletonComp.isAnimationCached(); + boneInfos = isCached ? this._skeletonComp._curFrame && this._skeletonComp._curFrame.boneInfos : this._skeleton.bones; + if (!boneInfos) return; + var mulMat = this._skeletonNode._mulMat; + var matrixHandle = function matrixHandle(nodeMat, parentMat, bone) { + var tm = _tempMat4.m; + tm[0] = bone.a; + tm[1] = bone.c; + tm[4] = bone.b; + tm[5] = bone.d; + tm[12] = bone.worldX; + tm[13] = bone.worldY; + mulMat(nodeMat, parentMat, _tempMat4); + }; + var nodeArrayDirty = false; + for (var i = 0, n = nodeArray.length; i < n; i++) { + var boneNode = nodeArray[i]; + if (!boneNode || !boneNode.isValid) { + nodeArray[i] = null; + nodeArrayDirty = true; + continue; + } + var bone = boneInfos[boneNode._boneIndex]; + if (!bone) { + boneNode.removeFromParent(true); + boneNode.destroy(); + nodeArray[i] = null; + nodeArrayDirty = true; + continue; + } + matrixHandle(boneNode._worldMatrix, rootNode._worldMatrix, bone); + boneNode._renderFlag &= ~FLAG_TRANSFORM; + } + nodeArrayDirty && this._rebuildNodeArray(); + } + }); + module.exports = sp.AttachUtil = AttachUtil; + }), { + "../../cocos2d/core/renderer/render-flow": 272, + "../../cocos2d/core/value-types/mat4": 341 + }], + 426: [(function (require, module, exports) { + "use strict"; + var TrackEntryListeners = require("./track-entry-listeners"); + var RenderComponent = require("../../cocos2d/core/components/CCRenderComponent"); + var spine = require("./lib/spine"); + var Graphics = require("../../cocos2d/core/graphics/graphics"); + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var FLAG_POST_RENDER = RenderFlow.FLAG_POST_RENDER; + var SkeletonCache = require("./skeleton-cache"); + var AttachUtil = require("./AttachUtil"); + var DefaultSkinsEnum = cc.Enum({ + default: -1 + }); + var DefaultAnimsEnum = cc.Enum({ + "": 0 + }); + var AnimationCacheMode = cc.Enum({ + REALTIME: 0, + SHARED_CACHE: 1, + PRIVATE_CACHE: 2 + }); + function setEnumAttr(obj, propName, enumDef) { + cc.Class.Attr.setClassAttr(obj, propName, "type", "Enum"); + cc.Class.Attr.setClassAttr(obj, propName, "enumList", cc.Enum.getList(enumDef)); + } + sp.Skeleton = cc.Class({ + name: "sp.Skeleton", + extends: RenderComponent, + editor: false, + statics: { + AnimationCacheMode: AnimationCacheMode + }, + properties: { + paused: { + default: false, + visible: false + }, + skeletonData: { + default: null, + type: sp.SkeletonData, + notify: function notify() { + this.defaultSkin = ""; + this.defaultAnimation = ""; + false; + this._updateSkeletonData(); + }, + tooltip: false + }, + defaultSkin: { + default: "", + visible: false + }, + defaultAnimation: { + default: "", + visible: false + }, + animation: { + get: function get() { + if (this.isAnimationCached()) return this._animationName; + var entry = this.getCurrent(0); + return entry && entry.animation.name || ""; + }, + set: function set(value) { + this.defaultAnimation = value; + if (value) this.setAnimation(0, value, this.loop); else if (!this.isAnimationCached()) { + this.clearTrack(0); + this.setToSetupPose(); + } + }, + visible: false + }, + _defaultSkinIndex: { + get: function get() { + if (this.skeletonData) { + var skinsEnum = this.skeletonData.getSkinsEnum(); + if (skinsEnum) if ("" === this.defaultSkin) { + if (skinsEnum.hasOwnProperty(0)) { + this._defaultSkinIndex = 0; + return 0; + } + } else { + var skinIndex = skinsEnum[this.defaultSkin]; + if (void 0 !== skinIndex) return skinIndex; + } + } + return 0; + }, + set: function set(value) { + var skinsEnum; + this.skeletonData && (skinsEnum = this.skeletonData.getSkinsEnum()); + if (!skinsEnum) return cc.errorID("", this.name); + var skinName = skinsEnum[value]; + if (void 0 !== skinName) { + this.defaultSkin = skinName; + this.setSkin(this.defaultSkin); + false; + } else cc.errorID(7501, this.name); + }, + type: DefaultSkinsEnum, + visible: true, + animatable: false, + displayName: "Default Skin", + tooltip: false + }, + _animationIndex: { + get: function get() { + var animationName = this.animation; + if (this.skeletonData && animationName) { + var animsEnum = this.skeletonData.getAnimsEnum(); + if (animsEnum) { + var animIndex = animsEnum[animationName]; + if (void 0 !== animIndex) return animIndex; + } + } + return 0; + }, + set: function set(value) { + if (0 === value) { + this.animation = ""; + return; + } + var animsEnum; + this.skeletonData && (animsEnum = this.skeletonData.getAnimsEnum()); + if (!animsEnum) return cc.errorID(7502, this.name); + var animName = animsEnum[value]; + void 0 !== animName ? this.animation = animName : cc.errorID(7503, this.name); + }, + type: DefaultAnimsEnum, + visible: true, + animatable: false, + displayName: "Animation", + tooltip: false + }, + _preCacheMode: -1, + _cacheMode: AnimationCacheMode.REALTIME, + _defaultCacheMode: { + default: 0, + type: AnimationCacheMode, + notify: function notify() { + this.setAnimationCacheMode(this._defaultCacheMode); + }, + editorOnly: true, + visible: true, + animatable: false, + displayName: "Animation Cache Mode", + tooltip: false + }, + loop: { + default: true, + tooltip: false + }, + premultipliedAlpha: { + default: true, + tooltip: false + }, + timeScale: { + default: 1, + tooltip: false + }, + debugSlots: { + default: false, + editorOnly: true, + tooltip: false, + notify: function notify() { + this._updateDebugDraw(); + } + }, + debugBones: { + default: false, + editorOnly: true, + tooltip: false, + notify: function notify() { + this._updateDebugDraw(); + } + }, + debugMesh: { + default: false, + editorOnly: true, + tooltip: false, + notify: function notify() { + this._updateDebugDraw(); + } + }, + useTint: { + default: false, + tooltip: false, + notify: function notify() { + this._updateUseTint(); + } + }, + enableBatch: { + default: false, + notify: function notify() { + this._updateBatch(); + }, + tooltip: false + }, + _accTime: 0, + _playCount: 0, + _frameCache: null, + _curFrame: null, + _skeletonCache: null, + _animationName: "", + _animationQueue: [], + _headAniInfo: null, + _playTimes: 0, + _isAniComplete: true + }, + ctor: function ctor() { + this._effectDelegate = null; + this._skeleton = null; + this._rootBone = null; + this._listener = null; + this._materialCache = {}; + this._debugRenderer = null; + this._startSlotIndex = -1; + this._endSlotIndex = -1; + this._startEntry = { + animation: { + name: "" + }, + trackIndex: 0 + }; + this._endEntry = { + animation: { + name: "" + }, + trackIndex: 0 + }; + this.attachUtil = new AttachUtil(); + }, + _getDefaultMaterial: function _getDefaultMaterial() { + return cc.Material.getBuiltinMaterial("2d-spine"); + }, + _updateMaterial: function _updateMaterial() { + var useTint = this.useTint || this.isAnimationCached() && true; + var baseMaterial = this.getMaterial(0); + if (baseMaterial) { + baseMaterial.define("USE_TINT", useTint); + baseMaterial.define("CC_USE_MODEL", !this.enableBatch); + var srcBlendFactor = this.premultipliedAlpha ? cc.gfx.BLEND_ONE : cc.gfx.BLEND_SRC_ALPHA; + var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA; + baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor); + } + this._materialCache = {}; + }, + disableRender: function disableRender() { + this._super(); + this.node._renderFlag &= ~FLAG_POST_RENDER; + }, + markForRender: function markForRender(enable) { + this._super(enable); + enable ? this.node._renderFlag |= FLAG_POST_RENDER : this.node._renderFlag &= ~FLAG_POST_RENDER; + }, + _updateUseTint: function _updateUseTint() { + var baseMaterial = this.getMaterial(0); + if (baseMaterial) { + var useTint = this.useTint || this.isAnimationCached() && true; + baseMaterial.define("USE_TINT", useTint); + } + this._materialCache = {}; + }, + _updateBatch: function _updateBatch() { + var baseMaterial = this.getMaterial(0); + baseMaterial && baseMaterial.define("CC_USE_MODEL", !this.enableBatch); + this._materialCache = {}; + }, + _validateRender: function _validateRender() { + var skeletonData = this.skeletonData; + if (!skeletonData || !skeletonData.isTexturesLoaded()) { + this.disableRender(); + return; + } + this._super(); + }, + setSkeletonData: function setSkeletonData(skeletonData) { + null != skeletonData.width && null != skeletonData.height && this.node.setContentSize(skeletonData.width, skeletonData.height); + true; + if (this._cacheMode === AnimationCacheMode.SHARED_CACHE) this._skeletonCache = SkeletonCache.sharedCache; else if (this._cacheMode === AnimationCacheMode.PRIVATE_CACHE) { + this._skeletonCache = new SkeletonCache(); + this._skeletonCache.enablePrivateMode(); + } + if (this.isAnimationCached()) { + (this.debugBones || this.debugSlots) && cc.warn("Debug bones or slots is invalid in cached mode"); + var skeletonInfo = this._skeletonCache.getSkeletonCache(this.skeletonData._uuid, skeletonData); + this._skeleton = skeletonInfo.skeleton; + this._clipper = skeletonInfo.clipper; + this._rootBone = this._skeleton.getRootBone(); + } else { + this._skeleton = new spine.Skeleton(skeletonData); + this._clipper = new spine.SkeletonClipping(); + this._rootBone = this._skeleton.getRootBone(); + } + this.markForRender(true); + }, + setSlotsRange: function setSlotsRange(startSlotIndex, endSlotIndex) { + if (this.isAnimationCached()) cc.warn("Slots visible range can not be modified in cached mode."); else { + this._startSlotIndex = startSlotIndex; + this._endSlotIndex = endSlotIndex; + } + }, + setAnimationStateData: function setAnimationStateData(stateData) { + if (this.isAnimationCached()) cc.warn("'setAnimationStateData' interface can not be invoked in cached mode."); else { + var state = new spine.AnimationState(stateData); + if (this._listener) { + this._state && this._state.removeListener(this._listener); + state.addListener(this._listener); + } + this._state = state; + } + }, + __preload: function __preload() { + this._super(); + var Flags; + false; + var children = this.node.children; + for (var i = 0, n = children.length; i < n; i++) { + var child = children[i]; + child && "DEBUG_DRAW_NODE" === child._name && child.destroy(); + } + this._updateSkeletonData(); + this._updateDebugDraw(); + this._updateUseTint(); + this._updateBatch(); + }, + setAnimationCacheMode: function setAnimationCacheMode(cacheMode) { + if (this._preCacheMode !== cacheMode) { + this._cacheMode = cacheMode; + this._updateSkeletonData(); + this._updateUseTint(); + } + }, + isAnimationCached: function isAnimationCached() { + false; + return this._cacheMode !== AnimationCacheMode.REALTIME; + }, + update: function update(dt) { + false; + if (this.paused) return; + dt *= this.timeScale * sp.timeScale; + if (this.isAnimationCached()) { + if (this._isAniComplete) { + if (0 === this._animationQueue.length && !this._headAniInfo) { + var frameCache = this._frameCache; + if (frameCache && frameCache.isInvalid()) { + frameCache.updateToFrame(); + var frames = frameCache.frames; + this._curFrame = frames[frames.length - 1]; + } + return; + } + this._headAniInfo || (this._headAniInfo = this._animationQueue.shift()); + this._accTime += dt; + if (this._accTime > this._headAniInfo.delay) { + var aniInfo = this._headAniInfo; + this._headAniInfo = null; + this.setAnimation(0, aniInfo.animationName, aniInfo.loop); + } + return; + } + this._updateCache(dt); + } else this._updateRealtime(dt); + }, + _emitCacheCompleteEvent: function _emitCacheCompleteEvent() { + if (!this._listener) return; + this._endEntry.animation.name = this._animationName; + this._listener.complete && this._listener.complete(this._endEntry); + this._listener.end && this._listener.end(this._endEntry); + }, + _updateCache: function _updateCache(dt) { + var frameCache = this._frameCache; + if (!frameCache.isInited()) return; + var frames = frameCache.frames; + var frameTime = SkeletonCache.FrameTime; + if (0 == this._accTime && 0 == this._playCount) { + this._startEntry.animation.name = this._animationName; + this._listener && this._listener.start && this._listener.start(this._startEntry); + } + this._accTime += dt; + var frameIdx = Math.floor(this._accTime / frameTime); + frameCache.isCompleted || frameCache.updateToFrame(frameIdx); + if (frameCache.isCompleted && frameIdx >= frames.length) { + this._playCount++; + if (this._playTimes > 0 && this._playCount >= this._playTimes) { + this._curFrame = frames[frames.length - 1]; + this._accTime = 0; + this._playCount = 0; + this._isAniComplete = true; + this._emitCacheCompleteEvent(); + return; + } + this._accTime = 0; + frameIdx = 0; + this._emitCacheCompleteEvent(); + } + this._curFrame = frames[frameIdx]; + }, + _updateRealtime: function _updateRealtime(dt) { + var skeleton = this._skeleton; + var state = this._state; + if (skeleton) { + skeleton.update(dt); + if (state) { + state.update(dt); + state.apply(skeleton); + } + } + }, + setVertexEffectDelegate: function setVertexEffectDelegate(effectDelegate) { + this._effectDelegate = effectDelegate; + }, + updateWorldTransform: function updateWorldTransform() { + if (!this.isAnimationCached()) return; + this._skeleton && this._skeleton.updateWorldTransform(); + }, + setToSetupPose: function setToSetupPose() { + this._skeleton && this._skeleton.setToSetupPose(); + }, + setBonesToSetupPose: function setBonesToSetupPose() { + this._skeleton && this._skeleton.setBonesToSetupPose(); + }, + setSlotsToSetupPose: function setSlotsToSetupPose() { + this._skeleton && this._skeleton.setSlotsToSetupPose(); + }, + updateAnimationCache: function updateAnimationCache(animName) { + if (!this.isAnimationCached()) return; + var uuid = this.skeletonData._uuid; + this._skeletonCache && this._skeletonCache.updateAnimationCache(uuid, animName); + }, + invalidAnimationCache: function invalidAnimationCache() { + if (!this.isAnimationCached()) return; + this._skeletonCache && this._skeletonCache.invalidAnimationCache(this.skeletonData._uuid); + }, + findBone: function findBone(boneName) { + if (this._skeleton) return this._skeleton.findBone(boneName); + return null; + }, + findSlot: function findSlot(slotName) { + if (this._skeleton) return this._skeleton.findSlot(slotName); + return null; + }, + setSkin: function setSkin(skinName) { + if (this._skeleton) { + this._skeleton.setSkinByName(skinName); + this._skeleton.setSlotsToSetupPose(); + } + this.invalidAnimationCache(); + }, + getAttachment: function getAttachment(slotName, attachmentName) { + if (this._skeleton) return this._skeleton.getAttachmentByName(slotName, attachmentName); + return null; + }, + setAttachment: function setAttachment(slotName, attachmentName) { + this._skeleton && this._skeleton.setAttachment(slotName, attachmentName); + this.invalidAnimationCache(); + }, + getTextureAtlas: function getTextureAtlas(regionAttachment) { + return regionAttachment.region; + }, + setMix: function setMix(fromAnimation, toAnimation, duration) { + this._state && this._state.data.setMix(fromAnimation, toAnimation, duration); + }, + setAnimation: function setAnimation(trackIndex, name, loop) { + this._playTimes = loop ? 0 : 1; + this._animationName = name; + if (this.isAnimationCached()) { + 0 !== trackIndex && cc.warn("Track index can not greater than 0 in cached mode."); + if (!this._skeletonCache) return null; + var cache = this._skeletonCache.getAnimationCache(this.skeletonData._uuid, name); + cache || (cache = this._skeletonCache.initAnimationCache(this.skeletonData._uuid, name)); + if (cache) { + this._isAniComplete = false; + this._accTime = 0; + this._playCount = 0; + this._frameCache = cache; + this.attachUtil._hasAttachedNode() && this._frameCache.enableCacheAttachedInfo(); + this._frameCache.updateToFrame(0); + this._curFrame = this._frameCache.frames[0]; + } + } else if (this._skeleton) { + var animation = this._skeleton.data.findAnimation(name); + if (!animation) { + cc.logID(7509, name); + return null; + } + var res = this._state.setAnimationWith(trackIndex, animation, loop); + this._state.apply(this._skeleton); + return res; + } + return null; + }, + addAnimation: function addAnimation(trackIndex, name, loop, delay) { + delay = delay || 0; + if (this.isAnimationCached()) { + 0 !== trackIndex && cc.warn("Track index can not greater than 0 in cached mode."); + this._animationQueue.push({ + animationName: name, + loop: loop, + delay: delay + }); + } else if (this._skeleton) { + var animation = this._skeleton.data.findAnimation(name); + if (!animation) { + cc.logID(7510, name); + return null; + } + return this._state.addAnimationWith(trackIndex, animation, loop, delay); + } + return null; + }, + findAnimation: function findAnimation(name) { + if (this._skeleton) return this._skeleton.data.findAnimation(name); + return null; + }, + getCurrent: function getCurrent(trackIndex) { + if (this.isAnimationCached()) cc.warn("'getCurrent' interface can not be invoked in cached mode."); else if (this._state) return this._state.getCurrent(trackIndex); + return null; + }, + clearTracks: function clearTracks() { + this.isAnimationCached() ? cc.warn("'clearTracks' interface can not be invoked in cached mode.") : this._state && this._state.clearTracks(); + }, + clearTrack: function clearTrack(trackIndex) { + if (this.isAnimationCached()) cc.warn("'clearTrack' interface can not be invoked in cached mode."); else if (this._state) { + this._state.clearTrack(trackIndex); + false; + } + }, + setStartListener: function setStartListener(listener) { + this._ensureListener(); + this._listener.start = listener; + }, + setInterruptListener: function setInterruptListener(listener) { + this._ensureListener(); + this._listener.interrupt = listener; + }, + setEndListener: function setEndListener(listener) { + this._ensureListener(); + this._listener.end = listener; + }, + setDisposeListener: function setDisposeListener(listener) { + this._ensureListener(); + this._listener.dispose = listener; + }, + setCompleteListener: function setCompleteListener(listener) { + this._ensureListener(); + this._listener.complete = listener; + }, + setEventListener: function setEventListener(listener) { + this._ensureListener(); + this._listener.event = listener; + }, + setTrackStartListener: function setTrackStartListener(entry, listener) { + TrackEntryListeners.getListeners(entry).start = listener; + }, + setTrackInterruptListener: function setTrackInterruptListener(entry, listener) { + TrackEntryListeners.getListeners(entry).interrupt = listener; + }, + setTrackEndListener: function setTrackEndListener(entry, listener) { + TrackEntryListeners.getListeners(entry).end = listener; + }, + setTrackDisposeListener: function setTrackDisposeListener(entry, listener) { + TrackEntryListeners.getListeners(entry).dispose = listener; + }, + setTrackCompleteListener: function setTrackCompleteListener(entry, listener) { + TrackEntryListeners.getListeners(entry).complete = function (trackEntry) { + var loopCount = Math.floor(trackEntry.trackTime / trackEntry.animationEnd); + listener(trackEntry, loopCount); + }; + }, + setTrackEventListener: function setTrackEventListener(entry, listener) { + TrackEntryListeners.getListeners(entry).event = listener; + }, + getState: function getState() { + return this._state; + }, + _updateAnimEnum: false, + _updateSkinEnum: false, + _ensureListener: function _ensureListener() { + if (!this._listener) { + this._listener = new TrackEntryListeners(); + this._state && this._state.addListener(this._listener); + } + }, + _updateSkeletonData: function _updateSkeletonData() { + if (!this.skeletonData) { + this.disableRender(); + return; + } + var data = this.skeletonData.getRuntimeData(); + if (!data) { + this.disableRender(); + return; + } + try { + this.setSkeletonData(data); + this.isAnimationCached() || this.setAnimationStateData(new spine.AnimationStateData(this._skeleton.data)); + this.defaultSkin && this.setSkin(this.defaultSkin); + } catch (e) { + cc.warn(e); + } + this.attachUtil.init(this); + this.attachUtil._associateAttachedNode(); + this._preCacheMode = this._cacheMode; + this.animation = this.defaultAnimation; + }, + _refreshInspector: function _refreshInspector() { + this._updateAnimEnum(); + this._updateSkinEnum(); + Editor.Utils.refreshSelectedInspector("node", this.node.uuid); + }, + _updateDebugDraw: function _updateDebugDraw() { + if (this.debugBones || this.debugSlots) { + if (!this._debugRenderer) { + var debugDrawNode = new cc.PrivateNode(); + debugDrawNode.name = "DEBUG_DRAW_NODE"; + var debugDraw = debugDrawNode.addComponent(Graphics); + debugDraw.lineWidth = 1; + debugDraw.strokeColor = cc.color(255, 0, 0, 255); + this._debugRenderer = debugDraw; + } + this._debugRenderer.node.parent = this.node; + this.isAnimationCached() && cc.warn("Debug bones or slots is invalid in cached mode"); + } else this._debugRenderer && (this._debugRenderer.node.parent = null); + } + }); + module.exports = sp.Skeleton; + }), { + "../../cocos2d/core/components/CCRenderComponent": 160, + "../../cocos2d/core/graphics/graphics": 202, + "../../cocos2d/core/renderer/render-flow": 272, + "./AttachUtil": 425, + "./lib/spine": 428, + "./skeleton-cache": 429, + "./track-entry-listeners": 433 + }], + 427: [(function (require, module, exports) { + "use strict"; + var _global = "undefined" === typeof window ? global : window; + var _isUseSpine = true; + true; + _global.spine = require("./lib/spine"); + if (_isUseSpine) { + _global.sp = {}; + sp._timeScale = 1; + Object.defineProperty(sp, "timeScale", { + get: function get() { + return this._timeScale; + }, + set: function set(value) { + this._timeScale = value; + }, + configurable: true + }); + sp.ATTACHMENT_TYPE = { + REGION: 0, + BOUNDING_BOX: 1, + MESH: 2, + SKINNED_MESH: 3 + }; + sp.AnimationEventType = cc.Enum({ + START: 0, + INTERRUPT: 1, + END: 2, + DISPOSE: 3, + COMPLETE: 4, + EVENT: 5 + }); + true; + sp.spine = _global.spine; + true; + require("./skeleton-texture"); + require("./skeleton-data"); + require("./vertex-effect-delegate"); + require("./Skeleton"); + require("./spine-assembler"); + } + }), { + "./Skeleton": 426, + "./lib/spine": 428, + "./skeleton-data": 430, + "./skeleton-texture": 431, + "./spine-assembler": 432, + "./vertex-effect-delegate": 434 + }], + 428: [(function (require, module, exports) { + "use strict"; + var __extends = (void 0, (function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]); + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })()); + var spine; + (function (spine) { + var Animation = (function () { + function Animation(name, timelines, duration) { + if (null == name) throw new Error("name cannot be null."); + if (null == timelines) throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.timelineIds = []; + for (var i = 0; i < timelines.length; i++) this.timelineIds[timelines[i].getPropertyId()] = true; + this.duration = duration; + } + Animation.prototype.hasTimeline = function (id) { + return true == this.timelineIds[id]; + }; + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { + if (null == skeleton) throw new Error("skeleton cannot be null."); + if (loop && 0 != this.duration) { + time %= this.duration; + lastTime > 0 && (lastTime %= this.duration); + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); + }; + Animation.binarySearch = function (values, target, step) { + void 0 === step && (step = 1); + var low = 0; + var high = values.length / step - 2; + if (0 == high) return step; + var current = high >>> 1; + while (true) { + values[(current + 1) * step] <= target ? low = current + 1 : high = current; + if (low == high) return (low + 1) * step; + current = low + high >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) if (values[i] > target) return i; + return -1; + }; + return Animation; + })(); + spine.Animation = Animation; + var MixBlend; + (function (MixBlend) { + MixBlend[MixBlend["setup"] = 0] = "setup"; + MixBlend[MixBlend["first"] = 1] = "first"; + MixBlend[MixBlend["replace"] = 2] = "replace"; + MixBlend[MixBlend["add"] = 3] = "add"; + })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); + var MixDirection; + (function (MixDirection) { + MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; + MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; + })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); + var TimelineType; + (function (TimelineType) { + TimelineType[TimelineType["rotate"] = 0] = "rotate"; + TimelineType[TimelineType["translate"] = 1] = "translate"; + TimelineType[TimelineType["scale"] = 2] = "scale"; + TimelineType[TimelineType["shear"] = 3] = "shear"; + TimelineType[TimelineType["attachment"] = 4] = "attachment"; + TimelineType[TimelineType["color"] = 5] = "color"; + TimelineType[TimelineType["deform"] = 6] = "deform"; + TimelineType[TimelineType["event"] = 7] = "event"; + TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; + TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; + TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; + TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; + TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; + TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; + TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; + })(TimelineType = spine.TimelineType || (spine.TimelineType = {})); + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = .03 * (2 * -cx1 + cx2), tmpy = .03 * (2 * -cy1 + cy2); + var dddfx = .006 * (3 * (cx1 - cx2) + 1), dddfy = .006 * (3 * (cy1 - cy2) + 1); + var ddfx = 2 * tmpx + dddfx, ddfy = 2 * tmpy + dddfy; + var dfx = .3 * cx1 + tmpx + .16666667 * dddfx, dfy = .3 * cy1 + tmpy + .16666667 * dddfy; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) return percent; + if (type == CurveTimeline.STEPPED) return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); + }; + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 19; + return CurveTimeline; + })(); + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount << 1); + return _this; + } + RotateTimeline.prototype.getPropertyId = function () { + return (TimelineType.rotate << 24) + this.boneIndex; + }; + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation; + return; + + case MixBlend.first: + var r_1 = bone.data.rotation - bone.rotation; + bone.rotation += (r_1 - 360 * (16384 - (16384.499999999996 - r_1 / 360 | 0))) * alpha; + } + return; + } + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + var r_2 = frames[frames.length + RotateTimeline.PREV_ROTATION]; + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation + r_2 * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + r_2 += bone.data.rotation - bone.rotation; + r_2 -= 360 * (16384 - (16384.499999999996 - r_2 / 360 | 0)); + + case MixBlend.add: + bone.rotation += r_2 * alpha; + } + return; + } + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var r = frames[frame + RotateTimeline.ROTATION] - prevRotation; + r = prevRotation + (r - 360 * (16384 - (16384.499999999996 - r / 360 | 0))) * percent; + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation + (r - 360 * (16384 - (16384.499999999996 - r / 360 | 0))) * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + r += bone.data.rotation - bone.rotation; + + case MixBlend.add: + bone.rotation += (r - 360 * (16384 - (16384.499999999996 - r / 360 | 0))) * alpha; + } + }; + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + return RotateTimeline; + })(CurveTimeline); + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + return _this; + } + TranslateTimeline.prototype.getPropertyId = function () { + return (TimelineType.translate << 24) + this.boneIndex; + }; + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.x = bone.data.x; + bone.y = bone.data.y; + return; + + case MixBlend.first: + bone.x += (bone.data.x - bone.x) * alpha; + bone.y += (bone.data.y - bone.y) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + x = frames[frames.length + TranslateTimeline.PREV_X]; + y = frames[frames.length + TranslateTimeline.PREV_Y]; + } else { + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + x = frames[frame + TranslateTimeline.PREV_X]; + y = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + x += (frames[frame + TranslateTimeline.X] - x) * percent; + y += (frames[frame + TranslateTimeline.Y] - y) * percent; + } + switch (blend) { + case MixBlend.setup: + bone.x = bone.data.x + x * alpha; + bone.y = bone.data.y + y * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + bone.x += (bone.data.x + x - bone.x) * alpha; + bone.y += (bone.data.y + y - bone.y) * alpha; + break; + + case MixBlend.add: + bone.x += x * alpha; + bone.y += y * alpha; + } + }; + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + return TranslateTimeline; + })(CurveTimeline); + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + ScaleTimeline.prototype.getPropertyId = function () { + return (TimelineType.scale << 24) + this.boneIndex; + }; + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.scaleX = bone.data.scaleX; + bone.scaleY = bone.data.scaleY; + return; + + case MixBlend.first: + bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX; + y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY; + } else { + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + x = frames[frame + ScaleTimeline.PREV_X]; + y = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX; + y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY; + } + if (1 == alpha) if (blend == MixBlend.add) { + bone.scaleX += x - bone.data.scaleX; + bone.scaleY += y - bone.data.scaleY; + } else { + bone.scaleX = x; + bone.scaleY = y; + } else { + var bx = 0, by = 0; + if (direction == MixDirection.mixOut) switch (blend) { + case MixBlend.setup: + bx = bone.data.scaleX; + by = bone.data.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; + break; + + case MixBlend.add: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; + } else switch (blend) { + case MixBlend.setup: + bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); + by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); + by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + + case MixBlend.add: + bx = spine.MathUtils.signum(x); + by = spine.MathUtils.signum(y); + bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; + bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; + } + } + }; + return ScaleTimeline; + })(TranslateTimeline); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + ShearTimeline.prototype.getPropertyId = function () { + return (TimelineType.shear << 24) + this.boneIndex; + }; + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.shearX = bone.data.shearX; + bone.shearY = bone.data.shearY; + return; + + case MixBlend.first: + bone.shearX += (bone.data.shearX - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY - bone.shearY) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + x = frames[frames.length + ShearTimeline.PREV_X]; + y = frames[frames.length + ShearTimeline.PREV_Y]; + } else { + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + x = frames[frame + ShearTimeline.PREV_X]; + y = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + x += (frames[frame + ShearTimeline.X] - x) * percent; + y += (frames[frame + ShearTimeline.Y] - y) * percent; + } + switch (blend) { + case MixBlend.setup: + bone.shearX = bone.data.shearX + x * alpha; + bone.shearY = bone.data.shearY + y * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; + break; + + case MixBlend.add: + bone.shearX += x * alpha; + bone.shearY += y * alpha; + } + }; + return ShearTimeline; + })(TranslateTimeline); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + return _this; + } + ColorTimeline.prototype.getPropertyId = function () { + return (TimelineType.color << 24) + this.slotIndex; + }; + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + slot.color.setFromColor(slot.data.color); + return; + + case MixBlend.first: + var color = slot.color, setup = slot.data.color; + color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); + } + return; + } + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } else { + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + if (1 == alpha) slot.color.set(r, g, b, a); else { + var color = slot.color; + blend == MixBlend.setup && color.setFromColor(slot.data.color); + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + } + }; + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + return ColorTimeline; + })(CurveTimeline); + spine.ColorTimeline = ColorTimeline; + var TwoColorTimeline = (function (_super) { + __extends(TwoColorTimeline, _super); + function TwoColorTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES); + return _this; + } + TwoColorTimeline.prototype.getPropertyId = function () { + return (TimelineType.twoColor << 24) + this.slotIndex; + }; + TwoColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a, r2, g2, b2) { + frameIndex *= TwoColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TwoColorTimeline.R] = r; + this.frames[frameIndex + TwoColorTimeline.G] = g; + this.frames[frameIndex + TwoColorTimeline.B] = b; + this.frames[frameIndex + TwoColorTimeline.A] = a; + this.frames[frameIndex + TwoColorTimeline.R2] = r2; + this.frames[frameIndex + TwoColorTimeline.G2] = g2; + this.frames[frameIndex + TwoColorTimeline.B2] = b2; + }; + TwoColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + slot.color.setFromColor(slot.data.color); + slot.darkColor.setFromColor(slot.data.darkColor); + return; + + case MixBlend.first: + var light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor; + light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); + dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0); + } + return; + } + var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; + if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + TwoColorTimeline.PREV_R]; + g = frames[i + TwoColorTimeline.PREV_G]; + b = frames[i + TwoColorTimeline.PREV_B]; + a = frames[i + TwoColorTimeline.PREV_A]; + r2 = frames[i + TwoColorTimeline.PREV_R2]; + g2 = frames[i + TwoColorTimeline.PREV_G2]; + b2 = frames[i + TwoColorTimeline.PREV_B2]; + } else { + var frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES); + r = frames[frame + TwoColorTimeline.PREV_R]; + g = frames[frame + TwoColorTimeline.PREV_G]; + b = frames[frame + TwoColorTimeline.PREV_B]; + a = frames[frame + TwoColorTimeline.PREV_A]; + r2 = frames[frame + TwoColorTimeline.PREV_R2]; + g2 = frames[frame + TwoColorTimeline.PREV_G2]; + b2 = frames[frame + TwoColorTimeline.PREV_B2]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + TwoColorTimeline.R] - r) * percent; + g += (frames[frame + TwoColorTimeline.G] - g) * percent; + b += (frames[frame + TwoColorTimeline.B] - b) * percent; + a += (frames[frame + TwoColorTimeline.A] - a) * percent; + r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent; + g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent; + b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent; + } + if (1 == alpha) { + slot.color.set(r, g, b, a); + slot.darkColor.set(r2, g2, b2, 1); + } else { + var light = slot.color, dark = slot.darkColor; + if (blend == MixBlend.setup) { + light.setFromColor(slot.data.color); + dark.setFromColor(slot.data.darkColor); + } + light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); + dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0); + } + }; + TwoColorTimeline.ENTRIES = 8; + TwoColorTimeline.PREV_TIME = -8; + TwoColorTimeline.PREV_R = -7; + TwoColorTimeline.PREV_G = -6; + TwoColorTimeline.PREV_B = -5; + TwoColorTimeline.PREV_A = -4; + TwoColorTimeline.PREV_R2 = -3; + TwoColorTimeline.PREV_G2 = -2; + TwoColorTimeline.PREV_B2 = -1; + TwoColorTimeline.R = 1; + TwoColorTimeline.G = 2; + TwoColorTimeline.B = 3; + TwoColorTimeline.A = 4; + TwoColorTimeline.R2 = 5; + TwoColorTimeline.G2 = 6; + TwoColorTimeline.B2 = 7; + return TwoColorTimeline; + })(CurveTimeline); + spine.TwoColorTimeline = TwoColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getPropertyId = function () { + return (TimelineType.attachment << 24) + this.slotIndex; + }; + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + if (direction == MixDirection.mixOut && blend == MixBlend.setup) { + var attachmentName_1 = slot.data.attachmentName; + slot.setAttachment(null == attachmentName_1 ? null : skeleton.getAttachment(this.slotIndex, attachmentName_1)); + return; + } + var frames = this.frames; + if (time < frames[0]) { + if (blend == MixBlend.setup || blend == MixBlend.first) { + var attachmentName_2 = slot.data.attachmentName; + slot.setAttachment(null == attachmentName_2 ? null : skeleton.getAttachment(this.slotIndex, attachmentName_2)); + } + return; + } + var frameIndex = 0; + frameIndex = time >= frames[frames.length - 1] ? frames.length - 1 : Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex].setAttachment(null == attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + })(); + spine.AttachmentTimeline = AttachmentTimeline; + var zeros = null; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount); + _this.frameVertices = new Array(frameCount); + null == zeros && (zeros = spine.Utils.newFloatArray(64)); + return _this; + } + DeformTimeline.prototype.getPropertyId = function () { + return (TimelineType.deform << 27) + +this.attachment.id + this.slotIndex; + }; + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) return; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !(slotAttachment.deformAttachment == this.attachment)) return; + var deformArray = slot.deform; + 0 == deformArray.length && (blend = MixBlend.setup); + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var frames = this.frames; + if (time < frames[0]) { + var vertexAttachment = slotAttachment; + switch (blend) { + case MixBlend.setup: + deformArray.length = 0; + return; + + case MixBlend.first: + if (1 == alpha) { + deformArray.length = 0; + break; + } + var deform_1 = spine.Utils.setArraySize(deformArray, vertexCount); + if (null == vertexAttachment.bones) { + var setupVertices = vertexAttachment.vertices; + for (var i = 0; i < vertexCount; i++) deform_1[i] += (setupVertices[i] - deform_1[i]) * alpha; + } else { + alpha = 1 - alpha; + for (var i = 0; i < vertexCount; i++) deform_1[i] *= alpha; + } + } + return; + } + var deform = spine.Utils.setArraySize(deformArray, vertexCount); + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (1 == alpha) if (blend == MixBlend.add) { + var vertexAttachment = slotAttachment; + if (null == vertexAttachment.bones) { + var setupVertices = vertexAttachment.vertices; + for (var i_1 = 0; i_1 < vertexCount; i_1++) deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; + } else for (var i_2 = 0; i_2 < vertexCount; i_2++) deform[i_2] += lastVertices[i_2]; + } else spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); else switch (blend) { + case MixBlend.setup: + var vertexAttachment_1 = slotAttachment; + if (null == vertexAttachment_1.bones) { + var setupVertices = vertexAttachment_1.vertices; + for (var i_3 = 0; i_3 < vertexCount; i_3++) { + var setup = setupVertices[i_3]; + deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; + } + } else for (var i_4 = 0; i_4 < vertexCount; i_4++) deform[i_4] = lastVertices[i_4] * alpha; + break; + + case MixBlend.first: + case MixBlend.replace: + for (var i_5 = 0; i_5 < vertexCount; i_5++) deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; + + case MixBlend.add: + var vertexAttachment = slotAttachment; + if (null == vertexAttachment.bones) { + var setupVertices = vertexAttachment.vertices; + for (var i_6 = 0; i_6 < vertexCount; i_6++) deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; + } else for (var i_7 = 0; i_7 < vertexCount; i_7++) deform[i_7] += lastVertices[i_7] * alpha; + } + return; + } + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (1 == alpha) if (blend == MixBlend.add) { + var vertexAttachment = slotAttachment; + if (null == vertexAttachment.bones) { + var setupVertices = vertexAttachment.vertices; + for (var i_8 = 0; i_8 < vertexCount; i_8++) { + var prev = prevVertices[i_8]; + deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; + } + } else for (var i_9 = 0; i_9 < vertexCount; i_9++) { + var prev = prevVertices[i_9]; + deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; + } + } else for (var i_10 = 0; i_10 < vertexCount; i_10++) { + var prev = prevVertices[i_10]; + deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; + } else switch (blend) { + case MixBlend.setup: + var vertexAttachment_2 = slotAttachment; + if (null == vertexAttachment_2.bones) { + var setupVertices = vertexAttachment_2.vertices; + for (var i_11 = 0; i_11 < vertexCount; i_11++) { + var prev = prevVertices[i_11], setup = setupVertices[i_11]; + deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; + } + } else for (var i_12 = 0; i_12 < vertexCount; i_12++) { + var prev = prevVertices[i_12]; + deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; + } + break; + + case MixBlend.first: + case MixBlend.replace: + for (var i_13 = 0; i_13 < vertexCount; i_13++) { + var prev = prevVertices[i_13]; + deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; + } + break; + + case MixBlend.add: + var vertexAttachment = slotAttachment; + if (null == vertexAttachment.bones) { + var setupVertices = vertexAttachment.vertices; + for (var i_14 = 0; i_14 < vertexCount; i_14++) { + var prev = prevVertices[i_14]; + deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; + } + } else for (var i_15 = 0; i_15 < vertexCount; i_15++) { + var prev = prevVertices[i_15]; + deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; + } + } + }; + return DeformTimeline; + })(CurveTimeline); + spine.DeformTimeline = DeformTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getPropertyId = function () { + return TimelineType.event << 24; + }; + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + if (null == firedEvents) return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); + lastTime = -1; + } else if (lastTime >= frames[frameCount - 1]) return; + if (time < frames[0]) return; + var frame = 0; + if (lastTime < frames[0]) frame = 0; else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) firedEvents.push(this.events[frame]); + }; + return EventTimeline; + })(); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getPropertyId = function () { + return TimelineType.drawOrder << 24; + }; + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + if (direction == MixDirection.mixOut && blend == MixBlend.setup) { + spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + var frames = this.frames; + if (time < frames[0]) { + blend != MixBlend.setup && blend != MixBlend.first || spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + var frame = 0; + frame = time >= frames[frames.length - 1] ? frames.length - 1 : Animation.binarySearch(frames, time) - 1; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (null == drawOrderToSetupIndex) spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); else for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + }; + return DrawOrderTimeline; + })(); + spine.DrawOrderTimeline = DrawOrderTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + return _this; + } + IkConstraintTimeline.prototype.getPropertyId = function () { + return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex; + }; + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, softness, bendDirection, compress, stretch) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.SOFTNESS] = softness; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + this.frames[frameIndex + IkConstraintTimeline.COMPRESS] = compress ? 1 : 0; + this.frames[frameIndex + IkConstraintTimeline.STRETCH] = stretch ? 1 : 0; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var frames = this.frames; + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (!constraint.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + return; + + case MixBlend.first: + constraint.mix += (constraint.data.mix - constraint.mix) * alpha; + constraint.softness += (constraint.data.softness - constraint.softness) * alpha; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + return; + } + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + if (blend == MixBlend.setup) { + constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha; + constraint.softness = constraint.data.softness + (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.data.softness) * alpha; + if (direction == MixDirection.mixOut) { + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } else { + constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = 0 != frames[frames.length + IkConstraintTimeline.PREV_COMPRESS]; + constraint.stretch = 0 != frames[frames.length + IkConstraintTimeline.PREV_STRETCH]; + } + } else { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.softness += (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.softness) * alpha; + if (direction == MixDirection.mixIn) { + constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = 0 != frames[frames.length + IkConstraintTimeline.PREV_COMPRESS]; + constraint.stretch = 0 != frames[frames.length + IkConstraintTimeline.PREV_STRETCH]; + } + } + return; + } + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var softness = frames[frame + IkConstraintTimeline.PREV_SOFTNESS]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + if (blend == MixBlend.setup) { + constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha; + constraint.softness = constraint.data.softness + (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.data.softness) * alpha; + if (direction == MixDirection.mixOut) { + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } else { + constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = 0 != frames[frame + IkConstraintTimeline.PREV_COMPRESS]; + constraint.stretch = 0 != frames[frame + IkConstraintTimeline.PREV_STRETCH]; + } + } else { + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.softness += (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.softness) * alpha; + if (direction == MixDirection.mixIn) { + constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = 0 != frames[frame + IkConstraintTimeline.PREV_COMPRESS]; + constraint.stretch = 0 != frames[frame + IkConstraintTimeline.PREV_STRETCH]; + } + } + }; + IkConstraintTimeline.ENTRIES = 6; + IkConstraintTimeline.PREV_TIME = -6; + IkConstraintTimeline.PREV_MIX = -5; + IkConstraintTimeline.PREV_SOFTNESS = -4; + IkConstraintTimeline.PREV_BEND_DIRECTION = -3; + IkConstraintTimeline.PREV_COMPRESS = -2; + IkConstraintTimeline.PREV_STRETCH = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.SOFTNESS = 2; + IkConstraintTimeline.BEND_DIRECTION = 3; + IkConstraintTimeline.COMPRESS = 4; + IkConstraintTimeline.STRETCH = 5; + return IkConstraintTimeline; + })(CurveTimeline); + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + return _this; + } + TransformConstraintTimeline.prototype.getPropertyId = function () { + return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex; + }; + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var frames = this.frames; + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (!constraint.active) return; + if (time < frames[0]) { + var data = constraint.data; + switch (blend) { + case MixBlend.setup: + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + return; + + case MixBlend.first: + constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha; + constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha; + constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha; + } + return; + } + var rotate = 0, translate = 0, scale = 0, shear = 0; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[i + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[i + TransformConstraintTimeline.PREV_SHEAR]; + } else { + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent; + scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent; + shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent; + } + if (blend == MixBlend.setup) { + var data = constraint.data; + constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha; + constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha; + constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha; + constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha; + } else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + constraint.scaleMix += (scale - constraint.scaleMix) * alpha; + constraint.shearMix += (shear - constraint.shearMix) * alpha; + } + }; + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + return TransformConstraintTimeline; + })(CurveTimeline); + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + return _this; + } + PathConstraintPositionTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex; + }; + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.position = constraint.data.position; + return; + + case MixBlend.first: + constraint.position += (constraint.data.position - constraint.position) * alpha; + } + return; + } + var position = 0; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE]; else { + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent; + } + blend == MixBlend.setup ? constraint.position = constraint.data.position + (position - constraint.data.position) * alpha : constraint.position += (position - constraint.position) * alpha; + }; + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + return PathConstraintPositionTimeline; + })(CurveTimeline); + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + PathConstraintSpacingTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex; + }; + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.spacing = constraint.data.spacing; + return; + + case MixBlend.first: + constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; + } + return; + } + var spacing = 0; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE]; else { + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent; + } + blend == MixBlend.setup ? constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha : constraint.spacing += (spacing - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + })(PathConstraintPositionTimeline); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + return _this; + } + PathConstraintMixTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex; + }; + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.rotateMix = constraint.data.rotateMix; + constraint.translateMix = constraint.data.translateMix; + return; + + case MixBlend.first: + constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha; + } + return; + } + var rotate = 0, translate = 0; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE]; + } else { + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent; + } + if (blend == MixBlend.setup) { + constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha; + constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha; + } else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + } + }; + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + return PathConstraintMixTimeline; + })(CurveTimeline); + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; + })(spine || (spine = {})); + var spine; + (function (spine) { + var AnimationState = (function () { + function AnimationState(data) { + this.tracks = new Array(); + this.timeScale = 1; + this.events = new Array(); + this.listeners = new Array(); + this.queue = new EventQueue(this); + this.propertyIDs = new spine.IntSet(); + this.animationsChanged = false; + this.trackEntryPool = new spine.Pool(function () { + return new TrackEntry(); + }); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + var tracks = this.tracks; + for (var i = 0, n = tracks.length; i < n; i++) { + var current = tracks[i]; + if (null == current) continue; + current.animationLast = current.nextAnimationLast; + current.trackLast = current.nextTrackLast; + var currentDelta = delta * current.timeScale; + if (current.delay > 0) { + current.delay -= currentDelta; + if (current.delay > 0) continue; + currentDelta = -current.delay; + current.delay = 0; + } + var next = current.next; + if (null != next) { + var nextTime = current.trackLast - next.delay; + if (nextTime >= 0) { + next.delay = 0; + next.trackTime += 0 == current.timeScale ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; + current.trackTime += currentDelta; + this.setCurrent(i, next, true); + while (null != next.mixingFrom) { + next.mixTime += delta; + next = next.mixingFrom; + } + continue; + } + } else if (current.trackLast >= current.trackEnd && null == current.mixingFrom) { + tracks[i] = null; + this.queue.end(current); + this.disposeNext(current); + continue; + } + if (null != current.mixingFrom && this.updateMixingFrom(current, delta)) { + var from = current.mixingFrom; + current.mixingFrom = null; + null != from && (from.mixingTo = null); + while (null != from) { + this.queue.end(from); + from = from.mixingFrom; + } + } + current.trackTime += currentDelta; + } + this.queue.drain(); + }; + AnimationState.prototype.updateMixingFrom = function (to, delta) { + var from = to.mixingFrom; + if (null == from) return true; + var finished = this.updateMixingFrom(from, delta); + from.animationLast = from.nextAnimationLast; + from.trackLast = from.nextTrackLast; + if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { + if (0 == from.totalAlpha || 0 == to.mixDuration) { + to.mixingFrom = from.mixingFrom; + null != from.mixingFrom && (from.mixingFrom.mixingTo = to); + to.interruptAlpha = from.interruptAlpha; + this.queue.end(from); + } + return finished; + } + from.trackTime += delta * from.timeScale; + to.mixTime += delta; + return false; + }; + AnimationState.prototype.apply = function (skeleton) { + if (null == skeleton) throw new Error("skeleton cannot be null."); + this.animationsChanged && this._animationsChanged(); + var events = this.events; + var tracks = this.tracks; + var applied = false; + for (var i = 0, n = tracks.length; i < n; i++) { + var current = tracks[i]; + if (null == current || current.delay > 0) continue; + applied = true; + var blend = 0 == i ? spine.MixBlend.first : current.mixBlend; + var mix = current.alpha; + null != current.mixingFrom ? mix *= this.applyMixingFrom(current, skeleton, blend) : current.trackTime >= current.trackEnd && null == current.next && (mix = 0); + var animationLast = current.animationLast, animationTime = current.getAnimationTime(); + var timelineCount = current.animation.timelines.length; + var timelines = current.animation.timelines; + if (0 == i && 1 == mix || blend == spine.MixBlend.add) for (var ii = 0; ii < timelineCount; ii++) { + spine.Utils.webkit602BugfixHelper(mix, blend); + timelines[ii].apply(skeleton, animationLast, animationTime, events, mix, blend, spine.MixDirection.mixIn); + } else { + var timelineMode = current.timelineMode; + var firstFrame = 0 == current.timelinesRotation.length; + firstFrame && spine.Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null); + var timelinesRotation = current.timelinesRotation; + for (var ii = 0; ii < timelineCount; ii++) { + var timeline = timelines[ii]; + var timelineBlend = (timelineMode[ii] & AnimationState.NOT_LAST - 1) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup; + if (timeline instanceof spine.RotateTimeline) this.applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame); else { + spine.Utils.webkit602BugfixHelper(mix, blend); + timeline.apply(skeleton, animationLast, animationTime, events, mix, timelineBlend, spine.MixDirection.mixIn); + } + } + } + this.queueEvents(current, animationTime); + events.length = 0; + current.nextAnimationLast = animationTime; + current.nextTrackLast = current.trackTime; + } + this.queue.drain(); + return applied; + }; + AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { + var from = to.mixingFrom; + null != from.mixingFrom && this.applyMixingFrom(from, skeleton, blend); + var mix = 0; + if (0 == to.mixDuration) { + mix = 1; + blend == spine.MixBlend.first && (blend = spine.MixBlend.setup); + } else { + mix = to.mixTime / to.mixDuration; + mix > 1 && (mix = 1); + blend != spine.MixBlend.first && (blend = from.mixBlend); + } + var events = mix < from.eventThreshold ? this.events : null; + var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; + var animationLast = from.animationLast, animationTime = from.getAnimationTime(); + var timelineCount = from.animation.timelines.length; + var timelines = from.animation.timelines; + var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); + if (blend == spine.MixBlend.add) for (var i = 0; i < timelineCount; i++) timelines[i].apply(skeleton, animationLast, animationTime, events, alphaMix, blend, spine.MixDirection.mixOut); else { + var timelineMode = from.timelineMode; + var timelineHoldMix = from.timelineHoldMix; + var firstFrame = 0 == from.timelinesRotation.length; + firstFrame && spine.Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null); + var timelinesRotation = from.timelinesRotation; + from.totalAlpha = 0; + for (var i = 0; i < timelineCount; i++) { + var timeline = timelines[i]; + var direction = spine.MixDirection.mixOut; + var timelineBlend = void 0; + var alpha = 0; + switch (timelineMode[i] & AnimationState.NOT_LAST - 1) { + case AnimationState.SUBSEQUENT: + timelineBlend = blend; + if (!attachments && timeline instanceof spine.AttachmentTimeline) { + if ((timelineMode[i] & AnimationState.NOT_LAST) == AnimationState.NOT_LAST) continue; + timelineBlend = spine.MixBlend.setup; + } + if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) continue; + alpha = alphaMix; + break; + + case AnimationState.FIRST: + timelineBlend = spine.MixBlend.setup; + alpha = alphaMix; + break; + + case AnimationState.HOLD: + timelineBlend = spine.MixBlend.setup; + alpha = alphaHold; + break; + + default: + timelineBlend = spine.MixBlend.setup; + var holdMix = timelineHoldMix[i]; + alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); + } + from.totalAlpha += alpha; + if (timeline instanceof spine.RotateTimeline) this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame); else { + spine.Utils.webkit602BugfixHelper(alpha, blend); + timelineBlend == spine.MixBlend.setup && (timeline instanceof spine.AttachmentTimeline ? (attachments || (timelineMode[i] & AnimationState.NOT_LAST) == AnimationState.NOT_LAST) && (direction = spine.MixDirection.mixIn) : timeline instanceof spine.DrawOrderTimeline && drawOrder && (direction = spine.MixDirection.mixIn)); + timeline.apply(skeleton, animationLast, animationTime, events, alpha, timelineBlend, direction); + } + } + } + to.mixDuration > 0 && this.queueEvents(from, animationTime); + this.events.length = 0; + from.nextAnimationLast = animationTime; + from.nextTrackLast = from.trackTime; + return mix; + }; + AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { + firstFrame && (timelinesRotation[i] = 0); + if (1 == alpha) { + timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); + return; + } + var rotateTimeline = timeline; + var frames = rotateTimeline.frames; + var bone = skeleton.bones[rotateTimeline.boneIndex]; + if (!bone.active) return; + var r1 = 0, r2 = 0; + if (time < frames[0]) switch (blend) { + case spine.MixBlend.setup: + bone.rotation = bone.data.rotation; + + default: + return; + + case spine.MixBlend.first: + r1 = bone.rotation; + r2 = bone.data.rotation; + } else { + r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; + if (time >= frames[frames.length - spine.RotateTimeline.ENTRIES]) r2 = bone.data.rotation + frames[frames.length + spine.RotateTimeline.PREV_ROTATION]; else { + var frame = spine.Animation.binarySearch(frames, time, spine.RotateTimeline.ENTRIES); + var prevRotation = frames[frame + spine.RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = rotateTimeline.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + spine.RotateTimeline.PREV_TIME] - frameTime)); + r2 = frames[frame + spine.RotateTimeline.ROTATION] - prevRotation; + r2 -= 360 * (16384 - (16384.499999999996 - r2 / 360 | 0)); + r2 = prevRotation + r2 * percent + bone.data.rotation; + r2 -= 360 * (16384 - (16384.499999999996 - r2 / 360 | 0)); + } + } + var total = 0, diff = r2 - r1; + diff -= 360 * (16384 - (16384.499999999996 - diff / 360 | 0)); + if (0 == diff) total = timelinesRotation[i]; else { + var lastTotal = 0, lastDiff = 0; + if (firstFrame) { + lastTotal = 0; + lastDiff = diff; + } else { + lastTotal = timelinesRotation[i]; + lastDiff = timelinesRotation[i + 1]; + } + var current = diff > 0, dir = lastTotal >= 0; + if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { + Math.abs(lastTotal) > 180 && (lastTotal += 360 * spine.MathUtils.signum(lastTotal)); + dir = current; + } + total = diff + lastTotal - lastTotal % 360; + dir != current && (total += 360 * spine.MathUtils.signum(lastTotal)); + timelinesRotation[i] = total; + } + timelinesRotation[i + 1] = diff; + r1 += total * alpha; + bone.rotation = r1 - 360 * (16384 - (16384.499999999996 - r1 / 360 | 0)); + }; + AnimationState.prototype.queueEvents = function (entry, animationTime) { + var animationStart = entry.animationStart, animationEnd = entry.animationEnd; + var duration = animationEnd - animationStart; + var trackLastWrapped = entry.trackLast % duration; + var events = this.events; + var i = 0, n = events.length; + for (; i < n; i++) { + var event_1 = events[i]; + if (event_1.time < trackLastWrapped) break; + if (event_1.time > animationEnd) continue; + this.queue.event(entry, event_1); + } + var complete = false; + complete = entry.loop ? 0 == duration || trackLastWrapped > entry.trackTime % duration : animationTime >= animationEnd && entry.animationLast < animationEnd; + complete && this.queue.complete(entry); + for (; i < n; i++) { + var event_2 = events[i]; + if (event_2.time < animationStart) continue; + this.queue.event(entry, events[i]); + } + }; + AnimationState.prototype.clearTracks = function () { + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) this.clearTrack(i); + this.tracks.length = 0; + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) return; + var current = this.tracks[trackIndex]; + if (null == current) return; + this.queue.end(current); + this.disposeNext(current); + var entry = current; + while (true) { + var from = entry.mixingFrom; + if (null == from) break; + this.queue.end(from); + entry.mixingFrom = null; + entry.mixingTo = null; + entry = from; + } + this.tracks[current.trackIndex] = null; + this.queue.drain(); + }; + AnimationState.prototype.setCurrent = function (index, current, interrupt) { + var from = this.expandToIndex(index); + this.tracks[index] = current; + if (null != from) { + interrupt && this.queue.interrupt(from); + current.mixingFrom = from; + from.mixingTo = current; + current.mixTime = 0; + null != from.mixingFrom && from.mixDuration > 0 && (current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration)); + from.timelinesRotation.length = 0; + } + this.queue.start(current); + }; + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (null == animation) throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + if (null == animation) throw new Error("animation cannot be null."); + var interrupt = true; + var current = this.expandToIndex(trackIndex); + if (null != current) if (-1 == current.nextTrackLast) { + this.tracks[trackIndex] = current.mixingFrom; + this.queue.interrupt(current); + this.queue.end(current); + this.disposeNext(current); + current = current.mixingFrom; + interrupt = false; + } else this.disposeNext(current); + var entry = this.trackEntry(trackIndex, animation, loop, current); + this.setCurrent(trackIndex, entry, interrupt); + this.queue.drain(); + return entry; + }; + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (null == animation) throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + if (null == animation) throw new Error("animation cannot be null."); + var last = this.expandToIndex(trackIndex); + if (null != last) while (null != last.next) last = last.next; + var entry = this.trackEntry(trackIndex, animation, loop, last); + if (null == last) { + this.setCurrent(trackIndex, entry, true); + this.queue.drain(); + } else { + last.next = entry; + if (delay <= 0) { + var duration = last.animationEnd - last.animationStart; + if (0 != duration) { + last.loop ? delay += duration * (1 + (last.trackTime / duration | 0)) : delay += Math.max(duration, last.trackTime); + delay -= this.data.getMix(last.animation, animation); + } else delay = last.trackTime; + } + } + entry.delay = delay; + return entry; + }; + AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { + var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { + delay <= 0 && (delay -= mixDuration); + var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + AnimationState.prototype.setEmptyAnimations = function (mixDuration) { + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) { + var current = this.tracks[i]; + null != current && this.setEmptyAnimation(current.trackIndex, mixDuration); + } + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) return this.tracks[index]; + spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { + var entry = this.trackEntryPool.obtain(); + entry.trackIndex = trackIndex; + entry.animation = animation; + entry.loop = loop; + entry.holdPrevious = false; + entry.eventThreshold = 0; + entry.attachmentThreshold = 0; + entry.drawOrderThreshold = 0; + entry.animationStart = 0; + entry.animationEnd = animation.duration; + entry.animationLast = -1; + entry.nextAnimationLast = -1; + entry.delay = 0; + entry.trackTime = 0; + entry.trackLast = -1; + entry.nextTrackLast = -1; + entry.trackEnd = Number.MAX_VALUE; + entry.timeScale = 1; + entry.alpha = 1; + entry.interruptAlpha = 1; + entry.mixTime = 0; + entry.mixDuration = null == last ? 0 : this.data.getMix(last.animation, animation); + return entry; + }; + AnimationState.prototype.disposeNext = function (entry) { + var next = entry.next; + while (null != next) { + this.queue.dispose(next); + next = next.next; + } + entry.next = null; + }; + AnimationState.prototype._animationsChanged = function () { + this.animationsChanged = false; + this.propertyIDs.clear(); + for (var i = 0, n = this.tracks.length; i < n; i++) { + var entry = this.tracks[i]; + if (null == entry) continue; + while (null != entry.mixingFrom) entry = entry.mixingFrom; + do { + null != entry.mixingFrom && entry.mixBlend == spine.MixBlend.add || this.computeHold(entry); + entry = entry.mixingTo; + } while (null != entry); + } + this.propertyIDs.clear(); + for (var i = this.tracks.length - 1; i >= 0; i--) { + var entry = this.tracks[i]; + while (null != entry) { + this.computeNotLast(entry); + entry = entry.mixingFrom; + } + } + }; + AnimationState.prototype.computeHold = function (entry) { + var to = entry.mixingTo; + var timelines = entry.animation.timelines; + var timelinesCount = entry.animation.timelines.length; + var timelineMode = spine.Utils.setArraySize(entry.timelineMode, timelinesCount); + entry.timelineHoldMix.length = 0; + var timelineDipMix = spine.Utils.setArraySize(entry.timelineHoldMix, timelinesCount); + var propertyIDs = this.propertyIDs; + if (null != to && to.holdPrevious) { + for (var i = 0; i < timelinesCount; i++) { + propertyIDs.add(timelines[i].getPropertyId()); + timelineMode[i] = AnimationState.HOLD; + } + return; + } + outer: for (var i = 0; i < timelinesCount; i++) { + var timeline = timelines[i]; + var id = timeline.getPropertyId(); + if (propertyIDs.add(id)) if (null == to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(id)) timelineMode[i] = AnimationState.FIRST; else { + for (var next = to.mixingTo; null != next; next = next.mixingTo) { + if (next.animation.hasTimeline(id)) continue; + if (entry.mixDuration > 0) { + timelineMode[i] = AnimationState.HOLD_MIX; + timelineDipMix[i] = next; + continue outer; + } + break; + } + timelineMode[i] = AnimationState.HOLD; + } else timelineMode[i] = AnimationState.SUBSEQUENT; + } + }; + AnimationState.prototype.computeNotLast = function (entry) { + var timelines = entry.animation.timelines; + var timelinesCount = entry.animation.timelines.length; + var timelineMode = entry.timelineMode; + var propertyIDs = this.propertyIDs; + for (var i = 0; i < timelinesCount; i++) if (timelines[i] instanceof spine.AttachmentTimeline) { + var timeline = timelines[i]; + propertyIDs.add(timeline.slotIndex) || (timelineMode[i] |= AnimationState.NOT_LAST); + } + }; + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) return null; + return this.tracks[trackIndex]; + }; + AnimationState.prototype.addListener = function (listener) { + if (null == listener) throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + index >= 0 && this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + AnimationState.prototype.clearListenerNotifications = function () { + this.queue.clear(); + }; + AnimationState.emptyAnimation = new spine.Animation("", [], 0); + AnimationState.SUBSEQUENT = 0; + AnimationState.FIRST = 1; + AnimationState.HOLD = 2; + AnimationState.HOLD_MIX = 3; + AnimationState.NOT_LAST = 4; + return AnimationState; + })(); + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.mixBlend = spine.MixBlend.replace; + this.timelineMode = new Array(); + this.timelineHoldMix = new Array(); + this.timelinesRotation = new Array(); + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.mixingFrom = null; + this.mixingTo = null; + this.animation = null; + this.listener = null; + this.timelineMode.length = 0; + this.timelineHoldMix.length = 0; + this.timelinesRotation.length = 0; + }; + TrackEntry.prototype.getAnimationTime = function () { + if (this.loop) { + var duration = this.animationEnd - this.animationStart; + if (0 == duration) return this.animationStart; + return this.trackTime % duration + this.animationStart; + } + return Math.min(this.trackTime + this.animationStart, this.animationEnd); + }; + TrackEntry.prototype.setAnimationLast = function (animationLast) { + this.animationLast = animationLast; + this.nextAnimationLast = animationLast; + }; + TrackEntry.prototype.isComplete = function () { + return this.trackTime >= this.animationEnd - this.animationStart; + }; + TrackEntry.prototype.resetRotationDirections = function () { + this.timelinesRotation.length = 0; + }; + return TrackEntry; + })(); + spine.TrackEntry = TrackEntry; + var EventQueue = (function () { + function EventQueue(animState) { + this.objects = []; + this.drainDisabled = false; + this.animState = animState; + } + EventQueue.prototype.start = function (entry) { + this.objects.push(EventType.start); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.interrupt = function (entry) { + this.objects.push(EventType.interrupt); + this.objects.push(entry); + }; + EventQueue.prototype.end = function (entry) { + this.objects.push(EventType.end); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.dispose = function (entry) { + this.objects.push(EventType.dispose); + this.objects.push(entry); + }; + EventQueue.prototype.complete = function (entry) { + this.objects.push(EventType.complete); + this.objects.push(entry); + }; + EventQueue.prototype.event = function (entry, event) { + this.objects.push(EventType.event); + this.objects.push(entry); + this.objects.push(event); + }; + EventQueue.prototype.drain = function () { + if (this.drainDisabled) return; + this.drainDisabled = true; + var objects = this.objects; + var listeners = this.animState.listeners; + for (var i = 0; i < objects.length; i += 2) { + var type = objects[i]; + var entry = objects[i + 1]; + switch (type) { + case EventType.start: + null != entry.listener && entry.listener.start && entry.listener.start(entry); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].start && listeners[ii].start(entry); + break; + + case EventType.interrupt: + null != entry.listener && entry.listener.interrupt && entry.listener.interrupt(entry); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].interrupt && listeners[ii].interrupt(entry); + break; + + case EventType.end: + null != entry.listener && entry.listener.end && entry.listener.end(entry); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].end && listeners[ii].end(entry); + + case EventType.dispose: + null != entry.listener && entry.listener.dispose && entry.listener.dispose(entry); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].dispose && listeners[ii].dispose(entry); + this.animState.trackEntryPool.free(entry); + break; + + case EventType.complete: + null != entry.listener && entry.listener.complete && entry.listener.complete(entry); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].complete && listeners[ii].complete(entry); + break; + + case EventType.event: + var event_3 = objects[2 + i++]; + null != entry.listener && entry.listener.event && entry.listener.event(entry, event_3); + for (var ii = 0; ii < listeners.length; ii++) listeners[ii].event && listeners[ii].event(entry, event_3); + } + } + this.clear(); + this.drainDisabled = false; + }; + EventQueue.prototype.clear = function () { + this.objects.length = 0; + }; + return EventQueue; + })(); + spine.EventQueue = EventQueue; + var EventType; + (function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["interrupt"] = 1] = "interrupt"; + EventType[EventType["end"] = 2] = "end"; + EventType[EventType["dispose"] = 3] = "dispose"; + EventType[EventType["complete"] = 4] = "complete"; + EventType[EventType["event"] = 5] = "event"; + })(EventType = spine.EventType || (spine.EventType = {})); + var AnimationStateAdapter = (function () { + function AnimationStateAdapter() { } + AnimationStateAdapter.prototype.start = function (entry) { }; + AnimationStateAdapter.prototype.interrupt = function (entry) { }; + AnimationStateAdapter.prototype.end = function (entry) { }; + AnimationStateAdapter.prototype.dispose = function (entry) { }; + AnimationStateAdapter.prototype.complete = function (entry) { }; + AnimationStateAdapter.prototype.event = function (entry, event) { }; + return AnimationStateAdapter; + })(); + spine.AnimationStateAdapter = AnimationStateAdapter; + })(spine || (spine = {})); + var spine; + (function (spine) { + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (null == skeletonData) throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (null == from) throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (null == to) throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (null == from) throw new Error("from cannot be null."); + if (null == to) throw new Error("to cannot be null."); + var key = from.name + "." + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + "." + to.name; + var value = this.animationToMixTime[key]; + return void 0 === value ? this.defaultMix : value; + }; + return AnimationStateData; + })(); + spine.AnimationStateData = AnimationStateData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var AssetManager = (function () { + function AssetManager(textureLoader, pathPrefix) { + void 0 === pathPrefix && (pathPrefix = ""); + this.assets = {}; + this.errors = {}; + this.toLoad = 0; + this.loaded = 0; + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + } + AssetManager.downloadText = function (url, success, error) { + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.onload = function () { + 200 == request.status ? success(request.responseText) : error(request.status, request.responseText); + }; + request.onerror = function () { + error(request.status, request.responseText); + }; + request.send(); + }; + AssetManager.downloadBinary = function (url, success, error) { + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + request.onload = function () { + 200 == request.status ? success(new Uint8Array(request.response)) : error(request.status, request.responseText); + }; + request.onerror = function () { + error(request.status, request.responseText); + }; + request.send(); + }; + AssetManager.prototype.loadBinary = function (path, success, error) { + var _this = this; + void 0 === success && (success = null); + void 0 === error && (error = null); + path = this.pathPrefix + path; + this.toLoad++; + AssetManager.downloadBinary(path, (function (data) { + _this.assets[path] = data; + success && success(path, data); + _this.toLoad--; + _this.loaded++; + }), (function (state, responseText) { + _this.errors[path] = "Couldn't load binary " + path + ": status " + status + ", " + responseText; + error && error(path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); + _this.toLoad--; + _this.loaded++; + })); + }; + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + void 0 === success && (success = null); + void 0 === error && (error = null); + path = this.pathPrefix + path; + this.toLoad++; + AssetManager.downloadText(path, (function (data) { + _this.assets[path] = data; + success && success(path, data); + _this.toLoad--; + _this.loaded++; + }), (function (state, responseText) { + _this.errors[path] = "Couldn't load text " + path + ": status " + status + ", " + responseText; + error && error(path, "Couldn't load text " + path + ": status " + status + ", " + responseText); + _this.toLoad--; + _this.loaded++; + })); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + void 0 === success && (success = null); + void 0 === error && (error = null); + path = this.pathPrefix + path; + this.toLoad++; + var img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = function (ev) { + var texture = _this.textureLoader(img); + _this.assets[path] = texture; + _this.toLoad--; + _this.loaded++; + success && success(path, img); + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + _this.toLoad--; + _this.loaded++; + error && error(path, "Couldn't load image " + path); + }; + img.src = path; + }; + AssetManager.prototype.loadTextureData = function (path, data, success, error) { + var _this = this; + void 0 === success && (success = null); + void 0 === error && (error = null); + path = this.pathPrefix + path; + this.toLoad++; + var img = new Image(); + img.onload = function (ev) { + var texture = _this.textureLoader(img); + _this.assets[path] = texture; + _this.toLoad--; + _this.loaded++; + success && success(path, img); + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + _this.toLoad--; + _this.loaded++; + error && error(path, "Couldn't load image " + path); + }; + img.src = data; + }; + AssetManager.prototype.loadTextureAtlas = function (path, success, error) { + var _this = this; + void 0 === success && (success = null); + void 0 === error && (error = null); + var parent = path.lastIndexOf("/") >= 0 ? path.substring(0, path.lastIndexOf("/")) : ""; + path = this.pathPrefix + path; + this.toLoad++; + AssetManager.downloadText(path, (function (atlasData) { + var pagesLoaded = { + count: 0 + }; + var atlasPages = new Array(); + try { + var atlas = new spine.TextureAtlas(atlasData, function (path) { + atlasPages.push(parent + "/" + path); + var image = document.createElement("img"); + image.width = 16; + image.height = 16; + return new spine.FakeTexture(image); + }); + } catch (e) { + var ex = e; + _this.errors[path] = "Couldn't load texture atlas " + path + ": " + ex.message; + error && error(path, "Couldn't load texture atlas " + path + ": " + ex.message); + _this.toLoad--; + _this.loaded++; + return; + } + var _loop_1 = function _loop_1(atlasPage) { + var pageLoadError = false; + _this.loadTexture(atlasPage, (function (imagePath, image) { + pagesLoaded.count++; + if (pagesLoaded.count == atlasPages.length) if (pageLoadError) { + _this.errors[path] = "Couldn't load texture atlas page " + imagePath + "} of atlas " + path; + error && error(path, "Couldn't load texture atlas page " + imagePath + " of atlas " + path); + _this.toLoad--; + _this.loaded++; + } else try { + var atlas = new spine.TextureAtlas(atlasData, function (path) { + return _this.get(parent + "/" + path); + }); + _this.assets[path] = atlas; + success && success(path, atlas); + _this.toLoad--; + _this.loaded++; + } catch (e) { + var ex = e; + _this.errors[path] = "Couldn't load texture atlas " + path + ": " + ex.message; + error && error(path, "Couldn't load texture atlas " + path + ": " + ex.message); + _this.toLoad--; + _this.loaded++; + } + }), (function (imagePath, errorMessage) { + pageLoadError = true; + pagesLoaded.count++; + if (pagesLoaded.count == atlasPages.length) { + _this.errors[path] = "Couldn't load texture atlas page " + imagePath + "} of atlas " + path; + error && error(path, "Couldn't load texture atlas page " + imagePath + " of atlas " + path); + _this.toLoad--; + _this.loaded++; + } + })); + }; + for (var _i = 0, atlasPages_1 = atlasPages; _i < atlasPages_1.length; _i++) { + var atlasPage = atlasPages_1[_i]; + _loop_1(atlasPage); + } + }), (function (state, responseText) { + _this.errors[path] = "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText; + error && error(path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); + _this.toLoad--; + _this.loaded++; + })); + }; + AssetManager.prototype.get = function (path) { + path = this.pathPrefix + path; + return this.assets[path]; + }; + AssetManager.prototype.remove = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + asset.dispose && asset.dispose(); + this.assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this.assets) { + var asset = this.assets[key]; + asset.dispose && asset.dispose(); + } + this.assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return 0 == this.toLoad; + }; + AssetManager.prototype.getToLoad = function () { + return this.toLoad; + }; + AssetManager.prototype.getLoaded = function () { + return this.loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + AssetManager.prototype.getErrors = function () { + return this.errors; + }; + return AssetManager; + })(); + spine.AssetManager = AssetManager; + })(spine || (spine = {})); + var spine; + (function (spine) { + var AtlasAttachmentLoader = (function () { + function AtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (null == region) return null; + region.renderObject = region; + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + return attachment; + }; + AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (null == region) return null; + region.renderObject = region; + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { + return new spine.PointAttachment(name); + }; + AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { + return new spine.ClippingAttachment(name); + }; + return AtlasAttachmentLoader; + })(); + spine.AtlasAttachmentLoader = AtlasAttachmentLoader; + })(spine || (spine = {})); + var spine; + (function (spine) { + var BlendMode; + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); + })(spine || (spine = {})); + var spine; + (function (spine) { + var Bone = (function () { + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.ax = 0; + this.ay = 0; + this.arotation = 0; + this.ascaleX = 0; + this.ascaleY = 0; + this.ashearX = 0; + this.ashearY = 0; + this.appliedValid = false; + this.a = 0; + this.b = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldX = 0; + this.sorted = false; + this.active = false; + if (null == data) throw new Error("data cannot be null."); + if (null == skeleton) throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + Bone.prototype.isActive = function () { + return this.active; + }; + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.ax = x; + this.ay = y; + this.arotation = rotation; + this.ascaleX = scaleX; + this.ascaleY = scaleY; + this.ashearX = shearX; + this.ashearY = shearY; + this.appliedValid = true; + var parent = this.parent; + if (null == parent) { + var skeleton = this.skeleton; + var rotationY = rotation + 90 + shearY; + var sx = skeleton.scaleX; + var sy = skeleton.scaleY; + this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; + this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; + this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; + this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; + this.worldX = x * sx + skeleton.x; + this.worldY = y * sy + skeleton.y; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + switch (this.data.transformMode) { + case spine.TransformMode.Normal: + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + return; + + case spine.TransformMode.OnlyTranslation: + var rotationY = rotation + 90 + shearY; + this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; + this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; + break; + + case spine.TransformMode.NoRotationOrReflection: + var s = pa * pa + pc * pc; + var prx = 0; + if (s > 1e-4) { + s = Math.abs(pa * pd - pb * pc) / s; + pb = pc * s; + pd = pa * s; + prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; + } else { + pa = 0; + pc = 0; + prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; + } + var rx = rotation + shearX - prx; + var ry = rotation + shearY - prx + 90; + var la = spine.MathUtils.cosDeg(rx) * scaleX; + var lb = spine.MathUtils.cosDeg(ry) * scaleY; + var lc = spine.MathUtils.sinDeg(rx) * scaleX; + var ld = spine.MathUtils.sinDeg(ry) * scaleY; + this.a = pa * la - pb * lc; + this.b = pa * lb - pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + break; + + case spine.TransformMode.NoScale: + case spine.TransformMode.NoScaleOrReflection: + var cos = spine.MathUtils.cosDeg(rotation); + var sin = spine.MathUtils.sinDeg(rotation); + var za = (pa * cos + pb * sin) / this.skeleton.scaleX; + var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; + var s = Math.sqrt(za * za + zc * zc); + s > 1e-5 && (s = 1 / s); + za *= s; + zc *= s; + s = Math.sqrt(za * za + zc * zc); + this.data.transformMode == spine.TransformMode.NoScale && pa * pd - pb * pc < 0 != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0) && (s = -s); + var r = Math.PI / 2 + Math.atan2(zc, za); + var zb = Math.cos(r) * s; + var zd = Math.sin(r) * s; + var la = spine.MathUtils.cosDeg(shearX) * scaleX; + var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; + var lc = spine.MathUtils.sinDeg(shearX) * scaleX; + var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; + this.a = za * la + zb * lc; + this.b = za * lb + zb * ld; + this.c = zc * la + zd * lc; + this.d = zc * lb + zd * ld; + } + this.a *= this.skeleton.scaleX; + this.b *= this.skeleton.scaleX; + this.c *= this.skeleton.scaleY; + this.d *= this.skeleton.scaleY; + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.c * this.c); + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.b * this.b + this.d * this.d); + }; + Bone.prototype.updateAppliedTransform = function () { + this.appliedValid = true; + var parent = this.parent; + if (null == parent) { + this.ax = this.worldX; + this.ay = this.worldY; + this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); + this.ashearX = 0; + this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.ax = dx * pd * pid - dy * pb * pid; + this.ay = dy * pa * pid - dx * pc * pid; + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.ashearX = 0; + this.ascaleX = Math.sqrt(ra * ra + rc * rc); + if (this.ascaleX > 1e-4) { + var det = ra * rd - rb * rc; + this.ascaleY = det / this.ascaleX; + this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } else { + this.ascaleX = 0; + this.ascaleY = Math.sqrt(rb * rb + rd * rd); + this.ashearY = 0; + this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = x * d * invDet - y * b * invDet; + world.y = y * a * invDet - x * c * invDet; + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + Bone.prototype.worldToLocalRotation = function (worldRotation) { + var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); + return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; + }; + Bone.prototype.localToWorldRotation = function (localRotation) { + localRotation -= this.rotation - this.shearX; + var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); + return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + this.appliedValid = false; + }; + return Bone; + })(); + spine.Bone = Bone; + })(spine || (spine = {})); + var spine; + (function (spine) { + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.transformMode = TransformMode.Normal; + this.skinRequired = false; + this.color = new spine.Color(); + if (index < 0) throw new Error("index must be >= 0."); + if (null == name) throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + })(); + spine.BoneData = BoneData; + var TransformMode; + (function (TransformMode) { + TransformMode[TransformMode["Normal"] = 0] = "Normal"; + TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; + TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; + TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); + })(spine || (spine = {})); + var spine; + (function (spine) { + var ConstraintData = (function () { + function ConstraintData(name, order, skinRequired) { + this.name = name; + this.order = order; + this.skinRequired = skinRequired; + } + return ConstraintData; + })(); + spine.ConstraintData = ConstraintData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var Event = (function () { + function Event(time, data) { + if (null == data) throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + })(); + spine.Event = Event; + })(spine || (spine = {})); + var spine; + (function (spine) { + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + })(); + spine.EventData = EventData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.bendDirection = 0; + this.compress = false; + this.stretch = false; + this.mix = 1; + this.softness = 0; + this.active = false; + if (null == data) throw new Error("data cannot be null."); + if (null == skeleton) throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.softness = data.softness; + this.bendDirection = data.bendDirection; + this.compress = data.compress; + this.stretch = data.stretch; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.isActive = function () { + return this.active; + }; + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); + break; + + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.softness, this.mix); + } + }; + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { + bone.appliedValid || bone.updateAppliedTransform(); + var p = bone.parent; + var id = 1 / (p.a * p.d - p.b * p.c); + var x = targetX - p.worldX, y = targetY - p.worldY; + var tx = (x * p.d - y * p.b) * id - bone.ax, ty = (y * p.a - x * p.c) * id - bone.ay; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.ashearX - bone.arotation; + bone.ascaleX < 0 && (rotationIK += 180); + rotationIK > 180 ? rotationIK -= 360 : rotationIK < -180 && (rotationIK += 360); + var sx = bone.ascaleX, sy = bone.ascaleY; + if (compress || stretch) { + var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); + if (compress && dd < b || stretch && dd > b && b > 1e-4) { + var s = (dd / b - 1) * alpha + 1; + sx *= s; + uniform && (sy *= s); + } + } + bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); + }; + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, softness, alpha) { + if (0 == alpha) { + child.updateWorldTransform(); + return; + } + parent.appliedValid || parent.updateAppliedTransform(); + child.appliedValid || child.updateAppliedTransform(); + var px = parent.ax, py = parent.ay, psx = parent.ascaleX, sx = psx, psy = parent.ascaleY, csx = child.ascaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } else os2 = 0; + var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 1e-4; + if (u) { + cy = child.ay; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } else { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; + if (l1 < 1e-4) { + this.apply1(parent, targetX, targetY, false, stretch, false, alpha); + child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + return; + } + x = targetX - pp.worldX; + y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + var dd = tx * tx + ty * ty; + if (0 != softness) { + softness *= psx * (csx + 1) / 2; + var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; + if (sd > 0) { + var p = Math.min(1, sd / (2 * softness)) - 1; + p = (sd - softness * (1 - p * p)) / td; + tx -= p * tx; + ty -= p * ty; + dd = tx * tx + ty * ty; + } + } + outer: if (u) { + l2 *= psx; + var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) cos = -1; else if (cos > 1) { + cos = 1; + stretch && (sx *= (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1); + } + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + c1 < 0 && (q = -q); + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; + var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; + c = -a * l1 / (aa - bb); + if (c >= -1 && c <= 1) { + c = Math.acos(c); + x = a * Math.cos(c) + l1; + y = b * Math.sin(c); + d = x * x + y * y; + if (d < minDist) { + minAngle = c; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = c; + maxDist = d; + maxX = x; + maxY = y; + } + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.arotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + a1 > 180 ? a1 -= 360 : a1 < -180 && (a1 += 360); + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, parent.ascaleY, 0, 0); + rotation = child.arotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; + a2 > 180 ? a2 -= 360 : a2 < -180 && (a2 += 360); + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + }; + return IkConstraint; + })(); + spine.IkConstraint = IkConstraint; + })(spine || (spine = {})); + var spine; + (function (spine) { + var IkConstraintData = (function (_super) { + __extends(IkConstraintData, _super); + function IkConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + _this.bones = new Array(); + _this.bendDirection = 1; + _this.compress = false; + _this.stretch = false; + _this.uniform = false; + _this.mix = 1; + _this.softness = 0; + return _this; + } + return IkConstraintData; + })(spine.ConstraintData); + spine.IkConstraintData = IkConstraintData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + this.active = false; + if (null == data) throw new Error("data cannot be null."); + if (null == skeleton) throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.isActive = function () { + return this.active; + }; + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) return; + var data = this.data; + var percentSpacing = data.spacingMode == spine.SpacingMode.Percent; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || !percentSpacing) { + scale && (lengths = spine.Utils.setArraySize(this.lengths, boneCount)); + var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var setupLength = bone.data.length; + if (setupLength < PathConstraint.epsilon) { + scale && (lengths[i] = 0); + spaces[++i] = 0; + } else if (percentSpacing) { + if (scale) { + var x = setupLength * bone.a, y = setupLength * bone.c; + var length_1 = Math.sqrt(x * x + y * y); + lengths[i] = length_1; + } + spaces[++i] = spacing; + } else { + var x = setupLength * bone.a, y = setupLength * bone.c; + var length_2 = Math.sqrt(x * x + y * y); + scale && (lengths[i] = length_2); + spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; + } + } + } else for (var i = 1; i < spacesCount; i++) spaces[i] = spacing; + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing); + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = false; + if (0 == offsetRotation) tip = rotateMode == spine.RotateMode.Chain; else { + tip = false; + var p = this.target.bone; + offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + } + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - bone.worldX) * translateMix; + bone.worldY += (boneY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_3 = lengths[i]; + if (0 != length_3) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + r = tangents ? positions[p - 1] : 0 == spaces[i + 1] ? positions[p + 2] : Math.atan2(dy, dx); + r -= Math.atan2(c, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_4 = bone.data.length; + boneX += (length_4 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_4 * (sin * a + cos * c) - dy) * rotateMix; + } else r += offsetRotation; + r > spine.MathUtils.PI ? r -= spine.MathUtils.PI2 : r < -spine.MathUtils.PI && (r += spine.MathUtils.PI2); + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + bone.appliedValid = false; + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, 3 * spacesCount + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + percentPosition && (position *= pathLength_1); + if (percentSpacing) for (var i = 1; i < spacesCount; i++) spaces[i] *= pathLength_1; + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + p < 0 && (p += pathLength_1); + curve = 0; + } else { + if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVertices(target, 2, 4, world, 0, 2); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + } + for (; ; curve++) { + var length_5 = lengths[curve]; + if (p > length_5) continue; + if (0 == curve) p /= length_5; else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); + path.computeWorldVertices(target, 0, 4, world, 4, 2); + } else path.computeWorldVertices(target, 6 * curve + 2, 8, world, 0, 2); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || i > 0 && 0 == space); + } + return out; + } + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); + path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); + } + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = .1875 * (x1 - 2 * cx1 + cx2); + tmpy = .1875 * (y1 - 2 * cy1 + cy2); + dddfx = .09375 * (3 * (cx1 - cx2) - x1 + x2); + dddfy = .09375 * (3 * (cy1 - cy2) - y1 + y2); + ddfx = 2 * tmpx + dddfx; + ddfy = 2 * tmpy + dddfy; + dfx = .75 * (cx1 - x1) + tmpx + .16666667 * dddfx; + dfy = .75 * (cy1 - y1) + tmpy + .16666667 * dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + position *= percentPosition ? pathLength : pathLength / path.lengths[curveCount - 1]; + if (percentSpacing) for (var i = 1; i < spacesCount; i++) spaces[i] *= pathLength; + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + p < 0 && (p += pathLength); + curve = 0; + } else { + if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + } + for (; ; curve++) { + var length_6 = curves[curve]; + if (p > length_6) continue; + if (0 == curve) p /= length_6; else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_6 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + var ii = 6 * curve; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = .03 * (x1 - 2 * cx1 + cx2); + tmpy = .03 * (y1 - 2 * cy1 + cy2); + dddfx = .006 * (3 * (cx1 - cx2) - x1 + x2); + dddfy = .006 * (3 * (cy1 - cy2) - y1 + y2); + ddfx = 2 * tmpx + dddfx; + ddfy = 2 * tmpy + dddfy; + dfx = .3 * (cx1 - x1) + tmpx + .16666667 * dddfx; + dfy = .3 * (cy1 - y1) + tmpy + .16666667 * dddfy; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + p *= curveLength; + for (; ; segment++) { + var length_7 = segments[segment]; + if (p > length_7) continue; + if (0 == segment) p /= length_7; else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_7 - prev); + } + break; + } + this.addCurvePosition(.1 * p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || i > 0 && 0 == space); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (0 == p || isNaN(p)) { + out[o] = x1; + out[o + 1] = y1; + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + return; + } + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = 3 * ut, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + tangents && (out[o + 2] = p < .001 ? Math.atan2(cy1 - y1, cx1 - x1) : Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt))); + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + PathConstraint.epsilon = 1e-5; + return PathConstraint; + })(); + spine.PathConstraint = PathConstraint; + })(spine || (spine = {})); + var spine; + (function (spine) { + var PathConstraintData = (function (_super) { + __extends(PathConstraintData, _super); + function PathConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + _this.bones = new Array(); + return _this; + } + return PathConstraintData; + })(spine.ConstraintData); + spine.PathConstraintData = PathConstraintData; + var PositionMode; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); + var SpacingMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); + var RotateMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); + })(spine || (spine = {})); + var spine; + (function (spine) { + var Assets = (function () { + function Assets(clientId) { + this.toLoad = new Array(); + this.assets = {}; + this.clientId = clientId; + } + Assets.prototype.loaded = function () { + var i = 0; + for (var v in this.assets) i++; + return i; + }; + return Assets; + })(); + var SharedAssetManager = (function () { + function SharedAssetManager(pathPrefix) { + void 0 === pathPrefix && (pathPrefix = ""); + this.clientAssets = {}; + this.queuedAssets = {}; + this.rawAssets = {}; + this.errors = {}; + this.pathPrefix = pathPrefix; + } + SharedAssetManager.prototype.queueAsset = function (clientId, textureLoader, path) { + var clientAssets = this.clientAssets[clientId]; + if (null === clientAssets || void 0 === clientAssets) { + clientAssets = new Assets(clientId); + this.clientAssets[clientId] = clientAssets; + } + null !== textureLoader && (clientAssets.textureLoader = textureLoader); + clientAssets.toLoad.push(path); + if (this.queuedAssets[path] === path) return false; + this.queuedAssets[path] = path; + return true; + }; + SharedAssetManager.prototype.loadText = function (clientId, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) return; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + request.readyState == XMLHttpRequest.DONE && (request.status >= 200 && request.status < 300 ? _this.rawAssets[path] = request.responseText : _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + }; + request.open("GET", path, true); + request.send(); + }; + SharedAssetManager.prototype.loadJson = function (clientId, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) return; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + request.readyState == XMLHttpRequest.DONE && (request.status >= 200 && request.status < 300 ? _this.rawAssets[path] = JSON.parse(request.responseText) : _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + }; + request.open("GET", path, true); + request.send(); + }; + SharedAssetManager.prototype.loadTexture = function (clientId, textureLoader, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, textureLoader, path)) return; + var img = new Image(); + img.src = path; + img.crossOrigin = "anonymous"; + img.onload = function (ev) { + _this.rawAssets[path] = img; + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + }; + }; + SharedAssetManager.prototype.get = function (clientId, path) { + path = this.pathPrefix + path; + var clientAssets = this.clientAssets[clientId]; + if (null === clientAssets || void 0 === clientAssets) return true; + return clientAssets.assets[path]; + }; + SharedAssetManager.prototype.updateClientAssets = function (clientAssets) { + for (var i = 0; i < clientAssets.toLoad.length; i++) { + var path = clientAssets.toLoad[i]; + var asset = clientAssets.assets[path]; + if (null === asset || void 0 === asset) { + var rawAsset = this.rawAssets[path]; + if (null === rawAsset || void 0 === rawAsset) continue; + rawAsset instanceof HTMLImageElement ? clientAssets.assets[path] = clientAssets.textureLoader(rawAsset) : clientAssets.assets[path] = rawAsset; + } + } + }; + SharedAssetManager.prototype.isLoadingComplete = function (clientId) { + var clientAssets = this.clientAssets[clientId]; + if (null === clientAssets || void 0 === clientAssets) return true; + this.updateClientAssets(clientAssets); + return clientAssets.toLoad.length == clientAssets.loaded(); + }; + SharedAssetManager.prototype.dispose = function () { }; + SharedAssetManager.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + SharedAssetManager.prototype.getErrors = function () { + return this.errors; + }; + return SharedAssetManager; + })(); + spine.SharedAssetManager = SharedAssetManager; + })(spine || (spine = {})); + var spine; + (function (spine) { + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.updateCacheReset = new Array(); + this.time = 0; + this.scaleX = 1; + this.scaleY = 1; + this.x = 0; + this.y = 0; + if (null == data) throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (null == boneData.parent) bone = new spine.Bone(boneData, this, null); else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + this.updateCacheReset.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + bone.sorted = bone.data.skinRequired; + bone.active = !bone.sorted; + } + if (null != this.skin) { + var skinBones = this.skin.bones; + for (var i = 0, n = this.skin.bones.length; i < n; i++) { + var bone = this.bones[skinBones[i].index]; + do { + bone.sorted = false; + bone.active = true; + bone = bone.parent; + } while (null != bone); + } + } + var ikConstraints = this.ikConstraints; + var transformConstraints = this.transformConstraints; + var pathConstraints = this.pathConstraints; + var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; + var constraintCount = ikCount + transformCount + pathCount; + outer: for (var i = 0; i < constraintCount; i++) { + for (var ii = 0; ii < ikCount; ii++) { + var constraint = ikConstraints[ii]; + if (constraint.data.order == i) { + this.sortIkConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < transformCount; ii++) { + var constraint = transformConstraints[ii]; + if (constraint.data.order == i) { + this.sortTransformConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < pathCount; ii++) { + var constraint = pathConstraints[ii]; + if (constraint.data.order == i) { + this.sortPathConstraint(constraint); + continue outer; + } + } + } + for (var i = 0, n = bones.length; i < n; i++) this.sortBone(bones[i]); + }; + Skeleton.prototype.sortIkConstraint = function (constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || null != this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true)); + if (!constraint.active) return; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent = constrained[0]; + this.sortBone(parent); + if (constrained.length > 1) { + var child = constrained[constrained.length - 1]; + this._updateCache.indexOf(child) > -1 || this.updateCacheReset.push(child); + } + this._updateCache.push(constraint); + this.sortReset(parent.children); + constrained[constrained.length - 1].sorted = true; + }; + Skeleton.prototype.sortPathConstraint = function (constraint) { + constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || null != this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true)); + if (!constraint.active) return; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + null != this.skin && this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + null != this.data.defaultSkin && this.data.defaultSkin != this.skin && this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var i = 0, n = this.data.skins.length; i < n; i++) this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); + var attachment = slot.getAttachment(); + attachment instanceof spine.PathAttachment && this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var i = 0; i < boneCount; i++) this.sortBone(constrained[i]); + this._updateCache.push(constraint); + for (var i = 0; i < boneCount; i++) this.sortReset(constrained[i].children); + for (var i = 0; i < boneCount; i++) constrained[i].sorted = true; + }; + Skeleton.prototype.sortTransformConstraint = function (constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || null != this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true)); + if (!constraint.active) return; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + if (constraint.data.local) for (var i = 0; i < boneCount; i++) { + var child = constrained[i]; + this.sortBone(child.parent); + this._updateCache.indexOf(child) > -1 || this.updateCacheReset.push(child); + } else for (var i = 0; i < boneCount; i++) this.sortBone(constrained[i]); + this._updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) constrained[ii].sorted = true; + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) return; + for (var key in attachments) this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) return; + var pathBones = attachment.bones; + if (null == pathBones) this.sortBone(slotBone); else { + var bones = this.bones; + var i = 0; + while (i < pathBones.length) { + var boneCount = pathBones[i++]; + for (var n = i + boneCount; i < n; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) return; + var parent = bone.parent; + null != parent && this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (!bone.active) continue; + bone.sorted && this.sortReset(bone.children); + bone.sorted = false; + } + }; + Skeleton.prototype.updateWorldTransform = function () { + var updateCacheReset = this.updateCacheReset; + for (var i = 0, n = updateCacheReset.length; i < n; i++) { + var bone = updateCacheReset[i]; + bone.ax = bone.x; + bone.ay = bone.y; + bone.arotation = bone.rotation; + bone.ascaleX = bone.scaleX; + bone.ascaleY = bone.scaleY; + bone.ashearX = bone.shearX; + bone.ashearY = bone.shearY; + bone.appliedValid = true; + } + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) updateCache[i].update(); + }; + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) slots[i].setToSetupPose(); + }; + Skeleton.prototype.getRootBone = function () { + if (0 == this.bones.length) return null; + return this.bones[0]; + }; + Skeleton.prototype.findBone = function (boneName) { + if (null == boneName) throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) return bone; + } + return null; + }; + Skeleton.prototype.findBoneIndex = function (boneName) { + if (null == boneName) throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) if (bones[i].data.name == boneName) return i; + return -1; + }; + Skeleton.prototype.findSlot = function (slotName) { + if (null == slotName) throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) return slot; + } + return null; + }; + Skeleton.prototype.findSlotIndex = function (slotName) { + if (null == slotName) throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) if (slots[i].data.name == slotName) return i; + return -1; + }; + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (null == skin) throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin == this.skin) return; + if (null != newSkin) if (null != this.skin) newSkin.attachAll(this, this.skin); else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (null != name_1) { + var attachment = newSkin.getAttachment(i, name_1); + null != attachment && slot.setAttachment(attachment); + } + } + } + this.skin = newSkin; + this.updateCache(); + }; + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (null == attachmentName) throw new Error("attachmentName cannot be null."); + if (null != this.skin) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (null != attachment) return attachment; + } + if (null != this.data.defaultSkin) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (null == slotName) throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (null != attachmentName) { + attachment = this.getAttachment(i, attachmentName); + if (null == attachment) throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) return ikConstraint; + } + return null; + }; + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) return constraint; + } + return null; + }; + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) return constraint; + } + return null; + }; + Skeleton.prototype.getBounds = function (offset, size, temp) { + void 0 === temp && (temp = new Array(2)); + if (null == offset) throw new Error("offset cannot be null."); + if (null == size) throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + if (!slot.bone.active) continue; + var verticesLength = 0; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) { + verticesLength = 8; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(slot.bone, vertices, 0, 2); + } else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + verticesLength = mesh.worldVerticesLength; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); + } + if (null != vertices) for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + })(); + spine.Skeleton = Skeleton; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkeletonBinary = (function () { + function SkeletonBinary(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonBinary.prototype.readSkeletonData = function (binary) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + skeletonData.name = ""; + var input = new BinaryInput(binary); + skeletonData.hash = input.readString(); + skeletonData.version = input.readString(); + skeletonData.x = input.readFloat(); + skeletonData.y = input.readFloat(); + skeletonData.width = input.readFloat(); + skeletonData.height = input.readFloat(); + var nonessential = input.readBoolean(); + if (nonessential) { + skeletonData.fps = input.readFloat(); + skeletonData.imagesPath = input.readString(); + skeletonData.audioPath = input.readString(); + } + var n = 0; + n = input.readInt(true); + for (var i = 0; i < n; i++) input.strings.push(input.readString()); + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var name_2 = input.readString(); + var parent_2 = 0 == i ? null : skeletonData.bones[input.readInt(true)]; + var data = new spine.BoneData(i, name_2, parent_2); + data.rotation = input.readFloat(); + data.x = input.readFloat() * scale; + data.y = input.readFloat() * scale; + data.scaleX = input.readFloat(); + data.scaleY = input.readFloat(); + data.shearX = input.readFloat(); + data.shearY = input.readFloat(); + data.length = input.readFloat() * scale; + data.transformMode = SkeletonBinary.TransformModeValues[input.readInt(true)]; + data.skinRequired = input.readBoolean(); + nonessential && spine.Color.rgba8888ToColor(data.color, input.readInt32()); + skeletonData.bones.push(data); + } + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var slotName = input.readString(); + var boneData = skeletonData.bones[input.readInt(true)]; + var data = new spine.SlotData(i, slotName, boneData); + spine.Color.rgba8888ToColor(data.color, input.readInt32()); + var darkColor = input.readInt32(); + -1 != darkColor && spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); + data.attachmentName = input.readStringRef(); + data.blendMode = SkeletonBinary.BlendModeValues[input.readInt(true)]; + skeletonData.slots.push(data); + } + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new spine.IkConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.mix = input.readFloat(); + data.softness = input.readFloat() * scale; + data.bendDirection = input.readByte(); + data.compress = input.readBoolean(); + data.stretch = input.readBoolean(); + data.uniform = input.readBoolean(); + skeletonData.ikConstraints.push(data); + } + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new spine.TransformConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.local = input.readBoolean(); + data.relative = input.readBoolean(); + data.offsetRotation = input.readFloat(); + data.offsetX = input.readFloat() * scale; + data.offsetY = input.readFloat() * scale; + data.offsetScaleX = input.readFloat(); + data.offsetScaleY = input.readFloat(); + data.offsetShearY = input.readFloat(); + data.rotateMix = input.readFloat(); + data.translateMix = input.readFloat(); + data.scaleMix = input.readFloat(); + data.shearMix = input.readFloat(); + skeletonData.transformConstraints.push(data); + } + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new spine.PathConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.slots[input.readInt(true)]; + data.positionMode = SkeletonBinary.PositionModeValues[input.readInt(true)]; + data.spacingMode = SkeletonBinary.SpacingModeValues[input.readInt(true)]; + data.rotateMode = SkeletonBinary.RotateModeValues[input.readInt(true)]; + data.offsetRotation = input.readFloat(); + data.position = input.readFloat(); + data.positionMode == spine.PositionMode.Fixed && (data.position *= scale); + data.spacing = input.readFloat(); + data.spacingMode != spine.SpacingMode.Length && data.spacingMode != spine.SpacingMode.Fixed || (data.spacing *= scale); + data.rotateMix = input.readFloat(); + data.translateMix = input.readFloat(); + skeletonData.pathConstraints.push(data); + } + var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); + if (null != defaultSkin) { + skeletonData.defaultSkin = defaultSkin; + skeletonData.skins.push(defaultSkin); + } + var i = skeletonData.skins.length; + spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); + for (; i < n; i++) skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); + n = this.linkedMeshes.length; + for (var i = 0; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = null == linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (null == skin) throw new Error("Skin not found: " + linkedMesh.skin); + var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (null == parent_3) throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent_3); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var data = new spine.EventData(input.readStringRef()); + data.intValue = input.readInt(false); + data.floatValue = input.readFloat(); + data.stringValue = input.readString(); + data.audioPath = input.readString(); + if (null != data.audioPath) { + data.volume = input.readFloat(); + data.balance = input.readFloat(); + } + skeletonData.events.push(data); + } + n = input.readInt(true); + for (var i = 0; i < n; i++) skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); + return skeletonData; + }; + SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { + var skin = null; + var slotCount = 0; + if (defaultSkin) { + slotCount = input.readInt(true); + if (0 == slotCount) return null; + skin = new spine.Skin("default"); + } else { + skin = new spine.Skin(input.readStringRef()); + skin.bones.length = input.readInt(true); + for (var i = 0, n = skin.bones.length; i < n; i++) skin.bones[i] = skeletonData.bones[input.readInt(true)]; + for (var i = 0, n = input.readInt(true); i < n; i++) skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); + for (var i = 0, n = input.readInt(true); i < n; i++) skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); + for (var i = 0, n = input.readInt(true); i < n; i++) skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); + slotCount = input.readInt(true); + } + for (var i = 0; i < slotCount; i++) { + var slotIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var name_3 = input.readStringRef(); + var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); + null != attachment && skin.setAttachment(slotIndex, name_3, attachment); + } + } + return skin; + }; + SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { + var scale = this.scale; + var name = input.readStringRef(); + null == name && (name = attachmentName); + var typeIndex = input.readByte(); + var type = SkeletonBinary.AttachmentTypeValues[typeIndex]; + switch (type) { + case spine.AttachmentType.Region: + var path = input.readStringRef(); + var rotation = input.readFloat(); + var x = input.readFloat(); + var y = input.readFloat(); + var scaleX = input.readFloat(); + var scaleY = input.readFloat(); + var width = input.readFloat(); + var height = input.readFloat(); + var color = input.readInt32(); + null == path && (path = name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (null == region) return null; + region.path = path; + region.x = x * scale; + region.y = y * scale; + region.scaleX = scaleX; + region.scaleY = scaleY; + region.rotation = rotation; + region.width = width * scale; + region.height = height * scale; + spine.Color.rgba8888ToColor(region.color, color); + region.updateOffset(); + return region; + + case spine.AttachmentType.BoundingBox: + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var color = nonessential ? input.readInt32() : 0; + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (null == box) return null; + box.worldVerticesLength = vertexCount << 1; + box.vertices = vertices.vertices; + box.bones = vertices.bones; + nonessential && spine.Color.rgba8888ToColor(box.color, color); + return box; + + case spine.AttachmentType.Mesh: + var path = input.readStringRef(); + var color = input.readInt32(); + var vertexCount = input.readInt(true); + var uvs = this.readFloatArray(input, vertexCount << 1, 1); + var triangles = this.readShortArray(input); + var vertices = this.readVertices(input, vertexCount); + var hullLength = input.readInt(true); + var edges = null; + var width = 0, height = 0; + if (nonessential) { + edges = this.readShortArray(input); + width = input.readFloat(); + height = input.readFloat(); + } + null == path && (path = name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (null == mesh) return null; + mesh.path = path; + spine.Color.rgba8888ToColor(mesh.color, color); + mesh.bones = vertices.bones; + mesh.vertices = vertices.vertices; + mesh.worldVerticesLength = vertexCount << 1; + mesh.triangles = triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = hullLength << 1; + if (nonessential) { + mesh.edges = edges; + mesh.width = width * scale; + mesh.height = height * scale; + } + return mesh; + + case spine.AttachmentType.LinkedMesh: + var path = input.readStringRef(); + var color = input.readInt32(); + var skinName = input.readStringRef(); + var parent_4 = input.readStringRef(); + var inheritDeform = input.readBoolean(); + var width = 0, height = 0; + if (nonessential) { + width = input.readFloat(); + height = input.readFloat(); + } + null == path && (path = name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (null == mesh) return null; + mesh.path = path; + spine.Color.rgba8888ToColor(mesh.color, color); + if (nonessential) { + mesh.width = width * scale; + mesh.height = height * scale; + } + this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); + return mesh; + + case spine.AttachmentType.Path: + var closed_1 = input.readBoolean(); + var constantSpeed = input.readBoolean(); + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0, n = lengths.length; i < n; i++) lengths[i] = input.readFloat() * scale; + var color = nonessential ? input.readInt32() : 0; + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (null == path) return null; + path.closed = closed_1; + path.constantSpeed = constantSpeed; + path.worldVerticesLength = vertexCount << 1; + path.vertices = vertices.vertices; + path.bones = vertices.bones; + path.lengths = lengths; + nonessential && spine.Color.rgba8888ToColor(path.color, color); + return path; + + case spine.AttachmentType.Point: + var rotation = input.readFloat(); + var x = input.readFloat(); + var y = input.readFloat(); + var color = nonessential ? input.readInt32() : 0; + var point = this.attachmentLoader.newPointAttachment(skin, name); + if (null == point) return null; + point.x = x * scale; + point.y = y * scale; + point.rotation = rotation; + nonessential && spine.Color.rgba8888ToColor(point.color, color); + return point; + + case spine.AttachmentType.Clipping: + var endSlotIndex = input.readInt(true); + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var color = nonessential ? input.readInt32() : 0; + var clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (null == clip) return null; + clip.endSlot = skeletonData.slots[endSlotIndex]; + clip.worldVerticesLength = vertexCount << 1; + clip.vertices = vertices.vertices; + clip.bones = vertices.bones; + nonessential && spine.Color.rgba8888ToColor(clip.color, color); + return clip; + } + return null; + }; + SkeletonBinary.prototype.readVertices = function (input, vertexCount) { + var verticesLength = vertexCount << 1; + var vertices = new Vertices(); + var scale = this.scale; + if (!input.readBoolean()) { + vertices.vertices = this.readFloatArray(input, verticesLength, scale); + return vertices; + } + var weights = new Array(); + var bonesArray = new Array(); + for (var i = 0; i < vertexCount; i++) { + var boneCount = input.readInt(true); + bonesArray.push(boneCount); + for (var ii = 0; ii < boneCount; ii++) { + bonesArray.push(input.readInt(true)); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat()); + } + } + vertices.vertices = spine.Utils.toFloatArray(weights); + vertices.bones = bonesArray; + return vertices; + }; + SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { + var array = new Array(n); + if (1 == scale) for (var i = 0; i < n; i++) array[i] = input.readFloat(); else for (var i = 0; i < n; i++) array[i] = input.readFloat() * scale; + return array; + }; + SkeletonBinary.prototype.readShortArray = function (input) { + var n = input.readInt(true); + var array = new Array(n); + for (var i = 0; i < n; i++) array[i] = input.readShort(); + return array; + }; + SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { + var timelines = new Array(); + var scale = this.scale; + var duration = 0; + var tempColor1 = new spine.Color(); + var tempColor2 = new spine.Color(); + for (var i = 0, n = input.readInt(true); i < n; i++) { + var slotIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var timelineType = input.readByte(); + var frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.SLOT_ATTACHMENT: + var timeline = new spine.AttachmentTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) timeline.setFrame(frameIndex, input.readFloat(), input.readStringRef()); + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[frameCount - 1]); + break; + + case SkeletonBinary.SLOT_COLOR: + var timeline = new spine.ColorTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + var time = input.readFloat(); + spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); + timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.ColorTimeline.ENTRIES]); + break; + + case SkeletonBinary.SLOT_TWO_COLOR: + var timeline = new spine.TwoColorTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + var time = input.readFloat(); + spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); + spine.Color.rgb888ToColor(tempColor2, input.readInt32()); + timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a, tempColor2.r, tempColor2.g, tempColor2.b); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TwoColorTimeline.ENTRIES]); + } + } + } + for (var i = 0, n = input.readInt(true); i < n; i++) { + var boneIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var timelineType = input.readByte(); + var frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.BONE_ROTATE: + var timeline = new spine.RotateTimeline(frameCount); + timeline.boneIndex = boneIndex; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat()); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.RotateTimeline.ENTRIES]); + break; + + case SkeletonBinary.BONE_TRANSLATE: + case SkeletonBinary.BONE_SCALE: + case SkeletonBinary.BONE_SHEAR: + var timeline = void 0; + var timelineScale = 1; + if (timelineType == SkeletonBinary.BONE_SCALE) timeline = new spine.ScaleTimeline(frameCount); else if (timelineType == SkeletonBinary.BONE_SHEAR) timeline = new spine.ShearTimeline(frameCount); else { + timeline = new spine.TranslateTimeline(frameCount); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale, input.readFloat() * timelineScale); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TranslateTimeline.ENTRIES]); + } + } + } + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true); + var frameCount = input.readInt(true); + var timeline = new spine.IkConstraintTimeline(frameCount); + timeline.ikConstraintIndex = index; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat() * scale, input.readByte(), input.readBoolean(), input.readBoolean()); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true); + var frameCount = input.readInt(true); + var timeline = new spine.TransformConstraintTimeline(frameCount); + timeline.transformConstraintIndex = index; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true); + var data = skeletonData.pathConstraints[index]; + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var timelineType = input.readByte(); + var frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.PATH_POSITION: + case SkeletonBinary.PATH_SPACING: + var timeline = void 0; + var timelineScale = 1; + if (timelineType == SkeletonBinary.PATH_SPACING) { + timeline = new spine.PathConstraintSpacingTimeline(frameCount); + data.spacingMode != spine.SpacingMode.Length && data.spacingMode != spine.SpacingMode.Fixed || (timelineScale = scale); + } else { + timeline = new spine.PathConstraintPositionTimeline(frameCount); + data.positionMode == spine.PositionMode.Fixed && (timelineScale = scale); + } + timeline.pathConstraintIndex = index; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + break; + + case SkeletonBinary.PATH_MIX: + var timeline = new spine.PathConstraintMixTimeline(frameCount); + timeline.pathConstraintIndex = index; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat()); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + for (var i = 0, n = input.readInt(true); i < n; i++) { + var skin = skeletonData.skins[input.readInt(true)]; + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var slotIndex = input.readInt(true); + for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { + var attachment = skin.getAttachment(slotIndex, input.readStringRef()); + var weighted = null != attachment.bones; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var frameCount = input.readInt(true); + var timeline = new spine.DeformTimeline(frameCount); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { + var time = input.readFloat(); + var deform = void 0; + var end = input.readInt(true); + if (0 == end) deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; else { + deform = spine.Utils.newFloatArray(deformLength); + var start = input.readInt(true); + end += start; + if (1 == scale) for (var v = start; v < end; v++) deform[v] = input.readFloat(); else for (var v = start; v < end; v++) deform[v] = input.readFloat() * scale; + if (!weighted) for (var v = 0, vn = deform.length; v < vn; v++) deform[v] += vertices[v]; + } + timeline.setFrame(frameIndex, time, deform); + frameIndex < frameCount - 1 && this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[frameCount - 1]); + } + } + } + var drawOrderCount = input.readInt(true); + if (drawOrderCount > 0) { + var timeline = new spine.DrawOrderTimeline(drawOrderCount); + var slotCount = skeletonData.slots.length; + for (var i = 0; i < drawOrderCount; i++) { + var time = input.readFloat(); + var offsetCount = input.readInt(true); + var drawOrder = spine.Utils.newArray(slotCount, 0); + for (var ii = slotCount - 1; ii >= 0; ii--) drawOrder[ii] = -1; + var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var ii = 0; ii < offsetCount; ii++) { + var slotIndex = input.readInt(true); + while (originalIndex != slotIndex) unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + input.readInt(true)] = originalIndex++; + } + while (originalIndex < slotCount) unchanged[unchangedIndex++] = originalIndex++; + for (var ii = slotCount - 1; ii >= 0; ii--) -1 == drawOrder[ii] && (drawOrder[ii] = unchanged[--unchangedIndex]); + timeline.setFrame(i, time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[drawOrderCount - 1]); + } + var eventCount = input.readInt(true); + if (eventCount > 0) { + var timeline = new spine.EventTimeline(eventCount); + for (var i = 0; i < eventCount; i++) { + var time = input.readFloat(); + var eventData = skeletonData.events[input.readInt(true)]; + var event_4 = new spine.Event(time, eventData); + event_4.intValue = input.readInt(false); + event_4.floatValue = input.readFloat(); + event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; + if (null != event_4.data.audioPath) { + event_4.volume = input.readFloat(); + event_4.balance = input.readFloat(); + } + timeline.setFrame(i, event_4); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[eventCount - 1]); + } + return new spine.Animation(name, timelines, duration); + }; + SkeletonBinary.prototype.readCurve = function (input, frameIndex, timeline) { + switch (input.readByte()) { + case SkeletonBinary.CURVE_STEPPED: + timeline.setStepped(frameIndex); + break; + + case SkeletonBinary.CURVE_BEZIER: + this.setCurve(timeline, frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); + } + }; + SkeletonBinary.prototype.setCurve = function (timeline, frameIndex, cx1, cy1, cx2, cy2) { + timeline.setCurve(frameIndex, cx1, cy1, cx2, cy2); + }; + SkeletonBinary.AttachmentTypeValues = [0, 1, 2, 3, 4, 5, 6]; + SkeletonBinary.TransformModeValues = [spine.TransformMode.Normal, spine.TransformMode.OnlyTranslation, spine.TransformMode.NoRotationOrReflection, spine.TransformMode.NoScale, spine.TransformMode.NoScaleOrReflection]; + SkeletonBinary.PositionModeValues = [spine.PositionMode.Fixed, spine.PositionMode.Percent]; + SkeletonBinary.SpacingModeValues = [spine.SpacingMode.Length, spine.SpacingMode.Fixed, spine.SpacingMode.Percent]; + SkeletonBinary.RotateModeValues = [spine.RotateMode.Tangent, spine.RotateMode.Chain, spine.RotateMode.ChainScale]; + SkeletonBinary.BlendModeValues = [spine.BlendMode.Normal, spine.BlendMode.Additive, spine.BlendMode.Multiply, spine.BlendMode.Screen]; + SkeletonBinary.BONE_ROTATE = 0; + SkeletonBinary.BONE_TRANSLATE = 1; + SkeletonBinary.BONE_SCALE = 2; + SkeletonBinary.BONE_SHEAR = 3; + SkeletonBinary.SLOT_ATTACHMENT = 0; + SkeletonBinary.SLOT_COLOR = 1; + SkeletonBinary.SLOT_TWO_COLOR = 2; + SkeletonBinary.PATH_POSITION = 0; + SkeletonBinary.PATH_SPACING = 1; + SkeletonBinary.PATH_MIX = 2; + SkeletonBinary.CURVE_LINEAR = 0; + SkeletonBinary.CURVE_STEPPED = 1; + SkeletonBinary.CURVE_BEZIER = 2; + return SkeletonBinary; + })(); + spine.SkeletonBinary = SkeletonBinary; + var BinaryInput = (function () { + function BinaryInput(data, strings, index, buffer) { + void 0 === strings && (strings = new Array()); + void 0 === index && (index = 0); + void 0 === buffer && (buffer = new DataView(data.buffer)); + this.strings = strings; + this.index = index; + this.buffer = buffer; + } + BinaryInput.prototype.readByte = function () { + return this.buffer.getInt8(this.index++); + }; + BinaryInput.prototype.readShort = function () { + var value = this.buffer.getInt16(this.index); + this.index += 2; + return value; + }; + BinaryInput.prototype.readInt32 = function () { + var value = this.buffer.getInt32(this.index); + this.index += 4; + return value; + }; + BinaryInput.prototype.readInt = function (optimizePositive) { + var b = this.readByte(); + var result = 127 & b; + if (0 != (128 & b)) { + b = this.readByte(); + result |= (127 & b) << 7; + if (0 != (128 & b)) { + b = this.readByte(); + result |= (127 & b) << 14; + if (0 != (128 & b)) { + b = this.readByte(); + result |= (127 & b) << 21; + if (0 != (128 & b)) { + b = this.readByte(); + result |= (127 & b) << 28; + } + } + } + } + return optimizePositive ? result : result >>> 1 ^ -(1 & result); + }; + BinaryInput.prototype.readStringRef = function () { + var index = this.readInt(true); + return 0 == index ? null : this.strings[index - 1]; + }; + BinaryInput.prototype.readString = function () { + var byteCount = this.readInt(true); + switch (byteCount) { + case 0: + return null; + + case 1: + return ""; + } + byteCount--; + var chars = ""; + var charCount = 0; + for (var i = 0; i < byteCount;) { + var b = this.readByte(); + switch (b >> 4) { + case 12: + case 13: + chars += String.fromCharCode((31 & b) << 6 | 63 & this.readByte()); + i += 2; + break; + + case 14: + chars += String.fromCharCode((15 & b) << 12 | (63 & this.readByte()) << 6 | 63 & this.readByte()); + i += 3; + break; + + default: + chars += String.fromCharCode(b); + i++; + } + } + return chars; + }; + BinaryInput.prototype.readFloat = function () { + var value = this.buffer.getFloat32(this.index); + this.index += 4; + return value; + }; + BinaryInput.prototype.readBoolean = function () { + return 0 != this.readByte(); + }; + return BinaryInput; + })(); + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + return LinkedMesh; + })(); + var Vertices = (function () { + function Vertices(bones, vertices) { + void 0 === bones && (bones = null); + void 0 === vertices && (vertices = null); + this.bones = bones; + this.vertices = vertices; + } + return Vertices; + })(); + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this.polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (null == skeleton) throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this.polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + if (!slot.bone.active) continue; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + polygon.length != boundingBox.worldVerticesLength && (polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength)); + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); + } + } + if (updateAabb) this.aabbCompute(); else { + this.minX = Number.POSITIVE_INFINITY; + this.minY = Number.POSITIVE_INFINITY; + this.maxX = Number.NEGATIVE_INFINITY; + this.maxY = Number.NEGATIVE_INFINITY; + } + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if (x1 <= minX && x2 <= minX || y1 <= minY && y2 <= minY || x1 >= maxX && x2 >= maxX || y1 >= maxY && y2 >= maxY) return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) return true; + return false; + }; + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) if (this.containsPointPolygon(polygons[i], x, y)) return this.boundingBoxes[i]; + return null; + }; + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if (vertexY < y && prevY >= y || prevY < y && vertexY >= y) { + var vertexX = vertices[ii]; + vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x && (inside = !inside); + } + prevIndex = ii; + } + return inside; + }; + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) return this.boundingBoxes[i]; + return null; + }; + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if ((x >= x3 && x <= x4 || x >= x4 && x <= x3) && (x >= x1 && x <= x2 || x >= x2 && x <= x1)) { + var y = (det1 * height34 - height12 * det2) / det3; + if ((y >= y3 && y <= y4 || y >= y4 && y <= y3) && (y >= y1 && y <= y2 || y >= y2 && y <= y1)) return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (null == boundingBox) throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return -1 == index ? null : this.polygons[index]; + }; + SkeletonBounds.prototype.getWidth = function () { + return this.maxX - this.minX; + }; + SkeletonBounds.prototype.getHeight = function () { + return this.maxY - this.minY; + }; + return SkeletonBounds; + })(); + spine.SkeletonBounds = SkeletonBounds; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkeletonClipping = (function () { + function SkeletonClipping() { + this.triangulator = new spine.Triangulator(); + this.clippingPolygon = new Array(); + this.clipOutput = new Array(); + this.clippedVertices = new Array(); + this.clippedTriangles = new Array(); + this.scratch = new Array(); + } + SkeletonClipping.prototype.clipStart = function (slot, clip) { + if (null != this.clipAttachment) return 0; + this.clipAttachment = clip; + var n = clip.worldVerticesLength; + var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); + clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); + var clippingPolygon = this.clippingPolygon; + SkeletonClipping.makeClockwise(clippingPolygon); + var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); + for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) { + var polygon = clippingPolygons[i]; + SkeletonClipping.makeClockwise(polygon); + polygon.push(polygon[0]); + polygon.push(polygon[1]); + } + return clippingPolygons.length; + }; + SkeletonClipping.prototype.clipEndWithSlot = function (slot) { + null != this.clipAttachment && this.clipAttachment.endSlot == slot.data && this.clipEnd(); + }; + SkeletonClipping.prototype.clipEnd = function () { + if (null == this.clipAttachment) return; + this.clipAttachment = null; + this.clippingPolygons = null; + this.clippedVertices.length = 0; + this.clippedTriangles.length = 0; + this.clippingPolygon.length = 0; + }; + SkeletonClipping.prototype.isClipping = function () { + return null != this.clipAttachment; + }; + SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor, stride, originIndexOffset, originVertOffset, originUVSOffset) { + var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + var clippedTriangles = this.clippedTriangles; + var polygons = this.clippingPolygons; + var polygonsCount = this.clippingPolygons.length; + var vertexSize = twoColor ? 12 : 8; + var index = 0; + originIndexOffset = originIndexOffset || 0; + originVertOffset = originVertOffset || 0; + originUVSOffset = originUVSOffset || 0; + clippedVertices.length = 0; + clippedTriangles.length = 0; + outer: for (var i = originIndexOffset, n = originIndexOffset + trianglesLength; i < n; i += 3) { + var vertexOffset = triangles[i] * stride; + var xyOffset = vertexOffset + originVertOffset; + var uvOffset = vertexOffset + originUVSOffset; + var x1 = vertices[xyOffset], y1 = vertices[xyOffset + 1]; + var u1 = uvs[uvOffset], v1 = uvs[uvOffset + 1]; + vertexOffset = triangles[i + 1] * stride; + xyOffset = vertexOffset + originVertOffset; + uvOffset = vertexOffset + originUVSOffset; + var x2 = vertices[xyOffset], y2 = vertices[xyOffset + 1]; + var u2 = uvs[uvOffset], v2 = uvs[uvOffset + 1]; + vertexOffset = triangles[i + 2] * stride; + xyOffset = vertexOffset + originVertOffset; + uvOffset = vertexOffset + originUVSOffset; + var x3 = vertices[xyOffset], y3 = vertices[xyOffset + 1]; + var u3 = uvs[uvOffset], v3 = uvs[uvOffset + 1]; + for (var p = 0; p < polygonsCount; p++) { + var s = clippedVertices.length; + if (!this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { + var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); + clippedVerticesItems[s] = x1; + clippedVerticesItems[s + 1] = y1; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + if (twoColor) { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + clippedVerticesItems[s + 12] = x2; + clippedVerticesItems[s + 13] = y2; + clippedVerticesItems[s + 14] = light.r; + clippedVerticesItems[s + 15] = light.g; + clippedVerticesItems[s + 16] = light.b; + clippedVerticesItems[s + 17] = light.a; + clippedVerticesItems[s + 18] = u2; + clippedVerticesItems[s + 19] = v2; + clippedVerticesItems[s + 20] = dark.r; + clippedVerticesItems[s + 21] = dark.g; + clippedVerticesItems[s + 22] = dark.b; + clippedVerticesItems[s + 23] = dark.a; + clippedVerticesItems[s + 24] = x3; + clippedVerticesItems[s + 25] = y3; + clippedVerticesItems[s + 26] = light.r; + clippedVerticesItems[s + 27] = light.g; + clippedVerticesItems[s + 28] = light.b; + clippedVerticesItems[s + 29] = light.a; + clippedVerticesItems[s + 30] = u3; + clippedVerticesItems[s + 31] = v3; + clippedVerticesItems[s + 32] = dark.r; + clippedVerticesItems[s + 33] = dark.g; + clippedVerticesItems[s + 34] = dark.b; + clippedVerticesItems[s + 35] = dark.a; + } else { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = x2; + clippedVerticesItems[s + 9] = y2; + clippedVerticesItems[s + 10] = light.r; + clippedVerticesItems[s + 11] = light.g; + clippedVerticesItems[s + 12] = light.b; + clippedVerticesItems[s + 13] = light.a; + clippedVerticesItems[s + 14] = u2; + clippedVerticesItems[s + 15] = v2; + clippedVerticesItems[s + 16] = x3; + clippedVerticesItems[s + 17] = y3; + clippedVerticesItems[s + 18] = light.r; + clippedVerticesItems[s + 19] = light.g; + clippedVerticesItems[s + 20] = light.b; + clippedVerticesItems[s + 21] = light.a; + clippedVerticesItems[s + 22] = u3; + clippedVerticesItems[s + 23] = v3; + } + s = clippedTriangles.length; + var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = index + 1; + clippedTrianglesItems[s + 2] = index + 2; + index += 3; + continue outer; + } + var clipOutputLength = clipOutput.length; + if (0 == clipOutputLength) continue; + var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; + var d = 1 / (d0 * d2 + d1 * (y1 - y3)); + var clipOutputCount = clipOutputLength >> 1; + var clipOutputItems = this.clipOutput; + var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); + for (var ii = 0; ii < clipOutputLength; ii += 2) { + var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + clippedVerticesItems[s] = x; + clippedVerticesItems[s + 1] = y; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + var c0 = x - x3, c1 = y - y3; + var a = (d0 * c0 + d1 * c1) * d; + var b = (d4 * c0 + d2 * c1) * d; + var c = 1 - a - b; + clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; + clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + } + s += vertexSize; + } + s = clippedTriangles.length; + var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (var ii = 1; ii < clipOutputCount; ii++) { + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = index + ii; + clippedTrianglesItems[s + 2] = index + ii + 1; + s += 3; + } + index += clipOutputCount + 1; + } + } + }; + SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { + var originalOutput = output; + var clipped = false; + var input = null; + if (clippingArea.length % 4 >= 2) { + input = output; + output = this.scratch; + } else input = this.scratch; + input.length = 0; + input.push(x1); + input.push(y1); + input.push(x2); + input.push(y2); + input.push(x3); + input.push(y3); + input.push(x1); + input.push(y1); + output.length = 0; + var clippingVertices = clippingArea; + var clippingVerticesLast = clippingArea.length - 4; + for (var i = 0; ; i += 2) { + var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; + var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; + var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; + var inputVertices = input; + var inputVerticesLength = input.length - 2, outputStart = output.length; + for (var ii = 0; ii < inputVerticesLength; ii += 2) { + var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; + var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; + var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; + if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { + if (side2) { + output.push(inputX2); + output.push(inputY2); + continue; + } + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 1e-6) { + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } else { + output.push(edgeX); + output.push(edgeY); + } + } else if (side2) { + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 1e-6) { + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } else { + output.push(edgeX); + output.push(edgeY); + } + output.push(inputX2); + output.push(inputY2); + } + clipped = true; + } + if (outputStart == output.length) { + originalOutput.length = 0; + return true; + } + output.push(output[0]); + output.push(output[1]); + if (i == clippingVerticesLast) break; + var temp = output; + output = input; + output.length = 0; + input = temp; + } + if (originalOutput != output) { + originalOutput.length = 0; + for (var i = 0, n = output.length - 2; i < n; i++) originalOutput[i] = output[i]; + } else originalOutput.length = originalOutput.length - 2; + return clipped; + }; + SkeletonClipping.makeClockwise = function (polygon) { + var vertices = polygon; + var verticeslength = polygon.length; + var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; + for (var i = 0, n = verticeslength - 3; i < n; i += 2) { + p1x = vertices[i]; + p1y = vertices[i + 1]; + p2x = vertices[i + 2]; + p2y = vertices[i + 3]; + area += p1x * p2y - p2x * p1y; + } + if (area < 0) return; + for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { + var x = vertices[i], y = vertices[i + 1]; + var other = lastX - i; + vertices[i] = vertices[other]; + vertices[i + 1] = vertices[other + 1]; + vertices[other] = x; + vertices[other + 1] = y; + } + }; + return SkeletonClipping; + })(); + spine.SkeletonClipping = SkeletonClipping; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); + this.slots = new Array(); + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + this.fps = 0; + } + SkeletonData.prototype.findBone = function (boneName) { + if (null == boneName) throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (null == boneName) throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) if (bones[i].name == boneName) return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (null == slotName) throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (null == slotName) throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) if (slots[i].name == slotName) return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (null == skinName) throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (null == eventDataName) throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_5 = events[i]; + if (event_5.name == eventDataName) return event_5; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (null == animationName) throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (null == constraintName) throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (null == pathConstraintName) throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) if (pathConstraints[i].name == pathConstraintName) return i; + return -1; + }; + return SkeletonData; + })(); + spine.SkeletonData = SkeletonData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = "string" === typeof json ? JSON.parse(json) : json; + var skeletonMap = root.skeleton; + if (null != skeletonMap) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.x = skeletonMap.x; + skeletonData.y = skeletonMap.y; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.fps = skeletonMap.fps; + skeletonData.imagesPath = skeletonMap.images; + } + if (root.bones) for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_5 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (null != parentName) { + parent_5 = skeletonData.findBone(parentName); + if (null == parent_5) throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); + data.skinRequired = this.getValue(boneMap, "skin", false); + skeletonData.bones.push(data); + } + if (root.slots) for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (null == boneData) throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = this.getValue(slotMap, "color", null); + null != color && data.color.setFromString(color); + var dark = this.getValue(slotMap, "dark", null); + if (null != dark) { + data.darkColor = new spine.Color(1, 1, 1, 1); + data.darkColor.setFromString(dark); + } + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + if (root.ik) for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (null == bone) throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (null == data.target) throw new Error("IK target bone not found: " + targetName); + data.mix = this.getValue(constraintMap, "mix", 1); + data.softness = this.getValue(constraintMap, "softness", 0) * scale; + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.compress = this.getValue(constraintMap, "compress", false); + data.stretch = this.getValue(constraintMap, "stretch", false); + data.uniform = this.getValue(constraintMap, "uniform", false); + skeletonData.ikConstraints.push(data); + } + if (root.transform) for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (null == bone) throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (null == data.target) throw new Error("Transform constraint target bone not found: " + targetName); + data.local = this.getValue(constraintMap, "local", false); + data.relative = this.getValue(constraintMap, "relative", false); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + if (root.path) for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (null == bone) throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (null == data.target) throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + data.positionMode == spine.PositionMode.Fixed && (data.position *= scale); + data.spacing = this.getValue(constraintMap, "spacing", 0); + data.spacingMode != spine.SpacingMode.Length && data.spacingMode != spine.SpacingMode.Fixed || (data.spacing *= scale); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + if (root.skins) { + var skins = root.skins; + var isArray = skins instanceof Array; + if (!isArray) { + var skinArr = []; + for (var skinName in skins) skinArr.push({ + name: skinName, + attachments: skins[skinName] + }); + skins = skinArr; + } + for (var i = 0; i < skins.length; i++) { + var skinMap = skins[i]; + var skin = new spine.Skin(skinMap.name); + if (skinMap.bones) for (var ii = 0; ii < skinMap.bones.length; ii++) { + var bone = skeletonData.findBone(skinMap.bones[ii]); + if (null == bone) throw new Error("Skin bone not found: " + skinMap.bones[i]); + skin.bones.push(bone); + } + if (skinMap.ik) for (var ii = 0; ii < skinMap.ik.length; ii++) { + var constraint = skeletonData.findIkConstraint(skinMap.ik[ii]); + if (null == constraint) throw new Error("Skin IK constraint not found: " + skinMap.ik[i]); + skin.constraints.push(constraint); + } + if (skinMap.transform) for (var ii = 0; ii < skinMap.transform.length; ii++) { + var constraint = skeletonData.findTransformConstraint(skinMap.transform[ii]); + if (null == constraint) throw new Error("Skin transform constraint not found: " + skinMap.transform[i]); + skin.constraints.push(constraint); + } + if (skinMap.path) for (var ii = 0; ii < skinMap.path.length; ii++) { + var constraint = skeletonData.findPathConstraint(skinMap.path[ii]); + if (null == constraint) throw new Error("Skin path constraint not found: " + skinMap.path[i]); + skin.constraints.push(constraint); + } + for (var slotName in skinMap.attachments) { + var slot = skeletonData.findSlot(slotName); + if (null == slot) throw new Error("Slot not found: " + slotName); + var slotMap = skinMap.attachments[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); + null != attachment && skin.setAttachment(slot.index, entryName, attachment); + } + } + skeletonData.skins.push(skin); + "default" == skin.name && (skeletonData.defaultSkin = skin); + } + } + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = null == linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (null == skin) throw new Error("Skin not found: " + linkedMesh.skin); + var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (null == parent_6) throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent_6); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + if (root.events) for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", ""); + data.audioPath = this.getValue(eventMap, "audio", null); + if (null != data.audioPath) { + data.volume = this.getValue(eventMap, "volume", 1); + data.balance = this.getValue(eventMap, "balance", 0); + } + skeletonData.events.push(data); + } + if (root.animations) for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (null == region) return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + null != color && region.color.setFromString(color); + region.updateOffset(); + return region; + + case "boundingbox": + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (null == box) return null; + this.readVertices(map, box, map.vertexCount << 1); + var color = this.getValue(map, "color", null); + null != color && box.color.setFromString(color); + return box; + + case "mesh": + case "linkedmesh": + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (null == mesh) return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + null != color && mesh.color.setFromString(color); + mesh.width = this.getValue(map, "width", 0) * scale; + mesh.height = this.getValue(map, "height", 0) * scale; + var parent_7 = this.getValue(map, "parent", null); + if (null != parent_7) { + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_7, this.getValue(map, "deform", true))); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.edges = this.getValue(map, "edges", null); + mesh.hullLength = 2 * this.getValue(map, "hull", 0); + return mesh; + + case "path": + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (null == path) return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) lengths[i] = map.lengths[i] * scale; + path.lengths = lengths; + var color = this.getValue(map, "color", null); + null != color && path.color.setFromString(color); + return path; + + case "point": + var point = this.attachmentLoader.newPointAttachment(skin, name); + if (null == point) return null; + point.x = this.getValue(map, "x", 0) * scale; + point.y = this.getValue(map, "y", 0) * scale; + point.rotation = this.getValue(map, "rotation", 0); + var color = this.getValue(map, "color", null); + null != color && point.color.setFromString(color); + return point; + + case "clipping": + var clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (null == clip) return null; + var end = this.getValue(map, "end", null); + if (null != end) { + var slot = skeletonData.findSlot(end); + if (null == slot) throw new Error("Clipping end slot not found: " + end); + clip.endSlot = slot; + } + var vertexCount = map.vertexCount; + this.readVertices(map, clip, vertexCount << 1); + var color = this.getValue(map, "color", null); + null != color && clip.color.setFromString(color); + return clip; + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + var scaledVertices = spine.Utils.toFloatArray(vertices); + if (1 != scale) for (var i = 0, n = vertices.length; i < n; i++) scaledVertices[i] *= scale; + attachment.vertices = scaledVertices; + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + 4 * boneCount; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + if (map.slots) for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (-1 == slotIndex) throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if ("attachment" == timelineName) { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, this.getValue(valueMap, "time", 0), valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } else if ("color" == timelineName) { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } else { + if ("twoColor" != timelineName) throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + var timeline = new spine.TwoColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var light = new spine.Color(); + var dark = new spine.Color(); + light.setFromString(valueMap.light); + dark.setFromString(valueMap.dark); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TwoColorTimeline.ENTRIES]); + } + } + } + if (map.bones) for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (-1 == boneIndex) throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if ("rotate" === timelineName) { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "angle", 0)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } else { + if ("translate" !== timelineName && "scale" !== timelineName && "shear" !== timelineName) throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + var timeline = null; + var timelineScale = 1, defaultValue = 0; + if ("scale" === timelineName) { + timeline = new spine.ScaleTimeline(timelineMap.length); + defaultValue = 1; + } else if ("shear" === timelineName) timeline = new spine.ShearTimeline(timelineMap.length); else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", defaultValue), y = this.getValue(valueMap, "y", defaultValue); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + } + } + if (map.ik) for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "softness", 0) * scale, this.getValue(valueMap, "bendPositive", true) ? 1 : -1, this.getValue(valueMap, "compress", false), this.getValue(valueMap, "stretch", false)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + if (map.transform) for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + var mapPath = map.path || map.paths; + if (mapPath) for (var constraintName in mapPath) { + var constraintMap = mapPath[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (-1 == index) throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if ("position" === timelineName || "spacing" === timelineName) { + var timeline = null; + var timelineScale = 1; + if ("spacing" === timelineName) { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + data.spacingMode != spine.SpacingMode.Length && data.spacingMode != spine.SpacingMode.Fixed || (timelineScale = scale); + } else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + data.positionMode == spine.PositionMode.Fixed && (timelineScale = scale); + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } else if ("mix" === timelineName) { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + if (map.deform) for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (null == skin) throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (-1 == slotIndex) throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (null == attachment) continue; + var weighted = null != attachment.bones; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (null == verticesValue) deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (1 != scale) for (var i = start, n = i + verticesValue.length; i < n; i++) deform[i] *= scale; + if (!weighted) for (var i = 0; i < deformLength; i++) deform[i] += vertices[i]; + } + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + var drawOrderNode = map.drawOrder; + null == drawOrderNode && (drawOrderNode = map.draworder); + if (null != drawOrderNode) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (null != offsets) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (-1 == slotIndex) throw new Error("Slot not found: " + offsetMap.slot); + while (originalIndex != slotIndex) unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + while (originalIndex < slotCount) unchanged[unchangedIndex++] = originalIndex++; + for (var i = slotCount - 1; i >= 0; i--) -1 == drawOrder[i] && (drawOrder[i] = unchanged[--unchangedIndex]); + } + timeline.setFrame(frameIndex++, this.getValue(drawOrderMap, "time", 0), drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (null == eventData) throw new Error("Event not found: " + eventMap.name); + var event_6 = new spine.Event(spine.Utils.toSinglePrecision(this.getValue(eventMap, "time", 0)), eventData); + event_6.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_6.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_6.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + if (null != event_6.data.audioPath) { + event_6.volume = this.getValue(eventMap, "volume", 1); + event_6.balance = this.getValue(eventMap, "balance", 0); + } + timeline.setFrame(frameIndex++, event_6); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) throw new Error("Error while parsing animation, duration is NaN"); + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + var curve = map.curve; + if (!curve) return; + "stepped" == curve ? timeline.setStepped(frameIndex) : "[object Array]" === Object.prototype.toString.call(curve) ? timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]) : timeline.setCurve(frameIndex, curve, this.getValue(map, "c2", 0), this.getValue(map, "c3", 1), this.getValue(map, "c4", 1)); + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return void 0 !== map[prop] ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if ("normal" == str) return spine.BlendMode.Normal; + if ("additive" == str) return spine.BlendMode.Additive; + if ("multiply" == str) return spine.BlendMode.Multiply; + if ("screen" == str) return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if ("fixed" == str) return spine.PositionMode.Fixed; + if ("percent" == str) return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if ("length" == str) return spine.SpacingMode.Length; + if ("fixed" == str) return spine.SpacingMode.Fixed; + if ("percent" == str) return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if ("tangent" == str) return spine.RotateMode.Tangent; + if ("chain" == str) return spine.RotateMode.Chain; + if ("chainscale" == str) return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + SkeletonJson.transformModeFromString = function (str) { + str = str.toLowerCase(); + if ("normal" == str) return spine.TransformMode.Normal; + if ("onlytranslation" == str) return spine.TransformMode.OnlyTranslation; + if ("norotationorreflection" == str) return spine.TransformMode.NoRotationOrReflection; + if ("noscale" == str) return spine.TransformMode.NoScale; + if ("noscaleorreflection" == str) return spine.TransformMode.NoScaleOrReflection; + throw new Error("Unknown transform mode: " + str); + }; + return SkeletonJson; + })(); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + return LinkedMesh; + })(); + })(spine || (spine = {})); + var spine; + (function (spine) { + var SkinEntry = (function () { + function SkinEntry(slotIndex, name, attachment) { + this.slotIndex = slotIndex; + this.name = name; + this.attachment = attachment; + } + return SkinEntry; + })(); + spine.SkinEntry = SkinEntry; + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + this.bones = Array(); + this.constraints = new Array(); + if (null == name) throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.setAttachment = function (slotIndex, name, attachment) { + if (null == attachment) throw new Error("attachment cannot be null."); + var attachments = this.attachments; + slotIndex >= attachments.length && (attachments.length = slotIndex + 1); + attachments[slotIndex] || (attachments[slotIndex] = {}); + attachments[slotIndex][name] = attachment; + }; + Skin.prototype.addSkin = function (skin) { + for (var i = 0; i < skin.bones.length; i++) { + var bone = skin.bones[i]; + var contained = false; + for (var j = 0; j < this.bones.length; j++) if (this.bones[j] == bone) { + contained = true; + break; + } + contained || this.bones.push(bone); + } + for (var i = 0; i < skin.constraints.length; i++) { + var constraint = skin.constraints[i]; + var contained = false; + for (var j = 0; j < this.constraints.length; j++) if (this.constraints[j] == constraint) { + contained = true; + break; + } + contained || this.constraints.push(constraint); + } + var attachments = skin.getAttachments(); + for (var i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + }; + Skin.prototype.copySkin = function (skin) { + for (var i = 0; i < skin.bones.length; i++) { + var bone = skin.bones[i]; + var contained = false; + for (var j = 0; j < this.bones.length; j++) if (this.bones[j] == bone) { + contained = true; + break; + } + contained || this.bones.push(bone); + } + for (var i = 0; i < skin.constraints.length; i++) { + var constraint = skin.constraints[i]; + var contained = false; + for (var j = 0; j < this.constraints.length; j++) if (this.constraints[j] == constraint) { + contained = true; + break; + } + contained || this.constraints.push(constraint); + } + var attachments = skin.getAttachments(); + for (var i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + if (null == attachment.attachment) continue; + if (attachment.attachment instanceof spine.MeshAttachment) { + attachment.attachment = attachment.attachment.newLinkedMesh(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } else { + attachment.attachment = attachment.attachment.copy(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + } + }; + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + Skin.prototype.removeAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + dictionary && (dictionary[name] = null); + }; + Skin.prototype.getAttachments = function () { + var entries = new Array(); + for (var i = 0; i < this.attachments.length; i++) { + var slotAttachments = this.attachments[i]; + if (slotAttachments) for (var name_4 in slotAttachments) { + var attachment = slotAttachments[name_4]; + attachment && entries.push(new SkinEntry(i, name_4, attachment)); + } + } + return entries; + }; + Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { + var slotAttachments = this.attachments[slotIndex]; + if (slotAttachments) for (var name_5 in slotAttachments) { + var attachment = slotAttachments[name_5]; + attachment && attachments.push(new SkinEntry(slotIndex, name_5, attachment)); + } + }; + Skin.prototype.clear = function () { + this.attachments.length = 0; + this.bones.length = 0; + this.constraints.length = 0; + }; + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, key); + null != attachment && slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + })(); + spine.Skin = Skin; + })(spine || (spine = {})); + var spine; + (function (spine) { + var Slot = (function () { + function Slot(data, bone) { + this.deform = new Array(); + if (null == data) throw new Error("data cannot be null."); + if (null == bone) throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.darkColor = null == data.darkColor ? null : new spine.Color(); + this.setToSetupPose(); + } + Slot.prototype.getSkeleton = function () { + return this.bone.skeleton; + }; + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.deform.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + null != this.darkColor && this.darkColor.setFromColor(this.data.darkColor); + if (null == this.data.attachmentName) this.attachment = null; else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + })(); + spine.Slot = Slot; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) throw new Error("index must be >= 0."); + if (null == name) throw new Error("name cannot be null."); + if (null == boneData) throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + })(); + spine.SlotData = SlotData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var Texture = (function () { + function Texture(image) { + this._image = image; + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": + return TextureFilter.Nearest; + + case "linear": + return TextureFilter.Linear; + + case "mipmap": + return TextureFilter.MipMap; + + case "mipmapnearestnearest": + return TextureFilter.MipMapNearestNearest; + + case "mipmaplinearnearest": + return TextureFilter.MipMapLinearNearest; + + case "mipmapnearestlinear": + return TextureFilter.MipMapNearestLinear; + + case "mipmaplinearlinear": + return TextureFilter.MipMapLinearLinear; + + default: + throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": + return TextureWrap.MirroredRepeat; + + case "clamptoedge": + return TextureWrap.ClampToEdge; + + case "repeat": + return TextureWrap.Repeat; + + default: + throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + })(); + spine.Texture = Texture; + var TextureFilter; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); + var TextureWrap; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; + })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + })(); + spine.TextureRegion = TextureRegion; + var FakeTexture = (function (_super) { + __extends(FakeTexture, _super); + function FakeTexture() { + return null !== _super && _super.apply(this, arguments) || this; + } + FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; + FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; + FakeTexture.prototype.dispose = function () { }; + return FakeTexture; + })(Texture); + spine.FakeTexture = FakeTexture; + })(spine || (spine = {})); + var spine; + (function (spine) { + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (null == textureLoader) throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (null == line) break; + line = line.trim(); + if (0 == line.length) page = null; else if (page) { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + var rotateValue = reader.readValue(); + "true" == rotateValue.toLocaleLowerCase() ? region.degrees = 90 : "false" == rotateValue.toLocaleLowerCase() ? region.degrees = 0 : region.degrees = parseFloat(rotateValue); + region.rotate = 90 == region.degrees; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + 4 == reader.readTuple(tuple) && 4 == reader.readTuple(tuple) && reader.readTuple(tuple); + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } else { + page = new TextureAtlasPage(); + page.name = line; + if (2 == reader.readTuple(tuple)) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + reader.readTuple(tuple); + page.minFilter = spine.Texture.filterFromString(tuple[0]); + page.magFilter = spine.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = spine.TextureWrap.ClampToEdge; + page.vWrap = spine.TextureWrap.ClampToEdge; + "x" == direction ? page.uWrap = spine.TextureWrap.Repeat : "y" == direction ? page.vWrap = spine.TextureWrap.Repeat : "xy" == direction && (page.uWrap = page.vWrap = spine.TextureWrap.Repeat); + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) if (this.regions[i].name == name) return this.regions[i]; + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) this.pages[i].texture.dispose(); + }; + return TextureAtlas; + })(); + spine.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (-1 == colon) throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (-1 == colon) throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (-1 == comma) break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + })(); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { } + return TextureAtlasPage; + })(); + spine.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + return null !== _super && _super.apply(this, arguments) || this; + } + return TextureAtlasRegion; + })(spine.TextureRegion); + spine.TextureAtlasRegion = TextureAtlasRegion; + })(spine || (spine = {})); + var spine; + (function (spine) { + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + this.active = false; + if (null == data) throw new Error("data cannot be null."); + if (null == skeleton) throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.isActive = function () { + return this.active; + }; + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + this.data.local ? this.data.relative ? this.applyRelativeLocal() : this.applyAbsoluteLocal() : this.data.relative ? this.applyRelativeWorld() : this.applyAbsoluteWorld(); + }; + TransformConstraint.prototype.applyAbsoluteWorld = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect; + var offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var modified = false; + if (0 != rotateMix) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; + r > spine.MathUtils.PI ? r -= spine.MathUtils.PI2 : r < -spine.MathUtils.PI && (r += spine.MathUtils.PI2); + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (0 != translateMix) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + modified = true; + } + if (scaleMix > 0) { + var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + s > 1e-5 && (s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s); + bone.a *= s; + bone.c *= s; + s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + s > 1e-5 && (s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s); + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + r > spine.MathUtils.PI ? r -= spine.MathUtils.PI2 : r < -spine.MathUtils.PI && (r += spine.MathUtils.PI2); + r = by + (r + offsetShearY) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + modified && (bone.appliedValid = false); + } + }; + TransformConstraint.prototype.applyRelativeWorld = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var modified = false; + if (0 != rotateMix) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) + offsetRotation; + r > spine.MathUtils.PI ? r -= spine.MathUtils.PI2 : r < -spine.MathUtils.PI && (r += spine.MathUtils.PI2); + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (0 != translateMix) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += temp.x * translateMix; + bone.worldY += temp.y * translateMix; + modified = true; + } + if (scaleMix > 0) { + var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1; + bone.a *= s; + bone.c *= s; + s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1; + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + var r = Math.atan2(td, tb) - Math.atan2(tc, ta); + r > spine.MathUtils.PI ? r -= spine.MathUtils.PI2 : r < -spine.MathUtils.PI && (r += spine.MathUtils.PI2); + var b = bone.b, d = bone.d; + r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + modified && (bone.appliedValid = false); + } + }; + TransformConstraint.prototype.applyAbsoluteLocal = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + target.appliedValid || target.updateAppliedTransform(); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + bone.appliedValid || bone.updateAppliedTransform(); + var rotation = bone.arotation; + if (0 != rotateMix) { + var r = target.arotation - rotation + this.data.offsetRotation; + r -= 360 * (16384 - (16384.499999999996 - r / 360 | 0)); + rotation += r * rotateMix; + } + var x = bone.ax, y = bone.ay; + if (0 != translateMix) { + x += (target.ax - x + this.data.offsetX) * translateMix; + y += (target.ay - y + this.data.offsetY) * translateMix; + } + var scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (0 != scaleMix) { + scaleX > 1e-5 && (scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX); + scaleY > 1e-5 && (scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY); + } + var shearY = bone.ashearY; + if (0 != shearMix) { + var r = target.ashearY - shearY + this.data.offsetShearY; + r -= 360 * (16384 - (16384.499999999996 - r / 360 | 0)); + bone.shearY += r * shearMix; + } + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + TransformConstraint.prototype.applyRelativeLocal = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + target.appliedValid || target.updateAppliedTransform(); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + bone.appliedValid || bone.updateAppliedTransform(); + var rotation = bone.arotation; + 0 != rotateMix && (rotation += (target.arotation + this.data.offsetRotation) * rotateMix); + var x = bone.ax, y = bone.ay; + if (0 != translateMix) { + x += (target.ax + this.data.offsetX) * translateMix; + y += (target.ay + this.data.offsetY) * translateMix; + } + var scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (0 != scaleMix) { + scaleX > 1e-5 && (scaleX *= (target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix + 1); + scaleY > 1e-5 && (scaleY *= (target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix + 1); + } + var shearY = bone.ashearY; + 0 != shearMix && (shearY += (target.ashearY + this.data.offsetShearY) * shearMix); + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + return TransformConstraint; + })(); + spine.TransformConstraint = TransformConstraint; + })(spine || (spine = {})); + var spine; + (function (spine) { + var TransformConstraintData = (function (_super) { + __extends(TransformConstraintData, _super); + function TransformConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + _this.bones = new Array(); + _this.rotateMix = 0; + _this.translateMix = 0; + _this.scaleMix = 0; + _this.shearMix = 0; + _this.offsetRotation = 0; + _this.offsetX = 0; + _this.offsetY = 0; + _this.offsetScaleX = 0; + _this.offsetScaleY = 0; + _this.offsetShearY = 0; + _this.relative = false; + _this.local = false; + return _this; + } + return TransformConstraintData; + })(spine.ConstraintData); + spine.TransformConstraintData = TransformConstraintData; + })(spine || (spine = {})); + var spine; + (function (spine) { + var Triangulator = (function () { + function Triangulator() { + this.convexPolygons = new Array(); + this.convexPolygonsIndices = new Array(); + this.indicesArray = new Array(); + this.isConcaveArray = new Array(); + this.triangles = new Array(); + this.polygonPool = new spine.Pool(function () { + return new Array(); + }); + this.polygonIndicesPool = new spine.Pool(function () { + return new Array(); + }); + } + Triangulator.prototype.triangulate = function (verticesArray) { + var vertices = verticesArray; + var vertexCount = verticesArray.length >> 1; + var indices = this.indicesArray; + indices.length = 0; + for (var i = 0; i < vertexCount; i++) indices[i] = i; + var isConcave = this.isConcaveArray; + isConcave.length = 0; + for (var i = 0, n = vertexCount; i < n; ++i) isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); + var triangles = this.triangles; + triangles.length = 0; + while (vertexCount > 3) { + var previous = vertexCount - 1, i = 0, next = 1; + while (true) { + outer: if (!isConcave[i]) { + var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; + var p1x = vertices[p1], p1y = vertices[p1 + 1]; + var p2x = vertices[p2], p2y = vertices[p2 + 1]; + var p3x = vertices[p3], p3y = vertices[p3 + 1]; + for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { + if (!isConcave[ii]) continue; + var v = indices[ii] << 1; + var vx = vertices[v], vy = vertices[v + 1]; + if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy) && Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy) && Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) break outer; + } + break; + } + if (0 == next) { + do { + if (!isConcave[i]) break; + i--; + } while (i > 0); + break; + } + previous = i; + i = next; + next = (next + 1) % vertexCount; + } + triangles.push(indices[(vertexCount + i - 1) % vertexCount]); + triangles.push(indices[i]); + triangles.push(indices[(i + 1) % vertexCount]); + indices.splice(i, 1); + isConcave.splice(i, 1); + vertexCount--; + var previousIndex = (vertexCount + i - 1) % vertexCount; + var nextIndex = i == vertexCount ? 0 : i; + isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); + isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); + } + if (3 == vertexCount) { + triangles.push(indices[2]); + triangles.push(indices[0]); + triangles.push(indices[1]); + } + return triangles; + }; + Triangulator.prototype.decompose = function (verticesArray, triangles) { + var vertices = verticesArray; + var convexPolygons = this.convexPolygons; + this.polygonPool.freeAll(convexPolygons); + convexPolygons.length = 0; + var convexPolygonsIndices = this.convexPolygonsIndices; + this.polygonIndicesPool.freeAll(convexPolygonsIndices); + convexPolygonsIndices.length = 0; + var polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + var polygon = this.polygonPool.obtain(); + polygon.length = 0; + var fanBaseIndex = -1, lastWinding = 0; + for (var i = 0, n = triangles.length; i < n; i += 3) { + var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; + var x1 = vertices[t1], y1 = vertices[t1 + 1]; + var x2 = vertices[t2], y2 = vertices[t2 + 1]; + var x3 = vertices[t3], y3 = vertices[t3 + 1]; + var merged = false; + if (fanBaseIndex == t1) { + var o = polygon.length - 4; + var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); + var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); + if (winding1 == lastWinding && winding2 == lastWinding) { + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(t3); + merged = true; + } + } + if (!merged) { + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } else { + this.polygonPool.free(polygon); + this.polygonIndicesPool.free(polygonIndices); + } + polygon = this.polygonPool.obtain(); + polygon.length = 0; + polygon.push(x1); + polygon.push(y1); + polygon.push(x2); + polygon.push(y2); + polygon.push(x3); + polygon.push(y3); + polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + polygonIndices.push(t1); + polygonIndices.push(t2); + polygonIndices.push(t3); + lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); + fanBaseIndex = t1; + } + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + for (var i = 0, n = convexPolygons.length; i < n; i++) { + polygonIndices = convexPolygonsIndices[i]; + if (0 == polygonIndices.length) continue; + var firstIndex = polygonIndices[0]; + var lastIndex = polygonIndices[polygonIndices.length - 1]; + polygon = convexPolygons[i]; + var o = polygon.length - 4; + var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; + var prevX = polygon[o + 2], prevY = polygon[o + 3]; + var firstX = polygon[0], firstY = polygon[1]; + var secondX = polygon[2], secondY = polygon[3]; + var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); + for (var ii = 0; ii < n; ii++) { + if (ii == i) continue; + var otherIndices = convexPolygonsIndices[ii]; + if (3 != otherIndices.length) continue; + var otherFirstIndex = otherIndices[0]; + var otherSecondIndex = otherIndices[1]; + var otherLastIndex = otherIndices[2]; + var otherPoly = convexPolygons[ii]; + var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; + if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) continue; + var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); + var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); + if (winding1 == winding && winding2 == winding) { + otherPoly.length = 0; + otherIndices.length = 0; + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(otherLastIndex); + prevPrevX = prevX; + prevPrevY = prevY; + prevX = x3; + prevY = y3; + ii = 0; + } + } + } + for (var i = convexPolygons.length - 1; i >= 0; i--) { + polygon = convexPolygons[i]; + if (0 == polygon.length) { + convexPolygons.splice(i, 1); + this.polygonPool.free(polygon); + polygonIndices = convexPolygonsIndices[i]; + convexPolygonsIndices.splice(i, 1); + this.polygonIndicesPool.free(polygonIndices); + } + } + return convexPolygons; + }; + Triangulator.isConcave = function (index, vertexCount, vertices, indices) { + var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; + var current = indices[index] << 1; + var next = indices[(index + 1) % vertexCount] << 1; + return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); + }; + Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; + }; + Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { + var px = p2x - p1x, py = p2y - p1y; + return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; + }; + return Triangulator; + })(); + spine.Triangulator = Triangulator; + })(spine || (spine = {})); + var spine; + (function (spine) { + var IntSet = (function () { + function IntSet() { + this.array = new Array(); + } + IntSet.prototype.add = function (value) { + var contains = this.contains(value); + this.array[0 | value] = 0 | value; + return !contains; + }; + IntSet.prototype.contains = function (value) { + return void 0 != this.array[0 | value]; + }; + IntSet.prototype.remove = function (value) { + this.array[0 | value] = void 0; + }; + IntSet.prototype.clear = function () { + this.array.length = 0; + }; + return IntSet; + })(); + spine.IntSet = IntSet; + var Color = (function () { + function Color(r, g, b, a) { + void 0 === r && (r = 0); + void 0 === g && (g = 0); + void 0 === b && (b = 0); + void 0 === a && (a = 0); + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + return this; + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + return this; + }; + Color.prototype.setFromString = function (hex) { + hex = "#" == hex.charAt(0) ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255; + this.g = parseInt(hex.substr(2, 2), 16) / 255; + this.b = parseInt(hex.substr(4, 2), 16) / 255; + this.a = (8 != hex.length ? 255 : parseInt(hex.substr(6, 2), 16)) / 255; + return this; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + return this; + }; + Color.prototype.clamp = function () { + this.r < 0 ? this.r = 0 : this.r > 1 && (this.r = 1); + this.g < 0 ? this.g = 0 : this.g > 1 && (this.g = 1); + this.b < 0 ? this.b = 0 : this.b > 1 && (this.b = 1); + this.a < 0 ? this.a = 0 : this.a > 1 && (this.a = 1); + return this; + }; + Color.rgba8888ToColor = function (color, value) { + color.r = ((4278190080 & value) >>> 24) / 255; + color.g = ((16711680 & value) >>> 16) / 255; + color.b = ((65280 & value) >>> 8) / 255; + color.a = (255 & value) / 255; + }; + Color.rgb888ToColor = function (color, value) { + color.r = ((16711680 & value) >>> 16) / 255; + color.g = ((65280 & value) >>> 8) / 255; + color.b = (255 & value) / 255; + }; + Color.WHITE = new Color(1, 1, 1, 1); + Color.RED = new Color(1, 0, 0, 1); + Color.GREEN = new Color(0, 1, 0, 1); + Color.BLUE = new Color(0, 0, 1, 1); + Color.MAGENTA = new Color(1, 0, 1, 1); + return Color; + })(); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { } + MathUtils.clamp = function (value, min, max) { + if (value < min) return min; + if (value > max) return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value > 0 ? 1 : value < 0 ? -1 : 0; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.cbrt = function (x) { + var y = Math.pow(Math.abs(x), 1 / 3); + return x < 0 ? -y : y; + }; + MathUtils.randomTriangular = function (min, max) { + return MathUtils.randomTriangularWith(min, max, .5 * (min + max)); + }; + MathUtils.randomTriangularWith = function (min, max, mode) { + var u = Math.random(); + var d = max - min; + if (u <= (mode - min) / d) return min + Math.sqrt(u * d * (mode - min)); + return max - Math.sqrt((1 - u) * d * (max - mode)); + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = 2 * MathUtils.PI; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + })(); + spine.MathUtils = MathUtils; + var Interpolation = (function () { + function Interpolation() { } + Interpolation.prototype.apply = function (start, end, a) { + return start + (end - start) * this.applyInternal(a); + }; + return Interpolation; + })(); + spine.Interpolation = Interpolation; + var Pow = (function (_super) { + __extends(Pow, _super); + function Pow(power) { + var _this = _super.call(this) || this; + _this.power = 2; + _this.power = power; + return _this; + } + Pow.prototype.applyInternal = function (a) { + if (a <= .5) return Math.pow(2 * a, this.power) / 2; + return Math.pow(2 * (a - 1), this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; + }; + return Pow; + })(Interpolation); + spine.Pow = Pow; + var PowOut = (function (_super) { + __extends(PowOut, _super); + function PowOut(power) { + return _super.call(this, power) || this; + } + PowOut.prototype.applyInternal = function (a) { + return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; + }; + return PowOut; + })(Pow); + spine.PowOut = PowOut; + var Utils = (function () { + function Utils() { } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) dest[j] = source[i]; + }; + Utils.setArraySize = function (array, size, value) { + void 0 === value && (value = 0); + var oldSize = array.length; + if (oldSize == size) return array; + array.length = size; + if (oldSize < size) for (var i = oldSize; i < size; i++) array[i] = value; + return array; + }; + Utils.ensureArrayCapacity = function (array, size, value) { + void 0 === value && (value = 0); + if (array.length >= size) return array; + return Utils.setArraySize(array, size, value); + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) return new Float32Array(size); + var array = new Array(size); + for (var i = 0; i < array.length; i++) array[i] = 0; + return array; + }; + Utils.newShortArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) return new Int16Array(size); + var array = new Array(size); + for (var i = 0; i < array.length; i++) array[i] = 0; + return array; + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.toSinglePrecision = function (value) { + return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; + }; + Utils.webkit602BugfixHelper = function (alpha, blend) { }; + Utils.contains = function (array, element, identity) { + void 0 === identity && (identity = true); + for (var i = 0; i < array.length; i++) if (array[i] == element) return true; + return false; + }; + Utils.SUPPORTS_TYPED_ARRAYS = "undefined" !== typeof Float32Array; + return Utils; + })(); + spine.Utils = Utils; + var DebugUtils = (function () { + function DebugUtils() { } + DebugUtils.logBones = function (skeleton) { + for (var i = 0; i < skeleton.bones.length; i++) { + var bone = skeleton.bones[i]; + console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); + } + }; + return DebugUtils; + })(); + spine.DebugUtils = DebugUtils; + var Pool = (function () { + function Pool(instantiator) { + this.items = new Array(); + this.instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this.items.length > 0 ? this.items.pop() : this.instantiator(); + }; + Pool.prototype.free = function (item) { + item.reset && item.reset(); + this.items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) { + items[i].reset && items[i].reset(); + this.items[i] = items[i]; + } + }; + Pool.prototype.clear = function () { + this.items.length = 0; + }; + return Pool; + })(); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + Vector2.prototype.length = function () { + var x = this.x; + var y = this.y; + return Math.sqrt(x * x + y * y); + }; + Vector2.prototype.normalize = function () { + var len = this.length(); + if (0 != len) { + this.x /= len; + this.y /= len; + } + return this; + }; + return Vector2; + })(); + spine.Vector2 = Vector2; + var TimeKeeper = (function () { + function TimeKeeper() { + this.maxDelta = .064; + this.framesPerSecond = 0; + this.delta = 0; + this.totalTime = 0; + this.lastTime = Date.now() / 1e3; + this.frameCount = 0; + this.frameTime = 0; + } + TimeKeeper.prototype.update = function () { + var now = Date.now() / 1e3; + this.delta = now - this.lastTime; + this.frameTime += this.delta; + this.totalTime += this.delta; + this.delta > this.maxDelta && (this.delta = this.maxDelta); + this.lastTime = now; + this.frameCount++; + if (this.frameTime > 1) { + this.framesPerSecond = this.frameCount / this.frameTime; + this.frameTime = 0; + this.frameCount = 0; + } + }; + return TimeKeeper; + })(); + spine.TimeKeeper = TimeKeeper; + var WindowedMean = (function () { + function WindowedMean(windowSize) { + void 0 === windowSize && (windowSize = 32); + this.addedValues = 0; + this.lastValue = 0; + this.mean = 0; + this.dirty = true; + this.values = new Array(windowSize); + } + WindowedMean.prototype.hasEnoughData = function () { + return this.addedValues >= this.values.length; + }; + WindowedMean.prototype.addValue = function (value) { + this.addedValues < this.values.length && this.addedValues++; + this.values[this.lastValue++] = value; + this.lastValue > this.values.length - 1 && (this.lastValue = 0); + this.dirty = true; + }; + WindowedMean.prototype.getMean = function () { + if (this.hasEnoughData()) { + if (this.dirty) { + var mean = 0; + for (var i = 0; i < this.values.length; i++) mean += this.values[i]; + this.mean = mean / this.values.length; + this.dirty = false; + } + return this.mean; + } + return 0; + }; + return WindowedMean; + })(); + spine.WindowedMean = WindowedMean; + })(spine || (spine = {})); + (function () { + Math.fround || (Math.fround = (function (array) { + return function (x) { + return array[0] = x, array[0]; + }; + })(new Float32Array(1))); + })(); + var spine; + (function (spine) { + var Attachment = (function () { + function Attachment(name) { + if (null == name) throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + })(); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + var _this = _super.call(this, name) || this; + _this.id = (65535 & VertexAttachment.nextID++) << 11; + _this.worldVerticesLength = 0; + _this.deformAttachment = _this; + return _this; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { + count = offset + (count >> 1) * stride; + var skeleton = slot.bone.skeleton; + var deformArray = slot.deform; + var vertices = this.vertices; + var bones = this.bones; + if (null == bones) { + deformArray.length > 0 && (vertices = deformArray); + var bone = slot.bone; + var x = bone.worldX; + var y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (0 == deformArray.length) for (var w = offset, b = 3 * skip; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } else { + var deform = deformArray; + for (var w = offset, b = 3 * skip, f = skip << 1; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + VertexAttachment.prototype.copyTo = function (attachment) { + if (null != this.bones) { + attachment.bones = new Array(this.bones.length); + spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); + } else attachment.bones = null; + if (null != this.vertices) { + attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); + spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); + } else attachment.vertices = null; + attachment.worldVerticesLength = this.worldVerticesLength; + attachment.deformAttachment = this.deformAttachment; + }; + VertexAttachment.nextID = 0; + return VertexAttachment; + })(Attachment); + spine.VertexAttachment = VertexAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var AttachmentType; + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + AttachmentType[AttachmentType["Point"] = 5] = "Point"; + AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; + })(AttachmentType = spine.AttachmentType || (spine.AttachmentType = {})); + })(spine || (spine = {})); + var spine; + (function (spine) { + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(1, 1, 1, 1); + return _this; + } + BoundingBoxAttachment.prototype.copy = function () { + var copy = new BoundingBoxAttachment(name); + this.copyTo(copy); + copy.color.setFromColor(this.color); + return copy; + }; + return BoundingBoxAttachment; + })(spine.VertexAttachment); + spine.BoundingBoxAttachment = BoundingBoxAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var ClippingAttachment = (function (_super) { + __extends(ClippingAttachment, _super); + function ClippingAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(.2275, .2275, .8078, 1); + return _this; + } + ClippingAttachment.prototype.copy = function () { + var copy = new ClippingAttachment(name); + this.copyTo(copy); + copy.endSlot = this.endSlot; + copy.color.setFromColor(this.color); + return copy; + }; + return ClippingAttachment; + })(spine.VertexAttachment); + spine.ClippingAttachment = ClippingAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(1, 1, 1, 1); + _this.tempColor = new spine.Color(0, 0, 0, 0); + return _this; + } + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + null != this.uvs && this.uvs.length == regionUVs.length || (this.uvs = spine.Utils.newFloatArray(regionUVs.length)); + var uvs = this.uvs; + var n = this.uvs.length; + var u = this.region.u, v = this.region.v, width = 0, height = 0; + if (this.region instanceof spine.TextureAtlasRegion) { + var region = this.region; + var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height; + switch (region.degrees) { + case 90: + u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; + v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i + 1] * width; + uvs[i + 1] = v + (1 - regionUVs[i]) * height; + } + return; + + case 180: + u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; + v -= region.offsetY / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i]) * width; + uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; + } + return; + + case 270: + u -= region.offsetY / textureWidth; + v -= region.offsetX / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i + 1]) * width; + uvs[i + 1] = v + regionUVs[i] * height; + } + return; + } + u -= region.offsetX / textureWidth; + v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + } else if (null == this.region) { + u = v = 0; + width = height = 1; + } else { + width = this.region.u2 - u; + height = this.region.v2 - v; + } + for (var i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i] * width; + uvs[i + 1] = v + regionUVs[i + 1] * height; + } + }; + MeshAttachment.prototype.getParentMesh = function () { + return this.parentMesh; + }; + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this.parentMesh = parentMesh; + if (null != parentMesh) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.worldVerticesLength = parentMesh.worldVerticesLength; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + this.worldVerticesLength = parentMesh.worldVerticesLength; + } + }; + MeshAttachment.prototype.copy = function () { + if (null != this.parentMesh) return this.newLinkedMesh(); + var copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + this.copyTo(copy); + copy.regionUVs = new Array(this.regionUVs.length); + spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); + copy.uvs = new Array(this.uvs.length); + spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); + copy.triangles = new Array(this.triangles.length); + spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); + copy.hullLength = this.hullLength; + if (null != this.edges) { + copy.edges = new Array(this.edges.length); + spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); + } + copy.width = this.width; + copy.height = this.height; + return copy; + }; + MeshAttachment.prototype.newLinkedMesh = function () { + var copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + copy.deformAttachment = this.deformAttachment; + copy.setParentMesh(null != this.parentMesh ? this.parentMesh : this); + copy.updateUVs(); + return copy; + }; + return MeshAttachment; + })(spine.VertexAttachment); + spine.MeshAttachment = MeshAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + var _this = _super.call(this, name) || this; + _this.closed = false; + _this.constantSpeed = false; + _this.color = new spine.Color(1, 1, 1, 1); + return _this; + } + PathAttachment.prototype.copy = function () { + var copy = new PathAttachment(name); + this.copyTo(copy); + copy.lengths = new Array(this.lengths.length); + spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); + copy.closed = closed; + copy.constantSpeed = this.constantSpeed; + copy.color.setFromColor(this.color); + return copy; + }; + return PathAttachment; + })(spine.VertexAttachment); + spine.PathAttachment = PathAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var PointAttachment = (function (_super) { + __extends(PointAttachment, _super); + function PointAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(.38, .94, 0, 1); + return _this; + } + PointAttachment.prototype.computeWorldPosition = function (bone, point) { + point.x = this.x * bone.a + this.y * bone.b + bone.worldX; + point.y = this.x * bone.c + this.y * bone.d + bone.worldY; + return point; + }; + PointAttachment.prototype.computeWorldRotation = function (bone) { + var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); + var x = cos * bone.a + sin * bone.b; + var y = cos * bone.c + sin * bone.d; + return Math.atan2(y, x) * spine.MathUtils.radDeg; + }; + PointAttachment.prototype.copy = function () { + var copy = new PointAttachment(name); + copy.x = this.x; + copy.y = this.y; + copy.rotation = this.rotation; + copy.color.setFromColor(this.color); + return copy; + }; + return PointAttachment; + })(spine.VertexAttachment); + spine.PointAttachment = PointAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + var _this = _super.call(this, name) || this; + _this.x = 0; + _this.y = 0; + _this.scaleX = 1; + _this.scaleY = 1; + _this.rotation = 0; + _this.width = 0; + _this.height = 0; + _this.color = new spine.Color(1, 1, 1, 1); + _this.offset = spine.Utils.newFloatArray(8); + _this.uvs = spine.Utils.newFloatArray(8); + _this.tempColor = new spine.Color(1, 1, 1, 1); + return _this; + } + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.setRegion = function (region) { + this.region = region; + var uvs = this.uvs; + if (region.rotate) { + uvs[2] = region.u; + uvs[3] = region.v2; + uvs[4] = region.u; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v; + uvs[0] = region.u2; + uvs[1] = region.v2; + } else { + uvs[0] = region.u; + uvs[1] = region.v2; + uvs[2] = region.u; + uvs[3] = region.v; + uvs[4] = region.u2; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v2; + } + }; + RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { + var vertexOffset = this.offset; + var x = bone.worldX, y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = vertexOffset[RegionAttachment.OX1]; + offsetY = vertexOffset[RegionAttachment.OY1]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX2]; + offsetY = vertexOffset[RegionAttachment.OY2]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX3]; + offsetY = vertexOffset[RegionAttachment.OY3]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX4]; + offsetY = vertexOffset[RegionAttachment.OY4]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + }; + RegionAttachment.prototype.copy = function () { + var copy = new RegionAttachment(name); + copy.region = this.region; + copy.rendererObject = this.rendererObject; + copy.path = this.path; + copy.x = this.x; + copy.y = this.y; + copy.scaleX = this.scaleX; + copy.scaleY = this.scaleY; + copy.rotation = this.rotation; + copy.width = this.width; + copy.height = this.height; + spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); + spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); + copy.color.setFromColor(this.color); + return copy; + }; + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + })(spine.Attachment); + spine.RegionAttachment = RegionAttachment; + })(spine || (spine = {})); + var spine; + (function (spine) { + var JitterEffect = (function () { + function JitterEffect(jitterX, jitterY) { + this.jitterX = 0; + this.jitterY = 0; + this.jitterX = jitterX; + this.jitterY = jitterY; + } + JitterEffect.prototype.begin = function (skeleton) { }; + JitterEffect.prototype.transform = function (position, uv, light, dark) { + position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + }; + JitterEffect.prototype.end = function () { }; + return JitterEffect; + })(); + spine.JitterEffect = JitterEffect; + })(spine || (spine = {})); + var spine; + (function (spine) { + var SwirlEffect = (function () { + function SwirlEffect(radius, interpolation) { + this.centerX = 0; + this.centerY = 0; + this.radius = 0; + this.angle = 0; + this.worldX = 0; + this.worldY = 0; + this.radius = radius; + this.interpolation = interpolation; + } + SwirlEffect.prototype.begin = function (skeleton) { + this.worldX = skeleton.x + this.centerX; + this.worldY = skeleton.y + this.centerY; + }; + SwirlEffect.prototype.transform = function (position, uv, light, dark) { + var radAngle = this.angle * spine.MathUtils.degreesToRadians; + var x = position.x - this.worldX; + var y = position.y - this.worldY; + var dist = Math.sqrt(x * x + y * y); + if (dist < this.radius) { + var theta = this.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); + var cos = Math.cos(theta); + var sin = Math.sin(theta); + position.x = cos * x - sin * y + this.worldX; + position.y = sin * x + cos * y + this.worldY; + } + }; + SwirlEffect.prototype.end = function () { }; + SwirlEffect.interpolation = new spine.PowOut(2); + return SwirlEffect; + })(); + spine.SwirlEffect = SwirlEffect; + })(spine || (spine = {})); + module.exports = spine; + }), {}], + 429: [(function (require, module, exports) { + "use strict"; + var TrackEntryListeners = require("./track-entry-listeners"); + var spine = require("./lib/spine"); + var MaxCacheTime = 30; + var FrameTime = 1 / 60; + var _vertices = []; + var _indices = []; + var _boneInfoOffset = 0; + var _vertexOffset = 0; + var _indexOffset = 0; + var _vfOffset = 0; + var _preTexUrl = null; + var _preBlendMode = null; + var _segVCount = 0; + var _segICount = 0; + var _segOffset = 0; + var _colorOffset = 0; + var _preFinalColor = null; + var _preDarkColor = null; + var _perVertexSize = 6; + var _perClipVertexSize = 12; + var _vfCount = 0, _indexCount = 0; + var _tempr, _tempg, _tempb, _tempa; + var _finalColor32, _darkColor32; + var _finalColor = new spine.Color(1, 1, 1, 1); + var _darkColor = new spine.Color(1, 1, 1, 1); + var _quadTriangles = [0, 1, 2, 2, 3, 0]; + var AnimationCache = cc.Class({ + ctor: function ctor() { + this._privateMode = false; + this._inited = false; + this._invalid = true; + this._enableCacheAttachedInfo = false; + this.frames = []; + this.totalTime = 0; + this._frameIdx = -1; + this.isCompleted = false; + this._skeletonInfo = null; + this._animationName = null; + this._tempSegments = null; + this._tempColors = null; + this._tempBoneInfos = null; + }, + init: function init(skeletonInfo, animationName) { + this._inited = true; + this._animationName = animationName; + this._skeletonInfo = skeletonInfo; + }, + clear: function clear() { + this._inited = false; + for (var i = 0, n = this.frames.length; i < n; i++) { + var frame = this.frames[i]; + frame.segments.length = 0; + } + this.invalidAllFrame(); + }, + bind: function bind(listener) { + var completeHandle = function (entry) { + entry && entry.animation.name === this._animationName && (this.isCompleted = true); + }.bind(this); + listener.complete = completeHandle; + }, + unbind: function unbind(listener) { + listener.complete = null; + }, + begin: function begin() { + if (!this._invalid) return; + var skeletonInfo = this._skeletonInfo; + var preAnimationCache = skeletonInfo.curAnimationCache; + preAnimationCache && preAnimationCache !== this && (this._privateMode ? preAnimationCache.invalidAllFrame() : preAnimationCache.updateToFrame()); + var skeleton = skeletonInfo.skeleton; + var listener = skeletonInfo.listener; + var state = skeletonInfo.state; + var animation = skeleton.data.findAnimation(this._animationName); + state.setAnimationWith(0, animation, false); + this.bind(listener); + skeletonInfo.curAnimationCache = this; + this._frameIdx = -1; + this.isCompleted = false; + this.totalTime = 0; + this._invalid = false; + }, + end: function end() { + if (!this._needToUpdate()) { + this._skeletonInfo.curAnimationCache = null; + this.frames.length = this._frameIdx + 1; + this.isCompleted = true; + this.unbind(this._skeletonInfo.listener); + } + }, + _needToUpdate: function _needToUpdate(toFrameIdx) { + return !this.isCompleted && this.totalTime < MaxCacheTime && (void 0 == toFrameIdx || this._frameIdx < toFrameIdx); + }, + updateToFrame: function updateToFrame(toFrameIdx) { + if (!this._inited) return; + this.begin(); + if (!this._needToUpdate(toFrameIdx)) return; + var skeletonInfo = this._skeletonInfo; + var skeleton = skeletonInfo.skeleton; + var clipper = skeletonInfo.clipper; + var state = skeletonInfo.state; + do { + skeleton.update(FrameTime); + state.update(FrameTime); + state.apply(skeleton); + skeleton.updateWorldTransform(); + this._frameIdx++; + this._updateFrame(skeleton, clipper, this._frameIdx); + this.totalTime += FrameTime; + } while (this._needToUpdate(toFrameIdx)); + this.end(); + }, + isInited: function isInited() { + return this._inited; + }, + isInvalid: function isInvalid() { + return this._invalid; + }, + invalidAllFrame: function invalidAllFrame() { + this.isCompleted = false; + this._invalid = true; + }, + updateAllFrame: function updateAllFrame() { + this.invalidAllFrame(); + this.updateToFrame(); + }, + enableCacheAttachedInfo: function enableCacheAttachedInfo() { + if (!this._enableCacheAttachedInfo) { + this._enableCacheAttachedInfo = true; + this.invalidAllFrame(); + } + }, + _updateFrame: function _updateFrame(skeleton, clipper, index) { + _vfOffset = 0; + _boneInfoOffset = 0; + _indexOffset = 0; + _vertexOffset = 0; + _preTexUrl = null; + _preBlendMode = null; + _segVCount = 0; + _segICount = 0; + _segOffset = 0; + _colorOffset = 0; + _preFinalColor = null; + _preDarkColor = null; + this.frames[index] = this.frames[index] || { + segments: [], + colors: [], + boneInfos: [], + vertices: null, + uintVert: null, + indices: null + }; + var frame = this.frames[index]; + var segments = this._tempSegments = frame.segments; + var colors = this._tempColors = frame.colors; + var boneInfos = this._tempBoneInfos = frame.boneInfos; + this._traverseSkeleton(skeleton, clipper); + _colorOffset > 0 && (colors[_colorOffset - 1].vfOffset = _vfOffset); + colors.length = _colorOffset; + boneInfos.length = _boneInfoOffset; + var preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) if (_segICount > 0) { + var preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vfCount = _segVCount * _perVertexSize; + preSegInfo.vertexCount = _segVCount; + segments.length = _segOffset; + } else segments.length = _segOffset - 1; + if (0 == segments.length) return; + var vertices = frame.vertices; + var uintVert = frame.uintVert; + if (!vertices || vertices.length < _vfOffset) { + vertices = frame.vertices = new Float32Array(_vfOffset); + uintVert = frame.uintVert = new Uint32Array(vertices.buffer); + } + for (var i = 0, j = 0; i < _vfOffset;) { + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + vertices[i++] = _vertices[j++]; + uintVert[i++] = _vertices[j++]; + uintVert[i++] = _vertices[j++]; + } + var indices = frame.indices; + (!indices || indices.length < _indexOffset) && (indices = frame.indices = new Uint16Array(_indexOffset)); + for (var _i = 0; _i < _indexOffset; _i++) indices[_i] = _indices[_i]; + frame.vertices = vertices; + frame.uintVert = uintVert; + frame.indices = indices; + }, + fillVertices: function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) { + _tempa = slotColor.a * attachmentColor.a * skeletonColor.a * 255; + _tempr = attachmentColor.r * skeletonColor.r * 255; + _tempg = attachmentColor.g * skeletonColor.g * 255; + _tempb = attachmentColor.b * skeletonColor.b * 255; + _finalColor.r = _tempr * slotColor.r; + _finalColor.g = _tempg * slotColor.g; + _finalColor.b = _tempb * slotColor.b; + _finalColor.a = _tempa; + if (null == slot.darkColor) _darkColor.set(0, 0, 0, 1); else { + _darkColor.r = slot.darkColor.r * _tempr; + _darkColor.g = slot.darkColor.g * _tempg; + _darkColor.b = slot.darkColor.b * _tempb; + } + _darkColor.a = 0; + _finalColor32 = (_finalColor.a << 24 >>> 0) + (_finalColor.b << 16) + (_finalColor.g << 8) + _finalColor.r; + _darkColor32 = (_darkColor.a << 24 >>> 0) + (_darkColor.b << 16) + (_darkColor.g << 8) + _darkColor.r; + if (_preFinalColor !== _finalColor32 || _preDarkColor !== _darkColor32) { + var colors = this._tempColors; + _preFinalColor = _finalColor32; + _preDarkColor = _darkColor32; + _colorOffset > 0 && (colors[_colorOffset - 1].vfOffset = _vfOffset); + colors[_colorOffset++] = { + fr: _finalColor.r, + fg: _finalColor.g, + fb: _finalColor.b, + fa: _finalColor.a, + dr: _darkColor.r, + dg: _darkColor.g, + db: _darkColor.b, + da: _darkColor.a, + vfOffset: 0 + }; + } + if (clipper.isClipping()) { + clipper.clipTriangles(_vertices, _vfCount, _indices, _indexCount, _vertices, _finalColor, _darkColor, true, _perVertexSize, _indexOffset, _vfOffset, _vfOffset + 2); + var clippedVertices = clipper.clippedVertices; + var clippedTriangles = clipper.clippedTriangles; + _indexCount = clippedTriangles.length; + _vfCount = clippedVertices.length / _perClipVertexSize * _perVertexSize; + for (var ii = 0, jj = _indexOffset, nn = clippedTriangles.length; ii < nn;) _indices[jj++] = clippedTriangles[ii++]; + for (var _v = 0, _n = clippedVertices.length, offset = _vfOffset; _v < _n; _v += 12, + offset += _perVertexSize) { + _vertices[offset] = clippedVertices[_v]; + _vertices[offset + 1] = clippedVertices[_v + 1]; + _vertices[offset + 2] = clippedVertices[_v + 6]; + _vertices[offset + 3] = clippedVertices[_v + 7]; + _vertices[offset + 4] = _finalColor32; + _vertices[offset + 5] = _darkColor32; + } + } else for (var v = _vfOffset, n = _vfOffset + _vfCount; v < n; v += _perVertexSize) { + _vertices[v + 4] = _finalColor32; + _vertices[v + 5] = _darkColor32; + } + }, + _traverseSkeleton: function _traverseSkeleton(skeleton, clipper) { + var segments = this._tempSegments; + var boneInfos = this._tempBoneInfos; + var skeletonColor = skeleton.color; + var attachment, attachmentColor, slotColor, uvs, triangles; + var isRegion, isMesh, isClip; + var texture; + var preSegOffset, preSegInfo; + var blendMode; + var slot; + var bones = skeleton.bones; + if (this._enableCacheAttachedInfo) for (var i = 0, l = bones.length; i < l; i++, + _boneInfoOffset++) { + var bone = bones[i]; + var boneInfo = boneInfos[_boneInfoOffset]; + boneInfo || (boneInfo = boneInfos[_boneInfoOffset] = {}); + boneInfo.a = bone.a; + boneInfo.b = bone.b; + boneInfo.c = bone.c; + boneInfo.d = bone.d; + boneInfo.worldX = bone.worldX; + boneInfo.worldY = bone.worldY; + } + for (var slotIdx = 0, slotCount = skeleton.drawOrder.length; slotIdx < slotCount; slotIdx++) { + slot = skeleton.drawOrder[slotIdx]; + _vfCount = 0; + _indexCount = 0; + attachment = slot.getAttachment(); + if (!attachment) { + clipper.clipEndWithSlot(slot); + continue; + } + isRegion = attachment instanceof spine.RegionAttachment; + isMesh = attachment instanceof spine.MeshAttachment; + isClip = attachment instanceof spine.ClippingAttachment; + if (isClip) { + clipper.clipStart(slot, attachment); + continue; + } + if (!isRegion && !isMesh) { + clipper.clipEndWithSlot(slot); + continue; + } + texture = attachment.region.texture._texture; + if (!texture) { + clipper.clipEndWithSlot(slot); + continue; + } + blendMode = slot.data.blendMode; + if (_preTexUrl !== texture.nativeUrl || _preBlendMode !== blendMode) { + _preTexUrl = texture.nativeUrl; + _preBlendMode = blendMode; + preSegOffset = _segOffset - 1; + if (preSegOffset >= 0) if (_segICount > 0) { + preSegInfo = segments[preSegOffset]; + preSegInfo.indexCount = _segICount; + preSegInfo.vertexCount = _segVCount; + preSegInfo.vfCount = _segVCount * _perVertexSize; + } else _segOffset--; + segments[_segOffset] = { + tex: texture, + blendMode: blendMode, + indexCount: 0, + vertexCount: 0, + vfCount: 0 + }; + _segOffset++; + _segICount = 0; + _segVCount = 0; + } + if (isRegion) { + triangles = _quadTriangles; + _vfCount = 4 * _perVertexSize; + _indexCount = 6; + attachment.computeWorldVertices(slot.bone, _vertices, _vfOffset, _perVertexSize); + } else if (isMesh) { + triangles = attachment.triangles; + _vfCount = (attachment.worldVerticesLength >> 1) * _perVertexSize; + _indexCount = triangles.length; + attachment.computeWorldVertices(slot, 0, attachment.worldVerticesLength, _vertices, _vfOffset, _perVertexSize); + } + if (0 == _vfCount || 0 == _indexCount) { + clipper.clipEndWithSlot(slot); + continue; + } + for (var ii = 0, jj = _indexOffset, nn = triangles.length; ii < nn;) _indices[jj++] = triangles[ii++]; + uvs = attachment.uvs; + for (var v = _vfOffset, n = _vfOffset + _vfCount, u = 0; v < n; v += _perVertexSize, + u += 2) { + _vertices[v + 2] = uvs[u]; + _vertices[v + 3] = uvs[u + 1]; + } + attachmentColor = attachment.color; + slotColor = slot.color; + this.fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot); + if (_indexCount > 0) { + for (var _ii = _indexOffset, _nn = _indexOffset + _indexCount; _ii < _nn; _ii++) _indices[_ii] += _segVCount; + _indexOffset += _indexCount; + _vfOffset += _vfCount; + _vertexOffset = _vfOffset / _perVertexSize; + _segICount += _indexCount; + _segVCount += _vfCount / _perVertexSize; + } + clipper.clipEndWithSlot(slot); + } + clipper.clipEnd(); + } + }); + var SkeletonCache = cc.Class({ + ctor: function ctor() { + this._privateMode = false; + this._animationPool = {}; + this._skeletonCache = {}; + }, + enablePrivateMode: function enablePrivateMode() { + this._privateMode = true; + }, + clear: function clear() { + this._animationPool = {}; + this._skeletonCache = {}; + }, + removeSkeleton: function removeSkeleton(uuid) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) return; + var animationsCache = skeletonInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + if (!animationCache) continue; + this._animationPool[uuid + "#" + aniKey] = animationCache; + animationCache.clear(); + } + delete this._skeletonCache[uuid]; + }, + getSkeletonCache: function getSkeletonCache(uuid, skeletonData) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) { + var skeleton = new spine.Skeleton(skeletonData); + var clipper = new spine.SkeletonClipping(); + var stateData = new spine.AnimationStateData(skeleton.data); + var state = new spine.AnimationState(stateData); + var listener = new TrackEntryListeners(); + state.addListener(listener); + this._skeletonCache[uuid] = skeletonInfo = { + skeleton: skeleton, + clipper: clipper, + state: state, + listener: listener, + animationsCache: {}, + curAnimationCache: null + }; + } + return skeletonInfo; + }, + getAnimationCache: function getAnimationCache(uuid, animationName) { + var skeletonInfo = this._skeletonCache[uuid]; + if (!skeletonInfo) return null; + var animationsCache = skeletonInfo.animationsCache; + return animationsCache[animationName]; + }, + invalidAnimationCache: function invalidAnimationCache(uuid) { + var skeletonInfo = this._skeletonCache[uuid]; + var skeleton = skeletonInfo && skeletonInfo.skeleton; + if (!skeleton) return; + var animationsCache = skeletonInfo.animationsCache; + for (var aniKey in animationsCache) { + var animationCache = animationsCache[aniKey]; + animationCache.invalidAllFrame(); + } + }, + initAnimationCache: function initAnimationCache(uuid, animationName) { + if (!animationName) return null; + var skeletonInfo = this._skeletonCache[uuid]; + var skeleton = skeletonInfo && skeletonInfo.skeleton; + if (!skeleton) return null; + var animation = skeleton.data.findAnimation(animationName); + if (!animation) return null; + var animationsCache = skeletonInfo.animationsCache; + var animationCache = animationsCache[animationName]; + if (!animationCache) { + var poolKey = uuid + "#" + animationName; + animationCache = this._animationPool[poolKey]; + if (animationCache) delete this._animationPool[poolKey]; else { + animationCache = new AnimationCache(); + animationCache._privateMode = this._privateMode; + } + animationCache.init(skeletonInfo, animationName); + animationsCache[animationName] = animationCache; + } + return animationCache; + }, + updateAnimationCache: function updateAnimationCache(uuid, animationName) { + if (animationName) { + var animationCache = this.initAnimationCache(uuid, animationName); + if (!animationCache) return null; + animationCache.updateAllFrame(); + } else { + var skeletonInfo = this._skeletonCache[uuid]; + var skeleton = skeletonInfo && skeletonInfo.skeleton; + if (!skeleton) return; + var animationsCache = skeletonInfo.animationsCache; + for (var aniKey in animationsCache) { + var _animationCache = animationsCache[aniKey]; + _animationCache.updateAllFrame(); + } + } + } + }); + SkeletonCache.FrameTime = FrameTime; + SkeletonCache.sharedCache = new SkeletonCache(); + module.exports = SkeletonCache; + }), { + "./lib/spine": 428, + "./track-entry-listeners": 433 + }], + 430: [(function (require, module, exports) { + "use strict"; + var SkeletonCache = (true, require("./skeleton-cache").sharedCache); + var SkeletonData = cc.Class({ + name: "sp.SkeletonData", + extends: cc.Asset, + ctor: function ctor() { + this.reset(); + }, + properties: { + _skeletonJson: null, + skeletonJsonStr: { + get: function get() { + return this._skeletonJson ? JSON.stringify(this._skeletonJson) : ""; + } + }, + skeletonJson: { + get: function get() { + return this._skeletonJson; + }, + set: function set(value) { + this.reset(); + this._skeletonJson = "string" == typeof value ? JSON.parse(value) : value; + !this._uuid && value.skeleton && (this._uuid = value.skeleton.hash); + } + }, + _atlasText: "", + atlasText: { + get: function get() { + return this._atlasText; + }, + set: function set(value) { + this._atlasText = value; + this.reset(); + } + }, + textures: { + default: [], + type: [cc.Texture2D] + }, + textureNames: { + default: [], + type: [cc.String] + }, + scale: 1, + _nativeAsset: { + get: function get() { + return this._buffer; + }, + set: function set(bin) { + this._buffer = bin.buffer || bin; + this.reset(); + }, + override: true + } + }, + statics: { + preventDeferredLoadDependents: true + }, + createNode: false, + reset: function reset() { + this._skeletonCache = null; + this._atlasCache = null; + false; + }, + ensureTexturesLoaded: function ensureTexturesLoaded(loaded, caller) { + var textures = this.textures; + var texsLen = textures.length; + if (0 == texsLen) { + loaded.call(caller, false); + return; + } + var loadedCount = 0; + var loadedItem = function loadedItem() { + loadedCount++; + if (loadedCount >= texsLen) { + loaded && loaded.call(caller, true); + loaded = null; + } + }; + for (var i = 0; i < texsLen; i++) { + var tex = textures[i]; + tex.loaded ? loadedItem() : tex.once("load", loadedItem); + } + }, + isTexturesLoaded: function isTexturesLoaded() { + var textures = this.textures; + var texsLen = textures.length; + for (var i = 0; i < texsLen; i++) { + var tex = textures[i]; + if (!tex.loaded) return false; + } + return true; + }, + getRuntimeData: function getRuntimeData(quiet) { + if (this._skeletonCache) return this._skeletonCache; + if (!(this.textures && this.textures.length > 0) && this.textureNames && this.textureNames.length > 0) { + quiet || cc.errorID(7507, this.name); + return null; + } + var atlas = this._getAtlas(quiet); + if (!atlas) return null; + var attachmentLoader = new sp.spine.AtlasAttachmentLoader(atlas); + var resData = null; + var reader = null; + if (this.skeletonJson) { + reader = new sp.spine.SkeletonJson(attachmentLoader); + resData = this.skeletonJson; + } else { + reader = new sp.spine.SkeletonBinary(attachmentLoader); + resData = new Uint8Array(this._nativeAsset); + } + reader.scale = this.scale; + this._skeletonCache = reader.readSkeletonData(resData); + atlas.dispose(); + return this._skeletonCache; + }, + getSkinsEnum: false, + getAnimsEnum: false, + _getTexture: function _getTexture(line) { + var names = this.textureNames; + for (var i = 0; i < names.length; i++) if (names[i] === line) { + var texture = this.textures[i]; + var tex = new sp.SkeletonTexture({ + width: texture.width, + height: texture.height + }); + tex.setRealTexture(texture); + return tex; + } + cc.errorID(7506, line); + return null; + }, + _getAtlas: function _getAtlas(quiet) { + if (this._atlasCache) return this._atlasCache; + if (!this.atlasText) { + quiet || cc.errorID(7508, this.name); + return null; + } + return this._atlasCache = new sp.spine.TextureAtlas(this.atlasText, this._getTexture.bind(this)); + }, + destroy: function destroy() { + SkeletonCache.removeSkeleton(this._uuid); + this._super(); + } + }); + sp.SkeletonData = module.exports = SkeletonData; + }), { + "./skeleton-cache": 429 + }], + 431: [(function (require, module, exports) { + "use strict"; + sp.SkeletonTexture = cc.Class({ + name: "sp.SkeletonTexture", + extends: sp.spine.Texture, + _texture: null, + _material: null, + setRealTexture: function setRealTexture(tex) { + this._texture = tex; + }, + getRealTexture: function getRealTexture() { + return this._texture; + }, + setFilters: function setFilters(minFilter, magFilter) { + this._texture && this._texture.setFilters(minFilter, magFilter); + }, + setWraps: function setWraps(uWrap, vWrap) { + this._texture && this._texture.setWrapMode(uWrap, vWrap); + }, + dispose: function dispose() { } + }); + }), {}], + 432: [(function (require, module, exports) { + "use strict"; + exports.__esModule = true; + exports["default"] = void 0; + var _assembler = _interopRequireDefault(require("../../cocos2d/core/renderer/assembler")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + var Skeleton = require("./Skeleton"); + var spine = require("./lib/spine"); + var RenderFlow = require("../../cocos2d/core/renderer/render-flow"); + var VertexFormat = require("../../cocos2d/core/renderer/webgl/vertex-format"); + var VFOneColor = VertexFormat.vfmtPosUvColor; + var VFTwoColor = VertexFormat.vfmtPosUvTwoColor; + var gfx = cc.gfx; + var FLAG_BATCH = 16; + var FLAG_TWO_COLOR = 1; + var _handleVal = 0; + var _quadTriangles = [0, 1, 2, 2, 3, 0]; + var _slotColor = cc.color(0, 0, 255, 255); + var _boneColor = cc.color(255, 0, 0, 255); + var _originColor = cc.color(0, 255, 0, 255); + var _meshColor = cc.color(255, 255, 0, 255); + var _finalColor = null; + var _darkColor = null; + var _tempPos = null, _tempUv = null; + true; + _finalColor = new spine.Color(1, 1, 1, 1); + _darkColor = new spine.Color(1, 1, 1, 1); + _tempPos = new spine.Vector2(); + _tempUv = new spine.Vector2(); + var _premultipliedAlpha; + var _multiplier; + var _slotRangeStart; + var _slotRangeEnd; + var _useTint; + var _debugSlots; + var _debugBones; + var _debugMesh; + var _nodeR, _nodeG, _nodeB, _nodeA; + var _finalColor32, _darkColor32; + var _vertexFormat; + var _perVertexSize; + var _perClipVertexSize; + var _vertexFloatCount = 0, _vertexCount = 0, _vertexFloatOffset = 0, _vertexOffset = 0, _indexCount = 0, _indexOffset = 0, _vfOffset = 0; + var _tempr, _tempg, _tempb; + var _inRange; + var _mustFlush; + var _x, _y, _m00, _m04, _m12, _m01, _m05, _m13; + var _r, _g, _b, _fr, _fg, _fb, _fa, _dr, _dg, _db, _da; + var _comp, _buffer, _renderer, _node, _needColor, _vertexEffect; + function _getSlotMaterial(tex, blendMode) { + var src, dst; + switch (blendMode) { + case spine.BlendMode.Additive: + src = _premultipliedAlpha ? cc.macro.ONE : cc.macro.SRC_ALPHA; + dst = cc.macro.ONE; + break; + + case spine.BlendMode.Multiply: + src = cc.macro.DST_COLOR; + dst = cc.macro.ONE_MINUS_SRC_ALPHA; + break; + + case spine.BlendMode.Screen: + src = cc.macro.ONE; + dst = cc.macro.ONE_MINUS_SRC_COLOR; + break; + + case spine.BlendMode.Normal: + default: + src = _premultipliedAlpha ? cc.macro.ONE : cc.macro.SRC_ALPHA; + dst = cc.macro.ONE_MINUS_SRC_ALPHA; + } + var useModel = !_comp.enableBatch; + var baseMaterial = _comp._materials[0]; + if (!baseMaterial) return null; + var key = tex.getId() + src + dst + _useTint + useModel; + var materialCache = _comp._materialCache; + var material = materialCache[key]; + if (!material) { + if (materialCache.baseMaterial) material = cc.MaterialVariant.create(baseMaterial); else { + material = baseMaterial; + materialCache.baseMaterial = baseMaterial; + } + material.define("CC_USE_MODEL", useModel); + material.define("USE_TINT", _useTint); + material.setProperty("texture", tex); + material.setBlend(true, gfx.BLEND_FUNC_ADD, src, dst, gfx.BLEND_FUNC_ADD, src, dst); + materialCache[key] = material; + } + return material; + } + function _handleColor(color) { + _fa = color.fa * _nodeA; + _multiplier = _premultipliedAlpha ? _fa / 255 : 1; + _r = _nodeR * _multiplier; + _g = _nodeG * _multiplier; + _b = _nodeB * _multiplier; + _fr = color.fr * _r; + _fg = color.fg * _g; + _fb = color.fb * _b; + _finalColor32 = (_fa << 24 >>> 0) + (_fb << 16) + (_fg << 8) + _fr; + _dr = color.dr * _r; + _dg = color.dg * _g; + _db = color.db * _b; + _da = _premultipliedAlpha ? 255 : 0; + _darkColor32 = (_da << 24 >>> 0) + (_db << 16) + (_dg << 8) + _dr; + } + function _spineColorToInt32(spineColor) { + return (spineColor.a << 24 >>> 0) + (spineColor.b << 16) + (spineColor.g << 8) + spineColor.r; + } + var SpineAssembler = (function (_Assembler) { + _inheritsLoose(SpineAssembler, _Assembler); + function SpineAssembler() { + return _Assembler.apply(this, arguments) || this; + } + var _proto = SpineAssembler.prototype; + _proto.updateRenderData = function updateRenderData(comp) { + if (comp.isAnimationCached()) return; + var skeleton = comp._skeleton; + skeleton && skeleton.updateWorldTransform(); + }; + _proto.fillVertices = function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) { + var vbuf = _buffer._vData, ibuf = _buffer._iData, uintVData = _buffer._uintVData; + var offsetInfo; + _finalColor.a = slotColor.a * attachmentColor.a * skeletonColor.a * _nodeA * 255; + _multiplier = _premultipliedAlpha ? _finalColor.a : 255; + _tempr = _nodeR * attachmentColor.r * skeletonColor.r * _multiplier; + _tempg = _nodeG * attachmentColor.g * skeletonColor.g * _multiplier; + _tempb = _nodeB * attachmentColor.b * skeletonColor.b * _multiplier; + _finalColor.r = _tempr * slotColor.r; + _finalColor.g = _tempg * slotColor.g; + _finalColor.b = _tempb * slotColor.b; + if (null == slot.darkColor) _darkColor.set(0, 0, 0, 1); else { + _darkColor.r = slot.darkColor.r * _tempr; + _darkColor.g = slot.darkColor.g * _tempg; + _darkColor.b = slot.darkColor.b * _tempb; + } + _darkColor.a = _premultipliedAlpha ? 255 : 0; + if (clipper.isClipping()) { + var uvs = vbuf.subarray(_vertexFloatOffset + 2); + clipper.clipTriangles(vbuf.subarray(_vertexFloatOffset), _vertexFloatCount, ibuf.subarray(_indexOffset), _indexCount, uvs, _finalColor, _darkColor, _useTint, _perVertexSize); + var clippedVertices = new Float32Array(clipper.clippedVertices); + var clippedTriangles = clipper.clippedTriangles; + _indexCount = clippedTriangles.length; + _vertexFloatCount = clippedVertices.length / _perClipVertexSize * _perVertexSize; + offsetInfo = _buffer.request(_vertexFloatCount / _perVertexSize, _indexCount); + _indexOffset = offsetInfo.indiceOffset, _vertexOffset = offsetInfo.vertexOffset, + _vertexFloatOffset = offsetInfo.byteOffset >> 2; + vbuf = _buffer._vData, ibuf = _buffer._iData; + uintVData = _buffer._uintVData; + ibuf.set(clippedTriangles, _indexOffset); + if (_vertexEffect) for (var _v2 = 0, _n2 = clippedVertices.length, offset = _vertexFloatOffset; _v2 < _n2; _v2 += _perClipVertexSize, + offset += _perVertexSize) { + _tempPos.x = clippedVertices[_v2]; + _tempPos.y = clippedVertices[_v2 + 1]; + _finalColor.set(clippedVertices[_v2 + 2], clippedVertices[_v2 + 3], clippedVertices[_v2 + 4], clippedVertices[_v2 + 5]); + _tempUv.x = clippedVertices[_v2 + 6]; + _tempUv.y = clippedVertices[_v2 + 7]; + _useTint ? _darkColor.set(clippedVertices[_v2 + 8], clippedVertices[_v2 + 9], clippedVertices[_v2 + 10], clippedVertices[_v2 + 11]) : _darkColor.set(0, 0, 0, 0); + _vertexEffect.transform(_tempPos, _tempUv, _finalColor, _darkColor); + vbuf[offset] = _tempPos.x; + vbuf[offset + 1] = _tempPos.y; + vbuf[offset + 2] = _tempUv.x; + vbuf[offset + 3] = _tempUv.y; + uintVData[offset + 4] = _spineColorToInt32(_finalColor); + _useTint && (uintVData[offset + 5] = _spineColorToInt32(_darkColor)); + } else for (var _v3 = 0, _n3 = clippedVertices.length, _offset = _vertexFloatOffset; _v3 < _n3; _v3 += _perClipVertexSize, + _offset += _perVertexSize) { + vbuf[_offset] = clippedVertices[_v3]; + vbuf[_offset + 1] = clippedVertices[_v3 + 1]; + vbuf[_offset + 2] = clippedVertices[_v3 + 6]; + vbuf[_offset + 3] = clippedVertices[_v3 + 7]; + _finalColor32 = (clippedVertices[_v3 + 5] << 24 >>> 0) + (clippedVertices[_v3 + 4] << 16) + (clippedVertices[_v3 + 3] << 8) + clippedVertices[_v3 + 2]; + uintVData[_offset + 4] = _finalColor32; + if (_useTint) { + _darkColor32 = (clippedVertices[_v3 + 11] << 24 >>> 0) + (clippedVertices[_v3 + 10] << 16) + (clippedVertices[_v3 + 9] << 8) + clippedVertices[_v3 + 8]; + uintVData[_offset + 5] = _darkColor32; + } + } + } else if (_vertexEffect) for (var v = _vertexFloatOffset, n = _vertexFloatOffset + _vertexFloatCount; v < n; v += _perVertexSize) { + _tempPos.x = vbuf[v]; + _tempPos.y = vbuf[v + 1]; + _tempUv.x = vbuf[v + 2]; + _tempUv.y = vbuf[v + 3]; + _vertexEffect.transform(_tempPos, _tempUv, _finalColor, _darkColor); + vbuf[v] = _tempPos.x; + vbuf[v + 1] = _tempPos.y; + vbuf[v + 2] = _tempUv.x; + vbuf[v + 3] = _tempUv.y; + uintVData[v + 4] = _spineColorToInt32(_finalColor); + _useTint && (uintVData[v + 5] = _spineColorToInt32(_darkColor)); + } else { + _finalColor32 = _spineColorToInt32(_finalColor); + _darkColor32 = _spineColorToInt32(_darkColor); + for (var _v = _vertexFloatOffset, _n = _vertexFloatOffset + _vertexFloatCount; _v < _n; _v += _perVertexSize) { + uintVData[_v + 4] = _finalColor32; + _useTint && (uintVData[_v + 5] = _darkColor32); + } + } + }; + _proto.realTimeTraverse = function realTimeTraverse(worldMat) { + var vbuf; + var ibuf; + var locSkeleton = _comp._skeleton; + var skeletonColor = locSkeleton.color; + var graphics = _comp._debugRenderer; + var clipper = _comp._clipper; + var material = null; + var attachment, attachmentColor, slotColor, uvs, triangles; + var isRegion, isMesh, isClip; + var offsetInfo; + var slot; + var worldMatm; + _slotRangeStart = _comp._startSlotIndex; + _slotRangeEnd = _comp._endSlotIndex; + _inRange = false; + -1 == _slotRangeStart && (_inRange = true); + _debugSlots = _comp.debugSlots; + _debugBones = _comp.debugBones; + _debugMesh = _comp.debugMesh; + if (graphics && (_debugBones || _debugSlots || _debugMesh)) { + graphics.clear(); + graphics.lineWidth = 2; + } + _perClipVertexSize = _useTint ? 12 : 8; + _vertexFloatCount = 0; + _vertexFloatOffset = 0; + _vertexOffset = 0; + _indexCount = 0; + _indexOffset = 0; + for (var slotIdx = 0, slotCount = locSkeleton.drawOrder.length; slotIdx < slotCount; slotIdx++) { + slot = locSkeleton.drawOrder[slotIdx]; + if (void 0 == slot) continue; + _slotRangeStart >= 0 && _slotRangeStart == slot.data.index && (_inRange = true); + if (!_inRange) { + clipper.clipEndWithSlot(slot); + continue; + } + _slotRangeEnd >= 0 && _slotRangeEnd == slot.data.index && (_inRange = false); + _vertexFloatCount = 0; + _indexCount = 0; + attachment = slot.getAttachment(); + if (!attachment) { + clipper.clipEndWithSlot(slot); + continue; + } + isRegion = attachment instanceof spine.RegionAttachment; + isMesh = attachment instanceof spine.MeshAttachment; + isClip = attachment instanceof spine.ClippingAttachment; + if (isClip) { + clipper.clipStart(slot, attachment); + continue; + } + if (!isRegion && !isMesh) { + clipper.clipEndWithSlot(slot); + continue; + } + material = _getSlotMaterial(attachment.region.texture._texture, slot.data.blendMode); + if (!material) { + clipper.clipEndWithSlot(slot); + continue; + } + if (_mustFlush || material.getHash() !== _renderer.material.getHash()) { + _mustFlush = false; + _renderer._flush(); + _renderer.node = _node; + _renderer.material = material; + } + if (isRegion) { + triangles = _quadTriangles; + _vertexFloatCount = 4 * _perVertexSize; + _indexCount = 6; + offsetInfo = _buffer.request(4, 6); + _indexOffset = offsetInfo.indiceOffset, _vertexOffset = offsetInfo.vertexOffset, + _vertexFloatOffset = offsetInfo.byteOffset >> 2; + vbuf = _buffer._vData, ibuf = _buffer._iData; + attachment.computeWorldVertices(slot.bone, vbuf, _vertexFloatOffset, _perVertexSize); + if (graphics && _debugSlots) { + graphics.strokeColor = _slotColor; + graphics.moveTo(vbuf[_vertexFloatOffset], vbuf[_vertexFloatOffset + 1]); + for (var ii = _vertexFloatOffset + _perVertexSize, nn = _vertexFloatOffset + _vertexFloatCount; ii < nn; ii += _perVertexSize) graphics.lineTo(vbuf[ii], vbuf[ii + 1]); + graphics.close(); + graphics.stroke(); + } + } else if (isMesh) { + triangles = attachment.triangles; + _vertexFloatCount = (attachment.worldVerticesLength >> 1) * _perVertexSize; + _indexCount = triangles.length; + offsetInfo = _buffer.request(_vertexFloatCount / _perVertexSize, _indexCount); + _indexOffset = offsetInfo.indiceOffset, _vertexOffset = offsetInfo.vertexOffset, + _vertexFloatOffset = offsetInfo.byteOffset >> 2; + vbuf = _buffer._vData, ibuf = _buffer._iData; + attachment.computeWorldVertices(slot, 0, attachment.worldVerticesLength, vbuf, _vertexFloatOffset, _perVertexSize); + if (graphics && _debugMesh) { + graphics.strokeColor = _meshColor; + for (var _ii = 0, _nn = triangles.length; _ii < _nn; _ii += 3) { + var v1 = triangles[_ii] * _perVertexSize + _vertexFloatOffset; + var v2 = triangles[_ii + 1] * _perVertexSize + _vertexFloatOffset; + var v3 = triangles[_ii + 2] * _perVertexSize + _vertexFloatOffset; + graphics.moveTo(vbuf[v1], vbuf[v1 + 1]); + graphics.lineTo(vbuf[v2], vbuf[v2 + 1]); + graphics.lineTo(vbuf[v3], vbuf[v3 + 1]); + graphics.close(); + graphics.stroke(); + } + } + } + if (0 == _vertexFloatCount || 0 == _indexCount) { + clipper.clipEndWithSlot(slot); + continue; + } + ibuf.set(triangles, _indexOffset); + uvs = attachment.uvs; + for (var v = _vertexFloatOffset, n = _vertexFloatOffset + _vertexFloatCount, u = 0; v < n; v += _perVertexSize, + u += 2) { + vbuf[v + 2] = uvs[u]; + vbuf[v + 3] = uvs[u + 1]; + } + attachmentColor = attachment.color, slotColor = slot.color; + this.fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot); + vbuf = _buffer._vData, ibuf = _buffer._iData; + if (_indexCount > 0) { + for (var _ii2 = _indexOffset, _nn2 = _indexOffset + _indexCount; _ii2 < _nn2; _ii2++) ibuf[_ii2] += _vertexOffset; + if (worldMat) { + worldMatm = worldMat.m; + _m00 = worldMatm[0]; + _m04 = worldMatm[4]; + _m12 = worldMatm[12]; + _m01 = worldMatm[1]; + _m05 = worldMatm[5]; + _m13 = worldMatm[13]; + for (var _ii3 = _vertexFloatOffset, _nn3 = _vertexFloatOffset + _vertexFloatCount; _ii3 < _nn3; _ii3 += _perVertexSize) { + _x = vbuf[_ii3]; + _y = vbuf[_ii3 + 1]; + vbuf[_ii3] = _x * _m00 + _y * _m04 + _m12; + vbuf[_ii3 + 1] = _x * _m01 + _y * _m05 + _m13; + } + } + _buffer.adjust(_vertexFloatCount / _perVertexSize, _indexCount); + } + clipper.clipEndWithSlot(slot); + } + clipper.clipEnd(); + if (graphics && _debugBones) { + var bone; + graphics.strokeColor = _boneColor; + graphics.fillColor = _slotColor; + for (var i = 0, _n4 = locSkeleton.bones.length; i < _n4; i++) { + bone = locSkeleton.bones[i]; + var x = bone.data.length * bone.a + bone.worldX; + var y = bone.data.length * bone.c + bone.worldY; + graphics.moveTo(bone.worldX, bone.worldY); + graphics.lineTo(x, y); + graphics.stroke(); + graphics.circle(bone.worldX, bone.worldY, 1.5 * Math.PI); + graphics.fill(); + 0 === i && (graphics.fillColor = _originColor); + } + } + }; + _proto.cacheTraverse = function cacheTraverse(worldMat) { + var frame = _comp._curFrame; + if (!frame) return; + var segments = frame.segments; + if (0 == segments.length) return; + var vbuf, ibuf, uintbuf; + var material; + var offsetInfo; + var vertices = frame.vertices; + var indices = frame.indices; + var worldMatm; + var frameVFOffset = 0, frameIndexOffset = 0, segVFCount = 0; + if (worldMat) { + worldMatm = worldMat.m; + _m00 = worldMatm[0]; + _m01 = worldMatm[1]; + _m04 = worldMatm[4]; + _m05 = worldMatm[5]; + _m12 = worldMatm[12]; + _m13 = worldMatm[13]; + } + var justTranslate = 1 === _m00 && 0 === _m01 && 0 === _m04 && 1 === _m05; + var needBatch = _handleVal & FLAG_BATCH; + var calcTranslate = needBatch && justTranslate; + var colorOffset = 0; + var colors = frame.colors; + var nowColor = colors[colorOffset++]; + var maxVFOffset = nowColor.vfOffset; + _handleColor(nowColor); + for (var i = 0, n = segments.length; i < n; i++) { + var segInfo = segments[i]; + material = _getSlotMaterial(segInfo.tex, segInfo.blendMode); + if (!material) continue; + if (_mustFlush || material.getHash() !== _renderer.material.getHash()) { + _mustFlush = false; + _renderer._flush(); + _renderer.node = _node; + _renderer.material = material; + } + _vertexCount = segInfo.vertexCount; + _indexCount = segInfo.indexCount; + offsetInfo = _buffer.request(_vertexCount, _indexCount); + _indexOffset = offsetInfo.indiceOffset; + _vertexOffset = offsetInfo.vertexOffset; + _vfOffset = offsetInfo.byteOffset >> 2; + vbuf = _buffer._vData; + ibuf = _buffer._iData; + uintbuf = _buffer._uintVData; + for (var ii = _indexOffset, il = _indexOffset + _indexCount; ii < il; ii++) ibuf[ii] = _vertexOffset + indices[frameIndexOffset++]; + segVFCount = segInfo.vfCount; + vbuf.set(vertices.subarray(frameVFOffset, frameVFOffset + segVFCount), _vfOffset); + frameVFOffset += segVFCount; + if (calcTranslate) for (var _ii4 = _vfOffset, _il = _vfOffset + segVFCount; _ii4 < _il; _ii4 += 6) { + vbuf[_ii4] += _m12; + vbuf[_ii4 + 1] += _m13; + } else if (needBatch) for (var _ii5 = _vfOffset, _il2 = _vfOffset + segVFCount; _ii5 < _il2; _ii5 += 6) { + _x = vbuf[_ii5]; + _y = vbuf[_ii5 + 1]; + vbuf[_ii5] = _x * _m00 + _y * _m04 + _m12; + vbuf[_ii5 + 1] = _x * _m01 + _y * _m05 + _m13; + } + _buffer.adjust(_vertexCount, _indexCount); + if (!_needColor) continue; + var frameColorOffset = frameVFOffset - segVFCount; + for (var _ii6 = _vfOffset + 4, _il3 = _vfOffset + 4 + segVFCount; _ii6 < _il3; _ii6 += 6, + frameColorOffset += 6) { + if (frameColorOffset >= maxVFOffset) { + nowColor = colors[colorOffset++]; + _handleColor(nowColor); + maxVFOffset = nowColor.vfOffset; + } + uintbuf[_ii6] = _finalColor32; + uintbuf[_ii6 + 1] = _darkColor32; + } + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + var node = comp.node; + node._renderFlag |= RenderFlow.FLAG_UPDATE_RENDER_DATA; + if (!comp._skeleton) return; + var nodeColor = node._color; + _nodeR = nodeColor.r / 255; + _nodeG = nodeColor.g / 255; + _nodeB = nodeColor.b / 255; + _nodeA = nodeColor.a / 255; + _useTint = comp.useTint || comp.isAnimationCached(); + _vertexFormat = _useTint ? VFTwoColor : VFOneColor; + _perVertexSize = _useTint ? 6 : 5; + _node = comp.node; + _buffer = renderer.getBuffer("spine", _vertexFormat); + _renderer = renderer; + _comp = comp; + _mustFlush = true; + _premultipliedAlpha = comp.premultipliedAlpha; + _multiplier = 1; + _handleVal = 0; + _needColor = false; + _vertexEffect = comp._effectDelegate && comp._effectDelegate._vertexEffect; + (4294967295 !== nodeColor._val || _premultipliedAlpha) && (_needColor = true); + _useTint && (_handleVal |= FLAG_TWO_COLOR); + var worldMat = void 0; + if (_comp.enableBatch) { + worldMat = _node._worldMatrix; + _mustFlush = false; + _handleVal |= FLAG_BATCH; + } + if (comp.isAnimationCached()) this.cacheTraverse(worldMat); else { + _vertexEffect && _vertexEffect.begin(comp._skeleton); + this.realTimeTraverse(worldMat); + _vertexEffect && _vertexEffect.end(); + } + renderer.worldMatDirty++; + comp.attachUtil._syncAttachedNode(); + _node = void 0; + _buffer = void 0; + _renderer = void 0; + _comp = void 0; + _vertexEffect = null; + }; + _proto.postFillBuffers = function postFillBuffers(comp, renderer) { + renderer.worldMatDirty--; + }; + return SpineAssembler; + })(_assembler["default"]); + exports["default"] = SpineAssembler; + _assembler["default"].register(Skeleton, SpineAssembler); + module.exports = exports["default"]; + }), { + "../../cocos2d/core/renderer/assembler": 268, + "../../cocos2d/core/renderer/render-flow": 272, + "../../cocos2d/core/renderer/webgl/vertex-format": 313, + "./Skeleton": 426, + "./lib/spine": 428 + }], + 433: [(function (require, module, exports) { + "use strict"; + var TrackEntryListeners = function TrackEntryListeners() { + this.start = null; + this.end = null; + this.complete = null; + this.event = null; + this.interrupt = null; + this.dispose = null; + }; + TrackEntryListeners.getListeners = function (entry) { + entry.listener || (entry.listener = new TrackEntryListeners()); + return entry.listener; + }; + module.exports = TrackEntryListeners; + }), {}], + 434: [(function (require, module, exports) { + "use strict"; + var spine = require("./lib/spine"); + sp.VertexEffectDelegate = cc.Class({ + name: "sp.VertexEffectDelegate", + ctor: function ctor() { + this._vertexEffect = null; + this._interpolation = null; + this._effectType = "none"; + }, + clear: function clear() { + this._vertexEffect = null; + this._interpolation = null; + this._effectType = "none"; + }, + initJitter: function initJitter(jitterX, jitterY) { + this._effectType = "jitter"; + this._vertexEffect = new spine.JitterEffect(jitterX, jitterY); + return this._vertexEffect; + }, + initSwirlWithPow: function initSwirlWithPow(radius, power) { + this._interpolation = new spine.Pow(power); + this._vertexEffect = new spine.SwirlEffect(radius, this._interpolation); + return this._vertexEffect; + }, + initSwirlWithPowOut: function initSwirlWithPowOut(radius, power) { + this._interpolation = new spine.PowOut(power); + this._vertexEffect = new spine.SwirlEffect(radius, this._interpolation); + return this._vertexEffect; + }, + getJitterVertexEffect: function getJitterVertexEffect() { + return this._vertexEffect; + }, + getSwirlVertexEffect: function getSwirlVertexEffect() { + return this._vertexEffect; + }, + getVertexEffect: function getVertexEffect() { + return this._vertexEffect; + }, + getEffectType: function getEffectType() { + return this._effectType; + } + }); + module.exports = sp.VertexEffectDelegate; + }), { + "./lib/spine": 428 + }], + 435: [(function (require, module, exports) { + "use strict"; + (function (global, factory) { + "object" === typeof exports && "undefined" !== typeof module ? factory(exports) : "function" === typeof define && define.amd ? define(["exports"], factory) : factory(global.box2d = {}); + })(void 0, (function (exports) { + function b2Assert(condition) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) args[_i - 1] = arguments[_i]; + if (!condition) throw new (Error.bind.apply(Error, [void 0].concat(args)))(); + } + function b2Maybe(value, def) { + return void 0 !== value ? value : def; + } + var b2_maxFloat = 1e37; + var b2_epsilon = 1e-5; + var b2_epsilon_sq = b2_epsilon * b2_epsilon; + var b2_pi = 3.14159265359; + var b2_maxManifoldPoints = 2; + var b2_maxPolygonVertices = 8; + var b2_aabbExtension = .1; + var b2_aabbMultiplier = 2; + var b2_linearSlop = .008; + var b2_angularSlop = 2 / 180 * b2_pi; + var b2_polygonRadius = 2 * b2_linearSlop; + var b2_maxSubSteps = 8; + var b2_maxTOIContacts = 32; + var b2_velocityThreshold = 1; + var b2_maxLinearCorrection = .2; + var b2_maxAngularCorrection = 8 / 180 * b2_pi; + var b2_maxTranslation = 2; + var b2_maxTranslationSquared = b2_maxTranslation * b2_maxTranslation; + var b2_maxRotation = .5 * b2_pi; + var b2_maxRotationSquared = b2_maxRotation * b2_maxRotation; + var b2_baumgarte = .2; + var b2_toiBaumgarte = .75; + var b2_invalidParticleIndex = -1; + var b2_maxParticleIndex = 2147483647; + var b2_particleStride = .75; + var b2_minParticleWeight = 1; + var b2_maxParticlePressure = .25; + var b2_maxParticleForce = .5; + var b2_maxTriadDistance = 2; + var b2_maxTriadDistanceSquared = b2_maxTriadDistance * b2_maxTriadDistance; + var b2_minParticleSystemBufferCapacity = 256; + var b2_barrierCollisionTime = 2.5; + var b2_timeToSleep = .5; + var b2_linearSleepTolerance = .01; + var b2_angularSleepTolerance = 2 / 180 * b2_pi; + function b2Alloc(size) { + return null; + } + function b2Free(mem) { } + function b2Log(message) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) args[_i - 1] = arguments[_i]; + } + var b2Version = (function () { + function b2Version(major, minor, revision) { + void 0 === major && (major = 0); + void 0 === minor && (minor = 0); + void 0 === revision && (revision = 0); + this.major = 0; + this.minor = 0; + this.revision = 0; + this.major = major; + this.minor = minor; + this.revision = revision; + } + b2Version.prototype.toString = function () { + return this.major + "." + this.minor + "." + this.revision; + }; + return b2Version; + })(); + var b2_version = new b2Version(2, 3, 2); + var b2_branch = "master"; + var b2_commit = "fbf51801d80fc389d43dc46524520e89043b6faf"; + function b2ParseInt(v) { + return parseInt(v, 10); + } + function b2ParseUInt(v) { + return Math.abs(parseInt(v, 10)); + } + function b2MakeArray(length, init) { + var a = []; + for (var i = 0; i < length; ++i) a.push(init(i)); + return a; + } + function b2MakeNullArray(length) { + var a = []; + for (var i = 0; i < length; ++i) a.push(null); + return a; + } + function b2MakeNumberArray(length, init) { + void 0 === init && (init = 0); + var a = []; + for (var i = 0; i < length; ++i) a.push(init); + return a; + } + var b2_pi_over_180 = b2_pi / 180; + var b2_180_over_pi = 180 / b2_pi; + var b2_two_pi = 2 * b2_pi; + var b2Abs = Math.abs; + var b2Min = Math.min; + var b2Max = Math.max; + function b2Clamp(a, lo, hi) { + return a < lo ? lo : a > hi ? hi : a; + } + function b2Swap(a, b) { + var tmp = a[0]; + a[0] = b[0]; + b[0] = tmp; + } + var b2IsValid = isFinite; + function b2Sq(n) { + return n * n; + } + function b2InvSqrt(n) { + return 1 / Math.sqrt(n); + } + var b2Sqrt = Math.sqrt; + var b2Pow = Math.pow; + function b2DegToRad(degrees) { + return degrees * b2_pi_over_180; + } + function b2RadToDeg(radians) { + return radians * b2_180_over_pi; + } + var b2Cos = Math.cos; + var b2Sin = Math.sin; + var b2Acos = Math.acos; + var b2Asin = Math.asin; + var b2Atan2 = Math.atan2; + function b2NextPowerOfTwo(x) { + x |= x >> 1 & 2147483647; + x |= x >> 2 & 1073741823; + x |= x >> 4 & 268435455; + x |= x >> 8 & 16777215; + x |= x >> 16 & 65535; + return x + 1; + } + function b2IsPowerOfTwo(x) { + return x > 0 && 0 === (x & x - 1); + } + function b2Random() { + return 2 * Math.random() - 1; + } + function b2RandomRange(lo, hi) { + return (hi - lo) * Math.random() + lo; + } + var b2Vec2 = (function () { + function b2Vec2(x, y) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + this.x = x; + this.y = y; + } + b2Vec2.prototype.Clone = function () { + return new b2Vec2(this.x, this.y); + }; + b2Vec2.prototype.SetZero = function () { + this.x = 0; + this.y = 0; + return this; + }; + b2Vec2.prototype.Set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + b2Vec2.prototype.Copy = function (other) { + this.x = other.x; + this.y = other.y; + return this; + }; + b2Vec2.prototype.SelfAdd = function (v) { + this.x += v.x; + this.y += v.y; + return this; + }; + b2Vec2.prototype.SelfAddXY = function (x, y) { + this.x += x; + this.y += y; + return this; + }; + b2Vec2.prototype.SelfSub = function (v) { + this.x -= v.x; + this.y -= v.y; + return this; + }; + b2Vec2.prototype.SelfSubXY = function (x, y) { + this.x -= x; + this.y -= y; + return this; + }; + b2Vec2.prototype.SelfMul = function (s) { + this.x *= s; + this.y *= s; + return this; + }; + b2Vec2.prototype.SelfMulAdd = function (s, v) { + this.x += s * v.x; + this.y += s * v.y; + return this; + }; + b2Vec2.prototype.SelfMulSub = function (s, v) { + this.x -= s * v.x; + this.y -= s * v.y; + return this; + }; + b2Vec2.prototype.Dot = function (v) { + return this.x * v.x + this.y * v.y; + }; + b2Vec2.prototype.Cross = function (v) { + return this.x * v.y - this.y * v.x; + }; + b2Vec2.prototype.Length = function () { + var x = this.x, y = this.y; + return Math.sqrt(x * x + y * y); + }; + b2Vec2.prototype.LengthSquared = function () { + var x = this.x, y = this.y; + return x * x + y * y; + }; + b2Vec2.prototype.Normalize = function () { + var length = this.Length(); + if (length >= b2_epsilon) { + var inv_length = 1 / length; + this.x *= inv_length; + this.y *= inv_length; + } + return length; + }; + b2Vec2.prototype.SelfNormalize = function () { + var length = this.Length(); + if (length >= b2_epsilon) { + var inv_length = 1 / length; + this.x *= inv_length; + this.y *= inv_length; + } + return this; + }; + b2Vec2.prototype.SelfRotate = function (radians) { + var c = Math.cos(radians); + var s = Math.sin(radians); + var x = this.x; + this.x = c * x - s * this.y; + this.y = s * x + c * this.y; + return this; + }; + b2Vec2.prototype.IsValid = function () { + return isFinite(this.x) && isFinite(this.y); + }; + b2Vec2.prototype.SelfCrossVS = function (s) { + var x = this.x; + this.x = s * this.y; + this.y = -s * x; + return this; + }; + b2Vec2.prototype.SelfCrossSV = function (s) { + var x = this.x; + this.x = -s * this.y; + this.y = s * x; + return this; + }; + b2Vec2.prototype.SelfMinV = function (v) { + this.x = b2Min(this.x, v.x); + this.y = b2Min(this.y, v.y); + return this; + }; + b2Vec2.prototype.SelfMaxV = function (v) { + this.x = b2Max(this.x, v.x); + this.y = b2Max(this.y, v.y); + return this; + }; + b2Vec2.prototype.SelfAbs = function () { + this.x = b2Abs(this.x); + this.y = b2Abs(this.y); + return this; + }; + b2Vec2.prototype.SelfNeg = function () { + this.x = -this.x; + this.y = -this.y; + return this; + }; + b2Vec2.prototype.SelfSkew = function () { + var x = this.x; + this.x = -this.y; + this.y = x; + return this; + }; + b2Vec2.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2Vec2(); + })); + }; + b2Vec2.AbsV = function (v, out) { + out.x = b2Abs(v.x); + out.y = b2Abs(v.y); + return out; + }; + b2Vec2.MinV = function (a, b, out) { + out.x = b2Min(a.x, b.x); + out.y = b2Min(a.y, b.y); + return out; + }; + b2Vec2.MaxV = function (a, b, out) { + out.x = b2Max(a.x, b.x); + out.y = b2Max(a.y, b.y); + return out; + }; + b2Vec2.ClampV = function (v, lo, hi, out) { + out.x = b2Clamp(v.x, lo.x, hi.x); + out.y = b2Clamp(v.y, lo.y, hi.y); + return out; + }; + b2Vec2.RotateV = function (v, radians, out) { + var v_x = v.x, v_y = v.y; + var c = Math.cos(radians); + var s = Math.sin(radians); + out.x = c * v_x - s * v_y; + out.y = s * v_x + c * v_y; + return out; + }; + b2Vec2.DotVV = function (a, b) { + return a.x * b.x + a.y * b.y; + }; + b2Vec2.CrossVV = function (a, b) { + return a.x * b.y - a.y * b.x; + }; + b2Vec2.CrossVS = function (v, s, out) { + var v_x = v.x; + out.x = s * v.y; + out.y = -s * v_x; + return out; + }; + b2Vec2.CrossVOne = function (v, out) { + var v_x = v.x; + out.x = v.y; + out.y = -v_x; + return out; + }; + b2Vec2.CrossSV = function (s, v, out) { + var v_x = v.x; + out.x = -s * v.y; + out.y = s * v_x; + return out; + }; + b2Vec2.CrossOneV = function (v, out) { + var v_x = v.x; + out.x = -v.y; + out.y = v_x; + return out; + }; + b2Vec2.AddVV = function (a, b, out) { + out.x = a.x + b.x; + out.y = a.y + b.y; + return out; + }; + b2Vec2.SubVV = function (a, b, out) { + out.x = a.x - b.x; + out.y = a.y - b.y; + return out; + }; + b2Vec2.MulSV = function (s, v, out) { + out.x = v.x * s; + out.y = v.y * s; + return out; + }; + b2Vec2.MulVS = function (v, s, out) { + out.x = v.x * s; + out.y = v.y * s; + return out; + }; + b2Vec2.AddVMulSV = function (a, s, b, out) { + out.x = a.x + s * b.x; + out.y = a.y + s * b.y; + return out; + }; + b2Vec2.SubVMulSV = function (a, s, b, out) { + out.x = a.x - s * b.x; + out.y = a.y - s * b.y; + return out; + }; + b2Vec2.AddVCrossSV = function (a, s, v, out) { + var v_x = v.x; + out.x = a.x - s * v.y; + out.y = a.y + s * v_x; + return out; + }; + b2Vec2.MidVV = function (a, b, out) { + out.x = .5 * (a.x + b.x); + out.y = .5 * (a.y + b.y); + return out; + }; + b2Vec2.ExtVV = function (a, b, out) { + out.x = .5 * (b.x - a.x); + out.y = .5 * (b.y - a.y); + return out; + }; + b2Vec2.IsEqualToV = function (a, b) { + return a.x === b.x && a.y === b.y; + }; + b2Vec2.DistanceVV = function (a, b) { + var c_x = a.x - b.x; + var c_y = a.y - b.y; + return Math.sqrt(c_x * c_x + c_y * c_y); + }; + b2Vec2.DistanceSquaredVV = function (a, b) { + var c_x = a.x - b.x; + var c_y = a.y - b.y; + return c_x * c_x + c_y * c_y; + }; + b2Vec2.NegV = function (v, out) { + out.x = -v.x; + out.y = -v.y; + return out; + }; + b2Vec2.ZERO = new b2Vec2(0, 0); + b2Vec2.UNITX = new b2Vec2(1, 0); + b2Vec2.UNITY = new b2Vec2(0, 1); + b2Vec2.s_t0 = new b2Vec2(); + b2Vec2.s_t1 = new b2Vec2(); + b2Vec2.s_t2 = new b2Vec2(); + b2Vec2.s_t3 = new b2Vec2(); + return b2Vec2; + })(); + var b2Vec2_zero = new b2Vec2(0, 0); + var b2Vec3 = (function () { + function b2Vec3(x, y, z) { + void 0 === x && (x = 0); + void 0 === y && (y = 0); + void 0 === z && (z = 0); + this.x = x; + this.y = y; + this.z = z; + } + b2Vec3.prototype.Clone = function () { + return new b2Vec3(this.x, this.y, this.z); + }; + b2Vec3.prototype.SetZero = function () { + this.x = 0; + this.y = 0; + this.z = 0; + return this; + }; + b2Vec3.prototype.SetXYZ = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + b2Vec3.prototype.Copy = function (other) { + this.x = other.x; + this.y = other.y; + this.z = other.z; + return this; + }; + b2Vec3.prototype.SelfNeg = function () { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + }; + b2Vec3.prototype.SelfAdd = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + b2Vec3.prototype.SelfAddXYZ = function (x, y, z) { + this.x += x; + this.y += y; + this.z += z; + return this; + }; + b2Vec3.prototype.SelfSub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + b2Vec3.prototype.SelfSubXYZ = function (x, y, z) { + this.x -= x; + this.y -= y; + this.z -= z; + return this; + }; + b2Vec3.prototype.SelfMul = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + b2Vec3.DotV3V3 = function (a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z; + }; + b2Vec3.CrossV3V3 = function (a, b, out) { + var a_x = a.x, a_y = a.y, a_z = a.z; + var b_x = b.x, b_y = b.y, b_z = b.z; + out.x = a_y * b_z - a_z * b_y; + out.y = a_z * b_x - a_x * b_z; + out.z = a_x * b_y - a_y * b_x; + return out; + }; + b2Vec3.ZERO = new b2Vec3(0, 0, 0); + b2Vec3.s_t0 = new b2Vec3(); + return b2Vec3; + })(); + var b2Mat22 = (function () { + function b2Mat22() { + this.ex = new b2Vec2(1, 0); + this.ey = new b2Vec2(0, 1); + } + b2Mat22.prototype.Clone = function () { + return new b2Mat22().Copy(this); + }; + b2Mat22.FromVV = function (c1, c2) { + return new b2Mat22().SetVV(c1, c2); + }; + b2Mat22.FromSSSS = function (r1c1, r1c2, r2c1, r2c2) { + return new b2Mat22().SetSSSS(r1c1, r1c2, r2c1, r2c2); + }; + b2Mat22.FromAngle = function (radians) { + return new b2Mat22().SetAngle(radians); + }; + b2Mat22.prototype.SetSSSS = function (r1c1, r1c2, r2c1, r2c2) { + this.ex.Set(r1c1, r2c1); + this.ey.Set(r1c2, r2c2); + return this; + }; + b2Mat22.prototype.SetVV = function (c1, c2) { + this.ex.Copy(c1); + this.ey.Copy(c2); + return this; + }; + b2Mat22.prototype.SetAngle = function (radians) { + var c = Math.cos(radians); + var s = Math.sin(radians); + this.ex.Set(c, s); + this.ey.Set(-s, c); + return this; + }; + b2Mat22.prototype.Copy = function (other) { + this.ex.Copy(other.ex); + this.ey.Copy(other.ey); + return this; + }; + b2Mat22.prototype.SetIdentity = function () { + this.ex.Set(1, 0); + this.ey.Set(0, 1); + return this; + }; + b2Mat22.prototype.SetZero = function () { + this.ex.SetZero(); + this.ey.SetZero(); + return this; + }; + b2Mat22.prototype.GetAngle = function () { + return Math.atan2(this.ex.y, this.ex.x); + }; + b2Mat22.prototype.GetInverse = function (out) { + var a = this.ex.x; + var b = this.ey.x; + var c = this.ex.y; + var d = this.ey.y; + var det = a * d - b * c; + 0 !== det && (det = 1 / det); + out.ex.x = det * d; + out.ey.x = -det * b; + out.ex.y = -det * c; + out.ey.y = det * a; + return out; + }; + b2Mat22.prototype.Solve = function (b_x, b_y, out) { + var a11 = this.ex.x, a12 = this.ey.x; + var a21 = this.ex.y, a22 = this.ey.y; + var det = a11 * a22 - a12 * a21; + 0 !== det && (det = 1 / det); + out.x = det * (a22 * b_x - a12 * b_y); + out.y = det * (a11 * b_y - a21 * b_x); + return out; + }; + b2Mat22.prototype.SelfAbs = function () { + this.ex.SelfAbs(); + this.ey.SelfAbs(); + return this; + }; + b2Mat22.prototype.SelfInv = function () { + this.GetInverse(this); + return this; + }; + b2Mat22.prototype.SelfAddM = function (M) { + this.ex.SelfAdd(M.ex); + this.ey.SelfAdd(M.ey); + return this; + }; + b2Mat22.prototype.SelfSubM = function (M) { + this.ex.SelfSub(M.ex); + this.ey.SelfSub(M.ey); + return this; + }; + b2Mat22.AbsM = function (M, out) { + var M_ex = M.ex, M_ey = M.ey; + out.ex.x = b2Abs(M_ex.x); + out.ex.y = b2Abs(M_ex.y); + out.ey.x = b2Abs(M_ey.x); + out.ey.y = b2Abs(M_ey.y); + return out; + }; + b2Mat22.MulMV = function (M, v, out) { + var M_ex = M.ex, M_ey = M.ey; + var v_x = v.x, v_y = v.y; + out.x = M_ex.x * v_x + M_ey.x * v_y; + out.y = M_ex.y * v_x + M_ey.y * v_y; + return out; + }; + b2Mat22.MulTMV = function (M, v, out) { + var M_ex = M.ex, M_ey = M.ey; + var v_x = v.x, v_y = v.y; + out.x = M_ex.x * v_x + M_ex.y * v_y; + out.y = M_ey.x * v_x + M_ey.y * v_y; + return out; + }; + b2Mat22.AddMM = function (A, B, out) { + var A_ex = A.ex, A_ey = A.ey; + var B_ex = B.ex, B_ey = B.ey; + out.ex.x = A_ex.x + B_ex.x; + out.ex.y = A_ex.y + B_ex.y; + out.ey.x = A_ey.x + B_ey.x; + out.ey.y = A_ey.y + B_ey.y; + return out; + }; + b2Mat22.MulMM = function (A, B, out) { + var A_ex_x = A.ex.x, A_ex_y = A.ex.y; + var A_ey_x = A.ey.x, A_ey_y = A.ey.y; + var B_ex_x = B.ex.x, B_ex_y = B.ex.y; + var B_ey_x = B.ey.x, B_ey_y = B.ey.y; + out.ex.x = A_ex_x * B_ex_x + A_ey_x * B_ex_y; + out.ex.y = A_ex_y * B_ex_x + A_ey_y * B_ex_y; + out.ey.x = A_ex_x * B_ey_x + A_ey_x * B_ey_y; + out.ey.y = A_ex_y * B_ey_x + A_ey_y * B_ey_y; + return out; + }; + b2Mat22.MulTMM = function (A, B, out) { + var A_ex_x = A.ex.x, A_ex_y = A.ex.y; + var A_ey_x = A.ey.x, A_ey_y = A.ey.y; + var B_ex_x = B.ex.x, B_ex_y = B.ex.y; + var B_ey_x = B.ey.x, B_ey_y = B.ey.y; + out.ex.x = A_ex_x * B_ex_x + A_ex_y * B_ex_y; + out.ex.y = A_ey_x * B_ex_x + A_ey_y * B_ex_y; + out.ey.x = A_ex_x * B_ey_x + A_ex_y * B_ey_y; + out.ey.y = A_ey_x * B_ey_x + A_ey_y * B_ey_y; + return out; + }; + b2Mat22.IDENTITY = new b2Mat22(); + return b2Mat22; + })(); + var b2Mat33 = (function () { + function b2Mat33() { + this.ex = new b2Vec3(1, 0, 0); + this.ey = new b2Vec3(0, 1, 0); + this.ez = new b2Vec3(0, 0, 1); + } + b2Mat33.prototype.Clone = function () { + return new b2Mat33().Copy(this); + }; + b2Mat33.prototype.SetVVV = function (c1, c2, c3) { + this.ex.Copy(c1); + this.ey.Copy(c2); + this.ez.Copy(c3); + return this; + }; + b2Mat33.prototype.Copy = function (other) { + this.ex.Copy(other.ex); + this.ey.Copy(other.ey); + this.ez.Copy(other.ez); + return this; + }; + b2Mat33.prototype.SetIdentity = function () { + this.ex.SetXYZ(1, 0, 0); + this.ey.SetXYZ(0, 1, 0); + this.ez.SetXYZ(0, 0, 1); + return this; + }; + b2Mat33.prototype.SetZero = function () { + this.ex.SetZero(); + this.ey.SetZero(); + this.ez.SetZero(); + return this; + }; + b2Mat33.prototype.SelfAddM = function (M) { + this.ex.SelfAdd(M.ex); + this.ey.SelfAdd(M.ey); + this.ez.SelfAdd(M.ez); + return this; + }; + b2Mat33.prototype.Solve33 = function (b_x, b_y, b_z, out) { + var a11 = this.ex.x, a21 = this.ex.y, a31 = this.ex.z; + var a12 = this.ey.x, a22 = this.ey.y, a32 = this.ey.z; + var a13 = this.ez.x, a23 = this.ez.y, a33 = this.ez.z; + var det = a11 * (a22 * a33 - a32 * a23) + a21 * (a32 * a13 - a12 * a33) + a31 * (a12 * a23 - a22 * a13); + 0 !== det && (det = 1 / det); + out.x = det * (b_x * (a22 * a33 - a32 * a23) + b_y * (a32 * a13 - a12 * a33) + b_z * (a12 * a23 - a22 * a13)); + out.y = det * (a11 * (b_y * a33 - b_z * a23) + a21 * (b_z * a13 - b_x * a33) + a31 * (b_x * a23 - b_y * a13)); + out.z = det * (a11 * (a22 * b_z - a32 * b_y) + a21 * (a32 * b_x - a12 * b_z) + a31 * (a12 * b_y - a22 * b_x)); + return out; + }; + b2Mat33.prototype.Solve22 = function (b_x, b_y, out) { + var a11 = this.ex.x, a12 = this.ey.x; + var a21 = this.ex.y, a22 = this.ey.y; + var det = a11 * a22 - a12 * a21; + 0 !== det && (det = 1 / det); + out.x = det * (a22 * b_x - a12 * b_y); + out.y = det * (a11 * b_y - a21 * b_x); + return out; + }; + b2Mat33.prototype.GetInverse22 = function (M) { + var a = this.ex.x, b = this.ey.x, c = this.ex.y, d = this.ey.y; + var det = a * d - b * c; + 0 !== det && (det = 1 / det); + M.ex.x = det * d; + M.ey.x = -det * b; + M.ex.z = 0; + M.ex.y = -det * c; + M.ey.y = det * a; + M.ey.z = 0; + M.ez.x = 0; + M.ez.y = 0; + M.ez.z = 0; + }; + b2Mat33.prototype.GetSymInverse33 = function (M) { + var det = b2Vec3.DotV3V3(this.ex, b2Vec3.CrossV3V3(this.ey, this.ez, b2Vec3.s_t0)); + 0 !== det && (det = 1 / det); + var a11 = this.ex.x, a12 = this.ey.x, a13 = this.ez.x; + var a22 = this.ey.y, a23 = this.ez.y; + var a33 = this.ez.z; + M.ex.x = det * (a22 * a33 - a23 * a23); + M.ex.y = det * (a13 * a23 - a12 * a33); + M.ex.z = det * (a12 * a23 - a13 * a22); + M.ey.x = M.ex.y; + M.ey.y = det * (a11 * a33 - a13 * a13); + M.ey.z = det * (a13 * a12 - a11 * a23); + M.ez.x = M.ex.z; + M.ez.y = M.ey.z; + M.ez.z = det * (a11 * a22 - a12 * a12); + }; + b2Mat33.MulM33V3 = function (A, v, out) { + var v_x = v.x, v_y = v.y, v_z = v.z; + out.x = A.ex.x * v_x + A.ey.x * v_y + A.ez.x * v_z; + out.y = A.ex.y * v_x + A.ey.y * v_y + A.ez.y * v_z; + out.z = A.ex.z * v_x + A.ey.z * v_y + A.ez.z * v_z; + return out; + }; + b2Mat33.MulM33XYZ = function (A, x, y, z, out) { + out.x = A.ex.x * x + A.ey.x * y + A.ez.x * z; + out.y = A.ex.y * x + A.ey.y * y + A.ez.y * z; + out.z = A.ex.z * x + A.ey.z * y + A.ez.z * z; + return out; + }; + b2Mat33.MulM33V2 = function (A, v, out) { + var v_x = v.x, v_y = v.y; + out.x = A.ex.x * v_x + A.ey.x * v_y; + out.y = A.ex.y * v_x + A.ey.y * v_y; + return out; + }; + b2Mat33.MulM33XY = function (A, x, y, out) { + out.x = A.ex.x * x + A.ey.x * y; + out.y = A.ex.y * x + A.ey.y * y; + return out; + }; + b2Mat33.IDENTITY = new b2Mat33(); + return b2Mat33; + })(); + var b2Rot = (function () { + function b2Rot(angle) { + void 0 === angle && (angle = 0); + this.s = 0; + this.c = 1; + if (angle) { + this.s = Math.sin(angle); + this.c = Math.cos(angle); + } + } + b2Rot.prototype.Clone = function () { + return new b2Rot().Copy(this); + }; + b2Rot.prototype.Copy = function (other) { + this.s = other.s; + this.c = other.c; + return this; + }; + b2Rot.prototype.SetAngle = function (angle) { + this.s = Math.sin(angle); + this.c = Math.cos(angle); + return this; + }; + b2Rot.prototype.SetIdentity = function () { + this.s = 0; + this.c = 1; + return this; + }; + b2Rot.prototype.GetAngle = function () { + return Math.atan2(this.s, this.c); + }; + b2Rot.prototype.GetXAxis = function (out) { + out.x = this.c; + out.y = this.s; + return out; + }; + b2Rot.prototype.GetYAxis = function (out) { + out.x = -this.s; + out.y = this.c; + return out; + }; + b2Rot.MulRR = function (q, r, out) { + var q_c = q.c, q_s = q.s; + var r_c = r.c, r_s = r.s; + out.s = q_s * r_c + q_c * r_s; + out.c = q_c * r_c - q_s * r_s; + return out; + }; + b2Rot.MulTRR = function (q, r, out) { + var q_c = q.c, q_s = q.s; + var r_c = r.c, r_s = r.s; + out.s = q_c * r_s - q_s * r_c; + out.c = q_c * r_c + q_s * r_s; + return out; + }; + b2Rot.MulRV = function (q, v, out) { + var q_c = q.c, q_s = q.s; + var v_x = v.x, v_y = v.y; + out.x = q_c * v_x - q_s * v_y; + out.y = q_s * v_x + q_c * v_y; + return out; + }; + b2Rot.MulTRV = function (q, v, out) { + var q_c = q.c, q_s = q.s; + var v_x = v.x, v_y = v.y; + out.x = q_c * v_x + q_s * v_y; + out.y = -q_s * v_x + q_c * v_y; + return out; + }; + b2Rot.IDENTITY = new b2Rot(); + return b2Rot; + })(); + var b2Transform = (function () { + function b2Transform() { + this.p = new b2Vec2(); + this.q = new b2Rot(); + } + b2Transform.prototype.Clone = function () { + return new b2Transform().Copy(this); + }; + b2Transform.prototype.Copy = function (other) { + this.p.Copy(other.p); + this.q.Copy(other.q); + return this; + }; + b2Transform.prototype.SetIdentity = function () { + this.p.SetZero(); + this.q.SetIdentity(); + return this; + }; + b2Transform.prototype.SetPositionRotation = function (position, q) { + this.p.Copy(position); + this.q.Copy(q); + return this; + }; + b2Transform.prototype.SetPositionAngle = function (pos, a) { + this.p.Copy(pos); + this.q.SetAngle(a); + return this; + }; + b2Transform.prototype.SetPosition = function (position) { + this.p.Copy(position); + return this; + }; + b2Transform.prototype.SetPositionXY = function (x, y) { + this.p.Set(x, y); + return this; + }; + b2Transform.prototype.SetRotation = function (rotation) { + this.q.Copy(rotation); + return this; + }; + b2Transform.prototype.SetRotationAngle = function (radians) { + this.q.SetAngle(radians); + return this; + }; + b2Transform.prototype.GetPosition = function () { + return this.p; + }; + b2Transform.prototype.GetRotation = function () { + return this.q; + }; + b2Transform.prototype.GetRotationAngle = function () { + return this.q.GetAngle(); + }; + b2Transform.prototype.GetAngle = function () { + return this.q.GetAngle(); + }; + b2Transform.MulXV = function (T, v, out) { + var T_q_c = T.q.c, T_q_s = T.q.s; + var v_x = v.x, v_y = v.y; + out.x = T_q_c * v_x - T_q_s * v_y + T.p.x; + out.y = T_q_s * v_x + T_q_c * v_y + T.p.y; + return out; + }; + b2Transform.MulTXV = function (T, v, out) { + var T_q_c = T.q.c, T_q_s = T.q.s; + var p_x = v.x - T.p.x; + var p_y = v.y - T.p.y; + out.x = T_q_c * p_x + T_q_s * p_y; + out.y = -T_q_s * p_x + T_q_c * p_y; + return out; + }; + b2Transform.MulXX = function (A, B, out) { + b2Rot.MulRR(A.q, B.q, out.q); + b2Vec2.AddVV(b2Rot.MulRV(A.q, B.p, out.p), A.p, out.p); + return out; + }; + b2Transform.MulTXX = function (A, B, out) { + b2Rot.MulTRR(A.q, B.q, out.q); + b2Rot.MulTRV(A.q, b2Vec2.SubVV(B.p, A.p, out.p), out.p); + return out; + }; + b2Transform.IDENTITY = new b2Transform(); + return b2Transform; + })(); + var b2Sweep = (function () { + function b2Sweep() { + this.localCenter = new b2Vec2(); + this.c0 = new b2Vec2(); + this.c = new b2Vec2(); + this.a0 = 0; + this.a = 0; + this.alpha0 = 0; + } + b2Sweep.prototype.Clone = function () { + return new b2Sweep().Copy(this); + }; + b2Sweep.prototype.Copy = function (other) { + this.localCenter.Copy(other.localCenter); + this.c0.Copy(other.c0); + this.c.Copy(other.c); + this.a0 = other.a0; + this.a = other.a; + this.alpha0 = other.alpha0; + return this; + }; + b2Sweep.prototype.GetTransform = function (xf, beta) { + var one_minus_beta = 1 - beta; + xf.p.x = one_minus_beta * this.c0.x + beta * this.c.x; + xf.p.y = one_minus_beta * this.c0.y + beta * this.c.y; + var angle = one_minus_beta * this.a0 + beta * this.a; + xf.q.SetAngle(angle); + xf.p.SelfSub(b2Rot.MulRV(xf.q, this.localCenter, b2Vec2.s_t0)); + return xf; + }; + b2Sweep.prototype.Advance = function (alpha) { + var beta = (alpha - this.alpha0) / (1 - this.alpha0); + var one_minus_beta = 1 - beta; + this.c0.x = one_minus_beta * this.c0.x + beta * this.c.x; + this.c0.y = one_minus_beta * this.c0.y + beta * this.c.y; + this.a0 = one_minus_beta * this.a0 + beta * this.a; + this.alpha0 = alpha; + }; + b2Sweep.prototype.Normalize = function () { + var d = b2_two_pi * Math.floor(this.a0 / b2_two_pi); + this.a0 -= d; + this.a -= d; + }; + return b2Sweep; + })(); + var b2Color = (function () { + function b2Color(rr, gg, bb, aa) { + void 0 === rr && (rr = .5); + void 0 === gg && (gg = .5); + void 0 === bb && (bb = .5); + void 0 === aa && (aa = 1); + this.r = rr; + this.g = gg; + this.b = bb; + this.a = aa; + } + b2Color.prototype.Clone = function () { + return new b2Color().Copy(this); + }; + b2Color.prototype.Copy = function (other) { + this.r = other.r; + this.g = other.g; + this.b = other.b; + this.a = other.a; + return this; + }; + b2Color.prototype.IsEqual = function (color) { + return this.r === color.r && this.g === color.g && this.b === color.b && this.a === color.a; + }; + b2Color.prototype.IsZero = function () { + return 0 === this.r && 0 === this.g && 0 === this.b && 0 === this.a; + }; + b2Color.prototype.Set = function (r, g, b, a) { + void 0 === a && (a = this.a); + this.SetRGBA(r, g, b, a); + }; + b2Color.prototype.SetByteRGB = function (r, g, b) { + this.r = r / 255; + this.g = g / 255; + this.b = b / 255; + return this; + }; + b2Color.prototype.SetByteRGBA = function (r, g, b, a) { + this.r = r / 255; + this.g = g / 255; + this.b = b / 255; + this.a = a / 255; + return this; + }; + b2Color.prototype.SetRGB = function (rr, gg, bb) { + this.r = rr; + this.g = gg; + this.b = bb; + return this; + }; + b2Color.prototype.SetRGBA = function (rr, gg, bb, aa) { + this.r = rr; + this.g = gg; + this.b = bb; + this.a = aa; + return this; + }; + b2Color.prototype.SelfAdd = function (color) { + this.r += color.r; + this.g += color.g; + this.b += color.b; + this.a += color.a; + return this; + }; + b2Color.prototype.Add = function (color, out) { + out.r = this.r + color.r; + out.g = this.g + color.g; + out.b = this.b + color.b; + out.a = this.a + color.a; + return out; + }; + b2Color.prototype.SelfSub = function (color) { + this.r -= color.r; + this.g -= color.g; + this.b -= color.b; + this.a -= color.a; + return this; + }; + b2Color.prototype.Sub = function (color, out) { + out.r = this.r - color.r; + out.g = this.g - color.g; + out.b = this.b - color.b; + out.a = this.a - color.a; + return out; + }; + b2Color.prototype.SelfMul = function (s) { + this.r *= s; + this.g *= s; + this.b *= s; + this.a *= s; + return this; + }; + b2Color.prototype.Mul = function (s, out) { + out.r = this.r * s; + out.g = this.g * s; + out.b = this.b * s; + out.a = this.a * s; + return out; + }; + b2Color.prototype.Mix = function (mixColor, strength) { + b2Color.MixColors(this, mixColor, strength); + }; + b2Color.MixColors = function (colorA, colorB, strength) { + var dr = strength * (colorB.r - colorA.r); + var dg = strength * (colorB.g - colorA.g); + var db = strength * (colorB.b - colorA.b); + var da = strength * (colorB.a - colorA.a); + colorA.r += dr; + colorA.g += dg; + colorA.b += db; + colorA.a += da; + colorB.r -= dr; + colorB.g -= dg; + colorB.b -= db; + colorB.a -= da; + }; + b2Color.prototype.MakeStyleString = function (alpha) { + void 0 === alpha && (alpha = this.a); + return b2Color.MakeStyleString(this.r, this.g, this.b, alpha); + }; + b2Color.MakeStyleString = function (r, g, b, a) { + void 0 === a && (a = 1); + r *= 255; + g *= 255; + b *= 255; + return a < 1 ? "rgba(" + r + "," + g + "," + b + "," + a + ")" : "rgb(" + r + "," + g + "," + b + ")"; + }; + b2Color.ZERO = new b2Color(0, 0, 0, 0); + b2Color.RED = new b2Color(1, 0, 0); + b2Color.GREEN = new b2Color(0, 1, 0); + b2Color.BLUE = new b2Color(0, 0, 1); + return b2Color; + })(); + (function (b2DrawFlags) { + b2DrawFlags[b2DrawFlags["e_none"] = 0] = "e_none"; + b2DrawFlags[b2DrawFlags["e_shapeBit"] = 1] = "e_shapeBit"; + b2DrawFlags[b2DrawFlags["e_jointBit"] = 2] = "e_jointBit"; + b2DrawFlags[b2DrawFlags["e_aabbBit"] = 4] = "e_aabbBit"; + b2DrawFlags[b2DrawFlags["e_pairBit"] = 8] = "e_pairBit"; + b2DrawFlags[b2DrawFlags["e_centerOfMassBit"] = 16] = "e_centerOfMassBit"; + b2DrawFlags[b2DrawFlags["e_particleBit"] = 32] = "e_particleBit"; + b2DrawFlags[b2DrawFlags["e_controllerBit"] = 64] = "e_controllerBit"; + b2DrawFlags[b2DrawFlags["e_all"] = 63] = "e_all"; + })(exports.b2DrawFlags || (exports.b2DrawFlags = {})); + var b2Draw = (function () { + function b2Draw() { + this.m_drawFlags = 0; + } + b2Draw.prototype.SetFlags = function (flags) { + this.m_drawFlags = flags; + }; + b2Draw.prototype.GetFlags = function () { + return this.m_drawFlags; + }; + b2Draw.prototype.AppendFlags = function (flags) { + this.m_drawFlags |= flags; + }; + b2Draw.prototype.ClearFlags = function (flags) { + this.m_drawFlags &= ~flags; + }; + return b2Draw; + })(); + var b2Timer = (function () { + function b2Timer() { + this.m_start = Date.now(); + } + b2Timer.prototype.Reset = function () { + this.m_start = Date.now(); + return this; + }; + b2Timer.prototype.GetMilliseconds = function () { + return Date.now() - this.m_start; + }; + return b2Timer; + })(); + var b2Counter = (function () { + function b2Counter() { + this.m_count = 0; + this.m_min_count = 0; + this.m_max_count = 0; + } + b2Counter.prototype.GetCount = function () { + return this.m_count; + }; + b2Counter.prototype.GetMinCount = function () { + return this.m_min_count; + }; + b2Counter.prototype.GetMaxCount = function () { + return this.m_max_count; + }; + b2Counter.prototype.ResetCount = function () { + var count = this.m_count; + this.m_count = 0; + return count; + }; + b2Counter.prototype.ResetMinCount = function () { + this.m_min_count = 0; + }; + b2Counter.prototype.ResetMaxCount = function () { + this.m_max_count = 0; + }; + b2Counter.prototype.Increment = function () { + this.m_count++; + this.m_max_count < this.m_count && (this.m_max_count = this.m_count); + }; + b2Counter.prototype.Decrement = function () { + this.m_count--; + this.m_min_count > this.m_count && (this.m_min_count = this.m_count); + }; + return b2Counter; + })(); + var b2GrowableStack = (function () { + function b2GrowableStack(N) { + this.m_stack = []; + this.m_count = 0; + this.m_stack = b2MakeArray(N, (function (index) { + return null; + })); + this.m_count = 0; + } + b2GrowableStack.prototype.Reset = function () { + this.m_count = 0; + return this; + }; + b2GrowableStack.prototype.Push = function (element) { + this.m_stack[this.m_count] = element; + this.m_count++; + }; + b2GrowableStack.prototype.Pop = function () { + this.m_count--; + var element = this.m_stack[this.m_count]; + this.m_stack[this.m_count] = null; + if (null === element) throw new Error(); + return element; + }; + b2GrowableStack.prototype.GetCount = function () { + return this.m_count; + }; + return b2GrowableStack; + })(); + var b2BlockAllocator = (function () { + function b2BlockAllocator() { } + return b2BlockAllocator; + })(); + var b2StackAllocator = (function () { + function b2StackAllocator() { } + return b2StackAllocator; + })(); + var b2DistanceProxy = (function () { + function b2DistanceProxy() { + this.m_buffer = b2Vec2.MakeArray(2); + this.m_vertices = this.m_buffer; + this.m_count = 0; + this.m_radius = 0; + } + b2DistanceProxy.prototype.Copy = function (other) { + if (other.m_vertices === other.m_buffer) { + this.m_vertices = this.m_buffer; + this.m_buffer[0].Copy(other.m_buffer[0]); + this.m_buffer[1].Copy(other.m_buffer[1]); + } else this.m_vertices = other.m_vertices; + this.m_count = other.m_count; + this.m_radius = other.m_radius; + return this; + }; + b2DistanceProxy.prototype.Reset = function () { + this.m_vertices = this.m_buffer; + this.m_count = 0; + this.m_radius = 0; + return this; + }; + b2DistanceProxy.prototype.SetShape = function (shape, index) { + shape.SetupDistanceProxy(this, index); + }; + b2DistanceProxy.prototype.SetVerticesRadius = function (vertices, count, radius) { + this.m_vertices = vertices; + this.m_count = count; + this.m_radius = radius; + }; + b2DistanceProxy.prototype.GetSupport = function (d) { + var bestIndex = 0; + var bestValue = b2Vec2.DotVV(this.m_vertices[0], d); + for (var i = 1; i < this.m_count; ++i) { + var value = b2Vec2.DotVV(this.m_vertices[i], d); + if (value > bestValue) { + bestIndex = i; + bestValue = value; + } + } + return bestIndex; + }; + b2DistanceProxy.prototype.GetSupportVertex = function (d) { + var bestIndex = 0; + var bestValue = b2Vec2.DotVV(this.m_vertices[0], d); + for (var i = 1; i < this.m_count; ++i) { + var value = b2Vec2.DotVV(this.m_vertices[i], d); + if (value > bestValue) { + bestIndex = i; + bestValue = value; + } + } + return this.m_vertices[bestIndex]; + }; + b2DistanceProxy.prototype.GetVertexCount = function () { + return this.m_count; + }; + b2DistanceProxy.prototype.GetVertex = function (index) { + return this.m_vertices[index]; + }; + return b2DistanceProxy; + })(); + var b2SimplexCache = (function () { + function b2SimplexCache() { + this.metric = 0; + this.count = 0; + this.indexA = [0, 0, 0]; + this.indexB = [0, 0, 0]; + } + b2SimplexCache.prototype.Reset = function () { + this.metric = 0; + this.count = 0; + return this; + }; + return b2SimplexCache; + })(); + var b2DistanceInput = (function () { + function b2DistanceInput() { + this.proxyA = new b2DistanceProxy(); + this.proxyB = new b2DistanceProxy(); + this.transformA = new b2Transform(); + this.transformB = new b2Transform(); + this.useRadii = false; + } + b2DistanceInput.prototype.Reset = function () { + this.proxyA.Reset(); + this.proxyB.Reset(); + this.transformA.SetIdentity(); + this.transformB.SetIdentity(); + this.useRadii = false; + return this; + }; + return b2DistanceInput; + })(); + var b2DistanceOutput = (function () { + function b2DistanceOutput() { + this.pointA = new b2Vec2(); + this.pointB = new b2Vec2(); + this.distance = 0; + this.iterations = 0; + } + b2DistanceOutput.prototype.Reset = function () { + this.pointA.SetZero(); + this.pointB.SetZero(); + this.distance = 0; + this.iterations = 0; + return this; + }; + return b2DistanceOutput; + })(); + var b2ShapeCastInput = (function () { + function b2ShapeCastInput() { + this.proxyA = new b2DistanceProxy(); + this.proxyB = new b2DistanceProxy(); + this.transformA = new b2Transform(); + this.transformB = new b2Transform(); + this.translationB = new b2Vec2(); + } + return b2ShapeCastInput; + })(); + var b2ShapeCastOutput = (function () { + function b2ShapeCastOutput() { + this.point = new b2Vec2(); + this.normal = new b2Vec2(); + this.lambda = 0; + this.iterations = 0; + } + return b2ShapeCastOutput; + })(); + exports.b2_gjkCalls = 0; + exports.b2_gjkIters = 0; + exports.b2_gjkMaxIters = 0; + function b2_gjk_reset() { + exports.b2_gjkCalls = 0; + exports.b2_gjkIters = 0; + exports.b2_gjkMaxIters = 0; + } + var b2SimplexVertex = (function () { + function b2SimplexVertex() { + this.wA = new b2Vec2(); + this.wB = new b2Vec2(); + this.w = new b2Vec2(); + this.a = 0; + this.indexA = 0; + this.indexB = 0; + } + b2SimplexVertex.prototype.Copy = function (other) { + this.wA.Copy(other.wA); + this.wB.Copy(other.wB); + this.w.Copy(other.w); + this.a = other.a; + this.indexA = other.indexA; + this.indexB = other.indexB; + return this; + }; + return b2SimplexVertex; + })(); + var b2Simplex = (function () { + function b2Simplex() { + this.m_v1 = new b2SimplexVertex(); + this.m_v2 = new b2SimplexVertex(); + this.m_v3 = new b2SimplexVertex(); + this.m_vertices = []; + this.m_count = 0; + this.m_vertices[0] = this.m_v1; + this.m_vertices[1] = this.m_v2; + this.m_vertices[2] = this.m_v3; + } + b2Simplex.prototype.ReadCache = function (cache, proxyA, transformA, proxyB, transformB) { + this.m_count = cache.count; + var vertices = this.m_vertices; + for (var i = 0; i < this.m_count; ++i) { + var v = vertices[i]; + v.indexA = cache.indexA[i]; + v.indexB = cache.indexB[i]; + var wALocal = proxyA.GetVertex(v.indexA); + var wBLocal = proxyB.GetVertex(v.indexB); + b2Transform.MulXV(transformA, wALocal, v.wA); + b2Transform.MulXV(transformB, wBLocal, v.wB); + b2Vec2.SubVV(v.wB, v.wA, v.w); + v.a = 0; + } + if (this.m_count > 1) { + var metric1 = cache.metric; + var metric2 = this.GetMetric(); + (metric2 < .5 * metric1 || 2 * metric1 < metric2 || metric2 < b2_epsilon) && (this.m_count = 0); + } + if (0 === this.m_count) { + var v = vertices[0]; + v.indexA = 0; + v.indexB = 0; + var wALocal = proxyA.GetVertex(0); + var wBLocal = proxyB.GetVertex(0); + b2Transform.MulXV(transformA, wALocal, v.wA); + b2Transform.MulXV(transformB, wBLocal, v.wB); + b2Vec2.SubVV(v.wB, v.wA, v.w); + v.a = 1; + this.m_count = 1; + } + }; + b2Simplex.prototype.WriteCache = function (cache) { + cache.metric = this.GetMetric(); + cache.count = this.m_count; + var vertices = this.m_vertices; + for (var i = 0; i < this.m_count; ++i) { + cache.indexA[i] = vertices[i].indexA; + cache.indexB[i] = vertices[i].indexB; + } + }; + b2Simplex.prototype.GetSearchDirection = function (out) { + switch (this.m_count) { + case 1: + return b2Vec2.NegV(this.m_v1.w, out); + + case 2: + var e12 = b2Vec2.SubVV(this.m_v2.w, this.m_v1.w, out); + var sgn = b2Vec2.CrossVV(e12, b2Vec2.NegV(this.m_v1.w, b2Vec2.s_t0)); + return sgn > 0 ? b2Vec2.CrossOneV(e12, out) : b2Vec2.CrossVOne(e12, out); + + default: + return out.SetZero(); + } + }; + b2Simplex.prototype.GetClosestPoint = function (out) { + switch (this.m_count) { + case 0: + return out.SetZero(); + + case 1: + return out.Copy(this.m_v1.w); + + case 2: + return out.Set(this.m_v1.a * this.m_v1.w.x + this.m_v2.a * this.m_v2.w.x, this.m_v1.a * this.m_v1.w.y + this.m_v2.a * this.m_v2.w.y); + + case 3: + default: + return out.SetZero(); + } + }; + b2Simplex.prototype.GetWitnessPoints = function (pA, pB) { + switch (this.m_count) { + case 0: + break; + + case 1: + pA.Copy(this.m_v1.wA); + pB.Copy(this.m_v1.wB); + break; + + case 2: + pA.x = this.m_v1.a * this.m_v1.wA.x + this.m_v2.a * this.m_v2.wA.x; + pA.y = this.m_v1.a * this.m_v1.wA.y + this.m_v2.a * this.m_v2.wA.y; + pB.x = this.m_v1.a * this.m_v1.wB.x + this.m_v2.a * this.m_v2.wB.x; + pB.y = this.m_v1.a * this.m_v1.wB.y + this.m_v2.a * this.m_v2.wB.y; + break; + + case 3: + pB.x = pA.x = this.m_v1.a * this.m_v1.wA.x + this.m_v2.a * this.m_v2.wA.x + this.m_v3.a * this.m_v3.wA.x; + pB.y = pA.y = this.m_v1.a * this.m_v1.wA.y + this.m_v2.a * this.m_v2.wA.y + this.m_v3.a * this.m_v3.wA.y; + } + }; + b2Simplex.prototype.GetMetric = function () { + switch (this.m_count) { + case 0: + case 1: + return 0; + + case 2: + return b2Vec2.DistanceVV(this.m_v1.w, this.m_v2.w); + + case 3: + return b2Vec2.CrossVV(b2Vec2.SubVV(this.m_v2.w, this.m_v1.w, b2Vec2.s_t0), b2Vec2.SubVV(this.m_v3.w, this.m_v1.w, b2Vec2.s_t1)); + + default: + return 0; + } + }; + b2Simplex.prototype.Solve2 = function () { + var w1 = this.m_v1.w; + var w2 = this.m_v2.w; + var e12 = b2Vec2.SubVV(w2, w1, b2Simplex.s_e12); + var d12_2 = -b2Vec2.DotVV(w1, e12); + if (d12_2 <= 0) { + this.m_v1.a = 1; + this.m_count = 1; + return; + } + var d12_1 = b2Vec2.DotVV(w2, e12); + if (d12_1 <= 0) { + this.m_v2.a = 1; + this.m_count = 1; + this.m_v1.Copy(this.m_v2); + return; + } + var inv_d12 = 1 / (d12_1 + d12_2); + this.m_v1.a = d12_1 * inv_d12; + this.m_v2.a = d12_2 * inv_d12; + this.m_count = 2; + }; + b2Simplex.prototype.Solve3 = function () { + var w1 = this.m_v1.w; + var w2 = this.m_v2.w; + var w3 = this.m_v3.w; + var e12 = b2Vec2.SubVV(w2, w1, b2Simplex.s_e12); + var w1e12 = b2Vec2.DotVV(w1, e12); + var w2e12 = b2Vec2.DotVV(w2, e12); + var d12_1 = w2e12; + var d12_2 = -w1e12; + var e13 = b2Vec2.SubVV(w3, w1, b2Simplex.s_e13); + var w1e13 = b2Vec2.DotVV(w1, e13); + var w3e13 = b2Vec2.DotVV(w3, e13); + var d13_1 = w3e13; + var d13_2 = -w1e13; + var e23 = b2Vec2.SubVV(w3, w2, b2Simplex.s_e23); + var w2e23 = b2Vec2.DotVV(w2, e23); + var w3e23 = b2Vec2.DotVV(w3, e23); + var d23_1 = w3e23; + var d23_2 = -w2e23; + var n123 = b2Vec2.CrossVV(e12, e13); + var d123_1 = n123 * b2Vec2.CrossVV(w2, w3); + var d123_2 = n123 * b2Vec2.CrossVV(w3, w1); + var d123_3 = n123 * b2Vec2.CrossVV(w1, w2); + if (d12_2 <= 0 && d13_2 <= 0) { + this.m_v1.a = 1; + this.m_count = 1; + return; + } + if (d12_1 > 0 && d12_2 > 0 && d123_3 <= 0) { + var inv_d12 = 1 / (d12_1 + d12_2); + this.m_v1.a = d12_1 * inv_d12; + this.m_v2.a = d12_2 * inv_d12; + this.m_count = 2; + return; + } + if (d13_1 > 0 && d13_2 > 0 && d123_2 <= 0) { + var inv_d13 = 1 / (d13_1 + d13_2); + this.m_v1.a = d13_1 * inv_d13; + this.m_v3.a = d13_2 * inv_d13; + this.m_count = 2; + this.m_v2.Copy(this.m_v3); + return; + } + if (d12_1 <= 0 && d23_2 <= 0) { + this.m_v2.a = 1; + this.m_count = 1; + this.m_v1.Copy(this.m_v2); + return; + } + if (d13_1 <= 0 && d23_1 <= 0) { + this.m_v3.a = 1; + this.m_count = 1; + this.m_v1.Copy(this.m_v3); + return; + } + if (d23_1 > 0 && d23_2 > 0 && d123_1 <= 0) { + var inv_d23 = 1 / (d23_1 + d23_2); + this.m_v2.a = d23_1 * inv_d23; + this.m_v3.a = d23_2 * inv_d23; + this.m_count = 2; + this.m_v1.Copy(this.m_v3); + return; + } + var inv_d123 = 1 / (d123_1 + d123_2 + d123_3); + this.m_v1.a = d123_1 * inv_d123; + this.m_v2.a = d123_2 * inv_d123; + this.m_v3.a = d123_3 * inv_d123; + this.m_count = 3; + }; + b2Simplex.s_e12 = new b2Vec2(); + b2Simplex.s_e13 = new b2Vec2(); + b2Simplex.s_e23 = new b2Vec2(); + return b2Simplex; + })(); + var b2Distance_s_simplex = new b2Simplex(); + var b2Distance_s_saveA = [0, 0, 0]; + var b2Distance_s_saveB = [0, 0, 0]; + var b2Distance_s_p = new b2Vec2(); + var b2Distance_s_d = new b2Vec2(); + var b2Distance_s_normal = new b2Vec2(); + var b2Distance_s_supportA = new b2Vec2(); + var b2Distance_s_supportB = new b2Vec2(); + function b2Distance(output, cache, input) { + ++exports.b2_gjkCalls; + var proxyA = input.proxyA; + var proxyB = input.proxyB; + var transformA = input.transformA; + var transformB = input.transformB; + var simplex = b2Distance_s_simplex; + simplex.ReadCache(cache, proxyA, transformA, proxyB, transformB); + var vertices = simplex.m_vertices; + var k_maxIters = 20; + var saveA = b2Distance_s_saveA; + var saveB = b2Distance_s_saveB; + var saveCount = 0; + var iter = 0; + while (iter < k_maxIters) { + saveCount = simplex.m_count; + for (var i = 0; i < saveCount; ++i) { + saveA[i] = vertices[i].indexA; + saveB[i] = vertices[i].indexB; + } + switch (simplex.m_count) { + case 1: + break; + + case 2: + simplex.Solve2(); + break; + + case 3: + simplex.Solve3(); + } + if (3 === simplex.m_count) break; + var d = simplex.GetSearchDirection(b2Distance_s_d); + if (d.LengthSquared() < b2_epsilon_sq) break; + var vertex = vertices[simplex.m_count]; + vertex.indexA = proxyA.GetSupport(b2Rot.MulTRV(transformA.q, b2Vec2.NegV(d, b2Vec2.s_t0), b2Distance_s_supportA)); + b2Transform.MulXV(transformA, proxyA.GetVertex(vertex.indexA), vertex.wA); + vertex.indexB = proxyB.GetSupport(b2Rot.MulTRV(transformB.q, d, b2Distance_s_supportB)); + b2Transform.MulXV(transformB, proxyB.GetVertex(vertex.indexB), vertex.wB); + b2Vec2.SubVV(vertex.wB, vertex.wA, vertex.w); + ++iter; + ++exports.b2_gjkIters; + var duplicate = false; + for (var i = 0; i < saveCount; ++i) if (vertex.indexA === saveA[i] && vertex.indexB === saveB[i]) { + duplicate = true; + break; + } + if (duplicate) break; + ++simplex.m_count; + } + exports.b2_gjkMaxIters = b2Max(exports.b2_gjkMaxIters, iter); + simplex.GetWitnessPoints(output.pointA, output.pointB); + output.distance = b2Vec2.DistanceVV(output.pointA, output.pointB); + output.iterations = iter; + simplex.WriteCache(cache); + if (input.useRadii) { + var rA = proxyA.m_radius; + var rB = proxyB.m_radius; + if (output.distance > rA + rB && output.distance > b2_epsilon) { + output.distance -= rA + rB; + var normal = b2Vec2.SubVV(output.pointB, output.pointA, b2Distance_s_normal); + normal.Normalize(); + output.pointA.SelfMulAdd(rA, normal); + output.pointB.SelfMulSub(rB, normal); + } else { + var p = b2Vec2.MidVV(output.pointA, output.pointB, b2Distance_s_p); + output.pointA.Copy(p); + output.pointB.Copy(p); + output.distance = 0; + } + } + } + var b2ShapeCast_s_n = new b2Vec2(); + var b2ShapeCast_s_simplex = new b2Simplex(); + var b2ShapeCast_s_wA = new b2Vec2(); + var b2ShapeCast_s_wB = new b2Vec2(); + var b2ShapeCast_s_v = new b2Vec2(); + var b2ShapeCast_s_p = new b2Vec2(); + var b2ShapeCast_s_pointA = new b2Vec2(); + var b2ShapeCast_s_pointB = new b2Vec2(); + function b2ShapeCast(output, input) { + output.iterations = 0; + output.lambda = 1; + output.normal.SetZero(); + output.point.SetZero(); + var proxyA = input.proxyA; + var proxyB = input.proxyB; + var radiusA = b2Max(proxyA.m_radius, b2_polygonRadius); + var radiusB = b2Max(proxyB.m_radius, b2_polygonRadius); + var radius = radiusA + radiusB; + var xfA = input.transformA; + var xfB = input.transformB; + var r = input.translationB; + var n = b2ShapeCast_s_n.Set(0, 0); + var lambda = 0; + var simplex = b2ShapeCast_s_simplex; + simplex.m_count = 0; + var vertices = simplex.m_vertices; + var indexA = proxyA.GetSupport(b2Rot.MulTRV(xfA.q, b2Vec2.NegV(r, b2Vec2.s_t1), b2Vec2.s_t0)); + var wA = b2Transform.MulXV(xfA, proxyA.GetVertex(indexA), b2ShapeCast_s_wA); + var indexB = proxyB.GetSupport(b2Rot.MulTRV(xfB.q, r, b2Vec2.s_t0)); + var wB = b2Transform.MulXV(xfB, proxyB.GetVertex(indexB), b2ShapeCast_s_wB); + var v = b2Vec2.SubVV(wA, wB, b2ShapeCast_s_v); + var sigma = b2Max(b2_polygonRadius, radius - b2_polygonRadius); + var tolerance = .5 * b2_linearSlop; + var k_maxIters = 20; + var iter = 0; + while (iter < k_maxIters && b2Abs(v.Length() - sigma) > tolerance) { + output.iterations += 1; + indexA = proxyA.GetSupport(b2Rot.MulTRV(xfA.q, b2Vec2.NegV(v, b2Vec2.s_t1), b2Vec2.s_t0)); + wA = b2Transform.MulXV(xfA, proxyA.GetVertex(indexA), b2ShapeCast_s_wA); + indexB = proxyB.GetSupport(b2Rot.MulTRV(xfB.q, v, b2Vec2.s_t0)); + wB = b2Transform.MulXV(xfB, proxyB.GetVertex(indexB), b2ShapeCast_s_wB); + var p = b2Vec2.SubVV(wA, wB, b2ShapeCast_s_p); + v.Normalize(); + var vp = b2Vec2.DotVV(v, p); + var vr = b2Vec2.DotVV(v, r); + if (vp - sigma > lambda * vr) { + if (vr <= 0) return false; + lambda = (vp - sigma) / vr; + if (lambda > 1) return false; + n.Copy(v).SelfNeg(); + simplex.m_count = 0; + } + var vertex = vertices[simplex.m_count]; + vertex.indexA = indexB; + vertex.wA.Copy(wB).SelfMulAdd(lambda, r); + vertex.indexB = indexA; + vertex.wB.Copy(wA); + vertex.w.Copy(vertex.wB).SelfSub(vertex.wA); + vertex.a = 1; + simplex.m_count += 1; + switch (simplex.m_count) { + case 1: + break; + + case 2: + simplex.Solve2(); + break; + + case 3: + simplex.Solve3(); + } + if (3 === simplex.m_count) return false; + simplex.GetClosestPoint(v); + ++iter; + } + var pointA = b2ShapeCast_s_pointA; + var pointB = b2ShapeCast_s_pointB; + simplex.GetWitnessPoints(pointA, pointB); + if (v.LengthSquared() > 0) { + n.Copy(v).SelfNeg(); + n.Normalize(); + } + output.normal.Copy(n); + output.lambda = lambda; + output.iterations = iter; + return true; + } + (function (b2ContactFeatureType) { + b2ContactFeatureType[b2ContactFeatureType["e_vertex"] = 0] = "e_vertex"; + b2ContactFeatureType[b2ContactFeatureType["e_face"] = 1] = "e_face"; + })(exports.b2ContactFeatureType || (exports.b2ContactFeatureType = {})); + var b2ContactFeature = (function () { + function b2ContactFeature() { + this._key = 0; + this._key_invalid = false; + this._indexA = 0; + this._indexB = 0; + this._typeA = 0; + this._typeB = 0; + } + Object.defineProperty(b2ContactFeature.prototype, "key", { + get: function get() { + if (this._key_invalid) { + this._key_invalid = false; + this._key = this._indexA | this._indexB << 8 | this._typeA << 16 | this._typeB << 24; + } + return this._key; + }, + set: function set(value) { + this._key = value; + this._key_invalid = false; + this._indexA = 255 & this._key; + this._indexB = this._key >> 8 & 255; + this._typeA = this._key >> 16 & 255; + this._typeB = this._key >> 24 & 255; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(b2ContactFeature.prototype, "indexA", { + get: function get() { + return this._indexA; + }, + set: function set(value) { + this._indexA = value; + this._key_invalid = true; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(b2ContactFeature.prototype, "indexB", { + get: function get() { + return this._indexB; + }, + set: function set(value) { + this._indexB = value; + this._key_invalid = true; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(b2ContactFeature.prototype, "typeA", { + get: function get() { + return this._typeA; + }, + set: function set(value) { + this._typeA = value; + this._key_invalid = true; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(b2ContactFeature.prototype, "typeB", { + get: function get() { + return this._typeB; + }, + set: function set(value) { + this._typeB = value; + this._key_invalid = true; + }, + enumerable: true, + configurable: true + }); + return b2ContactFeature; + })(); + var b2ContactID = (function () { + function b2ContactID() { + this.cf = new b2ContactFeature(); + } + b2ContactID.prototype.Copy = function (o) { + this.key = o.key; + return this; + }; + b2ContactID.prototype.Clone = function () { + return new b2ContactID().Copy(this); + }; + Object.defineProperty(b2ContactID.prototype, "key", { + get: function get() { + return this.cf.key; + }, + set: function set(value) { + this.cf.key = value; + }, + enumerable: true, + configurable: true + }); + return b2ContactID; + })(); + var b2ManifoldPoint = (function () { + function b2ManifoldPoint() { + this.localPoint = new b2Vec2(); + this.normalImpulse = 0; + this.tangentImpulse = 0; + this.id = new b2ContactID(); + } + b2ManifoldPoint.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2ManifoldPoint(); + })); + }; + b2ManifoldPoint.prototype.Reset = function () { + this.localPoint.SetZero(); + this.normalImpulse = 0; + this.tangentImpulse = 0; + this.id.key = 0; + }; + b2ManifoldPoint.prototype.Copy = function (o) { + this.localPoint.Copy(o.localPoint); + this.normalImpulse = o.normalImpulse; + this.tangentImpulse = o.tangentImpulse; + this.id.Copy(o.id); + return this; + }; + return b2ManifoldPoint; + })(); + (function (b2ManifoldType) { + b2ManifoldType[b2ManifoldType["e_unknown"] = -1] = "e_unknown"; + b2ManifoldType[b2ManifoldType["e_circles"] = 0] = "e_circles"; + b2ManifoldType[b2ManifoldType["e_faceA"] = 1] = "e_faceA"; + b2ManifoldType[b2ManifoldType["e_faceB"] = 2] = "e_faceB"; + })(exports.b2ManifoldType || (exports.b2ManifoldType = {})); + var b2Manifold = (function () { + function b2Manifold() { + this.points = b2ManifoldPoint.MakeArray(b2_maxManifoldPoints); + this.localNormal = new b2Vec2(); + this.localPoint = new b2Vec2(); + this.type = exports.b2ManifoldType.e_unknown; + this.pointCount = 0; + } + b2Manifold.prototype.Reset = function () { + for (var i = 0; i < b2_maxManifoldPoints; ++i) this.points[i].Reset(); + this.localNormal.SetZero(); + this.localPoint.SetZero(); + this.type = exports.b2ManifoldType.e_unknown; + this.pointCount = 0; + }; + b2Manifold.prototype.Copy = function (o) { + this.pointCount = o.pointCount; + for (var i = 0; i < b2_maxManifoldPoints; ++i) this.points[i].Copy(o.points[i]); + this.localNormal.Copy(o.localNormal); + this.localPoint.Copy(o.localPoint); + this.type = o.type; + return this; + }; + b2Manifold.prototype.Clone = function () { + return new b2Manifold().Copy(this); + }; + return b2Manifold; + })(); + var b2WorldManifold = (function () { + function b2WorldManifold() { + this.normal = new b2Vec2(); + this.points = b2Vec2.MakeArray(b2_maxManifoldPoints); + this.separations = b2MakeNumberArray(b2_maxManifoldPoints); + } + b2WorldManifold.prototype.Initialize = function (manifold, xfA, radiusA, xfB, radiusB) { + if (0 === manifold.pointCount) return; + switch (manifold.type) { + case exports.b2ManifoldType.e_circles: + this.normal.Set(1, 0); + var pointA = b2Transform.MulXV(xfA, manifold.localPoint, b2WorldManifold.Initialize_s_pointA); + var pointB = b2Transform.MulXV(xfB, manifold.points[0].localPoint, b2WorldManifold.Initialize_s_pointB); + b2Vec2.DistanceSquaredVV(pointA, pointB) > b2_epsilon_sq && b2Vec2.SubVV(pointB, pointA, this.normal).SelfNormalize(); + var cA = b2Vec2.AddVMulSV(pointA, radiusA, this.normal, b2WorldManifold.Initialize_s_cA); + var cB = b2Vec2.SubVMulSV(pointB, radiusB, this.normal, b2WorldManifold.Initialize_s_cB); + b2Vec2.MidVV(cA, cB, this.points[0]); + this.separations[0] = b2Vec2.DotVV(b2Vec2.SubVV(cB, cA, b2Vec2.s_t0), this.normal); + break; + + case exports.b2ManifoldType.e_faceA: + b2Rot.MulRV(xfA.q, manifold.localNormal, this.normal); + var planePoint = b2Transform.MulXV(xfA, manifold.localPoint, b2WorldManifold.Initialize_s_planePoint); + for (var i = 0; i < manifold.pointCount; ++i) { + var clipPoint = b2Transform.MulXV(xfB, manifold.points[i].localPoint, b2WorldManifold.Initialize_s_clipPoint); + var s = radiusA - b2Vec2.DotVV(b2Vec2.SubVV(clipPoint, planePoint, b2Vec2.s_t0), this.normal); + var cA = b2Vec2.AddVMulSV(clipPoint, s, this.normal, b2WorldManifold.Initialize_s_cA); + var cB = b2Vec2.SubVMulSV(clipPoint, radiusB, this.normal, b2WorldManifold.Initialize_s_cB); + b2Vec2.MidVV(cA, cB, this.points[i]); + this.separations[i] = b2Vec2.DotVV(b2Vec2.SubVV(cB, cA, b2Vec2.s_t0), this.normal); + } + break; + + case exports.b2ManifoldType.e_faceB: + b2Rot.MulRV(xfB.q, manifold.localNormal, this.normal); + var planePoint = b2Transform.MulXV(xfB, manifold.localPoint, b2WorldManifold.Initialize_s_planePoint); + for (var i = 0; i < manifold.pointCount; ++i) { + var clipPoint = b2Transform.MulXV(xfA, manifold.points[i].localPoint, b2WorldManifold.Initialize_s_clipPoint); + var s = radiusB - b2Vec2.DotVV(b2Vec2.SubVV(clipPoint, planePoint, b2Vec2.s_t0), this.normal); + var cB = b2Vec2.AddVMulSV(clipPoint, s, this.normal, b2WorldManifold.Initialize_s_cB); + var cA = b2Vec2.SubVMulSV(clipPoint, radiusA, this.normal, b2WorldManifold.Initialize_s_cA); + b2Vec2.MidVV(cA, cB, this.points[i]); + this.separations[i] = b2Vec2.DotVV(b2Vec2.SubVV(cA, cB, b2Vec2.s_t0), this.normal); + } + this.normal.SelfNeg(); + } + }; + b2WorldManifold.Initialize_s_pointA = new b2Vec2(); + b2WorldManifold.Initialize_s_pointB = new b2Vec2(); + b2WorldManifold.Initialize_s_cA = new b2Vec2(); + b2WorldManifold.Initialize_s_cB = new b2Vec2(); + b2WorldManifold.Initialize_s_planePoint = new b2Vec2(); + b2WorldManifold.Initialize_s_clipPoint = new b2Vec2(); + return b2WorldManifold; + })(); + (function (b2PointState) { + b2PointState[b2PointState["b2_nullState"] = 0] = "b2_nullState"; + b2PointState[b2PointState["b2_addState"] = 1] = "b2_addState"; + b2PointState[b2PointState["b2_persistState"] = 2] = "b2_persistState"; + b2PointState[b2PointState["b2_removeState"] = 3] = "b2_removeState"; + })(exports.b2PointState || (exports.b2PointState = {})); + function b2GetPointStates(state1, state2, manifold1, manifold2) { + var i; + for (i = 0; i < manifold1.pointCount; ++i) { + var id = manifold1.points[i].id; + var key = id.key; + state1[i] = exports.b2PointState.b2_removeState; + for (var j = 0, jct = manifold2.pointCount; j < jct; ++j) if (manifold2.points[j].id.key === key) { + state1[i] = exports.b2PointState.b2_persistState; + break; + } + } + for (; i < b2_maxManifoldPoints; ++i) state1[i] = exports.b2PointState.b2_nullState; + for (i = 0; i < manifold2.pointCount; ++i) { + var id = manifold2.points[i].id; + var key = id.key; + state2[i] = exports.b2PointState.b2_addState; + for (var j = 0, jct = manifold1.pointCount; j < jct; ++j) if (manifold1.points[j].id.key === key) { + state2[i] = exports.b2PointState.b2_persistState; + break; + } + } + for (; i < b2_maxManifoldPoints; ++i) state2[i] = exports.b2PointState.b2_nullState; + } + var b2ClipVertex = (function () { + function b2ClipVertex() { + this.v = new b2Vec2(); + this.id = new b2ContactID(); + } + b2ClipVertex.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2ClipVertex(); + })); + }; + b2ClipVertex.prototype.Copy = function (other) { + this.v.Copy(other.v); + this.id.Copy(other.id); + return this; + }; + return b2ClipVertex; + })(); + var b2RayCastInput = (function () { + function b2RayCastInput() { + this.p1 = new b2Vec2(); + this.p2 = new b2Vec2(); + this.maxFraction = 1; + } + b2RayCastInput.prototype.Copy = function (o) { + this.p1.Copy(o.p1); + this.p2.Copy(o.p2); + this.maxFraction = o.maxFraction; + return this; + }; + return b2RayCastInput; + })(); + var b2RayCastOutput = (function () { + function b2RayCastOutput() { + this.normal = new b2Vec2(); + this.fraction = 0; + } + b2RayCastOutput.prototype.Copy = function (o) { + this.normal.Copy(o.normal); + this.fraction = o.fraction; + return this; + }; + return b2RayCastOutput; + })(); + var b2AABB = (function () { + function b2AABB() { + this.lowerBound = new b2Vec2(); + this.upperBound = new b2Vec2(); + this.m_cache_center = new b2Vec2(); + this.m_cache_extent = new b2Vec2(); + } + b2AABB.prototype.Copy = function (o) { + this.lowerBound.Copy(o.lowerBound); + this.upperBound.Copy(o.upperBound); + return this; + }; + b2AABB.prototype.IsValid = function () { + var d_x = this.upperBound.x - this.lowerBound.x; + var d_y = this.upperBound.y - this.lowerBound.y; + var valid = d_x >= 0 && d_y >= 0; + valid = valid && this.lowerBound.IsValid() && this.upperBound.IsValid(); + return valid; + }; + b2AABB.prototype.GetCenter = function () { + return b2Vec2.MidVV(this.lowerBound, this.upperBound, this.m_cache_center); + }; + b2AABB.prototype.GetExtents = function () { + return b2Vec2.ExtVV(this.lowerBound, this.upperBound, this.m_cache_extent); + }; + b2AABB.prototype.GetPerimeter = function () { + var wx = this.upperBound.x - this.lowerBound.x; + var wy = this.upperBound.y - this.lowerBound.y; + return 2 * (wx + wy); + }; + b2AABB.prototype.Combine1 = function (aabb) { + this.lowerBound.x = b2Min(this.lowerBound.x, aabb.lowerBound.x); + this.lowerBound.y = b2Min(this.lowerBound.y, aabb.lowerBound.y); + this.upperBound.x = b2Max(this.upperBound.x, aabb.upperBound.x); + this.upperBound.y = b2Max(this.upperBound.y, aabb.upperBound.y); + return this; + }; + b2AABB.prototype.Combine2 = function (aabb1, aabb2) { + this.lowerBound.x = b2Min(aabb1.lowerBound.x, aabb2.lowerBound.x); + this.lowerBound.y = b2Min(aabb1.lowerBound.y, aabb2.lowerBound.y); + this.upperBound.x = b2Max(aabb1.upperBound.x, aabb2.upperBound.x); + this.upperBound.y = b2Max(aabb1.upperBound.y, aabb2.upperBound.y); + return this; + }; + b2AABB.Combine = function (aabb1, aabb2, out) { + out.Combine2(aabb1, aabb2); + return out; + }; + b2AABB.prototype.Contains = function (aabb) { + var result = true; + result = result && this.lowerBound.x <= aabb.lowerBound.x; + result = result && this.lowerBound.y <= aabb.lowerBound.y; + result = result && aabb.upperBound.x <= this.upperBound.x; + result = result && aabb.upperBound.y <= this.upperBound.y; + return result; + }; + b2AABB.prototype.RayCast = function (output, input) { + var tmin = -b2_maxFloat; + var tmax = b2_maxFloat; + var p_x = input.p1.x; + var p_y = input.p1.y; + var d_x = input.p2.x - input.p1.x; + var d_y = input.p2.y - input.p1.y; + var absD_x = b2Abs(d_x); + var absD_y = b2Abs(d_y); + var normal = output.normal; + if (absD_x < b2_epsilon) { + if (p_x < this.lowerBound.x || this.upperBound.x < p_x) return false; + } else { + var inv_d = 1 / d_x; + var t1 = (this.lowerBound.x - p_x) * inv_d; + var t2 = (this.upperBound.x - p_x) * inv_d; + var s = -1; + if (t1 > t2) { + var t3 = t1; + t1 = t2; + t2 = t3; + s = 1; + } + if (t1 > tmin) { + normal.x = s; + normal.y = 0; + tmin = t1; + } + tmax = b2Min(tmax, t2); + if (tmin > tmax) return false; + } + if (absD_y < b2_epsilon) { + if (p_y < this.lowerBound.y || this.upperBound.y < p_y) return false; + } else { + var inv_d = 1 / d_y; + var t1 = (this.lowerBound.y - p_y) * inv_d; + var t2 = (this.upperBound.y - p_y) * inv_d; + var s = -1; + if (t1 > t2) { + var t3 = t1; + t1 = t2; + t2 = t3; + s = 1; + } + if (t1 > tmin) { + normal.x = 0; + normal.y = s; + tmin = t1; + } + tmax = b2Min(tmax, t2); + if (tmin > tmax) return false; + } + if (tmin < 0 || input.maxFraction < tmin) return false; + output.fraction = tmin; + return true; + }; + b2AABB.prototype.TestContain = function (point) { + if (point.x < this.lowerBound.x || this.upperBound.x < point.x) return false; + if (point.y < this.lowerBound.y || this.upperBound.y < point.y) return false; + return true; + }; + b2AABB.prototype.TestOverlap = function (other) { + var d1_x = other.lowerBound.x - this.upperBound.x; + var d1_y = other.lowerBound.y - this.upperBound.y; + var d2_x = this.lowerBound.x - other.upperBound.x; + var d2_y = this.lowerBound.y - other.upperBound.y; + if (d1_x > 0 || d1_y > 0) return false; + if (d2_x > 0 || d2_y > 0) return false; + return true; + }; + return b2AABB; + })(); + function b2TestOverlapAABB(a, b) { + var d1_x = b.lowerBound.x - a.upperBound.x; + var d1_y = b.lowerBound.y - a.upperBound.y; + var d2_x = a.lowerBound.x - b.upperBound.x; + var d2_y = a.lowerBound.y - b.upperBound.y; + if (d1_x > 0 || d1_y > 0) return false; + if (d2_x > 0 || d2_y > 0) return false; + return true; + } + function b2ClipSegmentToLine(vOut, vIn, normal, offset, vertexIndexA) { + var numOut = 0; + var vIn0 = vIn[0]; + var vIn1 = vIn[1]; + var distance0 = b2Vec2.DotVV(normal, vIn0.v) - offset; + var distance1 = b2Vec2.DotVV(normal, vIn1.v) - offset; + distance0 <= 0 && vOut[numOut++].Copy(vIn0); + distance1 <= 0 && vOut[numOut++].Copy(vIn1); + if (distance0 * distance1 < 0) { + var interp = distance0 / (distance0 - distance1); + var v = vOut[numOut].v; + v.x = vIn0.v.x + interp * (vIn1.v.x - vIn0.v.x); + v.y = vIn0.v.y + interp * (vIn1.v.y - vIn0.v.y); + var id = vOut[numOut].id; + id.cf.indexA = vertexIndexA; + id.cf.indexB = vIn0.id.cf.indexB; + id.cf.typeA = exports.b2ContactFeatureType.e_vertex; + id.cf.typeB = exports.b2ContactFeatureType.e_face; + ++numOut; + } + return numOut; + } + var b2TestOverlapShape_s_input = new b2DistanceInput(); + var b2TestOverlapShape_s_simplexCache = new b2SimplexCache(); + var b2TestOverlapShape_s_output = new b2DistanceOutput(); + function b2TestOverlapShape(shapeA, indexA, shapeB, indexB, xfA, xfB) { + var input = b2TestOverlapShape_s_input.Reset(); + input.proxyA.SetShape(shapeA, indexA); + input.proxyB.SetShape(shapeB, indexB); + input.transformA.Copy(xfA); + input.transformB.Copy(xfB); + input.useRadii = true; + var simplexCache = b2TestOverlapShape_s_simplexCache.Reset(); + simplexCache.count = 0; + var output = b2TestOverlapShape_s_output.Reset(); + b2Distance(output, simplexCache, input); + return output.distance < 10 * b2_epsilon; + } + function verify(value) { + if (null === value) throw new Error(); + return value; + } + var b2TreeNode = (function () { + function b2TreeNode(id) { + void 0 === id && (id = 0); + this.m_id = 0; + this.aabb = new b2AABB(); + this.parent = null; + this.child1 = null; + this.child2 = null; + this.height = 0; + this.m_id = id; + } + b2TreeNode.prototype.IsLeaf = function () { + return null === this.child1; + }; + return b2TreeNode; + })(); + var b2DynamicTree = (function () { + function b2DynamicTree() { + this.m_root = null; + this.m_freeList = null; + this.m_path = 0; + this.m_insertionCount = 0; + this.m_stack = new b2GrowableStack(256); + } + b2DynamicTree.prototype.Query = function (aabb, callback) { + if (null === this.m_root) return; + var stack = this.m_stack.Reset(); + stack.Push(this.m_root); + while (stack.GetCount() > 0) { + var node = stack.Pop(); + if (node.aabb.TestOverlap(aabb)) if (node.IsLeaf()) { + var proceed = callback(node); + if (!proceed) return; + } else { + stack.Push(verify(node.child1)); + stack.Push(verify(node.child2)); + } + } + }; + b2DynamicTree.prototype.QueryPoint = function (point, callback) { + if (null === this.m_root) return; + var stack = this.m_stack.Reset(); + stack.Push(this.m_root); + while (stack.GetCount() > 0) { + var node = stack.Pop(); + if (node.aabb.TestContain(point)) if (node.IsLeaf()) { + var proceed = callback(node); + if (!proceed) return; + } else { + stack.Push(verify(node.child1)); + stack.Push(verify(node.child2)); + } + } + }; + b2DynamicTree.prototype.RayCast = function (input, callback) { + if (null === this.m_root) return; + var p1 = input.p1; + var p2 = input.p2; + var r = b2Vec2.SubVV(p2, p1, b2DynamicTree.s_r); + r.Normalize(); + var v = b2Vec2.CrossOneV(r, b2DynamicTree.s_v); + var abs_v = b2Vec2.AbsV(v, b2DynamicTree.s_abs_v); + var maxFraction = input.maxFraction; + var segmentAABB = b2DynamicTree.s_segmentAABB; + var t_x = p1.x + maxFraction * (p2.x - p1.x); + var t_y = p1.y + maxFraction * (p2.y - p1.y); + segmentAABB.lowerBound.x = b2Min(p1.x, t_x); + segmentAABB.lowerBound.y = b2Min(p1.y, t_y); + segmentAABB.upperBound.x = b2Max(p1.x, t_x); + segmentAABB.upperBound.y = b2Max(p1.y, t_y); + var stack = this.m_stack.Reset(); + stack.Push(this.m_root); + while (stack.GetCount() > 0) { + var node = stack.Pop(); + if (!b2TestOverlapAABB(node.aabb, segmentAABB)) continue; + var c = node.aabb.GetCenter(); + var h = node.aabb.GetExtents(); + var separation = b2Abs(b2Vec2.DotVV(v, b2Vec2.SubVV(p1, c, b2Vec2.s_t0))) - b2Vec2.DotVV(abs_v, h); + if (separation > 0) continue; + if (node.IsLeaf()) { + var subInput = b2DynamicTree.s_subInput; + subInput.p1.Copy(input.p1); + subInput.p2.Copy(input.p2); + subInput.maxFraction = maxFraction; + var value = callback(subInput, node); + if (0 === value) return; + if (value > 0) { + maxFraction = value; + t_x = p1.x + maxFraction * (p2.x - p1.x); + t_y = p1.y + maxFraction * (p2.y - p1.y); + segmentAABB.lowerBound.x = b2Min(p1.x, t_x); + segmentAABB.lowerBound.y = b2Min(p1.y, t_y); + segmentAABB.upperBound.x = b2Max(p1.x, t_x); + segmentAABB.upperBound.y = b2Max(p1.y, t_y); + } + } else { + stack.Push(verify(node.child1)); + stack.Push(verify(node.child2)); + } + } + }; + b2DynamicTree.prototype.AllocateNode = function () { + if (this.m_freeList) { + var node = this.m_freeList; + this.m_freeList = node.parent; + node.parent = null; + node.child1 = null; + node.child2 = null; + node.height = 0; + delete node.userData; + return node; + } + return new b2TreeNode(b2DynamicTree.s_node_id++); + }; + b2DynamicTree.prototype.FreeNode = function (node) { + node.parent = this.m_freeList; + node.child1 = null; + node.child2 = null; + node.height = -1; + delete node.userData; + this.m_freeList = node; + }; + b2DynamicTree.prototype.CreateProxy = function (aabb, userData) { + var node = this.AllocateNode(); + var r_x = b2_aabbExtension; + var r_y = b2_aabbExtension; + node.aabb.lowerBound.x = aabb.lowerBound.x - r_x; + node.aabb.lowerBound.y = aabb.lowerBound.y - r_y; + node.aabb.upperBound.x = aabb.upperBound.x + r_x; + node.aabb.upperBound.y = aabb.upperBound.y + r_y; + node.userData = userData; + node.height = 0; + this.InsertLeaf(node); + return node; + }; + b2DynamicTree.prototype.DestroyProxy = function (proxy) { + this.RemoveLeaf(proxy); + this.FreeNode(proxy); + }; + b2DynamicTree.prototype.MoveProxy = function (proxy, aabb, displacement) { + if (proxy.aabb.Contains(aabb)) return false; + this.RemoveLeaf(proxy); + var r_x = b2_aabbExtension + b2_aabbMultiplier * (displacement.x > 0 ? displacement.x : -displacement.x); + var r_y = b2_aabbExtension + b2_aabbMultiplier * (displacement.y > 0 ? displacement.y : -displacement.y); + proxy.aabb.lowerBound.x = aabb.lowerBound.x - r_x; + proxy.aabb.lowerBound.y = aabb.lowerBound.y - r_y; + proxy.aabb.upperBound.x = aabb.upperBound.x + r_x; + proxy.aabb.upperBound.y = aabb.upperBound.y + r_y; + this.InsertLeaf(proxy); + return true; + }; + b2DynamicTree.prototype.InsertLeaf = function (leaf) { + ++this.m_insertionCount; + if (null === this.m_root) { + this.m_root = leaf; + this.m_root.parent = null; + return; + } + var leafAABB = leaf.aabb; + var index = this.m_root; + while (!index.IsLeaf()) { + var child1 = verify(index.child1); + var child2 = verify(index.child2); + var area = index.aabb.GetPerimeter(); + var combinedAABB = b2DynamicTree.s_combinedAABB; + combinedAABB.Combine2(index.aabb, leafAABB); + var combinedArea = combinedAABB.GetPerimeter(); + var cost = 2 * combinedArea; + var inheritanceCost = 2 * (combinedArea - area); + var cost1 = void 0; + var aabb = b2DynamicTree.s_aabb; + var oldArea = void 0; + var newArea = void 0; + if (child1.IsLeaf()) { + aabb.Combine2(leafAABB, child1.aabb); + cost1 = aabb.GetPerimeter() + inheritanceCost; + } else { + aabb.Combine2(leafAABB, child1.aabb); + oldArea = child1.aabb.GetPerimeter(); + newArea = aabb.GetPerimeter(); + cost1 = newArea - oldArea + inheritanceCost; + } + var cost2 = void 0; + if (child2.IsLeaf()) { + aabb.Combine2(leafAABB, child2.aabb); + cost2 = aabb.GetPerimeter() + inheritanceCost; + } else { + aabb.Combine2(leafAABB, child2.aabb); + oldArea = child2.aabb.GetPerimeter(); + newArea = aabb.GetPerimeter(); + cost2 = newArea - oldArea + inheritanceCost; + } + if (cost < cost1 && cost < cost2) break; + index = cost1 < cost2 ? child1 : child2; + } + var sibling = index; + var oldParent = sibling.parent; + var newParent = this.AllocateNode(); + newParent.parent = oldParent; + delete newParent.userData; + newParent.aabb.Combine2(leafAABB, sibling.aabb); + newParent.height = sibling.height + 1; + if (oldParent) { + oldParent.child1 === sibling ? oldParent.child1 = newParent : oldParent.child2 = newParent; + newParent.child1 = sibling; + newParent.child2 = leaf; + sibling.parent = newParent; + leaf.parent = newParent; + } else { + newParent.child1 = sibling; + newParent.child2 = leaf; + sibling.parent = newParent; + leaf.parent = newParent; + this.m_root = newParent; + } + var index2 = leaf.parent; + while (null !== index2) { + index2 = this.Balance(index2); + var child1 = verify(index2.child1); + var child2 = verify(index2.child2); + index2.height = 1 + b2Max(child1.height, child2.height); + index2.aabb.Combine2(child1.aabb, child2.aabb); + index2 = index2.parent; + } + }; + b2DynamicTree.prototype.RemoveLeaf = function (leaf) { + if (leaf === this.m_root) { + this.m_root = null; + return; + } + var parent = verify(leaf.parent); + var grandParent = parent && parent.parent; + var sibling; + sibling = parent.child1 === leaf ? verify(parent.child2) : verify(parent.child1); + if (grandParent) { + grandParent.child1 === parent ? grandParent.child1 = sibling : grandParent.child2 = sibling; + sibling.parent = grandParent; + this.FreeNode(parent); + var index = grandParent; + while (index) { + index = this.Balance(index); + var child1 = verify(index.child1); + var child2 = verify(index.child2); + index.aabb.Combine2(child1.aabb, child2.aabb); + index.height = 1 + b2Max(child1.height, child2.height); + index = index.parent; + } + } else { + this.m_root = sibling; + sibling.parent = null; + this.FreeNode(parent); + } + }; + b2DynamicTree.prototype.Balance = function (A) { + if (A.IsLeaf() || A.height < 2) return A; + var B = verify(A.child1); + var C = verify(A.child2); + var balance = C.height - B.height; + if (balance > 1) { + var F = verify(C.child1); + var G = verify(C.child2); + C.child1 = A; + C.parent = A.parent; + A.parent = C; + null !== C.parent ? C.parent.child1 === A ? C.parent.child1 = C : C.parent.child2 = C : this.m_root = C; + if (F.height > G.height) { + C.child2 = F; + A.child2 = G; + G.parent = A; + A.aabb.Combine2(B.aabb, G.aabb); + C.aabb.Combine2(A.aabb, F.aabb); + A.height = 1 + b2Max(B.height, G.height); + C.height = 1 + b2Max(A.height, F.height); + } else { + C.child2 = G; + A.child2 = F; + F.parent = A; + A.aabb.Combine2(B.aabb, F.aabb); + C.aabb.Combine2(A.aabb, G.aabb); + A.height = 1 + b2Max(B.height, F.height); + C.height = 1 + b2Max(A.height, G.height); + } + return C; + } + if (balance < -1) { + var D = verify(B.child1); + var E = verify(B.child2); + B.child1 = A; + B.parent = A.parent; + A.parent = B; + null !== B.parent ? B.parent.child1 === A ? B.parent.child1 = B : B.parent.child2 = B : this.m_root = B; + if (D.height > E.height) { + B.child2 = D; + A.child1 = E; + E.parent = A; + A.aabb.Combine2(C.aabb, E.aabb); + B.aabb.Combine2(A.aabb, D.aabb); + A.height = 1 + b2Max(C.height, E.height); + B.height = 1 + b2Max(A.height, D.height); + } else { + B.child2 = E; + A.child1 = D; + D.parent = A; + A.aabb.Combine2(C.aabb, D.aabb); + B.aabb.Combine2(A.aabb, E.aabb); + A.height = 1 + b2Max(C.height, D.height); + B.height = 1 + b2Max(A.height, E.height); + } + return B; + } + return A; + }; + b2DynamicTree.prototype.GetHeight = function () { + if (null === this.m_root) return 0; + return this.m_root.height; + }; + b2DynamicTree.GetAreaNode = function (node) { + if (null === node) return 0; + if (node.IsLeaf()) return 0; + var area = node.aabb.GetPerimeter(); + area += b2DynamicTree.GetAreaNode(node.child1); + area += b2DynamicTree.GetAreaNode(node.child2); + return area; + }; + b2DynamicTree.prototype.GetAreaRatio = function () { + if (null === this.m_root) return 0; + var root = this.m_root; + var rootArea = root.aabb.GetPerimeter(); + var totalArea = b2DynamicTree.GetAreaNode(this.m_root); + return totalArea / rootArea; + }; + b2DynamicTree.prototype.ComputeHeightNode = function (node) { + if (!node || node.IsLeaf()) return 0; + var height1 = this.ComputeHeightNode(node.child1); + var height2 = this.ComputeHeightNode(node.child2); + return 1 + b2Max(height1, height2); + }; + b2DynamicTree.prototype.ComputeHeight = function () { + var height = this.ComputeHeightNode(this.m_root); + return height; + }; + b2DynamicTree.prototype.ValidateStructure = function (index) { + if (null === index) return; + index === this.m_root; + var node = index; + if (node.IsLeaf()) return; + var child1 = verify(node.child1); + var child2 = verify(node.child2); + this.ValidateStructure(child1); + this.ValidateStructure(child2); + }; + b2DynamicTree.prototype.ValidateMetrics = function (index) { + if (null === index) return; + var node = index; + if (node.IsLeaf()) return; + var child1 = verify(node.child1); + var child2 = verify(node.child2); + var aabb = b2DynamicTree.s_aabb; + aabb.Combine2(child1.aabb, child2.aabb); + this.ValidateMetrics(child1); + this.ValidateMetrics(child2); + }; + b2DynamicTree.prototype.Validate = function () { }; + b2DynamicTree.GetMaxBalanceNode = function (node, maxBalance) { + if (null === node) return maxBalance; + if (node.height <= 1) return maxBalance; + var child1 = verify(node.child1); + var child2 = verify(node.child2); + var balance = b2Abs(child2.height - child1.height); + return b2Max(maxBalance, balance); + }; + b2DynamicTree.prototype.GetMaxBalance = function () { + var maxBalance = b2DynamicTree.GetMaxBalanceNode(this.m_root, 0); + return maxBalance; + }; + b2DynamicTree.prototype.RebuildBottomUp = function () { + this.Validate(); + }; + b2DynamicTree.ShiftOriginNode = function (node, newOrigin) { + if (null === node) return; + if (node.height <= 1) return; + var child1 = node.child1; + var child2 = node.child2; + b2DynamicTree.ShiftOriginNode(child1, newOrigin); + b2DynamicTree.ShiftOriginNode(child2, newOrigin); + node.aabb.lowerBound.SelfSub(newOrigin); + node.aabb.upperBound.SelfSub(newOrigin); + }; + b2DynamicTree.prototype.ShiftOrigin = function (newOrigin) { + b2DynamicTree.ShiftOriginNode(this.m_root, newOrigin); + }; + b2DynamicTree.s_r = new b2Vec2(); + b2DynamicTree.s_v = new b2Vec2(); + b2DynamicTree.s_abs_v = new b2Vec2(); + b2DynamicTree.s_segmentAABB = new b2AABB(); + b2DynamicTree.s_subInput = new b2RayCastInput(); + b2DynamicTree.s_combinedAABB = new b2AABB(); + b2DynamicTree.s_aabb = new b2AABB(); + b2DynamicTree.s_node_id = 0; + return b2DynamicTree; + })(); + var b2Pair = (function () { + function b2Pair(proxyA, proxyB) { + this.proxyA = proxyA; + this.proxyB = proxyB; + } + return b2Pair; + })(); + var b2BroadPhase = (function () { + function b2BroadPhase() { + this.m_tree = new b2DynamicTree(); + this.m_proxyCount = 0; + this.m_moveCount = 0; + this.m_moveBuffer = []; + this.m_pairCount = 0; + this.m_pairBuffer = []; + } + b2BroadPhase.prototype.CreateProxy = function (aabb, userData) { + var proxy = this.m_tree.CreateProxy(aabb, userData); + ++this.m_proxyCount; + this.BufferMove(proxy); + return proxy; + }; + b2BroadPhase.prototype.DestroyProxy = function (proxy) { + this.UnBufferMove(proxy); + --this.m_proxyCount; + this.m_tree.DestroyProxy(proxy); + }; + b2BroadPhase.prototype.MoveProxy = function (proxy, aabb, displacement) { + var buffer = this.m_tree.MoveProxy(proxy, aabb, displacement); + buffer && this.BufferMove(proxy); + }; + b2BroadPhase.prototype.TouchProxy = function (proxy) { + this.BufferMove(proxy); + }; + b2BroadPhase.prototype.GetProxyCount = function () { + return this.m_proxyCount; + }; + b2BroadPhase.prototype.UpdatePairs = function (callback) { + var _this = this; + this.m_pairCount = 0; + var _loop_1 = function _loop_1(i_1) { + var queryProxy = this_1.m_moveBuffer[i_1]; + if (null === queryProxy) return "continue"; + var fatAABB = queryProxy.aabb; + this_1.m_tree.Query(fatAABB, (function (proxy) { + if (proxy.m_id === queryProxy.m_id) return true; + var proxyA; + var proxyB; + if (proxy.m_id < queryProxy.m_id) { + proxyA = proxy; + proxyB = queryProxy; + } else { + proxyA = queryProxy; + proxyB = proxy; + } + if (_this.m_pairCount === _this.m_pairBuffer.length) _this.m_pairBuffer[_this.m_pairCount] = new b2Pair(proxyA, proxyB); else { + var pair = _this.m_pairBuffer[_this.m_pairCount]; + pair.proxyA = proxyA; + pair.proxyB = proxyB; + } + ++_this.m_pairCount; + return true; + })); + }; + var this_1 = this; + for (var i_1 = 0; i_1 < this.m_moveCount; ++i_1) _loop_1(i_1); + this.m_moveCount = 0; + this.m_pairBuffer.length = this.m_pairCount; + this.m_pairBuffer.sort(b2PairLessThan); + var i = 0; + while (i < this.m_pairCount) { + var primaryPair = this.m_pairBuffer[i]; + var userDataA = primaryPair.proxyA.userData; + var userDataB = primaryPair.proxyB.userData; + userDataA && userDataB && callback(userDataA, userDataB); + ++i; + while (i < this.m_pairCount) { + var pair = this.m_pairBuffer[i]; + if (pair.proxyA.m_id !== primaryPair.proxyA.m_id || pair.proxyB.m_id !== primaryPair.proxyB.m_id) break; + ++i; + } + } + }; + b2BroadPhase.prototype.Query = function (aabb, callback) { + this.m_tree.Query(aabb, callback); + }; + b2BroadPhase.prototype.QueryPoint = function (point, callback) { + this.m_tree.QueryPoint(point, callback); + }; + b2BroadPhase.prototype.RayCast = function (input, callback) { + this.m_tree.RayCast(input, callback); + }; + b2BroadPhase.prototype.GetTreeHeight = function () { + return this.m_tree.GetHeight(); + }; + b2BroadPhase.prototype.GetTreeBalance = function () { + return this.m_tree.GetMaxBalance(); + }; + b2BroadPhase.prototype.GetTreeQuality = function () { + return this.m_tree.GetAreaRatio(); + }; + b2BroadPhase.prototype.ShiftOrigin = function (newOrigin) { + this.m_tree.ShiftOrigin(newOrigin); + }; + b2BroadPhase.prototype.BufferMove = function (proxy) { + this.m_moveBuffer[this.m_moveCount] = proxy; + ++this.m_moveCount; + }; + b2BroadPhase.prototype.UnBufferMove = function (proxy) { + var i = this.m_moveBuffer.indexOf(proxy); + this.m_moveBuffer[i] = null; + }; + return b2BroadPhase; + })(); + function b2PairLessThan(pair1, pair2) { + if (pair1.proxyA.m_id === pair2.proxyA.m_id) return pair1.proxyB.m_id - pair2.proxyB.m_id; + return pair1.proxyA.m_id - pair2.proxyA.m_id; + } + exports.b2_toiTime = 0; + exports.b2_toiMaxTime = 0; + exports.b2_toiCalls = 0; + exports.b2_toiIters = 0; + exports.b2_toiMaxIters = 0; + exports.b2_toiRootIters = 0; + exports.b2_toiMaxRootIters = 0; + function b2_toi_reset() { + exports.b2_toiTime = 0; + exports.b2_toiMaxTime = 0; + exports.b2_toiCalls = 0; + exports.b2_toiIters = 0; + exports.b2_toiMaxIters = 0; + exports.b2_toiRootIters = 0; + exports.b2_toiMaxRootIters = 0; + } + var b2TimeOfImpact_s_xfA = new b2Transform(); + var b2TimeOfImpact_s_xfB = new b2Transform(); + var b2TimeOfImpact_s_pointA = new b2Vec2(); + var b2TimeOfImpact_s_pointB = new b2Vec2(); + var b2TimeOfImpact_s_normal = new b2Vec2(); + var b2TimeOfImpact_s_axisA = new b2Vec2(); + var b2TimeOfImpact_s_axisB = new b2Vec2(); + var b2TOIInput = (function () { + function b2TOIInput() { + this.proxyA = new b2DistanceProxy(); + this.proxyB = new b2DistanceProxy(); + this.sweepA = new b2Sweep(); + this.sweepB = new b2Sweep(); + this.tMax = 0; + } + return b2TOIInput; + })(); + (function (b2TOIOutputState) { + b2TOIOutputState[b2TOIOutputState["e_unknown"] = 0] = "e_unknown"; + b2TOIOutputState[b2TOIOutputState["e_failed"] = 1] = "e_failed"; + b2TOIOutputState[b2TOIOutputState["e_overlapped"] = 2] = "e_overlapped"; + b2TOIOutputState[b2TOIOutputState["e_touching"] = 3] = "e_touching"; + b2TOIOutputState[b2TOIOutputState["e_separated"] = 4] = "e_separated"; + })(exports.b2TOIOutputState || (exports.b2TOIOutputState = {})); + var b2TOIOutput = (function () { + function b2TOIOutput() { + this.state = exports.b2TOIOutputState.e_unknown; + this.t = 0; + } + return b2TOIOutput; + })(); + (function (b2SeparationFunctionType) { + b2SeparationFunctionType[b2SeparationFunctionType["e_unknown"] = -1] = "e_unknown"; + b2SeparationFunctionType[b2SeparationFunctionType["e_points"] = 0] = "e_points"; + b2SeparationFunctionType[b2SeparationFunctionType["e_faceA"] = 1] = "e_faceA"; + b2SeparationFunctionType[b2SeparationFunctionType["e_faceB"] = 2] = "e_faceB"; + })(exports.b2SeparationFunctionType || (exports.b2SeparationFunctionType = {})); + var b2SeparationFunction = (function () { + function b2SeparationFunction() { + this.m_sweepA = new b2Sweep(); + this.m_sweepB = new b2Sweep(); + this.m_type = exports.b2SeparationFunctionType.e_unknown; + this.m_localPoint = new b2Vec2(); + this.m_axis = new b2Vec2(); + } + b2SeparationFunction.prototype.Initialize = function (cache, proxyA, sweepA, proxyB, sweepB, t1) { + this.m_proxyA = proxyA; + this.m_proxyB = proxyB; + var count = cache.count; + this.m_sweepA.Copy(sweepA); + this.m_sweepB.Copy(sweepB); + var xfA = b2TimeOfImpact_s_xfA; + var xfB = b2TimeOfImpact_s_xfB; + this.m_sweepA.GetTransform(xfA, t1); + this.m_sweepB.GetTransform(xfB, t1); + if (1 === count) { + this.m_type = exports.b2SeparationFunctionType.e_points; + var localPointA = this.m_proxyA.GetVertex(cache.indexA[0]); + var localPointB = this.m_proxyB.GetVertex(cache.indexB[0]); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + b2Vec2.SubVV(pointB, pointA, this.m_axis); + var s = this.m_axis.Normalize(); + this.m_localPoint.SetZero(); + return s; + } + if (cache.indexA[0] === cache.indexA[1]) { + this.m_type = exports.b2SeparationFunctionType.e_faceB; + var localPointB1 = this.m_proxyB.GetVertex(cache.indexB[0]); + var localPointB2 = this.m_proxyB.GetVertex(cache.indexB[1]); + b2Vec2.CrossVOne(b2Vec2.SubVV(localPointB2, localPointB1, b2Vec2.s_t0), this.m_axis).SelfNormalize(); + var normal = b2Rot.MulRV(xfB.q, this.m_axis, b2TimeOfImpact_s_normal); + b2Vec2.MidVV(localPointB1, localPointB2, this.m_localPoint); + var pointB = b2Transform.MulXV(xfB, this.m_localPoint, b2TimeOfImpact_s_pointB); + var localPointA = this.m_proxyA.GetVertex(cache.indexA[0]); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var s = b2Vec2.DotVV(b2Vec2.SubVV(pointA, pointB, b2Vec2.s_t0), normal); + if (s < 0) { + this.m_axis.SelfNeg(); + s = -s; + } + return s; + } + this.m_type = exports.b2SeparationFunctionType.e_faceA; + var localPointA1 = this.m_proxyA.GetVertex(cache.indexA[0]); + var localPointA2 = this.m_proxyA.GetVertex(cache.indexA[1]); + b2Vec2.CrossVOne(b2Vec2.SubVV(localPointA2, localPointA1, b2Vec2.s_t0), this.m_axis).SelfNormalize(); + var normal = b2Rot.MulRV(xfA.q, this.m_axis, b2TimeOfImpact_s_normal); + b2Vec2.MidVV(localPointA1, localPointA2, this.m_localPoint); + var pointA = b2Transform.MulXV(xfA, this.m_localPoint, b2TimeOfImpact_s_pointA); + var localPointB = this.m_proxyB.GetVertex(cache.indexB[0]); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + var s = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), normal); + if (s < 0) { + this.m_axis.SelfNeg(); + s = -s; + } + return s; + }; + b2SeparationFunction.prototype.FindMinSeparation = function (indexA, indexB, t) { + var xfA = b2TimeOfImpact_s_xfA; + var xfB = b2TimeOfImpact_s_xfB; + this.m_sweepA.GetTransform(xfA, t); + this.m_sweepB.GetTransform(xfB, t); + switch (this.m_type) { + case exports.b2SeparationFunctionType.e_points: + var axisA = b2Rot.MulTRV(xfA.q, this.m_axis, b2TimeOfImpact_s_axisA); + var axisB = b2Rot.MulTRV(xfB.q, b2Vec2.NegV(this.m_axis, b2Vec2.s_t0), b2TimeOfImpact_s_axisB); + indexA[0] = this.m_proxyA.GetSupport(axisA); + indexB[0] = this.m_proxyB.GetSupport(axisB); + var localPointA = this.m_proxyA.GetVertex(indexA[0]); + var localPointB = this.m_proxyB.GetVertex(indexB[0]); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), this.m_axis); + return separation; + + case exports.b2SeparationFunctionType.e_faceA: + var normal = b2Rot.MulRV(xfA.q, this.m_axis, b2TimeOfImpact_s_normal); + var pointA = b2Transform.MulXV(xfA, this.m_localPoint, b2TimeOfImpact_s_pointA); + var axisB = b2Rot.MulTRV(xfB.q, b2Vec2.NegV(normal, b2Vec2.s_t0), b2TimeOfImpact_s_axisB); + indexA[0] = -1; + indexB[0] = this.m_proxyB.GetSupport(axisB); + var localPointB = this.m_proxyB.GetVertex(indexB[0]); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), normal); + return separation; + + case exports.b2SeparationFunctionType.e_faceB: + var normal = b2Rot.MulRV(xfB.q, this.m_axis, b2TimeOfImpact_s_normal); + var pointB = b2Transform.MulXV(xfB, this.m_localPoint, b2TimeOfImpact_s_pointB); + var axisA = b2Rot.MulTRV(xfA.q, b2Vec2.NegV(normal, b2Vec2.s_t0), b2TimeOfImpact_s_axisA); + indexB[0] = -1; + indexA[0] = this.m_proxyA.GetSupport(axisA); + var localPointA = this.m_proxyA.GetVertex(indexA[0]); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointA, pointB, b2Vec2.s_t0), normal); + return separation; + + default: + indexA[0] = -1; + indexB[0] = -1; + return 0; + } + }; + b2SeparationFunction.prototype.Evaluate = function (indexA, indexB, t) { + var xfA = b2TimeOfImpact_s_xfA; + var xfB = b2TimeOfImpact_s_xfB; + this.m_sweepA.GetTransform(xfA, t); + this.m_sweepB.GetTransform(xfB, t); + switch (this.m_type) { + case exports.b2SeparationFunctionType.e_points: + var localPointA = this.m_proxyA.GetVertex(indexA); + var localPointB = this.m_proxyB.GetVertex(indexB); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), this.m_axis); + return separation; + + case exports.b2SeparationFunctionType.e_faceA: + var normal = b2Rot.MulRV(xfA.q, this.m_axis, b2TimeOfImpact_s_normal); + var pointA = b2Transform.MulXV(xfA, this.m_localPoint, b2TimeOfImpact_s_pointA); + var localPointB = this.m_proxyB.GetVertex(indexB); + var pointB = b2Transform.MulXV(xfB, localPointB, b2TimeOfImpact_s_pointB); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), normal); + return separation; + + case exports.b2SeparationFunctionType.e_faceB: + var normal = b2Rot.MulRV(xfB.q, this.m_axis, b2TimeOfImpact_s_normal); + var pointB = b2Transform.MulXV(xfB, this.m_localPoint, b2TimeOfImpact_s_pointB); + var localPointA = this.m_proxyA.GetVertex(indexA); + var pointA = b2Transform.MulXV(xfA, localPointA, b2TimeOfImpact_s_pointA); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(pointA, pointB, b2Vec2.s_t0), normal); + return separation; + + default: + return 0; + } + }; + return b2SeparationFunction; + })(); + var b2TimeOfImpact_s_timer = new b2Timer(); + var b2TimeOfImpact_s_cache = new b2SimplexCache(); + var b2TimeOfImpact_s_distanceInput = new b2DistanceInput(); + var b2TimeOfImpact_s_distanceOutput = new b2DistanceOutput(); + var b2TimeOfImpact_s_fcn = new b2SeparationFunction(); + var b2TimeOfImpact_s_indexA = [0]; + var b2TimeOfImpact_s_indexB = [0]; + var b2TimeOfImpact_s_sweepA = new b2Sweep(); + var b2TimeOfImpact_s_sweepB = new b2Sweep(); + function b2TimeOfImpact(output, input) { + var timer = b2TimeOfImpact_s_timer.Reset(); + ++exports.b2_toiCalls; + output.state = exports.b2TOIOutputState.e_unknown; + output.t = input.tMax; + var proxyA = input.proxyA; + var proxyB = input.proxyB; + var sweepA = b2TimeOfImpact_s_sweepA.Copy(input.sweepA); + var sweepB = b2TimeOfImpact_s_sweepB.Copy(input.sweepB); + sweepA.Normalize(); + sweepB.Normalize(); + var tMax = input.tMax; + var totalRadius = proxyA.m_radius + proxyB.m_radius; + var target = b2Max(b2_linearSlop, totalRadius - 3 * b2_linearSlop); + var tolerance = .25 * b2_linearSlop; + var t1 = 0; + var k_maxIterations = 20; + var iter = 0; + var cache = b2TimeOfImpact_s_cache; + cache.count = 0; + var distanceInput = b2TimeOfImpact_s_distanceInput; + distanceInput.proxyA.Copy(input.proxyA); + distanceInput.proxyB.Copy(input.proxyB); + distanceInput.useRadii = false; + for (; ;) { + var xfA = b2TimeOfImpact_s_xfA; + var xfB = b2TimeOfImpact_s_xfB; + sweepA.GetTransform(xfA, t1); + sweepB.GetTransform(xfB, t1); + distanceInput.transformA.Copy(xfA); + distanceInput.transformB.Copy(xfB); + var distanceOutput = b2TimeOfImpact_s_distanceOutput; + b2Distance(distanceOutput, cache, distanceInput); + if (distanceOutput.distance <= 0) { + output.state = exports.b2TOIOutputState.e_overlapped; + output.t = 0; + break; + } + if (distanceOutput.distance < target + tolerance) { + output.state = exports.b2TOIOutputState.e_touching; + output.t = t1; + break; + } + var fcn = b2TimeOfImpact_s_fcn; + fcn.Initialize(cache, proxyA, sweepA, proxyB, sweepB, t1); + var done = false; + var t2 = tMax; + var pushBackIter = 0; + for (; ;) { + var indexA = b2TimeOfImpact_s_indexA; + var indexB = b2TimeOfImpact_s_indexB; + var s2 = fcn.FindMinSeparation(indexA, indexB, t2); + if (s2 > target + tolerance) { + output.state = exports.b2TOIOutputState.e_separated; + output.t = tMax; + done = true; + break; + } + if (s2 > target - tolerance) { + t1 = t2; + break; + } + var s1 = fcn.Evaluate(indexA[0], indexB[0], t1); + if (s1 < target - tolerance) { + output.state = exports.b2TOIOutputState.e_failed; + output.t = t1; + done = true; + break; + } + if (s1 <= target + tolerance) { + output.state = exports.b2TOIOutputState.e_touching; + output.t = t1; + done = true; + break; + } + var rootIterCount = 0; + var a1 = t1; + var a2 = t2; + for (; ;) { + var t = 0; + t = 1 & rootIterCount ? a1 + (target - s1) * (a2 - a1) / (s2 - s1) : .5 * (a1 + a2); + ++rootIterCount; + ++exports.b2_toiRootIters; + var s = fcn.Evaluate(indexA[0], indexB[0], t); + if (b2Abs(s - target) < tolerance) { + t2 = t; + break; + } + if (s > target) { + a1 = t; + s1 = s; + } else { + a2 = t; + s2 = s; + } + if (50 === rootIterCount) break; + } + exports.b2_toiMaxRootIters = b2Max(exports.b2_toiMaxRootIters, rootIterCount); + ++pushBackIter; + if (pushBackIter === b2_maxPolygonVertices) break; + } + ++iter; + ++exports.b2_toiIters; + if (done) break; + if (iter === k_maxIterations) { + output.state = exports.b2TOIOutputState.e_failed; + output.t = t1; + break; + } + } + exports.b2_toiMaxIters = b2Max(exports.b2_toiMaxIters, iter); + var time = timer.GetMilliseconds(); + exports.b2_toiMaxTime = b2Max(exports.b2_toiMaxTime, time); + exports.b2_toiTime += time; + } + var b2CollideCircles_s_pA = new b2Vec2(); + var b2CollideCircles_s_pB = new b2Vec2(); + function b2CollideCircles(manifold, circleA, xfA, circleB, xfB) { + manifold.pointCount = 0; + var pA = b2Transform.MulXV(xfA, circleA.m_p, b2CollideCircles_s_pA); + var pB = b2Transform.MulXV(xfB, circleB.m_p, b2CollideCircles_s_pB); + var distSqr = b2Vec2.DistanceSquaredVV(pA, pB); + var radius = circleA.m_radius + circleB.m_radius; + if (distSqr > radius * radius) return; + manifold.type = exports.b2ManifoldType.e_circles; + manifold.localPoint.Copy(circleA.m_p); + manifold.localNormal.SetZero(); + manifold.pointCount = 1; + manifold.points[0].localPoint.Copy(circleB.m_p); + manifold.points[0].id.key = 0; + } + var b2CollidePolygonAndCircle_s_c = new b2Vec2(); + var b2CollidePolygonAndCircle_s_cLocal = new b2Vec2(); + var b2CollidePolygonAndCircle_s_faceCenter = new b2Vec2(); + function b2CollidePolygonAndCircle(manifold, polygonA, xfA, circleB, xfB) { + manifold.pointCount = 0; + var c = b2Transform.MulXV(xfB, circleB.m_p, b2CollidePolygonAndCircle_s_c); + var cLocal = b2Transform.MulTXV(xfA, c, b2CollidePolygonAndCircle_s_cLocal); + var normalIndex = 0; + var separation = -b2_maxFloat; + var radius = polygonA.m_radius + circleB.m_radius; + var vertexCount = polygonA.m_count; + var vertices = polygonA.m_vertices; + var normals = polygonA.m_normals; + for (var i = 0; i < vertexCount; ++i) { + var s = b2Vec2.DotVV(normals[i], b2Vec2.SubVV(cLocal, vertices[i], b2Vec2.s_t0)); + if (s > radius) return; + if (s > separation) { + separation = s; + normalIndex = i; + } + } + var vertIndex1 = normalIndex; + var vertIndex2 = (vertIndex1 + 1) % vertexCount; + var v1 = vertices[vertIndex1]; + var v2 = vertices[vertIndex2]; + if (separation < b2_epsilon) { + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_faceA; + manifold.localNormal.Copy(normals[normalIndex]); + b2Vec2.MidVV(v1, v2, manifold.localPoint); + manifold.points[0].localPoint.Copy(circleB.m_p); + manifold.points[0].id.key = 0; + return; + } + var u1 = b2Vec2.DotVV(b2Vec2.SubVV(cLocal, v1, b2Vec2.s_t0), b2Vec2.SubVV(v2, v1, b2Vec2.s_t1)); + var u2 = b2Vec2.DotVV(b2Vec2.SubVV(cLocal, v2, b2Vec2.s_t0), b2Vec2.SubVV(v1, v2, b2Vec2.s_t1)); + if (u1 <= 0) { + if (b2Vec2.DistanceSquaredVV(cLocal, v1) > radius * radius) return; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_faceA; + b2Vec2.SubVV(cLocal, v1, manifold.localNormal).SelfNormalize(); + manifold.localPoint.Copy(v1); + manifold.points[0].localPoint.Copy(circleB.m_p); + manifold.points[0].id.key = 0; + } else if (u2 <= 0) { + if (b2Vec2.DistanceSquaredVV(cLocal, v2) > radius * radius) return; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_faceA; + b2Vec2.SubVV(cLocal, v2, manifold.localNormal).SelfNormalize(); + manifold.localPoint.Copy(v2); + manifold.points[0].localPoint.Copy(circleB.m_p); + manifold.points[0].id.key = 0; + } else { + var faceCenter = b2Vec2.MidVV(v1, v2, b2CollidePolygonAndCircle_s_faceCenter); + var separation_1 = b2Vec2.DotVV(b2Vec2.SubVV(cLocal, faceCenter, b2Vec2.s_t1), normals[vertIndex1]); + if (separation_1 > radius) return; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_faceA; + manifold.localNormal.Copy(normals[vertIndex1]).SelfNormalize(); + manifold.localPoint.Copy(faceCenter); + manifold.points[0].localPoint.Copy(circleB.m_p); + manifold.points[0].id.key = 0; + } + } + var b2EdgeSeparation_s_normal1World = new b2Vec2(); + var b2EdgeSeparation_s_normal1 = new b2Vec2(); + var b2EdgeSeparation_s_v1 = new b2Vec2(); + var b2EdgeSeparation_s_v2 = new b2Vec2(); + function b2EdgeSeparation(poly1, xf1, edge1, poly2, xf2) { + var vertices1 = poly1.m_vertices; + var normals1 = poly1.m_normals; + var count2 = poly2.m_count; + var vertices2 = poly2.m_vertices; + var normal1World = b2Rot.MulRV(xf1.q, normals1[edge1], b2EdgeSeparation_s_normal1World); + var normal1 = b2Rot.MulTRV(xf2.q, normal1World, b2EdgeSeparation_s_normal1); + var index = 0; + var minDot = b2_maxFloat; + for (var i = 0; i < count2; ++i) { + var dot = b2Vec2.DotVV(vertices2[i], normal1); + if (dot < minDot) { + minDot = dot; + index = i; + } + } + var v1 = b2Transform.MulXV(xf1, vertices1[edge1], b2EdgeSeparation_s_v1); + var v2 = b2Transform.MulXV(xf2, vertices2[index], b2EdgeSeparation_s_v2); + var separation = b2Vec2.DotVV(b2Vec2.SubVV(v2, v1, b2Vec2.s_t0), normal1World); + return separation; + } + var b2FindMaxSeparation_s_d = new b2Vec2(); + var b2FindMaxSeparation_s_dLocal1 = new b2Vec2(); + function b2FindMaxSeparation(edgeIndex, poly1, xf1, poly2, xf2) { + var count1 = poly1.m_count; + var normals1 = poly1.m_normals; + var d = b2Vec2.SubVV(b2Transform.MulXV(xf2, poly2.m_centroid, b2Vec2.s_t0), b2Transform.MulXV(xf1, poly1.m_centroid, b2Vec2.s_t1), b2FindMaxSeparation_s_d); + var dLocal1 = b2Rot.MulTRV(xf1.q, d, b2FindMaxSeparation_s_dLocal1); + var edge = 0; + var maxDot = -b2_maxFloat; + for (var i = 0; i < count1; ++i) { + var dot = b2Vec2.DotVV(normals1[i], dLocal1); + if (dot > maxDot) { + maxDot = dot; + edge = i; + } + } + var s = b2EdgeSeparation(poly1, xf1, edge, poly2, xf2); + var prevEdge = (edge + count1 - 1) % count1; + var sPrev = b2EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2); + var nextEdge = (edge + 1) % count1; + var sNext = b2EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2); + var bestEdge = 0; + var bestSeparation = 0; + var increment = 0; + if (sPrev > s && sPrev > sNext) { + increment = -1; + bestEdge = prevEdge; + bestSeparation = sPrev; + } else { + if (!(sNext > s)) { + edgeIndex[0] = edge; + return s; + } + increment = 1; + bestEdge = nextEdge; + bestSeparation = sNext; + } + while (true) { + edge = -1 === increment ? (bestEdge + count1 - 1) % count1 : (bestEdge + 1) % count1; + s = b2EdgeSeparation(poly1, xf1, edge, poly2, xf2); + if (!(s > bestSeparation)) break; + bestEdge = edge; + bestSeparation = s; + } + edgeIndex[0] = bestEdge; + return bestSeparation; + } + var b2FindIncidentEdge_s_normal1 = new b2Vec2(); + function b2FindIncidentEdge(c, poly1, xf1, edge1, poly2, xf2) { + var normals1 = poly1.m_normals; + var count2 = poly2.m_count; + var vertices2 = poly2.m_vertices; + var normals2 = poly2.m_normals; + var normal1 = b2Rot.MulTRV(xf2.q, b2Rot.MulRV(xf1.q, normals1[edge1], b2Vec2.s_t0), b2FindIncidentEdge_s_normal1); + var index = 0; + var minDot = b2_maxFloat; + for (var i = 0; i < count2; ++i) { + var dot = b2Vec2.DotVV(normal1, normals2[i]); + if (dot < minDot) { + minDot = dot; + index = i; + } + } + var i1 = index; + var i2 = (i1 + 1) % count2; + var c0 = c[0]; + b2Transform.MulXV(xf2, vertices2[i1], c0.v); + var cf0 = c0.id.cf; + cf0.indexA = edge1; + cf0.indexB = i1; + cf0.typeA = exports.b2ContactFeatureType.e_face; + cf0.typeB = exports.b2ContactFeatureType.e_vertex; + var c1 = c[1]; + b2Transform.MulXV(xf2, vertices2[i2], c1.v); + var cf1 = c1.id.cf; + cf1.indexA = edge1; + cf1.indexB = i2; + cf1.typeA = exports.b2ContactFeatureType.e_face; + cf1.typeB = exports.b2ContactFeatureType.e_vertex; + } + var b2CollidePolygons_s_incidentEdge = b2ClipVertex.MakeArray(2); + var b2CollidePolygons_s_clipPoints1 = b2ClipVertex.MakeArray(2); + var b2CollidePolygons_s_clipPoints2 = b2ClipVertex.MakeArray(2); + var b2CollidePolygons_s_edgeA = [0]; + var b2CollidePolygons_s_edgeB = [0]; + var b2CollidePolygons_s_localTangent = new b2Vec2(); + var b2CollidePolygons_s_localNormal = new b2Vec2(); + var b2CollidePolygons_s_planePoint = new b2Vec2(); + var b2CollidePolygons_s_normal = new b2Vec2(); + var b2CollidePolygons_s_tangent = new b2Vec2(); + var b2CollidePolygons_s_ntangent = new b2Vec2(); + var b2CollidePolygons_s_v11 = new b2Vec2(); + var b2CollidePolygons_s_v12 = new b2Vec2(); + function b2CollidePolygons(manifold, polyA, xfA, polyB, xfB) { + manifold.pointCount = 0; + var totalRadius = polyA.m_radius + polyB.m_radius; + var edgeA = b2CollidePolygons_s_edgeA; + edgeA[0] = 0; + var separationA = b2FindMaxSeparation(edgeA, polyA, xfA, polyB, xfB); + if (separationA > totalRadius) return; + var edgeB = b2CollidePolygons_s_edgeB; + edgeB[0] = 0; + var separationB = b2FindMaxSeparation(edgeB, polyB, xfB, polyA, xfA); + if (separationB > totalRadius) return; + var poly1; + var poly2; + var xf1, xf2; + var edge1 = 0; + var flip = 0; + var k_relativeTol = .98; + var k_absoluteTol = .001; + if (separationB > k_relativeTol * separationA + k_absoluteTol) { + poly1 = polyB; + poly2 = polyA; + xf1 = xfB; + xf2 = xfA; + edge1 = edgeB[0]; + manifold.type = exports.b2ManifoldType.e_faceB; + flip = 1; + } else { + poly1 = polyA; + poly2 = polyB; + xf1 = xfA; + xf2 = xfB; + edge1 = edgeA[0]; + manifold.type = exports.b2ManifoldType.e_faceA; + flip = 0; + } + var incidentEdge = b2CollidePolygons_s_incidentEdge; + b2FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); + var count1 = poly1.m_count; + var vertices1 = poly1.m_vertices; + var iv1 = edge1; + var iv2 = (edge1 + 1) % count1; + var local_v11 = vertices1[iv1]; + var local_v12 = vertices1[iv2]; + var localTangent = b2Vec2.SubVV(local_v12, local_v11, b2CollidePolygons_s_localTangent); + localTangent.Normalize(); + var localNormal = b2Vec2.CrossVOne(localTangent, b2CollidePolygons_s_localNormal); + var planePoint = b2Vec2.MidVV(local_v11, local_v12, b2CollidePolygons_s_planePoint); + var tangent = b2Rot.MulRV(xf1.q, localTangent, b2CollidePolygons_s_tangent); + var normal = b2Vec2.CrossVOne(tangent, b2CollidePolygons_s_normal); + var v11 = b2Transform.MulXV(xf1, local_v11, b2CollidePolygons_s_v11); + var v12 = b2Transform.MulXV(xf1, local_v12, b2CollidePolygons_s_v12); + var frontOffset = b2Vec2.DotVV(normal, v11); + var sideOffset1 = -b2Vec2.DotVV(tangent, v11) + totalRadius; + var sideOffset2 = b2Vec2.DotVV(tangent, v12) + totalRadius; + var clipPoints1 = b2CollidePolygons_s_clipPoints1; + var clipPoints2 = b2CollidePolygons_s_clipPoints2; + var np; + var ntangent = b2Vec2.NegV(tangent, b2CollidePolygons_s_ntangent); + np = b2ClipSegmentToLine(clipPoints1, incidentEdge, ntangent, sideOffset1, iv1); + if (np < 2) return; + np = b2ClipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2); + if (np < 2) return; + manifold.localNormal.Copy(localNormal); + manifold.localPoint.Copy(planePoint); + var pointCount = 0; + for (var i = 0; i < b2_maxManifoldPoints; ++i) { + var cv = clipPoints2[i]; + var separation = b2Vec2.DotVV(normal, cv.v) - frontOffset; + if (separation <= totalRadius) { + var cp = manifold.points[pointCount]; + b2Transform.MulTXV(xf2, cv.v, cp.localPoint); + cp.id.Copy(cv.id); + if (flip) { + var cf = cp.id.cf; + cp.id.cf.indexA = cf.indexB; + cp.id.cf.indexB = cf.indexA; + cp.id.cf.typeA = cf.typeB; + cp.id.cf.typeB = cf.typeA; + } + ++pointCount; + } + } + manifold.pointCount = pointCount; + } + var b2CollideEdgeAndCircle_s_Q = new b2Vec2(); + var b2CollideEdgeAndCircle_s_e = new b2Vec2(); + var b2CollideEdgeAndCircle_s_d = new b2Vec2(); + var b2CollideEdgeAndCircle_s_e1 = new b2Vec2(); + var b2CollideEdgeAndCircle_s_e2 = new b2Vec2(); + var b2CollideEdgeAndCircle_s_P = new b2Vec2(); + var b2CollideEdgeAndCircle_s_n = new b2Vec2(); + var b2CollideEdgeAndCircle_s_id = new b2ContactID(); + function b2CollideEdgeAndCircle(manifold, edgeA, xfA, circleB, xfB) { + manifold.pointCount = 0; + var Q = b2Transform.MulTXV(xfA, b2Transform.MulXV(xfB, circleB.m_p, b2Vec2.s_t0), b2CollideEdgeAndCircle_s_Q); + var A = edgeA.m_vertex1; + var B = edgeA.m_vertex2; + var e = b2Vec2.SubVV(B, A, b2CollideEdgeAndCircle_s_e); + var u = b2Vec2.DotVV(e, b2Vec2.SubVV(B, Q, b2Vec2.s_t0)); + var v = b2Vec2.DotVV(e, b2Vec2.SubVV(Q, A, b2Vec2.s_t0)); + var radius = edgeA.m_radius + circleB.m_radius; + var id = b2CollideEdgeAndCircle_s_id; + id.cf.indexB = 0; + id.cf.typeB = exports.b2ContactFeatureType.e_vertex; + if (v <= 0) { + var P_1 = A; + var d_1 = b2Vec2.SubVV(Q, P_1, b2CollideEdgeAndCircle_s_d); + var dd_1 = b2Vec2.DotVV(d_1, d_1); + if (dd_1 > radius * radius) return; + if (edgeA.m_hasVertex0) { + var A1 = edgeA.m_vertex0; + var B1 = A; + var e1 = b2Vec2.SubVV(B1, A1, b2CollideEdgeAndCircle_s_e1); + var u1 = b2Vec2.DotVV(e1, b2Vec2.SubVV(B1, Q, b2Vec2.s_t0)); + if (u1 > 0) return; + } + id.cf.indexA = 0; + id.cf.typeA = exports.b2ContactFeatureType.e_vertex; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_circles; + manifold.localNormal.SetZero(); + manifold.localPoint.Copy(P_1); + manifold.points[0].id.Copy(id); + manifold.points[0].localPoint.Copy(circleB.m_p); + return; + } + if (u <= 0) { + var P_2 = B; + var d_2 = b2Vec2.SubVV(Q, P_2, b2CollideEdgeAndCircle_s_d); + var dd_2 = b2Vec2.DotVV(d_2, d_2); + if (dd_2 > radius * radius) return; + if (edgeA.m_hasVertex3) { + var B2 = edgeA.m_vertex3; + var A2 = B; + var e2 = b2Vec2.SubVV(B2, A2, b2CollideEdgeAndCircle_s_e2); + var v2 = b2Vec2.DotVV(e2, b2Vec2.SubVV(Q, A2, b2Vec2.s_t0)); + if (v2 > 0) return; + } + id.cf.indexA = 1; + id.cf.typeA = exports.b2ContactFeatureType.e_vertex; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_circles; + manifold.localNormal.SetZero(); + manifold.localPoint.Copy(P_2); + manifold.points[0].id.Copy(id); + manifold.points[0].localPoint.Copy(circleB.m_p); + return; + } + var den = b2Vec2.DotVV(e, e); + var P = b2CollideEdgeAndCircle_s_P; + P.x = 1 / den * (u * A.x + v * B.x); + P.y = 1 / den * (u * A.y + v * B.y); + var d = b2Vec2.SubVV(Q, P, b2CollideEdgeAndCircle_s_d); + var dd = b2Vec2.DotVV(d, d); + if (dd > radius * radius) return; + var n = b2CollideEdgeAndCircle_s_n.Set(-e.y, e.x); + b2Vec2.DotVV(n, b2Vec2.SubVV(Q, A, b2Vec2.s_t0)) < 0 && n.Set(-n.x, -n.y); + n.Normalize(); + id.cf.indexA = 0; + id.cf.typeA = exports.b2ContactFeatureType.e_face; + manifold.pointCount = 1; + manifold.type = exports.b2ManifoldType.e_faceA; + manifold.localNormal.Copy(n); + manifold.localPoint.Copy(A); + manifold.points[0].id.Copy(id); + manifold.points[0].localPoint.Copy(circleB.m_p); + } + var b2EPAxis = (function () { + function b2EPAxis() { + this.type = 0; + this.index = 0; + this.separation = 0; + } + return b2EPAxis; + })(); + var b2TempPolygon = (function () { + function b2TempPolygon() { + this.vertices = b2Vec2.MakeArray(b2_maxPolygonVertices); + this.normals = b2Vec2.MakeArray(b2_maxPolygonVertices); + this.count = 0; + } + return b2TempPolygon; + })(); + var b2ReferenceFace = (function () { + function b2ReferenceFace() { + this.i1 = 0; + this.i2 = 0; + this.v1 = new b2Vec2(); + this.v2 = new b2Vec2(); + this.normal = new b2Vec2(); + this.sideNormal1 = new b2Vec2(); + this.sideOffset1 = 0; + this.sideNormal2 = new b2Vec2(); + this.sideOffset2 = 0; + } + return b2ReferenceFace; + })(); + var b2EPCollider = (function () { + function b2EPCollider() { + this.m_polygonB = new b2TempPolygon(); + this.m_xf = new b2Transform(); + this.m_centroidB = new b2Vec2(); + this.m_v0 = new b2Vec2(); + this.m_v1 = new b2Vec2(); + this.m_v2 = new b2Vec2(); + this.m_v3 = new b2Vec2(); + this.m_normal0 = new b2Vec2(); + this.m_normal1 = new b2Vec2(); + this.m_normal2 = new b2Vec2(); + this.m_normal = new b2Vec2(); + this.m_type1 = 0; + this.m_type2 = 0; + this.m_lowerLimit = new b2Vec2(); + this.m_upperLimit = new b2Vec2(); + this.m_radius = 0; + this.m_front = false; + } + b2EPCollider.prototype.Collide = function (manifold, edgeA, xfA, polygonB, xfB) { + b2Transform.MulTXX(xfA, xfB, this.m_xf); + b2Transform.MulXV(this.m_xf, polygonB.m_centroid, this.m_centroidB); + this.m_v0.Copy(edgeA.m_vertex0); + this.m_v1.Copy(edgeA.m_vertex1); + this.m_v2.Copy(edgeA.m_vertex2); + this.m_v3.Copy(edgeA.m_vertex3); + var hasVertex0 = edgeA.m_hasVertex0; + var hasVertex3 = edgeA.m_hasVertex3; + var edge1 = b2Vec2.SubVV(this.m_v2, this.m_v1, b2EPCollider.s_edge1); + edge1.Normalize(); + this.m_normal1.Set(edge1.y, -edge1.x); + var offset1 = b2Vec2.DotVV(this.m_normal1, b2Vec2.SubVV(this.m_centroidB, this.m_v1, b2Vec2.s_t0)); + var offset0 = 0; + var offset2 = 0; + var convex1 = false; + var convex2 = false; + if (hasVertex0) { + var edge0 = b2Vec2.SubVV(this.m_v1, this.m_v0, b2EPCollider.s_edge0); + edge0.Normalize(); + this.m_normal0.Set(edge0.y, -edge0.x); + convex1 = b2Vec2.CrossVV(edge0, edge1) >= 0; + offset0 = b2Vec2.DotVV(this.m_normal0, b2Vec2.SubVV(this.m_centroidB, this.m_v0, b2Vec2.s_t0)); + } + if (hasVertex3) { + var edge2 = b2Vec2.SubVV(this.m_v3, this.m_v2, b2EPCollider.s_edge2); + edge2.Normalize(); + this.m_normal2.Set(edge2.y, -edge2.x); + convex2 = b2Vec2.CrossVV(edge1, edge2) > 0; + offset2 = b2Vec2.DotVV(this.m_normal2, b2Vec2.SubVV(this.m_centroidB, this.m_v2, b2Vec2.s_t0)); + } + if (hasVertex0 && hasVertex3) if (convex1 && convex2) { + this.m_front = offset0 >= 0 || offset1 >= 0 || offset2 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal0); + this.m_upperLimit.Copy(this.m_normal2); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } + } else if (convex1) { + this.m_front = offset0 >= 0 || offset1 >= 0 && offset2 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal0); + this.m_upperLimit.Copy(this.m_normal1); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal2).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } + } else if (convex2) { + this.m_front = offset2 >= 0 || offset0 >= 0 && offset1 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal2); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal0).SelfNeg(); + } + } else { + this.m_front = offset0 >= 0 && offset1 >= 0 && offset2 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal1); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal2).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal0).SelfNeg(); + } + } else if (hasVertex0) if (convex1) { + this.m_front = offset0 >= 0 || offset1 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal0); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } + } else { + this.m_front = offset0 >= 0 && offset1 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal0).SelfNeg(); + } + } else if (hasVertex3) if (convex2) { + this.m_front = offset1 >= 0 || offset2 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal2); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1); + } + } else { + this.m_front = offset1 >= 0 && offset2 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal2).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1); + } + } else { + this.m_front = offset1 >= 0; + if (this.m_front) { + this.m_normal.Copy(this.m_normal1); + this.m_lowerLimit.Copy(this.m_normal1).SelfNeg(); + this.m_upperLimit.Copy(this.m_normal1).SelfNeg(); + } else { + this.m_normal.Copy(this.m_normal1).SelfNeg(); + this.m_lowerLimit.Copy(this.m_normal1); + this.m_upperLimit.Copy(this.m_normal1); + } + } + this.m_polygonB.count = polygonB.m_count; + for (var i = 0; i < polygonB.m_count; ++i) { + b2Transform.MulXV(this.m_xf, polygonB.m_vertices[i], this.m_polygonB.vertices[i]); + b2Rot.MulRV(this.m_xf.q, polygonB.m_normals[i], this.m_polygonB.normals[i]); + } + this.m_radius = polygonB.m_radius + edgeA.m_radius; + manifold.pointCount = 0; + var edgeAxis = this.ComputeEdgeSeparation(b2EPCollider.s_edgeAxis); + if (0 === edgeAxis.type) return; + if (edgeAxis.separation > this.m_radius) return; + var polygonAxis = this.ComputePolygonSeparation(b2EPCollider.s_polygonAxis); + if (0 !== polygonAxis.type && polygonAxis.separation > this.m_radius) return; + var k_relativeTol = .98; + var k_absoluteTol = .001; + var primaryAxis; + primaryAxis = 0 === polygonAxis.type ? edgeAxis : polygonAxis.separation > k_relativeTol * edgeAxis.separation + k_absoluteTol ? polygonAxis : edgeAxis; + var ie = b2EPCollider.s_ie; + var rf = b2EPCollider.s_rf; + if (1 === primaryAxis.type) { + manifold.type = exports.b2ManifoldType.e_faceA; + var bestIndex = 0; + var bestValue = b2Vec2.DotVV(this.m_normal, this.m_polygonB.normals[0]); + for (var i = 1; i < this.m_polygonB.count; ++i) { + var value = b2Vec2.DotVV(this.m_normal, this.m_polygonB.normals[i]); + if (value < bestValue) { + bestValue = value; + bestIndex = i; + } + } + var i1 = bestIndex; + var i2 = (i1 + 1) % this.m_polygonB.count; + var ie0 = ie[0]; + ie0.v.Copy(this.m_polygonB.vertices[i1]); + ie0.id.cf.indexA = 0; + ie0.id.cf.indexB = i1; + ie0.id.cf.typeA = exports.b2ContactFeatureType.e_face; + ie0.id.cf.typeB = exports.b2ContactFeatureType.e_vertex; + var ie1 = ie[1]; + ie1.v.Copy(this.m_polygonB.vertices[i2]); + ie1.id.cf.indexA = 0; + ie1.id.cf.indexB = i2; + ie1.id.cf.typeA = exports.b2ContactFeatureType.e_face; + ie1.id.cf.typeB = exports.b2ContactFeatureType.e_vertex; + if (this.m_front) { + rf.i1 = 0; + rf.i2 = 1; + rf.v1.Copy(this.m_v1); + rf.v2.Copy(this.m_v2); + rf.normal.Copy(this.m_normal1); + } else { + rf.i1 = 1; + rf.i2 = 0; + rf.v1.Copy(this.m_v2); + rf.v2.Copy(this.m_v1); + rf.normal.Copy(this.m_normal1).SelfNeg(); + } + } else { + manifold.type = exports.b2ManifoldType.e_faceB; + var ie0 = ie[0]; + ie0.v.Copy(this.m_v1); + ie0.id.cf.indexA = 0; + ie0.id.cf.indexB = primaryAxis.index; + ie0.id.cf.typeA = exports.b2ContactFeatureType.e_vertex; + ie0.id.cf.typeB = exports.b2ContactFeatureType.e_face; + var ie1 = ie[1]; + ie1.v.Copy(this.m_v2); + ie1.id.cf.indexA = 0; + ie1.id.cf.indexB = primaryAxis.index; + ie1.id.cf.typeA = exports.b2ContactFeatureType.e_vertex; + ie1.id.cf.typeB = exports.b2ContactFeatureType.e_face; + rf.i1 = primaryAxis.index; + rf.i2 = (rf.i1 + 1) % this.m_polygonB.count; + rf.v1.Copy(this.m_polygonB.vertices[rf.i1]); + rf.v2.Copy(this.m_polygonB.vertices[rf.i2]); + rf.normal.Copy(this.m_polygonB.normals[rf.i1]); + } + rf.sideNormal1.Set(rf.normal.y, -rf.normal.x); + rf.sideNormal2.Copy(rf.sideNormal1).SelfNeg(); + rf.sideOffset1 = b2Vec2.DotVV(rf.sideNormal1, rf.v1); + rf.sideOffset2 = b2Vec2.DotVV(rf.sideNormal2, rf.v2); + var clipPoints1 = b2EPCollider.s_clipPoints1; + var clipPoints2 = b2EPCollider.s_clipPoints2; + var np = 0; + np = b2ClipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1); + if (np < b2_maxManifoldPoints) return; + np = b2ClipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2); + if (np < b2_maxManifoldPoints) return; + if (1 === primaryAxis.type) { + manifold.localNormal.Copy(rf.normal); + manifold.localPoint.Copy(rf.v1); + } else { + manifold.localNormal.Copy(polygonB.m_normals[rf.i1]); + manifold.localPoint.Copy(polygonB.m_vertices[rf.i1]); + } + var pointCount = 0; + for (var i = 0; i < b2_maxManifoldPoints; ++i) { + var separation = void 0; + separation = b2Vec2.DotVV(rf.normal, b2Vec2.SubVV(clipPoints2[i].v, rf.v1, b2Vec2.s_t0)); + if (separation <= this.m_radius) { + var cp = manifold.points[pointCount]; + if (1 === primaryAxis.type) { + b2Transform.MulTXV(this.m_xf, clipPoints2[i].v, cp.localPoint); + cp.id = clipPoints2[i].id; + } else { + cp.localPoint.Copy(clipPoints2[i].v); + cp.id.cf.typeA = clipPoints2[i].id.cf.typeB; + cp.id.cf.typeB = clipPoints2[i].id.cf.typeA; + cp.id.cf.indexA = clipPoints2[i].id.cf.indexB; + cp.id.cf.indexB = clipPoints2[i].id.cf.indexA; + } + ++pointCount; + } + } + manifold.pointCount = pointCount; + }; + b2EPCollider.prototype.ComputeEdgeSeparation = function (out) { + var axis = out; + axis.type = 1; + axis.index = this.m_front ? 0 : 1; + axis.separation = b2_maxFloat; + for (var i = 0; i < this.m_polygonB.count; ++i) { + var s = b2Vec2.DotVV(this.m_normal, b2Vec2.SubVV(this.m_polygonB.vertices[i], this.m_v1, b2Vec2.s_t0)); + s < axis.separation && (axis.separation = s); + } + return axis; + }; + b2EPCollider.prototype.ComputePolygonSeparation = function (out) { + var axis = out; + axis.type = 0; + axis.index = -1; + axis.separation = -b2_maxFloat; + var perp = b2EPCollider.s_perp.Set(-this.m_normal.y, this.m_normal.x); + for (var i = 0; i < this.m_polygonB.count; ++i) { + var n = b2Vec2.NegV(this.m_polygonB.normals[i], b2EPCollider.s_n); + var s1 = b2Vec2.DotVV(n, b2Vec2.SubVV(this.m_polygonB.vertices[i], this.m_v1, b2Vec2.s_t0)); + var s2 = b2Vec2.DotVV(n, b2Vec2.SubVV(this.m_polygonB.vertices[i], this.m_v2, b2Vec2.s_t0)); + var s = b2Min(s1, s2); + if (s > this.m_radius) { + axis.type = 2; + axis.index = i; + axis.separation = s; + return axis; + } + if (b2Vec2.DotVV(n, perp) >= 0) { + if (b2Vec2.DotVV(b2Vec2.SubVV(n, this.m_upperLimit, b2Vec2.s_t0), this.m_normal) < -b2_angularSlop) continue; + } else if (b2Vec2.DotVV(b2Vec2.SubVV(n, this.m_lowerLimit, b2Vec2.s_t0), this.m_normal) < -b2_angularSlop) continue; + if (s > axis.separation) { + axis.type = 2; + axis.index = i; + axis.separation = s; + } + } + return axis; + }; + b2EPCollider.s_edge1 = new b2Vec2(); + b2EPCollider.s_edge0 = new b2Vec2(); + b2EPCollider.s_edge2 = new b2Vec2(); + b2EPCollider.s_ie = b2ClipVertex.MakeArray(2); + b2EPCollider.s_rf = new b2ReferenceFace(); + b2EPCollider.s_clipPoints1 = b2ClipVertex.MakeArray(2); + b2EPCollider.s_clipPoints2 = b2ClipVertex.MakeArray(2); + b2EPCollider.s_edgeAxis = new b2EPAxis(); + b2EPCollider.s_polygonAxis = new b2EPAxis(); + b2EPCollider.s_n = new b2Vec2(); + b2EPCollider.s_perp = new b2Vec2(); + return b2EPCollider; + })(); + var b2CollideEdgeAndPolygon_s_collider = new b2EPCollider(); + function b2CollideEdgeAndPolygon(manifold, edgeA, xfA, polygonB, xfB) { + var collider = b2CollideEdgeAndPolygon_s_collider; + collider.Collide(manifold, edgeA, xfA, polygonB, xfB); + } + var b2MassData = (function () { + function b2MassData() { + this.mass = 0; + this.center = new b2Vec2(0, 0); + this.I = 0; + } + return b2MassData; + })(); + (function (b2ShapeType) { + b2ShapeType[b2ShapeType["e_unknown"] = -1] = "e_unknown"; + b2ShapeType[b2ShapeType["e_circleShape"] = 0] = "e_circleShape"; + b2ShapeType[b2ShapeType["e_edgeShape"] = 1] = "e_edgeShape"; + b2ShapeType[b2ShapeType["e_polygonShape"] = 2] = "e_polygonShape"; + b2ShapeType[b2ShapeType["e_chainShape"] = 3] = "e_chainShape"; + b2ShapeType[b2ShapeType["e_shapeTypeCount"] = 4] = "e_shapeTypeCount"; + })(exports.b2ShapeType || (exports.b2ShapeType = {})); + var b2Shape = (function () { + function b2Shape(type, radius) { + this.m_type = exports.b2ShapeType.e_unknown; + this.m_radius = 0; + this.m_type = type; + this.m_radius = radius; + } + b2Shape.prototype.Copy = function (other) { + this.m_radius = other.m_radius; + return this; + }; + b2Shape.prototype.GetType = function () { + return this.m_type; + }; + return b2Shape; + })(); + var extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]); + }; + function __extends(d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + var b2CircleShape = (function (_super) { + __extends(b2CircleShape, _super); + function b2CircleShape(radius) { + void 0 === radius && (radius = 0); + var _this = _super.call(this, exports.b2ShapeType.e_circleShape, radius) || this; + _this.m_p = new b2Vec2(); + return _this; + } + b2CircleShape.prototype.Set = function (position, radius) { + void 0 === radius && (radius = this.m_radius); + this.m_p.Copy(position); + this.m_radius = radius; + return this; + }; + b2CircleShape.prototype.Clone = function () { + return new b2CircleShape().Copy(this); + }; + b2CircleShape.prototype.Copy = function (other) { + _super.prototype.Copy.call(this, other); + this.m_p.Copy(other.m_p); + return this; + }; + b2CircleShape.prototype.GetChildCount = function () { + return 1; + }; + b2CircleShape.prototype.TestPoint = function (transform, p) { + var center = b2Transform.MulXV(transform, this.m_p, b2CircleShape.TestPoint_s_center); + var d = b2Vec2.SubVV(p, center, b2CircleShape.TestPoint_s_d); + return b2Vec2.DotVV(d, d) <= b2Sq(this.m_radius); + }; + b2CircleShape.prototype.ComputeDistance = function (xf, p, normal, childIndex) { + var center = b2Transform.MulXV(xf, this.m_p, b2CircleShape.ComputeDistance_s_center); + b2Vec2.SubVV(p, center, normal); + return normal.Normalize() - this.m_radius; + }; + b2CircleShape.prototype.RayCast = function (output, input, transform, childIndex) { + var position = b2Transform.MulXV(transform, this.m_p, b2CircleShape.RayCast_s_position); + var s = b2Vec2.SubVV(input.p1, position, b2CircleShape.RayCast_s_s); + var b = b2Vec2.DotVV(s, s) - b2Sq(this.m_radius); + var r = b2Vec2.SubVV(input.p2, input.p1, b2CircleShape.RayCast_s_r); + var c = b2Vec2.DotVV(s, r); + var rr = b2Vec2.DotVV(r, r); + var sigma = c * c - rr * b; + if (sigma < 0 || rr < b2_epsilon) return false; + var a = -(c + b2Sqrt(sigma)); + if (0 <= a && a <= input.maxFraction * rr) { + a /= rr; + output.fraction = a; + b2Vec2.AddVMulSV(s, a, r, output.normal).SelfNormalize(); + return true; + } + return false; + }; + b2CircleShape.prototype.ComputeAABB = function (aabb, transform, childIndex) { + var p = b2Transform.MulXV(transform, this.m_p, b2CircleShape.ComputeAABB_s_p); + aabb.lowerBound.Set(p.x - this.m_radius, p.y - this.m_radius); + aabb.upperBound.Set(p.x + this.m_radius, p.y + this.m_radius); + }; + b2CircleShape.prototype.ComputeMass = function (massData, density) { + var radius_sq = b2Sq(this.m_radius); + massData.mass = density * b2_pi * radius_sq; + massData.center.Copy(this.m_p); + massData.I = massData.mass * (.5 * radius_sq + b2Vec2.DotVV(this.m_p, this.m_p)); + }; + b2CircleShape.prototype.SetupDistanceProxy = function (proxy, index) { + proxy.m_vertices = proxy.m_buffer; + proxy.m_vertices[0].Copy(this.m_p); + proxy.m_count = 1; + proxy.m_radius = this.m_radius; + }; + b2CircleShape.prototype.ComputeSubmergedArea = function (normal, offset, xf, c) { + var p = b2Transform.MulXV(xf, this.m_p, new b2Vec2()); + var l = -(b2Vec2.DotVV(normal, p) - offset); + if (l < -this.m_radius + b2_epsilon) return 0; + if (l > this.m_radius) { + c.Copy(p); + return b2_pi * this.m_radius * this.m_radius; + } + var r2 = this.m_radius * this.m_radius; + var l2 = l * l; + var area = r2 * (b2Asin(l / this.m_radius) + b2_pi / 2) + l * b2Sqrt(r2 - l2); + var com = -2 / 3 * b2Pow(r2 - l2, 1.5) / area; + c.x = p.x + normal.x * com; + c.y = p.y + normal.y * com; + return area; + }; + b2CircleShape.prototype.Dump = function (log) { + log(" const shape: b2CircleShape = new b2CircleShape();\n"); + log(" shape.m_radius = %.15f;\n", this.m_radius); + log(" shape.m_p.Set(%.15f, %.15f);\n", this.m_p.x, this.m_p.y); + }; + b2CircleShape.TestPoint_s_center = new b2Vec2(); + b2CircleShape.TestPoint_s_d = new b2Vec2(); + b2CircleShape.ComputeDistance_s_center = new b2Vec2(); + b2CircleShape.RayCast_s_position = new b2Vec2(); + b2CircleShape.RayCast_s_s = new b2Vec2(); + b2CircleShape.RayCast_s_r = new b2Vec2(); + b2CircleShape.ComputeAABB_s_p = new b2Vec2(); + return b2CircleShape; + })(b2Shape); + var b2PolygonShape = (function (_super) { + __extends(b2PolygonShape, _super); + function b2PolygonShape() { + var _this = _super.call(this, exports.b2ShapeType.e_polygonShape, b2_polygonRadius) || this; + _this.m_centroid = new b2Vec2(0, 0); + _this.m_vertices = []; + _this.m_normals = []; + _this.m_count = 0; + return _this; + } + b2PolygonShape.prototype.Clone = function () { + return new b2PolygonShape().Copy(this); + }; + b2PolygonShape.prototype.Copy = function (other) { + _super.prototype.Copy.call(this, other); + this.m_centroid.Copy(other.m_centroid); + this.m_count = other.m_count; + this.m_vertices = b2Vec2.MakeArray(this.m_count); + this.m_normals = b2Vec2.MakeArray(this.m_count); + for (var i = 0; i < this.m_count; ++i) { + this.m_vertices[i].Copy(other.m_vertices[i]); + this.m_normals[i].Copy(other.m_normals[i]); + } + return this; + }; + b2PolygonShape.prototype.GetChildCount = function () { + return 1; + }; + b2PolygonShape.prototype.Set = function (vertices, count, start) { + void 0 === count && (count = vertices.length); + void 0 === start && (start = 0); + if (count < 3) return this.SetAsBox(1, 1); + var n = b2Min(count, b2_maxPolygonVertices); + var ps = b2PolygonShape.Set_s_ps; + var tempCount = 0; + for (var i = 0; i < n; ++i) { + var v = vertices[start + i]; + var unique = true; + for (var j = 0; j < tempCount; ++j) if (b2Vec2.DistanceSquaredVV(v, ps[j]) < .5 * b2_linearSlop * (.5 * b2_linearSlop)) { + unique = false; + break; + } + unique && ps[tempCount++].Copy(v); + } + n = tempCount; + if (n < 3) return this.SetAsBox(1, 1); + var i0 = 0; + var x0 = ps[0].x; + for (var i = 1; i < n; ++i) { + var x = ps[i].x; + if (x > x0 || x === x0 && ps[i].y < ps[i0].y) { + i0 = i; + x0 = x; + } + } + var hull = b2PolygonShape.Set_s_hull; + var m = 0; + var ih = i0; + for (; ;) { + hull[m] = ih; + var ie = 0; + for (var j = 1; j < n; ++j) { + if (ie === ih) { + ie = j; + continue; + } + var r = b2Vec2.SubVV(ps[ie], ps[hull[m]], b2PolygonShape.Set_s_r); + var v = b2Vec2.SubVV(ps[j], ps[hull[m]], b2PolygonShape.Set_s_v); + var c = b2Vec2.CrossVV(r, v); + c < 0 && (ie = j); + 0 === c && v.LengthSquared() > r.LengthSquared() && (ie = j); + } + ++m; + ih = ie; + if (ie === i0) break; + } + this.m_count = m; + this.m_vertices = b2Vec2.MakeArray(this.m_count); + this.m_normals = b2Vec2.MakeArray(this.m_count); + for (var i = 0; i < m; ++i) this.m_vertices[i].Copy(ps[hull[i]]); + for (var i = 0; i < m; ++i) { + var vertexi1 = this.m_vertices[i]; + var vertexi2 = this.m_vertices[(i + 1) % m]; + var edge = b2Vec2.SubVV(vertexi2, vertexi1, b2Vec2.s_t0); + b2Vec2.CrossVOne(edge, this.m_normals[i]).SelfNormalize(); + } + b2PolygonShape.ComputeCentroid(this.m_vertices, m, this.m_centroid); + return this; + }; + b2PolygonShape.prototype.SetAsArray = function (vertices, count) { + void 0 === count && (count = vertices.length); + return this.Set(vertices, count); + }; + b2PolygonShape.prototype.SetAsBox = function (hx, hy, center, angle) { + void 0 === angle && (angle = 0); + this.m_count = 4; + this.m_vertices = b2Vec2.MakeArray(this.m_count); + this.m_normals = b2Vec2.MakeArray(this.m_count); + this.m_vertices[0].Set(-hx, -hy); + this.m_vertices[1].Set(hx, -hy); + this.m_vertices[2].Set(hx, hy); + this.m_vertices[3].Set(-hx, hy); + this.m_normals[0].Set(0, -1); + this.m_normals[1].Set(1, 0); + this.m_normals[2].Set(0, 1); + this.m_normals[3].Set(-1, 0); + this.m_centroid.SetZero(); + if (center) { + this.m_centroid.Copy(center); + var xf = new b2Transform(); + xf.SetPosition(center); + xf.SetRotationAngle(angle); + for (var i = 0; i < this.m_count; ++i) { + b2Transform.MulXV(xf, this.m_vertices[i], this.m_vertices[i]); + b2Rot.MulRV(xf.q, this.m_normals[i], this.m_normals[i]); + } + } + return this; + }; + b2PolygonShape.prototype.TestPoint = function (xf, p) { + var pLocal = b2Transform.MulTXV(xf, p, b2PolygonShape.TestPoint_s_pLocal); + for (var i = 0; i < this.m_count; ++i) { + var dot = b2Vec2.DotVV(this.m_normals[i], b2Vec2.SubVV(pLocal, this.m_vertices[i], b2Vec2.s_t0)); + if (dot > 0) return false; + } + return true; + }; + b2PolygonShape.prototype.ComputeDistance = function (xf, p, normal, childIndex) { + var pLocal = b2Transform.MulTXV(xf, p, b2PolygonShape.ComputeDistance_s_pLocal); + var maxDistance = -b2_maxFloat; + var normalForMaxDistance = b2PolygonShape.ComputeDistance_s_normalForMaxDistance.Copy(pLocal); + for (var i = 0; i < this.m_count; ++i) { + var dot = b2Vec2.DotVV(this.m_normals[i], b2Vec2.SubVV(pLocal, this.m_vertices[i], b2Vec2.s_t0)); + if (dot > maxDistance) { + maxDistance = dot; + normalForMaxDistance.Copy(this.m_normals[i]); + } + } + if (maxDistance > 0) { + var minDistance = b2PolygonShape.ComputeDistance_s_minDistance.Copy(normalForMaxDistance); + var minDistance2 = maxDistance * maxDistance; + for (var i = 0; i < this.m_count; ++i) { + var distance = b2Vec2.SubVV(pLocal, this.m_vertices[i], b2PolygonShape.ComputeDistance_s_distance); + var distance2 = distance.LengthSquared(); + if (minDistance2 > distance2) { + minDistance.Copy(distance); + minDistance2 = distance2; + } + } + b2Rot.MulRV(xf.q, minDistance, normal); + normal.Normalize(); + return Math.sqrt(minDistance2); + } + b2Rot.MulRV(xf.q, normalForMaxDistance, normal); + return maxDistance; + }; + b2PolygonShape.prototype.RayCast = function (output, input, xf, childIndex) { + var p1 = b2Transform.MulTXV(xf, input.p1, b2PolygonShape.RayCast_s_p1); + var p2 = b2Transform.MulTXV(xf, input.p2, b2PolygonShape.RayCast_s_p2); + var d = b2Vec2.SubVV(p2, p1, b2PolygonShape.RayCast_s_d); + var lower = 0, upper = input.maxFraction; + var index = -1; + for (var i = 0; i < this.m_count; ++i) { + var numerator = b2Vec2.DotVV(this.m_normals[i], b2Vec2.SubVV(this.m_vertices[i], p1, b2Vec2.s_t0)); + var denominator = b2Vec2.DotVV(this.m_normals[i], d); + if (0 === denominator) { + if (numerator < 0) return false; + } else if (denominator < 0 && numerator < lower * denominator) { + lower = numerator / denominator; + index = i; + } else denominator > 0 && numerator < upper * denominator && (upper = numerator / denominator); + if (upper < lower) return false; + } + if (index >= 0) { + output.fraction = lower; + b2Rot.MulRV(xf.q, this.m_normals[index], output.normal); + return true; + } + return false; + }; + b2PolygonShape.prototype.ComputeAABB = function (aabb, xf, childIndex) { + var lower = b2Transform.MulXV(xf, this.m_vertices[0], aabb.lowerBound); + var upper = aabb.upperBound.Copy(lower); + for (var i = 0; i < this.m_count; ++i) { + var v = b2Transform.MulXV(xf, this.m_vertices[i], b2PolygonShape.ComputeAABB_s_v); + b2Vec2.MinV(v, lower, lower); + b2Vec2.MaxV(v, upper, upper); + } + var r = this.m_radius; + lower.SelfSubXY(r, r); + upper.SelfAddXY(r, r); + }; + b2PolygonShape.prototype.ComputeMass = function (massData, density) { + var center = b2PolygonShape.ComputeMass_s_center.SetZero(); + var area = 0; + var I = 0; + var s = b2PolygonShape.ComputeMass_s_s.SetZero(); + for (var i = 0; i < this.m_count; ++i) s.SelfAdd(this.m_vertices[i]); + s.SelfMul(1 / this.m_count); + var k_inv3 = 1 / 3; + for (var i = 0; i < this.m_count; ++i) { + var e1 = b2Vec2.SubVV(this.m_vertices[i], s, b2PolygonShape.ComputeMass_s_e1); + var e2 = b2Vec2.SubVV(this.m_vertices[(i + 1) % this.m_count], s, b2PolygonShape.ComputeMass_s_e2); + var D = b2Vec2.CrossVV(e1, e2); + var triangleArea = .5 * D; + area += triangleArea; + center.SelfAdd(b2Vec2.MulSV(triangleArea * k_inv3, b2Vec2.AddVV(e1, e2, b2Vec2.s_t0), b2Vec2.s_t1)); + var ex1 = e1.x; + var ey1 = e1.y; + var ex2 = e2.x; + var ey2 = e2.y; + var intx2 = ex1 * ex1 + ex2 * ex1 + ex2 * ex2; + var inty2 = ey1 * ey1 + ey2 * ey1 + ey2 * ey2; + I += .25 * k_inv3 * D * (intx2 + inty2); + } + massData.mass = density * area; + center.SelfMul(1 / area); + b2Vec2.AddVV(center, s, massData.center); + massData.I = density * I; + massData.I += massData.mass * (b2Vec2.DotVV(massData.center, massData.center) - b2Vec2.DotVV(center, center)); + }; + b2PolygonShape.prototype.Validate = function () { + for (var i = 0; i < this.m_count; ++i) { + var i1 = i; + var i2 = (i + 1) % this.m_count; + var p = this.m_vertices[i1]; + var e = b2Vec2.SubVV(this.m_vertices[i2], p, b2PolygonShape.Validate_s_e); + for (var j = 0; j < this.m_count; ++j) { + if (j === i1 || j === i2) continue; + var v = b2Vec2.SubVV(this.m_vertices[j], p, b2PolygonShape.Validate_s_v); + var c = b2Vec2.CrossVV(e, v); + if (c < 0) return false; + } + } + return true; + }; + b2PolygonShape.prototype.SetupDistanceProxy = function (proxy, index) { + proxy.m_vertices = this.m_vertices; + proxy.m_count = this.m_count; + proxy.m_radius = this.m_radius; + }; + b2PolygonShape.prototype.ComputeSubmergedArea = function (normal, offset, xf, c) { + var normalL = b2Rot.MulTRV(xf.q, normal, b2PolygonShape.ComputeSubmergedArea_s_normalL); + var offsetL = offset - b2Vec2.DotVV(normal, xf.p); + var depths = b2PolygonShape.ComputeSubmergedArea_s_depths; + var diveCount = 0; + var intoIndex = -1; + var outoIndex = -1; + var lastSubmerged = false; + for (var i_1 = 0; i_1 < this.m_count; ++i_1) { + depths[i_1] = b2Vec2.DotVV(normalL, this.m_vertices[i_1]) - offsetL; + var isSubmerged = depths[i_1] < -b2_epsilon; + if (i_1 > 0) if (isSubmerged) { + if (!lastSubmerged) { + intoIndex = i_1 - 1; + diveCount++; + } + } else if (lastSubmerged) { + outoIndex = i_1 - 1; + diveCount++; + } + lastSubmerged = isSubmerged; + } + switch (diveCount) { + case 0: + if (lastSubmerged) { + var md = b2PolygonShape.ComputeSubmergedArea_s_md; + this.ComputeMass(md, 1); + b2Transform.MulXV(xf, md.center, c); + return md.mass; + } + return 0; + + case 1: + -1 === intoIndex ? intoIndex = this.m_count - 1 : outoIndex = this.m_count - 1; + } + var intoIndex2 = (intoIndex + 1) % this.m_count; + var outoIndex2 = (outoIndex + 1) % this.m_count; + var intoLamdda = (0 - depths[intoIndex]) / (depths[intoIndex2] - depths[intoIndex]); + var outoLamdda = (0 - depths[outoIndex]) / (depths[outoIndex2] - depths[outoIndex]); + var intoVec = b2PolygonShape.ComputeSubmergedArea_s_intoVec.Set(this.m_vertices[intoIndex].x * (1 - intoLamdda) + this.m_vertices[intoIndex2].x * intoLamdda, this.m_vertices[intoIndex].y * (1 - intoLamdda) + this.m_vertices[intoIndex2].y * intoLamdda); + var outoVec = b2PolygonShape.ComputeSubmergedArea_s_outoVec.Set(this.m_vertices[outoIndex].x * (1 - outoLamdda) + this.m_vertices[outoIndex2].x * outoLamdda, this.m_vertices[outoIndex].y * (1 - outoLamdda) + this.m_vertices[outoIndex2].y * outoLamdda); + var area = 0; + var center = b2PolygonShape.ComputeSubmergedArea_s_center.SetZero(); + var p2 = this.m_vertices[intoIndex2]; + var p3; + var i = intoIndex2; + while (i !== outoIndex2) { + i = (i + 1) % this.m_count; + p3 = i === outoIndex2 ? outoVec : this.m_vertices[i]; + var triangleArea = .5 * ((p2.x - intoVec.x) * (p3.y - intoVec.y) - (p2.y - intoVec.y) * (p3.x - intoVec.x)); + area += triangleArea; + center.x += triangleArea * (intoVec.x + p2.x + p3.x) / 3; + center.y += triangleArea * (intoVec.y + p2.y + p3.y) / 3; + p2 = p3; + } + center.SelfMul(1 / area); + b2Transform.MulXV(xf, center, c); + return area; + }; + b2PolygonShape.prototype.Dump = function (log) { + log(" const shape: b2PolygonShape = new b2PolygonShape();\n"); + log(" const vs: b2Vec2[] = b2Vec2.MakeArray(%d);\n", b2_maxPolygonVertices); + for (var i = 0; i < this.m_count; ++i) log(" vs[%d].Set(%.15f, %.15f);\n", i, this.m_vertices[i].x, this.m_vertices[i].y); + log(" shape.Set(vs, %d);\n", this.m_count); + }; + b2PolygonShape.ComputeCentroid = function (vs, count, out) { + var c = out; + c.SetZero(); + var area = 0; + var pRef = b2PolygonShape.ComputeCentroid_s_pRef.SetZero(); + var inv3 = 1 / 3; + for (var i = 0; i < count; ++i) { + var p1 = pRef; + var p2 = vs[i]; + var p3 = vs[(i + 1) % count]; + var e1 = b2Vec2.SubVV(p2, p1, b2PolygonShape.ComputeCentroid_s_e1); + var e2 = b2Vec2.SubVV(p3, p1, b2PolygonShape.ComputeCentroid_s_e2); + var D = b2Vec2.CrossVV(e1, e2); + var triangleArea = .5 * D; + area += triangleArea; + c.x += triangleArea * inv3 * (p1.x + p2.x + p3.x); + c.y += triangleArea * inv3 * (p1.y + p2.y + p3.y); + } + c.SelfMul(1 / area); + return c; + }; + b2PolygonShape.Set_s_ps = b2Vec2.MakeArray(b2_maxPolygonVertices); + b2PolygonShape.Set_s_hull = b2MakeNumberArray(b2_maxPolygonVertices); + b2PolygonShape.Set_s_r = new b2Vec2(); + b2PolygonShape.Set_s_v = new b2Vec2(); + b2PolygonShape.TestPoint_s_pLocal = new b2Vec2(); + b2PolygonShape.ComputeDistance_s_pLocal = new b2Vec2(); + b2PolygonShape.ComputeDistance_s_normalForMaxDistance = new b2Vec2(); + b2PolygonShape.ComputeDistance_s_minDistance = new b2Vec2(); + b2PolygonShape.ComputeDistance_s_distance = new b2Vec2(); + b2PolygonShape.RayCast_s_p1 = new b2Vec2(); + b2PolygonShape.RayCast_s_p2 = new b2Vec2(); + b2PolygonShape.RayCast_s_d = new b2Vec2(); + b2PolygonShape.ComputeAABB_s_v = new b2Vec2(); + b2PolygonShape.ComputeMass_s_center = new b2Vec2(); + b2PolygonShape.ComputeMass_s_s = new b2Vec2(); + b2PolygonShape.ComputeMass_s_e1 = new b2Vec2(); + b2PolygonShape.ComputeMass_s_e2 = new b2Vec2(); + b2PolygonShape.Validate_s_e = new b2Vec2(); + b2PolygonShape.Validate_s_v = new b2Vec2(); + b2PolygonShape.ComputeSubmergedArea_s_normalL = new b2Vec2(); + b2PolygonShape.ComputeSubmergedArea_s_depths = b2MakeNumberArray(b2_maxPolygonVertices); + b2PolygonShape.ComputeSubmergedArea_s_md = new b2MassData(); + b2PolygonShape.ComputeSubmergedArea_s_intoVec = new b2Vec2(); + b2PolygonShape.ComputeSubmergedArea_s_outoVec = new b2Vec2(); + b2PolygonShape.ComputeSubmergedArea_s_center = new b2Vec2(); + b2PolygonShape.ComputeCentroid_s_pRef = new b2Vec2(); + b2PolygonShape.ComputeCentroid_s_e1 = new b2Vec2(); + b2PolygonShape.ComputeCentroid_s_e2 = new b2Vec2(); + return b2PolygonShape; + })(b2Shape); + var b2EdgeShape = (function (_super) { + __extends(b2EdgeShape, _super); + function b2EdgeShape() { + var _this = _super.call(this, exports.b2ShapeType.e_edgeShape, b2_polygonRadius) || this; + _this.m_vertex1 = new b2Vec2(); + _this.m_vertex2 = new b2Vec2(); + _this.m_vertex0 = new b2Vec2(); + _this.m_vertex3 = new b2Vec2(); + _this.m_hasVertex0 = false; + _this.m_hasVertex3 = false; + return _this; + } + b2EdgeShape.prototype.Set = function (v1, v2) { + this.m_vertex1.Copy(v1); + this.m_vertex2.Copy(v2); + this.m_hasVertex0 = false; + this.m_hasVertex3 = false; + return this; + }; + b2EdgeShape.prototype.Clone = function () { + return new b2EdgeShape().Copy(this); + }; + b2EdgeShape.prototype.Copy = function (other) { + _super.prototype.Copy.call(this, other); + this.m_vertex1.Copy(other.m_vertex1); + this.m_vertex2.Copy(other.m_vertex2); + this.m_vertex0.Copy(other.m_vertex0); + this.m_vertex3.Copy(other.m_vertex3); + this.m_hasVertex0 = other.m_hasVertex0; + this.m_hasVertex3 = other.m_hasVertex3; + return this; + }; + b2EdgeShape.prototype.GetChildCount = function () { + return 1; + }; + b2EdgeShape.prototype.TestPoint = function (xf, p) { + return false; + }; + b2EdgeShape.prototype.ComputeDistance = function (xf, p, normal, childIndex) { + var v1 = b2Transform.MulXV(xf, this.m_vertex1, b2EdgeShape.ComputeDistance_s_v1); + var v2 = b2Transform.MulXV(xf, this.m_vertex2, b2EdgeShape.ComputeDistance_s_v2); + var d = b2Vec2.SubVV(p, v1, b2EdgeShape.ComputeDistance_s_d); + var s = b2Vec2.SubVV(v2, v1, b2EdgeShape.ComputeDistance_s_s); + var ds = b2Vec2.DotVV(d, s); + if (ds > 0) { + var s2 = b2Vec2.DotVV(s, s); + ds > s2 ? b2Vec2.SubVV(p, v2, d) : d.SelfMulSub(ds / s2, s); + } + normal.Copy(d); + return normal.Normalize(); + }; + b2EdgeShape.prototype.RayCast = function (output, input, xf, childIndex) { + var p1 = b2Transform.MulTXV(xf, input.p1, b2EdgeShape.RayCast_s_p1); + var p2 = b2Transform.MulTXV(xf, input.p2, b2EdgeShape.RayCast_s_p2); + var d = b2Vec2.SubVV(p2, p1, b2EdgeShape.RayCast_s_d); + var v1 = this.m_vertex1; + var v2 = this.m_vertex2; + var e = b2Vec2.SubVV(v2, v1, b2EdgeShape.RayCast_s_e); + var normal = output.normal.Set(e.y, -e.x).SelfNormalize(); + var numerator = b2Vec2.DotVV(normal, b2Vec2.SubVV(v1, p1, b2Vec2.s_t0)); + var denominator = b2Vec2.DotVV(normal, d); + if (0 === denominator) return false; + var t = numerator / denominator; + if (t < 0 || input.maxFraction < t) return false; + var q = b2Vec2.AddVMulSV(p1, t, d, b2EdgeShape.RayCast_s_q); + var r = b2Vec2.SubVV(v2, v1, b2EdgeShape.RayCast_s_r); + var rr = b2Vec2.DotVV(r, r); + if (0 === rr) return false; + var s = b2Vec2.DotVV(b2Vec2.SubVV(q, v1, b2Vec2.s_t0), r) / rr; + if (s < 0 || 1 < s) return false; + output.fraction = t; + b2Rot.MulRV(xf.q, output.normal, output.normal); + numerator > 0 && output.normal.SelfNeg(); + return true; + }; + b2EdgeShape.prototype.ComputeAABB = function (aabb, xf, childIndex) { + var v1 = b2Transform.MulXV(xf, this.m_vertex1, b2EdgeShape.ComputeAABB_s_v1); + var v2 = b2Transform.MulXV(xf, this.m_vertex2, b2EdgeShape.ComputeAABB_s_v2); + b2Vec2.MinV(v1, v2, aabb.lowerBound); + b2Vec2.MaxV(v1, v2, aabb.upperBound); + var r = this.m_radius; + aabb.lowerBound.SelfSubXY(r, r); + aabb.upperBound.SelfAddXY(r, r); + }; + b2EdgeShape.prototype.ComputeMass = function (massData, density) { + massData.mass = 0; + b2Vec2.MidVV(this.m_vertex1, this.m_vertex2, massData.center); + massData.I = 0; + }; + b2EdgeShape.prototype.SetupDistanceProxy = function (proxy, index) { + proxy.m_vertices = proxy.m_buffer; + proxy.m_vertices[0].Copy(this.m_vertex1); + proxy.m_vertices[1].Copy(this.m_vertex2); + proxy.m_count = 2; + proxy.m_radius = this.m_radius; + }; + b2EdgeShape.prototype.ComputeSubmergedArea = function (normal, offset, xf, c) { + c.SetZero(); + return 0; + }; + b2EdgeShape.prototype.Dump = function (log) { + log(" const shape: b2EdgeShape = new b2EdgeShape();\n"); + log(" shape.m_radius = %.15f;\n", this.m_radius); + log(" shape.m_vertex0.Set(%.15f, %.15f);\n", this.m_vertex0.x, this.m_vertex0.y); + log(" shape.m_vertex1.Set(%.15f, %.15f);\n", this.m_vertex1.x, this.m_vertex1.y); + log(" shape.m_vertex2.Set(%.15f, %.15f);\n", this.m_vertex2.x, this.m_vertex2.y); + log(" shape.m_vertex3.Set(%.15f, %.15f);\n", this.m_vertex3.x, this.m_vertex3.y); + log(" shape.m_hasVertex0 = %s;\n", this.m_hasVertex0); + log(" shape.m_hasVertex3 = %s;\n", this.m_hasVertex3); + }; + b2EdgeShape.ComputeDistance_s_v1 = new b2Vec2(); + b2EdgeShape.ComputeDistance_s_v2 = new b2Vec2(); + b2EdgeShape.ComputeDistance_s_d = new b2Vec2(); + b2EdgeShape.ComputeDistance_s_s = new b2Vec2(); + b2EdgeShape.RayCast_s_p1 = new b2Vec2(); + b2EdgeShape.RayCast_s_p2 = new b2Vec2(); + b2EdgeShape.RayCast_s_d = new b2Vec2(); + b2EdgeShape.RayCast_s_e = new b2Vec2(); + b2EdgeShape.RayCast_s_q = new b2Vec2(); + b2EdgeShape.RayCast_s_r = new b2Vec2(); + b2EdgeShape.ComputeAABB_s_v1 = new b2Vec2(); + b2EdgeShape.ComputeAABB_s_v2 = new b2Vec2(); + return b2EdgeShape; + })(b2Shape); + var b2ChainShape = (function (_super) { + __extends(b2ChainShape, _super); + function b2ChainShape() { + var _this = _super.call(this, exports.b2ShapeType.e_chainShape, b2_polygonRadius) || this; + _this.m_vertices = []; + _this.m_count = 0; + _this.m_prevVertex = new b2Vec2(); + _this.m_nextVertex = new b2Vec2(); + _this.m_hasPrevVertex = false; + _this.m_hasNextVertex = false; + return _this; + } + b2ChainShape.prototype.CreateLoop = function (vertices, count, start) { + void 0 === count && (count = vertices.length); + void 0 === start && (start = 0); + if (count < 3) return this; + this.m_count = count + 1; + this.m_vertices = b2Vec2.MakeArray(this.m_count); + for (var i = 0; i < count; ++i) this.m_vertices[i].Copy(vertices[start + i]); + this.m_vertices[count].Copy(this.m_vertices[0]); + this.m_prevVertex.Copy(this.m_vertices[this.m_count - 2]); + this.m_nextVertex.Copy(this.m_vertices[1]); + this.m_hasPrevVertex = true; + this.m_hasNextVertex = true; + return this; + }; + b2ChainShape.prototype.CreateChain = function (vertices, count, start) { + void 0 === count && (count = vertices.length); + void 0 === start && (start = 0); + this.m_count = count; + this.m_vertices = b2Vec2.MakeArray(count); + for (var i = 0; i < count; ++i) this.m_vertices[i].Copy(vertices[start + i]); + this.m_hasPrevVertex = false; + this.m_hasNextVertex = false; + this.m_prevVertex.SetZero(); + this.m_nextVertex.SetZero(); + return this; + }; + b2ChainShape.prototype.SetPrevVertex = function (prevVertex) { + this.m_prevVertex.Copy(prevVertex); + this.m_hasPrevVertex = true; + return this; + }; + b2ChainShape.prototype.SetNextVertex = function (nextVertex) { + this.m_nextVertex.Copy(nextVertex); + this.m_hasNextVertex = true; + return this; + }; + b2ChainShape.prototype.Clone = function () { + return new b2ChainShape().Copy(this); + }; + b2ChainShape.prototype.Copy = function (other) { + _super.prototype.Copy.call(this, other); + this.CreateChain(other.m_vertices, other.m_count); + this.m_prevVertex.Copy(other.m_prevVertex); + this.m_nextVertex.Copy(other.m_nextVertex); + this.m_hasPrevVertex = other.m_hasPrevVertex; + this.m_hasNextVertex = other.m_hasNextVertex; + return this; + }; + b2ChainShape.prototype.GetChildCount = function () { + return this.m_count - 1; + }; + b2ChainShape.prototype.GetChildEdge = function (edge, index) { + edge.m_type = exports.b2ShapeType.e_edgeShape; + edge.m_radius = this.m_radius; + edge.m_vertex1.Copy(this.m_vertices[index]); + edge.m_vertex2.Copy(this.m_vertices[index + 1]); + if (index > 0) { + edge.m_vertex0.Copy(this.m_vertices[index - 1]); + edge.m_hasVertex0 = true; + } else { + edge.m_vertex0.Copy(this.m_prevVertex); + edge.m_hasVertex0 = this.m_hasPrevVertex; + } + if (index < this.m_count - 2) { + edge.m_vertex3.Copy(this.m_vertices[index + 2]); + edge.m_hasVertex3 = true; + } else { + edge.m_vertex3.Copy(this.m_nextVertex); + edge.m_hasVertex3 = this.m_hasNextVertex; + } + }; + b2ChainShape.prototype.TestPoint = function (xf, p) { + return false; + }; + b2ChainShape.prototype.ComputeDistance = function (xf, p, normal, childIndex) { + var edge = b2ChainShape.ComputeDistance_s_edgeShape; + this.GetChildEdge(edge, childIndex); + return edge.ComputeDistance(xf, p, normal, 0); + }; + b2ChainShape.prototype.RayCast = function (output, input, xf, childIndex) { + var edgeShape = b2ChainShape.RayCast_s_edgeShape; + edgeShape.m_vertex1.Copy(this.m_vertices[childIndex]); + edgeShape.m_vertex2.Copy(this.m_vertices[(childIndex + 1) % this.m_count]); + return edgeShape.RayCast(output, input, xf, 0); + }; + b2ChainShape.prototype.ComputeAABB = function (aabb, xf, childIndex) { + var vertexi1 = this.m_vertices[childIndex]; + var vertexi2 = this.m_vertices[(childIndex + 1) % this.m_count]; + var v1 = b2Transform.MulXV(xf, vertexi1, b2ChainShape.ComputeAABB_s_v1); + var v2 = b2Transform.MulXV(xf, vertexi2, b2ChainShape.ComputeAABB_s_v2); + b2Vec2.MinV(v1, v2, aabb.lowerBound); + b2Vec2.MaxV(v1, v2, aabb.upperBound); + }; + b2ChainShape.prototype.ComputeMass = function (massData, density) { + massData.mass = 0; + massData.center.SetZero(); + massData.I = 0; + }; + b2ChainShape.prototype.SetupDistanceProxy = function (proxy, index) { + proxy.m_vertices = proxy.m_buffer; + proxy.m_vertices[0].Copy(this.m_vertices[index]); + index + 1 < this.m_count ? proxy.m_vertices[1].Copy(this.m_vertices[index + 1]) : proxy.m_vertices[1].Copy(this.m_vertices[0]); + proxy.m_count = 2; + proxy.m_radius = this.m_radius; + }; + b2ChainShape.prototype.ComputeSubmergedArea = function (normal, offset, xf, c) { + c.SetZero(); + return 0; + }; + b2ChainShape.prototype.Dump = function (log) { + log(" const shape: b2ChainShape = new b2ChainShape();\n"); + log(" const vs: b2Vec2[] = b2Vec2.MakeArray(%d);\n", b2_maxPolygonVertices); + for (var i = 0; i < this.m_count; ++i) log(" vs[%d].Set(%.15f, %.15f);\n", i, this.m_vertices[i].x, this.m_vertices[i].y); + log(" shape.CreateChain(vs, %d);\n", this.m_count); + log(" shape.m_prevVertex.Set(%.15f, %.15f);\n", this.m_prevVertex.x, this.m_prevVertex.y); + log(" shape.m_nextVertex.Set(%.15f, %.15f);\n", this.m_nextVertex.x, this.m_nextVertex.y); + log(" shape.m_hasPrevVertex = %s;\n", this.m_hasPrevVertex ? "true" : "false"); + log(" shape.m_hasNextVertex = %s;\n", this.m_hasNextVertex ? "true" : "false"); + }; + b2ChainShape.ComputeDistance_s_edgeShape = new b2EdgeShape(); + b2ChainShape.RayCast_s_edgeShape = new b2EdgeShape(); + b2ChainShape.ComputeAABB_s_v1 = new b2Vec2(); + b2ChainShape.ComputeAABB_s_v2 = new b2Vec2(); + return b2ChainShape; + })(b2Shape); + var b2Filter = (function () { + function b2Filter() { + this.categoryBits = 1; + this.maskBits = 65535; + this.groupIndex = 0; + } + b2Filter.prototype.Clone = function () { + return new b2Filter().Copy(this); + }; + b2Filter.prototype.Copy = function (other) { + this.categoryBits = other.categoryBits; + this.maskBits = other.maskBits; + this.groupIndex = other.groupIndex || 0; + return this; + }; + b2Filter.DEFAULT = new b2Filter(); + return b2Filter; + })(); + var b2FixtureDef = (function () { + function b2FixtureDef() { + this.userData = null; + this.friction = .2; + this.restitution = 0; + this.density = 0; + this.isSensor = false; + this.filter = new b2Filter(); + } + return b2FixtureDef; + })(); + var b2FixtureProxy = (function () { + function b2FixtureProxy(fixture) { + this.aabb = new b2AABB(); + this.childIndex = 0; + this.fixture = fixture; + } + return b2FixtureProxy; + })(); + var b2Fixture = (function () { + function b2Fixture(def, body) { + this.m_density = 0; + this.m_next = null; + this.m_friction = 0; + this.m_restitution = 0; + this.m_proxies = []; + this.m_proxyCount = 0; + this.m_filter = new b2Filter(); + this.m_isSensor = false; + this.m_userData = null; + this.m_body = body; + this.m_shape = def.shape.Clone(); + } + b2Fixture.prototype.GetType = function () { + return this.m_shape.GetType(); + }; + b2Fixture.prototype.GetShape = function () { + return this.m_shape; + }; + b2Fixture.prototype.SetSensor = function (sensor) { + if (sensor !== this.m_isSensor) { + this.m_body.SetAwake(true); + this.m_isSensor = sensor; + } + }; + b2Fixture.prototype.IsSensor = function () { + return this.m_isSensor; + }; + b2Fixture.prototype.SetFilterData = function (filter) { + this.m_filter.Copy(filter); + this.Refilter(); + }; + b2Fixture.prototype.GetFilterData = function () { + return this.m_filter; + }; + b2Fixture.prototype.Refilter = function () { + var edge = this.m_body.GetContactList(); + while (edge) { + var contact = edge.contact; + var fixtureA = contact.GetFixtureA(); + var fixtureB = contact.GetFixtureB(); + fixtureA !== this && fixtureB !== this || contact.FlagForFiltering(); + edge = edge.next; + } + var world = this.m_body.GetWorld(); + if (null === world) return; + var broadPhase = world.m_contactManager.m_broadPhase; + for (var i = 0; i < this.m_proxyCount; ++i) broadPhase.TouchProxy(this.m_proxies[i].treeNode); + }; + b2Fixture.prototype.GetBody = function () { + return this.m_body; + }; + b2Fixture.prototype.GetNext = function () { + return this.m_next; + }; + b2Fixture.prototype.GetUserData = function () { + return this.m_userData; + }; + b2Fixture.prototype.SetUserData = function (data) { + this.m_userData = data; + }; + b2Fixture.prototype.TestPoint = function (p) { + return this.m_shape.TestPoint(this.m_body.GetTransform(), p); + }; + b2Fixture.prototype.ComputeDistance = function (p, normal, childIndex) { + return this.m_shape.ComputeDistance(this.m_body.GetTransform(), p, normal, childIndex); + }; + b2Fixture.prototype.RayCast = function (output, input, childIndex) { + return this.m_shape.RayCast(output, input, this.m_body.GetTransform(), childIndex); + }; + b2Fixture.prototype.GetMassData = function (massData) { + void 0 === massData && (massData = new b2MassData()); + this.m_shape.ComputeMass(massData, this.m_density); + return massData; + }; + b2Fixture.prototype.SetDensity = function (density) { + this.m_density = density; + }; + b2Fixture.prototype.GetDensity = function () { + return this.m_density; + }; + b2Fixture.prototype.GetFriction = function () { + return this.m_friction; + }; + b2Fixture.prototype.SetFriction = function (friction) { + this.m_friction = friction; + }; + b2Fixture.prototype.GetRestitution = function () { + return this.m_restitution; + }; + b2Fixture.prototype.SetRestitution = function (restitution) { + this.m_restitution = restitution; + }; + b2Fixture.prototype.GetAABB = function (childIndex) { + return this.m_proxies[childIndex].aabb; + }; + b2Fixture.prototype.Dump = function (log, bodyIndex) { + log(" const fd: b2FixtureDef = new b2FixtureDef();\n"); + log(" fd.friction = %.15f;\n", this.m_friction); + log(" fd.restitution = %.15f;\n", this.m_restitution); + log(" fd.density = %.15f;\n", this.m_density); + log(" fd.isSensor = %s;\n", this.m_isSensor ? "true" : "false"); + log(" fd.filter.categoryBits = %d;\n", this.m_filter.categoryBits); + log(" fd.filter.maskBits = %d;\n", this.m_filter.maskBits); + log(" fd.filter.groupIndex = %d;\n", this.m_filter.groupIndex); + this.m_shape.Dump(log); + log("\n"); + log(" fd.shape = shape;\n"); + log("\n"); + log(" bodies[%d].CreateFixture(fd);\n", bodyIndex); + }; + b2Fixture.prototype.Create = function (def) { + var _this = this; + this.m_userData = def.userData; + this.m_friction = b2Maybe(def.friction, .2); + this.m_restitution = b2Maybe(def.restitution, 0); + this.m_next = null; + this.m_filter.Copy(b2Maybe(def.filter, b2Filter.DEFAULT)); + this.m_isSensor = b2Maybe(def.isSensor, false); + this.m_proxies = b2MakeArray(this.m_shape.GetChildCount(), (function (i) { + return new b2FixtureProxy(_this); + })); + this.m_proxyCount = 0; + this.m_density = b2Maybe(def.density, 0); + }; + b2Fixture.prototype.Destroy = function () { }; + b2Fixture.prototype.CreateProxies = function (xf) { + var broadPhase = this.m_body.m_world.m_contactManager.m_broadPhase; + this.m_proxyCount = this.m_shape.GetChildCount(); + for (var i = 0; i < this.m_proxyCount; ++i) { + var proxy = this.m_proxies[i] = new b2FixtureProxy(this); + this.m_shape.ComputeAABB(proxy.aabb, xf, i); + proxy.treeNode = broadPhase.CreateProxy(proxy.aabb, proxy); + proxy.childIndex = i; + } + }; + b2Fixture.prototype.DestroyProxies = function () { + var broadPhase = this.m_body.m_world.m_contactManager.m_broadPhase; + for (var i = 0; i < this.m_proxyCount; ++i) { + var proxy = this.m_proxies[i]; + delete proxy.treeNode.userData; + broadPhase.DestroyProxy(proxy.treeNode); + delete proxy.treeNode; + } + this.m_proxyCount = 0; + }; + b2Fixture.prototype.TouchProxies = function () { + var broadPhase = this.m_body.m_world.m_contactManager.m_broadPhase; + var proxyCount = this.m_proxyCount; + for (var i = 0; i < proxyCount; ++i) broadPhase.TouchProxy(this.m_proxies[i].treeNode); + }; + b2Fixture.prototype.Synchronize = function (transform1, transform2) { + if (0 === this.m_proxyCount) return; + var broadPhase = this.m_body.m_world.m_contactManager.m_broadPhase; + for (var i = 0; i < this.m_proxyCount; ++i) { + var proxy = this.m_proxies[i]; + var aabb1 = b2Fixture.Synchronize_s_aabb1; + var aabb2 = b2Fixture.Synchronize_s_aabb2; + this.m_shape.ComputeAABB(aabb1, transform1, i); + this.m_shape.ComputeAABB(aabb2, transform2, i); + proxy.aabb.Combine2(aabb1, aabb2); + var displacement = b2Vec2.SubVV(transform2.p, transform1.p, b2Fixture.Synchronize_s_displacement); + broadPhase.MoveProxy(proxy.treeNode, proxy.aabb, displacement); + } + }; + b2Fixture.Synchronize_s_aabb1 = new b2AABB(); + b2Fixture.Synchronize_s_aabb2 = new b2AABB(); + b2Fixture.Synchronize_s_displacement = new b2Vec2(); + return b2Fixture; + })(); + (function (b2BodyType) { + b2BodyType[b2BodyType["b2_unknown"] = -1] = "b2_unknown"; + b2BodyType[b2BodyType["b2_staticBody"] = 0] = "b2_staticBody"; + b2BodyType[b2BodyType["b2_kinematicBody"] = 1] = "b2_kinematicBody"; + b2BodyType[b2BodyType["b2_dynamicBody"] = 2] = "b2_dynamicBody"; + })(exports.b2BodyType || (exports.b2BodyType = {})); + var b2BodyDef = (function () { + function b2BodyDef() { + this.type = exports.b2BodyType.b2_staticBody; + this.position = new b2Vec2(0, 0); + this.angle = 0; + this.linearVelocity = new b2Vec2(0, 0); + this.angularVelocity = 0; + this.linearDamping = 0; + this.angularDamping = 0; + this.allowSleep = true; + this.awake = true; + this.fixedRotation = false; + this.bullet = false; + this.active = true; + this.userData = null; + this.gravityScale = 1; + } + return b2BodyDef; + })(); + var b2Body = (function () { + function b2Body(bd, world) { + this.m_type = exports.b2BodyType.b2_staticBody; + this.m_islandFlag = false; + this.m_awakeFlag = false; + this.m_autoSleepFlag = false; + this.m_bulletFlag = false; + this.m_fixedRotationFlag = false; + this.m_activeFlag = false; + this.m_toiFlag = false; + this.m_islandIndex = 0; + this.m_xf = new b2Transform(); + this.m_xf0 = new b2Transform(); + this.m_sweep = new b2Sweep(); + this.m_linearVelocity = new b2Vec2(); + this.m_angularVelocity = 0; + this.m_force = new b2Vec2(); + this.m_torque = 0; + this.m_prev = null; + this.m_next = null; + this.m_fixtureList = null; + this.m_fixtureCount = 0; + this.m_jointList = null; + this.m_contactList = null; + this.m_mass = 1; + this.m_invMass = 1; + this.m_I = 0; + this.m_invI = 0; + this.m_linearDamping = 0; + this.m_angularDamping = 0; + this.m_gravityScale = 1; + this.m_sleepTime = 0; + this.m_userData = null; + this.m_controllerList = null; + this.m_controllerCount = 0; + this.m_bulletFlag = b2Maybe(bd.bullet, false); + this.m_fixedRotationFlag = b2Maybe(bd.fixedRotation, false); + this.m_autoSleepFlag = b2Maybe(bd.allowSleep, true); + this.m_awakeFlag = b2Maybe(bd.awake, true); + this.m_activeFlag = b2Maybe(bd.active, true); + this.m_world = world; + this.m_xf.p.Copy(b2Maybe(bd.position, b2Vec2.ZERO)); + this.m_xf.q.SetAngle(b2Maybe(bd.angle, 0)); + this.m_xf0.Copy(this.m_xf); + this.m_sweep.localCenter.SetZero(); + this.m_sweep.c0.Copy(this.m_xf.p); + this.m_sweep.c.Copy(this.m_xf.p); + this.m_sweep.a0 = this.m_sweep.a = this.m_xf.q.GetAngle(); + this.m_sweep.alpha0 = 0; + this.m_linearVelocity.Copy(b2Maybe(bd.linearVelocity, b2Vec2.ZERO)); + this.m_angularVelocity = b2Maybe(bd.angularVelocity, 0); + this.m_linearDamping = b2Maybe(bd.linearDamping, 0); + this.m_angularDamping = b2Maybe(bd.angularDamping, 0); + this.m_gravityScale = b2Maybe(bd.gravityScale, 1); + this.m_force.SetZero(); + this.m_torque = 0; + this.m_sleepTime = 0; + this.m_type = b2Maybe(bd.type, exports.b2BodyType.b2_staticBody); + if (bd.type === exports.b2BodyType.b2_dynamicBody) { + this.m_mass = 1; + this.m_invMass = 1; + } else { + this.m_mass = 0; + this.m_invMass = 0; + } + this.m_I = 0; + this.m_invI = 0; + this.m_userData = bd.userData; + this.m_fixtureList = null; + this.m_fixtureCount = 0; + this.m_controllerList = null; + this.m_controllerCount = 0; + } + b2Body.prototype.CreateFixture = function (a, b) { + void 0 === b && (b = 0); + return a instanceof b2Shape ? this.CreateFixtureShapeDensity(a, b) : this.CreateFixtureDef(a); + }; + b2Body.prototype.CreateFixtureDef = function (def) { + if (this.m_world.IsLocked()) throw new Error(); + var fixture = new b2Fixture(def, this); + fixture.Create(def); + this.m_activeFlag && fixture.CreateProxies(this.m_xf); + fixture.m_next = this.m_fixtureList; + this.m_fixtureList = fixture; + ++this.m_fixtureCount; + fixture.m_density > 0 && this.ResetMassData(); + this.m_world.m_newFixture = true; + return fixture; + }; + b2Body.prototype.CreateFixtureShapeDensity = function (shape, density) { + void 0 === density && (density = 0); + var def = b2Body.CreateFixtureShapeDensity_s_def; + def.shape = shape; + def.density = density; + return this.CreateFixtureDef(def); + }; + b2Body.prototype.DestroyFixture = function (fixture) { + if (this.m_world.IsLocked()) throw new Error(); + var node = this.m_fixtureList; + var ppF = null; + while (null !== node) { + if (node === fixture) { + ppF ? ppF.m_next = fixture.m_next : this.m_fixtureList = fixture.m_next; + break; + } + ppF = node; + node = node.m_next; + } + var edge = this.m_contactList; + while (edge) { + var c = edge.contact; + edge = edge.next; + var fixtureA = c.GetFixtureA(); + var fixtureB = c.GetFixtureB(); + fixture !== fixtureA && fixture !== fixtureB || this.m_world.m_contactManager.Destroy(c); + } + this.m_activeFlag && fixture.DestroyProxies(); + fixture.m_next = null; + fixture.Destroy(); + --this.m_fixtureCount; + this.ResetMassData(); + }; + b2Body.prototype.SetTransformVec = function (position, angle) { + this.SetTransformXY(position.x, position.y, angle); + }; + b2Body.prototype.SetTransformXY = function (x, y, angle) { + if (this.m_world.IsLocked()) throw new Error(); + this.m_xf.q.SetAngle(angle); + this.m_xf.p.Set(x, y); + this.m_xf0.Copy(this.m_xf); + b2Transform.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c); + this.m_sweep.a = angle; + this.m_sweep.c0.Copy(this.m_sweep.c); + this.m_sweep.a0 = angle; + for (var f = this.m_fixtureList; f; f = f.m_next) f.Synchronize(this.m_xf, this.m_xf); + this.m_world.m_contactManager.FindNewContacts(); + }; + b2Body.prototype.SetTransform = function (xf) { + this.SetTransformVec(xf.p, xf.GetAngle()); + }; + b2Body.prototype.GetTransform = function () { + return this.m_xf; + }; + b2Body.prototype.GetPosition = function () { + return this.m_xf.p; + }; + b2Body.prototype.SetPosition = function (position) { + this.SetTransformVec(position, this.GetAngle()); + }; + b2Body.prototype.SetPositionXY = function (x, y) { + this.SetTransformXY(x, y, this.GetAngle()); + }; + b2Body.prototype.GetAngle = function () { + return this.m_sweep.a; + }; + b2Body.prototype.SetAngle = function (angle) { + this.SetTransformVec(this.GetPosition(), angle); + }; + b2Body.prototype.GetWorldCenter = function () { + return this.m_sweep.c; + }; + b2Body.prototype.GetLocalCenter = function () { + return this.m_sweep.localCenter; + }; + b2Body.prototype.SetLinearVelocity = function (v) { + if (this.m_type === exports.b2BodyType.b2_staticBody) return; + b2Vec2.DotVV(v, v) > 0 && this.SetAwake(true); + this.m_linearVelocity.Copy(v); + }; + b2Body.prototype.GetLinearVelocity = function () { + return this.m_linearVelocity; + }; + b2Body.prototype.SetAngularVelocity = function (w) { + if (this.m_type === exports.b2BodyType.b2_staticBody) return; + w * w > 0 && this.SetAwake(true); + this.m_angularVelocity = w; + }; + b2Body.prototype.GetAngularVelocity = function () { + return this.m_angularVelocity; + }; + b2Body.prototype.GetDefinition = function (bd) { + bd.type = this.GetType(); + bd.allowSleep = this.m_autoSleepFlag; + bd.angle = this.GetAngle(); + bd.angularDamping = this.m_angularDamping; + bd.gravityScale = this.m_gravityScale; + bd.angularVelocity = this.m_angularVelocity; + bd.fixedRotation = this.m_fixedRotationFlag; + bd.bullet = this.m_bulletFlag; + bd.awake = this.m_awakeFlag; + bd.linearDamping = this.m_linearDamping; + bd.linearVelocity.Copy(this.GetLinearVelocity()); + bd.position.Copy(this.GetPosition()); + bd.userData = this.GetUserData(); + return bd; + }; + b2Body.prototype.ApplyForce = function (force, point, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + if (this.m_awakeFlag) { + this.m_force.x += force.x; + this.m_force.y += force.y; + this.m_torque += (point.x - this.m_sweep.c.x) * force.y - (point.y - this.m_sweep.c.y) * force.x; + } + }; + b2Body.prototype.ApplyForceToCenter = function (force, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + if (this.m_awakeFlag) { + this.m_force.x += force.x; + this.m_force.y += force.y; + } + }; + b2Body.prototype.ApplyTorque = function (torque, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + this.m_awakeFlag && (this.m_torque += torque); + }; + b2Body.prototype.ApplyLinearImpulse = function (impulse, point, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + if (this.m_awakeFlag) { + this.m_linearVelocity.x += this.m_invMass * impulse.x; + this.m_linearVelocity.y += this.m_invMass * impulse.y; + this.m_angularVelocity += this.m_invI * ((point.x - this.m_sweep.c.x) * impulse.y - (point.y - this.m_sweep.c.y) * impulse.x); + } + }; + b2Body.prototype.ApplyLinearImpulseToCenter = function (impulse, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + if (this.m_awakeFlag) { + this.m_linearVelocity.x += this.m_invMass * impulse.x; + this.m_linearVelocity.y += this.m_invMass * impulse.y; + } + }; + b2Body.prototype.ApplyAngularImpulse = function (impulse, wake) { + void 0 === wake && (wake = true); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + wake && !this.m_awakeFlag && this.SetAwake(true); + this.m_awakeFlag && (this.m_angularVelocity += this.m_invI * impulse); + }; + b2Body.prototype.GetMass = function () { + return this.m_mass; + }; + b2Body.prototype.GetInertia = function () { + return this.m_I + this.m_mass * b2Vec2.DotVV(this.m_sweep.localCenter, this.m_sweep.localCenter); + }; + b2Body.prototype.GetMassData = function (data) { + data.mass = this.m_mass; + data.I = this.m_I + this.m_mass * b2Vec2.DotVV(this.m_sweep.localCenter, this.m_sweep.localCenter); + data.center.Copy(this.m_sweep.localCenter); + return data; + }; + b2Body.prototype.SetMassData = function (massData) { + if (this.m_world.IsLocked()) throw new Error(); + if (this.m_type !== exports.b2BodyType.b2_dynamicBody) return; + this.m_invMass = 0; + this.m_I = 0; + this.m_invI = 0; + this.m_mass = massData.mass; + this.m_mass <= 0 && (this.m_mass = 1); + this.m_invMass = 1 / this.m_mass; + if (massData.I > 0 && !this.m_fixedRotationFlag) { + this.m_I = massData.I - this.m_mass * b2Vec2.DotVV(massData.center, massData.center); + this.m_invI = 1 / this.m_I; + } + var oldCenter = b2Body.SetMassData_s_oldCenter.Copy(this.m_sweep.c); + this.m_sweep.localCenter.Copy(massData.center); + b2Transform.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c); + this.m_sweep.c0.Copy(this.m_sweep.c); + b2Vec2.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, b2Vec2.SubVV(this.m_sweep.c, oldCenter, b2Vec2.s_t0), this.m_linearVelocity); + }; + b2Body.prototype.ResetMassData = function () { + this.m_mass = 0; + this.m_invMass = 0; + this.m_I = 0; + this.m_invI = 0; + this.m_sweep.localCenter.SetZero(); + if (this.m_type === exports.b2BodyType.b2_staticBody || this.m_type === exports.b2BodyType.b2_kinematicBody) { + this.m_sweep.c0.Copy(this.m_xf.p); + this.m_sweep.c.Copy(this.m_xf.p); + this.m_sweep.a0 = this.m_sweep.a; + return; + } + var localCenter = b2Body.ResetMassData_s_localCenter.SetZero(); + for (var f = this.m_fixtureList; f; f = f.m_next) { + if (0 === f.m_density) continue; + var massData = f.GetMassData(b2Body.ResetMassData_s_massData); + this.m_mass += massData.mass; + localCenter.x += massData.center.x * massData.mass; + localCenter.y += massData.center.y * massData.mass; + this.m_I += massData.I; + } + if (this.m_mass > 0) { + this.m_invMass = 1 / this.m_mass; + localCenter.x *= this.m_invMass; + localCenter.y *= this.m_invMass; + } else { + this.m_mass = 1; + this.m_invMass = 1; + } + if (this.m_I > 0 && !this.m_fixedRotationFlag) { + this.m_I -= this.m_mass * b2Vec2.DotVV(localCenter, localCenter); + this.m_invI = 1 / this.m_I; + } else { + this.m_I = 0; + this.m_invI = 0; + } + var oldCenter = b2Body.ResetMassData_s_oldCenter.Copy(this.m_sweep.c); + this.m_sweep.localCenter.Copy(localCenter); + b2Transform.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c); + this.m_sweep.c0.Copy(this.m_sweep.c); + b2Vec2.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, b2Vec2.SubVV(this.m_sweep.c, oldCenter, b2Vec2.s_t0), this.m_linearVelocity); + }; + b2Body.prototype.GetWorldPoint = function (localPoint, out) { + return b2Transform.MulXV(this.m_xf, localPoint, out); + }; + b2Body.prototype.GetWorldVector = function (localVector, out) { + return b2Rot.MulRV(this.m_xf.q, localVector, out); + }; + b2Body.prototype.GetLocalPoint = function (worldPoint, out) { + return b2Transform.MulTXV(this.m_xf, worldPoint, out); + }; + b2Body.prototype.GetLocalVector = function (worldVector, out) { + return b2Rot.MulTRV(this.m_xf.q, worldVector, out); + }; + b2Body.prototype.GetLinearVelocityFromWorldPoint = function (worldPoint, out) { + return b2Vec2.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, b2Vec2.SubVV(worldPoint, this.m_sweep.c, b2Vec2.s_t0), out); + }; + b2Body.prototype.GetLinearVelocityFromLocalPoint = function (localPoint, out) { + return this.GetLinearVelocityFromWorldPoint(this.GetWorldPoint(localPoint, out), out); + }; + b2Body.prototype.GetLinearDamping = function () { + return this.m_linearDamping; + }; + b2Body.prototype.SetLinearDamping = function (linearDamping) { + this.m_linearDamping = linearDamping; + }; + b2Body.prototype.GetAngularDamping = function () { + return this.m_angularDamping; + }; + b2Body.prototype.SetAngularDamping = function (angularDamping) { + this.m_angularDamping = angularDamping; + }; + b2Body.prototype.GetGravityScale = function () { + return this.m_gravityScale; + }; + b2Body.prototype.SetGravityScale = function (scale) { + this.m_gravityScale = scale; + }; + b2Body.prototype.SetType = function (type) { + if (this.m_world.IsLocked()) throw new Error(); + if (this.m_type === type) return; + this.m_type = type; + this.ResetMassData(); + if (this.m_type === exports.b2BodyType.b2_staticBody) { + this.m_linearVelocity.SetZero(); + this.m_angularVelocity = 0; + this.m_sweep.a0 = this.m_sweep.a; + this.m_sweep.c0.Copy(this.m_sweep.c); + this.SynchronizeFixtures(); + } + this.SetAwake(true); + this.m_force.SetZero(); + this.m_torque = 0; + var ce = this.m_contactList; + while (ce) { + var ce0 = ce; + ce = ce.next; + this.m_world.m_contactManager.Destroy(ce0.contact); + } + this.m_contactList = null; + for (var f = this.m_fixtureList; f; f = f.m_next) f.TouchProxies(); + }; + b2Body.prototype.GetType = function () { + return this.m_type; + }; + b2Body.prototype.SetBullet = function (flag) { + this.m_bulletFlag = flag; + }; + b2Body.prototype.IsBullet = function () { + return this.m_bulletFlag; + }; + b2Body.prototype.SetSleepingAllowed = function (flag) { + this.m_autoSleepFlag = flag; + flag || this.SetAwake(true); + }; + b2Body.prototype.IsSleepingAllowed = function () { + return this.m_autoSleepFlag; + }; + b2Body.prototype.SetAwake = function (flag) { + if (flag) { + this.m_awakeFlag = true; + this.m_sleepTime = 0; + } else { + this.m_awakeFlag = false; + this.m_sleepTime = 0; + this.m_linearVelocity.SetZero(); + this.m_angularVelocity = 0; + this.m_force.SetZero(); + this.m_torque = 0; + } + }; + b2Body.prototype.IsAwake = function () { + return this.m_awakeFlag; + }; + b2Body.prototype.SetActive = function (flag) { + if (this.m_world.IsLocked()) throw new Error(); + if (flag === this.IsActive()) return; + this.m_activeFlag = flag; + if (flag) for (var f = this.m_fixtureList; f; f = f.m_next) f.CreateProxies(this.m_xf); else { + for (var f = this.m_fixtureList; f; f = f.m_next) f.DestroyProxies(); + var ce = this.m_contactList; + while (ce) { + var ce0 = ce; + ce = ce.next; + this.m_world.m_contactManager.Destroy(ce0.contact); + } + this.m_contactList = null; + } + }; + b2Body.prototype.IsActive = function () { + return this.m_activeFlag; + }; + b2Body.prototype.SetFixedRotation = function (flag) { + if (this.m_fixedRotationFlag === flag) return; + this.m_fixedRotationFlag = flag; + this.m_angularVelocity = 0; + this.ResetMassData(); + }; + b2Body.prototype.IsFixedRotation = function () { + return this.m_fixedRotationFlag; + }; + b2Body.prototype.GetFixtureList = function () { + return this.m_fixtureList; + }; + b2Body.prototype.GetJointList = function () { + return this.m_jointList; + }; + b2Body.prototype.GetContactList = function () { + return this.m_contactList; + }; + b2Body.prototype.GetNext = function () { + return this.m_next; + }; + b2Body.prototype.GetUserData = function () { + return this.m_userData; + }; + b2Body.prototype.SetUserData = function (data) { + this.m_userData = data; + }; + b2Body.prototype.GetWorld = function () { + return this.m_world; + }; + b2Body.prototype.Dump = function (log) { + var bodyIndex = this.m_islandIndex; + log("{\n"); + log(" const bd: b2BodyDef = new b2BodyDef();\n"); + var type_str = ""; + switch (this.m_type) { + case exports.b2BodyType.b2_staticBody: + type_str = "b2BodyType.b2_staticBody"; + break; + + case exports.b2BodyType.b2_kinematicBody: + type_str = "b2BodyType.b2_kinematicBody"; + break; + + case exports.b2BodyType.b2_dynamicBody: + type_str = "b2BodyType.b2_dynamicBody"; + } + log(" bd.type = %s;\n", type_str); + log(" bd.position.Set(%.15f, %.15f);\n", this.m_xf.p.x, this.m_xf.p.y); + log(" bd.angle = %.15f;\n", this.m_sweep.a); + log(" bd.linearVelocity.Set(%.15f, %.15f);\n", this.m_linearVelocity.x, this.m_linearVelocity.y); + log(" bd.angularVelocity = %.15f;\n", this.m_angularVelocity); + log(" bd.linearDamping = %.15f;\n", this.m_linearDamping); + log(" bd.angularDamping = %.15f;\n", this.m_angularDamping); + log(" bd.allowSleep = %s;\n", this.m_autoSleepFlag ? "true" : "false"); + log(" bd.awake = %s;\n", this.m_awakeFlag ? "true" : "false"); + log(" bd.fixedRotation = %s;\n", this.m_fixedRotationFlag ? "true" : "false"); + log(" bd.bullet = %s;\n", this.m_bulletFlag ? "true" : "false"); + log(" bd.active = %s;\n", this.m_activeFlag ? "true" : "false"); + log(" bd.gravityScale = %.15f;\n", this.m_gravityScale); + log("\n"); + log(" bodies[%d] = this.m_world.CreateBody(bd);\n", this.m_islandIndex); + log("\n"); + for (var f = this.m_fixtureList; f; f = f.m_next) { + log(" {\n"); + f.Dump(log, bodyIndex); + log(" }\n"); + } + log("}\n"); + }; + b2Body.prototype.SynchronizeFixtures = function () { + var xf1 = b2Body.SynchronizeFixtures_s_xf1; + xf1.q.SetAngle(this.m_sweep.a0); + b2Rot.MulRV(xf1.q, this.m_sweep.localCenter, xf1.p); + b2Vec2.SubVV(this.m_sweep.c0, xf1.p, xf1.p); + for (var f = this.m_fixtureList; f; f = f.m_next) f.Synchronize(xf1, this.m_xf); + }; + b2Body.prototype.SynchronizeTransform = function () { + this.m_xf.q.SetAngle(this.m_sweep.a); + b2Rot.MulRV(this.m_xf.q, this.m_sweep.localCenter, this.m_xf.p); + b2Vec2.SubVV(this.m_sweep.c, this.m_xf.p, this.m_xf.p); + }; + b2Body.prototype.ShouldCollide = function (other) { + if (this.m_type === exports.b2BodyType.b2_staticBody && other.m_type === exports.b2BodyType.b2_staticBody) return false; + return this.ShouldCollideConnected(other); + }; + b2Body.prototype.ShouldCollideConnected = function (other) { + for (var jn = this.m_jointList; jn; jn = jn.next) if (jn.other === other && !jn.joint.m_collideConnected) return false; + return true; + }; + b2Body.prototype.Advance = function (alpha) { + this.m_sweep.Advance(alpha); + this.m_sweep.c.Copy(this.m_sweep.c0); + this.m_sweep.a = this.m_sweep.a0; + this.m_xf.q.SetAngle(this.m_sweep.a); + b2Rot.MulRV(this.m_xf.q, this.m_sweep.localCenter, this.m_xf.p); + b2Vec2.SubVV(this.m_sweep.c, this.m_xf.p, this.m_xf.p); + }; + b2Body.prototype.GetControllerList = function () { + return this.m_controllerList; + }; + b2Body.prototype.GetControllerCount = function () { + return this.m_controllerCount; + }; + b2Body.CreateFixtureShapeDensity_s_def = new b2FixtureDef(); + b2Body.SetMassData_s_oldCenter = new b2Vec2(); + b2Body.ResetMassData_s_localCenter = new b2Vec2(); + b2Body.ResetMassData_s_oldCenter = new b2Vec2(); + b2Body.ResetMassData_s_massData = new b2MassData(); + b2Body.SynchronizeFixtures_s_xf1 = new b2Transform(); + return b2Body; + })(); + (function (b2JointType) { + b2JointType[b2JointType["e_unknownJoint"] = 0] = "e_unknownJoint"; + b2JointType[b2JointType["e_revoluteJoint"] = 1] = "e_revoluteJoint"; + b2JointType[b2JointType["e_prismaticJoint"] = 2] = "e_prismaticJoint"; + b2JointType[b2JointType["e_distanceJoint"] = 3] = "e_distanceJoint"; + b2JointType[b2JointType["e_pulleyJoint"] = 4] = "e_pulleyJoint"; + b2JointType[b2JointType["e_mouseJoint"] = 5] = "e_mouseJoint"; + b2JointType[b2JointType["e_gearJoint"] = 6] = "e_gearJoint"; + b2JointType[b2JointType["e_wheelJoint"] = 7] = "e_wheelJoint"; + b2JointType[b2JointType["e_weldJoint"] = 8] = "e_weldJoint"; + b2JointType[b2JointType["e_frictionJoint"] = 9] = "e_frictionJoint"; + b2JointType[b2JointType["e_ropeJoint"] = 10] = "e_ropeJoint"; + b2JointType[b2JointType["e_motorJoint"] = 11] = "e_motorJoint"; + b2JointType[b2JointType["e_areaJoint"] = 12] = "e_areaJoint"; + })(exports.b2JointType || (exports.b2JointType = {})); + (function (b2LimitState) { + b2LimitState[b2LimitState["e_inactiveLimit"] = 0] = "e_inactiveLimit"; + b2LimitState[b2LimitState["e_atLowerLimit"] = 1] = "e_atLowerLimit"; + b2LimitState[b2LimitState["e_atUpperLimit"] = 2] = "e_atUpperLimit"; + b2LimitState[b2LimitState["e_equalLimits"] = 3] = "e_equalLimits"; + })(exports.b2LimitState || (exports.b2LimitState = {})); + var b2Jacobian = (function () { + function b2Jacobian() { + this.linear = new b2Vec2(); + this.angularA = 0; + this.angularB = 0; + } + b2Jacobian.prototype.SetZero = function () { + this.linear.SetZero(); + this.angularA = 0; + this.angularB = 0; + return this; + }; + b2Jacobian.prototype.Set = function (x, a1, a2) { + this.linear.Copy(x); + this.angularA = a1; + this.angularB = a2; + return this; + }; + return b2Jacobian; + })(); + var b2JointEdge = (function () { + function b2JointEdge(joint, other) { + this.prev = null; + this.next = null; + this.joint = joint; + this.other = other; + } + return b2JointEdge; + })(); + var b2JointDef = (function () { + function b2JointDef(type) { + this.type = exports.b2JointType.e_unknownJoint; + this.userData = null; + this.collideConnected = false; + this.type = type; + } + return b2JointDef; + })(); + var b2Joint = (function () { + function b2Joint(def) { + this.m_type = exports.b2JointType.e_unknownJoint; + this.m_prev = null; + this.m_next = null; + this.m_index = 0; + this.m_islandFlag = false; + this.m_collideConnected = false; + this.m_userData = null; + this.m_type = def.type; + this.m_edgeA = new b2JointEdge(this, def.bodyB); + this.m_edgeB = new b2JointEdge(this, def.bodyA); + this.m_bodyA = def.bodyA; + this.m_bodyB = def.bodyB; + this.m_collideConnected = b2Maybe(def.collideConnected, false); + this.m_userData = def.userData; + } + b2Joint.prototype.GetType = function () { + return this.m_type; + }; + b2Joint.prototype.GetBodyA = function () { + return this.m_bodyA; + }; + b2Joint.prototype.GetBodyB = function () { + return this.m_bodyB; + }; + b2Joint.prototype.GetNext = function () { + return this.m_next; + }; + b2Joint.prototype.GetUserData = function () { + return this.m_userData; + }; + b2Joint.prototype.SetUserData = function (data) { + this.m_userData = data; + }; + b2Joint.prototype.IsActive = function () { + return this.m_bodyA.IsActive() && this.m_bodyB.IsActive(); + }; + b2Joint.prototype.GetCollideConnected = function () { + return this.m_collideConnected; + }; + b2Joint.prototype.Dump = function (log) { + log("// Dump is not supported for this joint type.\n"); + }; + b2Joint.prototype.ShiftOrigin = function (newOrigin) { }; + return b2Joint; + })(); + var b2DistanceJointDef = (function (_super) { + __extends(b2DistanceJointDef, _super); + function b2DistanceJointDef() { + var _this = _super.call(this, exports.b2JointType.e_distanceJoint) || this; + _this.localAnchorA = new b2Vec2(); + _this.localAnchorB = new b2Vec2(); + _this.length = 1; + _this.frequencyHz = 0; + _this.dampingRatio = 0; + return _this; + } + b2DistanceJointDef.prototype.Initialize = function (b1, b2, anchor1, anchor2) { + this.bodyA = b1; + this.bodyB = b2; + this.bodyA.GetLocalPoint(anchor1, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor2, this.localAnchorB); + this.length = b2Vec2.DistanceVV(anchor1, anchor2); + this.frequencyHz = 0; + this.dampingRatio = 0; + }; + return b2DistanceJointDef; + })(b2JointDef); + var b2DistanceJoint = (function (_super) { + __extends(b2DistanceJoint, _super); + function b2DistanceJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_frequencyHz = 0; + _this.m_dampingRatio = 0; + _this.m_bias = 0; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_gamma = 0; + _this.m_impulse = 0; + _this.m_length = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_u = new b2Vec2(); + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_mass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_frequencyHz = b2Maybe(def.frequencyHz, 0); + _this.m_dampingRatio = b2Maybe(def.dampingRatio, 0); + _this.m_localAnchorA.Copy(def.localAnchorA); + _this.m_localAnchorB.Copy(def.localAnchorB); + _this.m_length = def.length; + return _this; + } + b2DistanceJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2DistanceJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2DistanceJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * this.m_impulse * this.m_u.x; + out.y = inv_dt * this.m_impulse * this.m_u.y; + return out; + }; + b2DistanceJoint.prototype.GetReactionTorque = function (inv_dt) { + return 0; + }; + b2DistanceJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2DistanceJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2DistanceJoint.prototype.SetLength = function (length) { + this.m_length = length; + }; + b2DistanceJoint.prototype.Length = function () { + return this.m_length; + }; + b2DistanceJoint.prototype.SetFrequency = function (hz) { + this.m_frequencyHz = hz; + }; + b2DistanceJoint.prototype.GetFrequency = function () { + return this.m_frequencyHz; + }; + b2DistanceJoint.prototype.SetDampingRatio = function (ratio) { + this.m_dampingRatio = ratio; + }; + b2DistanceJoint.prototype.GetDampingRatio = function () { + return this.m_dampingRatio; + }; + b2DistanceJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2DistanceJointDef = new b2DistanceJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.length = %.15f;\n", this.m_length); + log(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz); + log(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2DistanceJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + this.m_u.x = cB.x + this.m_rB.x - cA.x - this.m_rA.x; + this.m_u.y = cB.y + this.m_rB.y - cA.y - this.m_rA.y; + var length = this.m_u.Length(); + length > b2_linearSlop ? this.m_u.SelfMul(1 / length) : this.m_u.SetZero(); + var crAu = b2Vec2.CrossVV(this.m_rA, this.m_u); + var crBu = b2Vec2.CrossVV(this.m_rB, this.m_u); + var invMass = this.m_invMassA + this.m_invIA * crAu * crAu + this.m_invMassB + this.m_invIB * crBu * crBu; + this.m_mass = 0 !== invMass ? 1 / invMass : 0; + if (this.m_frequencyHz > 0) { + var C = length - this.m_length; + var omega = 2 * b2_pi * this.m_frequencyHz; + var d = 2 * this.m_mass * this.m_dampingRatio * omega; + var k = this.m_mass * omega * omega; + var h = data.step.dt; + this.m_gamma = h * (d + h * k); + this.m_gamma = 0 !== this.m_gamma ? 1 / this.m_gamma : 0; + this.m_bias = C * h * k * this.m_gamma; + invMass += this.m_gamma; + this.m_mass = 0 !== invMass ? 1 / invMass : 0; + } else { + this.m_gamma = 0; + this.m_bias = 0; + } + if (data.step.warmStarting) { + this.m_impulse *= data.step.dtRatio; + var P = b2Vec2.MulSV(this.m_impulse, this.m_u, b2DistanceJoint.InitVelocityConstraints_s_P); + vA.SelfMulSub(this.m_invMassA, P); + wA -= this.m_invIA * b2Vec2.CrossVV(this.m_rA, P); + vB.SelfMulAdd(this.m_invMassB, P); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, P); + } else this.m_impulse = 0; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2DistanceJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var vpA = b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2DistanceJoint.SolveVelocityConstraints_s_vpA); + var vpB = b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2DistanceJoint.SolveVelocityConstraints_s_vpB); + var Cdot = b2Vec2.DotVV(this.m_u, b2Vec2.SubVV(vpB, vpA, b2Vec2.s_t0)); + var impulse = -this.m_mass * (Cdot + this.m_bias + this.m_gamma * this.m_impulse); + this.m_impulse += impulse; + var P = b2Vec2.MulSV(impulse, this.m_u, b2DistanceJoint.SolveVelocityConstraints_s_P); + vA.SelfMulSub(this.m_invMassA, P); + wA -= this.m_invIA * b2Vec2.CrossVV(this.m_rA, P); + vB.SelfMulAdd(this.m_invMassB, P); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, P); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2DistanceJoint.prototype.SolvePositionConstraints = function (data) { + if (this.m_frequencyHz > 0) return true; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var u = this.m_u; + u.x = cB.x + rB.x - cA.x - rA.x; + u.y = cB.y + rB.y - cA.y - rA.y; + var length = this.m_u.Normalize(); + var C = length - this.m_length; + C = b2Clamp(C, -b2_maxLinearCorrection, b2_maxLinearCorrection); + var impulse = -this.m_mass * C; + var P = b2Vec2.MulSV(impulse, u, b2DistanceJoint.SolvePositionConstraints_s_P); + cA.SelfMulSub(this.m_invMassA, P); + aA -= this.m_invIA * b2Vec2.CrossVV(rA, P); + cB.SelfMulAdd(this.m_invMassB, P); + aB += this.m_invIB * b2Vec2.CrossVV(rB, P); + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return b2Abs(C) < b2_linearSlop; + }; + b2DistanceJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2DistanceJoint.SolveVelocityConstraints_s_vpA = new b2Vec2(); + b2DistanceJoint.SolveVelocityConstraints_s_vpB = new b2Vec2(); + b2DistanceJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2DistanceJoint.SolvePositionConstraints_s_P = new b2Vec2(); + return b2DistanceJoint; + })(b2Joint); + var b2AreaJointDef = (function (_super) { + __extends(b2AreaJointDef, _super); + function b2AreaJointDef() { + var _this = _super.call(this, exports.b2JointType.e_areaJoint) || this; + _this.bodies = []; + _this.frequencyHz = 0; + _this.dampingRatio = 0; + return _this; + } + b2AreaJointDef.prototype.AddBody = function (body) { + this.bodies.push(body); + 1 === this.bodies.length ? this.bodyA = body : 2 === this.bodies.length && (this.bodyB = body); + }; + return b2AreaJointDef; + })(b2JointDef); + var b2AreaJoint = (function (_super) { + __extends(b2AreaJoint, _super); + function b2AreaJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_frequencyHz = 0; + _this.m_dampingRatio = 0; + _this.m_impulse = 0; + _this.m_targetArea = 0; + _this.m_bodies = def.bodies; + _this.m_frequencyHz = b2Maybe(def.frequencyHz, 0); + _this.m_dampingRatio = b2Maybe(def.dampingRatio, 0); + _this.m_targetLengths = b2MakeNumberArray(def.bodies.length); + _this.m_normals = b2Vec2.MakeArray(def.bodies.length); + _this.m_joints = []; + _this.m_deltas = b2Vec2.MakeArray(def.bodies.length); + _this.m_delta = new b2Vec2(); + var djd = new b2DistanceJointDef(); + djd.frequencyHz = _this.m_frequencyHz; + djd.dampingRatio = _this.m_dampingRatio; + _this.m_targetArea = 0; + for (var i = 0; i < _this.m_bodies.length; ++i) { + var body = _this.m_bodies[i]; + var next = _this.m_bodies[(i + 1) % _this.m_bodies.length]; + var body_c = body.GetWorldCenter(); + var next_c = next.GetWorldCenter(); + _this.m_targetLengths[i] = b2Vec2.DistanceVV(body_c, next_c); + _this.m_targetArea += b2Vec2.CrossVV(body_c, next_c); + djd.Initialize(body, next, body_c, next_c); + _this.m_joints[i] = body.GetWorld().CreateJoint(djd); + } + _this.m_targetArea *= .5; + return _this; + } + b2AreaJoint.prototype.GetAnchorA = function (out) { + return out; + }; + b2AreaJoint.prototype.GetAnchorB = function (out) { + return out; + }; + b2AreaJoint.prototype.GetReactionForce = function (inv_dt, out) { + return out; + }; + b2AreaJoint.prototype.GetReactionTorque = function (inv_dt) { + return 0; + }; + b2AreaJoint.prototype.SetFrequency = function (hz) { + this.m_frequencyHz = hz; + for (var i = 0; i < this.m_joints.length; ++i) this.m_joints[i].SetFrequency(hz); + }; + b2AreaJoint.prototype.GetFrequency = function () { + return this.m_frequencyHz; + }; + b2AreaJoint.prototype.SetDampingRatio = function (ratio) { + this.m_dampingRatio = ratio; + for (var i = 0; i < this.m_joints.length; ++i) this.m_joints[i].SetDampingRatio(ratio); + }; + b2AreaJoint.prototype.GetDampingRatio = function () { + return this.m_dampingRatio; + }; + b2AreaJoint.prototype.Dump = function (log) { + log("Area joint dumping is not supported.\n"); + }; + b2AreaJoint.prototype.InitVelocityConstraints = function (data) { + for (var i = 0; i < this.m_bodies.length; ++i) { + var prev = this.m_bodies[(i + this.m_bodies.length - 1) % this.m_bodies.length]; + var next = this.m_bodies[(i + 1) % this.m_bodies.length]; + var prev_c = data.positions[prev.m_islandIndex].c; + var next_c = data.positions[next.m_islandIndex].c; + var delta = this.m_deltas[i]; + b2Vec2.SubVV(next_c, prev_c, delta); + } + if (data.step.warmStarting) { + this.m_impulse *= data.step.dtRatio; + for (var i = 0; i < this.m_bodies.length; ++i) { + var body = this.m_bodies[i]; + var body_v = data.velocities[body.m_islandIndex].v; + var delta = this.m_deltas[i]; + body_v.x += body.m_invMass * delta.y * .5 * this.m_impulse; + body_v.y += body.m_invMass * -delta.x * .5 * this.m_impulse; + } + } else this.m_impulse = 0; + }; + b2AreaJoint.prototype.SolveVelocityConstraints = function (data) { + var dotMassSum = 0; + var crossMassSum = 0; + for (var i = 0; i < this.m_bodies.length; ++i) { + var body = this.m_bodies[i]; + var body_v = data.velocities[body.m_islandIndex].v; + var delta = this.m_deltas[i]; + dotMassSum += delta.LengthSquared() / body.GetMass(); + crossMassSum += b2Vec2.CrossVV(body_v, delta); + } + var lambda = -2 * crossMassSum / dotMassSum; + this.m_impulse += lambda; + for (var i = 0; i < this.m_bodies.length; ++i) { + var body = this.m_bodies[i]; + var body_v = data.velocities[body.m_islandIndex].v; + var delta = this.m_deltas[i]; + body_v.x += body.m_invMass * delta.y * .5 * lambda; + body_v.y += body.m_invMass * -delta.x * .5 * lambda; + } + }; + b2AreaJoint.prototype.SolvePositionConstraints = function (data) { + var perimeter = 0; + var area = 0; + for (var i = 0; i < this.m_bodies.length; ++i) { + var body = this.m_bodies[i]; + var next = this.m_bodies[(i + 1) % this.m_bodies.length]; + var body_c = data.positions[body.m_islandIndex].c; + var next_c = data.positions[next.m_islandIndex].c; + var delta = b2Vec2.SubVV(next_c, body_c, this.m_delta); + var dist = delta.Length(); + dist < b2_epsilon && (dist = 1); + this.m_normals[i].x = delta.y / dist; + this.m_normals[i].y = -delta.x / dist; + perimeter += dist; + area += b2Vec2.CrossVV(body_c, next_c); + } + area *= .5; + var deltaArea = this.m_targetArea - area; + var toExtrude = .5 * deltaArea / perimeter; + var done = true; + for (var i = 0; i < this.m_bodies.length; ++i) { + var body = this.m_bodies[i]; + var body_c = data.positions[body.m_islandIndex].c; + var next_i = (i + 1) % this.m_bodies.length; + var delta = b2Vec2.AddVV(this.m_normals[i], this.m_normals[next_i], this.m_delta); + delta.SelfMul(toExtrude); + var norm_sq = delta.LengthSquared(); + norm_sq > b2Sq(b2_maxLinearCorrection) && delta.SelfMul(b2_maxLinearCorrection / b2Sqrt(norm_sq)); + norm_sq > b2Sq(b2_linearSlop) && (done = false); + body_c.x += delta.x; + body_c.y += delta.y; + } + return done; + }; + return b2AreaJoint; + })(b2Joint); + var b2FrictionJointDef = (function (_super) { + __extends(b2FrictionJointDef, _super); + function b2FrictionJointDef() { + var _this = _super.call(this, exports.b2JointType.e_frictionJoint) || this; + _this.localAnchorA = new b2Vec2(); + _this.localAnchorB = new b2Vec2(); + _this.maxForce = 0; + _this.maxTorque = 0; + return _this; + } + b2FrictionJointDef.prototype.Initialize = function (bA, bB, anchor) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(anchor, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor, this.localAnchorB); + }; + return b2FrictionJointDef; + })(b2JointDef); + var b2FrictionJoint = (function (_super) { + __extends(b2FrictionJoint, _super); + function b2FrictionJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_linearImpulse = new b2Vec2(); + _this.m_angularImpulse = 0; + _this.m_maxForce = 0; + _this.m_maxTorque = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_linearMass = new b2Mat22(); + _this.m_angularMass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_K = new b2Mat22(); + _this.m_localAnchorA.Copy(def.localAnchorA); + _this.m_localAnchorB.Copy(def.localAnchorB); + _this.m_linearImpulse.SetZero(); + _this.m_maxForce = b2Maybe(def.maxForce, 0); + _this.m_maxTorque = b2Maybe(def.maxTorque, 0); + _this.m_linearMass.SetZero(); + return _this; + } + b2FrictionJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var K = this.m_K; + K.ex.x = mA + mB + iA * rA.y * rA.y + iB * rB.y * rB.y; + K.ex.y = -iA * rA.x * rA.y - iB * rB.x * rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * rA.x * rA.x + iB * rB.x * rB.x; + K.GetInverse(this.m_linearMass); + this.m_angularMass = iA + iB; + this.m_angularMass > 0 && (this.m_angularMass = 1 / this.m_angularMass); + if (data.step.warmStarting) { + this.m_linearImpulse.SelfMul(data.step.dtRatio); + this.m_angularImpulse *= data.step.dtRatio; + var P = this.m_linearImpulse; + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + this.m_angularImpulse); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(this.m_rB, P) + this.m_angularImpulse); + } else { + this.m_linearImpulse.SetZero(); + this.m_angularImpulse = 0; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2FrictionJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var h = data.step.dt; + var Cdot = wB - wA; + var impulse = -this.m_angularMass * Cdot; + var oldImpulse = this.m_angularImpulse; + var maxImpulse = h * this.m_maxTorque; + this.m_angularImpulse = b2Clamp(this.m_angularImpulse + impulse, -maxImpulse, maxImpulse); + impulse = this.m_angularImpulse - oldImpulse; + wA -= iA * impulse; + wB += iB * impulse; + var Cdot_v2 = b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2Vec2.s_t1), b2FrictionJoint.SolveVelocityConstraints_s_Cdot_v2); + var impulseV = b2Mat22.MulMV(this.m_linearMass, Cdot_v2, b2FrictionJoint.SolveVelocityConstraints_s_impulseV).SelfNeg(); + var oldImpulseV = b2FrictionJoint.SolveVelocityConstraints_s_oldImpulseV.Copy(this.m_linearImpulse); + this.m_linearImpulse.SelfAdd(impulseV); + var maxImpulse = h * this.m_maxForce; + if (this.m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) { + this.m_linearImpulse.Normalize(); + this.m_linearImpulse.SelfMul(maxImpulse); + } + b2Vec2.SubVV(this.m_linearImpulse, oldImpulseV, impulseV); + vA.SelfMulSub(mA, impulseV); + wA -= iA * b2Vec2.CrossVV(this.m_rA, impulseV); + vB.SelfMulAdd(mB, impulseV); + wB += iB * b2Vec2.CrossVV(this.m_rB, impulseV); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2FrictionJoint.prototype.SolvePositionConstraints = function (data) { + return true; + }; + b2FrictionJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2FrictionJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2FrictionJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * this.m_linearImpulse.x; + out.y = inv_dt * this.m_linearImpulse.y; + return out; + }; + b2FrictionJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_angularImpulse; + }; + b2FrictionJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2FrictionJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2FrictionJoint.prototype.SetMaxForce = function (force) { + this.m_maxForce = force; + }; + b2FrictionJoint.prototype.GetMaxForce = function () { + return this.m_maxForce; + }; + b2FrictionJoint.prototype.SetMaxTorque = function (torque) { + this.m_maxTorque = torque; + }; + b2FrictionJoint.prototype.GetMaxTorque = function () { + return this.m_maxTorque; + }; + b2FrictionJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2FrictionJointDef = new b2FrictionJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.maxForce = %.15f;\n", this.m_maxForce); + log(" jd.maxTorque = %.15f;\n", this.m_maxTorque); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2FrictionJoint.SolveVelocityConstraints_s_Cdot_v2 = new b2Vec2(); + b2FrictionJoint.SolveVelocityConstraints_s_impulseV = new b2Vec2(); + b2FrictionJoint.SolveVelocityConstraints_s_oldImpulseV = new b2Vec2(); + return b2FrictionJoint; + })(b2Joint); + var b2GearJointDef = (function (_super) { + __extends(b2GearJointDef, _super); + function b2GearJointDef() { + var _this = _super.call(this, exports.b2JointType.e_gearJoint) || this; + _this.ratio = 1; + return _this; + } + return b2GearJointDef; + })(b2JointDef); + var b2GearJoint = (function (_super) { + __extends(b2GearJoint, _super); + function b2GearJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_typeA = exports.b2JointType.e_unknownJoint; + _this.m_typeB = exports.b2JointType.e_unknownJoint; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_localAnchorC = new b2Vec2(); + _this.m_localAnchorD = new b2Vec2(); + _this.m_localAxisC = new b2Vec2(); + _this.m_localAxisD = new b2Vec2(); + _this.m_referenceAngleA = 0; + _this.m_referenceAngleB = 0; + _this.m_constant = 0; + _this.m_ratio = 0; + _this.m_impulse = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_indexC = 0; + _this.m_indexD = 0; + _this.m_lcA = new b2Vec2(); + _this.m_lcB = new b2Vec2(); + _this.m_lcC = new b2Vec2(); + _this.m_lcD = new b2Vec2(); + _this.m_mA = 0; + _this.m_mB = 0; + _this.m_mC = 0; + _this.m_mD = 0; + _this.m_iA = 0; + _this.m_iB = 0; + _this.m_iC = 0; + _this.m_iD = 0; + _this.m_JvAC = new b2Vec2(); + _this.m_JvBD = new b2Vec2(); + _this.m_JwA = 0; + _this.m_JwB = 0; + _this.m_JwC = 0; + _this.m_JwD = 0; + _this.m_mass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_qC = new b2Rot(); + _this.m_qD = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_lalcC = new b2Vec2(); + _this.m_lalcD = new b2Vec2(); + _this.m_joint1 = def.joint1; + _this.m_joint2 = def.joint2; + _this.m_typeA = _this.m_joint1.GetType(); + _this.m_typeB = _this.m_joint2.GetType(); + var coordinateA, coordinateB; + _this.m_bodyC = _this.m_joint1.GetBodyA(); + _this.m_bodyA = _this.m_joint1.GetBodyB(); + var xfA = _this.m_bodyA.m_xf; + var aA = _this.m_bodyA.m_sweep.a; + var xfC = _this.m_bodyC.m_xf; + var aC = _this.m_bodyC.m_sweep.a; + if (_this.m_typeA === exports.b2JointType.e_revoluteJoint) { + var revolute = def.joint1; + _this.m_localAnchorC.Copy(revolute.m_localAnchorA); + _this.m_localAnchorA.Copy(revolute.m_localAnchorB); + _this.m_referenceAngleA = revolute.m_referenceAngle; + _this.m_localAxisC.SetZero(); + coordinateA = aA - aC - _this.m_referenceAngleA; + } else { + var prismatic = def.joint1; + _this.m_localAnchorC.Copy(prismatic.m_localAnchorA); + _this.m_localAnchorA.Copy(prismatic.m_localAnchorB); + _this.m_referenceAngleA = prismatic.m_referenceAngle; + _this.m_localAxisC.Copy(prismatic.m_localXAxisA); + var pC = _this.m_localAnchorC; + var pA = b2Rot.MulTRV(xfC.q, b2Vec2.AddVV(b2Rot.MulRV(xfA.q, _this.m_localAnchorA, b2Vec2.s_t0), b2Vec2.SubVV(xfA.p, xfC.p, b2Vec2.s_t1), b2Vec2.s_t0), b2Vec2.s_t0); + coordinateA = b2Vec2.DotVV(b2Vec2.SubVV(pA, pC, b2Vec2.s_t0), _this.m_localAxisC); + } + _this.m_bodyD = _this.m_joint2.GetBodyA(); + _this.m_bodyB = _this.m_joint2.GetBodyB(); + var xfB = _this.m_bodyB.m_xf; + var aB = _this.m_bodyB.m_sweep.a; + var xfD = _this.m_bodyD.m_xf; + var aD = _this.m_bodyD.m_sweep.a; + if (_this.m_typeB === exports.b2JointType.e_revoluteJoint) { + var revolute = def.joint2; + _this.m_localAnchorD.Copy(revolute.m_localAnchorA); + _this.m_localAnchorB.Copy(revolute.m_localAnchorB); + _this.m_referenceAngleB = revolute.m_referenceAngle; + _this.m_localAxisD.SetZero(); + coordinateB = aB - aD - _this.m_referenceAngleB; + } else { + var prismatic = def.joint2; + _this.m_localAnchorD.Copy(prismatic.m_localAnchorA); + _this.m_localAnchorB.Copy(prismatic.m_localAnchorB); + _this.m_referenceAngleB = prismatic.m_referenceAngle; + _this.m_localAxisD.Copy(prismatic.m_localXAxisA); + var pD = _this.m_localAnchorD; + var pB = b2Rot.MulTRV(xfD.q, b2Vec2.AddVV(b2Rot.MulRV(xfB.q, _this.m_localAnchorB, b2Vec2.s_t0), b2Vec2.SubVV(xfB.p, xfD.p, b2Vec2.s_t1), b2Vec2.s_t0), b2Vec2.s_t0); + coordinateB = b2Vec2.DotVV(b2Vec2.SubVV(pB, pD, b2Vec2.s_t0), _this.m_localAxisD); + } + _this.m_ratio = b2Maybe(def.ratio, 1); + _this.m_constant = coordinateA + _this.m_ratio * coordinateB; + _this.m_impulse = 0; + return _this; + } + b2GearJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_indexC = this.m_bodyC.m_islandIndex; + this.m_indexD = this.m_bodyD.m_islandIndex; + this.m_lcA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_lcB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_lcC.Copy(this.m_bodyC.m_sweep.localCenter); + this.m_lcD.Copy(this.m_bodyD.m_sweep.localCenter); + this.m_mA = this.m_bodyA.m_invMass; + this.m_mB = this.m_bodyB.m_invMass; + this.m_mC = this.m_bodyC.m_invMass; + this.m_mD = this.m_bodyD.m_invMass; + this.m_iA = this.m_bodyA.m_invI; + this.m_iB = this.m_bodyB.m_invI; + this.m_iC = this.m_bodyC.m_invI; + this.m_iD = this.m_bodyD.m_invI; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var aC = data.positions[this.m_indexC].a; + var vC = data.velocities[this.m_indexC].v; + var wC = data.velocities[this.m_indexC].w; + var aD = data.positions[this.m_indexD].a; + var vD = data.velocities[this.m_indexD].v; + var wD = data.velocities[this.m_indexD].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB), qC = this.m_qC.SetAngle(aC), qD = this.m_qD.SetAngle(aD); + this.m_mass = 0; + if (this.m_typeA === exports.b2JointType.e_revoluteJoint) { + this.m_JvAC.SetZero(); + this.m_JwA = 1; + this.m_JwC = 1; + this.m_mass += this.m_iA + this.m_iC; + } else { + var u = b2Rot.MulRV(qC, this.m_localAxisC, b2GearJoint.InitVelocityConstraints_s_u); + b2Vec2.SubVV(this.m_localAnchorC, this.m_lcC, this.m_lalcC); + var rC = b2Rot.MulRV(qC, this.m_lalcC, b2GearJoint.InitVelocityConstraints_s_rC); + b2Vec2.SubVV(this.m_localAnchorA, this.m_lcA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, b2GearJoint.InitVelocityConstraints_s_rA); + this.m_JvAC.Copy(u); + this.m_JwC = b2Vec2.CrossVV(rC, u); + this.m_JwA = b2Vec2.CrossVV(rA, u); + this.m_mass += this.m_mC + this.m_mA + this.m_iC * this.m_JwC * this.m_JwC + this.m_iA * this.m_JwA * this.m_JwA; + } + if (this.m_typeB === exports.b2JointType.e_revoluteJoint) { + this.m_JvBD.SetZero(); + this.m_JwB = this.m_ratio; + this.m_JwD = this.m_ratio; + this.m_mass += this.m_ratio * this.m_ratio * (this.m_iB + this.m_iD); + } else { + var u = b2Rot.MulRV(qD, this.m_localAxisD, b2GearJoint.InitVelocityConstraints_s_u); + b2Vec2.SubVV(this.m_localAnchorD, this.m_lcD, this.m_lalcD); + var rD = b2Rot.MulRV(qD, this.m_lalcD, b2GearJoint.InitVelocityConstraints_s_rD); + b2Vec2.SubVV(this.m_localAnchorB, this.m_lcB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, b2GearJoint.InitVelocityConstraints_s_rB); + b2Vec2.MulSV(this.m_ratio, u, this.m_JvBD); + this.m_JwD = this.m_ratio * b2Vec2.CrossVV(rD, u); + this.m_JwB = this.m_ratio * b2Vec2.CrossVV(rB, u); + this.m_mass += this.m_ratio * this.m_ratio * (this.m_mD + this.m_mB) + this.m_iD * this.m_JwD * this.m_JwD + this.m_iB * this.m_JwB * this.m_JwB; + } + this.m_mass = this.m_mass > 0 ? 1 / this.m_mass : 0; + if (data.step.warmStarting) { + vA.SelfMulAdd(this.m_mA * this.m_impulse, this.m_JvAC); + wA += this.m_iA * this.m_impulse * this.m_JwA; + vB.SelfMulAdd(this.m_mB * this.m_impulse, this.m_JvBD); + wB += this.m_iB * this.m_impulse * this.m_JwB; + vC.SelfMulSub(this.m_mC * this.m_impulse, this.m_JvAC); + wC -= this.m_iC * this.m_impulse * this.m_JwC; + vD.SelfMulSub(this.m_mD * this.m_impulse, this.m_JvBD); + wD -= this.m_iD * this.m_impulse * this.m_JwD; + } else this.m_impulse = 0; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + data.velocities[this.m_indexC].w = wC; + data.velocities[this.m_indexD].w = wD; + }; + b2GearJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var vC = data.velocities[this.m_indexC].v; + var wC = data.velocities[this.m_indexC].w; + var vD = data.velocities[this.m_indexD].v; + var wD = data.velocities[this.m_indexD].w; + var Cdot = b2Vec2.DotVV(this.m_JvAC, b2Vec2.SubVV(vA, vC, b2Vec2.s_t0)) + b2Vec2.DotVV(this.m_JvBD, b2Vec2.SubVV(vB, vD, b2Vec2.s_t0)); + Cdot += this.m_JwA * wA - this.m_JwC * wC + (this.m_JwB * wB - this.m_JwD * wD); + var impulse = -this.m_mass * Cdot; + this.m_impulse += impulse; + vA.SelfMulAdd(this.m_mA * impulse, this.m_JvAC); + wA += this.m_iA * impulse * this.m_JwA; + vB.SelfMulAdd(this.m_mB * impulse, this.m_JvBD); + wB += this.m_iB * impulse * this.m_JwB; + vC.SelfMulSub(this.m_mC * impulse, this.m_JvAC); + wC -= this.m_iC * impulse * this.m_JwC; + vD.SelfMulSub(this.m_mD * impulse, this.m_JvBD); + wD -= this.m_iD * impulse * this.m_JwD; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + data.velocities[this.m_indexC].w = wC; + data.velocities[this.m_indexD].w = wD; + }; + b2GearJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var cC = data.positions[this.m_indexC].c; + var aC = data.positions[this.m_indexC].a; + var cD = data.positions[this.m_indexD].c; + var aD = data.positions[this.m_indexD].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB), qC = this.m_qC.SetAngle(aC), qD = this.m_qD.SetAngle(aD); + var linearError = 0; + var coordinateA, coordinateB; + var JvAC = this.m_JvAC, JvBD = this.m_JvBD; + var JwA, JwB, JwC, JwD; + var mass = 0; + if (this.m_typeA === exports.b2JointType.e_revoluteJoint) { + JvAC.SetZero(); + JwA = 1; + JwC = 1; + mass += this.m_iA + this.m_iC; + coordinateA = aA - aC - this.m_referenceAngleA; + } else { + var u = b2Rot.MulRV(qC, this.m_localAxisC, b2GearJoint.SolvePositionConstraints_s_u); + var rC = b2Rot.MulRV(qC, this.m_lalcC, b2GearJoint.SolvePositionConstraints_s_rC); + var rA = b2Rot.MulRV(qA, this.m_lalcA, b2GearJoint.SolvePositionConstraints_s_rA); + JvAC.Copy(u); + JwC = b2Vec2.CrossVV(rC, u); + JwA = b2Vec2.CrossVV(rA, u); + mass += this.m_mC + this.m_mA + this.m_iC * JwC * JwC + this.m_iA * JwA * JwA; + var pC = this.m_lalcC; + var pA = b2Rot.MulTRV(qC, b2Vec2.AddVV(rA, b2Vec2.SubVV(cA, cC, b2Vec2.s_t0), b2Vec2.s_t0), b2Vec2.s_t0); + coordinateA = b2Vec2.DotVV(b2Vec2.SubVV(pA, pC, b2Vec2.s_t0), this.m_localAxisC); + } + if (this.m_typeB === exports.b2JointType.e_revoluteJoint) { + JvBD.SetZero(); + JwB = this.m_ratio; + JwD = this.m_ratio; + mass += this.m_ratio * this.m_ratio * (this.m_iB + this.m_iD); + coordinateB = aB - aD - this.m_referenceAngleB; + } else { + var u = b2Rot.MulRV(qD, this.m_localAxisD, b2GearJoint.SolvePositionConstraints_s_u); + var rD = b2Rot.MulRV(qD, this.m_lalcD, b2GearJoint.SolvePositionConstraints_s_rD); + var rB = b2Rot.MulRV(qB, this.m_lalcB, b2GearJoint.SolvePositionConstraints_s_rB); + b2Vec2.MulSV(this.m_ratio, u, JvBD); + JwD = this.m_ratio * b2Vec2.CrossVV(rD, u); + JwB = this.m_ratio * b2Vec2.CrossVV(rB, u); + mass += this.m_ratio * this.m_ratio * (this.m_mD + this.m_mB) + this.m_iD * JwD * JwD + this.m_iB * JwB * JwB; + var pD = this.m_lalcD; + var pB = b2Rot.MulTRV(qD, b2Vec2.AddVV(rB, b2Vec2.SubVV(cB, cD, b2Vec2.s_t0), b2Vec2.s_t0), b2Vec2.s_t0); + coordinateB = b2Vec2.DotVV(b2Vec2.SubVV(pB, pD, b2Vec2.s_t0), this.m_localAxisD); + } + var C = coordinateA + this.m_ratio * coordinateB - this.m_constant; + var impulse = 0; + mass > 0 && (impulse = -C / mass); + cA.SelfMulAdd(this.m_mA * impulse, JvAC); + aA += this.m_iA * impulse * JwA; + cB.SelfMulAdd(this.m_mB * impulse, JvBD); + aB += this.m_iB * impulse * JwB; + cC.SelfMulSub(this.m_mC * impulse, JvAC); + aC -= this.m_iC * impulse * JwC; + cD.SelfMulSub(this.m_mD * impulse, JvBD); + aD -= this.m_iD * impulse * JwD; + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + data.positions[this.m_indexC].a = aC; + data.positions[this.m_indexD].a = aD; + return linearError < b2_linearSlop; + }; + b2GearJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2GearJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2GearJoint.prototype.GetReactionForce = function (inv_dt, out) { + return b2Vec2.MulSV(inv_dt * this.m_impulse, this.m_JvAC, out); + }; + b2GearJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_impulse * this.m_JwA; + }; + b2GearJoint.prototype.GetJoint1 = function () { + return this.m_joint1; + }; + b2GearJoint.prototype.GetJoint2 = function () { + return this.m_joint2; + }; + b2GearJoint.prototype.GetRatio = function () { + return this.m_ratio; + }; + b2GearJoint.prototype.SetRatio = function (ratio) { + this.m_ratio = ratio; + }; + b2GearJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + var index1 = this.m_joint1.m_index; + var index2 = this.m_joint2.m_index; + log(" const jd: b2GearJointDef = new b2GearJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.joint1 = joints[%d];\n", index1); + log(" jd.joint2 = joints[%d];\n", index2); + log(" jd.ratio = %.15f;\n", this.m_ratio); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2GearJoint.InitVelocityConstraints_s_u = new b2Vec2(); + b2GearJoint.InitVelocityConstraints_s_rA = new b2Vec2(); + b2GearJoint.InitVelocityConstraints_s_rB = new b2Vec2(); + b2GearJoint.InitVelocityConstraints_s_rC = new b2Vec2(); + b2GearJoint.InitVelocityConstraints_s_rD = new b2Vec2(); + b2GearJoint.SolvePositionConstraints_s_u = new b2Vec2(); + b2GearJoint.SolvePositionConstraints_s_rA = new b2Vec2(); + b2GearJoint.SolvePositionConstraints_s_rB = new b2Vec2(); + b2GearJoint.SolvePositionConstraints_s_rC = new b2Vec2(); + b2GearJoint.SolvePositionConstraints_s_rD = new b2Vec2(); + return b2GearJoint; + })(b2Joint); + var b2MotorJointDef = (function (_super) { + __extends(b2MotorJointDef, _super); + function b2MotorJointDef() { + var _this = _super.call(this, exports.b2JointType.e_motorJoint) || this; + _this.linearOffset = new b2Vec2(0, 0); + _this.angularOffset = 0; + _this.maxForce = 1; + _this.maxTorque = 1; + _this.correctionFactor = .3; + return _this; + } + b2MotorJointDef.prototype.Initialize = function (bA, bB) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(this.bodyB.GetPosition(), this.linearOffset); + var angleA = this.bodyA.GetAngle(); + var angleB = this.bodyB.GetAngle(); + this.angularOffset = angleB - angleA; + }; + return b2MotorJointDef; + })(b2JointDef); + var b2MotorJoint = (function (_super) { + __extends(b2MotorJoint, _super); + function b2MotorJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_linearOffset = new b2Vec2(); + _this.m_angularOffset = 0; + _this.m_linearImpulse = new b2Vec2(); + _this.m_angularImpulse = 0; + _this.m_maxForce = 0; + _this.m_maxTorque = 0; + _this.m_correctionFactor = .3; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_linearError = new b2Vec2(); + _this.m_angularError = 0; + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_linearMass = new b2Mat22(); + _this.m_angularMass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_K = new b2Mat22(); + _this.m_linearOffset.Copy(b2Maybe(def.linearOffset, b2Vec2.ZERO)); + _this.m_linearImpulse.SetZero(); + _this.m_maxForce = b2Maybe(def.maxForce, 0); + _this.m_maxTorque = b2Maybe(def.maxTorque, 0); + _this.m_correctionFactor = b2Maybe(def.correctionFactor, .3); + return _this; + } + b2MotorJoint.prototype.GetAnchorA = function (out) { + var pos = this.m_bodyA.GetPosition(); + out.x = pos.x; + out.y = pos.y; + return out; + }; + b2MotorJoint.prototype.GetAnchorB = function (out) { + var pos = this.m_bodyB.GetPosition(); + out.x = pos.x; + out.y = pos.y; + return out; + }; + b2MotorJoint.prototype.GetReactionForce = function (inv_dt, out) { + return b2Vec2.MulSV(inv_dt, this.m_linearImpulse, out); + }; + b2MotorJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_angularImpulse; + }; + b2MotorJoint.prototype.SetLinearOffset = function (linearOffset) { + if (!b2Vec2.IsEqualToV(linearOffset, this.m_linearOffset)) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_linearOffset.Copy(linearOffset); + } + }; + b2MotorJoint.prototype.GetLinearOffset = function () { + return this.m_linearOffset; + }; + b2MotorJoint.prototype.SetAngularOffset = function (angularOffset) { + if (angularOffset !== this.m_angularOffset) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_angularOffset = angularOffset; + } + }; + b2MotorJoint.prototype.GetAngularOffset = function () { + return this.m_angularOffset; + }; + b2MotorJoint.prototype.SetMaxForce = function (force) { + this.m_maxForce = force; + }; + b2MotorJoint.prototype.GetMaxForce = function () { + return this.m_maxForce; + }; + b2MotorJoint.prototype.SetMaxTorque = function (torque) { + this.m_maxTorque = torque; + }; + b2MotorJoint.prototype.GetMaxTorque = function () { + return this.m_maxTorque; + }; + b2MotorJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + var rA = b2Rot.MulRV(qA, b2Vec2.SubVV(this.m_linearOffset, this.m_localCenterA, b2Vec2.s_t0), this.m_rA); + var rB = b2Rot.MulRV(qB, b2Vec2.NegV(this.m_localCenterB, b2Vec2.s_t0), this.m_rB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var K = this.m_K; + K.ex.x = mA + mB + iA * rA.y * rA.y + iB * rB.y * rB.y; + K.ex.y = -iA * rA.x * rA.y - iB * rB.x * rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * rA.x * rA.x + iB * rB.x * rB.x; + K.GetInverse(this.m_linearMass); + this.m_angularMass = iA + iB; + this.m_angularMass > 0 && (this.m_angularMass = 1 / this.m_angularMass); + b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), this.m_linearError); + this.m_angularError = aB - aA - this.m_angularOffset; + if (data.step.warmStarting) { + this.m_linearImpulse.SelfMul(data.step.dtRatio); + this.m_angularImpulse *= data.step.dtRatio; + var P = this.m_linearImpulse; + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(rA, P) + this.m_angularImpulse); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(rB, P) + this.m_angularImpulse); + } else { + this.m_linearImpulse.SetZero(); + this.m_angularImpulse = 0; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2MotorJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var h = data.step.dt; + var inv_h = data.step.inv_dt; + var Cdot = wB - wA + inv_h * this.m_correctionFactor * this.m_angularError; + var impulse = -this.m_angularMass * Cdot; + var oldImpulse = this.m_angularImpulse; + var maxImpulse = h * this.m_maxTorque; + this.m_angularImpulse = b2Clamp(this.m_angularImpulse + impulse, -maxImpulse, maxImpulse); + impulse = this.m_angularImpulse - oldImpulse; + wA -= iA * impulse; + wB += iB * impulse; + var rA = this.m_rA; + var rB = this.m_rB; + var Cdot_v2 = b2Vec2.AddVV(b2Vec2.SubVV(b2Vec2.AddVV(vB, b2Vec2.CrossSV(wB, rB, b2Vec2.s_t0), b2Vec2.s_t0), b2Vec2.AddVV(vA, b2Vec2.CrossSV(wA, rA, b2Vec2.s_t1), b2Vec2.s_t1), b2Vec2.s_t2), b2Vec2.MulSV(inv_h * this.m_correctionFactor, this.m_linearError, b2Vec2.s_t3), b2MotorJoint.SolveVelocityConstraints_s_Cdot_v2); + var impulse_v2 = b2Mat22.MulMV(this.m_linearMass, Cdot_v2, b2MotorJoint.SolveVelocityConstraints_s_impulse_v2).SelfNeg(); + var oldImpulse_v2 = b2MotorJoint.SolveVelocityConstraints_s_oldImpulse_v2.Copy(this.m_linearImpulse); + this.m_linearImpulse.SelfAdd(impulse_v2); + var maxImpulse = h * this.m_maxForce; + if (this.m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) { + this.m_linearImpulse.Normalize(); + this.m_linearImpulse.SelfMul(maxImpulse); + } + b2Vec2.SubVV(this.m_linearImpulse, oldImpulse_v2, impulse_v2); + vA.SelfMulSub(mA, impulse_v2); + wA -= iA * b2Vec2.CrossVV(rA, impulse_v2); + vB.SelfMulAdd(mB, impulse_v2); + wB += iB * b2Vec2.CrossVV(rB, impulse_v2); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2MotorJoint.prototype.SolvePositionConstraints = function (data) { + return true; + }; + b2MotorJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2MotorJointDef = new b2MotorJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.linearOffset.Set(%.15f, %.15f);\n", this.m_linearOffset.x, this.m_linearOffset.y); + log(" jd.angularOffset = %.15f;\n", this.m_angularOffset); + log(" jd.maxForce = %.15f;\n", this.m_maxForce); + log(" jd.maxTorque = %.15f;\n", this.m_maxTorque); + log(" jd.correctionFactor = %.15f;\n", this.m_correctionFactor); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2MotorJoint.SolveVelocityConstraints_s_Cdot_v2 = new b2Vec2(); + b2MotorJoint.SolveVelocityConstraints_s_impulse_v2 = new b2Vec2(); + b2MotorJoint.SolveVelocityConstraints_s_oldImpulse_v2 = new b2Vec2(); + return b2MotorJoint; + })(b2Joint); + var b2MouseJointDef = (function (_super) { + __extends(b2MouseJointDef, _super); + function b2MouseJointDef() { + var _this = _super.call(this, exports.b2JointType.e_mouseJoint) || this; + _this.target = new b2Vec2(); + _this.maxForce = 0; + _this.frequencyHz = 5; + _this.dampingRatio = .7; + return _this; + } + return b2MouseJointDef; + })(b2JointDef); + var b2MouseJoint = (function (_super) { + __extends(b2MouseJoint, _super); + function b2MouseJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_localAnchorB = new b2Vec2(); + _this.m_targetA = new b2Vec2(); + _this.m_frequencyHz = 0; + _this.m_dampingRatio = 0; + _this.m_beta = 0; + _this.m_impulse = new b2Vec2(); + _this.m_maxForce = 0; + _this.m_gamma = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_rB = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassB = 0; + _this.m_invIB = 0; + _this.m_mass = new b2Mat22(); + _this.m_C = new b2Vec2(); + _this.m_qB = new b2Rot(); + _this.m_lalcB = new b2Vec2(); + _this.m_K = new b2Mat22(); + _this.m_targetA.Copy(b2Maybe(def.target, b2Vec2.ZERO)); + b2Transform.MulTXV(_this.m_bodyB.GetTransform(), _this.m_targetA, _this.m_localAnchorB); + _this.m_maxForce = b2Maybe(def.maxForce, 0); + _this.m_impulse.SetZero(); + _this.m_frequencyHz = b2Maybe(def.frequencyHz, 0); + _this.m_dampingRatio = b2Maybe(def.dampingRatio, 0); + _this.m_beta = 0; + _this.m_gamma = 0; + return _this; + } + b2MouseJoint.prototype.SetTarget = function (target) { + this.m_bodyB.IsAwake() || this.m_bodyB.SetAwake(true); + this.m_targetA.Copy(target); + }; + b2MouseJoint.prototype.GetTarget = function () { + return this.m_targetA; + }; + b2MouseJoint.prototype.SetMaxForce = function (maxForce) { + this.m_maxForce = maxForce; + }; + b2MouseJoint.prototype.GetMaxForce = function () { + return this.m_maxForce; + }; + b2MouseJoint.prototype.SetFrequency = function (hz) { + this.m_frequencyHz = hz; + }; + b2MouseJoint.prototype.GetFrequency = function () { + return this.m_frequencyHz; + }; + b2MouseJoint.prototype.SetDampingRatio = function (ratio) { + this.m_dampingRatio = ratio; + }; + b2MouseJoint.prototype.GetDampingRatio = function () { + return this.m_dampingRatio; + }; + b2MouseJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIB = this.m_bodyB.m_invI; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qB = this.m_qB.SetAngle(aB); + var mass = this.m_bodyB.GetMass(); + var omega = 2 * b2_pi * this.m_frequencyHz; + var d = 2 * mass * this.m_dampingRatio * omega; + var k = mass * (omega * omega); + var h = data.step.dt; + this.m_gamma = h * (d + h * k); + 0 !== this.m_gamma && (this.m_gamma = 1 / this.m_gamma); + this.m_beta = h * k * this.m_gamma; + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var K = this.m_K; + K.ex.x = this.m_invMassB + this.m_invIB * this.m_rB.y * this.m_rB.y + this.m_gamma; + K.ex.y = -this.m_invIB * this.m_rB.x * this.m_rB.y; + K.ey.x = K.ex.y; + K.ey.y = this.m_invMassB + this.m_invIB * this.m_rB.x * this.m_rB.x + this.m_gamma; + K.GetInverse(this.m_mass); + this.m_C.x = cB.x + this.m_rB.x - this.m_targetA.x; + this.m_C.y = cB.y + this.m_rB.y - this.m_targetA.y; + this.m_C.SelfMul(this.m_beta); + wB *= .98; + if (data.step.warmStarting) { + this.m_impulse.SelfMul(data.step.dtRatio); + vB.x += this.m_invMassB * this.m_impulse.x; + vB.y += this.m_invMassB * this.m_impulse.y; + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, this.m_impulse); + } else this.m_impulse.SetZero(); + data.velocities[this.m_indexB].w = wB; + }; + b2MouseJoint.prototype.SolveVelocityConstraints = function (data) { + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var Cdot = b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2MouseJoint.SolveVelocityConstraints_s_Cdot); + var impulse = b2Mat22.MulMV(this.m_mass, b2Vec2.AddVV(Cdot, b2Vec2.AddVV(this.m_C, b2Vec2.MulSV(this.m_gamma, this.m_impulse, b2Vec2.s_t0), b2Vec2.s_t0), b2Vec2.s_t0).SelfNeg(), b2MouseJoint.SolveVelocityConstraints_s_impulse); + var oldImpulse = b2MouseJoint.SolveVelocityConstraints_s_oldImpulse.Copy(this.m_impulse); + this.m_impulse.SelfAdd(impulse); + var maxImpulse = data.step.dt * this.m_maxForce; + this.m_impulse.LengthSquared() > maxImpulse * maxImpulse && this.m_impulse.SelfMul(maxImpulse / this.m_impulse.Length()); + b2Vec2.SubVV(this.m_impulse, oldImpulse, impulse); + vB.SelfMulAdd(this.m_invMassB, impulse); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, impulse); + data.velocities[this.m_indexB].w = wB; + }; + b2MouseJoint.prototype.SolvePositionConstraints = function (data) { + return true; + }; + b2MouseJoint.prototype.GetAnchorA = function (out) { + out.x = this.m_targetA.x; + out.y = this.m_targetA.y; + return out; + }; + b2MouseJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2MouseJoint.prototype.GetReactionForce = function (inv_dt, out) { + return b2Vec2.MulSV(inv_dt, this.m_impulse, out); + }; + b2MouseJoint.prototype.GetReactionTorque = function (inv_dt) { + return 0; + }; + b2MouseJoint.prototype.Dump = function (log) { + log("Mouse joint dumping is not supported.\n"); + }; + b2MouseJoint.prototype.ShiftOrigin = function (newOrigin) { + this.m_targetA.SelfSub(newOrigin); + }; + b2MouseJoint.SolveVelocityConstraints_s_Cdot = new b2Vec2(); + b2MouseJoint.SolveVelocityConstraints_s_impulse = new b2Vec2(); + b2MouseJoint.SolveVelocityConstraints_s_oldImpulse = new b2Vec2(); + return b2MouseJoint; + })(b2Joint); + var b2PrismaticJointDef = (function (_super) { + __extends(b2PrismaticJointDef, _super); + function b2PrismaticJointDef() { + var _this = _super.call(this, exports.b2JointType.e_prismaticJoint) || this; + _this.localAnchorA = new b2Vec2(); + _this.localAnchorB = new b2Vec2(); + _this.localAxisA = new b2Vec2(1, 0); + _this.referenceAngle = 0; + _this.enableLimit = false; + _this.lowerTranslation = 0; + _this.upperTranslation = 0; + _this.enableMotor = false; + _this.maxMotorForce = 0; + _this.motorSpeed = 0; + return _this; + } + b2PrismaticJointDef.prototype.Initialize = function (bA, bB, anchor, axis) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(anchor, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor, this.localAnchorB); + this.bodyA.GetLocalVector(axis, this.localAxisA); + this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle(); + }; + return b2PrismaticJointDef; + })(b2JointDef); + var b2PrismaticJoint = (function (_super) { + __extends(b2PrismaticJoint, _super); + function b2PrismaticJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_localXAxisA = new b2Vec2(); + _this.m_localYAxisA = new b2Vec2(); + _this.m_referenceAngle = 0; + _this.m_impulse = new b2Vec3(0, 0, 0); + _this.m_motorImpulse = 0; + _this.m_lowerTranslation = 0; + _this.m_upperTranslation = 0; + _this.m_maxMotorForce = 0; + _this.m_motorSpeed = 0; + _this.m_enableLimit = false; + _this.m_enableMotor = false; + _this.m_limitState = exports.b2LimitState.e_inactiveLimit; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_axis = new b2Vec2(0, 0); + _this.m_perp = new b2Vec2(0, 0); + _this.m_s1 = 0; + _this.m_s2 = 0; + _this.m_a1 = 0; + _this.m_a2 = 0; + _this.m_K = new b2Mat33(); + _this.m_K3 = new b2Mat33(); + _this.m_K2 = new b2Mat22(); + _this.m_motorMass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, b2Vec2.ZERO)); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, b2Vec2.ZERO)); + _this.m_localXAxisA.Copy(b2Maybe(def.localAxisA, new b2Vec2(1, 0))).SelfNormalize(); + b2Vec2.CrossOneV(_this.m_localXAxisA, _this.m_localYAxisA); + _this.m_referenceAngle = b2Maybe(def.referenceAngle, 0); + _this.m_lowerTranslation = b2Maybe(def.lowerTranslation, 0); + _this.m_upperTranslation = b2Maybe(def.upperTranslation, 0); + _this.m_maxMotorForce = b2Maybe(def.maxMotorForce, 0); + _this.m_motorSpeed = b2Maybe(def.motorSpeed, 0); + _this.m_enableLimit = b2Maybe(def.enableLimit, false); + _this.m_enableMotor = b2Maybe(def.enableMotor, false); + return _this; + } + b2PrismaticJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var d = b2Vec2.AddVV(b2Vec2.SubVV(cB, cA, b2Vec2.s_t0), b2Vec2.SubVV(rB, rA, b2Vec2.s_t1), b2PrismaticJoint.InitVelocityConstraints_s_d); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + b2Rot.MulRV(qA, this.m_localXAxisA, this.m_axis); + this.m_a1 = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), this.m_axis); + this.m_a2 = b2Vec2.CrossVV(rB, this.m_axis); + this.m_motorMass = mA + mB + iA * this.m_a1 * this.m_a1 + iB * this.m_a2 * this.m_a2; + this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass); + b2Rot.MulRV(qA, this.m_localYAxisA, this.m_perp); + this.m_s1 = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), this.m_perp); + this.m_s2 = b2Vec2.CrossVV(rB, this.m_perp); + this.m_K.ex.x = mA + mB + iA * this.m_s1 * this.m_s1 + iB * this.m_s2 * this.m_s2; + this.m_K.ex.y = iA * this.m_s1 + iB * this.m_s2; + this.m_K.ex.z = iA * this.m_s1 * this.m_a1 + iB * this.m_s2 * this.m_a2; + this.m_K.ey.x = this.m_K.ex.y; + this.m_K.ey.y = iA + iB; + 0 === this.m_K.ey.y && (this.m_K.ey.y = 1); + this.m_K.ey.z = iA * this.m_a1 + iB * this.m_a2; + this.m_K.ez.x = this.m_K.ex.z; + this.m_K.ez.y = this.m_K.ey.z; + this.m_K.ez.z = mA + mB + iA * this.m_a1 * this.m_a1 + iB * this.m_a2 * this.m_a2; + if (this.m_enableLimit) { + var jointTranslation = b2Vec2.DotVV(this.m_axis, d); + if (b2Abs(this.m_upperTranslation - this.m_lowerTranslation) < 2 * b2_linearSlop) this.m_limitState = exports.b2LimitState.e_equalLimits; else if (jointTranslation <= this.m_lowerTranslation) { + if (this.m_limitState !== exports.b2LimitState.e_atLowerLimit) { + this.m_limitState = exports.b2LimitState.e_atLowerLimit; + this.m_impulse.z = 0; + } + } else if (jointTranslation >= this.m_upperTranslation) { + if (this.m_limitState !== exports.b2LimitState.e_atUpperLimit) { + this.m_limitState = exports.b2LimitState.e_atUpperLimit; + this.m_impulse.z = 0; + } + } else { + this.m_limitState = exports.b2LimitState.e_inactiveLimit; + this.m_impulse.z = 0; + } + } else { + this.m_limitState = exports.b2LimitState.e_inactiveLimit; + this.m_impulse.z = 0; + } + this.m_enableMotor || (this.m_motorImpulse = 0); + if (data.step.warmStarting) { + this.m_impulse.SelfMul(data.step.dtRatio); + this.m_motorImpulse *= data.step.dtRatio; + var P = b2Vec2.AddVV(b2Vec2.MulSV(this.m_impulse.x, this.m_perp, b2Vec2.s_t0), b2Vec2.MulSV(this.m_motorImpulse + this.m_impulse.z, this.m_axis, b2Vec2.s_t1), b2PrismaticJoint.InitVelocityConstraints_s_P); + var LA = this.m_impulse.x * this.m_s1 + this.m_impulse.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_a1; + var LB = this.m_impulse.x * this.m_s2 + this.m_impulse.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_a2; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + } else { + this.m_impulse.SetZero(); + this.m_motorImpulse = 0; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2PrismaticJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + if (this.m_enableMotor && this.m_limitState !== exports.b2LimitState.e_equalLimits) { + var Cdot = b2Vec2.DotVV(this.m_axis, b2Vec2.SubVV(vB, vA, b2Vec2.s_t0)) + this.m_a2 * wB - this.m_a1 * wA; + var impulse = this.m_motorMass * (this.m_motorSpeed - Cdot); + var oldImpulse = this.m_motorImpulse; + var maxImpulse = data.step.dt * this.m_maxMotorForce; + this.m_motorImpulse = b2Clamp(this.m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = this.m_motorImpulse - oldImpulse; + var P = b2Vec2.MulSV(impulse, this.m_axis, b2PrismaticJoint.SolveVelocityConstraints_s_P); + var LA = impulse * this.m_a1; + var LB = impulse * this.m_a2; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + } + var Cdot1_x = b2Vec2.DotVV(this.m_perp, b2Vec2.SubVV(vB, vA, b2Vec2.s_t0)) + this.m_s2 * wB - this.m_s1 * wA; + var Cdot1_y = wB - wA; + if (this.m_enableLimit && this.m_limitState !== exports.b2LimitState.e_inactiveLimit) { + var Cdot2 = b2Vec2.DotVV(this.m_axis, b2Vec2.SubVV(vB, vA, b2Vec2.s_t0)) + this.m_a2 * wB - this.m_a1 * wA; + var f1 = b2PrismaticJoint.SolveVelocityConstraints_s_f1.Copy(this.m_impulse); + var df3 = this.m_K.Solve33(-Cdot1_x, -Cdot1_y, -Cdot2, b2PrismaticJoint.SolveVelocityConstraints_s_df3); + this.m_impulse.SelfAdd(df3); + this.m_limitState === exports.b2LimitState.e_atLowerLimit ? this.m_impulse.z = b2Max(this.m_impulse.z, 0) : this.m_limitState === exports.b2LimitState.e_atUpperLimit && (this.m_impulse.z = b2Min(this.m_impulse.z, 0)); + var b_x = -Cdot1_x - (this.m_impulse.z - f1.z) * this.m_K.ez.x; + var b_y = -Cdot1_y - (this.m_impulse.z - f1.z) * this.m_K.ez.y; + var f2r = this.m_K.Solve22(b_x, b_y, b2PrismaticJoint.SolveVelocityConstraints_s_f2r); + f2r.x += f1.x; + f2r.y += f1.y; + this.m_impulse.x = f2r.x; + this.m_impulse.y = f2r.y; + df3.x = this.m_impulse.x - f1.x; + df3.y = this.m_impulse.y - f1.y; + df3.z = this.m_impulse.z - f1.z; + var P = b2Vec2.AddVV(b2Vec2.MulSV(df3.x, this.m_perp, b2Vec2.s_t0), b2Vec2.MulSV(df3.z, this.m_axis, b2Vec2.s_t1), b2PrismaticJoint.SolveVelocityConstraints_s_P); + var LA = df3.x * this.m_s1 + df3.y + df3.z * this.m_a1; + var LB = df3.x * this.m_s2 + df3.y + df3.z * this.m_a2; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + } else { + var df2 = this.m_K.Solve22(-Cdot1_x, -Cdot1_y, b2PrismaticJoint.SolveVelocityConstraints_s_df2); + this.m_impulse.x += df2.x; + this.m_impulse.y += df2.y; + var P = b2Vec2.MulSV(df2.x, this.m_perp, b2PrismaticJoint.SolveVelocityConstraints_s_P); + var LA = df2.x * this.m_s1 + df2.y; + var LB = df2.x * this.m_s2 + df2.y; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2PrismaticJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var d = b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), b2PrismaticJoint.SolvePositionConstraints_s_d); + var axis = b2Rot.MulRV(qA, this.m_localXAxisA, this.m_axis); + var a1 = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), axis); + var a2 = b2Vec2.CrossVV(rB, axis); + var perp = b2Rot.MulRV(qA, this.m_localYAxisA, this.m_perp); + var s1 = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), perp); + var s2 = b2Vec2.CrossVV(rB, perp); + var impulse = b2PrismaticJoint.SolvePositionConstraints_s_impulse; + var C1_x = b2Vec2.DotVV(perp, d); + var C1_y = aB - aA - this.m_referenceAngle; + var linearError = b2Abs(C1_x); + var angularError = b2Abs(C1_y); + var active = false; + var C2 = 0; + if (this.m_enableLimit) { + var translation = b2Vec2.DotVV(axis, d); + if (b2Abs(this.m_upperTranslation - this.m_lowerTranslation) < 2 * b2_linearSlop) { + C2 = b2Clamp(translation, -b2_maxLinearCorrection, b2_maxLinearCorrection); + linearError = b2Max(linearError, b2Abs(translation)); + active = true; + } else if (translation <= this.m_lowerTranslation) { + C2 = b2Clamp(translation - this.m_lowerTranslation + b2_linearSlop, -b2_maxLinearCorrection, 0); + linearError = b2Max(linearError, this.m_lowerTranslation - translation); + active = true; + } else if (translation >= this.m_upperTranslation) { + C2 = b2Clamp(translation - this.m_upperTranslation - b2_linearSlop, 0, b2_maxLinearCorrection); + linearError = b2Max(linearError, translation - this.m_upperTranslation); + active = true; + } + } + if (active) { + var k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; + var k12 = iA * s1 + iB * s2; + var k13 = iA * s1 * a1 + iB * s2 * a2; + var k22 = iA + iB; + 0 === k22 && (k22 = 1); + var k23 = iA * a1 + iB * a2; + var k33 = mA + mB + iA * a1 * a1 + iB * a2 * a2; + var K = this.m_K3; + K.ex.SetXYZ(k11, k12, k13); + K.ey.SetXYZ(k12, k22, k23); + K.ez.SetXYZ(k13, k23, k33); + impulse = K.Solve33(-C1_x, -C1_y, -C2, impulse); + } else { + var k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; + var k12 = iA * s1 + iB * s2; + var k22 = iA + iB; + 0 === k22 && (k22 = 1); + var K2 = this.m_K2; + K2.ex.Set(k11, k12); + K2.ey.Set(k12, k22); + var impulse1 = K2.Solve(-C1_x, -C1_y, b2PrismaticJoint.SolvePositionConstraints_s_impulse1); + impulse.x = impulse1.x; + impulse.y = impulse1.y; + impulse.z = 0; + } + var P = b2Vec2.AddVV(b2Vec2.MulSV(impulse.x, perp, b2Vec2.s_t0), b2Vec2.MulSV(impulse.z, axis, b2Vec2.s_t1), b2PrismaticJoint.SolvePositionConstraints_s_P); + var LA = impulse.x * s1 + impulse.y + impulse.z * a1; + var LB = impulse.x * s2 + impulse.y + impulse.z * a2; + cA.SelfMulSub(mA, P); + aA -= iA * LA; + cB.SelfMulAdd(mB, P); + aB += iB * LB; + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return linearError <= b2_linearSlop && angularError <= b2_angularSlop; + }; + b2PrismaticJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2PrismaticJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2PrismaticJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * (this.m_impulse.x * this.m_perp.x + (this.m_motorImpulse + this.m_impulse.z) * this.m_axis.x); + out.y = inv_dt * (this.m_impulse.x * this.m_perp.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_axis.y); + return out; + }; + b2PrismaticJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_impulse.y; + }; + b2PrismaticJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2PrismaticJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2PrismaticJoint.prototype.GetLocalAxisA = function () { + return this.m_localXAxisA; + }; + b2PrismaticJoint.prototype.GetReferenceAngle = function () { + return this.m_referenceAngle; + }; + b2PrismaticJoint.prototype.GetJointTranslation = function () { + var pA = this.m_bodyA.GetWorldPoint(this.m_localAnchorA, b2PrismaticJoint.GetJointTranslation_s_pA); + var pB = this.m_bodyB.GetWorldPoint(this.m_localAnchorB, b2PrismaticJoint.GetJointTranslation_s_pB); + var d = b2Vec2.SubVV(pB, pA, b2PrismaticJoint.GetJointTranslation_s_d); + var axis = this.m_bodyA.GetWorldVector(this.m_localXAxisA, b2PrismaticJoint.GetJointTranslation_s_axis); + var translation = b2Vec2.DotVV(d, axis); + return translation; + }; + b2PrismaticJoint.prototype.GetJointSpeed = function () { + var bA = this.m_bodyA; + var bB = this.m_bodyB; + b2Vec2.SubVV(this.m_localAnchorA, bA.m_sweep.localCenter, this.m_lalcA); + var rA = b2Rot.MulRV(bA.m_xf.q, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, bB.m_sweep.localCenter, this.m_lalcB); + var rB = b2Rot.MulRV(bB.m_xf.q, this.m_lalcB, this.m_rB); + var pA = b2Vec2.AddVV(bA.m_sweep.c, rA, b2Vec2.s_t0); + var pB = b2Vec2.AddVV(bB.m_sweep.c, rB, b2Vec2.s_t1); + var d = b2Vec2.SubVV(pB, pA, b2Vec2.s_t2); + var axis = bA.GetWorldVector(this.m_localXAxisA, this.m_axis); + var vA = bA.m_linearVelocity; + var vB = bB.m_linearVelocity; + var wA = bA.m_angularVelocity; + var wB = bB.m_angularVelocity; + var speed = b2Vec2.DotVV(d, b2Vec2.CrossSV(wA, axis, b2Vec2.s_t0)) + b2Vec2.DotVV(axis, b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, rA, b2Vec2.s_t1), b2Vec2.s_t0)); + return speed; + }; + b2PrismaticJoint.prototype.IsLimitEnabled = function () { + return this.m_enableLimit; + }; + b2PrismaticJoint.prototype.EnableLimit = function (flag) { + if (flag !== this.m_enableLimit) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_enableLimit = flag; + this.m_impulse.z = 0; + } + }; + b2PrismaticJoint.prototype.GetLowerLimit = function () { + return this.m_lowerTranslation; + }; + b2PrismaticJoint.prototype.GetUpperLimit = function () { + return this.m_upperTranslation; + }; + b2PrismaticJoint.prototype.SetLimits = function (lower, upper) { + if (lower !== this.m_lowerTranslation || upper !== this.m_upperTranslation) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_lowerTranslation = lower; + this.m_upperTranslation = upper; + this.m_impulse.z = 0; + } + }; + b2PrismaticJoint.prototype.IsMotorEnabled = function () { + return this.m_enableMotor; + }; + b2PrismaticJoint.prototype.EnableMotor = function (flag) { + if (flag !== this.m_enableMotor) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_enableMotor = flag; + } + }; + b2PrismaticJoint.prototype.SetMotorSpeed = function (speed) { + if (speed !== this.m_motorSpeed) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_motorSpeed = speed; + } + }; + b2PrismaticJoint.prototype.GetMotorSpeed = function () { + return this.m_motorSpeed; + }; + b2PrismaticJoint.prototype.SetMaxMotorForce = function (force) { + if (force !== this.m_maxMotorForce) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_maxMotorForce = force; + } + }; + b2PrismaticJoint.prototype.GetMaxMotorForce = function () { + return this.m_maxMotorForce; + }; + b2PrismaticJoint.prototype.GetMotorForce = function (inv_dt) { + return inv_dt * this.m_motorImpulse; + }; + b2PrismaticJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2PrismaticJointDef = new b2PrismaticJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.localAxisA.Set(%.15f, %.15f);\n", this.m_localXAxisA.x, this.m_localXAxisA.y); + log(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle); + log(" jd.enableLimit = %s;\n", this.m_enableLimit ? "true" : "false"); + log(" jd.lowerTranslation = %.15f;\n", this.m_lowerTranslation); + log(" jd.upperTranslation = %.15f;\n", this.m_upperTranslation); + log(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false"); + log(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed); + log(" jd.maxMotorForce = %.15f;\n", this.m_maxMotorForce); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2PrismaticJoint.InitVelocityConstraints_s_d = new b2Vec2(); + b2PrismaticJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2PrismaticJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2PrismaticJoint.SolveVelocityConstraints_s_f2r = new b2Vec2(); + b2PrismaticJoint.SolveVelocityConstraints_s_f1 = new b2Vec3(); + b2PrismaticJoint.SolveVelocityConstraints_s_df3 = new b2Vec3(); + b2PrismaticJoint.SolveVelocityConstraints_s_df2 = new b2Vec2(); + b2PrismaticJoint.SolvePositionConstraints_s_d = new b2Vec2(); + b2PrismaticJoint.SolvePositionConstraints_s_impulse = new b2Vec3(); + b2PrismaticJoint.SolvePositionConstraints_s_impulse1 = new b2Vec2(); + b2PrismaticJoint.SolvePositionConstraints_s_P = new b2Vec2(); + b2PrismaticJoint.GetJointTranslation_s_pA = new b2Vec2(); + b2PrismaticJoint.GetJointTranslation_s_pB = new b2Vec2(); + b2PrismaticJoint.GetJointTranslation_s_d = new b2Vec2(); + b2PrismaticJoint.GetJointTranslation_s_axis = new b2Vec2(); + return b2PrismaticJoint; + })(b2Joint); + var b2_minPulleyLength = 2; + var b2PulleyJointDef = (function (_super) { + __extends(b2PulleyJointDef, _super); + function b2PulleyJointDef() { + var _this = _super.call(this, exports.b2JointType.e_pulleyJoint) || this; + _this.groundAnchorA = new b2Vec2(-1, 1); + _this.groundAnchorB = new b2Vec2(1, 1); + _this.localAnchorA = new b2Vec2(-1, 0); + _this.localAnchorB = new b2Vec2(1, 0); + _this.lengthA = 0; + _this.lengthB = 0; + _this.ratio = 1; + _this.collideConnected = true; + return _this; + } + b2PulleyJointDef.prototype.Initialize = function (bA, bB, groundA, groundB, anchorA, anchorB, r) { + this.bodyA = bA; + this.bodyB = bB; + this.groundAnchorA.Copy(groundA); + this.groundAnchorB.Copy(groundB); + this.bodyA.GetLocalPoint(anchorA, this.localAnchorA); + this.bodyB.GetLocalPoint(anchorB, this.localAnchorB); + this.lengthA = b2Vec2.DistanceVV(anchorA, groundA); + this.lengthB = b2Vec2.DistanceVV(anchorB, groundB); + this.ratio = r; + }; + return b2PulleyJointDef; + })(b2JointDef); + var b2PulleyJoint = (function (_super) { + __extends(b2PulleyJoint, _super); + function b2PulleyJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_groundAnchorA = new b2Vec2(); + _this.m_groundAnchorB = new b2Vec2(); + _this.m_lengthA = 0; + _this.m_lengthB = 0; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_constant = 0; + _this.m_ratio = 0; + _this.m_impulse = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_uA = new b2Vec2(); + _this.m_uB = new b2Vec2(); + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_mass = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_groundAnchorA.Copy(b2Maybe(def.groundAnchorA, new b2Vec2(-1, 1))); + _this.m_groundAnchorB.Copy(b2Maybe(def.groundAnchorB, new b2Vec2(1, 0))); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, new b2Vec2(-1, 0))); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, new b2Vec2(1, 0))); + _this.m_lengthA = b2Maybe(def.lengthA, 0); + _this.m_lengthB = b2Maybe(def.lengthB, 0); + _this.m_ratio = b2Maybe(def.ratio, 1); + _this.m_constant = b2Maybe(def.lengthA, 0) + _this.m_ratio * b2Maybe(def.lengthB, 0); + _this.m_impulse = 0; + return _this; + } + b2PulleyJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + this.m_uA.Copy(cA).SelfAdd(this.m_rA).SelfSub(this.m_groundAnchorA); + this.m_uB.Copy(cB).SelfAdd(this.m_rB).SelfSub(this.m_groundAnchorB); + var lengthA = this.m_uA.Length(); + var lengthB = this.m_uB.Length(); + lengthA > 10 * b2_linearSlop ? this.m_uA.SelfMul(1 / lengthA) : this.m_uA.SetZero(); + lengthB > 10 * b2_linearSlop ? this.m_uB.SelfMul(1 / lengthB) : this.m_uB.SetZero(); + var ruA = b2Vec2.CrossVV(this.m_rA, this.m_uA); + var ruB = b2Vec2.CrossVV(this.m_rB, this.m_uB); + var mA = this.m_invMassA + this.m_invIA * ruA * ruA; + var mB = this.m_invMassB + this.m_invIB * ruB * ruB; + this.m_mass = mA + this.m_ratio * this.m_ratio * mB; + this.m_mass > 0 && (this.m_mass = 1 / this.m_mass); + if (data.step.warmStarting) { + this.m_impulse *= data.step.dtRatio; + var PA = b2Vec2.MulSV(-this.m_impulse, this.m_uA, b2PulleyJoint.InitVelocityConstraints_s_PA); + var PB = b2Vec2.MulSV(-this.m_ratio * this.m_impulse, this.m_uB, b2PulleyJoint.InitVelocityConstraints_s_PB); + vA.SelfMulAdd(this.m_invMassA, PA); + wA += this.m_invIA * b2Vec2.CrossVV(this.m_rA, PA); + vB.SelfMulAdd(this.m_invMassB, PB); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, PB); + } else this.m_impulse = 0; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2PulleyJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var vpA = b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2PulleyJoint.SolveVelocityConstraints_s_vpA); + var vpB = b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2PulleyJoint.SolveVelocityConstraints_s_vpB); + var Cdot = -b2Vec2.DotVV(this.m_uA, vpA) - this.m_ratio * b2Vec2.DotVV(this.m_uB, vpB); + var impulse = -this.m_mass * Cdot; + this.m_impulse += impulse; + var PA = b2Vec2.MulSV(-impulse, this.m_uA, b2PulleyJoint.SolveVelocityConstraints_s_PA); + var PB = b2Vec2.MulSV(-this.m_ratio * impulse, this.m_uB, b2PulleyJoint.SolveVelocityConstraints_s_PB); + vA.SelfMulAdd(this.m_invMassA, PA); + wA += this.m_invIA * b2Vec2.CrossVV(this.m_rA, PA); + vB.SelfMulAdd(this.m_invMassB, PB); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, PB); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2PulleyJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var uA = this.m_uA.Copy(cA).SelfAdd(rA).SelfSub(this.m_groundAnchorA); + var uB = this.m_uB.Copy(cB).SelfAdd(rB).SelfSub(this.m_groundAnchorB); + var lengthA = uA.Length(); + var lengthB = uB.Length(); + lengthA > 10 * b2_linearSlop ? uA.SelfMul(1 / lengthA) : uA.SetZero(); + lengthB > 10 * b2_linearSlop ? uB.SelfMul(1 / lengthB) : uB.SetZero(); + var ruA = b2Vec2.CrossVV(rA, uA); + var ruB = b2Vec2.CrossVV(rB, uB); + var mA = this.m_invMassA + this.m_invIA * ruA * ruA; + var mB = this.m_invMassB + this.m_invIB * ruB * ruB; + var mass = mA + this.m_ratio * this.m_ratio * mB; + mass > 0 && (mass = 1 / mass); + var C = this.m_constant - lengthA - this.m_ratio * lengthB; + var linearError = b2Abs(C); + var impulse = -mass * C; + var PA = b2Vec2.MulSV(-impulse, uA, b2PulleyJoint.SolvePositionConstraints_s_PA); + var PB = b2Vec2.MulSV(-this.m_ratio * impulse, uB, b2PulleyJoint.SolvePositionConstraints_s_PB); + cA.SelfMulAdd(this.m_invMassA, PA); + aA += this.m_invIA * b2Vec2.CrossVV(rA, PA); + cB.SelfMulAdd(this.m_invMassB, PB); + aB += this.m_invIB * b2Vec2.CrossVV(rB, PB); + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return linearError < b2_linearSlop; + }; + b2PulleyJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2PulleyJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2PulleyJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * this.m_impulse * this.m_uB.x; + out.y = inv_dt * this.m_impulse * this.m_uB.y; + return out; + }; + b2PulleyJoint.prototype.GetReactionTorque = function (inv_dt) { + return 0; + }; + b2PulleyJoint.prototype.GetGroundAnchorA = function () { + return this.m_groundAnchorA; + }; + b2PulleyJoint.prototype.GetGroundAnchorB = function () { + return this.m_groundAnchorB; + }; + b2PulleyJoint.prototype.GetLengthA = function () { + return this.m_lengthA; + }; + b2PulleyJoint.prototype.GetLengthB = function () { + return this.m_lengthB; + }; + b2PulleyJoint.prototype.GetRatio = function () { + return this.m_ratio; + }; + b2PulleyJoint.prototype.GetCurrentLengthA = function () { + var p = this.m_bodyA.GetWorldPoint(this.m_localAnchorA, b2PulleyJoint.GetCurrentLengthA_s_p); + var s = this.m_groundAnchorA; + return b2Vec2.DistanceVV(p, s); + }; + b2PulleyJoint.prototype.GetCurrentLengthB = function () { + var p = this.m_bodyB.GetWorldPoint(this.m_localAnchorB, b2PulleyJoint.GetCurrentLengthB_s_p); + var s = this.m_groundAnchorB; + return b2Vec2.DistanceVV(p, s); + }; + b2PulleyJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2PulleyJointDef = new b2PulleyJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.groundAnchorA.Set(%.15f, %.15f);\n", this.m_groundAnchorA.x, this.m_groundAnchorA.y); + log(" jd.groundAnchorB.Set(%.15f, %.15f);\n", this.m_groundAnchorB.x, this.m_groundAnchorB.y); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.lengthA = %.15f;\n", this.m_lengthA); + log(" jd.lengthB = %.15f;\n", this.m_lengthB); + log(" jd.ratio = %.15f;\n", this.m_ratio); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2PulleyJoint.prototype.ShiftOrigin = function (newOrigin) { + this.m_groundAnchorA.SelfSub(newOrigin); + this.m_groundAnchorB.SelfSub(newOrigin); + }; + b2PulleyJoint.InitVelocityConstraints_s_PA = new b2Vec2(); + b2PulleyJoint.InitVelocityConstraints_s_PB = new b2Vec2(); + b2PulleyJoint.SolveVelocityConstraints_s_vpA = new b2Vec2(); + b2PulleyJoint.SolveVelocityConstraints_s_vpB = new b2Vec2(); + b2PulleyJoint.SolveVelocityConstraints_s_PA = new b2Vec2(); + b2PulleyJoint.SolveVelocityConstraints_s_PB = new b2Vec2(); + b2PulleyJoint.SolvePositionConstraints_s_PA = new b2Vec2(); + b2PulleyJoint.SolvePositionConstraints_s_PB = new b2Vec2(); + b2PulleyJoint.GetCurrentLengthA_s_p = new b2Vec2(); + b2PulleyJoint.GetCurrentLengthB_s_p = new b2Vec2(); + return b2PulleyJoint; + })(b2Joint); + var b2RevoluteJointDef = (function (_super) { + __extends(b2RevoluteJointDef, _super); + function b2RevoluteJointDef() { + var _this = _super.call(this, exports.b2JointType.e_revoluteJoint) || this; + _this.localAnchorA = new b2Vec2(0, 0); + _this.localAnchorB = new b2Vec2(0, 0); + _this.referenceAngle = 0; + _this.enableLimit = false; + _this.lowerAngle = 0; + _this.upperAngle = 0; + _this.enableMotor = false; + _this.motorSpeed = 0; + _this.maxMotorTorque = 0; + return _this; + } + b2RevoluteJointDef.prototype.Initialize = function (bA, bB, anchor) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(anchor, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor, this.localAnchorB); + this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle(); + }; + return b2RevoluteJointDef; + })(b2JointDef); + var b2RevoluteJoint = (function (_super) { + __extends(b2RevoluteJoint, _super); + function b2RevoluteJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_impulse = new b2Vec3(); + _this.m_motorImpulse = 0; + _this.m_enableMotor = false; + _this.m_maxMotorTorque = 0; + _this.m_motorSpeed = 0; + _this.m_enableLimit = false; + _this.m_referenceAngle = 0; + _this.m_lowerAngle = 0; + _this.m_upperAngle = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_mass = new b2Mat33(); + _this.m_motorMass = 0; + _this.m_limitState = exports.b2LimitState.e_inactiveLimit; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_K = new b2Mat22(); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, b2Vec2.ZERO)); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, b2Vec2.ZERO)); + _this.m_referenceAngle = b2Maybe(def.referenceAngle, 0); + _this.m_impulse.SetZero(); + _this.m_motorImpulse = 0; + _this.m_lowerAngle = b2Maybe(def.lowerAngle, 0); + _this.m_upperAngle = b2Maybe(def.upperAngle, 0); + _this.m_maxMotorTorque = b2Maybe(def.maxMotorTorque, 0); + _this.m_motorSpeed = b2Maybe(def.motorSpeed, 0); + _this.m_enableLimit = b2Maybe(def.enableLimit, false); + _this.m_enableMotor = b2Maybe(def.enableMotor, false); + _this.m_limitState = exports.b2LimitState.e_inactiveLimit; + return _this; + } + b2RevoluteJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var fixedRotation = iA + iB === 0; + this.m_mass.ex.x = mA + mB + this.m_rA.y * this.m_rA.y * iA + this.m_rB.y * this.m_rB.y * iB; + this.m_mass.ey.x = -this.m_rA.y * this.m_rA.x * iA - this.m_rB.y * this.m_rB.x * iB; + this.m_mass.ez.x = -this.m_rA.y * iA - this.m_rB.y * iB; + this.m_mass.ex.y = this.m_mass.ey.x; + this.m_mass.ey.y = mA + mB + this.m_rA.x * this.m_rA.x * iA + this.m_rB.x * this.m_rB.x * iB; + this.m_mass.ez.y = this.m_rA.x * iA + this.m_rB.x * iB; + this.m_mass.ex.z = this.m_mass.ez.x; + this.m_mass.ey.z = this.m_mass.ez.y; + this.m_mass.ez.z = iA + iB; + this.m_motorMass = iA + iB; + this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass); + this.m_enableMotor && !fixedRotation || (this.m_motorImpulse = 0); + if (this.m_enableLimit && !fixedRotation) { + var jointAngle = aB - aA - this.m_referenceAngle; + if (b2Abs(this.m_upperAngle - this.m_lowerAngle) < 2 * b2_angularSlop) this.m_limitState = exports.b2LimitState.e_equalLimits; else if (jointAngle <= this.m_lowerAngle) { + this.m_limitState !== exports.b2LimitState.e_atLowerLimit && (this.m_impulse.z = 0); + this.m_limitState = exports.b2LimitState.e_atLowerLimit; + } else if (jointAngle >= this.m_upperAngle) { + this.m_limitState !== exports.b2LimitState.e_atUpperLimit && (this.m_impulse.z = 0); + this.m_limitState = exports.b2LimitState.e_atUpperLimit; + } else { + this.m_limitState = exports.b2LimitState.e_inactiveLimit; + this.m_impulse.z = 0; + } + } else this.m_limitState = exports.b2LimitState.e_inactiveLimit; + if (data.step.warmStarting) { + this.m_impulse.SelfMul(data.step.dtRatio); + this.m_motorImpulse *= data.step.dtRatio; + var P = b2RevoluteJoint.InitVelocityConstraints_s_P.Set(this.m_impulse.x, this.m_impulse.y); + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + this.m_motorImpulse + this.m_impulse.z); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(this.m_rB, P) + this.m_motorImpulse + this.m_impulse.z); + } else { + this.m_impulse.SetZero(); + this.m_motorImpulse = 0; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2RevoluteJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var fixedRotation = iA + iB === 0; + if (this.m_enableMotor && this.m_limitState !== exports.b2LimitState.e_equalLimits && !fixedRotation) { + var Cdot = wB - wA - this.m_motorSpeed; + var impulse = -this.m_motorMass * Cdot; + var oldImpulse = this.m_motorImpulse; + var maxImpulse = data.step.dt * this.m_maxMotorTorque; + this.m_motorImpulse = b2Clamp(this.m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = this.m_motorImpulse - oldImpulse; + wA -= iA * impulse; + wB += iB * impulse; + } + if (this.m_enableLimit && this.m_limitState !== exports.b2LimitState.e_inactiveLimit && !fixedRotation) { + var Cdot1 = b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2Vec2.s_t1), b2RevoluteJoint.SolveVelocityConstraints_s_Cdot1); + var Cdot2 = wB - wA; + var impulse_v3 = this.m_mass.Solve33(Cdot1.x, Cdot1.y, Cdot2, b2RevoluteJoint.SolveVelocityConstraints_s_impulse_v3).SelfNeg(); + if (this.m_limitState === exports.b2LimitState.e_equalLimits) this.m_impulse.SelfAdd(impulse_v3); else if (this.m_limitState === exports.b2LimitState.e_atLowerLimit) { + var newImpulse = this.m_impulse.z + impulse_v3.z; + if (newImpulse < 0) { + var rhs_x = -Cdot1.x + this.m_impulse.z * this.m_mass.ez.x; + var rhs_y = -Cdot1.y + this.m_impulse.z * this.m_mass.ez.y; + var reduced_v2 = this.m_mass.Solve22(rhs_x, rhs_y, b2RevoluteJoint.SolveVelocityConstraints_s_reduced_v2); + impulse_v3.x = reduced_v2.x; + impulse_v3.y = reduced_v2.y; + impulse_v3.z = -this.m_impulse.z; + this.m_impulse.x += reduced_v2.x; + this.m_impulse.y += reduced_v2.y; + this.m_impulse.z = 0; + } else this.m_impulse.SelfAdd(impulse_v3); + } else if (this.m_limitState === exports.b2LimitState.e_atUpperLimit) { + var newImpulse = this.m_impulse.z + impulse_v3.z; + if (newImpulse > 0) { + var rhs_x = -Cdot1.x + this.m_impulse.z * this.m_mass.ez.x; + var rhs_y = -Cdot1.y + this.m_impulse.z * this.m_mass.ez.y; + var reduced_v2 = this.m_mass.Solve22(rhs_x, rhs_y, b2RevoluteJoint.SolveVelocityConstraints_s_reduced_v2); + impulse_v3.x = reduced_v2.x; + impulse_v3.y = reduced_v2.y; + impulse_v3.z = -this.m_impulse.z; + this.m_impulse.x += reduced_v2.x; + this.m_impulse.y += reduced_v2.y; + this.m_impulse.z = 0; + } else this.m_impulse.SelfAdd(impulse_v3); + } + var P = b2RevoluteJoint.SolveVelocityConstraints_s_P.Set(impulse_v3.x, impulse_v3.y); + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + impulse_v3.z); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(this.m_rB, P) + impulse_v3.z); + } else { + var Cdot_v2 = b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2Vec2.s_t1), b2RevoluteJoint.SolveVelocityConstraints_s_Cdot_v2); + var impulse_v2 = this.m_mass.Solve22(-Cdot_v2.x, -Cdot_v2.y, b2RevoluteJoint.SolveVelocityConstraints_s_impulse_v2); + this.m_impulse.x += impulse_v2.x; + this.m_impulse.y += impulse_v2.y; + vA.SelfMulSub(mA, impulse_v2); + wA -= iA * b2Vec2.CrossVV(this.m_rA, impulse_v2); + vB.SelfMulAdd(mB, impulse_v2); + wB += iB * b2Vec2.CrossVV(this.m_rB, impulse_v2); + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2RevoluteJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + var angularError = 0; + var positionError = 0; + var fixedRotation = this.m_invIA + this.m_invIB === 0; + if (this.m_enableLimit && this.m_limitState !== exports.b2LimitState.e_inactiveLimit && !fixedRotation) { + var angle = aB - aA - this.m_referenceAngle; + var limitImpulse = 0; + if (this.m_limitState === exports.b2LimitState.e_equalLimits) { + var C = b2Clamp(angle - this.m_lowerAngle, -b2_maxAngularCorrection, b2_maxAngularCorrection); + limitImpulse = -this.m_motorMass * C; + angularError = b2Abs(C); + } else if (this.m_limitState === exports.b2LimitState.e_atLowerLimit) { + var C = angle - this.m_lowerAngle; + angularError = -C; + C = b2Clamp(C + b2_angularSlop, -b2_maxAngularCorrection, 0); + limitImpulse = -this.m_motorMass * C; + } else if (this.m_limitState === exports.b2LimitState.e_atUpperLimit) { + var C = angle - this.m_upperAngle; + angularError = C; + C = b2Clamp(C - b2_angularSlop, 0, b2_maxAngularCorrection); + limitImpulse = -this.m_motorMass * C; + } + aA -= this.m_invIA * limitImpulse; + aB += this.m_invIB * limitImpulse; + } + qA.SetAngle(aA); + qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var C_v2 = b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), b2RevoluteJoint.SolvePositionConstraints_s_C_v2); + positionError = C_v2.Length(); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var K = this.m_K; + K.ex.x = mA + mB + iA * rA.y * rA.y + iB * rB.y * rB.y; + K.ex.y = -iA * rA.x * rA.y - iB * rB.x * rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * rA.x * rA.x + iB * rB.x * rB.x; + var impulse = K.Solve(C_v2.x, C_v2.y, b2RevoluteJoint.SolvePositionConstraints_s_impulse).SelfNeg(); + cA.SelfMulSub(mA, impulse); + aA -= iA * b2Vec2.CrossVV(rA, impulse); + cB.SelfMulAdd(mB, impulse); + aB += iB * b2Vec2.CrossVV(rB, impulse); + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return positionError <= b2_linearSlop && angularError <= b2_angularSlop; + }; + b2RevoluteJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2RevoluteJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2RevoluteJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * this.m_impulse.x; + out.y = inv_dt * this.m_impulse.y; + return out; + }; + b2RevoluteJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_impulse.z; + }; + b2RevoluteJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2RevoluteJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2RevoluteJoint.prototype.GetReferenceAngle = function () { + return this.m_referenceAngle; + }; + b2RevoluteJoint.prototype.GetJointAngle = function () { + return this.m_bodyB.m_sweep.a - this.m_bodyA.m_sweep.a - this.m_referenceAngle; + }; + b2RevoluteJoint.prototype.GetJointSpeed = function () { + return this.m_bodyB.m_angularVelocity - this.m_bodyA.m_angularVelocity; + }; + b2RevoluteJoint.prototype.IsMotorEnabled = function () { + return this.m_enableMotor; + }; + b2RevoluteJoint.prototype.EnableMotor = function (flag) { + if (flag !== this.m_enableMotor) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_enableMotor = flag; + } + }; + b2RevoluteJoint.prototype.GetMotorTorque = function (inv_dt) { + return inv_dt * this.m_motorImpulse; + }; + b2RevoluteJoint.prototype.GetMotorSpeed = function () { + return this.m_motorSpeed; + }; + b2RevoluteJoint.prototype.SetMaxMotorTorque = function (torque) { + if (torque !== this.m_maxMotorTorque) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_maxMotorTorque = torque; + } + }; + b2RevoluteJoint.prototype.GetMaxMotorTorque = function () { + return this.m_maxMotorTorque; + }; + b2RevoluteJoint.prototype.IsLimitEnabled = function () { + return this.m_enableLimit; + }; + b2RevoluteJoint.prototype.EnableLimit = function (flag) { + if (flag !== this.m_enableLimit) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_enableLimit = flag; + this.m_impulse.z = 0; + } + }; + b2RevoluteJoint.prototype.GetLowerLimit = function () { + return this.m_lowerAngle; + }; + b2RevoluteJoint.prototype.GetUpperLimit = function () { + return this.m_upperAngle; + }; + b2RevoluteJoint.prototype.SetLimits = function (lower, upper) { + if (lower !== this.m_lowerAngle || upper !== this.m_upperAngle) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_impulse.z = 0; + this.m_lowerAngle = lower; + this.m_upperAngle = upper; + } + }; + b2RevoluteJoint.prototype.SetMotorSpeed = function (speed) { + if (speed !== this.m_motorSpeed) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_motorSpeed = speed; + } + }; + b2RevoluteJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2RevoluteJointDef = new b2RevoluteJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle); + log(" jd.enableLimit = %s;\n", this.m_enableLimit ? "true" : "false"); + log(" jd.lowerAngle = %.15f;\n", this.m_lowerAngle); + log(" jd.upperAngle = %.15f;\n", this.m_upperAngle); + log(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false"); + log(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed); + log(" jd.maxMotorTorque = %.15f;\n", this.m_maxMotorTorque); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2RevoluteJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2RevoluteJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2RevoluteJoint.SolveVelocityConstraints_s_Cdot_v2 = new b2Vec2(); + b2RevoluteJoint.SolveVelocityConstraints_s_Cdot1 = new b2Vec2(); + b2RevoluteJoint.SolveVelocityConstraints_s_impulse_v3 = new b2Vec3(); + b2RevoluteJoint.SolveVelocityConstraints_s_reduced_v2 = new b2Vec2(); + b2RevoluteJoint.SolveVelocityConstraints_s_impulse_v2 = new b2Vec2(); + b2RevoluteJoint.SolvePositionConstraints_s_C_v2 = new b2Vec2(); + b2RevoluteJoint.SolvePositionConstraints_s_impulse = new b2Vec2(); + return b2RevoluteJoint; + })(b2Joint); + var b2RopeJointDef = (function (_super) { + __extends(b2RopeJointDef, _super); + function b2RopeJointDef() { + var _this = _super.call(this, exports.b2JointType.e_ropeJoint) || this; + _this.localAnchorA = new b2Vec2(-1, 0); + _this.localAnchorB = new b2Vec2(1, 0); + _this.maxLength = 0; + return _this; + } + return b2RopeJointDef; + })(b2JointDef); + var b2RopeJoint = (function (_super) { + __extends(b2RopeJoint, _super); + function b2RopeJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_maxLength = 0; + _this.m_length = 0; + _this.m_impulse = 0; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_u = new b2Vec2(); + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_mass = 0; + _this.m_state = exports.b2LimitState.e_inactiveLimit; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, new b2Vec2(-1, 0))); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, new b2Vec2(1, 0))); + _this.m_maxLength = b2Maybe(def.maxLength, 0); + return _this; + } + b2RopeJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + this.m_u.Copy(cB).SelfAdd(this.m_rB).SelfSub(cA).SelfSub(this.m_rA); + this.m_length = this.m_u.Length(); + var C = this.m_length - this.m_maxLength; + this.m_state = C > 0 ? exports.b2LimitState.e_atUpperLimit : exports.b2LimitState.e_inactiveLimit; + if (!(this.m_length > b2_linearSlop)) { + this.m_u.SetZero(); + this.m_mass = 0; + this.m_impulse = 0; + return; + } + this.m_u.SelfMul(1 / this.m_length); + var crA = b2Vec2.CrossVV(this.m_rA, this.m_u); + var crB = b2Vec2.CrossVV(this.m_rB, this.m_u); + var invMass = this.m_invMassA + this.m_invIA * crA * crA + this.m_invMassB + this.m_invIB * crB * crB; + this.m_mass = 0 !== invMass ? 1 / invMass : 0; + if (data.step.warmStarting) { + this.m_impulse *= data.step.dtRatio; + var P = b2Vec2.MulSV(this.m_impulse, this.m_u, b2RopeJoint.InitVelocityConstraints_s_P); + vA.SelfMulSub(this.m_invMassA, P); + wA -= this.m_invIA * b2Vec2.CrossVV(this.m_rA, P); + vB.SelfMulAdd(this.m_invMassB, P); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, P); + } else this.m_impulse = 0; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2RopeJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var vpA = b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2RopeJoint.SolveVelocityConstraints_s_vpA); + var vpB = b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2RopeJoint.SolveVelocityConstraints_s_vpB); + var C = this.m_length - this.m_maxLength; + var Cdot = b2Vec2.DotVV(this.m_u, b2Vec2.SubVV(vpB, vpA, b2Vec2.s_t0)); + C < 0 && (Cdot += data.step.inv_dt * C); + var impulse = -this.m_mass * Cdot; + var oldImpulse = this.m_impulse; + this.m_impulse = b2Min(0, this.m_impulse + impulse); + impulse = this.m_impulse - oldImpulse; + var P = b2Vec2.MulSV(impulse, this.m_u, b2RopeJoint.SolveVelocityConstraints_s_P); + vA.SelfMulSub(this.m_invMassA, P); + wA -= this.m_invIA * b2Vec2.CrossVV(this.m_rA, P); + vB.SelfMulAdd(this.m_invMassB, P); + wB += this.m_invIB * b2Vec2.CrossVV(this.m_rB, P); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2RopeJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var u = this.m_u.Copy(cB).SelfAdd(rB).SelfSub(cA).SelfSub(rA); + var length = u.Normalize(); + var C = length - this.m_maxLength; + C = b2Clamp(C, 0, b2_maxLinearCorrection); + var impulse = -this.m_mass * C; + var P = b2Vec2.MulSV(impulse, u, b2RopeJoint.SolvePositionConstraints_s_P); + cA.SelfMulSub(this.m_invMassA, P); + aA -= this.m_invIA * b2Vec2.CrossVV(rA, P); + cB.SelfMulAdd(this.m_invMassB, P); + aB += this.m_invIB * b2Vec2.CrossVV(rB, P); + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return length - this.m_maxLength < b2_linearSlop; + }; + b2RopeJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2RopeJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2RopeJoint.prototype.GetReactionForce = function (inv_dt, out) { + return b2Vec2.MulSV(inv_dt * this.m_impulse, this.m_u, out); + }; + b2RopeJoint.prototype.GetReactionTorque = function (inv_dt) { + return 0; + }; + b2RopeJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2RopeJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2RopeJoint.prototype.SetMaxLength = function (length) { + this.m_maxLength = length; + }; + b2RopeJoint.prototype.GetMaxLength = function () { + return this.m_maxLength; + }; + b2RopeJoint.prototype.GetLimitState = function () { + return this.m_state; + }; + b2RopeJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2RopeJointDef = new b2RopeJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.maxLength = %.15f;\n", this.m_maxLength); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2RopeJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2RopeJoint.SolveVelocityConstraints_s_vpA = new b2Vec2(); + b2RopeJoint.SolveVelocityConstraints_s_vpB = new b2Vec2(); + b2RopeJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2RopeJoint.SolvePositionConstraints_s_P = new b2Vec2(); + return b2RopeJoint; + })(b2Joint); + var b2WeldJointDef = (function (_super) { + __extends(b2WeldJointDef, _super); + function b2WeldJointDef() { + var _this = _super.call(this, exports.b2JointType.e_weldJoint) || this; + _this.localAnchorA = new b2Vec2(); + _this.localAnchorB = new b2Vec2(); + _this.referenceAngle = 0; + _this.frequencyHz = 0; + _this.dampingRatio = 0; + return _this; + } + b2WeldJointDef.prototype.Initialize = function (bA, bB, anchor) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(anchor, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor, this.localAnchorB); + this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle(); + }; + return b2WeldJointDef; + })(b2JointDef); + var b2WeldJoint = (function (_super) { + __extends(b2WeldJoint, _super); + function b2WeldJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_frequencyHz = 0; + _this.m_dampingRatio = 0; + _this.m_bias = 0; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_referenceAngle = 0; + _this.m_gamma = 0; + _this.m_impulse = new b2Vec3(0, 0, 0); + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_mass = new b2Mat33(); + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_K = new b2Mat33(); + _this.m_frequencyHz = b2Maybe(def.frequencyHz, 0); + _this.m_dampingRatio = b2Maybe(def.dampingRatio, 0); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, b2Vec2.ZERO)); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, b2Vec2.ZERO)); + _this.m_referenceAngle = b2Maybe(def.referenceAngle, 0); + _this.m_impulse.SetZero(); + return _this; + } + b2WeldJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var K = this.m_K; + K.ex.x = mA + mB + this.m_rA.y * this.m_rA.y * iA + this.m_rB.y * this.m_rB.y * iB; + K.ey.x = -this.m_rA.y * this.m_rA.x * iA - this.m_rB.y * this.m_rB.x * iB; + K.ez.x = -this.m_rA.y * iA - this.m_rB.y * iB; + K.ex.y = K.ey.x; + K.ey.y = mA + mB + this.m_rA.x * this.m_rA.x * iA + this.m_rB.x * this.m_rB.x * iB; + K.ez.y = this.m_rA.x * iA + this.m_rB.x * iB; + K.ex.z = K.ez.x; + K.ey.z = K.ez.y; + K.ez.z = iA + iB; + if (this.m_frequencyHz > 0) { + K.GetInverse22(this.m_mass); + var invM = iA + iB; + var m = invM > 0 ? 1 / invM : 0; + var C = aB - aA - this.m_referenceAngle; + var omega = 2 * b2_pi * this.m_frequencyHz; + var d = 2 * m * this.m_dampingRatio * omega; + var k = m * omega * omega; + var h = data.step.dt; + this.m_gamma = h * (d + h * k); + this.m_gamma = 0 !== this.m_gamma ? 1 / this.m_gamma : 0; + this.m_bias = C * h * k * this.m_gamma; + invM += this.m_gamma; + this.m_mass.ez.z = 0 !== invM ? 1 / invM : 0; + } else { + K.GetSymInverse33(this.m_mass); + this.m_gamma = 0; + this.m_bias = 0; + } + if (data.step.warmStarting) { + this.m_impulse.SelfMul(data.step.dtRatio); + var P = b2WeldJoint.InitVelocityConstraints_s_P.Set(this.m_impulse.x, this.m_impulse.y); + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + this.m_impulse.z); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(this.m_rB, P) + this.m_impulse.z); + } else this.m_impulse.SetZero(); + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2WeldJoint.prototype.SolveVelocityConstraints = function (data) { + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + if (this.m_frequencyHz > 0) { + var Cdot2 = wB - wA; + var impulse2 = -this.m_mass.ez.z * (Cdot2 + this.m_bias + this.m_gamma * this.m_impulse.z); + this.m_impulse.z += impulse2; + wA -= iA * impulse2; + wB += iB * impulse2; + var Cdot1 = b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2Vec2.s_t1), b2WeldJoint.SolveVelocityConstraints_s_Cdot1); + var impulse1 = b2Mat33.MulM33XY(this.m_mass, Cdot1.x, Cdot1.y, b2WeldJoint.SolveVelocityConstraints_s_impulse1).SelfNeg(); + this.m_impulse.x += impulse1.x; + this.m_impulse.y += impulse1.y; + var P = impulse1; + vA.SelfMulSub(mA, P); + wA -= iA * b2Vec2.CrossVV(this.m_rA, P); + vB.SelfMulAdd(mB, P); + wB += iB * b2Vec2.CrossVV(this.m_rB, P); + } else { + var Cdot1 = b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, this.m_rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, this.m_rA, b2Vec2.s_t1), b2WeldJoint.SolveVelocityConstraints_s_Cdot1); + var Cdot2 = wB - wA; + var impulse = b2Mat33.MulM33XYZ(this.m_mass, Cdot1.x, Cdot1.y, Cdot2, b2WeldJoint.SolveVelocityConstraints_s_impulse).SelfNeg(); + this.m_impulse.SelfAdd(impulse); + var P = b2WeldJoint.SolveVelocityConstraints_s_P.Set(impulse.x, impulse.y); + vA.SelfMulSub(mA, P); + wA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + impulse.z); + vB.SelfMulAdd(mB, P); + wB += iB * (b2Vec2.CrossVV(this.m_rB, P) + impulse.z); + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2WeldJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var positionError, angularError; + var K = this.m_K; + K.ex.x = mA + mB + rA.y * rA.y * iA + rB.y * rB.y * iB; + K.ey.x = -rA.y * rA.x * iA - rB.y * rB.x * iB; + K.ez.x = -rA.y * iA - rB.y * iB; + K.ex.y = K.ey.x; + K.ey.y = mA + mB + rA.x * rA.x * iA + rB.x * rB.x * iB; + K.ez.y = rA.x * iA + rB.x * iB; + K.ex.z = K.ez.x; + K.ey.z = K.ez.y; + K.ez.z = iA + iB; + if (this.m_frequencyHz > 0) { + var C1 = b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), b2WeldJoint.SolvePositionConstraints_s_C1); + positionError = C1.Length(); + angularError = 0; + var P = K.Solve22(C1.x, C1.y, b2WeldJoint.SolvePositionConstraints_s_P).SelfNeg(); + cA.SelfMulSub(mA, P); + aA -= iA * b2Vec2.CrossVV(rA, P); + cB.SelfMulAdd(mB, P); + aB += iB * b2Vec2.CrossVV(rB, P); + } else { + var C1 = b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), b2WeldJoint.SolvePositionConstraints_s_C1); + var C2 = aB - aA - this.m_referenceAngle; + positionError = C1.Length(); + angularError = b2Abs(C2); + var impulse = K.Solve33(C1.x, C1.y, C2, b2WeldJoint.SolvePositionConstraints_s_impulse).SelfNeg(); + var P = b2WeldJoint.SolvePositionConstraints_s_P.Set(impulse.x, impulse.y); + cA.SelfMulSub(mA, P); + aA -= iA * (b2Vec2.CrossVV(this.m_rA, P) + impulse.z); + cB.SelfMulAdd(mB, P); + aB += iB * (b2Vec2.CrossVV(this.m_rB, P) + impulse.z); + } + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return positionError <= b2_linearSlop && angularError <= b2_angularSlop; + }; + b2WeldJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2WeldJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2WeldJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * this.m_impulse.x; + out.y = inv_dt * this.m_impulse.y; + return out; + }; + b2WeldJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_impulse.z; + }; + b2WeldJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2WeldJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2WeldJoint.prototype.GetReferenceAngle = function () { + return this.m_referenceAngle; + }; + b2WeldJoint.prototype.SetFrequency = function (hz) { + this.m_frequencyHz = hz; + }; + b2WeldJoint.prototype.GetFrequency = function () { + return this.m_frequencyHz; + }; + b2WeldJoint.prototype.SetDampingRatio = function (ratio) { + this.m_dampingRatio = ratio; + }; + b2WeldJoint.prototype.GetDampingRatio = function () { + return this.m_dampingRatio; + }; + b2WeldJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2WeldJointDef = new b2WeldJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle); + log(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz); + log(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2WeldJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2WeldJoint.SolveVelocityConstraints_s_Cdot1 = new b2Vec2(); + b2WeldJoint.SolveVelocityConstraints_s_impulse1 = new b2Vec2(); + b2WeldJoint.SolveVelocityConstraints_s_impulse = new b2Vec3(); + b2WeldJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2WeldJoint.SolvePositionConstraints_s_C1 = new b2Vec2(); + b2WeldJoint.SolvePositionConstraints_s_P = new b2Vec2(); + b2WeldJoint.SolvePositionConstraints_s_impulse = new b2Vec3(); + return b2WeldJoint; + })(b2Joint); + var b2WheelJointDef = (function (_super) { + __extends(b2WheelJointDef, _super); + function b2WheelJointDef() { + var _this = _super.call(this, exports.b2JointType.e_wheelJoint) || this; + _this.localAnchorA = new b2Vec2(0, 0); + _this.localAnchorB = new b2Vec2(0, 0); + _this.localAxisA = new b2Vec2(1, 0); + _this.enableMotor = false; + _this.maxMotorTorque = 0; + _this.motorSpeed = 0; + _this.frequencyHz = 2; + _this.dampingRatio = .7; + return _this; + } + b2WheelJointDef.prototype.Initialize = function (bA, bB, anchor, axis) { + this.bodyA = bA; + this.bodyB = bB; + this.bodyA.GetLocalPoint(anchor, this.localAnchorA); + this.bodyB.GetLocalPoint(anchor, this.localAnchorB); + this.bodyA.GetLocalVector(axis, this.localAxisA); + }; + return b2WheelJointDef; + })(b2JointDef); + var b2WheelJoint = (function (_super) { + __extends(b2WheelJoint, _super); + function b2WheelJoint(def) { + var _this = _super.call(this, def) || this; + _this.m_frequencyHz = 0; + _this.m_dampingRatio = 0; + _this.m_localAnchorA = new b2Vec2(); + _this.m_localAnchorB = new b2Vec2(); + _this.m_localXAxisA = new b2Vec2(); + _this.m_localYAxisA = new b2Vec2(); + _this.m_impulse = 0; + _this.m_motorImpulse = 0; + _this.m_springImpulse = 0; + _this.m_maxMotorTorque = 0; + _this.m_motorSpeed = 0; + _this.m_enableMotor = false; + _this.m_indexA = 0; + _this.m_indexB = 0; + _this.m_localCenterA = new b2Vec2(); + _this.m_localCenterB = new b2Vec2(); + _this.m_invMassA = 0; + _this.m_invMassB = 0; + _this.m_invIA = 0; + _this.m_invIB = 0; + _this.m_ax = new b2Vec2(); + _this.m_ay = new b2Vec2(); + _this.m_sAx = 0; + _this.m_sBx = 0; + _this.m_sAy = 0; + _this.m_sBy = 0; + _this.m_mass = 0; + _this.m_motorMass = 0; + _this.m_springMass = 0; + _this.m_bias = 0; + _this.m_gamma = 0; + _this.m_qA = new b2Rot(); + _this.m_qB = new b2Rot(); + _this.m_lalcA = new b2Vec2(); + _this.m_lalcB = new b2Vec2(); + _this.m_rA = new b2Vec2(); + _this.m_rB = new b2Vec2(); + _this.m_frequencyHz = b2Maybe(def.frequencyHz, 2); + _this.m_dampingRatio = b2Maybe(def.dampingRatio, .7); + _this.m_localAnchorA.Copy(b2Maybe(def.localAnchorA, b2Vec2.ZERO)); + _this.m_localAnchorB.Copy(b2Maybe(def.localAnchorB, b2Vec2.ZERO)); + _this.m_localXAxisA.Copy(b2Maybe(def.localAxisA, b2Vec2.UNITX)); + b2Vec2.CrossOneV(_this.m_localXAxisA, _this.m_localYAxisA); + _this.m_maxMotorTorque = b2Maybe(def.maxMotorTorque, 0); + _this.m_motorSpeed = b2Maybe(def.motorSpeed, 0); + _this.m_enableMotor = b2Maybe(def.enableMotor, false); + _this.m_ax.SetZero(); + _this.m_ay.SetZero(); + return _this; + } + b2WheelJoint.prototype.GetMotorSpeed = function () { + return this.m_motorSpeed; + }; + b2WheelJoint.prototype.GetMaxMotorTorque = function () { + return this.m_maxMotorTorque; + }; + b2WheelJoint.prototype.SetSpringFrequencyHz = function (hz) { + this.m_frequencyHz = hz; + }; + b2WheelJoint.prototype.GetSpringFrequencyHz = function () { + return this.m_frequencyHz; + }; + b2WheelJoint.prototype.SetSpringDampingRatio = function (ratio) { + this.m_dampingRatio = ratio; + }; + b2WheelJoint.prototype.GetSpringDampingRatio = function () { + return this.m_dampingRatio; + }; + b2WheelJoint.prototype.InitVelocityConstraints = function (data) { + this.m_indexA = this.m_bodyA.m_islandIndex; + this.m_indexB = this.m_bodyB.m_islandIndex; + this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter); + this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter); + this.m_invMassA = this.m_bodyA.m_invMass; + this.m_invMassB = this.m_bodyB.m_invMass; + this.m_invIA = this.m_bodyA.m_invI; + this.m_invIB = this.m_bodyB.m_invI; + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var d = b2Vec2.SubVV(b2Vec2.AddVV(cB, rB, b2Vec2.s_t0), b2Vec2.AddVV(cA, rA, b2Vec2.s_t1), b2WheelJoint.InitVelocityConstraints_s_d); + b2Rot.MulRV(qA, this.m_localYAxisA, this.m_ay); + this.m_sAy = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), this.m_ay); + this.m_sBy = b2Vec2.CrossVV(rB, this.m_ay); + this.m_mass = mA + mB + iA * this.m_sAy * this.m_sAy + iB * this.m_sBy * this.m_sBy; + this.m_mass > 0 && (this.m_mass = 1 / this.m_mass); + this.m_springMass = 0; + this.m_bias = 0; + this.m_gamma = 0; + if (this.m_frequencyHz > 0) { + b2Rot.MulRV(qA, this.m_localXAxisA, this.m_ax); + this.m_sAx = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), this.m_ax); + this.m_sBx = b2Vec2.CrossVV(rB, this.m_ax); + var invMass = mA + mB + iA * this.m_sAx * this.m_sAx + iB * this.m_sBx * this.m_sBx; + if (invMass > 0) { + this.m_springMass = 1 / invMass; + var C = b2Vec2.DotVV(d, this.m_ax); + var omega = 2 * b2_pi * this.m_frequencyHz; + var damp = 2 * this.m_springMass * this.m_dampingRatio * omega; + var k = this.m_springMass * omega * omega; + var h = data.step.dt; + this.m_gamma = h * (damp + h * k); + this.m_gamma > 0 && (this.m_gamma = 1 / this.m_gamma); + this.m_bias = C * h * k * this.m_gamma; + this.m_springMass = invMass + this.m_gamma; + this.m_springMass > 0 && (this.m_springMass = 1 / this.m_springMass); + } + } else this.m_springImpulse = 0; + if (this.m_enableMotor) { + this.m_motorMass = iA + iB; + this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass); + } else { + this.m_motorMass = 0; + this.m_motorImpulse = 0; + } + if (data.step.warmStarting) { + this.m_impulse *= data.step.dtRatio; + this.m_springImpulse *= data.step.dtRatio; + this.m_motorImpulse *= data.step.dtRatio; + var P = b2Vec2.AddVV(b2Vec2.MulSV(this.m_impulse, this.m_ay, b2Vec2.s_t0), b2Vec2.MulSV(this.m_springImpulse, this.m_ax, b2Vec2.s_t1), b2WheelJoint.InitVelocityConstraints_s_P); + var LA = this.m_impulse * this.m_sAy + this.m_springImpulse * this.m_sAx + this.m_motorImpulse; + var LB = this.m_impulse * this.m_sBy + this.m_springImpulse * this.m_sBx + this.m_motorImpulse; + vA.SelfMulSub(this.m_invMassA, P); + wA -= this.m_invIA * LA; + vB.SelfMulAdd(this.m_invMassB, P); + wB += this.m_invIB * LB; + } else { + this.m_impulse = 0; + this.m_springImpulse = 0; + this.m_motorImpulse = 0; + } + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2WheelJoint.prototype.SolveVelocityConstraints = function (data) { + var mA = this.m_invMassA, mB = this.m_invMassB; + var iA = this.m_invIA, iB = this.m_invIB; + var vA = data.velocities[this.m_indexA].v; + var wA = data.velocities[this.m_indexA].w; + var vB = data.velocities[this.m_indexB].v; + var wB = data.velocities[this.m_indexB].w; + var Cdot = b2Vec2.DotVV(this.m_ax, b2Vec2.SubVV(vB, vA, b2Vec2.s_t0)) + this.m_sBx * wB - this.m_sAx * wA; + var impulse = -this.m_springMass * (Cdot + this.m_bias + this.m_gamma * this.m_springImpulse); + this.m_springImpulse += impulse; + var P = b2Vec2.MulSV(impulse, this.m_ax, b2WheelJoint.SolveVelocityConstraints_s_P); + var LA = impulse * this.m_sAx; + var LB = impulse * this.m_sBx; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + var Cdot = wB - wA - this.m_motorSpeed; + var impulse = -this.m_motorMass * Cdot; + var oldImpulse = this.m_motorImpulse; + var maxImpulse = data.step.dt * this.m_maxMotorTorque; + this.m_motorImpulse = b2Clamp(this.m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = this.m_motorImpulse - oldImpulse; + wA -= iA * impulse; + wB += iB * impulse; + var Cdot = b2Vec2.DotVV(this.m_ay, b2Vec2.SubVV(vB, vA, b2Vec2.s_t0)) + this.m_sBy * wB - this.m_sAy * wA; + var impulse = -this.m_mass * Cdot; + this.m_impulse += impulse; + var P = b2Vec2.MulSV(impulse, this.m_ay, b2WheelJoint.SolveVelocityConstraints_s_P); + var LA = impulse * this.m_sAy; + var LB = impulse * this.m_sBy; + vA.SelfMulSub(mA, P); + wA -= iA * LA; + vB.SelfMulAdd(mB, P); + wB += iB * LB; + data.velocities[this.m_indexA].w = wA; + data.velocities[this.m_indexB].w = wB; + }; + b2WheelJoint.prototype.SolvePositionConstraints = function (data) { + var cA = data.positions[this.m_indexA].c; + var aA = data.positions[this.m_indexA].a; + var cB = data.positions[this.m_indexB].c; + var aB = data.positions[this.m_indexB].a; + var qA = this.m_qA.SetAngle(aA), qB = this.m_qB.SetAngle(aB); + b2Vec2.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA); + var rA = b2Rot.MulRV(qA, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB); + var rB = b2Rot.MulRV(qB, this.m_lalcB, this.m_rB); + var d = b2Vec2.AddVV(b2Vec2.SubVV(cB, cA, b2Vec2.s_t0), b2Vec2.SubVV(rB, rA, b2Vec2.s_t1), b2WheelJoint.SolvePositionConstraints_s_d); + var ay = b2Rot.MulRV(qA, this.m_localYAxisA, this.m_ay); + var sAy = b2Vec2.CrossVV(b2Vec2.AddVV(d, rA, b2Vec2.s_t0), ay); + var sBy = b2Vec2.CrossVV(rB, ay); + var C = b2Vec2.DotVV(d, this.m_ay); + var k = this.m_invMassA + this.m_invMassB + this.m_invIA * this.m_sAy * this.m_sAy + this.m_invIB * this.m_sBy * this.m_sBy; + var impulse; + impulse = 0 !== k ? -C / k : 0; + var P = b2Vec2.MulSV(impulse, ay, b2WheelJoint.SolvePositionConstraints_s_P); + var LA = impulse * sAy; + var LB = impulse * sBy; + cA.SelfMulSub(this.m_invMassA, P); + aA -= this.m_invIA * LA; + cB.SelfMulAdd(this.m_invMassB, P); + aB += this.m_invIB * LB; + data.positions[this.m_indexA].a = aA; + data.positions[this.m_indexB].a = aB; + return b2Abs(C) <= b2_linearSlop; + }; + b2WheelJoint.prototype.GetDefinition = function (def) { + return def; + }; + b2WheelJoint.prototype.GetAnchorA = function (out) { + return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, out); + }; + b2WheelJoint.prototype.GetAnchorB = function (out) { + return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, out); + }; + b2WheelJoint.prototype.GetReactionForce = function (inv_dt, out) { + out.x = inv_dt * (this.m_impulse * this.m_ay.x + this.m_springImpulse * this.m_ax.x); + out.y = inv_dt * (this.m_impulse * this.m_ay.y + this.m_springImpulse * this.m_ax.y); + return out; + }; + b2WheelJoint.prototype.GetReactionTorque = function (inv_dt) { + return inv_dt * this.m_motorImpulse; + }; + b2WheelJoint.prototype.GetLocalAnchorA = function () { + return this.m_localAnchorA; + }; + b2WheelJoint.prototype.GetLocalAnchorB = function () { + return this.m_localAnchorB; + }; + b2WheelJoint.prototype.GetLocalAxisA = function () { + return this.m_localXAxisA; + }; + b2WheelJoint.prototype.GetJointTranslation = function () { + return this.GetPrismaticJointTranslation(); + }; + b2WheelJoint.prototype.GetJointLinearSpeed = function () { + return this.GetPrismaticJointSpeed(); + }; + b2WheelJoint.prototype.GetJointAngle = function () { + return this.GetRevoluteJointAngle(); + }; + b2WheelJoint.prototype.GetJointAngularSpeed = function () { + return this.GetRevoluteJointSpeed(); + }; + b2WheelJoint.prototype.GetPrismaticJointTranslation = function () { + var bA = this.m_bodyA; + var bB = this.m_bodyB; + var pA = bA.GetWorldPoint(this.m_localAnchorA, new b2Vec2()); + var pB = bB.GetWorldPoint(this.m_localAnchorB, new b2Vec2()); + var d = b2Vec2.SubVV(pB, pA, new b2Vec2()); + var axis = bA.GetWorldVector(this.m_localXAxisA, new b2Vec2()); + var translation = b2Vec2.DotVV(d, axis); + return translation; + }; + b2WheelJoint.prototype.GetPrismaticJointSpeed = function () { + var bA = this.m_bodyA; + var bB = this.m_bodyB; + b2Vec2.SubVV(this.m_localAnchorA, bA.m_sweep.localCenter, this.m_lalcA); + var rA = b2Rot.MulRV(bA.m_xf.q, this.m_lalcA, this.m_rA); + b2Vec2.SubVV(this.m_localAnchorB, bB.m_sweep.localCenter, this.m_lalcB); + var rB = b2Rot.MulRV(bB.m_xf.q, this.m_lalcB, this.m_rB); + var pA = b2Vec2.AddVV(bA.m_sweep.c, rA, b2Vec2.s_t0); + var pB = b2Vec2.AddVV(bB.m_sweep.c, rB, b2Vec2.s_t1); + var d = b2Vec2.SubVV(pB, pA, b2Vec2.s_t2); + var axis = bA.GetWorldVector(this.m_localXAxisA, new b2Vec2()); + var vA = bA.m_linearVelocity; + var vB = bB.m_linearVelocity; + var wA = bA.m_angularVelocity; + var wB = bB.m_angularVelocity; + var speed = b2Vec2.DotVV(d, b2Vec2.CrossSV(wA, axis, b2Vec2.s_t0)) + b2Vec2.DotVV(axis, b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, rA, b2Vec2.s_t1), b2Vec2.s_t0)); + return speed; + }; + b2WheelJoint.prototype.GetRevoluteJointAngle = function () { + return this.m_bodyB.m_sweep.a - this.m_bodyA.m_sweep.a; + }; + b2WheelJoint.prototype.GetRevoluteJointSpeed = function () { + var wA = this.m_bodyA.m_angularVelocity; + var wB = this.m_bodyB.m_angularVelocity; + return wB - wA; + }; + b2WheelJoint.prototype.IsMotorEnabled = function () { + return this.m_enableMotor; + }; + b2WheelJoint.prototype.EnableMotor = function (flag) { + if (flag !== this.m_enableMotor) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_enableMotor = flag; + } + }; + b2WheelJoint.prototype.SetMotorSpeed = function (speed) { + if (speed !== this.m_motorSpeed) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_motorSpeed = speed; + } + }; + b2WheelJoint.prototype.SetMaxMotorTorque = function (force) { + if (force !== this.m_maxMotorTorque) { + this.m_bodyA.SetAwake(true); + this.m_bodyB.SetAwake(true); + this.m_maxMotorTorque = force; + } + }; + b2WheelJoint.prototype.GetMotorTorque = function (inv_dt) { + return inv_dt * this.m_motorImpulse; + }; + b2WheelJoint.prototype.Dump = function (log) { + var indexA = this.m_bodyA.m_islandIndex; + var indexB = this.m_bodyB.m_islandIndex; + log(" const jd: b2WheelJointDef = new b2WheelJointDef();\n"); + log(" jd.bodyA = bodies[%d];\n", indexA); + log(" jd.bodyB = bodies[%d];\n", indexB); + log(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false"); + log(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y); + log(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y); + log(" jd.localAxisA.Set(%.15f, %.15f);\n", this.m_localXAxisA.x, this.m_localXAxisA.y); + log(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false"); + log(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed); + log(" jd.maxMotorTorque = %.15f;\n", this.m_maxMotorTorque); + log(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz); + log(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio); + log(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index); + }; + b2WheelJoint.InitVelocityConstraints_s_d = new b2Vec2(); + b2WheelJoint.InitVelocityConstraints_s_P = new b2Vec2(); + b2WheelJoint.SolveVelocityConstraints_s_P = new b2Vec2(); + b2WheelJoint.SolvePositionConstraints_s_d = new b2Vec2(); + b2WheelJoint.SolvePositionConstraints_s_P = new b2Vec2(); + return b2WheelJoint; + })(b2Joint); + function b2MixFriction(friction1, friction2) { + return b2Sqrt(friction1 * friction2); + } + function b2MixRestitution(restitution1, restitution2) { + return restitution1 > restitution2 ? restitution1 : restitution2; + } + var b2ContactEdge = (function () { + function b2ContactEdge(contact) { + this.prev = null; + this.next = null; + this.contact = contact; + } + return b2ContactEdge; + })(); + var b2Contact = (function () { + function b2Contact() { + this.m_islandFlag = false; + this.m_touchingFlag = false; + this.m_enabledFlag = false; + this.m_filterFlag = false; + this.m_bulletHitFlag = false; + this.m_toiFlag = false; + this.m_prev = null; + this.m_next = null; + this.m_indexA = 0; + this.m_indexB = 0; + this.m_manifold = new b2Manifold(); + this.m_toiCount = 0; + this.m_toi = 0; + this.m_friction = 0; + this.m_restitution = 0; + this.m_tangentSpeed = 0; + this.m_oldManifold = new b2Manifold(); + this.m_nodeA = new b2ContactEdge(this); + this.m_nodeB = new b2ContactEdge(this); + } + b2Contact.prototype.GetManifold = function () { + return this.m_manifold; + }; + b2Contact.prototype.GetWorldManifold = function (worldManifold) { + var bodyA = this.m_fixtureA.GetBody(); + var bodyB = this.m_fixtureB.GetBody(); + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + worldManifold.Initialize(this.m_manifold, bodyA.GetTransform(), shapeA.m_radius, bodyB.GetTransform(), shapeB.m_radius); + }; + b2Contact.prototype.IsTouching = function () { + return this.m_touchingFlag; + }; + b2Contact.prototype.SetEnabled = function (flag) { + this.m_enabledFlag = flag; + }; + b2Contact.prototype.IsEnabled = function () { + return this.m_enabledFlag; + }; + b2Contact.prototype.GetNext = function () { + return this.m_next; + }; + b2Contact.prototype.GetFixtureA = function () { + return this.m_fixtureA; + }; + b2Contact.prototype.GetChildIndexA = function () { + return this.m_indexA; + }; + b2Contact.prototype.GetFixtureB = function () { + return this.m_fixtureB; + }; + b2Contact.prototype.GetChildIndexB = function () { + return this.m_indexB; + }; + b2Contact.prototype.FlagForFiltering = function () { + this.m_filterFlag = true; + }; + b2Contact.prototype.SetFriction = function (friction) { + this.m_friction = friction; + }; + b2Contact.prototype.GetFriction = function () { + return this.m_friction; + }; + b2Contact.prototype.ResetFriction = function () { + this.m_friction = b2MixFriction(this.m_fixtureA.m_friction, this.m_fixtureB.m_friction); + }; + b2Contact.prototype.SetRestitution = function (restitution) { + this.m_restitution = restitution; + }; + b2Contact.prototype.GetRestitution = function () { + return this.m_restitution; + }; + b2Contact.prototype.ResetRestitution = function () { + this.m_restitution = b2MixRestitution(this.m_fixtureA.m_restitution, this.m_fixtureB.m_restitution); + }; + b2Contact.prototype.SetTangentSpeed = function (speed) { + this.m_tangentSpeed = speed; + }; + b2Contact.prototype.GetTangentSpeed = function () { + return this.m_tangentSpeed; + }; + b2Contact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + this.m_islandFlag = false; + this.m_touchingFlag = false; + this.m_enabledFlag = true; + this.m_filterFlag = false; + this.m_bulletHitFlag = false; + this.m_toiFlag = false; + this.m_fixtureA = fixtureA; + this.m_fixtureB = fixtureB; + this.m_indexA = indexA; + this.m_indexB = indexB; + this.m_manifold.pointCount = 0; + this.m_prev = null; + this.m_next = null; + delete this.m_nodeA.contact; + this.m_nodeA.prev = null; + this.m_nodeA.next = null; + delete this.m_nodeA.other; + delete this.m_nodeB.contact; + this.m_nodeB.prev = null; + this.m_nodeB.next = null; + delete this.m_nodeB.other; + this.m_toiCount = 0; + this.m_friction = b2MixFriction(this.m_fixtureA.m_friction, this.m_fixtureB.m_friction); + this.m_restitution = b2MixRestitution(this.m_fixtureA.m_restitution, this.m_fixtureB.m_restitution); + }; + b2Contact.prototype.Update = function (listener) { + var tManifold = this.m_oldManifold; + this.m_oldManifold = this.m_manifold; + this.m_manifold = tManifold; + this.m_enabledFlag = true; + var touching = false; + var wasTouching = this.m_touchingFlag; + var sensorA = this.m_fixtureA.IsSensor(); + var sensorB = this.m_fixtureB.IsSensor(); + var sensor = sensorA || sensorB; + var bodyA = this.m_fixtureA.GetBody(); + var bodyB = this.m_fixtureB.GetBody(); + var xfA = bodyA.GetTransform(); + var xfB = bodyB.GetTransform(); + if (sensor) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + touching = b2TestOverlapShape(shapeA, this.m_indexA, shapeB, this.m_indexB, xfA, xfB); + this.m_manifold.pointCount = 0; + } else { + this.Evaluate(this.m_manifold, xfA, xfB); + touching = this.m_manifold.pointCount > 0; + for (var i = 0; i < this.m_manifold.pointCount; ++i) { + var mp2 = this.m_manifold.points[i]; + mp2.normalImpulse = 0; + mp2.tangentImpulse = 0; + var id2 = mp2.id; + for (var j = 0; j < this.m_oldManifold.pointCount; ++j) { + var mp1 = this.m_oldManifold.points[j]; + if (mp1.id.key === id2.key) { + mp2.normalImpulse = mp1.normalImpulse; + mp2.tangentImpulse = mp1.tangentImpulse; + break; + } + } + } + if (touching !== wasTouching) { + bodyA.SetAwake(true); + bodyB.SetAwake(true); + } + } + this.m_touchingFlag = touching; + !wasTouching && touching && listener && listener.BeginContact(this); + wasTouching && !touching && listener && listener.EndContact(this); + !sensor && touching && listener && listener.PreSolve(this, this.m_oldManifold); + }; + b2Contact.prototype.ComputeTOI = function (sweepA, sweepB) { + var input = b2Contact.ComputeTOI_s_input; + input.proxyA.SetShape(this.m_fixtureA.GetShape(), this.m_indexA); + input.proxyB.SetShape(this.m_fixtureB.GetShape(), this.m_indexB); + input.sweepA.Copy(sweepA); + input.sweepB.Copy(sweepB); + input.tMax = b2_linearSlop; + var output = b2Contact.ComputeTOI_s_output; + b2TimeOfImpact(output, input); + return output.t; + }; + b2Contact.ComputeTOI_s_input = new b2TOIInput(); + b2Contact.ComputeTOI_s_output = new b2TOIOutput(); + return b2Contact; + })(); + var b2CircleContact = (function (_super) { + __extends(b2CircleContact, _super); + function b2CircleContact() { + return _super.call(this) || this; + } + b2CircleContact.Create = function (allocator) { + return new b2CircleContact(); + }; + b2CircleContact.Destroy = function (contact, allocator) { }; + b2CircleContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2CircleContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + b2CollideCircles(manifold, shapeA, xfA, shapeB, xfB); + }; + return b2CircleContact; + })(b2Contact); + var b2PolygonContact = (function (_super) { + __extends(b2PolygonContact, _super); + function b2PolygonContact() { + return _super.call(this) || this; + } + b2PolygonContact.Create = function (allocator) { + return new b2PolygonContact(); + }; + b2PolygonContact.Destroy = function (contact, allocator) { }; + b2PolygonContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2PolygonContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + b2CollidePolygons(manifold, shapeA, xfA, shapeB, xfB); + }; + return b2PolygonContact; + })(b2Contact); + var b2PolygonAndCircleContact = (function (_super) { + __extends(b2PolygonAndCircleContact, _super); + function b2PolygonAndCircleContact() { + return _super.call(this) || this; + } + b2PolygonAndCircleContact.Create = function (allocator) { + return new b2PolygonAndCircleContact(); + }; + b2PolygonAndCircleContact.Destroy = function (contact, allocator) { }; + b2PolygonAndCircleContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2PolygonAndCircleContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + b2CollidePolygonAndCircle(manifold, shapeA, xfA, shapeB, xfB); + }; + return b2PolygonAndCircleContact; + })(b2Contact); + var b2EdgeAndCircleContact = (function (_super) { + __extends(b2EdgeAndCircleContact, _super); + function b2EdgeAndCircleContact() { + return _super.call(this) || this; + } + b2EdgeAndCircleContact.Create = function (allocator) { + return new b2EdgeAndCircleContact(); + }; + b2EdgeAndCircleContact.Destroy = function (contact, allocator) { }; + b2EdgeAndCircleContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2EdgeAndCircleContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + b2CollideEdgeAndCircle(manifold, shapeA, xfA, shapeB, xfB); + }; + return b2EdgeAndCircleContact; + })(b2Contact); + var b2EdgeAndPolygonContact = (function (_super) { + __extends(b2EdgeAndPolygonContact, _super); + function b2EdgeAndPolygonContact() { + return _super.call(this) || this; + } + b2EdgeAndPolygonContact.Create = function (allocator) { + return new b2EdgeAndPolygonContact(); + }; + b2EdgeAndPolygonContact.Destroy = function (contact, allocator) { }; + b2EdgeAndPolygonContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2EdgeAndPolygonContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + b2CollideEdgeAndPolygon(manifold, shapeA, xfA, shapeB, xfB); + }; + return b2EdgeAndPolygonContact; + })(b2Contact); + var b2ChainAndCircleContact = (function (_super) { + __extends(b2ChainAndCircleContact, _super); + function b2ChainAndCircleContact() { + return _super.call(this) || this; + } + b2ChainAndCircleContact.Create = function (allocator) { + return new b2ChainAndCircleContact(); + }; + b2ChainAndCircleContact.Destroy = function (contact, allocator) { }; + b2ChainAndCircleContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2ChainAndCircleContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + var chain = shapeA; + var edge = b2ChainAndCircleContact.Evaluate_s_edge; + chain.GetChildEdge(edge, this.m_indexA); + b2CollideEdgeAndCircle(manifold, edge, xfA, shapeB, xfB); + }; + b2ChainAndCircleContact.Evaluate_s_edge = new b2EdgeShape(); + return b2ChainAndCircleContact; + })(b2Contact); + var b2ChainAndPolygonContact = (function (_super) { + __extends(b2ChainAndPolygonContact, _super); + function b2ChainAndPolygonContact() { + return _super.call(this) || this; + } + b2ChainAndPolygonContact.Create = function (allocator) { + return new b2ChainAndPolygonContact(); + }; + b2ChainAndPolygonContact.Destroy = function (contact, allocator) { }; + b2ChainAndPolygonContact.prototype.Reset = function (fixtureA, indexA, fixtureB, indexB) { + _super.prototype.Reset.call(this, fixtureA, indexA, fixtureB, indexB); + }; + b2ChainAndPolygonContact.prototype.Evaluate = function (manifold, xfA, xfB) { + var shapeA = this.m_fixtureA.GetShape(); + var shapeB = this.m_fixtureB.GetShape(); + var chain = shapeA; + var edge = b2ChainAndPolygonContact.Evaluate_s_edge; + chain.GetChildEdge(edge, this.m_indexA); + b2CollideEdgeAndPolygon(manifold, edge, xfA, shapeB, xfB); + }; + b2ChainAndPolygonContact.Evaluate_s_edge = new b2EdgeShape(); + return b2ChainAndPolygonContact; + })(b2Contact); + var b2ContactRegister = (function () { + function b2ContactRegister() { + this.createFcn = null; + this.destroyFcn = null; + this.primary = false; + } + return b2ContactRegister; + })(); + var b2ContactFactory = (function () { + function b2ContactFactory(allocator) { + this.m_allocator = null; + this.m_allocator = allocator; + this.InitializeRegisters(); + } + b2ContactFactory.prototype.AddType = function (createFcn, destroyFcn, type1, type2) { + var _this = this; + var pool = b2MakeArray(256, (function (i) { + return createFcn(_this.m_allocator); + })); + function poolCreateFcn(allocator) { + return pool.pop() || createFcn(allocator); + } + function poolDestroyFcn(contact, allocator) { + pool.push(contact); + } + this.m_registers[type1][type2].createFcn = poolCreateFcn; + this.m_registers[type1][type2].destroyFcn = poolDestroyFcn; + this.m_registers[type1][type2].primary = true; + if (type1 !== type2) { + this.m_registers[type2][type1].createFcn = poolCreateFcn; + this.m_registers[type2][type1].destroyFcn = poolDestroyFcn; + this.m_registers[type2][type1].primary = false; + } + }; + b2ContactFactory.prototype.InitializeRegisters = function () { + this.m_registers = []; + for (var i = 0; i < exports.b2ShapeType.e_shapeTypeCount; i++) { + this.m_registers[i] = []; + for (var j = 0; j < exports.b2ShapeType.e_shapeTypeCount; j++) this.m_registers[i][j] = new b2ContactRegister(); + } + this.AddType(b2CircleContact.Create, b2CircleContact.Destroy, exports.b2ShapeType.e_circleShape, exports.b2ShapeType.e_circleShape); + this.AddType(b2PolygonAndCircleContact.Create, b2PolygonAndCircleContact.Destroy, exports.b2ShapeType.e_polygonShape, exports.b2ShapeType.e_circleShape); + this.AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, exports.b2ShapeType.e_polygonShape, exports.b2ShapeType.e_polygonShape); + this.AddType(b2EdgeAndCircleContact.Create, b2EdgeAndCircleContact.Destroy, exports.b2ShapeType.e_edgeShape, exports.b2ShapeType.e_circleShape); + this.AddType(b2EdgeAndPolygonContact.Create, b2EdgeAndPolygonContact.Destroy, exports.b2ShapeType.e_edgeShape, exports.b2ShapeType.e_polygonShape); + this.AddType(b2ChainAndCircleContact.Create, b2ChainAndCircleContact.Destroy, exports.b2ShapeType.e_chainShape, exports.b2ShapeType.e_circleShape); + this.AddType(b2ChainAndPolygonContact.Create, b2ChainAndPolygonContact.Destroy, exports.b2ShapeType.e_chainShape, exports.b2ShapeType.e_polygonShape); + }; + b2ContactFactory.prototype.Create = function (fixtureA, indexA, fixtureB, indexB) { + var type1 = fixtureA.GetType(); + var type2 = fixtureB.GetType(); + var reg = this.m_registers[type1][type2]; + if (reg.createFcn) { + var c = reg.createFcn(this.m_allocator); + reg.primary ? c.Reset(fixtureA, indexA, fixtureB, indexB) : c.Reset(fixtureB, indexB, fixtureA, indexA); + return c; + } + return null; + }; + b2ContactFactory.prototype.Destroy = function (contact) { + var fixtureA = contact.m_fixtureA; + var fixtureB = contact.m_fixtureB; + if (contact.m_manifold.pointCount > 0 && !fixtureA.IsSensor() && !fixtureB.IsSensor()) { + fixtureA.GetBody().SetAwake(true); + fixtureB.GetBody().SetAwake(true); + } + var typeA = fixtureA.GetType(); + var typeB = fixtureB.GetType(); + var reg = this.m_registers[typeA][typeB]; + reg.destroyFcn && reg.destroyFcn(contact, this.m_allocator); + }; + return b2ContactFactory; + })(); + var b2DestructionListener = (function () { + function b2DestructionListener() { } + b2DestructionListener.prototype.SayGoodbyeJoint = function (joint) { }; + b2DestructionListener.prototype.SayGoodbyeFixture = function (fixture) { }; + b2DestructionListener.prototype.SayGoodbyeParticleGroup = function (group) { }; + b2DestructionListener.prototype.SayGoodbyeParticle = function (system, index) { }; + return b2DestructionListener; + })(); + var b2ContactFilter = (function () { + function b2ContactFilter() { } + b2ContactFilter.prototype.ShouldCollide = function (fixtureA, fixtureB) { + var bodyA = fixtureA.GetBody(); + var bodyB = fixtureB.GetBody(); + if (bodyB.GetType() === exports.b2BodyType.b2_staticBody && bodyA.GetType() === exports.b2BodyType.b2_staticBody) return false; + if (!bodyB.ShouldCollideConnected(bodyA)) return false; + var filter1 = fixtureA.GetFilterData(); + var filter2 = fixtureB.GetFilterData(); + if (filter1.groupIndex === filter2.groupIndex && 0 !== filter1.groupIndex) return filter1.groupIndex > 0; + var collide = 0 !== (filter1.maskBits & filter2.categoryBits) && 0 !== (filter1.categoryBits & filter2.maskBits); + return collide; + }; + b2ContactFilter.prototype.ShouldCollideFixtureParticle = function (fixture, system, index) { + return true; + }; + b2ContactFilter.prototype.ShouldCollideParticleParticle = function (system, indexA, indexB) { + return true; + }; + b2ContactFilter.b2_defaultFilter = new b2ContactFilter(); + return b2ContactFilter; + })(); + var b2ContactImpulse = (function () { + function b2ContactImpulse() { + this.normalImpulses = b2MakeNumberArray(b2_maxManifoldPoints); + this.tangentImpulses = b2MakeNumberArray(b2_maxManifoldPoints); + this.count = 0; + } + return b2ContactImpulse; + })(); + var b2ContactListener = (function () { + function b2ContactListener() { } + b2ContactListener.prototype.BeginContact = function (contact) { }; + b2ContactListener.prototype.EndContact = function (contact) { }; + b2ContactListener.prototype.BeginContactFixtureParticle = function (system, contact) { }; + b2ContactListener.prototype.EndContactFixtureParticle = function (system, contact) { }; + b2ContactListener.prototype.BeginContactParticleParticle = function (system, contact) { }; + b2ContactListener.prototype.EndContactParticleParticle = function (system, contact) { }; + b2ContactListener.prototype.PreSolve = function (contact, oldManifold) { }; + b2ContactListener.prototype.PostSolve = function (contact, impulse) { }; + b2ContactListener.b2_defaultListener = new b2ContactListener(); + return b2ContactListener; + })(); + var b2QueryCallback = (function () { + function b2QueryCallback() { } + b2QueryCallback.prototype.ReportFixture = function (fixture) { + return true; + }; + b2QueryCallback.prototype.ReportParticle = function (system, index) { + return false; + }; + b2QueryCallback.prototype.ShouldQueryParticleSystem = function (system) { + return true; + }; + return b2QueryCallback; + })(); + var b2RayCastCallback = (function () { + function b2RayCastCallback() { } + b2RayCastCallback.prototype.ReportFixture = function (fixture, point, normal, fraction) { + return fraction; + }; + b2RayCastCallback.prototype.ReportParticle = function (system, index, point, normal, fraction) { + return 0; + }; + b2RayCastCallback.prototype.ShouldQueryParticleSystem = function (system) { + return true; + }; + return b2RayCastCallback; + })(); + var b2ContactManager = (function () { + function b2ContactManager() { + this.m_broadPhase = new b2BroadPhase(); + this.m_contactList = null; + this.m_contactCount = 0; + this.m_contactFilter = b2ContactFilter.b2_defaultFilter; + this.m_contactListener = b2ContactListener.b2_defaultListener; + this.m_allocator = null; + this.m_contactFactory = new b2ContactFactory(this.m_allocator); + } + b2ContactManager.prototype.AddPair = function (proxyA, proxyB) { + var fixtureA = proxyA.fixture; + var fixtureB = proxyB.fixture; + var indexA = proxyA.childIndex; + var indexB = proxyB.childIndex; + var bodyA = fixtureA.GetBody(); + var bodyB = fixtureB.GetBody(); + if (bodyA === bodyB) return; + var edge = bodyB.GetContactList(); + while (edge) { + if (edge.other === bodyA) { + var fA = edge.contact.GetFixtureA(); + var fB = edge.contact.GetFixtureB(); + var iA = edge.contact.GetChildIndexA(); + var iB = edge.contact.GetChildIndexB(); + if (fA === fixtureA && fB === fixtureB && iA === indexA && iB === indexB) return; + if (fA === fixtureB && fB === fixtureA && iA === indexB && iB === indexA) return; + } + edge = edge.next; + } + if (this.m_contactFilter && !this.m_contactFilter.ShouldCollide(fixtureA, fixtureB)) return; + var c = this.m_contactFactory.Create(fixtureA, indexA, fixtureB, indexB); + if (null === c) return; + fixtureA = c.GetFixtureA(); + fixtureB = c.GetFixtureB(); + indexA = c.GetChildIndexA(); + indexB = c.GetChildIndexB(); + bodyA = fixtureA.m_body; + bodyB = fixtureB.m_body; + c.m_prev = null; + c.m_next = this.m_contactList; + null !== this.m_contactList && (this.m_contactList.m_prev = c); + this.m_contactList = c; + c.m_nodeA.contact = c; + c.m_nodeA.other = bodyB; + c.m_nodeA.prev = null; + c.m_nodeA.next = bodyA.m_contactList; + null !== bodyA.m_contactList && (bodyA.m_contactList.prev = c.m_nodeA); + bodyA.m_contactList = c.m_nodeA; + c.m_nodeB.contact = c; + c.m_nodeB.other = bodyA; + c.m_nodeB.prev = null; + c.m_nodeB.next = bodyB.m_contactList; + null !== bodyB.m_contactList && (bodyB.m_contactList.prev = c.m_nodeB); + bodyB.m_contactList = c.m_nodeB; + if (!fixtureA.IsSensor() && !fixtureB.IsSensor()) { + bodyA.SetAwake(true); + bodyB.SetAwake(true); + } + ++this.m_contactCount; + }; + b2ContactManager.prototype.FindNewContacts = function () { + var _this = this; + this.m_broadPhase.UpdatePairs((function (proxyA, proxyB) { + _this.AddPair(proxyA, proxyB); + })); + }; + b2ContactManager.prototype.Destroy = function (c) { + var fixtureA = c.GetFixtureA(); + var fixtureB = c.GetFixtureB(); + var bodyA = fixtureA.GetBody(); + var bodyB = fixtureB.GetBody(); + this.m_contactListener && c.IsTouching() && this.m_contactListener.EndContact(c); + c.m_prev && (c.m_prev.m_next = c.m_next); + c.m_next && (c.m_next.m_prev = c.m_prev); + c === this.m_contactList && (this.m_contactList = c.m_next); + c.m_nodeA.prev && (c.m_nodeA.prev.next = c.m_nodeA.next); + c.m_nodeA.next && (c.m_nodeA.next.prev = c.m_nodeA.prev); + c.m_nodeA === bodyA.m_contactList && (bodyA.m_contactList = c.m_nodeA.next); + c.m_nodeB.prev && (c.m_nodeB.prev.next = c.m_nodeB.next); + c.m_nodeB.next && (c.m_nodeB.next.prev = c.m_nodeB.prev); + c.m_nodeB === bodyB.m_contactList && (bodyB.m_contactList = c.m_nodeB.next); + this.m_contactFactory.Destroy(c); + --this.m_contactCount; + }; + b2ContactManager.prototype.Collide = function () { + var c = this.m_contactList; + while (c) { + var fixtureA = c.GetFixtureA(); + var fixtureB = c.GetFixtureB(); + var indexA = c.GetChildIndexA(); + var indexB = c.GetChildIndexB(); + var bodyA = fixtureA.GetBody(); + var bodyB = fixtureB.GetBody(); + if (c.m_filterFlag) { + if (this.m_contactFilter && !this.m_contactFilter.ShouldCollide(fixtureA, fixtureB)) { + var cNuke = c; + c = cNuke.m_next; + this.Destroy(cNuke); + continue; + } + c.m_filterFlag = false; + } + var activeA = bodyA.IsAwake() && bodyA.m_type !== exports.b2BodyType.b2_staticBody; + var activeB = bodyB.IsAwake() && bodyB.m_type !== exports.b2BodyType.b2_staticBody; + if (!activeA && !activeB) { + c = c.m_next; + continue; + } + var proxyA = fixtureA.m_proxies[indexA].treeNode; + var proxyB = fixtureB.m_proxies[indexB].treeNode; + var overlap = b2TestOverlapAABB(proxyA.aabb, proxyB.aabb); + if (!overlap) { + var cNuke = c; + c = cNuke.m_next; + this.Destroy(cNuke); + continue; + } + c.Update(this.m_contactListener); + c = c.m_next; + } + }; + return b2ContactManager; + })(); + var b2Profile = (function () { + function b2Profile() { + this.step = 0; + this.collide = 0; + this.solve = 0; + this.solveInit = 0; + this.solveVelocity = 0; + this.solvePosition = 0; + this.broadphase = 0; + this.solveTOI = 0; + } + b2Profile.prototype.Reset = function () { + this.step = 0; + this.collide = 0; + this.solve = 0; + this.solveInit = 0; + this.solveVelocity = 0; + this.solvePosition = 0; + this.broadphase = 0; + this.solveTOI = 0; + return this; + }; + return b2Profile; + })(); + var b2TimeStep = (function () { + function b2TimeStep() { + this.dt = 0; + this.inv_dt = 0; + this.dtRatio = 0; + this.velocityIterations = 0; + this.positionIterations = 0; + this.particleIterations = 0; + this.warmStarting = false; + } + b2TimeStep.prototype.Copy = function (step) { + this.dt = step.dt; + this.inv_dt = step.inv_dt; + this.dtRatio = step.dtRatio; + this.positionIterations = step.positionIterations; + this.velocityIterations = step.velocityIterations; + this.particleIterations = step.particleIterations; + this.warmStarting = step.warmStarting; + return this; + }; + return b2TimeStep; + })(); + var b2Position = (function () { + function b2Position() { + this.c = new b2Vec2(); + this.a = 0; + } + b2Position.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2Position(); + })); + }; + return b2Position; + })(); + var b2Velocity = (function () { + function b2Velocity() { + this.v = new b2Vec2(); + this.w = 0; + } + b2Velocity.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2Velocity(); + })); + }; + return b2Velocity; + })(); + var b2SolverData = (function () { + function b2SolverData() { + this.step = new b2TimeStep(); + } + return b2SolverData; + })(); + var g_blockSolve = false; + var b2VelocityConstraintPoint = (function () { + function b2VelocityConstraintPoint() { + this.rA = new b2Vec2(); + this.rB = new b2Vec2(); + this.normalImpulse = 0; + this.tangentImpulse = 0; + this.normalMass = 0; + this.tangentMass = 0; + this.velocityBias = 0; + } + b2VelocityConstraintPoint.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2VelocityConstraintPoint(); + })); + }; + return b2VelocityConstraintPoint; + })(); + var b2ContactVelocityConstraint = (function () { + function b2ContactVelocityConstraint() { + this.points = b2VelocityConstraintPoint.MakeArray(b2_maxManifoldPoints); + this.normal = new b2Vec2(); + this.tangent = new b2Vec2(); + this.normalMass = new b2Mat22(); + this.K = new b2Mat22(); + this.indexA = 0; + this.indexB = 0; + this.invMassA = 0; + this.invMassB = 0; + this.invIA = 0; + this.invIB = 0; + this.friction = 0; + this.restitution = 0; + this.tangentSpeed = 0; + this.pointCount = 0; + this.contactIndex = 0; + } + b2ContactVelocityConstraint.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2ContactVelocityConstraint(); + })); + }; + return b2ContactVelocityConstraint; + })(); + var b2ContactPositionConstraint = (function () { + function b2ContactPositionConstraint() { + this.localPoints = b2Vec2.MakeArray(b2_maxManifoldPoints); + this.localNormal = new b2Vec2(); + this.localPoint = new b2Vec2(); + this.indexA = 0; + this.indexB = 0; + this.invMassA = 0; + this.invMassB = 0; + this.localCenterA = new b2Vec2(); + this.localCenterB = new b2Vec2(); + this.invIA = 0; + this.invIB = 0; + this.type = exports.b2ManifoldType.e_unknown; + this.radiusA = 0; + this.radiusB = 0; + this.pointCount = 0; + } + b2ContactPositionConstraint.MakeArray = function (length) { + return b2MakeArray(length, (function (i) { + return new b2ContactPositionConstraint(); + })); + }; + return b2ContactPositionConstraint; + })(); + var b2ContactSolverDef = (function () { + function b2ContactSolverDef() { + this.step = new b2TimeStep(); + this.count = 0; + this.allocator = null; + } + return b2ContactSolverDef; + })(); + var b2PositionSolverManifold = (function () { + function b2PositionSolverManifold() { + this.normal = new b2Vec2(); + this.point = new b2Vec2(); + this.separation = 0; + } + b2PositionSolverManifold.prototype.Initialize = function (pc, xfA, xfB, index) { + var pointA = b2PositionSolverManifold.Initialize_s_pointA; + var pointB = b2PositionSolverManifold.Initialize_s_pointB; + var planePoint = b2PositionSolverManifold.Initialize_s_planePoint; + var clipPoint = b2PositionSolverManifold.Initialize_s_clipPoint; + switch (pc.type) { + case exports.b2ManifoldType.e_circles: + b2Transform.MulXV(xfA, pc.localPoint, pointA); + b2Transform.MulXV(xfB, pc.localPoints[0], pointB); + b2Vec2.SubVV(pointB, pointA, this.normal).SelfNormalize(); + b2Vec2.MidVV(pointA, pointB, this.point); + this.separation = b2Vec2.DotVV(b2Vec2.SubVV(pointB, pointA, b2Vec2.s_t0), this.normal) - pc.radiusA - pc.radiusB; + break; + + case exports.b2ManifoldType.e_faceA: + b2Rot.MulRV(xfA.q, pc.localNormal, this.normal); + b2Transform.MulXV(xfA, pc.localPoint, planePoint); + b2Transform.MulXV(xfB, pc.localPoints[index], clipPoint); + this.separation = b2Vec2.DotVV(b2Vec2.SubVV(clipPoint, planePoint, b2Vec2.s_t0), this.normal) - pc.radiusA - pc.radiusB; + this.point.Copy(clipPoint); + break; + + case exports.b2ManifoldType.e_faceB: + b2Rot.MulRV(xfB.q, pc.localNormal, this.normal); + b2Transform.MulXV(xfB, pc.localPoint, planePoint); + b2Transform.MulXV(xfA, pc.localPoints[index], clipPoint); + this.separation = b2Vec2.DotVV(b2Vec2.SubVV(clipPoint, planePoint, b2Vec2.s_t0), this.normal) - pc.radiusA - pc.radiusB; + this.point.Copy(clipPoint); + this.normal.SelfNeg(); + } + }; + b2PositionSolverManifold.Initialize_s_pointA = new b2Vec2(); + b2PositionSolverManifold.Initialize_s_pointB = new b2Vec2(); + b2PositionSolverManifold.Initialize_s_planePoint = new b2Vec2(); + b2PositionSolverManifold.Initialize_s_clipPoint = new b2Vec2(); + return b2PositionSolverManifold; + })(); + var b2ContactSolver = (function () { + function b2ContactSolver() { + this.m_step = new b2TimeStep(); + this.m_allocator = null; + this.m_positionConstraints = b2ContactPositionConstraint.MakeArray(1024); + this.m_velocityConstraints = b2ContactVelocityConstraint.MakeArray(1024); + this.m_count = 0; + } + b2ContactSolver.prototype.Initialize = function (def) { + this.m_step.Copy(def.step); + this.m_allocator = def.allocator; + this.m_count = def.count; + if (this.m_positionConstraints.length < this.m_count) { + var new_length = b2Max(2 * this.m_positionConstraints.length, this.m_count); + while (this.m_positionConstraints.length < new_length) this.m_positionConstraints[this.m_positionConstraints.length] = new b2ContactPositionConstraint(); + } + if (this.m_velocityConstraints.length < this.m_count) { + var new_length = b2Max(2 * this.m_velocityConstraints.length, this.m_count); + while (this.m_velocityConstraints.length < new_length) this.m_velocityConstraints[this.m_velocityConstraints.length] = new b2ContactVelocityConstraint(); + } + this.m_positions = def.positions; + this.m_velocities = def.velocities; + this.m_contacts = def.contacts; + for (var i = 0; i < this.m_count; ++i) { + var contact = this.m_contacts[i]; + var fixtureA = contact.m_fixtureA; + var fixtureB = contact.m_fixtureB; + var shapeA = fixtureA.GetShape(); + var shapeB = fixtureB.GetShape(); + var radiusA = shapeA.m_radius; + var radiusB = shapeB.m_radius; + var bodyA = fixtureA.GetBody(); + var bodyB = fixtureB.GetBody(); + var manifold = contact.GetManifold(); + var pointCount = manifold.pointCount; + var vc = this.m_velocityConstraints[i]; + vc.friction = contact.m_friction; + vc.restitution = contact.m_restitution; + vc.tangentSpeed = contact.m_tangentSpeed; + vc.indexA = bodyA.m_islandIndex; + vc.indexB = bodyB.m_islandIndex; + vc.invMassA = bodyA.m_invMass; + vc.invMassB = bodyB.m_invMass; + vc.invIA = bodyA.m_invI; + vc.invIB = bodyB.m_invI; + vc.contactIndex = i; + vc.pointCount = pointCount; + vc.K.SetZero(); + vc.normalMass.SetZero(); + var pc = this.m_positionConstraints[i]; + pc.indexA = bodyA.m_islandIndex; + pc.indexB = bodyB.m_islandIndex; + pc.invMassA = bodyA.m_invMass; + pc.invMassB = bodyB.m_invMass; + pc.localCenterA.Copy(bodyA.m_sweep.localCenter); + pc.localCenterB.Copy(bodyB.m_sweep.localCenter); + pc.invIA = bodyA.m_invI; + pc.invIB = bodyB.m_invI; + pc.localNormal.Copy(manifold.localNormal); + pc.localPoint.Copy(manifold.localPoint); + pc.pointCount = pointCount; + pc.radiusA = radiusA; + pc.radiusB = radiusB; + pc.type = manifold.type; + for (var j = 0; j < pointCount; ++j) { + var cp = manifold.points[j]; + var vcp = vc.points[j]; + if (this.m_step.warmStarting) { + vcp.normalImpulse = this.m_step.dtRatio * cp.normalImpulse; + vcp.tangentImpulse = this.m_step.dtRatio * cp.tangentImpulse; + } else { + vcp.normalImpulse = 0; + vcp.tangentImpulse = 0; + } + vcp.rA.SetZero(); + vcp.rB.SetZero(); + vcp.normalMass = 0; + vcp.tangentMass = 0; + vcp.velocityBias = 0; + pc.localPoints[j].Copy(cp.localPoint); + } + } + return this; + }; + b2ContactSolver.prototype.InitializeVelocityConstraints = function () { + var xfA = b2ContactSolver.InitializeVelocityConstraints_s_xfA; + var xfB = b2ContactSolver.InitializeVelocityConstraints_s_xfB; + var worldManifold = b2ContactSolver.InitializeVelocityConstraints_s_worldManifold; + var k_maxConditionNumber = 1e3; + for (var i = 0; i < this.m_count; ++i) { + var vc = this.m_velocityConstraints[i]; + var pc = this.m_positionConstraints[i]; + var radiusA = pc.radiusA; + var radiusB = pc.radiusB; + var manifold = this.m_contacts[vc.contactIndex].GetManifold(); + var indexA = vc.indexA; + var indexB = vc.indexB; + var mA = vc.invMassA; + var mB = vc.invMassB; + var iA = vc.invIA; + var iB = vc.invIB; + var localCenterA = pc.localCenterA; + var localCenterB = pc.localCenterB; + var cA = this.m_positions[indexA].c; + var aA = this.m_positions[indexA].a; + var vA = this.m_velocities[indexA].v; + var wA = this.m_velocities[indexA].w; + var cB = this.m_positions[indexB].c; + var aB = this.m_positions[indexB].a; + var vB = this.m_velocities[indexB].v; + var wB = this.m_velocities[indexB].w; + xfA.q.SetAngle(aA); + xfB.q.SetAngle(aB); + b2Vec2.SubVV(cA, b2Rot.MulRV(xfA.q, localCenterA, b2Vec2.s_t0), xfA.p); + b2Vec2.SubVV(cB, b2Rot.MulRV(xfB.q, localCenterB, b2Vec2.s_t0), xfB.p); + worldManifold.Initialize(manifold, xfA, radiusA, xfB, radiusB); + vc.normal.Copy(worldManifold.normal); + b2Vec2.CrossVOne(vc.normal, vc.tangent); + var pointCount = vc.pointCount; + for (var j = 0; j < pointCount; ++j) { + var vcp = vc.points[j]; + b2Vec2.SubVV(worldManifold.points[j], cA, vcp.rA); + b2Vec2.SubVV(worldManifold.points[j], cB, vcp.rB); + var rnA = b2Vec2.CrossVV(vcp.rA, vc.normal); + var rnB = b2Vec2.CrossVV(vcp.rB, vc.normal); + var kNormal = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + vcp.normalMass = kNormal > 0 ? 1 / kNormal : 0; + var tangent = vc.tangent; + var rtA = b2Vec2.CrossVV(vcp.rA, tangent); + var rtB = b2Vec2.CrossVV(vcp.rB, tangent); + var kTangent = mA + mB + iA * rtA * rtA + iB * rtB * rtB; + vcp.tangentMass = kTangent > 0 ? 1 / kTangent : 0; + vcp.velocityBias = 0; + var vRel = b2Vec2.DotVV(vc.normal, b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, vcp.rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, vcp.rA, b2Vec2.s_t1), b2Vec2.s_t0)); + vRel < -b2_velocityThreshold && (vcp.velocityBias += -vc.restitution * vRel); + } + if (2 === vc.pointCount && g_blockSolve) { + var vcp1 = vc.points[0]; + var vcp2 = vc.points[1]; + var rn1A = b2Vec2.CrossVV(vcp1.rA, vc.normal); + var rn1B = b2Vec2.CrossVV(vcp1.rB, vc.normal); + var rn2A = b2Vec2.CrossVV(vcp2.rA, vc.normal); + var rn2B = b2Vec2.CrossVV(vcp2.rB, vc.normal); + var k11 = mA + mB + iA * rn1A * rn1A + iB * rn1B * rn1B; + var k22 = mA + mB + iA * rn2A * rn2A + iB * rn2B * rn2B; + var k12 = mA + mB + iA * rn1A * rn2A + iB * rn1B * rn2B; + if (k11 * k11 < k_maxConditionNumber * (k11 * k22 - k12 * k12)) { + vc.K.ex.Set(k11, k12); + vc.K.ey.Set(k12, k22); + vc.K.GetInverse(vc.normalMass); + } else vc.pointCount = 1; + } + } + }; + b2ContactSolver.prototype.WarmStart = function () { + var P = b2ContactSolver.WarmStart_s_P; + for (var i = 0; i < this.m_count; ++i) { + var vc = this.m_velocityConstraints[i]; + var indexA = vc.indexA; + var indexB = vc.indexB; + var mA = vc.invMassA; + var iA = vc.invIA; + var mB = vc.invMassB; + var iB = vc.invIB; + var pointCount = vc.pointCount; + var vA = this.m_velocities[indexA].v; + var wA = this.m_velocities[indexA].w; + var vB = this.m_velocities[indexB].v; + var wB = this.m_velocities[indexB].w; + var normal = vc.normal; + var tangent = vc.tangent; + for (var j = 0; j < pointCount; ++j) { + var vcp = vc.points[j]; + b2Vec2.AddVV(b2Vec2.MulSV(vcp.normalImpulse, normal, b2Vec2.s_t0), b2Vec2.MulSV(vcp.tangentImpulse, tangent, b2Vec2.s_t1), P); + wA -= iA * b2Vec2.CrossVV(vcp.rA, P); + vA.SelfMulSub(mA, P); + wB += iB * b2Vec2.CrossVV(vcp.rB, P); + vB.SelfMulAdd(mB, P); + } + this.m_velocities[indexA].w = wA; + this.m_velocities[indexB].w = wB; + } + }; + b2ContactSolver.prototype.SolveVelocityConstraints = function () { + var dv = b2ContactSolver.SolveVelocityConstraints_s_dv; + var dv1 = b2ContactSolver.SolveVelocityConstraints_s_dv1; + var dv2 = b2ContactSolver.SolveVelocityConstraints_s_dv2; + var P = b2ContactSolver.SolveVelocityConstraints_s_P; + var a = b2ContactSolver.SolveVelocityConstraints_s_a; + var b = b2ContactSolver.SolveVelocityConstraints_s_b; + var x = b2ContactSolver.SolveVelocityConstraints_s_x; + var d = b2ContactSolver.SolveVelocityConstraints_s_d; + var P1 = b2ContactSolver.SolveVelocityConstraints_s_P1; + var P2 = b2ContactSolver.SolveVelocityConstraints_s_P2; + var P1P2 = b2ContactSolver.SolveVelocityConstraints_s_P1P2; + for (var i = 0; i < this.m_count; ++i) { + var vc = this.m_velocityConstraints[i]; + var indexA = vc.indexA; + var indexB = vc.indexB; + var mA = vc.invMassA; + var iA = vc.invIA; + var mB = vc.invMassB; + var iB = vc.invIB; + var pointCount = vc.pointCount; + var vA = this.m_velocities[indexA].v; + var wA = this.m_velocities[indexA].w; + var vB = this.m_velocities[indexB].v; + var wB = this.m_velocities[indexB].w; + var normal = vc.normal; + var tangent = vc.tangent; + var friction = vc.friction; + for (var j = 0; j < pointCount; ++j) { + var vcp = vc.points[j]; + b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, vcp.rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, vcp.rA, b2Vec2.s_t1), dv); + var vt = b2Vec2.DotVV(dv, tangent) - vc.tangentSpeed; + var lambda = vcp.tangentMass * -vt; + var maxFriction = friction * vcp.normalImpulse; + var newImpulse = b2Clamp(vcp.tangentImpulse + lambda, -maxFriction, maxFriction); + lambda = newImpulse - vcp.tangentImpulse; + vcp.tangentImpulse = newImpulse; + b2Vec2.MulSV(lambda, tangent, P); + vA.SelfMulSub(mA, P); + wA -= iA * b2Vec2.CrossVV(vcp.rA, P); + vB.SelfMulAdd(mB, P); + wB += iB * b2Vec2.CrossVV(vcp.rB, P); + } + if (1 === vc.pointCount || false === g_blockSolve) for (var j = 0; j < pointCount; ++j) { + var vcp = vc.points[j]; + b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, vcp.rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, vcp.rA, b2Vec2.s_t1), dv); + var vn = b2Vec2.DotVV(dv, normal); + var lambda = -vcp.normalMass * (vn - vcp.velocityBias); + var newImpulse = b2Max(vcp.normalImpulse + lambda, 0); + lambda = newImpulse - vcp.normalImpulse; + vcp.normalImpulse = newImpulse; + b2Vec2.MulSV(lambda, normal, P); + vA.SelfMulSub(mA, P); + wA -= iA * b2Vec2.CrossVV(vcp.rA, P); + vB.SelfMulAdd(mB, P); + wB += iB * b2Vec2.CrossVV(vcp.rB, P); + } else { + var cp1 = vc.points[0]; + var cp2 = vc.points[1]; + a.Set(cp1.normalImpulse, cp2.normalImpulse); + b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, cp1.rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, cp1.rA, b2Vec2.s_t1), dv1); + b2Vec2.SubVV(b2Vec2.AddVCrossSV(vB, wB, cp2.rB, b2Vec2.s_t0), b2Vec2.AddVCrossSV(vA, wA, cp2.rA, b2Vec2.s_t1), dv2); + var vn1 = b2Vec2.DotVV(dv1, normal); + var vn2 = b2Vec2.DotVV(dv2, normal); + b.x = vn1 - cp1.velocityBias; + b.y = vn2 - cp2.velocityBias; + b.SelfSub(b2Mat22.MulMV(vc.K, a, b2Vec2.s_t0)); + for (; ;) { + b2Mat22.MulMV(vc.normalMass, b, x).SelfNeg(); + if (x.x >= 0 && x.y >= 0) { + b2Vec2.SubVV(x, a, d); + b2Vec2.MulSV(d.x, normal, P1); + b2Vec2.MulSV(d.y, normal, P2); + b2Vec2.AddVV(P1, P2, P1P2); + vA.SelfMulSub(mA, P1P2); + wA -= iA * (b2Vec2.CrossVV(cp1.rA, P1) + b2Vec2.CrossVV(cp2.rA, P2)); + vB.SelfMulAdd(mB, P1P2); + wB += iB * (b2Vec2.CrossVV(cp1.rB, P1) + b2Vec2.CrossVV(cp2.rB, P2)); + cp1.normalImpulse = x.x; + cp2.normalImpulse = x.y; + break; + } + x.x = -cp1.normalMass * b.x; + x.y = 0; + vn1 = 0; + vn2 = vc.K.ex.y * x.x + b.y; + if (x.x >= 0 && vn2 >= 0) { + b2Vec2.SubVV(x, a, d); + b2Vec2.MulSV(d.x, normal, P1); + b2Vec2.MulSV(d.y, normal, P2); + b2Vec2.AddVV(P1, P2, P1P2); + vA.SelfMulSub(mA, P1P2); + wA -= iA * (b2Vec2.CrossVV(cp1.rA, P1) + b2Vec2.CrossVV(cp2.rA, P2)); + vB.SelfMulAdd(mB, P1P2); + wB += iB * (b2Vec2.CrossVV(cp1.rB, P1) + b2Vec2.CrossVV(cp2.rB, P2)); + cp1.normalImpulse = x.x; + cp2.normalImpulse = x.y; + break; + } + x.x = 0; + x.y = -cp2.normalMass * b.y; + vn1 = vc.K.ey.x * x.y + b.x; + vn2 = 0; + if (x.y >= 0 && vn1 >= 0) { + b2Vec2.SubVV(x, a, d); + b2Vec2.MulSV(d.x, normal, P1); + b2Vec2.MulSV(d.y, normal, P2); + b2Vec2.AddVV(P1, P2, P1P2); + vA.SelfMulSub(mA, P1P2); + wA -= iA * (b2Vec2.CrossVV(cp1.rA, P1) + b2Vec2.CrossVV(cp2.rA, P2)); + vB.SelfMulAdd(mB, P1P2); + wB += iB * (b2Vec2.CrossVV(cp1.rB, P1) + b2Vec2.CrossVV(cp2.rB, P2)); + cp1.normalImpulse = x.x; + cp2.normalImpulse = x.y; + break; + } + x.x = 0; + x.y = 0; + vn1 = b.x; + vn2 = b.y; + if (vn1 >= 0 && vn2 >= 0) { + b2Vec2.SubVV(x, a, d); + b2Vec2.MulSV(d.x, normal, P1); + b2Vec2.MulSV(d.y, normal, P2); + b2Vec2.AddVV(P1, P2, P1P2); + vA.SelfMulSub(mA, P1P2); + wA -= iA * (b2Vec2.CrossVV(cp1.rA, P1) + b2Vec2.CrossVV(cp2.rA, P2)); + vB.SelfMulAdd(mB, P1P2); + wB += iB * (b2Vec2.CrossVV(cp1.rB, P1) + b2Vec2.CrossVV(cp2.rB, P2)); + cp1.normalImpulse = x.x; + cp2.normalImpulse = x.y; + break; + } + break; + } + } + this.m_velocities[indexA].w = wA; + this.m_velocities[indexB].w = wB; + } + }; + b2ContactSolver.prototype.StoreImpulses = function () { + for (var i = 0; i < this.m_count; ++i) { + var vc = this.m_velocityConstraints[i]; + var manifold = this.m_contacts[vc.contactIndex].GetManifold(); + for (var j = 0; j < vc.pointCount; ++j) { + manifold.points[j].normalImpulse = vc.points[j].normalImpulse; + manifold.points[j].tangentImpulse = vc.points[j].tangentImpulse; + } + } + }; + b2ContactSolver.prototype.SolvePositionConstraints = function () { + var xfA = b2ContactSolver.SolvePositionConstraints_s_xfA; + var xfB = b2ContactSolver.SolvePositionConstraints_s_xfB; + var psm = b2ContactSolver.SolvePositionConstraints_s_psm; + var rA = b2ContactSolver.SolvePositionConstraints_s_rA; + var rB = b2ContactSolver.SolvePositionConstraints_s_rB; + var P = b2ContactSolver.SolvePositionConstraints_s_P; + var minSeparation = 0; + for (var i = 0; i < this.m_count; ++i) { + var pc = this.m_positionConstraints[i]; + var indexA = pc.indexA; + var indexB = pc.indexB; + var localCenterA = pc.localCenterA; + var mA = pc.invMassA; + var iA = pc.invIA; + var localCenterB = pc.localCenterB; + var mB = pc.invMassB; + var iB = pc.invIB; + var pointCount = pc.pointCount; + var cA = this.m_positions[indexA].c; + var aA = this.m_positions[indexA].a; + var cB = this.m_positions[indexB].c; + var aB = this.m_positions[indexB].a; + for (var j = 0; j < pointCount; ++j) { + xfA.q.SetAngle(aA); + xfB.q.SetAngle(aB); + b2Vec2.SubVV(cA, b2Rot.MulRV(xfA.q, localCenterA, b2Vec2.s_t0), xfA.p); + b2Vec2.SubVV(cB, b2Rot.MulRV(xfB.q, localCenterB, b2Vec2.s_t0), xfB.p); + psm.Initialize(pc, xfA, xfB, j); + var normal = psm.normal; + var point = psm.point; + var separation = psm.separation; + b2Vec2.SubVV(point, cA, rA); + b2Vec2.SubVV(point, cB, rB); + minSeparation = b2Min(minSeparation, separation); + var C = b2Clamp(b2_baumgarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0); + var rnA = b2Vec2.CrossVV(rA, normal); + var rnB = b2Vec2.CrossVV(rB, normal); + var K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + var impulse = K > 0 ? -C / K : 0; + b2Vec2.MulSV(impulse, normal, P); + cA.SelfMulSub(mA, P); + aA -= iA * b2Vec2.CrossVV(rA, P); + cB.SelfMulAdd(mB, P); + aB += iB * b2Vec2.CrossVV(rB, P); + } + this.m_positions[indexA].a = aA; + this.m_positions[indexB].a = aB; + } + return minSeparation > -3 * b2_linearSlop; + }; + b2ContactSolver.prototype.SolveTOIPositionConstraints = function (toiIndexA, toiIndexB) { + var xfA = b2ContactSolver.SolveTOIPositionConstraints_s_xfA; + var xfB = b2ContactSolver.SolveTOIPositionConstraints_s_xfB; + var psm = b2ContactSolver.SolveTOIPositionConstraints_s_psm; + var rA = b2ContactSolver.SolveTOIPositionConstraints_s_rA; + var rB = b2ContactSolver.SolveTOIPositionConstraints_s_rB; + var P = b2ContactSolver.SolveTOIPositionConstraints_s_P; + var minSeparation = 0; + for (var i = 0; i < this.m_count; ++i) { + var pc = this.m_positionConstraints[i]; + var indexA = pc.indexA; + var indexB = pc.indexB; + var localCenterA = pc.localCenterA; + var localCenterB = pc.localCenterB; + var pointCount = pc.pointCount; + var mA = 0; + var iA = 0; + if (indexA === toiIndexA || indexA === toiIndexB) { + mA = pc.invMassA; + iA = pc.invIA; + } + var mB = 0; + var iB = 0; + if (indexB === toiIndexA || indexB === toiIndexB) { + mB = pc.invMassB; + iB = pc.invIB; + } + var cA = this.m_positions[indexA].c; + var aA = this.m_positions[indexA].a; + var cB = this.m_positions[indexB].c; + var aB = this.m_positions[indexB].a; + for (var j = 0; j < pointCount; ++j) { + xfA.q.SetAngle(aA); + xfB.q.SetAngle(aB); + b2Vec2.SubVV(cA, b2Rot.MulRV(xfA.q, localCenterA, b2Vec2.s_t0), xfA.p); + b2Vec2.SubVV(cB, b2Rot.MulRV(xfB.q, localCenterB, b2Vec2.s_t0), xfB.p); + psm.Initialize(pc, xfA, xfB, j); + var normal = psm.normal; + var point = psm.point; + var separation = psm.separation; + b2Vec2.SubVV(point, cA, rA); + b2Vec2.SubVV(point, cB, rB); + minSeparation = b2Min(minSeparation, separation); + var C = b2Clamp(b2_toiBaumgarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0); + var rnA = b2Vec2.CrossVV(rA, normal); + var rnB = b2Vec2.CrossVV(rB, normal); + var K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + var impulse = K > 0 ? -C / K : 0; + b2Vec2.MulSV(impulse, normal, P); + cA.SelfMulSub(mA, P); + aA -= iA * b2Vec2.CrossVV(rA, P); + cB.SelfMulAdd(mB, P); + aB += iB * b2Vec2.CrossVV(rB, P); + } + this.m_positions[indexA].a = aA; + this.m_positions[indexB].a = aB; + } + return minSeparation >= -1.5 * b2_linearSlop; + }; + b2ContactSolver.InitializeVelocityConstraints_s_xfA = new b2Transform(); + b2ContactSolver.InitializeVelocityConstraints_s_xfB = new b2Transform(); + b2ContactSolver.InitializeVelocityConstraints_s_worldManifold = new b2WorldManifold(); + b2ContactSolver.WarmStart_s_P = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_dv = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_dv1 = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_dv2 = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_P = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_a = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_b = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_x = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_d = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_P1 = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_P2 = new b2Vec2(); + b2ContactSolver.SolveVelocityConstraints_s_P1P2 = new b2Vec2(); + b2ContactSolver.SolvePositionConstraints_s_xfA = new b2Transform(); + b2ContactSolver.SolvePositionConstraints_s_xfB = new b2Transform(); + b2ContactSolver.SolvePositionConstraints_s_psm = new b2PositionSolverManifold(); + b2ContactSolver.SolvePositionConstraints_s_rA = new b2Vec2(); + b2ContactSolver.SolvePositionConstraints_s_rB = new b2Vec2(); + b2ContactSolver.SolvePositionConstraints_s_P = new b2Vec2(); + b2ContactSolver.SolveTOIPositionConstraints_s_xfA = new b2Transform(); + b2ContactSolver.SolveTOIPositionConstraints_s_xfB = new b2Transform(); + b2ContactSolver.SolveTOIPositionConstraints_s_psm = new b2PositionSolverManifold(); + b2ContactSolver.SolveTOIPositionConstraints_s_rA = new b2Vec2(); + b2ContactSolver.SolveTOIPositionConstraints_s_rB = new b2Vec2(); + b2ContactSolver.SolveTOIPositionConstraints_s_P = new b2Vec2(); + return b2ContactSolver; + })(); + var b2Island = (function () { + function b2Island() { + this.m_allocator = null; + this.m_bodies = []; + this.m_contacts = []; + this.m_joints = []; + this.m_positions = b2Position.MakeArray(1024); + this.m_velocities = b2Velocity.MakeArray(1024); + this.m_bodyCount = 0; + this.m_jointCount = 0; + this.m_contactCount = 0; + this.m_bodyCapacity = 0; + this.m_contactCapacity = 0; + this.m_jointCapacity = 0; + } + b2Island.prototype.Initialize = function (bodyCapacity, contactCapacity, jointCapacity, allocator, listener) { + this.m_bodyCapacity = bodyCapacity; + this.m_contactCapacity = contactCapacity; + this.m_jointCapacity = jointCapacity; + this.m_bodyCount = 0; + this.m_contactCount = 0; + this.m_jointCount = 0; + this.m_allocator = allocator; + this.m_listener = listener; + if (this.m_positions.length < bodyCapacity) { + var new_length = b2Max(2 * this.m_positions.length, bodyCapacity); + while (this.m_positions.length < new_length) this.m_positions[this.m_positions.length] = new b2Position(); + } + if (this.m_velocities.length < bodyCapacity) { + var new_length = b2Max(2 * this.m_velocities.length, bodyCapacity); + while (this.m_velocities.length < new_length) this.m_velocities[this.m_velocities.length] = new b2Velocity(); + } + }; + b2Island.prototype.Clear = function () { + this.m_bodyCount = 0; + this.m_contactCount = 0; + this.m_jointCount = 0; + }; + b2Island.prototype.AddBody = function (body) { + body.m_islandIndex = this.m_bodyCount; + this.m_bodies[this.m_bodyCount++] = body; + }; + b2Island.prototype.AddContact = function (contact) { + this.m_contacts[this.m_contactCount++] = contact; + }; + b2Island.prototype.AddJoint = function (joint) { + this.m_joints[this.m_jointCount++] = joint; + }; + b2Island.prototype.Solve = function (profile, step, gravity, allowSleep) { + var timer = b2Island.s_timer.Reset(); + var h = step.dt; + for (var i = 0; i < this.m_bodyCount; ++i) { + var b = this.m_bodies[i]; + this.m_positions[i].c.Copy(b.m_sweep.c); + var a = b.m_sweep.a; + var v = this.m_velocities[i].v.Copy(b.m_linearVelocity); + var w = b.m_angularVelocity; + b.m_sweep.c0.Copy(b.m_sweep.c); + b.m_sweep.a0 = b.m_sweep.a; + if (b.m_type === exports.b2BodyType.b2_dynamicBody) { + v.x += h * (b.m_gravityScale * gravity.x + b.m_invMass * b.m_force.x); + v.y += h * (b.m_gravityScale * gravity.y + b.m_invMass * b.m_force.y); + w += h * b.m_invI * b.m_torque; + v.SelfMul(1 / (1 + h * b.m_linearDamping)); + w *= 1 / (1 + h * b.m_angularDamping); + } + this.m_positions[i].a = a; + this.m_velocities[i].w = w; + } + timer.Reset(); + var solverData = b2Island.s_solverData; + solverData.step.Copy(step); + solverData.positions = this.m_positions; + solverData.velocities = this.m_velocities; + var contactSolverDef = b2Island.s_contactSolverDef; + contactSolverDef.step.Copy(step); + contactSolverDef.contacts = this.m_contacts; + contactSolverDef.count = this.m_contactCount; + contactSolverDef.positions = this.m_positions; + contactSolverDef.velocities = this.m_velocities; + contactSolverDef.allocator = this.m_allocator; + var contactSolver = b2Island.s_contactSolver.Initialize(contactSolverDef); + contactSolver.InitializeVelocityConstraints(); + step.warmStarting && contactSolver.WarmStart(); + for (var i = 0; i < this.m_jointCount; ++i) this.m_joints[i].InitVelocityConstraints(solverData); + profile.solveInit = timer.GetMilliseconds(); + timer.Reset(); + for (var i = 0; i < step.velocityIterations; ++i) { + for (var j = 0; j < this.m_jointCount; ++j) this.m_joints[j].SolveVelocityConstraints(solverData); + contactSolver.SolveVelocityConstraints(); + } + contactSolver.StoreImpulses(); + profile.solveVelocity = timer.GetMilliseconds(); + for (var i = 0; i < this.m_bodyCount; ++i) { + var c = this.m_positions[i].c; + var a = this.m_positions[i].a; + var v = this.m_velocities[i].v; + var w = this.m_velocities[i].w; + var translation = b2Vec2.MulSV(h, v, b2Island.s_translation); + if (b2Vec2.DotVV(translation, translation) > b2_maxTranslationSquared) { + var ratio = b2_maxTranslation / translation.Length(); + v.SelfMul(ratio); + } + var rotation = h * w; + if (rotation * rotation > b2_maxRotationSquared) { + var ratio = b2_maxRotation / b2Abs(rotation); + w *= ratio; + } + c.x += h * v.x; + c.y += h * v.y; + a += h * w; + this.m_positions[i].a = a; + this.m_velocities[i].w = w; + } + timer.Reset(); + var positionSolved = false; + for (var i = 0; i < step.positionIterations; ++i) { + var contactsOkay = contactSolver.SolvePositionConstraints(); + var jointsOkay = true; + for (var j = 0; j < this.m_jointCount; ++j) { + var jointOkay = this.m_joints[j].SolvePositionConstraints(solverData); + jointsOkay = jointsOkay && jointOkay; + } + if (contactsOkay && jointsOkay) { + positionSolved = true; + break; + } + } + for (var i = 0; i < this.m_bodyCount; ++i) { + var body = this.m_bodies[i]; + body.m_sweep.c.Copy(this.m_positions[i].c); + body.m_sweep.a = this.m_positions[i].a; + body.m_linearVelocity.Copy(this.m_velocities[i].v); + body.m_angularVelocity = this.m_velocities[i].w; + body.SynchronizeTransform(); + } + profile.solvePosition = timer.GetMilliseconds(); + this.Report(contactSolver.m_velocityConstraints); + if (allowSleep) { + var minSleepTime = b2_maxFloat; + var linTolSqr = b2_linearSleepTolerance * b2_linearSleepTolerance; + var angTolSqr = b2_angularSleepTolerance * b2_angularSleepTolerance; + for (var i = 0; i < this.m_bodyCount; ++i) { + var b = this.m_bodies[i]; + if (b.GetType() === exports.b2BodyType.b2_staticBody) continue; + if (!b.m_autoSleepFlag || b.m_angularVelocity * b.m_angularVelocity > angTolSqr || b2Vec2.DotVV(b.m_linearVelocity, b.m_linearVelocity) > linTolSqr) { + b.m_sleepTime = 0; + minSleepTime = 0; + } else { + b.m_sleepTime += h; + minSleepTime = b2Min(minSleepTime, b.m_sleepTime); + } + } + if (minSleepTime >= b2_timeToSleep && positionSolved) for (var i = 0; i < this.m_bodyCount; ++i) { + var b = this.m_bodies[i]; + b.SetAwake(false); + } + } + }; + b2Island.prototype.SolveTOI = function (subStep, toiIndexA, toiIndexB) { + for (var i = 0; i < this.m_bodyCount; ++i) { + var b = this.m_bodies[i]; + this.m_positions[i].c.Copy(b.m_sweep.c); + this.m_positions[i].a = b.m_sweep.a; + this.m_velocities[i].v.Copy(b.m_linearVelocity); + this.m_velocities[i].w = b.m_angularVelocity; + } + var contactSolverDef = b2Island.s_contactSolverDef; + contactSolverDef.contacts = this.m_contacts; + contactSolverDef.count = this.m_contactCount; + contactSolverDef.allocator = this.m_allocator; + contactSolverDef.step.Copy(subStep); + contactSolverDef.positions = this.m_positions; + contactSolverDef.velocities = this.m_velocities; + var contactSolver = b2Island.s_contactSolver.Initialize(contactSolverDef); + for (var i = 0; i < subStep.positionIterations; ++i) { + var contactsOkay = contactSolver.SolveTOIPositionConstraints(toiIndexA, toiIndexB); + if (contactsOkay) break; + } + this.m_bodies[toiIndexA].m_sweep.c0.Copy(this.m_positions[toiIndexA].c); + this.m_bodies[toiIndexA].m_sweep.a0 = this.m_positions[toiIndexA].a; + this.m_bodies[toiIndexB].m_sweep.c0.Copy(this.m_positions[toiIndexB].c); + this.m_bodies[toiIndexB].m_sweep.a0 = this.m_positions[toiIndexB].a; + contactSolver.InitializeVelocityConstraints(); + for (var i = 0; i < subStep.velocityIterations; ++i) contactSolver.SolveVelocityConstraints(); + var h = subStep.dt; + for (var i = 0; i < this.m_bodyCount; ++i) { + var c = this.m_positions[i].c; + var a = this.m_positions[i].a; + var v = this.m_velocities[i].v; + var w = this.m_velocities[i].w; + var translation = b2Vec2.MulSV(h, v, b2Island.s_translation); + if (b2Vec2.DotVV(translation, translation) > b2_maxTranslationSquared) { + var ratio = b2_maxTranslation / translation.Length(); + v.SelfMul(ratio); + } + var rotation = h * w; + if (rotation * rotation > b2_maxRotationSquared) { + var ratio = b2_maxRotation / b2Abs(rotation); + w *= ratio; + } + c.SelfMulAdd(h, v); + a += h * w; + this.m_positions[i].a = a; + this.m_velocities[i].w = w; + var body = this.m_bodies[i]; + body.m_sweep.c.Copy(c); + body.m_sweep.a = a; + body.m_linearVelocity.Copy(v); + body.m_angularVelocity = w; + body.SynchronizeTransform(); + } + this.Report(contactSolver.m_velocityConstraints); + }; + b2Island.prototype.Report = function (constraints) { + if (null === this.m_listener) return; + for (var i = 0; i < this.m_contactCount; ++i) { + var c = this.m_contacts[i]; + if (!c) continue; + var vc = constraints[i]; + var impulse = b2Island.s_impulse; + impulse.count = vc.pointCount; + for (var j = 0; j < vc.pointCount; ++j) { + impulse.normalImpulses[j] = vc.points[j].normalImpulse; + impulse.tangentImpulses[j] = vc.points[j].tangentImpulse; + } + this.m_listener.PostSolve(c, impulse); + } + }; + b2Island.s_timer = new b2Timer(); + b2Island.s_solverData = new b2SolverData(); + b2Island.s_contactSolverDef = new b2ContactSolverDef(); + b2Island.s_contactSolver = new b2ContactSolver(); + b2Island.s_translation = new b2Vec2(); + b2Island.s_impulse = new b2ContactImpulse(); + return b2Island; + })(); + (function (b2ParticleFlag) { + b2ParticleFlag[b2ParticleFlag["b2_waterParticle"] = 0] = "b2_waterParticle"; + b2ParticleFlag[b2ParticleFlag["b2_zombieParticle"] = 2] = "b2_zombieParticle"; + b2ParticleFlag[b2ParticleFlag["b2_wallParticle"] = 4] = "b2_wallParticle"; + b2ParticleFlag[b2ParticleFlag["b2_springParticle"] = 8] = "b2_springParticle"; + b2ParticleFlag[b2ParticleFlag["b2_elasticParticle"] = 16] = "b2_elasticParticle"; + b2ParticleFlag[b2ParticleFlag["b2_viscousParticle"] = 32] = "b2_viscousParticle"; + b2ParticleFlag[b2ParticleFlag["b2_powderParticle"] = 64] = "b2_powderParticle"; + b2ParticleFlag[b2ParticleFlag["b2_tensileParticle"] = 128] = "b2_tensileParticle"; + b2ParticleFlag[b2ParticleFlag["b2_colorMixingParticle"] = 256] = "b2_colorMixingParticle"; + b2ParticleFlag[b2ParticleFlag["b2_destructionListenerParticle"] = 512] = "b2_destructionListenerParticle"; + b2ParticleFlag[b2ParticleFlag["b2_barrierParticle"] = 1024] = "b2_barrierParticle"; + b2ParticleFlag[b2ParticleFlag["b2_staticPressureParticle"] = 2048] = "b2_staticPressureParticle"; + b2ParticleFlag[b2ParticleFlag["b2_reactiveParticle"] = 4096] = "b2_reactiveParticle"; + b2ParticleFlag[b2ParticleFlag["b2_repulsiveParticle"] = 8192] = "b2_repulsiveParticle"; + b2ParticleFlag[b2ParticleFlag["b2_fixtureContactListenerParticle"] = 16384] = "b2_fixtureContactListenerParticle"; + b2ParticleFlag[b2ParticleFlag["b2_particleContactListenerParticle"] = 32768] = "b2_particleContactListenerParticle"; + b2ParticleFlag[b2ParticleFlag["b2_fixtureContactFilterParticle"] = 65536] = "b2_fixtureContactFilterParticle"; + b2ParticleFlag[b2ParticleFlag["b2_particleContactFilterParticle"] = 131072] = "b2_particleContactFilterParticle"; + })(exports.b2ParticleFlag || (exports.b2ParticleFlag = {})); + var b2ParticleDef = (function () { + function b2ParticleDef() { + this.flags = 0; + this.position = new b2Vec2(); + this.velocity = new b2Vec2(); + this.color = new b2Color(0, 0, 0, 0); + this.lifetime = 0; + this.userData = null; + this.group = null; + } + return b2ParticleDef; + })(); + function b2CalculateParticleIterations(gravity, radius, timeStep) { + var B2_MAX_RECOMMENDED_PARTICLE_ITERATIONS = 8; + var B2_RADIUS_THRESHOLD = .01; + var iterations = Math.ceil(Math.sqrt(gravity / (B2_RADIUS_THRESHOLD * radius)) * timeStep); + return b2Clamp(iterations, 1, B2_MAX_RECOMMENDED_PARTICLE_ITERATIONS); + } + var b2ParticleHandle = (function () { + function b2ParticleHandle() { + this.m_index = b2_invalidParticleIndex; + } + b2ParticleHandle.prototype.GetIndex = function () { + return this.m_index; + }; + b2ParticleHandle.prototype.SetIndex = function (index) { + this.m_index = index; + }; + return b2ParticleHandle; + })(); + (function (b2ParticleGroupFlag) { + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_solidParticleGroup"] = 1] = "b2_solidParticleGroup"; + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_rigidParticleGroup"] = 2] = "b2_rigidParticleGroup"; + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_particleGroupCanBeEmpty"] = 4] = "b2_particleGroupCanBeEmpty"; + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_particleGroupWillBeDestroyed"] = 8] = "b2_particleGroupWillBeDestroyed"; + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_particleGroupNeedsUpdateDepth"] = 16] = "b2_particleGroupNeedsUpdateDepth"; + b2ParticleGroupFlag[b2ParticleGroupFlag["b2_particleGroupInternalMask"] = 24] = "b2_particleGroupInternalMask"; + })(exports.b2ParticleGroupFlag || (exports.b2ParticleGroupFlag = {})); + var b2ParticleGroupDef = (function () { + function b2ParticleGroupDef() { + this.flags = 0; + this.groupFlags = 0; + this.position = new b2Vec2(); + this.angle = 0; + this.linearVelocity = new b2Vec2(); + this.angularVelocity = 0; + this.color = new b2Color(); + this.strength = 1; + this.shapeCount = 0; + this.stride = 0; + this.particleCount = 0; + this.lifetime = 0; + this.userData = null; + this.group = null; + } + return b2ParticleGroupDef; + })(); + var b2ParticleGroup = (function () { + function b2ParticleGroup(system) { + this.m_firstIndex = 0; + this.m_lastIndex = 0; + this.m_groupFlags = 0; + this.m_strength = 1; + this.m_prev = null; + this.m_next = null; + this.m_timestamp = -1; + this.m_mass = 0; + this.m_inertia = 0; + this.m_center = new b2Vec2(); + this.m_linearVelocity = new b2Vec2(); + this.m_angularVelocity = 0; + this.m_transform = new b2Transform(); + this.m_userData = null; + this.m_system = system; + } + b2ParticleGroup.prototype.GetNext = function () { + return this.m_next; + }; + b2ParticleGroup.prototype.GetParticleSystem = function () { + return this.m_system; + }; + b2ParticleGroup.prototype.GetParticleCount = function () { + return this.m_lastIndex - this.m_firstIndex; + }; + b2ParticleGroup.prototype.GetBufferIndex = function () { + return this.m_firstIndex; + }; + b2ParticleGroup.prototype.ContainsParticle = function (index) { + return this.m_firstIndex <= index && index < this.m_lastIndex; + }; + b2ParticleGroup.prototype.GetAllParticleFlags = function () { + if (!this.m_system.m_flagsBuffer.data) throw new Error(); + var flags = 0; + for (var i = this.m_firstIndex; i < this.m_lastIndex; i++) flags |= this.m_system.m_flagsBuffer.data[i]; + return flags; + }; + b2ParticleGroup.prototype.GetGroupFlags = function () { + return this.m_groupFlags; + }; + b2ParticleGroup.prototype.SetGroupFlags = function (flags) { + flags |= this.m_groupFlags & exports.b2ParticleGroupFlag.b2_particleGroupInternalMask; + this.m_system.SetGroupFlags(this, flags); + }; + b2ParticleGroup.prototype.GetMass = function () { + this.UpdateStatistics(); + return this.m_mass; + }; + b2ParticleGroup.prototype.GetInertia = function () { + this.UpdateStatistics(); + return this.m_inertia; + }; + b2ParticleGroup.prototype.GetCenter = function () { + this.UpdateStatistics(); + return this.m_center; + }; + b2ParticleGroup.prototype.GetLinearVelocity = function () { + this.UpdateStatistics(); + return this.m_linearVelocity; + }; + b2ParticleGroup.prototype.GetAngularVelocity = function () { + this.UpdateStatistics(); + return this.m_angularVelocity; + }; + b2ParticleGroup.prototype.GetTransform = function () { + return this.m_transform; + }; + b2ParticleGroup.prototype.GetPosition = function () { + return this.m_transform.p; + }; + b2ParticleGroup.prototype.GetAngle = function () { + return this.m_transform.q.GetAngle(); + }; + b2ParticleGroup.prototype.GetLinearVelocityFromWorldPoint = function (worldPoint, out) { + var s_t0 = b2ParticleGroup.GetLinearVelocityFromWorldPoint_s_t0; + this.UpdateStatistics(); + return b2Vec2.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, b2Vec2.SubVV(worldPoint, this.m_center, s_t0), out); + }; + b2ParticleGroup.prototype.GetUserData = function () { + return this.m_userData; + }; + b2ParticleGroup.prototype.SetUserData = function (data) { + this.m_userData = data; + }; + b2ParticleGroup.prototype.ApplyForce = function (force) { + this.m_system.ApplyForce(this.m_firstIndex, this.m_lastIndex, force); + }; + b2ParticleGroup.prototype.ApplyLinearImpulse = function (impulse) { + this.m_system.ApplyLinearImpulse(this.m_firstIndex, this.m_lastIndex, impulse); + }; + b2ParticleGroup.prototype.DestroyParticles = function (callDestructionListener) { + if (this.m_system.m_world.IsLocked()) throw new Error(); + for (var i = this.m_firstIndex; i < this.m_lastIndex; i++) this.m_system.DestroyParticle(i, callDestructionListener); + }; + b2ParticleGroup.prototype.UpdateStatistics = function () { + if (!this.m_system.m_positionBuffer.data) throw new Error(); + if (!this.m_system.m_velocityBuffer.data) throw new Error(); + var p = new b2Vec2(); + var v = new b2Vec2(); + if (this.m_timestamp !== this.m_system.m_timestamp) { + var m = this.m_system.GetParticleMass(); + this.m_mass = m * (this.m_lastIndex - this.m_firstIndex); + this.m_center.SetZero(); + this.m_linearVelocity.SetZero(); + for (var i = this.m_firstIndex; i < this.m_lastIndex; i++) { + this.m_center.SelfMulAdd(m, this.m_system.m_positionBuffer.data[i]); + this.m_linearVelocity.SelfMulAdd(m, this.m_system.m_velocityBuffer.data[i]); + } + if (this.m_mass > 0) { + var inv_mass = 1 / this.m_mass; + this.m_center.SelfMul(inv_mass); + this.m_linearVelocity.SelfMul(inv_mass); + } + this.m_inertia = 0; + this.m_angularVelocity = 0; + for (var i = this.m_firstIndex; i < this.m_lastIndex; i++) { + b2Vec2.SubVV(this.m_system.m_positionBuffer.data[i], this.m_center, p); + b2Vec2.SubVV(this.m_system.m_velocityBuffer.data[i], this.m_linearVelocity, v); + this.m_inertia += m * b2Vec2.DotVV(p, p); + this.m_angularVelocity += m * b2Vec2.CrossVV(p, v); + } + this.m_inertia > 0 && (this.m_angularVelocity *= 1 / this.m_inertia); + this.m_timestamp = this.m_system.m_timestamp; + } + }; + b2ParticleGroup.GetLinearVelocityFromWorldPoint_s_t0 = new b2Vec2(); + return b2ParticleGroup; + })(); + var b2StackQueue = (function () { + function b2StackQueue(capacity) { + this.m_front = 0; + this.m_back = 0; + this.m_capacity = 0; + this.m_buffer = b2MakeArray(capacity, (function (index) { + return null; + })); + this.m_capacity = capacity; + } + b2StackQueue.prototype.Push = function (item) { + if (this.m_back >= this.m_capacity) { + for (var i = this.m_front; i < this.m_back; i++) this.m_buffer[i - this.m_front] = this.m_buffer[i]; + this.m_back -= this.m_front; + this.m_front = 0; + if (this.m_back >= this.m_capacity) if (this.m_capacity > 0) { + this.m_buffer.concat(b2MakeArray(this.m_capacity, (function (index) { + return null; + }))); + this.m_capacity *= 2; + } else { + this.m_buffer.concat(b2MakeArray(1, (function (index) { + return null; + }))); + this.m_capacity = 1; + } + } + this.m_buffer[this.m_back] = item; + this.m_back++; + }; + b2StackQueue.prototype.Pop = function () { + this.m_buffer[this.m_front] = null; + this.m_front++; + }; + b2StackQueue.prototype.Empty = function () { + return this.m_front === this.m_back; + }; + b2StackQueue.prototype.Front = function () { + var item = this.m_buffer[this.m_front]; + if (!item) throw new Error(); + return item; + }; + return b2StackQueue; + })(); + var b2VoronoiDiagram = (function () { + function b2VoronoiDiagram(generatorCapacity) { + this.m_generatorCapacity = 0; + this.m_generatorCount = 0; + this.m_countX = 0; + this.m_countY = 0; + this.m_diagram = []; + this.m_generatorBuffer = b2MakeArray(generatorCapacity, (function (index) { + return new b2VoronoiDiagram.Generator(); + })); + this.m_generatorCapacity = generatorCapacity; + } + b2VoronoiDiagram.prototype.AddGenerator = function (center, tag, necessary) { + var g = this.m_generatorBuffer[this.m_generatorCount++]; + g.center.Copy(center); + g.tag = tag; + g.necessary = necessary; + }; + b2VoronoiDiagram.prototype.Generate = function (radius, margin) { + var inverseRadius = 1 / radius; + var lower = new b2Vec2(+b2_maxFloat, +b2_maxFloat); + var upper = new b2Vec2(-b2_maxFloat, -b2_maxFloat); + var necessary_count = 0; + for (var k = 0; k < this.m_generatorCount; k++) { + var g = this.m_generatorBuffer[k]; + if (g.necessary) { + b2Vec2.MinV(lower, g.center, lower); + b2Vec2.MaxV(upper, g.center, upper); + ++necessary_count; + } + } + if (0 === necessary_count) { + this.m_countX = 0; + this.m_countY = 0; + return; + } + lower.x -= margin; + lower.y -= margin; + upper.x += margin; + upper.y += margin; + this.m_countX = 1 + Math.floor(inverseRadius * (upper.x - lower.x)); + this.m_countY = 1 + Math.floor(inverseRadius * (upper.y - lower.y)); + this.m_diagram = []; + var queue = new b2StackQueue(4 * this.m_countX * this.m_countY); + for (var k = 0; k < this.m_generatorCount; k++) { + var g = this.m_generatorBuffer[k]; + g.center.SelfSub(lower).SelfMul(inverseRadius); + var x = Math.floor(g.center.x); + var y = Math.floor(g.center.y); + x >= 0 && y >= 0 && x < this.m_countX && y < this.m_countY && queue.Push(new b2VoronoiDiagram.Task(x, y, x + y * this.m_countX, g)); + } + while (!queue.Empty()) { + var task = queue.Front(); + var x = task.m_x; + var y = task.m_y; + var i = task.m_i; + var g = task.m_generator; + queue.Pop(); + if (!this.m_diagram[i]) { + this.m_diagram[i] = g; + x > 0 && queue.Push(new b2VoronoiDiagram.Task(x - 1, y, i - 1, g)); + y > 0 && queue.Push(new b2VoronoiDiagram.Task(x, y - 1, i - this.m_countX, g)); + x < this.m_countX - 1 && queue.Push(new b2VoronoiDiagram.Task(x + 1, y, i + 1, g)); + y < this.m_countY - 1 && queue.Push(new b2VoronoiDiagram.Task(x, y + 1, i + this.m_countX, g)); + } + } + for (var y = 0; y < this.m_countY; y++) for (var x = 0; x < this.m_countX - 1; x++) { + var i = x + y * this.m_countX; + var a = this.m_diagram[i]; + var b = this.m_diagram[i + 1]; + if (a !== b) { + queue.Push(new b2VoronoiDiagram.Task(x, y, i, b)); + queue.Push(new b2VoronoiDiagram.Task(x + 1, y, i + 1, a)); + } + } + for (var y = 0; y < this.m_countY - 1; y++) for (var x = 0; x < this.m_countX; x++) { + var i = x + y * this.m_countX; + var a = this.m_diagram[i]; + var b = this.m_diagram[i + this.m_countX]; + if (a !== b) { + queue.Push(new b2VoronoiDiagram.Task(x, y, i, b)); + queue.Push(new b2VoronoiDiagram.Task(x, y + 1, i + this.m_countX, a)); + } + } + while (!queue.Empty()) { + var task = queue.Front(); + var x = task.m_x; + var y = task.m_y; + var i = task.m_i; + var k = task.m_generator; + queue.Pop(); + var a = this.m_diagram[i]; + var b = k; + if (a !== b) { + var ax = a.center.x - x; + var ay = a.center.y - y; + var bx = b.center.x - x; + var by = b.center.y - y; + var a2 = ax * ax + ay * ay; + var b2 = bx * bx + by * by; + if (a2 > b2) { + this.m_diagram[i] = b; + x > 0 && queue.Push(new b2VoronoiDiagram.Task(x - 1, y, i - 1, b)); + y > 0 && queue.Push(new b2VoronoiDiagram.Task(x, y - 1, i - this.m_countX, b)); + x < this.m_countX - 1 && queue.Push(new b2VoronoiDiagram.Task(x + 1, y, i + 1, b)); + y < this.m_countY - 1 && queue.Push(new b2VoronoiDiagram.Task(x, y + 1, i + this.m_countX, b)); + } + } + } + }; + b2VoronoiDiagram.prototype.GetNodes = function (callback) { + for (var y = 0; y < this.m_countY - 1; y++) for (var x = 0; x < this.m_countX - 1; x++) { + var i = x + y * this.m_countX; + var a = this.m_diagram[i]; + var b = this.m_diagram[i + 1]; + var c = this.m_diagram[i + this.m_countX]; + var d = this.m_diagram[i + 1 + this.m_countX]; + if (b !== c) { + a !== b && a !== c && (a.necessary || b.necessary || c.necessary) && callback(a.tag, b.tag, c.tag); + d !== b && d !== c && (a.necessary || b.necessary || c.necessary) && callback(b.tag, d.tag, c.tag); + } + } + }; + return b2VoronoiDiagram; + })(); + (function (b2VoronoiDiagram) { + var Generator = (function () { + function Generator() { + this.center = new b2Vec2(); + this.tag = 0; + this.necessary = false; + } + return Generator; + })(); + b2VoronoiDiagram.Generator = Generator; + var Task = (function () { + function Task(x, y, i, g) { + this.m_x = x; + this.m_y = y; + this.m_i = i; + this.m_generator = g; + } + return Task; + })(); + b2VoronoiDiagram.Task = Task; + })(b2VoronoiDiagram || (b2VoronoiDiagram = {})); + function std_iter_swap(array, a, b) { + var tmp = array[a]; + array[a] = array[b]; + array[b] = tmp; + } + function default_compare(a, b) { + return a < b; + } + function std_sort(array, first, len, cmp) { + void 0 === first && (first = 0); + void 0 === len && (len = array.length - first); + void 0 === cmp && (cmp = default_compare); + var left = first; + var stack = []; + var pos = 0; + for (; ;) { + for (; left + 1 < len; len++) { + var pivot = array[left + Math.floor(Math.random() * (len - left))]; + stack[pos++] = len; + for (var right = left - 1; ;) { + while (cmp(array[++right], pivot)); + while (cmp(pivot, array[--len])); + if (right >= len) break; + std_iter_swap(array, right, len); + } + } + if (0 === pos) break; + left = len; + len = stack[--pos]; + } + return array; + } + function std_stable_sort(array, first, len, cmp) { + void 0 === first && (first = 0); + void 0 === len && (len = array.length - first); + void 0 === cmp && (cmp = default_compare); + return std_sort(array, first, len, cmp); + } + function std_remove_if(array, predicate, length) { + void 0 === length && (length = array.length); + var l = 0; + for (var c = 0; c < length; ++c) { + if (predicate(array[c])) continue; + if (c === l) { + ++l; + continue; + } + std_iter_swap(array, l++, c); + } + return l; + } + function std_lower_bound(array, first, last, val, cmp) { + void 0 === cmp && (cmp = default_compare); + var count = last - first; + while (count > 0) { + var step = Math.floor(count / 2); + var it = first + step; + if (cmp(array[it], val)) { + first = ++it; + count -= step + 1; + } else count = step; + } + return first; + } + function std_upper_bound(array, first, last, val, cmp) { + void 0 === cmp && (cmp = default_compare); + var count = last - first; + while (count > 0) { + var step = Math.floor(count / 2); + var it = first + step; + if (cmp(val, array[it])) count = step; else { + first = ++it; + count -= step + 1; + } + } + return first; + } + function std_rotate(array, first, n_first, last) { + var next = n_first; + while (first !== next) { + std_iter_swap(array, first++, next++); + next === last ? next = n_first : first === n_first && (n_first = next); + } + } + function std_unique(array, first, last, cmp) { + if (first === last) return last; + var result = first; + while (++first !== last) cmp(array[result], array[first]) || std_iter_swap(array, ++result, first); + return ++result; + } + var b2GrowableBuffer = (function () { + function b2GrowableBuffer(allocator) { + this.data = []; + this.count = 0; + this.capacity = 0; + this.allocator = allocator; + } + b2GrowableBuffer.prototype.Append = function () { + this.count >= this.capacity && this.Grow(); + return this.count++; + }; + b2GrowableBuffer.prototype.Reserve = function (newCapacity) { + if (this.capacity >= newCapacity) return; + for (var i = this.capacity; i < newCapacity; ++i) this.data[i] = this.allocator(); + this.capacity = newCapacity; + }; + b2GrowableBuffer.prototype.Grow = function () { + var newCapacity = this.capacity ? 2 * this.capacity : b2_minParticleSystemBufferCapacity; + this.Reserve(newCapacity); + }; + b2GrowableBuffer.prototype.Free = function () { + if (0 === this.data.length) return; + this.data = []; + this.capacity = 0; + this.count = 0; + }; + b2GrowableBuffer.prototype.Shorten = function (newEnd) { }; + b2GrowableBuffer.prototype.Data = function () { + return this.data; + }; + b2GrowableBuffer.prototype.GetCount = function () { + return this.count; + }; + b2GrowableBuffer.prototype.SetCount = function (newCount) { + this.count = newCount; + }; + b2GrowableBuffer.prototype.GetCapacity = function () { + return this.capacity; + }; + b2GrowableBuffer.prototype.RemoveIf = function (pred) { + this.count = std_remove_if(this.data, pred, this.count); + }; + b2GrowableBuffer.prototype.Unique = function (pred) { + this.count = std_unique(this.data, 0, this.count, pred); + }; + return b2GrowableBuffer; + })(); + var b2FixtureParticleQueryCallback = (function (_super) { + __extends(b2FixtureParticleQueryCallback, _super); + function b2FixtureParticleQueryCallback(system) { + var _this = _super.call(this) || this; + _this.m_system = system; + return _this; + } + b2FixtureParticleQueryCallback.prototype.ShouldQueryParticleSystem = function (system) { + return false; + }; + b2FixtureParticleQueryCallback.prototype.ReportFixture = function (fixture) { + if (fixture.IsSensor()) return true; + var shape = fixture.GetShape(); + var childCount = shape.GetChildCount(); + for (var childIndex = 0; childIndex < childCount; childIndex++) { + var aabb = fixture.GetAABB(childIndex); + var enumerator = this.m_system.GetInsideBoundsEnumerator(aabb); + var index = void 0; + while ((index = enumerator.GetNext()) >= 0) this.ReportFixtureAndParticle(fixture, childIndex, index); + } + return true; + }; + b2FixtureParticleQueryCallback.prototype.ReportParticle = function (system, index) { + return false; + }; + b2FixtureParticleQueryCallback.prototype.ReportFixtureAndParticle = function (fixture, childIndex, index) { }; + return b2FixtureParticleQueryCallback; + })(b2QueryCallback); + var b2ParticleContact = (function () { + function b2ParticleContact() { + this.indexA = 0; + this.indexB = 0; + this.weight = 0; + this.normal = new b2Vec2(); + this.flags = 0; + } + b2ParticleContact.prototype.SetIndices = function (a, b) { + this.indexA = a; + this.indexB = b; + }; + b2ParticleContact.prototype.SetWeight = function (w) { + this.weight = w; + }; + b2ParticleContact.prototype.SetNormal = function (n) { + this.normal.Copy(n); + }; + b2ParticleContact.prototype.SetFlags = function (f) { + this.flags = f; + }; + b2ParticleContact.prototype.GetIndexA = function () { + return this.indexA; + }; + b2ParticleContact.prototype.GetIndexB = function () { + return this.indexB; + }; + b2ParticleContact.prototype.GetWeight = function () { + return this.weight; + }; + b2ParticleContact.prototype.GetNormal = function () { + return this.normal; + }; + b2ParticleContact.prototype.GetFlags = function () { + return this.flags; + }; + b2ParticleContact.prototype.IsEqual = function (rhs) { + return this.indexA === rhs.indexA && this.indexB === rhs.indexB && this.flags === rhs.flags && this.weight === rhs.weight && this.normal.x === rhs.normal.x && this.normal.y === rhs.normal.y; + }; + b2ParticleContact.prototype.IsNotEqual = function (rhs) { + return !this.IsEqual(rhs); + }; + b2ParticleContact.prototype.ApproximatelyEqual = function (rhs) { + var MAX_WEIGHT_DIFF = .01; + var MAX_NORMAL_DIFF_SQ = 1e-4; + return this.indexA === rhs.indexA && this.indexB === rhs.indexB && this.flags === rhs.flags && b2Abs(this.weight - rhs.weight) < MAX_WEIGHT_DIFF && b2Vec2.DistanceSquaredVV(this.normal, rhs.normal) < MAX_NORMAL_DIFF_SQ; + }; + return b2ParticleContact; + })(); + var b2ParticleBodyContact = (function () { + function b2ParticleBodyContact() { + this.index = 0; + this.weight = 0; + this.normal = new b2Vec2(); + this.mass = 0; + } + return b2ParticleBodyContact; + })(); + var b2ParticlePair = (function () { + function b2ParticlePair() { + this.indexA = 0; + this.indexB = 0; + this.flags = 0; + this.strength = 0; + this.distance = 0; + } + return b2ParticlePair; + })(); + var b2ParticleTriad = (function () { + function b2ParticleTriad() { + this.indexA = 0; + this.indexB = 0; + this.indexC = 0; + this.flags = 0; + this.strength = 0; + this.pa = new b2Vec2(0, 0); + this.pb = new b2Vec2(0, 0); + this.pc = new b2Vec2(0, 0); + this.ka = 0; + this.kb = 0; + this.kc = 0; + this.s = 0; + } + return b2ParticleTriad; + })(); + var b2ParticleSystemDef = (function () { + function b2ParticleSystemDef() { + this.strictContactCheck = false; + this.density = 1; + this.gravityScale = 1; + this.radius = 1; + this.maxCount = 0; + this.pressureStrength = .005; + this.dampingStrength = 1; + this.elasticStrength = .25; + this.springStrength = .25; + this.viscousStrength = .25; + this.surfaceTensionPressureStrength = .2; + this.surfaceTensionNormalStrength = .2; + this.repulsiveStrength = 1; + this.powderStrength = .5; + this.ejectionStrength = .5; + this.staticPressureStrength = .2; + this.staticPressureRelaxation = .2; + this.staticPressureIterations = 8; + this.colorMixingStrength = .5; + this.destroyByAge = true; + this.lifetimeGranularity = 1 / 60; + } + b2ParticleSystemDef.prototype.Copy = function (def) { + this.strictContactCheck = def.strictContactCheck; + this.density = def.density; + this.gravityScale = def.gravityScale; + this.radius = def.radius; + this.maxCount = def.maxCount; + this.pressureStrength = def.pressureStrength; + this.dampingStrength = def.dampingStrength; + this.elasticStrength = def.elasticStrength; + this.springStrength = def.springStrength; + this.viscousStrength = def.viscousStrength; + this.surfaceTensionPressureStrength = def.surfaceTensionPressureStrength; + this.surfaceTensionNormalStrength = def.surfaceTensionNormalStrength; + this.repulsiveStrength = def.repulsiveStrength; + this.powderStrength = def.powderStrength; + this.ejectionStrength = def.ejectionStrength; + this.staticPressureStrength = def.staticPressureStrength; + this.staticPressureRelaxation = def.staticPressureRelaxation; + this.staticPressureIterations = def.staticPressureIterations; + this.colorMixingStrength = def.colorMixingStrength; + this.destroyByAge = def.destroyByAge; + this.lifetimeGranularity = def.lifetimeGranularity; + return this; + }; + b2ParticleSystemDef.prototype.Clone = function () { + return new b2ParticleSystemDef().Copy(this); + }; + return b2ParticleSystemDef; + })(); + exports.b2ParticleSystem = (function () { + function b2ParticleSystem(def, world) { + this.m_paused = false; + this.m_timestamp = 0; + this.m_allParticleFlags = 0; + this.m_needsUpdateAllParticleFlags = false; + this.m_allGroupFlags = 0; + this.m_needsUpdateAllGroupFlags = false; + this.m_hasForce = false; + this.m_iterationIndex = 0; + this.m_inverseDensity = 0; + this.m_particleDiameter = 0; + this.m_inverseDiameter = 0; + this.m_squaredDiameter = 0; + this.m_count = 0; + this.m_internalAllocatedCapacity = 0; + this.m_handleIndexBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_flagsBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_positionBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_velocityBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_forceBuffer = []; + this.m_weightBuffer = []; + this.m_staticPressureBuffer = []; + this.m_accumulationBuffer = []; + this.m_accumulation2Buffer = []; + this.m_depthBuffer = []; + this.m_colorBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_groupBuffer = []; + this.m_userDataBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_stuckThreshold = 0; + this.m_lastBodyContactStepBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_bodyContactCountBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_consecutiveContactStepsBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_stuckParticleBuffer = new b2GrowableBuffer(function () { + return 0; + }); + this.m_proxyBuffer = new b2GrowableBuffer(function () { + return new b2ParticleSystem.Proxy(); + }); + this.m_contactBuffer = new b2GrowableBuffer(function () { + return new b2ParticleContact(); + }); + this.m_bodyContactBuffer = new b2GrowableBuffer(function () { + return new b2ParticleBodyContact(); + }); + this.m_pairBuffer = new b2GrowableBuffer(function () { + return new b2ParticlePair(); + }); + this.m_triadBuffer = new b2GrowableBuffer(function () { + return new b2ParticleTriad(); + }); + this.m_expirationTimeBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_indexByExpirationTimeBuffer = new b2ParticleSystem.UserOverridableBuffer(); + this.m_timeElapsed = 0; + this.m_expirationTimeBufferRequiresSorting = false; + this.m_groupCount = 0; + this.m_groupList = null; + this.m_def = new b2ParticleSystemDef(); + this.m_prev = null; + this.m_next = null; + this.SetStrictContactCheck(def.strictContactCheck); + this.SetDensity(def.density); + this.SetGravityScale(def.gravityScale); + this.SetRadius(def.radius); + this.SetMaxParticleCount(def.maxCount); + this.m_def = def.Clone(); + this.m_world = world; + this.SetDestructionByAge(this.m_def.destroyByAge); + } + b2ParticleSystem.computeTag = function (x, y) { + return (y + b2ParticleSystem.yOffset >>> 0 << b2ParticleSystem.yShift) + (b2ParticleSystem.xScale * x + b2ParticleSystem.xOffset >>> 0) >>> 0; + }; + b2ParticleSystem.computeRelativeTag = function (tag, x, y) { + return tag + (y << b2ParticleSystem.yShift) + (x << b2ParticleSystem.xShift) >>> 0; + }; + b2ParticleSystem.prototype.Drop = function () { + while (this.m_groupList) this.DestroyParticleGroup(this.m_groupList); + this.FreeUserOverridableBuffer(this.m_handleIndexBuffer); + this.FreeUserOverridableBuffer(this.m_flagsBuffer); + this.FreeUserOverridableBuffer(this.m_lastBodyContactStepBuffer); + this.FreeUserOverridableBuffer(this.m_bodyContactCountBuffer); + this.FreeUserOverridableBuffer(this.m_consecutiveContactStepsBuffer); + this.FreeUserOverridableBuffer(this.m_positionBuffer); + this.FreeUserOverridableBuffer(this.m_velocityBuffer); + this.FreeUserOverridableBuffer(this.m_colorBuffer); + this.FreeUserOverridableBuffer(this.m_userDataBuffer); + this.FreeUserOverridableBuffer(this.m_expirationTimeBuffer); + this.FreeUserOverridableBuffer(this.m_indexByExpirationTimeBuffer); + this.FreeBuffer(this.m_forceBuffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_weightBuffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_staticPressureBuffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_accumulationBuffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_accumulation2Buffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_depthBuffer, this.m_internalAllocatedCapacity); + this.FreeBuffer(this.m_groupBuffer, this.m_internalAllocatedCapacity); + }; + b2ParticleSystem.prototype.CreateParticle = function (def) { + if (this.m_world.IsLocked()) throw new Error(); + if (this.m_count >= this.m_internalAllocatedCapacity) { + var capacity = this.m_count ? 2 * this.m_count : b2_minParticleSystemBufferCapacity; + this.ReallocateInternalAllocatedBuffers(capacity); + } + if (this.m_count >= this.m_internalAllocatedCapacity) { + if (!this.m_def.destroyByAge) return b2_invalidParticleIndex; + this.DestroyOldestParticle(0, false); + this.SolveZombie(); + } + var index = this.m_count++; + if (!this.m_flagsBuffer.data) throw new Error(); + this.m_flagsBuffer.data[index] = 0; + this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[index] = 0); + this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[index] = 0); + this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[index] = 0); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + this.m_positionBuffer.data[index] = (this.m_positionBuffer.data[index] || new b2Vec2()).Copy(b2Maybe(def.position, b2Vec2.ZERO)); + this.m_velocityBuffer.data[index] = (this.m_velocityBuffer.data[index] || new b2Vec2()).Copy(b2Maybe(def.velocity, b2Vec2.ZERO)); + this.m_weightBuffer[index] = 0; + this.m_forceBuffer[index] = (this.m_forceBuffer[index] || new b2Vec2()).SetZero(); + this.m_staticPressureBuffer && (this.m_staticPressureBuffer[index] = 0); + this.m_depthBuffer && (this.m_depthBuffer[index] = 0); + var color = new b2Color().Copy(b2Maybe(def.color, b2Color.ZERO)); + if (this.m_colorBuffer.data || !color.IsZero()) { + this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data); + this.m_colorBuffer.data[index] = (this.m_colorBuffer.data[index] || new b2Color()).Copy(color); + } + if (this.m_userDataBuffer.data || def.userData) { + this.m_userDataBuffer.data = this.RequestBuffer(this.m_userDataBuffer.data); + this.m_userDataBuffer.data[index] = def.userData; + } + this.m_handleIndexBuffer.data && (this.m_handleIndexBuffer.data[index] = null); + var proxy = this.m_proxyBuffer.data[this.m_proxyBuffer.Append()]; + var lifetime = b2Maybe(def.lifetime, 0); + var finiteLifetime = lifetime > 0; + if (this.m_expirationTimeBuffer.data || finiteLifetime) { + this.SetParticleLifetime(index, finiteLifetime ? lifetime : this.ExpirationTimeToLifetime(-this.GetQuantizedTimeElapsed())); + if (!this.m_indexByExpirationTimeBuffer.data) throw new Error(); + this.m_indexByExpirationTimeBuffer.data[index] = index; + } + proxy.index = index; + var group = b2Maybe(def.group, null); + this.m_groupBuffer[index] = group; + if (group) if (group.m_firstIndex < group.m_lastIndex) { + this.RotateBuffer(group.m_firstIndex, group.m_lastIndex, index); + group.m_lastIndex = index + 1; + } else { + group.m_firstIndex = index; + group.m_lastIndex = index + 1; + } + this.SetParticleFlags(index, b2Maybe(def.flags, 0)); + return index; + }; + b2ParticleSystem.prototype.GetParticleHandleFromIndex = function (index) { + this.m_handleIndexBuffer.data = this.RequestBuffer(this.m_handleIndexBuffer.data); + var handle = this.m_handleIndexBuffer.data[index]; + if (handle) return handle; + handle = new b2ParticleHandle(); + handle.SetIndex(index); + this.m_handleIndexBuffer.data[index] = handle; + return handle; + }; + b2ParticleSystem.prototype.DestroyParticle = function (index, callDestructionListener) { + void 0 === callDestructionListener && (callDestructionListener = false); + if (!this.m_flagsBuffer.data) throw new Error(); + var flags = exports.b2ParticleFlag.b2_zombieParticle; + callDestructionListener && (flags |= exports.b2ParticleFlag.b2_destructionListenerParticle); + this.SetParticleFlags(index, this.m_flagsBuffer.data[index] | flags); + }; + b2ParticleSystem.prototype.DestroyOldestParticle = function (index, callDestructionListener) { + void 0 === callDestructionListener && (callDestructionListener = false); + var particleCount = this.GetParticleCount(); + if (!this.m_indexByExpirationTimeBuffer.data) throw new Error(); + if (!this.m_expirationTimeBuffer.data) throw new Error(); + var oldestFiniteLifetimeParticle = this.m_indexByExpirationTimeBuffer.data[particleCount - (index + 1)]; + var oldestInfiniteLifetimeParticle = this.m_indexByExpirationTimeBuffer.data[index]; + this.DestroyParticle(this.m_expirationTimeBuffer.data[oldestFiniteLifetimeParticle] > 0 ? oldestFiniteLifetimeParticle : oldestInfiniteLifetimeParticle, callDestructionListener); + }; + b2ParticleSystem.prototype.DestroyParticlesInShape = function (shape, xf, callDestructionListener) { + void 0 === callDestructionListener && (callDestructionListener = false); + var s_aabb = b2ParticleSystem.DestroyParticlesInShape_s_aabb; + if (this.m_world.IsLocked()) throw new Error(); + var callback = new b2ParticleSystem.DestroyParticlesInShapeCallback(this, shape, xf, callDestructionListener); + var aabb = s_aabb; + shape.ComputeAABB(aabb, xf, 0); + this.m_world.QueryAABB(callback, aabb); + return callback.Destroyed(); + }; + b2ParticleSystem.prototype.CreateParticleGroup = function (groupDef) { + var s_transform = b2ParticleSystem.CreateParticleGroup_s_transform; + if (this.m_world.IsLocked()) throw new Error(); + var transform = s_transform; + transform.SetPositionAngle(b2Maybe(groupDef.position, b2Vec2.ZERO), b2Maybe(groupDef.angle, 0)); + var firstIndex = this.m_count; + groupDef.shape && this.CreateParticlesWithShapeForGroup(groupDef.shape, groupDef, transform); + groupDef.shapes && this.CreateParticlesWithShapesForGroup(groupDef.shapes, b2Maybe(groupDef.shapeCount, groupDef.shapes.length), groupDef, transform); + if (groupDef.positionData) { + var count = b2Maybe(groupDef.particleCount, groupDef.positionData.length); + for (var i = 0; i < count; i++) { + var p = groupDef.positionData[i]; + this.CreateParticleForGroup(groupDef, transform, p); + } + } + var lastIndex = this.m_count; + var group = new b2ParticleGroup(this); + group.m_firstIndex = firstIndex; + group.m_lastIndex = lastIndex; + group.m_strength = b2Maybe(groupDef.strength, 1); + group.m_userData = groupDef.userData; + group.m_transform.Copy(transform); + group.m_prev = null; + group.m_next = this.m_groupList; + this.m_groupList && (this.m_groupList.m_prev = group); + this.m_groupList = group; + ++this.m_groupCount; + for (var i = firstIndex; i < lastIndex; i++) this.m_groupBuffer[i] = group; + this.SetGroupFlags(group, b2Maybe(groupDef.groupFlags, 0)); + var filter = new b2ParticleSystem.ConnectionFilter(); + this.UpdateContacts(true); + this.UpdatePairsAndTriads(firstIndex, lastIndex, filter); + if (groupDef.group) { + this.JoinParticleGroups(groupDef.group, group); + group = groupDef.group; + } + return group; + }; + b2ParticleSystem.prototype.JoinParticleGroups = function (groupA, groupB) { + if (this.m_world.IsLocked()) throw new Error(); + this.RotateBuffer(groupB.m_firstIndex, groupB.m_lastIndex, this.m_count); + this.RotateBuffer(groupA.m_firstIndex, groupA.m_lastIndex, groupB.m_firstIndex); + var filter = new b2ParticleSystem.JoinParticleGroupsFilter(groupB.m_firstIndex); + this.UpdateContacts(true); + this.UpdatePairsAndTriads(groupA.m_firstIndex, groupB.m_lastIndex, filter); + for (var i = groupB.m_firstIndex; i < groupB.m_lastIndex; i++) this.m_groupBuffer[i] = groupA; + var groupFlags = groupA.m_groupFlags | groupB.m_groupFlags; + this.SetGroupFlags(groupA, groupFlags); + groupA.m_lastIndex = groupB.m_lastIndex; + groupB.m_firstIndex = groupB.m_lastIndex; + this.DestroyParticleGroup(groupB); + }; + b2ParticleSystem.prototype.SplitParticleGroup = function (group) { + this.UpdateContacts(true); + var particleCount = group.GetParticleCount(); + var nodeBuffer = b2MakeArray(particleCount, (function (index) { + return new b2ParticleSystem.ParticleListNode(); + })); + b2ParticleSystem.InitializeParticleLists(group, nodeBuffer); + this.MergeParticleListsInContact(group, nodeBuffer); + var survivingList = b2ParticleSystem.FindLongestParticleList(group, nodeBuffer); + this.MergeZombieParticleListNodes(group, nodeBuffer, survivingList); + this.CreateParticleGroupsFromParticleList(group, nodeBuffer, survivingList); + this.UpdatePairsAndTriadsWithParticleList(group, nodeBuffer); + }; + b2ParticleSystem.prototype.GetParticleGroupList = function () { + return this.m_groupList; + }; + b2ParticleSystem.prototype.GetParticleGroupCount = function () { + return this.m_groupCount; + }; + b2ParticleSystem.prototype.GetParticleCount = function () { + return this.m_count; + }; + b2ParticleSystem.prototype.GetMaxParticleCount = function () { + return this.m_def.maxCount; + }; + b2ParticleSystem.prototype.SetMaxParticleCount = function (count) { + this.m_def.maxCount = count; + }; + b2ParticleSystem.prototype.GetAllParticleFlags = function () { + return this.m_allParticleFlags; + }; + b2ParticleSystem.prototype.GetAllGroupFlags = function () { + return this.m_allGroupFlags; + }; + b2ParticleSystem.prototype.SetPaused = function (paused) { + this.m_paused = paused; + }; + b2ParticleSystem.prototype.GetPaused = function () { + return this.m_paused; + }; + b2ParticleSystem.prototype.SetDensity = function (density) { + this.m_def.density = density; + this.m_inverseDensity = 1 / this.m_def.density; + }; + b2ParticleSystem.prototype.GetDensity = function () { + return this.m_def.density; + }; + b2ParticleSystem.prototype.SetGravityScale = function (gravityScale) { + this.m_def.gravityScale = gravityScale; + }; + b2ParticleSystem.prototype.GetGravityScale = function () { + return this.m_def.gravityScale; + }; + b2ParticleSystem.prototype.SetDamping = function (damping) { + this.m_def.dampingStrength = damping; + }; + b2ParticleSystem.prototype.GetDamping = function () { + return this.m_def.dampingStrength; + }; + b2ParticleSystem.prototype.SetStaticPressureIterations = function (iterations) { + this.m_def.staticPressureIterations = iterations; + }; + b2ParticleSystem.prototype.GetStaticPressureIterations = function () { + return this.m_def.staticPressureIterations; + }; + b2ParticleSystem.prototype.SetRadius = function (radius) { + this.m_particleDiameter = 2 * radius; + this.m_squaredDiameter = this.m_particleDiameter * this.m_particleDiameter; + this.m_inverseDiameter = 1 / this.m_particleDiameter; + }; + b2ParticleSystem.prototype.GetRadius = function () { + return this.m_particleDiameter / 2; + }; + b2ParticleSystem.prototype.GetPositionBuffer = function () { + if (!this.m_positionBuffer.data) throw new Error(); + return this.m_positionBuffer.data; + }; + b2ParticleSystem.prototype.GetVelocityBuffer = function () { + if (!this.m_velocityBuffer.data) throw new Error(); + return this.m_velocityBuffer.data; + }; + b2ParticleSystem.prototype.GetColorBuffer = function () { + this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data); + return this.m_colorBuffer.data; + }; + b2ParticleSystem.prototype.GetGroupBuffer = function () { + return this.m_groupBuffer; + }; + b2ParticleSystem.prototype.GetWeightBuffer = function () { + return this.m_weightBuffer; + }; + b2ParticleSystem.prototype.GetUserDataBuffer = function () { + this.m_userDataBuffer.data = this.RequestBuffer(this.m_userDataBuffer.data); + return this.m_userDataBuffer.data; + }; + b2ParticleSystem.prototype.GetFlagsBuffer = function () { + if (!this.m_flagsBuffer.data) throw new Error(); + return this.m_flagsBuffer.data; + }; + b2ParticleSystem.prototype.SetParticleFlags = function (index, newFlags) { + if (!this.m_flagsBuffer.data) throw new Error(); + var oldFlags = this.m_flagsBuffer.data[index]; + oldFlags & ~newFlags && (this.m_needsUpdateAllParticleFlags = true); + if (~this.m_allParticleFlags & newFlags) { + newFlags & exports.b2ParticleFlag.b2_tensileParticle && (this.m_accumulation2Buffer = this.RequestBuffer(this.m_accumulation2Buffer)); + newFlags & exports.b2ParticleFlag.b2_colorMixingParticle && (this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data)); + this.m_allParticleFlags |= newFlags; + } + this.m_flagsBuffer.data[index] = newFlags; + }; + b2ParticleSystem.prototype.GetParticleFlags = function (index) { + if (!this.m_flagsBuffer.data) throw new Error(); + return this.m_flagsBuffer.data[index]; + }; + b2ParticleSystem.prototype.SetFlagsBuffer = function (buffer, capacity) { + this.SetUserOverridableBuffer(this.m_flagsBuffer, buffer, capacity); + }; + b2ParticleSystem.prototype.SetPositionBuffer = function (buffer, capacity) { + this.SetUserOverridableBuffer(this.m_positionBuffer, buffer, capacity); + }; + b2ParticleSystem.prototype.SetVelocityBuffer = function (buffer, capacity) { + this.SetUserOverridableBuffer(this.m_velocityBuffer, buffer, capacity); + }; + b2ParticleSystem.prototype.SetColorBuffer = function (buffer, capacity) { + this.SetUserOverridableBuffer(this.m_colorBuffer, buffer, capacity); + }; + b2ParticleSystem.prototype.SetUserDataBuffer = function (buffer, capacity) { + this.SetUserOverridableBuffer(this.m_userDataBuffer, buffer, capacity); + }; + b2ParticleSystem.prototype.GetContacts = function () { + return this.m_contactBuffer.data; + }; + b2ParticleSystem.prototype.GetContactCount = function () { + return this.m_contactBuffer.count; + }; + b2ParticleSystem.prototype.GetBodyContacts = function () { + return this.m_bodyContactBuffer.data; + }; + b2ParticleSystem.prototype.GetBodyContactCount = function () { + return this.m_bodyContactBuffer.count; + }; + b2ParticleSystem.prototype.GetPairs = function () { + return this.m_pairBuffer.data; + }; + b2ParticleSystem.prototype.GetPairCount = function () { + return this.m_pairBuffer.count; + }; + b2ParticleSystem.prototype.GetTriads = function () { + return this.m_triadBuffer.data; + }; + b2ParticleSystem.prototype.GetTriadCount = function () { + return this.m_triadBuffer.count; + }; + b2ParticleSystem.prototype.SetStuckThreshold = function (steps) { + this.m_stuckThreshold = steps; + if (steps > 0) { + this.m_lastBodyContactStepBuffer.data = this.RequestBuffer(this.m_lastBodyContactStepBuffer.data); + this.m_bodyContactCountBuffer.data = this.RequestBuffer(this.m_bodyContactCountBuffer.data); + this.m_consecutiveContactStepsBuffer.data = this.RequestBuffer(this.m_consecutiveContactStepsBuffer.data); + } + }; + b2ParticleSystem.prototype.GetStuckCandidates = function () { + return this.m_stuckParticleBuffer.Data(); + }; + b2ParticleSystem.prototype.GetStuckCandidateCount = function () { + return this.m_stuckParticleBuffer.GetCount(); + }; + b2ParticleSystem.prototype.ComputeCollisionEnergy = function () { + if (!this.m_velocityBuffer.data) throw new Error(); + var s_v = b2ParticleSystem.ComputeCollisionEnergy_s_v; + var vel_data = this.m_velocityBuffer.data; + var sum_v2 = 0; + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var n = contact.normal; + var v = b2Vec2.SubVV(vel_data[b], vel_data[a], s_v); + var vn = b2Vec2.DotVV(v, n); + vn < 0 && (sum_v2 += vn * vn); + } + return .5 * this.GetParticleMass() * sum_v2; + }; + b2ParticleSystem.prototype.SetStrictContactCheck = function (enabled) { + this.m_def.strictContactCheck = enabled; + }; + b2ParticleSystem.prototype.GetStrictContactCheck = function () { + return this.m_def.strictContactCheck; + }; + b2ParticleSystem.prototype.SetParticleLifetime = function (index, lifetime) { + var initializeExpirationTimes = null === this.m_indexByExpirationTimeBuffer.data; + this.m_expirationTimeBuffer.data = this.RequestBuffer(this.m_expirationTimeBuffer.data); + this.m_indexByExpirationTimeBuffer.data = this.RequestBuffer(this.m_indexByExpirationTimeBuffer.data); + if (initializeExpirationTimes) { + var particleCount = this.GetParticleCount(); + for (var i = 0; i < particleCount; ++i) this.m_indexByExpirationTimeBuffer.data[i] = i; + } + var quantizedLifetime = lifetime / this.m_def.lifetimeGranularity; + var newExpirationTime = quantizedLifetime > 0 ? this.GetQuantizedTimeElapsed() + quantizedLifetime : quantizedLifetime; + if (newExpirationTime !== this.m_expirationTimeBuffer.data[index]) { + this.m_expirationTimeBuffer.data[index] = newExpirationTime; + this.m_expirationTimeBufferRequiresSorting = true; + } + }; + b2ParticleSystem.prototype.GetParticleLifetime = function (index) { + return this.ExpirationTimeToLifetime(this.GetExpirationTimeBuffer()[index]); + }; + b2ParticleSystem.prototype.SetDestructionByAge = function (enable) { + enable && this.GetExpirationTimeBuffer(); + this.m_def.destroyByAge = enable; + }; + b2ParticleSystem.prototype.GetDestructionByAge = function () { + return this.m_def.destroyByAge; + }; + b2ParticleSystem.prototype.GetExpirationTimeBuffer = function () { + this.m_expirationTimeBuffer.data = this.RequestBuffer(this.m_expirationTimeBuffer.data); + return this.m_expirationTimeBuffer.data; + }; + b2ParticleSystem.prototype.ExpirationTimeToLifetime = function (expirationTime) { + return (expirationTime > 0 ? expirationTime - this.GetQuantizedTimeElapsed() : expirationTime) * this.m_def.lifetimeGranularity; + }; + b2ParticleSystem.prototype.GetIndexByExpirationTimeBuffer = function () { + this.GetParticleCount() ? this.SetParticleLifetime(0, this.GetParticleLifetime(0)) : this.m_indexByExpirationTimeBuffer.data = this.RequestBuffer(this.m_indexByExpirationTimeBuffer.data); + if (!this.m_indexByExpirationTimeBuffer.data) throw new Error(); + return this.m_indexByExpirationTimeBuffer.data; + }; + b2ParticleSystem.prototype.ParticleApplyLinearImpulse = function (index, impulse) { + this.ApplyLinearImpulse(index, index + 1, impulse); + }; + b2ParticleSystem.prototype.ApplyLinearImpulse = function (firstIndex, lastIndex, impulse) { + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + var numParticles = lastIndex - firstIndex; + var totalMass = numParticles * this.GetParticleMass(); + var velocityDelta = new b2Vec2().Copy(impulse).SelfMul(1 / totalMass); + for (var i = firstIndex; i < lastIndex; i++) vel_data[i].SelfAdd(velocityDelta); + }; + b2ParticleSystem.IsSignificantForce = function (force) { + return 0 !== force.x || 0 !== force.y; + }; + b2ParticleSystem.prototype.ParticleApplyForce = function (index, force) { + if (!this.m_flagsBuffer.data) throw new Error(); + if (b2ParticleSystem.IsSignificantForce(force) && this.ForceCanBeApplied(this.m_flagsBuffer.data[index])) { + this.PrepareForceBuffer(); + this.m_forceBuffer[index].SelfAdd(force); + } + }; + b2ParticleSystem.prototype.ApplyForce = function (firstIndex, lastIndex, force) { + var distributedForce = new b2Vec2().Copy(force).SelfMul(1 / (lastIndex - firstIndex)); + if (b2ParticleSystem.IsSignificantForce(distributedForce)) { + this.PrepareForceBuffer(); + for (var i = firstIndex; i < lastIndex; i++) this.m_forceBuffer[i].SelfAdd(distributedForce); + } + }; + b2ParticleSystem.prototype.GetNext = function () { + return this.m_next; + }; + b2ParticleSystem.prototype.QueryAABB = function (callback, aabb) { + if (0 === this.m_proxyBuffer.count) return; + var beginProxy = 0; + var endProxy = this.m_proxyBuffer.count; + var firstProxy = std_lower_bound(this.m_proxyBuffer.data, beginProxy, endProxy, b2ParticleSystem.computeTag(this.m_inverseDiameter * aabb.lowerBound.x, this.m_inverseDiameter * aabb.lowerBound.y), b2ParticleSystem.Proxy.CompareProxyTag); + var lastProxy = std_upper_bound(this.m_proxyBuffer.data, firstProxy, endProxy, b2ParticleSystem.computeTag(this.m_inverseDiameter * aabb.upperBound.x, this.m_inverseDiameter * aabb.upperBound.y), b2ParticleSystem.Proxy.CompareTagProxy); + if (!this.m_positionBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + for (var k = firstProxy; k < lastProxy; ++k) { + var proxy = this.m_proxyBuffer.data[k]; + var i = proxy.index; + var p = pos_data[i]; + if (aabb.lowerBound.x < p.x && p.x < aabb.upperBound.x && aabb.lowerBound.y < p.y && p.y < aabb.upperBound.y && !callback.ReportParticle(this, i)) break; + } + }; + b2ParticleSystem.prototype.QueryShapeAABB = function (callback, shape, xf, childIndex) { + void 0 === childIndex && (childIndex = 0); + var s_aabb = b2ParticleSystem.QueryShapeAABB_s_aabb; + var aabb = s_aabb; + shape.ComputeAABB(aabb, xf, childIndex); + this.QueryAABB(callback, aabb); + }; + b2ParticleSystem.prototype.QueryPointAABB = function (callback, point, slop) { + void 0 === slop && (slop = b2_linearSlop); + var s_aabb = b2ParticleSystem.QueryPointAABB_s_aabb; + var aabb = s_aabb; + aabb.lowerBound.Set(point.x - slop, point.y - slop); + aabb.upperBound.Set(point.x + slop, point.y + slop); + this.QueryAABB(callback, aabb); + }; + b2ParticleSystem.prototype.RayCast = function (callback, point1, point2) { + var s_aabb = b2ParticleSystem.RayCast_s_aabb; + var s_p = b2ParticleSystem.RayCast_s_p; + var s_v = b2ParticleSystem.RayCast_s_v; + var s_n = b2ParticleSystem.RayCast_s_n; + var s_point = b2ParticleSystem.RayCast_s_point; + if (0 === this.m_proxyBuffer.count) return; + if (!this.m_positionBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var aabb = s_aabb; + b2Vec2.MinV(point1, point2, aabb.lowerBound); + b2Vec2.MaxV(point1, point2, aabb.upperBound); + var fraction = 1; + var v = b2Vec2.SubVV(point2, point1, s_v); + var v2 = b2Vec2.DotVV(v, v); + var enumerator = this.GetInsideBoundsEnumerator(aabb); + var i; + while ((i = enumerator.GetNext()) >= 0) { + var p = b2Vec2.SubVV(point1, pos_data[i], s_p); + var pv = b2Vec2.DotVV(p, v); + var p2 = b2Vec2.DotVV(p, p); + var determinant = pv * pv - v2 * (p2 - this.m_squaredDiameter); + if (determinant >= 0) { + var sqrtDeterminant = b2Sqrt(determinant); + var t = (-pv - sqrtDeterminant) / v2; + if (t > fraction) continue; + if (t < 0) { + t = (-pv + sqrtDeterminant) / v2; + if (t < 0 || t > fraction) continue; + } + var n = b2Vec2.AddVMulSV(p, t, v, s_n); + n.Normalize(); + var f = callback.ReportParticle(this, i, b2Vec2.AddVMulSV(point1, t, v, s_point), n, t); + fraction = b2Min(fraction, f); + if (fraction <= 0) break; + } + } + }; + b2ParticleSystem.prototype.ComputeAABB = function (aabb) { + var particleCount = this.GetParticleCount(); + aabb.lowerBound.x = +b2_maxFloat; + aabb.lowerBound.y = +b2_maxFloat; + aabb.upperBound.x = -b2_maxFloat; + aabb.upperBound.y = -b2_maxFloat; + if (!this.m_positionBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + for (var i = 0; i < particleCount; i++) { + var p = pos_data[i]; + b2Vec2.MinV(aabb.lowerBound, p, aabb.lowerBound); + b2Vec2.MaxV(aabb.upperBound, p, aabb.upperBound); + } + aabb.lowerBound.x -= this.m_particleDiameter; + aabb.lowerBound.y -= this.m_particleDiameter; + aabb.upperBound.x += this.m_particleDiameter; + aabb.upperBound.y += this.m_particleDiameter; + }; + b2ParticleSystem.prototype.FreeBuffer = function (b, capacity) { + if (null === b) return; + b.length = 0; + }; + b2ParticleSystem.prototype.FreeUserOverridableBuffer = function (b) { + 0 === b.userSuppliedCapacity && this.FreeBuffer(b.data, this.m_internalAllocatedCapacity); + }; + b2ParticleSystem.prototype.ReallocateBuffer3 = function (oldBuffer, oldCapacity, newCapacity) { + if (newCapacity <= oldCapacity) throw new Error(); + var newBuffer = oldBuffer ? oldBuffer.slice() : []; + newBuffer.length = newCapacity; + return newBuffer; + }; + b2ParticleSystem.prototype.ReallocateBuffer5 = function (buffer, userSuppliedCapacity, oldCapacity, newCapacity, deferred) { + if (newCapacity <= oldCapacity) throw new Error(); + if (!(!userSuppliedCapacity || newCapacity <= userSuppliedCapacity)) throw new Error(); + deferred && !buffer || userSuppliedCapacity || (buffer = this.ReallocateBuffer3(buffer, oldCapacity, newCapacity)); + return buffer; + }; + b2ParticleSystem.prototype.ReallocateBuffer4 = function (buffer, oldCapacity, newCapacity, deferred) { + return this.ReallocateBuffer5(buffer.data, buffer.userSuppliedCapacity, oldCapacity, newCapacity, deferred); + }; + b2ParticleSystem.prototype.RequestBuffer = function (buffer) { + if (!buffer) { + 0 === this.m_internalAllocatedCapacity && this.ReallocateInternalAllocatedBuffers(b2_minParticleSystemBufferCapacity); + buffer = []; + buffer.length = this.m_internalAllocatedCapacity; + } + return buffer; + }; + b2ParticleSystem.prototype.ReallocateHandleBuffers = function (newCapacity) { + this.m_handleIndexBuffer.data = this.ReallocateBuffer4(this.m_handleIndexBuffer, this.m_internalAllocatedCapacity, newCapacity, true); + }; + b2ParticleSystem.prototype.ReallocateInternalAllocatedBuffers = function (capacity) { + function LimitCapacity(capacity, maxCount) { + return maxCount && capacity > maxCount ? maxCount : capacity; + } + capacity = LimitCapacity(capacity, this.m_def.maxCount); + capacity = LimitCapacity(capacity, this.m_flagsBuffer.userSuppliedCapacity); + capacity = LimitCapacity(capacity, this.m_positionBuffer.userSuppliedCapacity); + capacity = LimitCapacity(capacity, this.m_velocityBuffer.userSuppliedCapacity); + capacity = LimitCapacity(capacity, this.m_colorBuffer.userSuppliedCapacity); + capacity = LimitCapacity(capacity, this.m_userDataBuffer.userSuppliedCapacity); + if (this.m_internalAllocatedCapacity < capacity) { + this.ReallocateHandleBuffers(capacity); + this.m_flagsBuffer.data = this.ReallocateBuffer4(this.m_flagsBuffer, this.m_internalAllocatedCapacity, capacity, false); + var stuck = this.m_stuckThreshold > 0; + this.m_lastBodyContactStepBuffer.data = this.ReallocateBuffer4(this.m_lastBodyContactStepBuffer, this.m_internalAllocatedCapacity, capacity, stuck); + this.m_bodyContactCountBuffer.data = this.ReallocateBuffer4(this.m_bodyContactCountBuffer, this.m_internalAllocatedCapacity, capacity, stuck); + this.m_consecutiveContactStepsBuffer.data = this.ReallocateBuffer4(this.m_consecutiveContactStepsBuffer, this.m_internalAllocatedCapacity, capacity, stuck); + this.m_positionBuffer.data = this.ReallocateBuffer4(this.m_positionBuffer, this.m_internalAllocatedCapacity, capacity, false); + this.m_velocityBuffer.data = this.ReallocateBuffer4(this.m_velocityBuffer, this.m_internalAllocatedCapacity, capacity, false); + this.m_forceBuffer = this.ReallocateBuffer5(this.m_forceBuffer, 0, this.m_internalAllocatedCapacity, capacity, false); + this.m_weightBuffer = this.ReallocateBuffer5(this.m_weightBuffer, 0, this.m_internalAllocatedCapacity, capacity, false); + this.m_staticPressureBuffer = this.ReallocateBuffer5(this.m_staticPressureBuffer, 0, this.m_internalAllocatedCapacity, capacity, true); + this.m_accumulationBuffer = this.ReallocateBuffer5(this.m_accumulationBuffer, 0, this.m_internalAllocatedCapacity, capacity, false); + this.m_accumulation2Buffer = this.ReallocateBuffer5(this.m_accumulation2Buffer, 0, this.m_internalAllocatedCapacity, capacity, true); + this.m_depthBuffer = this.ReallocateBuffer5(this.m_depthBuffer, 0, this.m_internalAllocatedCapacity, capacity, true); + this.m_colorBuffer.data = this.ReallocateBuffer4(this.m_colorBuffer, this.m_internalAllocatedCapacity, capacity, true); + this.m_groupBuffer = this.ReallocateBuffer5(this.m_groupBuffer, 0, this.m_internalAllocatedCapacity, capacity, false); + this.m_userDataBuffer.data = this.ReallocateBuffer4(this.m_userDataBuffer, this.m_internalAllocatedCapacity, capacity, true); + this.m_expirationTimeBuffer.data = this.ReallocateBuffer4(this.m_expirationTimeBuffer, this.m_internalAllocatedCapacity, capacity, true); + this.m_indexByExpirationTimeBuffer.data = this.ReallocateBuffer4(this.m_indexByExpirationTimeBuffer, this.m_internalAllocatedCapacity, capacity, false); + this.m_internalAllocatedCapacity = capacity; + } + }; + b2ParticleSystem.prototype.CreateParticleForGroup = function (groupDef, xf, p) { + var particleDef = new b2ParticleDef(); + particleDef.flags = b2Maybe(groupDef.flags, 0); + b2Transform.MulXV(xf, p, particleDef.position); + b2Vec2.AddVV(b2Maybe(groupDef.linearVelocity, b2Vec2.ZERO), b2Vec2.CrossSV(b2Maybe(groupDef.angularVelocity, 0), b2Vec2.SubVV(particleDef.position, b2Maybe(groupDef.position, b2Vec2.ZERO), b2Vec2.s_t0), b2Vec2.s_t0), particleDef.velocity); + particleDef.color.Copy(b2Maybe(groupDef.color, b2Color.ZERO)); + particleDef.lifetime = b2Maybe(groupDef.lifetime, 0); + particleDef.userData = groupDef.userData; + this.CreateParticle(particleDef); + }; + b2ParticleSystem.prototype.CreateParticlesStrokeShapeForGroup = function (shape, groupDef, xf) { + var s_edge = b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_edge; + var s_d = b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_d; + var s_p = b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_p; + var stride = b2Maybe(groupDef.stride, 0); + 0 === stride && (stride = this.GetParticleStride()); + var positionOnEdge = 0; + var childCount = shape.GetChildCount(); + for (var childIndex = 0; childIndex < childCount; childIndex++) { + var edge = null; + if (shape.GetType() === exports.b2ShapeType.e_edgeShape) edge = shape; else { + edge = s_edge; + shape.GetChildEdge(edge, childIndex); + } + var d = b2Vec2.SubVV(edge.m_vertex2, edge.m_vertex1, s_d); + var edgeLength = d.Length(); + while (positionOnEdge < edgeLength) { + var p = b2Vec2.AddVMulSV(edge.m_vertex1, positionOnEdge / edgeLength, d, s_p); + this.CreateParticleForGroup(groupDef, xf, p); + positionOnEdge += stride; + } + positionOnEdge -= edgeLength; + } + }; + b2ParticleSystem.prototype.CreateParticlesFillShapeForGroup = function (shape, groupDef, xf) { + var s_aabb = b2ParticleSystem.CreateParticlesFillShapeForGroup_s_aabb; + var s_p = b2ParticleSystem.CreateParticlesFillShapeForGroup_s_p; + var stride = b2Maybe(groupDef.stride, 0); + 0 === stride && (stride = this.GetParticleStride()); + var identity = b2Transform.IDENTITY; + var aabb = s_aabb; + shape.ComputeAABB(aabb, identity, 0); + for (var y = Math.floor(aabb.lowerBound.y / stride) * stride; y < aabb.upperBound.y; y += stride) for (var x = Math.floor(aabb.lowerBound.x / stride) * stride; x < aabb.upperBound.x; x += stride) { + var p = s_p.Set(x, y); + shape.TestPoint(identity, p) && this.CreateParticleForGroup(groupDef, xf, p); + } + }; + b2ParticleSystem.prototype.CreateParticlesWithShapeForGroup = function (shape, groupDef, xf) { + switch (shape.GetType()) { + case exports.b2ShapeType.e_edgeShape: + case exports.b2ShapeType.e_chainShape: + this.CreateParticlesStrokeShapeForGroup(shape, groupDef, xf); + break; + + case exports.b2ShapeType.e_polygonShape: + case exports.b2ShapeType.e_circleShape: + this.CreateParticlesFillShapeForGroup(shape, groupDef, xf); + } + }; + b2ParticleSystem.prototype.CreateParticlesWithShapesForGroup = function (shapes, shapeCount, groupDef, xf) { + var compositeShape = new b2ParticleSystem.CompositeShape(shapes, shapeCount); + this.CreateParticlesFillShapeForGroup(compositeShape, groupDef, xf); + }; + b2ParticleSystem.prototype.CloneParticle = function (oldIndex, group) { + var def = new b2ParticleDef(); + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + def.flags = this.m_flagsBuffer.data[oldIndex]; + def.position.Copy(this.m_positionBuffer.data[oldIndex]); + def.velocity.Copy(this.m_velocityBuffer.data[oldIndex]); + this.m_colorBuffer.data && def.color.Copy(this.m_colorBuffer.data[oldIndex]); + this.m_userDataBuffer.data && (def.userData = this.m_userDataBuffer.data[oldIndex]); + def.group = group; + var newIndex = this.CreateParticle(def); + if (this.m_handleIndexBuffer.data) { + var handle = this.m_handleIndexBuffer.data[oldIndex]; + handle && handle.SetIndex(newIndex); + this.m_handleIndexBuffer.data[newIndex] = handle; + this.m_handleIndexBuffer.data[oldIndex] = null; + } + this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[newIndex] = this.m_lastBodyContactStepBuffer.data[oldIndex]); + this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[newIndex] = this.m_bodyContactCountBuffer.data[oldIndex]); + this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[newIndex] = this.m_consecutiveContactStepsBuffer.data[oldIndex]); + this.m_hasForce && this.m_forceBuffer[newIndex].Copy(this.m_forceBuffer[oldIndex]); + this.m_staticPressureBuffer && (this.m_staticPressureBuffer[newIndex] = this.m_staticPressureBuffer[oldIndex]); + this.m_depthBuffer && (this.m_depthBuffer[newIndex] = this.m_depthBuffer[oldIndex]); + this.m_expirationTimeBuffer.data && (this.m_expirationTimeBuffer.data[newIndex] = this.m_expirationTimeBuffer.data[oldIndex]); + return newIndex; + }; + b2ParticleSystem.prototype.DestroyParticlesInGroup = function (group, callDestructionListener) { + void 0 === callDestructionListener && (callDestructionListener = false); + for (var i = group.m_firstIndex; i < group.m_lastIndex; i++) this.DestroyParticle(i, callDestructionListener); + }; + b2ParticleSystem.prototype.DestroyParticleGroup = function (group) { + this.m_world.m_destructionListener && this.m_world.m_destructionListener.SayGoodbyeParticleGroup(group); + this.SetGroupFlags(group, 0); + for (var i = group.m_firstIndex; i < group.m_lastIndex; i++) this.m_groupBuffer[i] = null; + group.m_prev && (group.m_prev.m_next = group.m_next); + group.m_next && (group.m_next.m_prev = group.m_prev); + group === this.m_groupList && (this.m_groupList = group.m_next); + --this.m_groupCount; + }; + b2ParticleSystem.ParticleCanBeConnected = function (flags, group) { + return 0 !== (flags & (exports.b2ParticleFlag.b2_wallParticle | exports.b2ParticleFlag.b2_springParticle | exports.b2ParticleFlag.b2_elasticParticle)) || null !== group && 0 !== (group.GetGroupFlags() & exports.b2ParticleGroupFlag.b2_rigidParticleGroup); + }; + b2ParticleSystem.prototype.UpdatePairsAndTriads = function (firstIndex, lastIndex, filter) { + var s_dab = b2ParticleSystem.UpdatePairsAndTriads_s_dab; + var s_dbc = b2ParticleSystem.UpdatePairsAndTriads_s_dbc; + var s_dca = b2ParticleSystem.UpdatePairsAndTriads_s_dca; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var particleFlags = 0; + for (var i = firstIndex; i < lastIndex; i++) particleFlags |= this.m_flagsBuffer.data[i]; + if (particleFlags & b2ParticleSystem.k_pairFlags) for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var af = this.m_flagsBuffer.data[a]; + var bf = this.m_flagsBuffer.data[b]; + var groupA = this.m_groupBuffer[a]; + var groupB = this.m_groupBuffer[b]; + if (a >= firstIndex && a < lastIndex && b >= firstIndex && b < lastIndex && !((af | bf) & exports.b2ParticleFlag.b2_zombieParticle) && (af | bf) & b2ParticleSystem.k_pairFlags && (filter.IsNecessary(a) || filter.IsNecessary(b)) && b2ParticleSystem.ParticleCanBeConnected(af, groupA) && b2ParticleSystem.ParticleCanBeConnected(bf, groupB) && filter.ShouldCreatePair(a, b)) { + var pair = this.m_pairBuffer.data[this.m_pairBuffer.Append()]; + pair.indexA = a; + pair.indexB = b; + pair.flags = contact.flags; + pair.strength = b2Min(groupA ? groupA.m_strength : 1, groupB ? groupB.m_strength : 1); + pair.distance = b2Vec2.DistanceVV(pos_data[a], pos_data[b]); + } + std_stable_sort(this.m_pairBuffer.data, 0, this.m_pairBuffer.count, b2ParticleSystem.ComparePairIndices); + this.m_pairBuffer.Unique(b2ParticleSystem.MatchPairIndices); + } + if (particleFlags & b2ParticleSystem.k_triadFlags) { + var diagram = new b2VoronoiDiagram(lastIndex - firstIndex); + for (var i = firstIndex; i < lastIndex; i++) { + var flags = this.m_flagsBuffer.data[i]; + var group = this.m_groupBuffer[i]; + flags & exports.b2ParticleFlag.b2_zombieParticle || !b2ParticleSystem.ParticleCanBeConnected(flags, group) || diagram.AddGenerator(pos_data[i], i, filter.IsNecessary(i)); + } + var stride = this.GetParticleStride(); + diagram.Generate(stride / 2, 2 * stride); + var system_1 = this; + var callback = function callback(a, b, c) { + if (!system_1.m_flagsBuffer.data) throw new Error(); + var af = system_1.m_flagsBuffer.data[a]; + var bf = system_1.m_flagsBuffer.data[b]; + var cf = system_1.m_flagsBuffer.data[c]; + if ((af | bf | cf) & b2ParticleSystem.k_triadFlags && filter.ShouldCreateTriad(a, b, c)) { + var pa = pos_data[a]; + var pb = pos_data[b]; + var pc = pos_data[c]; + var dab = b2Vec2.SubVV(pa, pb, s_dab); + var dbc = b2Vec2.SubVV(pb, pc, s_dbc); + var dca = b2Vec2.SubVV(pc, pa, s_dca); + var maxDistanceSquared = b2_maxTriadDistanceSquared * system_1.m_squaredDiameter; + if (b2Vec2.DotVV(dab, dab) > maxDistanceSquared || b2Vec2.DotVV(dbc, dbc) > maxDistanceSquared || b2Vec2.DotVV(dca, dca) > maxDistanceSquared) return; + var groupA = system_1.m_groupBuffer[a]; + var groupB = system_1.m_groupBuffer[b]; + var groupC = system_1.m_groupBuffer[c]; + var triad = system_1.m_triadBuffer.data[system_1.m_triadBuffer.Append()]; + triad.indexA = a; + triad.indexB = b; + triad.indexC = c; + triad.flags = af | bf | cf; + triad.strength = b2Min(b2Min(groupA ? groupA.m_strength : 1, groupB ? groupB.m_strength : 1), groupC ? groupC.m_strength : 1); + var midPoint_x = (pa.x + pb.x + pc.x) / 3; + var midPoint_y = (pa.y + pb.y + pc.y) / 3; + triad.pa.x = pa.x - midPoint_x; + triad.pa.y = pa.y - midPoint_y; + triad.pb.x = pb.x - midPoint_x; + triad.pb.y = pb.y - midPoint_y; + triad.pc.x = pc.x - midPoint_x; + triad.pc.y = pc.y - midPoint_y; + triad.ka = -b2Vec2.DotVV(dca, dab); + triad.kb = -b2Vec2.DotVV(dab, dbc); + triad.kc = -b2Vec2.DotVV(dbc, dca); + triad.s = b2Vec2.CrossVV(pa, pb) + b2Vec2.CrossVV(pb, pc) + b2Vec2.CrossVV(pc, pa); + } + }; + diagram.GetNodes(callback); + std_stable_sort(this.m_triadBuffer.data, 0, this.m_triadBuffer.count, b2ParticleSystem.CompareTriadIndices); + this.m_triadBuffer.Unique(b2ParticleSystem.MatchTriadIndices); + } + }; + b2ParticleSystem.prototype.UpdatePairsAndTriadsWithReactiveParticles = function () { + var filter = new b2ParticleSystem.ReactiveFilter(this.m_flagsBuffer); + this.UpdatePairsAndTriads(0, this.m_count, filter); + if (!this.m_flagsBuffer.data) throw new Error(); + for (var i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] &= ~exports.b2ParticleFlag.b2_reactiveParticle; + this.m_allParticleFlags &= ~exports.b2ParticleFlag.b2_reactiveParticle; + }; + b2ParticleSystem.ComparePairIndices = function (a, b) { + var diffA = a.indexA - b.indexA; + if (0 !== diffA) return diffA < 0; + return a.indexB < b.indexB; + }; + b2ParticleSystem.MatchPairIndices = function (a, b) { + return a.indexA === b.indexA && a.indexB === b.indexB; + }; + b2ParticleSystem.CompareTriadIndices = function (a, b) { + var diffA = a.indexA - b.indexA; + if (0 !== diffA) return diffA < 0; + var diffB = a.indexB - b.indexB; + if (0 !== diffB) return diffB < 0; + return a.indexC < b.indexC; + }; + b2ParticleSystem.MatchTriadIndices = function (a, b) { + return a.indexA === b.indexA && a.indexB === b.indexB && a.indexC === b.indexC; + }; + b2ParticleSystem.InitializeParticleLists = function (group, nodeBuffer) { + var bufferIndex = group.GetBufferIndex(); + var particleCount = group.GetParticleCount(); + for (var i = 0; i < particleCount; i++) { + var node = nodeBuffer[i]; + node.list = node; + node.next = null; + node.count = 1; + node.index = i + bufferIndex; + } + }; + b2ParticleSystem.prototype.MergeParticleListsInContact = function (group, nodeBuffer) { + var bufferIndex = group.GetBufferIndex(); + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + if (!group.ContainsParticle(a) || !group.ContainsParticle(b)) continue; + var listA = nodeBuffer[a - bufferIndex].list; + var listB = nodeBuffer[b - bufferIndex].list; + if (listA === listB) continue; + if (listA.count < listB.count) { + var _tmp = listA; + listA = listB; + listB = _tmp; + } + b2ParticleSystem.MergeParticleLists(listA, listB); + } + }; + b2ParticleSystem.MergeParticleLists = function (listA, listB) { + for (var b = listB; ;) { + b.list = listA; + var nextB = b.next; + if (!nextB) { + b.next = listA.next; + break; + } + b = nextB; + } + listA.next = listB; + listA.count += listB.count; + listB.count = 0; + }; + b2ParticleSystem.FindLongestParticleList = function (group, nodeBuffer) { + var particleCount = group.GetParticleCount(); + var result = nodeBuffer[0]; + for (var i = 0; i < particleCount; i++) { + var node = nodeBuffer[i]; + result.count < node.count && (result = node); + } + return result; + }; + b2ParticleSystem.prototype.MergeZombieParticleListNodes = function (group, nodeBuffer, survivingList) { + if (!this.m_flagsBuffer.data) throw new Error(); + var particleCount = group.GetParticleCount(); + for (var i = 0; i < particleCount; i++) { + var node = nodeBuffer[i]; + node !== survivingList && this.m_flagsBuffer.data[node.index] & exports.b2ParticleFlag.b2_zombieParticle && b2ParticleSystem.MergeParticleListAndNode(survivingList, node); + } + }; + b2ParticleSystem.MergeParticleListAndNode = function (list, node) { + node.list = list; + node.next = list.next; + list.next = node; + list.count++; + node.count = 0; + }; + b2ParticleSystem.prototype.CreateParticleGroupsFromParticleList = function (group, nodeBuffer, survivingList) { + if (!this.m_flagsBuffer.data) throw new Error(); + var particleCount = group.GetParticleCount(); + var def = new b2ParticleGroupDef(); + def.groupFlags = group.GetGroupFlags(); + def.userData = group.GetUserData(); + for (var i = 0; i < particleCount; i++) { + var list = nodeBuffer[i]; + if (!list.count || list === survivingList) continue; + var newGroup = this.CreateParticleGroup(def); + for (var node = list; node; node = node.next) { + var oldIndex = node.index; + var newIndex = this.CloneParticle(oldIndex, newGroup); + this.m_flagsBuffer.data[oldIndex] |= exports.b2ParticleFlag.b2_zombieParticle; + node.index = newIndex; + } + } + }; + b2ParticleSystem.prototype.UpdatePairsAndTriadsWithParticleList = function (group, nodeBuffer) { + var bufferIndex = group.GetBufferIndex(); + for (var k = 0; k < this.m_pairBuffer.count; k++) { + var pair = this.m_pairBuffer.data[k]; + var a = pair.indexA; + var b = pair.indexB; + group.ContainsParticle(a) && (pair.indexA = nodeBuffer[a - bufferIndex].index); + group.ContainsParticle(b) && (pair.indexB = nodeBuffer[b - bufferIndex].index); + } + for (var k = 0; k < this.m_triadBuffer.count; k++) { + var triad = this.m_triadBuffer.data[k]; + var a = triad.indexA; + var b = triad.indexB; + var c = triad.indexC; + group.ContainsParticle(a) && (triad.indexA = nodeBuffer[a - bufferIndex].index); + group.ContainsParticle(b) && (triad.indexB = nodeBuffer[b - bufferIndex].index); + group.ContainsParticle(c) && (triad.indexC = nodeBuffer[c - bufferIndex].index); + } + }; + b2ParticleSystem.prototype.ComputeDepth = function () { + var contactGroups = []; + var contactGroupsCount = 0; + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var groupA = this.m_groupBuffer[a]; + var groupB = this.m_groupBuffer[b]; + groupA && groupA === groupB && groupA.m_groupFlags & exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth && (contactGroups[contactGroupsCount++] = contact); + } + var groupsToUpdate = []; + var groupsToUpdateCount = 0; + for (var group = this.m_groupList; group; group = group.GetNext()) if (group.m_groupFlags & exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth) { + groupsToUpdate[groupsToUpdateCount++] = group; + this.SetGroupFlags(group, group.m_groupFlags & ~exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth); + for (var i = group.m_firstIndex; i < group.m_lastIndex; i++) this.m_accumulationBuffer[i] = 0; + } + for (var k = 0; k < contactGroupsCount; k++) { + var contact = contactGroups[k]; + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + this.m_accumulationBuffer[a] += w; + this.m_accumulationBuffer[b] += w; + } + for (var i = 0; i < groupsToUpdateCount; i++) { + var group = groupsToUpdate[i]; + for (var i_1 = group.m_firstIndex; i_1 < group.m_lastIndex; i_1++) { + var w = this.m_accumulationBuffer[i_1]; + this.m_depthBuffer[i_1] = w < .8 ? 0 : b2_maxFloat; + } + } + var iterationCount = b2Sqrt(this.m_count) >> 0; + for (var t = 0; t < iterationCount; t++) { + var updated = false; + for (var k = 0; k < contactGroupsCount; k++) { + var contact = contactGroups[k]; + var a = contact.indexA; + var b = contact.indexB; + var r = 1 - contact.weight; + var ap0 = this.m_depthBuffer[a]; + var bp0 = this.m_depthBuffer[b]; + var ap1 = bp0 + r; + var bp1 = ap0 + r; + if (ap0 > ap1) { + this.m_depthBuffer[a] = ap1; + updated = true; + } + if (bp0 > bp1) { + this.m_depthBuffer[b] = bp1; + updated = true; + } + } + if (!updated) break; + } + for (var i = 0; i < groupsToUpdateCount; i++) { + var group = groupsToUpdate[i]; + for (var i_2 = group.m_firstIndex; i_2 < group.m_lastIndex; i_2++) this.m_depthBuffer[i_2] < b2_maxFloat ? this.m_depthBuffer[i_2] *= this.m_particleDiameter : this.m_depthBuffer[i_2] = 0; + } + }; + b2ParticleSystem.prototype.GetInsideBoundsEnumerator = function (aabb) { + var lowerTag = b2ParticleSystem.computeTag(this.m_inverseDiameter * aabb.lowerBound.x - 1, this.m_inverseDiameter * aabb.lowerBound.y - 1); + var upperTag = b2ParticleSystem.computeTag(this.m_inverseDiameter * aabb.upperBound.x + 1, this.m_inverseDiameter * aabb.upperBound.y + 1); + var beginProxy = 0; + var endProxy = this.m_proxyBuffer.count; + var firstProxy = std_lower_bound(this.m_proxyBuffer.data, beginProxy, endProxy, lowerTag, b2ParticleSystem.Proxy.CompareProxyTag); + var lastProxy = std_upper_bound(this.m_proxyBuffer.data, beginProxy, endProxy, upperTag, b2ParticleSystem.Proxy.CompareTagProxy); + return new b2ParticleSystem.InsideBoundsEnumerator(this, lowerTag, upperTag, firstProxy, lastProxy); + }; + b2ParticleSystem.prototype.UpdateAllParticleFlags = function () { + if (!this.m_flagsBuffer.data) throw new Error(); + this.m_allParticleFlags = 0; + for (var i = 0; i < this.m_count; i++) this.m_allParticleFlags |= this.m_flagsBuffer.data[i]; + this.m_needsUpdateAllParticleFlags = false; + }; + b2ParticleSystem.prototype.UpdateAllGroupFlags = function () { + this.m_allGroupFlags = 0; + for (var group = this.m_groupList; group; group = group.GetNext()) this.m_allGroupFlags |= group.m_groupFlags; + this.m_needsUpdateAllGroupFlags = false; + }; + b2ParticleSystem.prototype.AddContact = function (a, b, contacts) { + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + var s_d = b2ParticleSystem.AddContact_s_d; + var pos_data = this.m_positionBuffer.data; + var d = b2Vec2.SubVV(pos_data[b], pos_data[a], s_d); + var distBtParticlesSq = b2Vec2.DotVV(d, d); + if (distBtParticlesSq < this.m_squaredDiameter) { + var invD = b2InvSqrt(distBtParticlesSq); + isFinite(invD) || (invD = 198177537e11); + var contact = this.m_contactBuffer.data[this.m_contactBuffer.Append()]; + contact.indexA = a; + contact.indexB = b; + contact.flags = this.m_flagsBuffer.data[a] | this.m_flagsBuffer.data[b]; + contact.weight = 1 - distBtParticlesSq * invD * this.m_inverseDiameter; + b2Vec2.MulSV(invD, d, contact.normal); + } + }; + b2ParticleSystem.prototype.FindContacts_Reference = function (contacts) { + var beginProxy = 0; + var endProxy = this.m_proxyBuffer.count; + this.m_contactBuffer.count = 0; + for (var a = beginProxy, c = beginProxy; a < endProxy; a++) { + var rightTag = b2ParticleSystem.computeRelativeTag(this.m_proxyBuffer.data[a].tag, 1, 0); + for (var b = a + 1; b < endProxy; b++) { + if (rightTag < this.m_proxyBuffer.data[b].tag) break; + this.AddContact(this.m_proxyBuffer.data[a].index, this.m_proxyBuffer.data[b].index, this.m_contactBuffer); + } + var bottomLeftTag = b2ParticleSystem.computeRelativeTag(this.m_proxyBuffer.data[a].tag, -1, 1); + for (; c < endProxy; c++) if (bottomLeftTag <= this.m_proxyBuffer.data[c].tag) break; + var bottomRightTag = b2ParticleSystem.computeRelativeTag(this.m_proxyBuffer.data[a].tag, 1, 1); + for (var b = c; b < endProxy; b++) { + if (bottomRightTag < this.m_proxyBuffer.data[b].tag) break; + this.AddContact(this.m_proxyBuffer.data[a].index, this.m_proxyBuffer.data[b].index, this.m_contactBuffer); + } + } + }; + b2ParticleSystem.prototype.FindContacts = function (contacts) { + this.FindContacts_Reference(contacts); + }; + b2ParticleSystem.prototype.UpdateProxies_Reference = function (proxies) { + if (!this.m_positionBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var inv_diam = this.m_inverseDiameter; + for (var k = 0; k < this.m_proxyBuffer.count; ++k) { + var proxy = this.m_proxyBuffer.data[k]; + var i = proxy.index; + var p = pos_data[i]; + proxy.tag = b2ParticleSystem.computeTag(inv_diam * p.x, inv_diam * p.y); + } + }; + b2ParticleSystem.prototype.UpdateProxies = function (proxies) { + this.UpdateProxies_Reference(proxies); + }; + b2ParticleSystem.prototype.SortProxies = function (proxies) { + std_sort(this.m_proxyBuffer.data, 0, this.m_proxyBuffer.count, b2ParticleSystem.Proxy.CompareProxyProxy); + }; + b2ParticleSystem.prototype.FilterContacts = function (contacts) { + var contactFilter = this.GetParticleContactFilter(); + if (null === contactFilter) return; + var system = this; + var predicate = function predicate(contact) { + return 0 !== (contact.flags & exports.b2ParticleFlag.b2_particleContactFilterParticle) && !contactFilter.ShouldCollideParticleParticle(system, contact.indexA, contact.indexB); + }; + this.m_contactBuffer.RemoveIf(predicate); + }; + b2ParticleSystem.prototype.NotifyContactListenerPreContact = function (particlePairs) { + var contactListener = this.GetParticleContactListener(); + if (null === contactListener) return; + particlePairs.Initialize(this.m_contactBuffer, this.m_flagsBuffer); + throw new Error(); + }; + b2ParticleSystem.prototype.NotifyContactListenerPostContact = function (particlePairs) { + var contactListener = this.GetParticleContactListener(); + if (null === contactListener) return; + for (var k = 0; k < this.m_contactBuffer.count; ++k) { + var contact = this.m_contactBuffer.data[k]; + contactListener.BeginContactParticleParticle(this, contact); + } + throw new Error(); + }; + b2ParticleSystem.b2ParticleContactIsZombie = function (contact) { + return (contact.flags & exports.b2ParticleFlag.b2_zombieParticle) === exports.b2ParticleFlag.b2_zombieParticle; + }; + b2ParticleSystem.prototype.UpdateContacts = function (exceptZombie) { + this.UpdateProxies(this.m_proxyBuffer); + this.SortProxies(this.m_proxyBuffer); + var particlePairs = new b2ParticleSystem.b2ParticlePairSet(); + this.NotifyContactListenerPreContact(particlePairs); + this.FindContacts(this.m_contactBuffer); + this.FilterContacts(this.m_contactBuffer); + this.NotifyContactListenerPostContact(particlePairs); + exceptZombie && this.m_contactBuffer.RemoveIf(b2ParticleSystem.b2ParticleContactIsZombie); + }; + b2ParticleSystem.prototype.NotifyBodyContactListenerPreContact = function (fixtureSet) { + var contactListener = this.GetFixtureContactListener(); + if (null === contactListener) return; + fixtureSet.Initialize(this.m_bodyContactBuffer, this.m_flagsBuffer); + throw new Error(); + }; + b2ParticleSystem.prototype.NotifyBodyContactListenerPostContact = function (fixtureSet) { + var contactListener = this.GetFixtureContactListener(); + if (null === contactListener) return; + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + contactListener.BeginContactFixtureParticle(this, contact); + } + throw new Error(); + }; + b2ParticleSystem.prototype.UpdateBodyContacts = function () { + var s_aabb = b2ParticleSystem.UpdateBodyContacts_s_aabb; + var fixtureSet = new b2ParticleSystem.FixtureParticleSet(); + this.NotifyBodyContactListenerPreContact(fixtureSet); + if (this.m_stuckThreshold > 0) { + if (!this.m_bodyContactCountBuffer.data) throw new Error(); + if (!this.m_lastBodyContactStepBuffer.data) throw new Error(); + if (!this.m_consecutiveContactStepsBuffer.data) throw new Error(); + var particleCount = this.GetParticleCount(); + for (var i = 0; i < particleCount; i++) { + this.m_bodyContactCountBuffer.data[i] = 0; + this.m_timestamp > this.m_lastBodyContactStepBuffer.data[i] + 1 && (this.m_consecutiveContactStepsBuffer.data[i] = 0); + } + } + this.m_bodyContactBuffer.SetCount(0); + this.m_stuckParticleBuffer.SetCount(0); + var aabb = s_aabb; + this.ComputeAABB(aabb); + var callback = new b2ParticleSystem.UpdateBodyContactsCallback(this, this.GetFixtureContactFilter()); + this.m_world.QueryAABB(callback, aabb); + this.m_def.strictContactCheck && this.RemoveSpuriousBodyContacts(); + this.NotifyBodyContactListenerPostContact(fixtureSet); + }; + b2ParticleSystem.prototype.Solve = function (step) { + var s_subStep = b2ParticleSystem.Solve_s_subStep; + if (0 === this.m_count) return; + this.m_expirationTimeBuffer.data && this.SolveLifetimes(step); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_zombieParticle && this.SolveZombie(); + this.m_needsUpdateAllParticleFlags && this.UpdateAllParticleFlags(); + this.m_needsUpdateAllGroupFlags && this.UpdateAllGroupFlags(); + if (this.m_paused) return; + for (this.m_iterationIndex = 0; this.m_iterationIndex < step.particleIterations; this.m_iterationIndex++) { + ++this.m_timestamp; + var subStep = s_subStep.Copy(step); + subStep.dt /= step.particleIterations; + subStep.inv_dt *= step.particleIterations; + this.UpdateContacts(false); + this.UpdateBodyContacts(); + this.ComputeWeight(); + this.m_allGroupFlags & exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth && this.ComputeDepth(); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_reactiveParticle && this.UpdatePairsAndTriadsWithReactiveParticles(); + this.m_hasForce && this.SolveForce(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_viscousParticle && this.SolveViscous(); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_repulsiveParticle && this.SolveRepulsive(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_powderParticle && this.SolvePowder(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_tensileParticle && this.SolveTensile(subStep); + this.m_allGroupFlags & exports.b2ParticleGroupFlag.b2_solidParticleGroup && this.SolveSolid(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_colorMixingParticle && this.SolveColorMixing(); + this.SolveGravity(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_staticPressureParticle && this.SolveStaticPressure(subStep); + this.SolvePressure(subStep); + this.SolveDamping(subStep); + this.m_allParticleFlags & b2ParticleSystem.k_extraDampingFlags && this.SolveExtraDamping(); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_elasticParticle && this.SolveElastic(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_springParticle && this.SolveSpring(subStep); + this.LimitVelocity(subStep); + this.m_allGroupFlags & exports.b2ParticleGroupFlag.b2_rigidParticleGroup && this.SolveRigidDamping(); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_barrierParticle && this.SolveBarrier(subStep); + this.SolveCollision(subStep); + this.m_allGroupFlags & exports.b2ParticleGroupFlag.b2_rigidParticleGroup && this.SolveRigid(subStep); + this.m_allParticleFlags & exports.b2ParticleFlag.b2_wallParticle && this.SolveWall(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + for (var i = 0; i < this.m_count; i++) this.m_positionBuffer.data[i].SelfMulAdd(subStep.dt, this.m_velocityBuffer.data[i]); + } + }; + b2ParticleSystem.prototype.SolveCollision = function (step) { + var s_aabb = b2ParticleSystem.SolveCollision_s_aabb; + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var aabb = s_aabb; + aabb.lowerBound.x = +b2_maxFloat; + aabb.lowerBound.y = +b2_maxFloat; + aabb.upperBound.x = -b2_maxFloat; + aabb.upperBound.y = -b2_maxFloat; + for (var i = 0; i < this.m_count; i++) { + var v = vel_data[i]; + var p1 = pos_data[i]; + var p2_x = p1.x + step.dt * v.x; + var p2_y = p1.y + step.dt * v.y; + aabb.lowerBound.x = b2Min(aabb.lowerBound.x, b2Min(p1.x, p2_x)); + aabb.lowerBound.y = b2Min(aabb.lowerBound.y, b2Min(p1.y, p2_y)); + aabb.upperBound.x = b2Max(aabb.upperBound.x, b2Max(p1.x, p2_x)); + aabb.upperBound.y = b2Max(aabb.upperBound.y, b2Max(p1.y, p2_y)); + } + var callback = new b2ParticleSystem.SolveCollisionCallback(this, step); + this.m_world.QueryAABB(callback, aabb); + }; + b2ParticleSystem.prototype.LimitVelocity = function (step) { + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + var criticalVelocitySquared = this.GetCriticalVelocitySquared(step); + for (var i = 0; i < this.m_count; i++) { + var v = vel_data[i]; + var v2 = b2Vec2.DotVV(v, v); + v2 > criticalVelocitySquared && v.SelfMul(b2Sqrt(criticalVelocitySquared / v2)); + } + }; + b2ParticleSystem.prototype.SolveGravity = function (step) { + if (!this.m_velocityBuffer.data) throw new Error(); + var s_gravity = b2ParticleSystem.SolveGravity_s_gravity; + var vel_data = this.m_velocityBuffer.data; + var gravity = b2Vec2.MulSV(step.dt * this.m_def.gravityScale, this.m_world.GetGravity(), s_gravity); + for (var i = 0; i < this.m_count; i++) vel_data[i].SelfAdd(gravity); + }; + b2ParticleSystem.prototype.SolveBarrier = function (step) { + var s_aabb = b2ParticleSystem.SolveBarrier_s_aabb; + var s_va = b2ParticleSystem.SolveBarrier_s_va; + var s_vb = b2ParticleSystem.SolveBarrier_s_vb; + var s_pba = b2ParticleSystem.SolveBarrier_s_pba; + var s_vba = b2ParticleSystem.SolveBarrier_s_vba; + var s_vc = b2ParticleSystem.SolveBarrier_s_vc; + var s_pca = b2ParticleSystem.SolveBarrier_s_pca; + var s_vca = b2ParticleSystem.SolveBarrier_s_vca; + var s_qba = b2ParticleSystem.SolveBarrier_s_qba; + var s_qca = b2ParticleSystem.SolveBarrier_s_qca; + var s_dv = b2ParticleSystem.SolveBarrier_s_dv; + var s_f = b2ParticleSystem.SolveBarrier_s_f; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + for (var i = 0; i < this.m_count; i++) { + var flags = this.m_flagsBuffer.data[i]; + 0 !== (flags & b2ParticleSystem.k_barrierWallFlags) && vel_data[i].SetZero(); + } + var tmax = b2_barrierCollisionTime * step.dt; + var mass = this.GetParticleMass(); + for (var k = 0; k < this.m_pairBuffer.count; k++) { + var pair = this.m_pairBuffer.data[k]; + if (pair.flags & exports.b2ParticleFlag.b2_barrierParticle) { + var a = pair.indexA; + var b = pair.indexB; + var pa = pos_data[a]; + var pb = pos_data[b]; + var aabb = s_aabb; + b2Vec2.MinV(pa, pb, aabb.lowerBound); + b2Vec2.MaxV(pa, pb, aabb.upperBound); + var aGroup = this.m_groupBuffer[a]; + var bGroup = this.m_groupBuffer[b]; + var va = this.GetLinearVelocity(aGroup, a, pa, s_va); + var vb = this.GetLinearVelocity(bGroup, b, pb, s_vb); + var pba = b2Vec2.SubVV(pb, pa, s_pba); + var vba = b2Vec2.SubVV(vb, va, s_vba); + var enumerator = this.GetInsideBoundsEnumerator(aabb); + var c = void 0; + while ((c = enumerator.GetNext()) >= 0) { + var pc = pos_data[c]; + var cGroup = this.m_groupBuffer[c]; + if (aGroup !== cGroup && bGroup !== cGroup) { + var vc = this.GetLinearVelocity(cGroup, c, pc, s_vc); + var pca = b2Vec2.SubVV(pc, pa, s_pca); + var vca = b2Vec2.SubVV(vc, va, s_vca); + var e2 = b2Vec2.CrossVV(vba, vca); + var e1 = b2Vec2.CrossVV(pba, vca) - b2Vec2.CrossVV(pca, vba); + var e0 = b2Vec2.CrossVV(pba, pca); + var s = void 0, t = void 0; + var qba = s_qba, qca = s_qca; + if (0 === e2) { + if (0 === e1) continue; + t = -e0 / e1; + if (!(t >= 0 && t < tmax)) continue; + b2Vec2.AddVMulSV(pba, t, vba, qba); + b2Vec2.AddVMulSV(pca, t, vca, qca); + s = b2Vec2.DotVV(qba, qca) / b2Vec2.DotVV(qba, qba); + if (!(s >= 0 && s <= 1)) continue; + } else { + var det = e1 * e1 - 4 * e0 * e2; + if (det < 0) continue; + var sqrtDet = b2Sqrt(det); + var t1 = (-e1 - sqrtDet) / (2 * e2); + var t2 = (-e1 + sqrtDet) / (2 * e2); + if (t1 > t2) { + var tmp = t1; + t1 = t2; + t2 = tmp; + } + t = t1; + b2Vec2.AddVMulSV(pba, t, vba, qba); + b2Vec2.AddVMulSV(pca, t, vca, qca); + s = b2Vec2.DotVV(qba, qca) / b2Vec2.DotVV(qba, qba); + if (!(t >= 0 && t < tmax && s >= 0 && s <= 1)) { + t = t2; + if (!(t >= 0 && t < tmax)) continue; + b2Vec2.AddVMulSV(pba, t, vba, qba); + b2Vec2.AddVMulSV(pca, t, vca, qca); + s = b2Vec2.DotVV(qba, qca) / b2Vec2.DotVV(qba, qba); + if (!(s >= 0 && s <= 1)) continue; + } + } + var dv = s_dv; + dv.x = va.x + s * vba.x - vc.x; + dv.y = va.y + s * vba.y - vc.y; + var f = b2Vec2.MulSV(mass, dv, s_f); + if (cGroup && this.IsRigidGroup(cGroup)) { + var mass_1 = cGroup.GetMass(); + var inertia = cGroup.GetInertia(); + mass_1 > 0 && cGroup.m_linearVelocity.SelfMulAdd(1 / mass_1, f); + inertia > 0 && (cGroup.m_angularVelocity += b2Vec2.CrossVV(b2Vec2.SubVV(pc, cGroup.GetCenter(), b2Vec2.s_t0), f) / inertia); + } else vel_data[c].SelfAdd(dv); + this.ParticleApplyForce(c, f.SelfMul(-step.inv_dt)); + } + } + } + } + }; + b2ParticleSystem.prototype.SolveStaticPressure = function (step) { + if (!this.m_flagsBuffer.data) throw new Error(); + this.m_staticPressureBuffer = this.RequestBuffer(this.m_staticPressureBuffer); + var criticalPressure = this.GetCriticalPressure(step); + var pressurePerWeight = this.m_def.staticPressureStrength * criticalPressure; + var maxPressure = b2_maxParticlePressure * criticalPressure; + var relaxation = this.m_def.staticPressureRelaxation; + for (var t = 0; t < this.m_def.staticPressureIterations; t++) { + for (var i = 0; i < this.m_count; i++) this.m_accumulationBuffer[i] = 0; + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_staticPressureParticle) { + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + this.m_accumulationBuffer[a] += w * this.m_staticPressureBuffer[b]; + this.m_accumulationBuffer[b] += w * this.m_staticPressureBuffer[a]; + } + } + for (var i = 0; i < this.m_count; i++) { + var w = this.m_weightBuffer[i]; + if (this.m_flagsBuffer.data[i] & exports.b2ParticleFlag.b2_staticPressureParticle) { + var wh = this.m_accumulationBuffer[i]; + var h = (wh + pressurePerWeight * (w - b2_minParticleWeight)) / (w + relaxation); + this.m_staticPressureBuffer[i] = b2Clamp(h, 0, maxPressure); + } else this.m_staticPressureBuffer[i] = 0; + } + } + }; + b2ParticleSystem.prototype.ComputeWeight = function () { + for (var k = 0; k < this.m_count; k++) this.m_weightBuffer[k] = 0; + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + var w = contact.weight; + this.m_weightBuffer[a] += w; + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + this.m_weightBuffer[a] += w; + this.m_weightBuffer[b] += w; + } + }; + b2ParticleSystem.prototype.SolvePressure = function (step) { + var s_f = b2ParticleSystem.SolvePressure_s_f; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var criticalPressure = this.GetCriticalPressure(step); + var pressurePerWeight = this.m_def.pressureStrength * criticalPressure; + var maxPressure = b2_maxParticlePressure * criticalPressure; + for (var i = 0; i < this.m_count; i++) { + var w = this.m_weightBuffer[i]; + var h = pressurePerWeight * b2Max(0, w - b2_minParticleWeight); + this.m_accumulationBuffer[i] = b2Min(h, maxPressure); + } + if (this.m_allParticleFlags & b2ParticleSystem.k_noPressureFlags) for (var i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] & b2ParticleSystem.k_noPressureFlags && (this.m_accumulationBuffer[i] = 0); + if (this.m_allParticleFlags & exports.b2ParticleFlag.b2_staticPressureParticle) for (var i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] & exports.b2ParticleFlag.b2_staticPressureParticle && (this.m_accumulationBuffer[i] += this.m_staticPressureBuffer[i]); + var velocityPerPressure = step.dt / (this.m_def.density * this.m_particleDiameter); + var inv_mass = this.GetParticleInvMass(); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + var b = contact.body; + var w = contact.weight; + var m = contact.mass; + var n = contact.normal; + var p = pos_data[a]; + var h = this.m_accumulationBuffer[a] + pressurePerWeight * w; + var f = b2Vec2.MulSV(velocityPerPressure * w * m * h, n, s_f); + vel_data[a].SelfMulSub(inv_mass, f); + b.ApplyLinearImpulse(f, p, true); + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + var n = contact.normal; + var h = this.m_accumulationBuffer[a] + this.m_accumulationBuffer[b]; + var f = b2Vec2.MulSV(velocityPerPressure * w * h, n, s_f); + vel_data[a].SelfSub(f); + vel_data[b].SelfAdd(f); + } + }; + b2ParticleSystem.prototype.SolveDamping = function (step) { + var s_v = b2ParticleSystem.SolveDamping_s_v; + var s_f = b2ParticleSystem.SolveDamping_s_f; + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var linearDamping = this.m_def.dampingStrength; + var quadraticDamping = 1 / this.GetCriticalVelocity(step); + var inv_mass = this.GetParticleInvMass(); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + var b = contact.body; + var w = contact.weight; + var m = contact.mass; + var n = contact.normal; + var p = pos_data[a]; + var v = b2Vec2.SubVV(b.GetLinearVelocityFromWorldPoint(p, b2Vec2.s_t0), vel_data[a], s_v); + var vn = b2Vec2.DotVV(v, n); + if (vn < 0) { + var damping = b2Max(linearDamping * w, b2Min(-quadraticDamping * vn, .5)); + var f = b2Vec2.MulSV(damping * m * vn, n, s_f); + vel_data[a].SelfMulAdd(inv_mass, f); + b.ApplyLinearImpulse(f.SelfNeg(), p, true); + } + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + var n = contact.normal; + var v = b2Vec2.SubVV(vel_data[b], vel_data[a], s_v); + var vn = b2Vec2.DotVV(v, n); + if (vn < 0) { + var damping = b2Max(linearDamping * w, b2Min(-quadraticDamping * vn, .5)); + var f = b2Vec2.MulSV(damping * vn, n, s_f); + vel_data[a].SelfAdd(f); + vel_data[b].SelfSub(f); + } + } + }; + b2ParticleSystem.prototype.SolveRigidDamping = function () { + var s_t0 = b2ParticleSystem.SolveRigidDamping_s_t0; + var s_t1 = b2ParticleSystem.SolveRigidDamping_s_t1; + var s_p = b2ParticleSystem.SolveRigidDamping_s_p; + var s_v = b2ParticleSystem.SolveRigidDamping_s_v; + var invMassA = [0], invInertiaA = [0], tangentDistanceA = [0]; + var invMassB = [0], invInertiaB = [0], tangentDistanceB = [0]; + if (!this.m_positionBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var damping = this.m_def.dampingStrength; + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + var aGroup = this.m_groupBuffer[a]; + if (aGroup && this.IsRigidGroup(aGroup)) { + var b = contact.body; + var n = contact.normal; + var w = contact.weight; + var p = pos_data[a]; + var v = b2Vec2.SubVV(b.GetLinearVelocityFromWorldPoint(p, s_t0), aGroup.GetLinearVelocityFromWorldPoint(p, s_t1), s_v); + var vn = b2Vec2.DotVV(v, n); + if (vn < 0) { + this.InitDampingParameterWithRigidGroupOrParticle(invMassA, invInertiaA, tangentDistanceA, true, aGroup, a, p, n); + this.InitDampingParameter(invMassB, invInertiaB, tangentDistanceB, b.GetMass(), b.GetInertia() - b.GetMass() * b.GetLocalCenter().LengthSquared(), b.GetWorldCenter(), p, n); + var f = damping * b2Min(w, 1) * this.ComputeDampingImpulse(invMassA[0], invInertiaA[0], tangentDistanceA[0], invMassB[0], invInertiaB[0], tangentDistanceB[0], vn); + this.ApplyDamping(invMassA[0], invInertiaA[0], tangentDistanceA[0], true, aGroup, a, f, n); + b.ApplyLinearImpulse(b2Vec2.MulSV(-f, n, b2Vec2.s_t0), p, true); + } + } + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + var n = contact.normal; + var w = contact.weight; + var aGroup = this.m_groupBuffer[a]; + var bGroup = this.m_groupBuffer[b]; + var aRigid = this.IsRigidGroup(aGroup); + var bRigid = this.IsRigidGroup(bGroup); + if (aGroup !== bGroup && (aRigid || bRigid)) { + var p = b2Vec2.MidVV(pos_data[a], pos_data[b], s_p); + var v = b2Vec2.SubVV(this.GetLinearVelocity(bGroup, b, p, s_t0), this.GetLinearVelocity(aGroup, a, p, s_t1), s_v); + var vn = b2Vec2.DotVV(v, n); + if (vn < 0) { + this.InitDampingParameterWithRigidGroupOrParticle(invMassA, invInertiaA, tangentDistanceA, aRigid, aGroup, a, p, n); + this.InitDampingParameterWithRigidGroupOrParticle(invMassB, invInertiaB, tangentDistanceB, bRigid, bGroup, b, p, n); + var f = damping * w * this.ComputeDampingImpulse(invMassA[0], invInertiaA[0], tangentDistanceA[0], invMassB[0], invInertiaB[0], tangentDistanceB[0], vn); + this.ApplyDamping(invMassA[0], invInertiaA[0], tangentDistanceA[0], aRigid, aGroup, a, f, n); + this.ApplyDamping(invMassB[0], invInertiaB[0], tangentDistanceB[0], bRigid, bGroup, b, -f, n); + } + } + } + }; + b2ParticleSystem.prototype.SolveExtraDamping = function () { + var s_v = b2ParticleSystem.SolveExtraDamping_s_v; + var s_f = b2ParticleSystem.SolveExtraDamping_s_f; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + var pos_data = this.m_positionBuffer.data; + var inv_mass = this.GetParticleInvMass(); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + if (this.m_flagsBuffer.data[a] & b2ParticleSystem.k_extraDampingFlags) { + var b = contact.body; + var m = contact.mass; + var n = contact.normal; + var p = pos_data[a]; + var v = b2Vec2.SubVV(b.GetLinearVelocityFromWorldPoint(p, b2Vec2.s_t0), vel_data[a], s_v); + var vn = b2Vec2.DotVV(v, n); + if (vn < 0) { + var f = b2Vec2.MulSV(.5 * m * vn, n, s_f); + vel_data[a].SelfMulAdd(inv_mass, f); + b.ApplyLinearImpulse(f.SelfNeg(), p, true); + } + } + } + }; + b2ParticleSystem.prototype.SolveWall = function () { + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + for (var i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] & exports.b2ParticleFlag.b2_wallParticle && vel_data[i].SetZero(); + }; + b2ParticleSystem.prototype.SolveRigid = function (step) { + var s_position = b2ParticleSystem.SolveRigid_s_position; + var s_rotation = b2ParticleSystem.SolveRigid_s_rotation; + var s_transform = b2ParticleSystem.SolveRigid_s_transform; + var s_velocityTransform = b2ParticleSystem.SolveRigid_s_velocityTransform; + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + for (var group = this.m_groupList; group; group = group.GetNext()) if (group.m_groupFlags & exports.b2ParticleGroupFlag.b2_rigidParticleGroup) { + group.UpdateStatistics(); + var rotation = s_rotation; + rotation.SetAngle(step.dt * group.m_angularVelocity); + var position = b2Vec2.AddVV(group.m_center, b2Vec2.SubVV(b2Vec2.MulSV(step.dt, group.m_linearVelocity, b2Vec2.s_t0), b2Rot.MulRV(rotation, group.m_center, b2Vec2.s_t1), b2Vec2.s_t0), s_position); + var transform = s_transform; + transform.SetPositionRotation(position, rotation); + b2Transform.MulXX(transform, group.m_transform, group.m_transform); + var velocityTransform = s_velocityTransform; + velocityTransform.p.x = step.inv_dt * transform.p.x; + velocityTransform.p.y = step.inv_dt * transform.p.y; + velocityTransform.q.s = step.inv_dt * transform.q.s; + velocityTransform.q.c = step.inv_dt * (transform.q.c - 1); + for (var i = group.m_firstIndex; i < group.m_lastIndex; i++) b2Transform.MulXV(velocityTransform, pos_data[i], vel_data[i]); + } + }; + b2ParticleSystem.prototype.SolveElastic = function (step) { + var s_pa = b2ParticleSystem.SolveElastic_s_pa; + var s_pb = b2ParticleSystem.SolveElastic_s_pb; + var s_pc = b2ParticleSystem.SolveElastic_s_pc; + var s_r = b2ParticleSystem.SolveElastic_s_r; + var s_t0 = b2ParticleSystem.SolveElastic_s_t0; + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var elasticStrength = step.inv_dt * this.m_def.elasticStrength; + for (var k = 0; k < this.m_triadBuffer.count; k++) { + var triad = this.m_triadBuffer.data[k]; + if (triad.flags & exports.b2ParticleFlag.b2_elasticParticle) { + var a = triad.indexA; + var b = triad.indexB; + var c = triad.indexC; + var oa = triad.pa; + var ob = triad.pb; + var oc = triad.pc; + var pa = s_pa.Copy(pos_data[a]); + var pb = s_pb.Copy(pos_data[b]); + var pc = s_pc.Copy(pos_data[c]); + var va = vel_data[a]; + var vb = vel_data[b]; + var vc = vel_data[c]; + pa.SelfMulAdd(step.dt, va); + pb.SelfMulAdd(step.dt, vb); + pc.SelfMulAdd(step.dt, vc); + var midPoint_x = (pa.x + pb.x + pc.x) / 3; + var midPoint_y = (pa.y + pb.y + pc.y) / 3; + pa.x -= midPoint_x; + pa.y -= midPoint_y; + pb.x -= midPoint_x; + pb.y -= midPoint_y; + pc.x -= midPoint_x; + pc.y -= midPoint_y; + var r = s_r; + r.s = b2Vec2.CrossVV(oa, pa) + b2Vec2.CrossVV(ob, pb) + b2Vec2.CrossVV(oc, pc); + r.c = b2Vec2.DotVV(oa, pa) + b2Vec2.DotVV(ob, pb) + b2Vec2.DotVV(oc, pc); + var r2 = r.s * r.s + r.c * r.c; + var invR = b2InvSqrt(r2); + isFinite(invR) || (invR = 198177537e11); + r.s *= invR; + r.c *= invR; + var strength = elasticStrength * triad.strength; + b2Rot.MulRV(r, oa, s_t0); + b2Vec2.SubVV(s_t0, pa, s_t0); + b2Vec2.MulSV(strength, s_t0, s_t0); + va.SelfAdd(s_t0); + b2Rot.MulRV(r, ob, s_t0); + b2Vec2.SubVV(s_t0, pb, s_t0); + b2Vec2.MulSV(strength, s_t0, s_t0); + vb.SelfAdd(s_t0); + b2Rot.MulRV(r, oc, s_t0); + b2Vec2.SubVV(s_t0, pc, s_t0); + b2Vec2.MulSV(strength, s_t0, s_t0); + vc.SelfAdd(s_t0); + } + } + }; + b2ParticleSystem.prototype.SolveSpring = function (step) { + var s_pa = b2ParticleSystem.SolveSpring_s_pa; + var s_pb = b2ParticleSystem.SolveSpring_s_pb; + var s_d = b2ParticleSystem.SolveSpring_s_d; + var s_f = b2ParticleSystem.SolveSpring_s_f; + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var springStrength = step.inv_dt * this.m_def.springStrength; + for (var k = 0; k < this.m_pairBuffer.count; k++) { + var pair = this.m_pairBuffer.data[k]; + if (pair.flags & exports.b2ParticleFlag.b2_springParticle) { + var a = pair.indexA; + var b = pair.indexB; + var pa = s_pa.Copy(pos_data[a]); + var pb = s_pb.Copy(pos_data[b]); + var va = vel_data[a]; + var vb = vel_data[b]; + pa.SelfMulAdd(step.dt, va); + pb.SelfMulAdd(step.dt, vb); + var d = b2Vec2.SubVV(pb, pa, s_d); + var r0 = pair.distance; + var r1 = d.Length(); + var strength = springStrength * pair.strength; + var f = b2Vec2.MulSV(strength * (r0 - r1) / r1, d, s_f); + va.SelfSub(f); + vb.SelfAdd(f); + } + } + }; + b2ParticleSystem.prototype.SolveTensile = function (step) { + var s_weightedNormal = b2ParticleSystem.SolveTensile_s_weightedNormal; + var s_s = b2ParticleSystem.SolveTensile_s_s; + var s_f = b2ParticleSystem.SolveTensile_s_f; + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + for (var i = 0; i < this.m_count; i++) { + this.m_accumulation2Buffer[i] = new b2Vec2(); + this.m_accumulation2Buffer[i].SetZero(); + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_tensileParticle) { + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + var n = contact.normal; + var weightedNormal = b2Vec2.MulSV((1 - w) * w, n, s_weightedNormal); + this.m_accumulation2Buffer[a].SelfSub(weightedNormal); + this.m_accumulation2Buffer[b].SelfAdd(weightedNormal); + } + } + var criticalVelocity = this.GetCriticalVelocity(step); + var pressureStrength = this.m_def.surfaceTensionPressureStrength * criticalVelocity; + var normalStrength = this.m_def.surfaceTensionNormalStrength * criticalVelocity; + var maxVelocityVariation = b2_maxParticleForce * criticalVelocity; + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_tensileParticle) { + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + var n = contact.normal; + var h = this.m_weightBuffer[a] + this.m_weightBuffer[b]; + var s = b2Vec2.SubVV(this.m_accumulation2Buffer[b], this.m_accumulation2Buffer[a], s_s); + var fn = b2Min(pressureStrength * (h - 2) + normalStrength * b2Vec2.DotVV(s, n), maxVelocityVariation) * w; + var f = b2Vec2.MulSV(fn, n, s_f); + vel_data[a].SelfSub(f); + vel_data[b].SelfAdd(f); + } + } + }; + b2ParticleSystem.prototype.SolveViscous = function () { + var s_v = b2ParticleSystem.SolveViscous_s_v; + var s_f = b2ParticleSystem.SolveViscous_s_f; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var viscousStrength = this.m_def.viscousStrength; + var inv_mass = this.GetParticleInvMass(); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + if (this.m_flagsBuffer.data[a] & exports.b2ParticleFlag.b2_viscousParticle) { + var b = contact.body; + var w = contact.weight; + var m = contact.mass; + var p = pos_data[a]; + var v = b2Vec2.SubVV(b.GetLinearVelocityFromWorldPoint(p, b2Vec2.s_t0), vel_data[a], s_v); + var f = b2Vec2.MulSV(viscousStrength * m * w, v, s_f); + vel_data[a].SelfMulAdd(inv_mass, f); + b.ApplyLinearImpulse(f.SelfNeg(), p, true); + } + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_viscousParticle) { + var a = contact.indexA; + var b = contact.indexB; + var w = contact.weight; + var v = b2Vec2.SubVV(vel_data[b], vel_data[a], s_v); + var f = b2Vec2.MulSV(viscousStrength * w, v, s_f); + vel_data[a].SelfAdd(f); + vel_data[b].SelfSub(f); + } + } + }; + b2ParticleSystem.prototype.SolveRepulsive = function (step) { + var s_f = b2ParticleSystem.SolveRepulsive_s_f; + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + var repulsiveStrength = this.m_def.repulsiveStrength * this.GetCriticalVelocity(step); + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_repulsiveParticle) { + var a = contact.indexA; + var b = contact.indexB; + if (this.m_groupBuffer[a] !== this.m_groupBuffer[b]) { + var w = contact.weight; + var n = contact.normal; + var f = b2Vec2.MulSV(repulsiveStrength * w, n, s_f); + vel_data[a].SelfSub(f); + vel_data[b].SelfAdd(f); + } + } + } + }; + b2ParticleSystem.prototype.SolvePowder = function (step) { + var s_f = b2ParticleSystem.SolvePowder_s_f; + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var pos_data = this.m_positionBuffer.data; + var vel_data = this.m_velocityBuffer.data; + var powderStrength = this.m_def.powderStrength * this.GetCriticalVelocity(step); + var minWeight = 1 - b2_particleStride; + var inv_mass = this.GetParticleInvMass(); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + var a = contact.index; + if (this.m_flagsBuffer.data[a] & exports.b2ParticleFlag.b2_powderParticle) { + var w = contact.weight; + if (w > minWeight) { + var b = contact.body; + var m = contact.mass; + var p = pos_data[a]; + var n = contact.normal; + var f = b2Vec2.MulSV(powderStrength * m * (w - minWeight), n, s_f); + vel_data[a].SelfMulSub(inv_mass, f); + b.ApplyLinearImpulse(f, p, true); + } + } + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + if (contact.flags & exports.b2ParticleFlag.b2_powderParticle) { + var w = contact.weight; + if (w > minWeight) { + var a = contact.indexA; + var b = contact.indexB; + var n = contact.normal; + var f = b2Vec2.MulSV(powderStrength * (w - minWeight), n, s_f); + vel_data[a].SelfSub(f); + vel_data[b].SelfAdd(f); + } + } + } + }; + b2ParticleSystem.prototype.SolveSolid = function (step) { + var s_f = b2ParticleSystem.SolveSolid_s_f; + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + this.m_depthBuffer = this.RequestBuffer(this.m_depthBuffer); + var ejectionStrength = step.inv_dt * this.m_def.ejectionStrength; + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + if (this.m_groupBuffer[a] !== this.m_groupBuffer[b]) { + var w = contact.weight; + var n = contact.normal; + var h = this.m_depthBuffer[a] + this.m_depthBuffer[b]; + var f = b2Vec2.MulSV(ejectionStrength * h * w, n, s_f); + vel_data[a].SelfSub(f); + vel_data[b].SelfAdd(f); + } + } + }; + b2ParticleSystem.prototype.SolveForce = function (step) { + if (!this.m_velocityBuffer.data) throw new Error(); + var vel_data = this.m_velocityBuffer.data; + var velocityPerForce = step.dt * this.GetParticleInvMass(); + for (var i = 0; i < this.m_count; i++) vel_data[i].SelfMulAdd(velocityPerForce, this.m_forceBuffer[i]); + this.m_hasForce = false; + }; + b2ParticleSystem.prototype.SolveColorMixing = function () { + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_colorBuffer.data) throw new Error(); + var colorMixing = .5 * this.m_def.colorMixingStrength; + if (colorMixing) for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + var a = contact.indexA; + var b = contact.indexB; + if (this.m_flagsBuffer.data[a] & this.m_flagsBuffer.data[b] & exports.b2ParticleFlag.b2_colorMixingParticle) { + var colorA = this.m_colorBuffer.data[a]; + var colorB = this.m_colorBuffer.data[b]; + b2Color.MixColors(colorA, colorB, colorMixing); + } + } + }; + b2ParticleSystem.prototype.SolveZombie = function () { + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + var newCount = 0; + var newIndices = []; + for (var i = 0; i < this.m_count; i++) newIndices[i] = b2_invalidParticleIndex; + var allParticleFlags = 0; + for (var i = 0; i < this.m_count; i++) { + var flags = this.m_flagsBuffer.data[i]; + if (flags & exports.b2ParticleFlag.b2_zombieParticle) { + var destructionListener = this.m_world.m_destructionListener; + flags & exports.b2ParticleFlag.b2_destructionListenerParticle && destructionListener && destructionListener.SayGoodbyeParticle(this, i); + if (this.m_handleIndexBuffer.data) { + var handle = this.m_handleIndexBuffer.data[i]; + if (handle) { + handle.SetIndex(b2_invalidParticleIndex); + this.m_handleIndexBuffer.data[i] = null; + } + } + newIndices[i] = b2_invalidParticleIndex; + } else { + newIndices[i] = newCount; + if (i !== newCount) { + if (this.m_handleIndexBuffer.data) { + var handle = this.m_handleIndexBuffer.data[i]; + handle && handle.SetIndex(newCount); + this.m_handleIndexBuffer.data[newCount] = handle; + } + this.m_flagsBuffer.data[newCount] = this.m_flagsBuffer.data[i]; + this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[newCount] = this.m_lastBodyContactStepBuffer.data[i]); + this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[newCount] = this.m_bodyContactCountBuffer.data[i]); + this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[newCount] = this.m_consecutiveContactStepsBuffer.data[i]); + this.m_positionBuffer.data[newCount].Copy(this.m_positionBuffer.data[i]); + this.m_velocityBuffer.data[newCount].Copy(this.m_velocityBuffer.data[i]); + this.m_groupBuffer[newCount] = this.m_groupBuffer[i]; + this.m_hasForce && this.m_forceBuffer[newCount].Copy(this.m_forceBuffer[i]); + this.m_staticPressureBuffer && (this.m_staticPressureBuffer[newCount] = this.m_staticPressureBuffer[i]); + this.m_depthBuffer && (this.m_depthBuffer[newCount] = this.m_depthBuffer[i]); + this.m_colorBuffer.data && this.m_colorBuffer.data[newCount].Copy(this.m_colorBuffer.data[i]); + this.m_userDataBuffer.data && (this.m_userDataBuffer.data[newCount] = this.m_userDataBuffer.data[i]); + this.m_expirationTimeBuffer.data && (this.m_expirationTimeBuffer.data[newCount] = this.m_expirationTimeBuffer.data[i]); + } + newCount++; + allParticleFlags |= flags; + } + } + var Test = { + IsProxyInvalid: function IsProxyInvalid(proxy) { + return proxy.index < 0; + }, + IsContactInvalid: function IsContactInvalid(contact) { + return contact.indexA < 0 || contact.indexB < 0; + }, + IsBodyContactInvalid: function IsBodyContactInvalid(contact) { + return contact.index < 0; + }, + IsPairInvalid: function IsPairInvalid(pair) { + return pair.indexA < 0 || pair.indexB < 0; + }, + IsTriadInvalid: function IsTriadInvalid(triad) { + return triad.indexA < 0 || triad.indexB < 0 || triad.indexC < 0; + } + }; + for (var k = 0; k < this.m_proxyBuffer.count; k++) { + var proxy = this.m_proxyBuffer.data[k]; + proxy.index = newIndices[proxy.index]; + } + this.m_proxyBuffer.RemoveIf(Test.IsProxyInvalid); + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + contact.indexA = newIndices[contact.indexA]; + contact.indexB = newIndices[contact.indexB]; + } + this.m_contactBuffer.RemoveIf(Test.IsContactInvalid); + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + contact.index = newIndices[contact.index]; + } + this.m_bodyContactBuffer.RemoveIf(Test.IsBodyContactInvalid); + for (var k = 0; k < this.m_pairBuffer.count; k++) { + var pair = this.m_pairBuffer.data[k]; + pair.indexA = newIndices[pair.indexA]; + pair.indexB = newIndices[pair.indexB]; + } + this.m_pairBuffer.RemoveIf(Test.IsPairInvalid); + for (var k = 0; k < this.m_triadBuffer.count; k++) { + var triad = this.m_triadBuffer.data[k]; + triad.indexA = newIndices[triad.indexA]; + triad.indexB = newIndices[triad.indexB]; + triad.indexC = newIndices[triad.indexC]; + } + this.m_triadBuffer.RemoveIf(Test.IsTriadInvalid); + if (this.m_indexByExpirationTimeBuffer.data) { + var writeOffset = 0; + for (var readOffset = 0; readOffset < this.m_count; readOffset++) { + var newIndex = newIndices[this.m_indexByExpirationTimeBuffer.data[readOffset]]; + newIndex !== b2_invalidParticleIndex && (this.m_indexByExpirationTimeBuffer.data[writeOffset++] = newIndex); + } + } + for (var group = this.m_groupList; group; group = group.GetNext()) { + var firstIndex = newCount; + var lastIndex = 0; + var modified = false; + for (var i = group.m_firstIndex; i < group.m_lastIndex; i++) { + var j = newIndices[i]; + if (j >= 0) { + firstIndex = b2Min(firstIndex, j); + lastIndex = b2Max(lastIndex, j + 1); + } else modified = true; + } + if (firstIndex < lastIndex) { + group.m_firstIndex = firstIndex; + group.m_lastIndex = lastIndex; + modified && group.m_groupFlags & exports.b2ParticleGroupFlag.b2_solidParticleGroup && this.SetGroupFlags(group, group.m_groupFlags | exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth); + } else { + group.m_firstIndex = 0; + group.m_lastIndex = 0; + group.m_groupFlags & exports.b2ParticleGroupFlag.b2_particleGroupCanBeEmpty || this.SetGroupFlags(group, group.m_groupFlags | exports.b2ParticleGroupFlag.b2_particleGroupWillBeDestroyed); + } + } + this.m_count = newCount; + this.m_allParticleFlags = allParticleFlags; + this.m_needsUpdateAllParticleFlags = false; + for (var group = this.m_groupList; group;) { + var next = group.GetNext(); + group.m_groupFlags & exports.b2ParticleGroupFlag.b2_particleGroupWillBeDestroyed && this.DestroyParticleGroup(group); + group = next; + } + }; + b2ParticleSystem.prototype.SolveLifetimes = function (step) { + if (!this.m_expirationTimeBuffer.data) throw new Error(); + if (!this.m_indexByExpirationTimeBuffer.data) throw new Error(); + this.m_timeElapsed = this.LifetimeToExpirationTime(step.dt); + var quantizedTimeElapsed = this.GetQuantizedTimeElapsed(); + var expirationTimes = this.m_expirationTimeBuffer.data; + var expirationTimeIndices = this.m_indexByExpirationTimeBuffer.data; + var particleCount = this.GetParticleCount(); + if (this.m_expirationTimeBufferRequiresSorting) { + var ExpirationTimeComparator = function ExpirationTimeComparator(particleIndexA, particleIndexB) { + var expirationTimeA = expirationTimes[particleIndexA]; + var expirationTimeB = expirationTimes[particleIndexB]; + var infiniteExpirationTimeA = expirationTimeA <= 0; + var infiniteExpirationTimeB = expirationTimeB <= 0; + return infiniteExpirationTimeA === infiniteExpirationTimeB ? expirationTimeA > expirationTimeB : infiniteExpirationTimeA; + }; + std_sort(expirationTimeIndices, 0, particleCount, ExpirationTimeComparator); + this.m_expirationTimeBufferRequiresSorting = false; + } + for (var i = particleCount - 1; i >= 0; --i) { + var particleIndex = expirationTimeIndices[i]; + var expirationTime = expirationTimes[particleIndex]; + if (quantizedTimeElapsed < expirationTime || expirationTime <= 0) break; + this.DestroyParticle(particleIndex); + } + }; + b2ParticleSystem.prototype.RotateBuffer = function (start, mid, end) { + if (start === mid || mid === end) return; + function newIndices(i) { + return i < start ? i : i < mid ? i + end - mid : i < end ? i + start - mid : i; + } + if (!this.m_flagsBuffer.data) throw new Error(); + if (!this.m_positionBuffer.data) throw new Error(); + if (!this.m_velocityBuffer.data) throw new Error(); + std_rotate(this.m_flagsBuffer.data, start, mid, end); + this.m_lastBodyContactStepBuffer.data && std_rotate(this.m_lastBodyContactStepBuffer.data, start, mid, end); + this.m_bodyContactCountBuffer.data && std_rotate(this.m_bodyContactCountBuffer.data, start, mid, end); + this.m_consecutiveContactStepsBuffer.data && std_rotate(this.m_consecutiveContactStepsBuffer.data, start, mid, end); + std_rotate(this.m_positionBuffer.data, start, mid, end); + std_rotate(this.m_velocityBuffer.data, start, mid, end); + std_rotate(this.m_groupBuffer, start, mid, end); + this.m_hasForce && std_rotate(this.m_forceBuffer, start, mid, end); + this.m_staticPressureBuffer && std_rotate(this.m_staticPressureBuffer, start, mid, end); + this.m_depthBuffer && std_rotate(this.m_depthBuffer, start, mid, end); + this.m_colorBuffer.data && std_rotate(this.m_colorBuffer.data, start, mid, end); + this.m_userDataBuffer.data && std_rotate(this.m_userDataBuffer.data, start, mid, end); + if (this.m_handleIndexBuffer.data) { + std_rotate(this.m_handleIndexBuffer.data, start, mid, end); + for (var i = start; i < end; ++i) { + var handle = this.m_handleIndexBuffer.data[i]; + handle && handle.SetIndex(newIndices(handle.GetIndex())); + } + } + if (this.m_expirationTimeBuffer.data) { + std_rotate(this.m_expirationTimeBuffer.data, start, mid, end); + var particleCount = this.GetParticleCount(); + if (!this.m_indexByExpirationTimeBuffer.data) throw new Error(); + var indexByExpirationTime = this.m_indexByExpirationTimeBuffer.data; + for (var i = 0; i < particleCount; ++i) indexByExpirationTime[i] = newIndices(indexByExpirationTime[i]); + } + for (var k = 0; k < this.m_proxyBuffer.count; k++) { + var proxy = this.m_proxyBuffer.data[k]; + proxy.index = newIndices(proxy.index); + } + for (var k = 0; k < this.m_contactBuffer.count; k++) { + var contact = this.m_contactBuffer.data[k]; + contact.indexA = newIndices(contact.indexA); + contact.indexB = newIndices(contact.indexB); + } + for (var k = 0; k < this.m_bodyContactBuffer.count; k++) { + var contact = this.m_bodyContactBuffer.data[k]; + contact.index = newIndices(contact.index); + } + for (var k = 0; k < this.m_pairBuffer.count; k++) { + var pair = this.m_pairBuffer.data[k]; + pair.indexA = newIndices(pair.indexA); + pair.indexB = newIndices(pair.indexB); + } + for (var k = 0; k < this.m_triadBuffer.count; k++) { + var triad = this.m_triadBuffer.data[k]; + triad.indexA = newIndices(triad.indexA); + triad.indexB = newIndices(triad.indexB); + triad.indexC = newIndices(triad.indexC); + } + for (var group = this.m_groupList; group; group = group.GetNext()) { + group.m_firstIndex = newIndices(group.m_firstIndex); + group.m_lastIndex = newIndices(group.m_lastIndex - 1) + 1; + } + }; + b2ParticleSystem.prototype.GetCriticalVelocity = function (step) { + return this.m_particleDiameter * step.inv_dt; + }; + b2ParticleSystem.prototype.GetCriticalVelocitySquared = function (step) { + var velocity = this.GetCriticalVelocity(step); + return velocity * velocity; + }; + b2ParticleSystem.prototype.GetCriticalPressure = function (step) { + return this.m_def.density * this.GetCriticalVelocitySquared(step); + }; + b2ParticleSystem.prototype.GetParticleStride = function () { + return b2_particleStride * this.m_particleDiameter; + }; + b2ParticleSystem.prototype.GetParticleMass = function () { + var stride = this.GetParticleStride(); + return this.m_def.density * stride * stride; + }; + b2ParticleSystem.prototype.GetParticleInvMass = function () { + var inverseStride = this.m_inverseDiameter * (1 / b2_particleStride); + return this.m_inverseDensity * inverseStride * inverseStride; + }; + b2ParticleSystem.prototype.GetFixtureContactFilter = function () { + return this.m_allParticleFlags & exports.b2ParticleFlag.b2_fixtureContactFilterParticle ? this.m_world.m_contactManager.m_contactFilter : null; + }; + b2ParticleSystem.prototype.GetParticleContactFilter = function () { + return this.m_allParticleFlags & exports.b2ParticleFlag.b2_particleContactFilterParticle ? this.m_world.m_contactManager.m_contactFilter : null; + }; + b2ParticleSystem.prototype.GetFixtureContactListener = function () { + return this.m_allParticleFlags & exports.b2ParticleFlag.b2_fixtureContactListenerParticle ? this.m_world.m_contactManager.m_contactListener : null; + }; + b2ParticleSystem.prototype.GetParticleContactListener = function () { + return this.m_allParticleFlags & exports.b2ParticleFlag.b2_particleContactListenerParticle ? this.m_world.m_contactManager.m_contactListener : null; + }; + b2ParticleSystem.prototype.SetUserOverridableBuffer = function (buffer, newData, newCapacity) { + buffer.data = newData; + buffer.userSuppliedCapacity = newCapacity; + }; + b2ParticleSystem.prototype.SetGroupFlags = function (group, newFlags) { + var oldFlags = group.m_groupFlags; + (oldFlags ^ newFlags) & exports.b2ParticleGroupFlag.b2_solidParticleGroup && (newFlags |= exports.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth); + oldFlags & ~newFlags && (this.m_needsUpdateAllGroupFlags = true); + if (~this.m_allGroupFlags & newFlags) { + newFlags & exports.b2ParticleGroupFlag.b2_solidParticleGroup && (this.m_depthBuffer = this.RequestBuffer(this.m_depthBuffer)); + this.m_allGroupFlags |= newFlags; + } + group.m_groupFlags = newFlags; + }; + b2ParticleSystem.BodyContactCompare = function (lhs, rhs) { + if (lhs.index === rhs.index) return lhs.weight > rhs.weight; + return lhs.index < rhs.index; + }; + b2ParticleSystem.prototype.RemoveSpuriousBodyContacts = function () { + std_sort(this.m_bodyContactBuffer.data, 0, this.m_bodyContactBuffer.count, b2ParticleSystem.BodyContactCompare); + var s_n = b2ParticleSystem.RemoveSpuriousBodyContacts_s_n; + var s_pos = b2ParticleSystem.RemoveSpuriousBodyContacts_s_pos; + var s_normal = b2ParticleSystem.RemoveSpuriousBodyContacts_s_normal; + var k_maxContactsPerPoint = 3; + var system = this; + var lastIndex = -1; + var currentContacts = 0; + var b2ParticleBodyContactRemovePredicate = function b2ParticleBodyContactRemovePredicate(contact) { + if (contact.index !== lastIndex) { + currentContacts = 0; + lastIndex = contact.index; + } + if (currentContacts++ > k_maxContactsPerPoint) return true; + var n = s_n.Copy(contact.normal); + n.SelfMul(system.m_particleDiameter * (1 - contact.weight)); + if (!system.m_positionBuffer.data) throw new Error(); + var pos = b2Vec2.AddVV(system.m_positionBuffer.data[contact.index], n, s_pos); + if (!contact.fixture.TestPoint(pos)) { + var childCount = contact.fixture.GetShape().GetChildCount(); + for (var childIndex = 0; childIndex < childCount; childIndex++) { + var normal = s_normal; + var distance = contact.fixture.ComputeDistance(pos, normal, childIndex); + if (distance < b2_linearSlop) return false; + } + return true; + } + return false; + }; + this.m_bodyContactBuffer.count = std_remove_if(this.m_bodyContactBuffer.data, b2ParticleBodyContactRemovePredicate, this.m_bodyContactBuffer.count); + }; + b2ParticleSystem.prototype.DetectStuckParticle = function (particle) { + if (this.m_stuckThreshold <= 0) return; + if (!this.m_bodyContactCountBuffer.data) throw new Error(); + if (!this.m_consecutiveContactStepsBuffer.data) throw new Error(); + if (!this.m_lastBodyContactStepBuffer.data) throw new Error(); + ++this.m_bodyContactCountBuffer.data[particle]; + if (2 === this.m_bodyContactCountBuffer.data[particle]) { + ++this.m_consecutiveContactStepsBuffer.data[particle]; + this.m_consecutiveContactStepsBuffer.data[particle] > this.m_stuckThreshold && (this.m_stuckParticleBuffer.data[this.m_stuckParticleBuffer.Append()] = particle); + } + this.m_lastBodyContactStepBuffer.data[particle] = this.m_timestamp; + }; + b2ParticleSystem.prototype.ValidateParticleIndex = function (index) { + return index >= 0 && index < this.GetParticleCount() && index !== b2_invalidParticleIndex; + }; + b2ParticleSystem.prototype.GetQuantizedTimeElapsed = function () { + return Math.floor(this.m_timeElapsed / 4294967296); + }; + b2ParticleSystem.prototype.LifetimeToExpirationTime = function (lifetime) { + return this.m_timeElapsed + Math.floor(lifetime / this.m_def.lifetimeGranularity * 4294967296); + }; + b2ParticleSystem.prototype.ForceCanBeApplied = function (flags) { + return !(flags & exports.b2ParticleFlag.b2_wallParticle); + }; + b2ParticleSystem.prototype.PrepareForceBuffer = function () { + if (!this.m_hasForce) { + for (var i = 0; i < this.m_count; i++) this.m_forceBuffer[i].SetZero(); + this.m_hasForce = true; + } + }; + b2ParticleSystem.prototype.IsRigidGroup = function (group) { + return null !== group && 0 !== (group.m_groupFlags & exports.b2ParticleGroupFlag.b2_rigidParticleGroup); + }; + b2ParticleSystem.prototype.GetLinearVelocity = function (group, particleIndex, point, out) { + if (group && this.IsRigidGroup(group)) return group.GetLinearVelocityFromWorldPoint(point, out); + if (!this.m_velocityBuffer.data) throw new Error(); + return out.Copy(this.m_velocityBuffer.data[particleIndex]); + }; + b2ParticleSystem.prototype.InitDampingParameter = function (invMass, invInertia, tangentDistance, mass, inertia, center, point, normal) { + invMass[0] = mass > 0 ? 1 / mass : 0; + invInertia[0] = inertia > 0 ? 1 / inertia : 0; + tangentDistance[0] = b2Vec2.CrossVV(b2Vec2.SubVV(point, center, b2Vec2.s_t0), normal); + }; + b2ParticleSystem.prototype.InitDampingParameterWithRigidGroupOrParticle = function (invMass, invInertia, tangentDistance, isRigidGroup, group, particleIndex, point, normal) { + if (group && isRigidGroup) this.InitDampingParameter(invMass, invInertia, tangentDistance, group.GetMass(), group.GetInertia(), group.GetCenter(), point, normal); else { + if (!this.m_flagsBuffer.data) throw new Error(); + var flags = this.m_flagsBuffer.data[particleIndex]; + this.InitDampingParameter(invMass, invInertia, tangentDistance, flags & exports.b2ParticleFlag.b2_wallParticle ? 0 : this.GetParticleMass(), 0, point, point, normal); + } + }; + b2ParticleSystem.prototype.ComputeDampingImpulse = function (invMassA, invInertiaA, tangentDistanceA, invMassB, invInertiaB, tangentDistanceB, normalVelocity) { + var invMass = invMassA + invInertiaA * tangentDistanceA * tangentDistanceA + invMassB + invInertiaB * tangentDistanceB * tangentDistanceB; + return invMass > 0 ? normalVelocity / invMass : 0; + }; + b2ParticleSystem.prototype.ApplyDamping = function (invMass, invInertia, tangentDistance, isRigidGroup, group, particleIndex, impulse, normal) { + if (group && isRigidGroup) { + group.m_linearVelocity.SelfMulAdd(impulse * invMass, normal); + group.m_angularVelocity += impulse * tangentDistance * invInertia; + } else { + if (!this.m_velocityBuffer.data) throw new Error(); + this.m_velocityBuffer.data[particleIndex].SelfMulAdd(impulse * invMass, normal); + } + }; + b2ParticleSystem.xTruncBits = 12; + b2ParticleSystem.yTruncBits = 12; + b2ParticleSystem.tagBits = 32; + b2ParticleSystem.yOffset = 1 << b2ParticleSystem.yTruncBits - 1; + b2ParticleSystem.yShift = b2ParticleSystem.tagBits - b2ParticleSystem.yTruncBits; + b2ParticleSystem.xShift = b2ParticleSystem.tagBits - b2ParticleSystem.yTruncBits - b2ParticleSystem.xTruncBits; + b2ParticleSystem.xScale = 1 << b2ParticleSystem.xShift; + b2ParticleSystem.xOffset = b2ParticleSystem.xScale * (1 << b2ParticleSystem.xTruncBits - 1); + b2ParticleSystem.yMask = (1 << b2ParticleSystem.yTruncBits) - 1 << b2ParticleSystem.yShift; + b2ParticleSystem.xMask = ~b2ParticleSystem.yMask; + b2ParticleSystem.DestroyParticlesInShape_s_aabb = new b2AABB(); + b2ParticleSystem.CreateParticleGroup_s_transform = new b2Transform(); + b2ParticleSystem.ComputeCollisionEnergy_s_v = new b2Vec2(); + b2ParticleSystem.QueryShapeAABB_s_aabb = new b2AABB(); + b2ParticleSystem.QueryPointAABB_s_aabb = new b2AABB(); + b2ParticleSystem.RayCast_s_aabb = new b2AABB(); + b2ParticleSystem.RayCast_s_p = new b2Vec2(); + b2ParticleSystem.RayCast_s_v = new b2Vec2(); + b2ParticleSystem.RayCast_s_n = new b2Vec2(); + b2ParticleSystem.RayCast_s_point = new b2Vec2(); + b2ParticleSystem.k_pairFlags = exports.b2ParticleFlag.b2_springParticle; + b2ParticleSystem.k_triadFlags = exports.b2ParticleFlag.b2_elasticParticle; + b2ParticleSystem.k_noPressureFlags = exports.b2ParticleFlag.b2_powderParticle | exports.b2ParticleFlag.b2_tensileParticle; + b2ParticleSystem.k_extraDampingFlags = exports.b2ParticleFlag.b2_staticPressureParticle; + b2ParticleSystem.k_barrierWallFlags = exports.b2ParticleFlag.b2_barrierParticle | exports.b2ParticleFlag.b2_wallParticle; + b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_edge = new b2EdgeShape(); + b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_d = new b2Vec2(); + b2ParticleSystem.CreateParticlesStrokeShapeForGroup_s_p = new b2Vec2(); + b2ParticleSystem.CreateParticlesFillShapeForGroup_s_aabb = new b2AABB(); + b2ParticleSystem.CreateParticlesFillShapeForGroup_s_p = new b2Vec2(); + b2ParticleSystem.UpdatePairsAndTriads_s_dab = new b2Vec2(); + b2ParticleSystem.UpdatePairsAndTriads_s_dbc = new b2Vec2(); + b2ParticleSystem.UpdatePairsAndTriads_s_dca = new b2Vec2(); + b2ParticleSystem.AddContact_s_d = new b2Vec2(); + b2ParticleSystem.UpdateBodyContacts_s_aabb = new b2AABB(); + b2ParticleSystem.Solve_s_subStep = new b2TimeStep(); + b2ParticleSystem.SolveCollision_s_aabb = new b2AABB(); + b2ParticleSystem.SolveGravity_s_gravity = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_aabb = new b2AABB(); + b2ParticleSystem.SolveBarrier_s_va = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_vb = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_pba = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_vba = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_vc = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_pca = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_vca = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_qba = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_qca = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_dv = new b2Vec2(); + b2ParticleSystem.SolveBarrier_s_f = new b2Vec2(); + b2ParticleSystem.SolvePressure_s_f = new b2Vec2(); + b2ParticleSystem.SolveDamping_s_v = new b2Vec2(); + b2ParticleSystem.SolveDamping_s_f = new b2Vec2(); + b2ParticleSystem.SolveRigidDamping_s_t0 = new b2Vec2(); + b2ParticleSystem.SolveRigidDamping_s_t1 = new b2Vec2(); + b2ParticleSystem.SolveRigidDamping_s_p = new b2Vec2(); + b2ParticleSystem.SolveRigidDamping_s_v = new b2Vec2(); + b2ParticleSystem.SolveExtraDamping_s_v = new b2Vec2(); + b2ParticleSystem.SolveExtraDamping_s_f = new b2Vec2(); + b2ParticleSystem.SolveRigid_s_position = new b2Vec2(); + b2ParticleSystem.SolveRigid_s_rotation = new b2Rot(); + b2ParticleSystem.SolveRigid_s_transform = new b2Transform(); + b2ParticleSystem.SolveRigid_s_velocityTransform = new b2Transform(); + b2ParticleSystem.SolveElastic_s_pa = new b2Vec2(); + b2ParticleSystem.SolveElastic_s_pb = new b2Vec2(); + b2ParticleSystem.SolveElastic_s_pc = new b2Vec2(); + b2ParticleSystem.SolveElastic_s_r = new b2Rot(); + b2ParticleSystem.SolveElastic_s_t0 = new b2Vec2(); + b2ParticleSystem.SolveSpring_s_pa = new b2Vec2(); + b2ParticleSystem.SolveSpring_s_pb = new b2Vec2(); + b2ParticleSystem.SolveSpring_s_d = new b2Vec2(); + b2ParticleSystem.SolveSpring_s_f = new b2Vec2(); + b2ParticleSystem.SolveTensile_s_weightedNormal = new b2Vec2(); + b2ParticleSystem.SolveTensile_s_s = new b2Vec2(); + b2ParticleSystem.SolveTensile_s_f = new b2Vec2(); + b2ParticleSystem.SolveViscous_s_v = new b2Vec2(); + b2ParticleSystem.SolveViscous_s_f = new b2Vec2(); + b2ParticleSystem.SolveRepulsive_s_f = new b2Vec2(); + b2ParticleSystem.SolvePowder_s_f = new b2Vec2(); + b2ParticleSystem.SolveSolid_s_f = new b2Vec2(); + b2ParticleSystem.RemoveSpuriousBodyContacts_s_n = new b2Vec2(); + b2ParticleSystem.RemoveSpuriousBodyContacts_s_pos = new b2Vec2(); + b2ParticleSystem.RemoveSpuriousBodyContacts_s_normal = new b2Vec2(); + return b2ParticleSystem; + })(); + (function (b2ParticleSystem) { + var UserOverridableBuffer = (function () { + function UserOverridableBuffer() { + this.data = null; + this.userSuppliedCapacity = 0; + } + return UserOverridableBuffer; + })(); + b2ParticleSystem.UserOverridableBuffer = UserOverridableBuffer; + var Proxy = (function () { + function Proxy() { + this.index = b2_invalidParticleIndex; + this.tag = 0; + } + Proxy.CompareProxyProxy = function (a, b) { + return a.tag < b.tag; + }; + Proxy.CompareTagProxy = function (a, b) { + return a < b.tag; + }; + Proxy.CompareProxyTag = function (a, b) { + return a.tag < b; + }; + return Proxy; + })(); + b2ParticleSystem.Proxy = Proxy; + var InsideBoundsEnumerator = (function () { + function InsideBoundsEnumerator(system, lower, upper, first, last) { + this.m_system = system; + this.m_xLower = (lower & b2ParticleSystem.xMask) >>> 0; + this.m_xUpper = (upper & b2ParticleSystem.xMask) >>> 0; + this.m_yLower = (lower & b2ParticleSystem.yMask) >>> 0; + this.m_yUpper = (upper & b2ParticleSystem.yMask) >>> 0; + this.m_first = first; + this.m_last = last; + } + InsideBoundsEnumerator.prototype.GetNext = function () { + while (this.m_first < this.m_last) { + var xTag = (this.m_system.m_proxyBuffer.data[this.m_first].tag & b2ParticleSystem.xMask) >>> 0; + if (xTag >= this.m_xLower && xTag <= this.m_xUpper) return this.m_system.m_proxyBuffer.data[this.m_first++].index; + this.m_first++; + } + return b2_invalidParticleIndex; + }; + return InsideBoundsEnumerator; + })(); + b2ParticleSystem.InsideBoundsEnumerator = InsideBoundsEnumerator; + var ParticleListNode = (function () { + function ParticleListNode() { + this.next = null; + this.count = 0; + this.index = 0; + } + return ParticleListNode; + })(); + b2ParticleSystem.ParticleListNode = ParticleListNode; + var FixedSetAllocator = (function () { + function FixedSetAllocator() { } + FixedSetAllocator.prototype.Allocate = function (itemSize, count) { + return count; + }; + FixedSetAllocator.prototype.Clear = function () { }; + FixedSetAllocator.prototype.GetCount = function () { + return 0; + }; + FixedSetAllocator.prototype.Invalidate = function (itemIndex) { }; + FixedSetAllocator.prototype.GetValidBuffer = function () { + return []; + }; + FixedSetAllocator.prototype.GetBuffer = function () { + return []; + }; + FixedSetAllocator.prototype.SetCount = function (count) { }; + return FixedSetAllocator; + })(); + b2ParticleSystem.FixedSetAllocator = FixedSetAllocator; + var FixtureParticle = (function () { + function FixtureParticle(fixture, particle) { + this.second = b2_invalidParticleIndex; + this.first = fixture; + this.second = particle; + } + return FixtureParticle; + })(); + b2ParticleSystem.FixtureParticle = FixtureParticle; + var FixtureParticleSet = (function (_super) { + __extends(FixtureParticleSet, _super); + function FixtureParticleSet() { + return null !== _super && _super.apply(this, arguments) || this; + } + FixtureParticleSet.prototype.Initialize = function (bodyContactBuffer, flagsBuffer) { }; + FixtureParticleSet.prototype.Find = function (pair) { + return b2_invalidParticleIndex; + }; + return FixtureParticleSet; + })(b2ParticleSystem.FixedSetAllocator); + b2ParticleSystem.FixtureParticleSet = FixtureParticleSet; + var ParticlePair = (function () { + function ParticlePair(particleA, particleB) { + this.first = b2_invalidParticleIndex; + this.second = b2_invalidParticleIndex; + this.first = particleA; + this.second = particleB; + } + return ParticlePair; + })(); + b2ParticleSystem.ParticlePair = ParticlePair; + var b2ParticlePairSet = (function (_super) { + __extends(b2ParticlePairSet, _super); + function b2ParticlePairSet() { + return null !== _super && _super.apply(this, arguments) || this; + } + b2ParticlePairSet.prototype.Initialize = function (contactBuffer, flagsBuffer) { }; + b2ParticlePairSet.prototype.Find = function (pair) { + return b2_invalidParticleIndex; + }; + return b2ParticlePairSet; + })(b2ParticleSystem.FixedSetAllocator); + b2ParticleSystem.b2ParticlePairSet = b2ParticlePairSet; + var ConnectionFilter = (function () { + function ConnectionFilter() { } + ConnectionFilter.prototype.IsNecessary = function (index) { + return true; + }; + ConnectionFilter.prototype.ShouldCreatePair = function (a, b) { + return true; + }; + ConnectionFilter.prototype.ShouldCreateTriad = function (a, b, c) { + return true; + }; + return ConnectionFilter; + })(); + b2ParticleSystem.ConnectionFilter = ConnectionFilter; + var DestroyParticlesInShapeCallback = (function (_super) { + __extends(DestroyParticlesInShapeCallback, _super); + function DestroyParticlesInShapeCallback(system, shape, xf, callDestructionListener) { + var _this = _super.call(this) || this; + _this.m_callDestructionListener = false; + _this.m_destroyed = 0; + _this.m_system = system; + _this.m_shape = shape; + _this.m_xf = xf; + _this.m_callDestructionListener = callDestructionListener; + _this.m_destroyed = 0; + return _this; + } + DestroyParticlesInShapeCallback.prototype.ReportFixture = function (fixture) { + return false; + }; + DestroyParticlesInShapeCallback.prototype.ReportParticle = function (particleSystem, index) { + if (particleSystem !== this.m_system) return false; + if (!this.m_system.m_positionBuffer.data) throw new Error(); + if (this.m_shape.TestPoint(this.m_xf, this.m_system.m_positionBuffer.data[index])) { + this.m_system.DestroyParticle(index, this.m_callDestructionListener); + this.m_destroyed++; + } + return true; + }; + DestroyParticlesInShapeCallback.prototype.Destroyed = function () { + return this.m_destroyed; + }; + return DestroyParticlesInShapeCallback; + })(b2QueryCallback); + b2ParticleSystem.DestroyParticlesInShapeCallback = DestroyParticlesInShapeCallback; + var JoinParticleGroupsFilter = (function (_super) { + __extends(JoinParticleGroupsFilter, _super); + function JoinParticleGroupsFilter(threshold) { + var _this = _super.call(this) || this; + _this.m_threshold = 0; + _this.m_threshold = threshold; + return _this; + } + JoinParticleGroupsFilter.prototype.ShouldCreatePair = function (a, b) { + return a < this.m_threshold && this.m_threshold <= b || b < this.m_threshold && this.m_threshold <= a; + }; + JoinParticleGroupsFilter.prototype.ShouldCreateTriad = function (a, b, c) { + return (a < this.m_threshold || b < this.m_threshold || c < this.m_threshold) && (this.m_threshold <= a || this.m_threshold <= b || this.m_threshold <= c); + }; + return JoinParticleGroupsFilter; + })(b2ParticleSystem.ConnectionFilter); + b2ParticleSystem.JoinParticleGroupsFilter = JoinParticleGroupsFilter; + var CompositeShape = (function (_super) { + __extends(CompositeShape, _super); + function CompositeShape(shapes, shapeCount) { + void 0 === shapeCount && (shapeCount = shapes.length); + var _this = _super.call(this, exports.b2ShapeType.e_unknown, 0) || this; + _this.m_shapeCount = 0; + _this.m_shapes = shapes; + _this.m_shapeCount = shapeCount; + return _this; + } + CompositeShape.prototype.Clone = function () { + throw new Error(); + }; + CompositeShape.prototype.GetChildCount = function () { + return 1; + }; + CompositeShape.prototype.TestPoint = function (xf, p) { + for (var i = 0; i < this.m_shapeCount; i++) if (this.m_shapes[i].TestPoint(xf, p)) return true; + return false; + }; + CompositeShape.prototype.ComputeDistance = function (xf, p, normal, childIndex) { + return 0; + }; + CompositeShape.prototype.RayCast = function (output, input, xf, childIndex) { + return false; + }; + CompositeShape.prototype.ComputeAABB = function (aabb, xf, childIndex) { + var s_subaabb = new b2AABB(); + aabb.lowerBound.x = +b2_maxFloat; + aabb.lowerBound.y = +b2_maxFloat; + aabb.upperBound.x = -b2_maxFloat; + aabb.upperBound.y = -b2_maxFloat; + for (var i = 0; i < this.m_shapeCount; i++) { + var childCount = this.m_shapes[i].GetChildCount(); + for (var j = 0; j < childCount; j++) { + var subaabb = s_subaabb; + this.m_shapes[i].ComputeAABB(subaabb, xf, j); + aabb.Combine1(subaabb); + } + } + }; + CompositeShape.prototype.ComputeMass = function (massData, density) { }; + CompositeShape.prototype.SetupDistanceProxy = function (proxy, index) { }; + CompositeShape.prototype.ComputeSubmergedArea = function (normal, offset, xf, c) { + return 0; + }; + CompositeShape.prototype.Dump = function (log) { }; + return CompositeShape; + })(b2Shape); + b2ParticleSystem.CompositeShape = CompositeShape; + var ReactiveFilter = (function (_super) { + __extends(ReactiveFilter, _super); + function ReactiveFilter(flagsBuffer) { + var _this = _super.call(this) || this; + _this.m_flagsBuffer = flagsBuffer; + return _this; + } + ReactiveFilter.prototype.IsNecessary = function (index) { + if (!this.m_flagsBuffer.data) throw new Error(); + return 0 !== (this.m_flagsBuffer.data[index] & exports.b2ParticleFlag.b2_reactiveParticle); + }; + return ReactiveFilter; + })(b2ParticleSystem.ConnectionFilter); + b2ParticleSystem.ReactiveFilter = ReactiveFilter; + var UpdateBodyContactsCallback = (function (_super) { + __extends(UpdateBodyContactsCallback, _super); + function UpdateBodyContactsCallback(system, contactFilter) { + var _this = _super.call(this, system) || this; + _this.m_contactFilter = contactFilter; + return _this; + } + UpdateBodyContactsCallback.prototype.ShouldCollideFixtureParticle = function (fixture, particleSystem, particleIndex) { + if (this.m_contactFilter) { + var flags = this.m_system.GetFlagsBuffer(); + if (flags[particleIndex] & exports.b2ParticleFlag.b2_fixtureContactFilterParticle) return this.m_contactFilter.ShouldCollideFixtureParticle(fixture, this.m_system, particleIndex); + } + return true; + }; + UpdateBodyContactsCallback.prototype.ReportFixtureAndParticle = function (fixture, childIndex, a) { + var s_n = b2ParticleSystem.UpdateBodyContactsCallback.ReportFixtureAndParticle_s_n; + var s_rp = b2ParticleSystem.UpdateBodyContactsCallback.ReportFixtureAndParticle_s_rp; + if (!this.m_system.m_flagsBuffer.data) throw new Error(); + if (!this.m_system.m_positionBuffer.data) throw new Error(); + var ap = this.m_system.m_positionBuffer.data[a]; + var n = s_n; + var d = fixture.ComputeDistance(ap, n, childIndex); + if (d < this.m_system.m_particleDiameter && this.ShouldCollideFixtureParticle(fixture, this.m_system, a)) { + var b = fixture.GetBody(); + var bp = b.GetWorldCenter(); + var bm = b.GetMass(); + var bI = b.GetInertia() - bm * b.GetLocalCenter().LengthSquared(); + var invBm = bm > 0 ? 1 / bm : 0; + var invBI = bI > 0 ? 1 / bI : 0; + var invAm = this.m_system.m_flagsBuffer.data[a] & exports.b2ParticleFlag.b2_wallParticle ? 0 : this.m_system.GetParticleInvMass(); + var rp = b2Vec2.SubVV(ap, bp, s_rp); + var rpn = b2Vec2.CrossVV(rp, n); + var invM = invAm + invBm + invBI * rpn * rpn; + var contact = this.m_system.m_bodyContactBuffer.data[this.m_system.m_bodyContactBuffer.Append()]; + contact.index = a; + contact.body = b; + contact.fixture = fixture; + contact.weight = 1 - d * this.m_system.m_inverseDiameter; + contact.normal.Copy(n.SelfNeg()); + contact.mass = invM > 0 ? 1 / invM : 0; + this.m_system.DetectStuckParticle(a); + } + }; + UpdateBodyContactsCallback.ReportFixtureAndParticle_s_n = new b2Vec2(); + UpdateBodyContactsCallback.ReportFixtureAndParticle_s_rp = new b2Vec2(); + return UpdateBodyContactsCallback; + })(b2FixtureParticleQueryCallback); + b2ParticleSystem.UpdateBodyContactsCallback = UpdateBodyContactsCallback; + var SolveCollisionCallback = (function (_super) { + __extends(SolveCollisionCallback, _super); + function SolveCollisionCallback(system, step) { + var _this = _super.call(this, system) || this; + _this.m_step = step; + return _this; + } + SolveCollisionCallback.prototype.ReportFixtureAndParticle = function (fixture, childIndex, a) { + var s_p1 = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_p1; + var s_output = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_output; + var s_input = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_input; + var s_p = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_p; + var s_v = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_v; + var s_f = b2ParticleSystem.SolveCollisionCallback.ReportFixtureAndParticle_s_f; + var body = fixture.GetBody(); + if (!this.m_system.m_positionBuffer.data) throw new Error(); + if (!this.m_system.m_velocityBuffer.data) throw new Error(); + var ap = this.m_system.m_positionBuffer.data[a]; + var av = this.m_system.m_velocityBuffer.data[a]; + var output = s_output; + var input = s_input; + if (0 === this.m_system.m_iterationIndex) { + var p1 = b2Transform.MulTXV(body.m_xf0, ap, s_p1); + if (fixture.GetShape().GetType() === exports.b2ShapeType.e_circleShape) { + p1.SelfSub(body.GetLocalCenter()); + b2Rot.MulRV(body.m_xf0.q, p1, p1); + b2Rot.MulTRV(body.m_xf.q, p1, p1); + p1.SelfAdd(body.GetLocalCenter()); + } + b2Transform.MulXV(body.m_xf, p1, input.p1); + } else input.p1.Copy(ap); + b2Vec2.AddVMulSV(ap, this.m_step.dt, av, input.p2); + input.maxFraction = 1; + if (fixture.RayCast(output, input, childIndex)) { + var n = output.normal; + var p = s_p; + p.x = (1 - output.fraction) * input.p1.x + output.fraction * input.p2.x + b2_linearSlop * n.x; + p.y = (1 - output.fraction) * input.p1.y + output.fraction * input.p2.y + b2_linearSlop * n.y; + var v = s_v; + v.x = this.m_step.inv_dt * (p.x - ap.x); + v.y = this.m_step.inv_dt * (p.y - ap.y); + this.m_system.m_velocityBuffer.data[a].Copy(v); + var f = s_f; + f.x = this.m_step.inv_dt * this.m_system.GetParticleMass() * (av.x - v.x); + f.y = this.m_step.inv_dt * this.m_system.GetParticleMass() * (av.y - v.y); + this.m_system.ParticleApplyForce(a, f); + } + }; + SolveCollisionCallback.prototype.ReportParticle = function (system, index) { + return false; + }; + SolveCollisionCallback.ReportFixtureAndParticle_s_p1 = new b2Vec2(); + SolveCollisionCallback.ReportFixtureAndParticle_s_output = new b2RayCastOutput(); + SolveCollisionCallback.ReportFixtureAndParticle_s_input = new b2RayCastInput(); + SolveCollisionCallback.ReportFixtureAndParticle_s_p = new b2Vec2(); + SolveCollisionCallback.ReportFixtureAndParticle_s_v = new b2Vec2(); + SolveCollisionCallback.ReportFixtureAndParticle_s_f = new b2Vec2(); + return SolveCollisionCallback; + })(b2FixtureParticleQueryCallback); + b2ParticleSystem.SolveCollisionCallback = SolveCollisionCallback; + })(exports.b2ParticleSystem || (exports.b2ParticleSystem = {})); + var b2World = (function () { + function b2World(gravity) { + this.m_newFixture = false; + this.m_locked = false; + this.m_clearForces = true; + this.m_contactManager = new b2ContactManager(); + this.m_bodyList = null; + this.m_jointList = null; + this.m_particleSystemList = null; + this.m_bodyCount = 0; + this.m_jointCount = 0; + this.m_gravity = new b2Vec2(); + this.m_allowSleep = true; + this.m_destructionListener = null; + this.m_debugDraw = null; + this.m_inv_dt0 = 0; + this.m_warmStarting = true; + this.m_continuousPhysics = true; + this.m_subStepping = false; + this.m_stepComplete = true; + this.m_profile = new b2Profile(); + this.m_island = new b2Island(); + this.s_stack = []; + this.m_controllerList = null; + this.m_controllerCount = 0; + this.m_gravity.Copy(gravity); + } + b2World.prototype.SetDestructionListener = function (listener) { + this.m_destructionListener = listener; + }; + b2World.prototype.SetContactFilter = function (filter) { + this.m_contactManager.m_contactFilter = filter; + }; + b2World.prototype.SetContactListener = function (listener) { + this.m_contactManager.m_contactListener = listener; + }; + b2World.prototype.SetDebugDraw = function (debugDraw) { + this.m_debugDraw = debugDraw; + }; + b2World.prototype.CreateBody = function (def) { + void 0 === def && (def = {}); + if (this.IsLocked()) throw new Error(); + var b = new b2Body(def, this); + b.m_prev = null; + b.m_next = this.m_bodyList; + this.m_bodyList && (this.m_bodyList.m_prev = b); + this.m_bodyList = b; + ++this.m_bodyCount; + return b; + }; + b2World.prototype.DestroyBody = function (b) { + if (this.IsLocked()) throw new Error(); + var je = b.m_jointList; + while (je) { + var je0 = je; + je = je.next; + this.m_destructionListener && this.m_destructionListener.SayGoodbyeJoint(je0.joint); + this.DestroyJoint(je0.joint); + b.m_jointList = je; + } + b.m_jointList = null; + var coe = b.m_controllerList; + while (coe) { + var coe0 = coe; + coe = coe.nextController; + coe0.controller.RemoveBody(b); + } + var ce = b.m_contactList; + while (ce) { + var ce0 = ce; + ce = ce.next; + this.m_contactManager.Destroy(ce0.contact); + } + b.m_contactList = null; + var f = b.m_fixtureList; + while (f) { + var f0 = f; + f = f.m_next; + this.m_destructionListener && this.m_destructionListener.SayGoodbyeFixture(f0); + f0.DestroyProxies(); + f0.Destroy(); + b.m_fixtureList = f; + b.m_fixtureCount -= 1; + } + b.m_fixtureList = null; + b.m_fixtureCount = 0; + b.m_prev && (b.m_prev.m_next = b.m_next); + b.m_next && (b.m_next.m_prev = b.m_prev); + b === this.m_bodyList && (this.m_bodyList = b.m_next); + --this.m_bodyCount; + }; + b2World._Joint_Create = function (def, allocator) { + switch (def.type) { + case exports.b2JointType.e_distanceJoint: + return new b2DistanceJoint(def); + + case exports.b2JointType.e_mouseJoint: + return new b2MouseJoint(def); + + case exports.b2JointType.e_prismaticJoint: + return new b2PrismaticJoint(def); + + case exports.b2JointType.e_revoluteJoint: + return new b2RevoluteJoint(def); + + case exports.b2JointType.e_pulleyJoint: + return new b2PulleyJoint(def); + + case exports.b2JointType.e_gearJoint: + return new b2GearJoint(def); + + case exports.b2JointType.e_wheelJoint: + return new b2WheelJoint(def); + + case exports.b2JointType.e_weldJoint: + return new b2WeldJoint(def); + + case exports.b2JointType.e_frictionJoint: + return new b2FrictionJoint(def); + + case exports.b2JointType.e_ropeJoint: + return new b2RopeJoint(def); + + case exports.b2JointType.e_motorJoint: + return new b2MotorJoint(def); + + case exports.b2JointType.e_areaJoint: + return new b2AreaJoint(def); + } + throw new Error(); + }; + b2World._Joint_Destroy = function (joint, allocator) { }; + b2World.prototype.CreateJoint = function (def) { + if (this.IsLocked()) throw new Error(); + var j = b2World._Joint_Create(def, null); + j.m_prev = null; + j.m_next = this.m_jointList; + this.m_jointList && (this.m_jointList.m_prev = j); + this.m_jointList = j; + ++this.m_jointCount; + j.m_edgeA.prev = null; + j.m_edgeA.next = j.m_bodyA.m_jointList; + j.m_bodyA.m_jointList && (j.m_bodyA.m_jointList.prev = j.m_edgeA); + j.m_bodyA.m_jointList = j.m_edgeA; + j.m_edgeB.prev = null; + j.m_edgeB.next = j.m_bodyB.m_jointList; + j.m_bodyB.m_jointList && (j.m_bodyB.m_jointList.prev = j.m_edgeB); + j.m_bodyB.m_jointList = j.m_edgeB; + var bodyA = def.bodyA; + var bodyB = def.bodyB; + if (!def.collideConnected) { + var edge = bodyB.GetContactList(); + while (edge) { + edge.other === bodyA && edge.contact.FlagForFiltering(); + edge = edge.next; + } + } + return j; + }; + b2World.prototype.DestroyJoint = function (j) { + if (this.IsLocked()) throw new Error(); + var collideConnected = j.m_collideConnected; + j.m_prev && (j.m_prev.m_next = j.m_next); + j.m_next && (j.m_next.m_prev = j.m_prev); + j === this.m_jointList && (this.m_jointList = j.m_next); + var bodyA = j.m_bodyA; + var bodyB = j.m_bodyB; + bodyA.SetAwake(true); + bodyB.SetAwake(true); + j.m_edgeA.prev && (j.m_edgeA.prev.next = j.m_edgeA.next); + j.m_edgeA.next && (j.m_edgeA.next.prev = j.m_edgeA.prev); + j.m_edgeA === bodyA.m_jointList && (bodyA.m_jointList = j.m_edgeA.next); + j.m_edgeA.prev = null; + j.m_edgeA.next = null; + j.m_edgeB.prev && (j.m_edgeB.prev.next = j.m_edgeB.next); + j.m_edgeB.next && (j.m_edgeB.next.prev = j.m_edgeB.prev); + j.m_edgeB === bodyB.m_jointList && (bodyB.m_jointList = j.m_edgeB.next); + j.m_edgeB.prev = null; + j.m_edgeB.next = null; + b2World._Joint_Destroy(j, null); + --this.m_jointCount; + if (!collideConnected) { + var edge = bodyB.GetContactList(); + while (edge) { + edge.other === bodyA && edge.contact.FlagForFiltering(); + edge = edge.next; + } + } + }; + b2World.prototype.CreateParticleSystem = function (def) { + if (this.IsLocked()) throw new Error(); + var p = new exports.b2ParticleSystem(def, this); + p.m_prev = null; + p.m_next = this.m_particleSystemList; + this.m_particleSystemList && (this.m_particleSystemList.m_prev = p); + this.m_particleSystemList = p; + return p; + }; + b2World.prototype.DestroyParticleSystem = function (p) { + if (this.IsLocked()) throw new Error(); + p.m_prev && (p.m_prev.m_next = p.m_next); + p.m_next && (p.m_next.m_prev = p.m_prev); + p === this.m_particleSystemList && (this.m_particleSystemList = p.m_next); + }; + b2World.prototype.CalculateReasonableParticleIterations = function (timeStep) { + if (null === this.m_particleSystemList) return 1; + function GetSmallestRadius(world) { + var smallestRadius = b2_maxFloat; + for (var system = world.GetParticleSystemList(); null !== system; system = system.m_next) smallestRadius = b2Min(smallestRadius, system.GetRadius()); + return smallestRadius; + } + return b2CalculateParticleIterations(this.m_gravity.Length(), GetSmallestRadius(this), timeStep); + }; + b2World.prototype.Step = function (dt, velocityIterations, positionIterations, particleIterations) { + void 0 === particleIterations && (particleIterations = this.CalculateReasonableParticleIterations(dt)); + var stepTimer = b2World.Step_s_stepTimer.Reset(); + if (this.m_newFixture) { + this.m_contactManager.FindNewContacts(); + this.m_newFixture = false; + } + this.m_locked = true; + var step = b2World.Step_s_step; + step.dt = dt; + step.velocityIterations = velocityIterations; + step.positionIterations = positionIterations; + step.particleIterations = particleIterations; + step.inv_dt = dt > 0 ? 1 / dt : 0; + step.dtRatio = this.m_inv_dt0 * dt; + step.warmStarting = this.m_warmStarting; + var timer = b2World.Step_s_timer.Reset(); + this.m_contactManager.Collide(); + this.m_profile.collide = timer.GetMilliseconds(); + if (this.m_stepComplete && step.dt > 0) { + var timer_1 = b2World.Step_s_timer.Reset(); + for (var p = this.m_particleSystemList; p; p = p.m_next) p.Solve(step); + this.Solve(step); + this.m_profile.solve = timer_1.GetMilliseconds(); + } + if (this.m_continuousPhysics && step.dt > 0) { + var timer_2 = b2World.Step_s_timer.Reset(); + this.SolveTOI(step); + this.m_profile.solveTOI = timer_2.GetMilliseconds(); + } + step.dt > 0 && (this.m_inv_dt0 = step.inv_dt); + this.m_clearForces && this.ClearForces(); + this.m_locked = false; + this.m_profile.step = stepTimer.GetMilliseconds(); + }; + b2World.prototype.ClearForces = function () { + for (var body = this.m_bodyList; body; body = body.m_next) { + body.m_force.SetZero(); + body.m_torque = 0; + } + }; + b2World.prototype.DrawParticleSystem = function (system) { + if (null === this.m_debugDraw) return; + var particleCount = system.GetParticleCount(); + if (particleCount) { + var radius = system.GetRadius(); + var positionBuffer = system.GetPositionBuffer(); + if (system.m_colorBuffer.data) { + var colorBuffer = system.GetColorBuffer(); + this.m_debugDraw.DrawParticles(positionBuffer, radius, colorBuffer, particleCount); + } else this.m_debugDraw.DrawParticles(positionBuffer, radius, null, particleCount); + } + }; + b2World.prototype.DrawDebugData = function () { + if (null === this.m_debugDraw) return; + var flags = this.m_debugDraw.GetFlags(); + var color = b2World.DrawDebugData_s_color.SetRGB(0, 0, 0); + if (flags & exports.b2DrawFlags.e_shapeBit) for (var b = this.m_bodyList; b; b = b.m_next) { + var xf = b.m_xf; + this.m_debugDraw.PushTransform(xf); + for (var f = b.GetFixtureList(); f; f = f.m_next) if (b.IsActive()) if (b.GetType() === exports.b2BodyType.b2_staticBody) { + color.SetRGB(.5, .9, .5); + this.DrawShape(f, color); + } else if (b.GetType() === exports.b2BodyType.b2_kinematicBody) { + color.SetRGB(.5, .5, .9); + this.DrawShape(f, color); + } else if (b.IsAwake()) { + color.SetRGB(.9, .7, .7); + this.DrawShape(f, color); + } else { + color.SetRGB(.6, .6, .6); + this.DrawShape(f, color); + } else { + color.SetRGB(.5, .5, .3); + this.DrawShape(f, color); + } + this.m_debugDraw.PopTransform(xf); + } + if (flags & exports.b2DrawFlags.e_particleBit) for (var p = this.m_particleSystemList; p; p = p.m_next) this.DrawParticleSystem(p); + if (flags & exports.b2DrawFlags.e_jointBit) for (var j = this.m_jointList; j; j = j.m_next) this.DrawJoint(j); + if (flags & exports.b2DrawFlags.e_aabbBit) { + color.SetRGB(.9, .3, .9); + var vs = b2World.DrawDebugData_s_vs; + for (var b = this.m_bodyList; b; b = b.m_next) { + if (!b.IsActive()) continue; + for (var f = b.GetFixtureList(); f; f = f.m_next) for (var i = 0; i < f.m_proxyCount; ++i) { + var proxy = f.m_proxies[i]; + var aabb = proxy.treeNode.aabb; + vs[0].Set(aabb.lowerBound.x, aabb.lowerBound.y); + vs[1].Set(aabb.upperBound.x, aabb.lowerBound.y); + vs[2].Set(aabb.upperBound.x, aabb.upperBound.y); + vs[3].Set(aabb.lowerBound.x, aabb.upperBound.y); + this.m_debugDraw.DrawPolygon(vs, 4, color); + } + } + } + if (flags & exports.b2DrawFlags.e_centerOfMassBit) for (var b = this.m_bodyList; b; b = b.m_next) { + var xf = b2World.DrawDebugData_s_xf; + xf.q.Copy(b.m_xf.q); + xf.p.Copy(b.GetWorldCenter()); + this.m_debugDraw.DrawTransform(xf); + } + if (flags & exports.b2DrawFlags.e_controllerBit) for (var c = this.m_controllerList; c; c = c.m_next) c.Draw(this.m_debugDraw); + }; + b2World.prototype.QueryAABB = function (callback, aabb, fn) { + this.m_contactManager.m_broadPhase.Query(aabb, (function (proxy) { + var fixture_proxy = proxy.userData; + var fixture = fixture_proxy.fixture; + if (callback) return callback.ReportFixture(fixture); + if (fn) return fn(fixture); + return true; + })); + if (callback instanceof b2QueryCallback) for (var p = this.m_particleSystemList; p; p = p.m_next) callback.ShouldQueryParticleSystem(p) && p.QueryAABB(callback, aabb); + }; + b2World.prototype.QueryAllAABB = function (aabb, out) { + void 0 === out && (out = []); + this.QueryAABB(null, aabb, (function (fixture) { + out.push(fixture); + return true; + })); + return out; + }; + b2World.prototype.QueryPointAABB = function (callback, point, fn) { + this.m_contactManager.m_broadPhase.QueryPoint(point, (function (proxy) { + var fixture_proxy = proxy.userData; + var fixture = fixture_proxy.fixture; + if (callback) return callback.ReportFixture(fixture); + if (fn) return fn(fixture); + return true; + })); + if (callback instanceof b2QueryCallback) for (var p = this.m_particleSystemList; p; p = p.m_next) callback.ShouldQueryParticleSystem(p) && p.QueryPointAABB(callback, point); + }; + b2World.prototype.QueryAllPointAABB = function (point, out) { + void 0 === out && (out = []); + this.QueryPointAABB(null, point, (function (fixture) { + out.push(fixture); + return true; + })); + return out; + }; + b2World.prototype.QueryFixtureShape = function (callback, shape, index, transform, fn) { + var aabb = b2World.QueryFixtureShape_s_aabb; + shape.ComputeAABB(aabb, transform, index); + this.m_contactManager.m_broadPhase.Query(aabb, (function (proxy) { + var fixture_proxy = proxy.userData; + var fixture = fixture_proxy.fixture; + if (b2TestOverlapShape(shape, index, fixture.GetShape(), fixture_proxy.childIndex, transform, fixture.GetBody().GetTransform())) { + if (callback) return callback.ReportFixture(fixture); + if (fn) return fn(fixture); + } + return true; + })); + if (callback instanceof b2QueryCallback) for (var p = this.m_particleSystemList; p; p = p.m_next) callback.ShouldQueryParticleSystem(p) && p.QueryAABB(callback, aabb); + }; + b2World.prototype.QueryAllFixtureShape = function (shape, index, transform, out) { + void 0 === out && (out = []); + this.QueryFixtureShape(null, shape, index, transform, (function (fixture) { + out.push(fixture); + return true; + })); + return out; + }; + b2World.prototype.QueryFixturePoint = function (callback, point, fn) { + this.m_contactManager.m_broadPhase.QueryPoint(point, (function (proxy) { + var fixture_proxy = proxy.userData; + var fixture = fixture_proxy.fixture; + if (fixture.TestPoint(point)) { + if (callback) return callback.ReportFixture(fixture); + if (fn) return fn(fixture); + } + return true; + })); + if (callback) for (var p = this.m_particleSystemList; p; p = p.m_next) callback.ShouldQueryParticleSystem(p) && p.QueryPointAABB(callback, point); + }; + b2World.prototype.QueryAllFixturePoint = function (point, out) { + void 0 === out && (out = []); + this.QueryFixturePoint(null, point, (function (fixture) { + out.push(fixture); + return true; + })); + return out; + }; + b2World.prototype.RayCast = function (callback, point1, point2, fn) { + var input = b2World.RayCast_s_input; + input.maxFraction = 1; + input.p1.Copy(point1); + input.p2.Copy(point2); + this.m_contactManager.m_broadPhase.RayCast(input, (function (input, proxy) { + var fixture_proxy = proxy.userData; + var fixture = fixture_proxy.fixture; + var index = fixture_proxy.childIndex; + var output = b2World.RayCast_s_output; + var hit = fixture.RayCast(output, input, index); + if (hit) { + var fraction = output.fraction; + var point = b2World.RayCast_s_point; + point.Set((1 - fraction) * point1.x + fraction * point2.x, (1 - fraction) * point1.y + fraction * point2.y); + if (callback) return callback.ReportFixture(fixture, point, output.normal, fraction); + if (fn) return fn(fixture, point, output.normal, fraction); + } + return input.maxFraction; + })); + if (callback) for (var p = this.m_particleSystemList; p; p = p.m_next) callback.ShouldQueryParticleSystem(p) && p.RayCast(callback, point1, point2); + }; + b2World.prototype.RayCastOne = function (point1, point2) { + var result = null; + var min_fraction = 1; + this.RayCast(null, point1, point2, (function (fixture, point, normal, fraction) { + if (fraction < min_fraction) { + min_fraction = fraction; + result = fixture; + } + return min_fraction; + })); + return result; + }; + b2World.prototype.RayCastAll = function (point1, point2, out) { + void 0 === out && (out = []); + this.RayCast(null, point1, point2, (function (fixture, point, normal, fraction) { + out.push(fixture); + return 1; + })); + return out; + }; + b2World.prototype.GetBodyList = function () { + return this.m_bodyList; + }; + b2World.prototype.GetJointList = function () { + return this.m_jointList; + }; + b2World.prototype.GetParticleSystemList = function () { + return this.m_particleSystemList; + }; + b2World.prototype.GetContactList = function () { + return this.m_contactManager.m_contactList; + }; + b2World.prototype.SetAllowSleeping = function (flag) { + if (flag === this.m_allowSleep) return; + this.m_allowSleep = flag; + if (!this.m_allowSleep) for (var b = this.m_bodyList; b; b = b.m_next) b.SetAwake(true); + }; + b2World.prototype.GetAllowSleeping = function () { + return this.m_allowSleep; + }; + b2World.prototype.SetWarmStarting = function (flag) { + this.m_warmStarting = flag; + }; + b2World.prototype.GetWarmStarting = function () { + return this.m_warmStarting; + }; + b2World.prototype.SetContinuousPhysics = function (flag) { + this.m_continuousPhysics = flag; + }; + b2World.prototype.GetContinuousPhysics = function () { + return this.m_continuousPhysics; + }; + b2World.prototype.SetSubStepping = function (flag) { + this.m_subStepping = flag; + }; + b2World.prototype.GetSubStepping = function () { + return this.m_subStepping; + }; + b2World.prototype.GetProxyCount = function () { + return this.m_contactManager.m_broadPhase.GetProxyCount(); + }; + b2World.prototype.GetBodyCount = function () { + return this.m_bodyCount; + }; + b2World.prototype.GetJointCount = function () { + return this.m_jointCount; + }; + b2World.prototype.GetContactCount = function () { + return this.m_contactManager.m_contactCount; + }; + b2World.prototype.GetTreeHeight = function () { + return this.m_contactManager.m_broadPhase.GetTreeHeight(); + }; + b2World.prototype.GetTreeBalance = function () { + return this.m_contactManager.m_broadPhase.GetTreeBalance(); + }; + b2World.prototype.GetTreeQuality = function () { + return this.m_contactManager.m_broadPhase.GetTreeQuality(); + }; + b2World.prototype.SetGravity = function (gravity, wake) { + void 0 === wake && (wake = true); + if (!b2Vec2.IsEqualToV(this.m_gravity, gravity)) { + this.m_gravity.Copy(gravity); + if (wake) for (var b = this.m_bodyList; b; b = b.m_next) b.SetAwake(true); + } + }; + b2World.prototype.GetGravity = function () { + return this.m_gravity; + }; + b2World.prototype.IsLocked = function () { + return this.m_locked; + }; + b2World.prototype.SetAutoClearForces = function (flag) { + this.m_clearForces = flag; + }; + b2World.prototype.GetAutoClearForces = function () { + return this.m_clearForces; + }; + b2World.prototype.ShiftOrigin = function (newOrigin) { + if (this.IsLocked()) throw new Error(); + for (var b = this.m_bodyList; b; b = b.m_next) { + b.m_xf.p.SelfSub(newOrigin); + b.m_sweep.c0.SelfSub(newOrigin); + b.m_sweep.c.SelfSub(newOrigin); + } + for (var j = this.m_jointList; j; j = j.m_next) j.ShiftOrigin(newOrigin); + this.m_contactManager.m_broadPhase.ShiftOrigin(newOrigin); + }; + b2World.prototype.GetContactManager = function () { + return this.m_contactManager; + }; + b2World.prototype.GetProfile = function () { + return this.m_profile; + }; + b2World.prototype.Dump = function (log) { + if (this.m_locked) return; + log("const g: b2Vec2 = new b2Vec2(%.15f, %.15f);\n", this.m_gravity.x, this.m_gravity.y); + log("this.m_world.SetGravity(g);\n"); + log("const bodies: b2Body[] = [];\n"); + log("const joints: b2Joint[] = [];\n"); + var i = 0; + for (var b = this.m_bodyList; b; b = b.m_next) { + b.m_islandIndex = i; + b.Dump(log); + ++i; + } + i = 0; + for (var j = this.m_jointList; j; j = j.m_next) { + j.m_index = i; + ++i; + } + for (var j = this.m_jointList; j; j = j.m_next) { + if (j.m_type === exports.b2JointType.e_gearJoint) continue; + log("{\n"); + j.Dump(log); + log("}\n"); + } + for (var j = this.m_jointList; j; j = j.m_next) { + if (j.m_type !== exports.b2JointType.e_gearJoint) continue; + log("{\n"); + j.Dump(log); + log("}\n"); + } + }; + b2World.prototype.DrawJoint = function (joint) { + if (null === this.m_debugDraw) return; + var bodyA = joint.GetBodyA(); + var bodyB = joint.GetBodyB(); + var xf1 = bodyA.m_xf; + var xf2 = bodyB.m_xf; + var x1 = xf1.p; + var x2 = xf2.p; + var p1 = joint.GetAnchorA(b2World.DrawJoint_s_p1); + var p2 = joint.GetAnchorB(b2World.DrawJoint_s_p2); + var color = b2World.DrawJoint_s_color.SetRGB(.5, .8, .8); + switch (joint.m_type) { + case exports.b2JointType.e_distanceJoint: + this.m_debugDraw.DrawSegment(p1, p2, color); + break; + + case exports.b2JointType.e_pulleyJoint: + var pulley = joint; + var s1 = pulley.GetGroundAnchorA(); + var s2 = pulley.GetGroundAnchorB(); + this.m_debugDraw.DrawSegment(s1, p1, color); + this.m_debugDraw.DrawSegment(s2, p2, color); + this.m_debugDraw.DrawSegment(s1, s2, color); + break; + + case exports.b2JointType.e_mouseJoint: + var c = b2World.DrawJoint_s_c; + c.Set(0, 1, 0); + this.m_debugDraw.DrawPoint(p1, 4, c); + this.m_debugDraw.DrawPoint(p2, 4, c); + c.Set(.8, .8, .8); + this.m_debugDraw.DrawSegment(p1, p2, c); + break; + + default: + this.m_debugDraw.DrawSegment(x1, p1, color); + this.m_debugDraw.DrawSegment(p1, p2, color); + this.m_debugDraw.DrawSegment(x2, p2, color); + } + }; + b2World.prototype.DrawShape = function (fixture, color) { + if (null === this.m_debugDraw) return; + var shape = fixture.GetShape(); + switch (shape.m_type) { + case exports.b2ShapeType.e_circleShape: + var circle = shape; + var center = circle.m_p; + var radius = circle.m_radius; + var axis = b2Vec2.UNITX; + this.m_debugDraw.DrawSolidCircle(center, radius, axis, color); + break; + + case exports.b2ShapeType.e_edgeShape: + var edge = shape; + var v1 = edge.m_vertex1; + var v2 = edge.m_vertex2; + this.m_debugDraw.DrawSegment(v1, v2, color); + break; + + case exports.b2ShapeType.e_chainShape: + var chain = shape; + var count = chain.m_count; + var vertices = chain.m_vertices; + var ghostColor = b2World.DrawShape_s_ghostColor.SetRGBA(.75 * color.r, .75 * color.g, .75 * color.b, color.a); + var v1 = vertices[0]; + this.m_debugDraw.DrawPoint(v1, 4, color); + if (chain.m_hasPrevVertex) { + var vp = chain.m_prevVertex; + this.m_debugDraw.DrawSegment(vp, v1, ghostColor); + this.m_debugDraw.DrawCircle(vp, .1, ghostColor); + } + for (var i = 1; i < count; ++i) { + var v2 = vertices[i]; + this.m_debugDraw.DrawSegment(v1, v2, color); + this.m_debugDraw.DrawPoint(v2, 4, color); + v1 = v2; + } + if (chain.m_hasNextVertex) { + var vn = chain.m_nextVertex; + this.m_debugDraw.DrawSegment(vn, v1, ghostColor); + this.m_debugDraw.DrawCircle(vn, .1, ghostColor); + } + break; + + case exports.b2ShapeType.e_polygonShape: + var poly = shape; + var vertexCount = poly.m_count; + var vertices = poly.m_vertices; + this.m_debugDraw.DrawSolidPolygon(vertices, vertexCount, color); + } + }; + b2World.prototype.Solve = function (step) { + for (var b = this.m_bodyList; b; b = b.m_next) b.m_xf0.Copy(b.m_xf); + for (var controller = this.m_controllerList; controller; controller = controller.m_next) controller.Step(step); + this.m_profile.solveInit = 0; + this.m_profile.solveVelocity = 0; + this.m_profile.solvePosition = 0; + var island = this.m_island; + island.Initialize(this.m_bodyCount, this.m_contactManager.m_contactCount, this.m_jointCount, null, this.m_contactManager.m_contactListener); + for (var b = this.m_bodyList; b; b = b.m_next) b.m_islandFlag = false; + for (var c = this.m_contactManager.m_contactList; c; c = c.m_next) c.m_islandFlag = false; + for (var j = this.m_jointList; j; j = j.m_next) j.m_islandFlag = false; + var stack = this.s_stack; + for (var seed = this.m_bodyList; seed; seed = seed.m_next) { + if (seed.m_islandFlag) continue; + if (!seed.IsAwake() || !seed.IsActive()) continue; + if (seed.GetType() === exports.b2BodyType.b2_staticBody) continue; + island.Clear(); + var stackCount = 0; + stack[stackCount++] = seed; + seed.m_islandFlag = true; + while (stackCount > 0) { + var b = stack[--stackCount]; + if (!b) throw new Error(); + island.AddBody(b); + b.m_awakeFlag = true; + if (b.GetType() === exports.b2BodyType.b2_staticBody) continue; + for (var ce = b.m_contactList; ce; ce = ce.next) { + var contact = ce.contact; + if (contact.m_islandFlag) continue; + if (!contact.IsEnabled() || !contact.IsTouching()) continue; + var sensorA = contact.m_fixtureA.m_isSensor; + var sensorB = contact.m_fixtureB.m_isSensor; + if (sensorA || sensorB) continue; + island.AddContact(contact); + contact.m_islandFlag = true; + var other = ce.other; + if (!other) throw new Error(); + if (other.m_islandFlag) continue; + stack[stackCount++] = other; + other.m_islandFlag = true; + } + for (var je = b.m_jointList; je; je = je.next) { + if (je.joint.m_islandFlag) continue; + var other = je.other; + if (!other.IsActive()) continue; + island.AddJoint(je.joint); + je.joint.m_islandFlag = true; + if (other.m_islandFlag) continue; + stack[stackCount++] = other; + other.m_islandFlag = true; + } + } + var profile = new b2Profile(); + island.Solve(profile, step, this.m_gravity, this.m_allowSleep); + this.m_profile.solveInit += profile.solveInit; + this.m_profile.solveVelocity += profile.solveVelocity; + this.m_profile.solvePosition += profile.solvePosition; + for (var i = 0; i < island.m_bodyCount; ++i) { + var b = island.m_bodies[i]; + b.GetType() === exports.b2BodyType.b2_staticBody && (b.m_islandFlag = false); + } + } + for (var i = 0; i < stack.length; ++i) { + if (!stack[i]) break; + stack[i] = null; + } + var timer = new b2Timer(); + for (var b = this.m_bodyList; b; b = b.m_next) { + if (!b.m_islandFlag) continue; + if (b.GetType() === exports.b2BodyType.b2_staticBody) continue; + b.SynchronizeFixtures(); + } + this.m_contactManager.FindNewContacts(); + this.m_profile.broadphase = timer.GetMilliseconds(); + }; + b2World.prototype.SolveTOI = function (step) { + var island = this.m_island; + island.Initialize(2 * b2_maxTOIContacts, b2_maxTOIContacts, 0, null, this.m_contactManager.m_contactListener); + if (this.m_stepComplete) { + for (var b = this.m_bodyList; b; b = b.m_next) { + b.m_islandFlag = false; + b.m_sweep.alpha0 = 0; + } + for (var c = this.m_contactManager.m_contactList; c; c = c.m_next) { + c.m_toiFlag = false; + c.m_islandFlag = false; + c.m_toiCount = 0; + c.m_toi = 1; + } + } + for (; ;) { + var minContact = null; + var minAlpha = 1; + for (var c = this.m_contactManager.m_contactList; c; c = c.m_next) { + if (!c.IsEnabled()) continue; + if (c.m_toiCount > b2_maxSubSteps) continue; + var alpha = 1; + if (c.m_toiFlag) alpha = c.m_toi; else { + var fA_1 = c.GetFixtureA(); + var fB_1 = c.GetFixtureB(); + if (fA_1.IsSensor() || fB_1.IsSensor()) continue; + var bA_1 = fA_1.GetBody(); + var bB_1 = fB_1.GetBody(); + var typeA = bA_1.m_type; + var typeB = bB_1.m_type; + var activeA = bA_1.IsAwake() && typeA !== exports.b2BodyType.b2_staticBody; + var activeB = bB_1.IsAwake() && typeB !== exports.b2BodyType.b2_staticBody; + if (!activeA && !activeB) continue; + var collideA = bA_1.IsBullet() || typeA !== exports.b2BodyType.b2_dynamicBody; + var collideB = bB_1.IsBullet() || typeB !== exports.b2BodyType.b2_dynamicBody; + if (!collideA && !collideB) continue; + var alpha0 = bA_1.m_sweep.alpha0; + if (bA_1.m_sweep.alpha0 < bB_1.m_sweep.alpha0) { + alpha0 = bB_1.m_sweep.alpha0; + bA_1.m_sweep.Advance(alpha0); + } else if (bB_1.m_sweep.alpha0 < bA_1.m_sweep.alpha0) { + alpha0 = bA_1.m_sweep.alpha0; + bB_1.m_sweep.Advance(alpha0); + } + var indexA = c.GetChildIndexA(); + var indexB = c.GetChildIndexB(); + var input = b2World.SolveTOI_s_toi_input; + input.proxyA.SetShape(fA_1.GetShape(), indexA); + input.proxyB.SetShape(fB_1.GetShape(), indexB); + input.sweepA.Copy(bA_1.m_sweep); + input.sweepB.Copy(bB_1.m_sweep); + input.tMax = 1; + var output = b2World.SolveTOI_s_toi_output; + b2TimeOfImpact(output, input); + var beta = output.t; + alpha = output.state === exports.b2TOIOutputState.e_touching ? b2Min(alpha0 + (1 - alpha0) * beta, 1) : 1; + c.m_toi = alpha; + c.m_toiFlag = true; + } + if (alpha < minAlpha) { + minContact = c; + minAlpha = alpha; + } + } + if (null === minContact || 1 - 10 * b2_epsilon < minAlpha) { + this.m_stepComplete = true; + break; + } + var fA = minContact.GetFixtureA(); + var fB = minContact.GetFixtureB(); + var bA = fA.GetBody(); + var bB = fB.GetBody(); + var backup1 = b2World.SolveTOI_s_backup1.Copy(bA.m_sweep); + var backup2 = b2World.SolveTOI_s_backup2.Copy(bB.m_sweep); + bA.Advance(minAlpha); + bB.Advance(minAlpha); + minContact.Update(this.m_contactManager.m_contactListener); + minContact.m_toiFlag = false; + ++minContact.m_toiCount; + if (!minContact.IsEnabled() || !minContact.IsTouching()) { + minContact.SetEnabled(false); + bA.m_sweep.Copy(backup1); + bB.m_sweep.Copy(backup2); + bA.SynchronizeTransform(); + bB.SynchronizeTransform(); + continue; + } + bA.SetAwake(true); + bB.SetAwake(true); + island.Clear(); + island.AddBody(bA); + island.AddBody(bB); + island.AddContact(minContact); + bA.m_islandFlag = true; + bB.m_islandFlag = true; + minContact.m_islandFlag = true; + for (var i = 0; i < 2; ++i) { + var body = 0 === i ? bA : bB; + if (body.m_type === exports.b2BodyType.b2_dynamicBody) for (var ce = body.m_contactList; ce; ce = ce.next) { + if (island.m_bodyCount === island.m_bodyCapacity) break; + if (island.m_contactCount === island.m_contactCapacity) break; + var contact = ce.contact; + if (contact.m_islandFlag) continue; + var other = ce.other; + if (other.m_type === exports.b2BodyType.b2_dynamicBody && !body.IsBullet() && !other.IsBullet()) continue; + var sensorA = contact.m_fixtureA.m_isSensor; + var sensorB = contact.m_fixtureB.m_isSensor; + if (sensorA || sensorB) continue; + var backup = b2World.SolveTOI_s_backup.Copy(other.m_sweep); + other.m_islandFlag || other.Advance(minAlpha); + contact.Update(this.m_contactManager.m_contactListener); + if (!contact.IsEnabled()) { + other.m_sweep.Copy(backup); + other.SynchronizeTransform(); + continue; + } + if (!contact.IsTouching()) { + other.m_sweep.Copy(backup); + other.SynchronizeTransform(); + continue; + } + contact.m_islandFlag = true; + island.AddContact(contact); + if (other.m_islandFlag) continue; + other.m_islandFlag = true; + other.m_type !== exports.b2BodyType.b2_staticBody && other.SetAwake(true); + island.AddBody(other); + } + } + var subStep = b2World.SolveTOI_s_subStep; + subStep.dt = (1 - minAlpha) * step.dt; + subStep.inv_dt = 1 / subStep.dt; + subStep.dtRatio = 1; + subStep.positionIterations = 20; + subStep.velocityIterations = step.velocityIterations; + subStep.particleIterations = step.particleIterations; + subStep.warmStarting = false; + island.SolveTOI(subStep, bA.m_islandIndex, bB.m_islandIndex); + for (var i = 0; i < island.m_bodyCount; ++i) { + var body = island.m_bodies[i]; + body.m_islandFlag = false; + if (body.m_type !== exports.b2BodyType.b2_dynamicBody) continue; + body.SynchronizeFixtures(); + for (var ce = body.m_contactList; ce; ce = ce.next) { + ce.contact.m_toiFlag = false; + ce.contact.m_islandFlag = false; + } + } + this.m_contactManager.FindNewContacts(); + if (this.m_subStepping) { + this.m_stepComplete = false; + break; + } + } + }; + b2World.prototype.AddController = function (controller) { + controller.m_next = this.m_controllerList; + controller.m_prev = null; + this.m_controllerList && (this.m_controllerList.m_prev = controller); + this.m_controllerList = controller; + ++this.m_controllerCount; + return controller; + }; + b2World.prototype.RemoveController = function (controller) { + controller.m_prev && (controller.m_prev.m_next = controller.m_next); + controller.m_next && (controller.m_next.m_prev = controller.m_prev); + this.m_controllerList === controller && (this.m_controllerList = controller.m_next); + --this.m_controllerCount; + controller.m_prev = null; + controller.m_next = null; + return controller; + }; + b2World.Step_s_step = new b2TimeStep(); + b2World.Step_s_stepTimer = new b2Timer(); + b2World.Step_s_timer = new b2Timer(); + b2World.DrawDebugData_s_color = new b2Color(0, 0, 0); + b2World.DrawDebugData_s_vs = b2Vec2.MakeArray(4); + b2World.DrawDebugData_s_xf = new b2Transform(); + b2World.QueryFixtureShape_s_aabb = new b2AABB(); + b2World.RayCast_s_input = new b2RayCastInput(); + b2World.RayCast_s_output = new b2RayCastOutput(); + b2World.RayCast_s_point = new b2Vec2(); + b2World.DrawJoint_s_p1 = new b2Vec2(); + b2World.DrawJoint_s_p2 = new b2Vec2(); + b2World.DrawJoint_s_color = new b2Color(.5, .8, .8); + b2World.DrawJoint_s_c = new b2Color(); + b2World.DrawShape_s_ghostColor = new b2Color(); + b2World.SolveTOI_s_subStep = new b2TimeStep(); + b2World.SolveTOI_s_backup = new b2Sweep(); + b2World.SolveTOI_s_backup1 = new b2Sweep(); + b2World.SolveTOI_s_backup2 = new b2Sweep(); + b2World.SolveTOI_s_toi_input = new b2TOIInput(); + b2World.SolveTOI_s_toi_output = new b2TOIOutput(); + return b2World; + })(); + var b2ControllerEdge = (function () { + function b2ControllerEdge(controller, body) { + this.prevBody = null; + this.nextBody = null; + this.prevController = null; + this.nextController = null; + this.controller = controller; + this.body = body; + } + return b2ControllerEdge; + })(); + var b2Controller = (function () { + function b2Controller() { + this.m_bodyList = null; + this.m_bodyCount = 0; + this.m_prev = null; + this.m_next = null; + } + b2Controller.prototype.GetNext = function () { + return this.m_next; + }; + b2Controller.prototype.GetPrev = function () { + return this.m_prev; + }; + b2Controller.prototype.GetBodyList = function () { + return this.m_bodyList; + }; + b2Controller.prototype.AddBody = function (body) { + var edge = new b2ControllerEdge(this, body); + edge.nextBody = this.m_bodyList; + edge.prevBody = null; + this.m_bodyList && (this.m_bodyList.prevBody = edge); + this.m_bodyList = edge; + ++this.m_bodyCount; + edge.nextController = body.m_controllerList; + edge.prevController = null; + body.m_controllerList && (body.m_controllerList.prevController = edge); + body.m_controllerList = edge; + ++body.m_controllerCount; + }; + b2Controller.prototype.RemoveBody = function (body) { + if (this.m_bodyCount <= 0) throw new Error(); + var edge = this.m_bodyList; + while (edge && edge.body !== body) edge = edge.nextBody; + if (null === edge) throw new Error(); + edge.prevBody && (edge.prevBody.nextBody = edge.nextBody); + edge.nextBody && (edge.nextBody.prevBody = edge.prevBody); + this.m_bodyList === edge && (this.m_bodyList = edge.nextBody); + --this.m_bodyCount; + edge.nextController && (edge.nextController.prevController = edge.prevController); + edge.prevController && (edge.prevController.nextController = edge.nextController); + body.m_controllerList === edge && (body.m_controllerList = edge.nextController); + --body.m_controllerCount; + }; + b2Controller.prototype.Clear = function () { + while (this.m_bodyList) this.RemoveBody(this.m_bodyList.body); + this.m_bodyCount = 0; + }; + return b2Controller; + })(); + var b2BuoyancyController = (function (_super) { + __extends(b2BuoyancyController, _super); + function b2BuoyancyController() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.normal = new b2Vec2(0, 1); + _this.offset = 0; + _this.density = 0; + _this.velocity = new b2Vec2(0, 0); + _this.linearDrag = 0; + _this.angularDrag = 0; + _this.useDensity = false; + _this.useWorldGravity = true; + _this.gravity = new b2Vec2(0, 0); + return _this; + } + b2BuoyancyController.prototype.Step = function (step) { + if (!this.m_bodyList) return; + this.useWorldGravity && this.gravity.Copy(this.m_bodyList.body.GetWorld().GetGravity()); + for (var i = this.m_bodyList; i; i = i.nextBody) { + var body = i.body; + if (!body.IsAwake()) continue; + var areac = new b2Vec2(); + var massc = new b2Vec2(); + var area = 0; + var mass = 0; + for (var fixture = body.GetFixtureList(); fixture; fixture = fixture.m_next) { + var sc = new b2Vec2(); + var sarea = fixture.GetShape().ComputeSubmergedArea(this.normal, this.offset, body.GetTransform(), sc); + area += sarea; + areac.x += sarea * sc.x; + areac.y += sarea * sc.y; + var shapeDensity = 0; + shapeDensity = this.useDensity ? fixture.GetDensity() : 1; + mass += sarea * shapeDensity; + massc.x += sarea * sc.x * shapeDensity; + massc.y += sarea * sc.y * shapeDensity; + } + areac.x /= area; + areac.y /= area; + massc.x /= mass; + massc.y /= mass; + if (area < b2_epsilon) continue; + var buoyancyForce = this.gravity.Clone().SelfNeg(); + buoyancyForce.SelfMul(this.density * area); + body.ApplyForce(buoyancyForce, massc); + var dragForce = body.GetLinearVelocityFromWorldPoint(areac, new b2Vec2()); + dragForce.SelfSub(this.velocity); + dragForce.SelfMul(-this.linearDrag * area); + body.ApplyForce(dragForce, areac); + body.ApplyTorque(-body.GetInertia() / body.GetMass() * area * body.GetAngularVelocity() * this.angularDrag); + } + }; + b2BuoyancyController.prototype.Draw = function (debugDraw) { + var r = 100; + var p1 = new b2Vec2(); + var p2 = new b2Vec2(); + p1.x = this.normal.x * this.offset + this.normal.y * r; + p1.y = this.normal.y * this.offset - this.normal.x * r; + p2.x = this.normal.x * this.offset - this.normal.y * r; + p2.y = this.normal.y * this.offset + this.normal.x * r; + var color = new b2Color(0, 0, .8); + debugDraw.DrawSegment(p1, p2, color); + }; + return b2BuoyancyController; + })(b2Controller); + var b2ConstantAccelController = (function (_super) { + __extends(b2ConstantAccelController, _super); + function b2ConstantAccelController() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.A = new b2Vec2(0, 0); + return _this; + } + b2ConstantAccelController.prototype.Step = function (step) { + var dtA = b2Vec2.MulSV(step.dt, this.A, b2ConstantAccelController.Step_s_dtA); + for (var i = this.m_bodyList; i; i = i.nextBody) { + var body = i.body; + if (!body.IsAwake()) continue; + body.SetLinearVelocity(b2Vec2.AddVV(body.GetLinearVelocity(), dtA, b2Vec2.s_t0)); + } + }; + b2ConstantAccelController.prototype.Draw = function (draw) { }; + b2ConstantAccelController.Step_s_dtA = new b2Vec2(); + return b2ConstantAccelController; + })(b2Controller); + var b2ConstantForceController = (function (_super) { + __extends(b2ConstantForceController, _super); + function b2ConstantForceController() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.F = new b2Vec2(0, 0); + return _this; + } + b2ConstantForceController.prototype.Step = function (step) { + for (var i = this.m_bodyList; i; i = i.nextBody) { + var body = i.body; + if (!body.IsAwake()) continue; + body.ApplyForce(this.F, body.GetWorldCenter()); + } + }; + b2ConstantForceController.prototype.Draw = function (draw) { }; + return b2ConstantForceController; + })(b2Controller); + var b2GravityController = (function (_super) { + __extends(b2GravityController, _super); + function b2GravityController() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.G = 1; + _this.invSqr = true; + return _this; + } + b2GravityController.prototype.Step = function (step) { + if (this.invSqr) for (var i = this.m_bodyList; i; i = i.nextBody) { + var body1 = i.body; + var p1 = body1.GetWorldCenter(); + var mass1 = body1.GetMass(); + for (var j = this.m_bodyList; j && j !== i; j = j.nextBody) { + var body2 = j.body; + var p2 = body2.GetWorldCenter(); + var mass2 = body2.GetMass(); + var dx = p2.x - p1.x; + var dy = p2.y - p1.y; + var r2 = dx * dx + dy * dy; + if (r2 < b2_epsilon) continue; + var f = b2GravityController.Step_s_f.Set(dx, dy); + f.SelfMul(this.G / r2 / b2Sqrt(r2) * mass1 * mass2); + body1.IsAwake() && body1.ApplyForce(f, p1); + body2.IsAwake() && body2.ApplyForce(f.SelfMul(-1), p2); + } + } else for (var i = this.m_bodyList; i; i = i.nextBody) { + var body1 = i.body; + var p1 = body1.GetWorldCenter(); + var mass1 = body1.GetMass(); + for (var j = this.m_bodyList; j && j !== i; j = j.nextBody) { + var body2 = j.body; + var p2 = body2.GetWorldCenter(); + var mass2 = body2.GetMass(); + var dx = p2.x - p1.x; + var dy = p2.y - p1.y; + var r2 = dx * dx + dy * dy; + if (r2 < b2_epsilon) continue; + var f = b2GravityController.Step_s_f.Set(dx, dy); + f.SelfMul(this.G / r2 * mass1 * mass2); + body1.IsAwake() && body1.ApplyForce(f, p1); + body2.IsAwake() && body2.ApplyForce(f.SelfMul(-1), p2); + } + } + }; + b2GravityController.prototype.Draw = function (draw) { }; + b2GravityController.Step_s_f = new b2Vec2(); + return b2GravityController; + })(b2Controller); + var b2TensorDampingController = (function (_super) { + __extends(b2TensorDampingController, _super); + function b2TensorDampingController() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.T = new b2Mat22(); + _this.maxTimestep = 0; + return _this; + } + b2TensorDampingController.prototype.Step = function (step) { + var timestep = step.dt; + if (timestep <= b2_epsilon) return; + timestep > this.maxTimestep && this.maxTimestep > 0 && (timestep = this.maxTimestep); + for (var i = this.m_bodyList; i; i = i.nextBody) { + var body = i.body; + if (!body.IsAwake()) continue; + var damping = body.GetWorldVector(b2Mat22.MulMV(this.T, body.GetLocalVector(body.GetLinearVelocity(), b2Vec2.s_t0), b2Vec2.s_t1), b2TensorDampingController.Step_s_damping); + body.SetLinearVelocity(b2Vec2.AddVV(body.GetLinearVelocity(), b2Vec2.MulSV(timestep, damping, b2Vec2.s_t0), b2Vec2.s_t1)); + } + }; + b2TensorDampingController.prototype.Draw = function (draw) { }; + b2TensorDampingController.prototype.SetAxisAligned = function (xDamping, yDamping) { + this.T.ex.x = -xDamping; + this.T.ex.y = 0; + this.T.ey.x = 0; + this.T.ey.y = -yDamping; + this.maxTimestep = xDamping > 0 || yDamping > 0 ? 1 / b2Max(xDamping, yDamping) : 0; + }; + b2TensorDampingController.Step_s_damping = new b2Vec2(); + return b2TensorDampingController; + })(b2Controller); + var b2RopeDef = (function () { + function b2RopeDef() { + this.vertices = []; + this.count = 0; + this.masses = []; + this.gravity = new b2Vec2(0, 0); + this.damping = .1; + this.k2 = .9; + this.k3 = .1; + } + return b2RopeDef; + })(); + var b2Rope = (function () { + function b2Rope() { + this.m_count = 0; + this.m_ps = []; + this.m_p0s = []; + this.m_vs = []; + this.m_ims = []; + this.m_Ls = []; + this.m_as = []; + this.m_gravity = new b2Vec2(); + this.m_damping = 0; + this.m_k2 = 1; + this.m_k3 = .1; + } + b2Rope.prototype.GetVertexCount = function () { + return this.m_count; + }; + b2Rope.prototype.GetVertices = function () { + return this.m_ps; + }; + b2Rope.prototype.Initialize = function (def) { + this.m_count = def.count; + this.m_ps = b2Vec2.MakeArray(this.m_count); + this.m_p0s = b2Vec2.MakeArray(this.m_count); + this.m_vs = b2Vec2.MakeArray(this.m_count); + this.m_ims = b2MakeNumberArray(this.m_count); + for (var i = 0; i < this.m_count; ++i) { + this.m_ps[i].Copy(def.vertices[i]); + this.m_p0s[i].Copy(def.vertices[i]); + this.m_vs[i].SetZero(); + var m = def.masses[i]; + this.m_ims[i] = m > 0 ? 1 / m : 0; + } + var count2 = this.m_count - 1; + var count3 = this.m_count - 2; + this.m_Ls = b2MakeNumberArray(count2); + this.m_as = b2MakeNumberArray(count3); + for (var i = 0; i < count2; ++i) { + var p1 = this.m_ps[i]; + var p2 = this.m_ps[i + 1]; + this.m_Ls[i] = b2Vec2.DistanceVV(p1, p2); + } + for (var i = 0; i < count3; ++i) { + var p1 = this.m_ps[i]; + var p2 = this.m_ps[i + 1]; + var p3 = this.m_ps[i + 2]; + var d1 = b2Vec2.SubVV(p2, p1, b2Vec2.s_t0); + var d2 = b2Vec2.SubVV(p3, p2, b2Vec2.s_t1); + var a = b2Vec2.CrossVV(d1, d2); + var b = b2Vec2.DotVV(d1, d2); + this.m_as[i] = b2Atan2(a, b); + } + this.m_gravity.Copy(def.gravity); + this.m_damping = def.damping; + this.m_k2 = def.k2; + this.m_k3 = def.k3; + }; + b2Rope.prototype.Step = function (h, iterations) { + if (0 === h) return; + var d = Math.exp(-h * this.m_damping); + for (var i = 0; i < this.m_count; ++i) { + this.m_p0s[i].Copy(this.m_ps[i]); + this.m_ims[i] > 0 && this.m_vs[i].SelfMulAdd(h, this.m_gravity); + this.m_vs[i].SelfMul(d); + this.m_ps[i].SelfMulAdd(h, this.m_vs[i]); + } + for (var i = 0; i < iterations; ++i) { + this.SolveC2(); + this.SolveC3(); + this.SolveC2(); + } + var inv_h = 1 / h; + for (var i = 0; i < this.m_count; ++i) b2Vec2.MulSV(inv_h, b2Vec2.SubVV(this.m_ps[i], this.m_p0s[i], b2Vec2.s_t0), this.m_vs[i]); + }; + b2Rope.prototype.SolveC2 = function () { + var count2 = this.m_count - 1; + for (var i = 0; i < count2; ++i) { + var p1 = this.m_ps[i]; + var p2 = this.m_ps[i + 1]; + var d = b2Vec2.SubVV(p2, p1, b2Rope.s_d); + var L = d.Normalize(); + var im1 = this.m_ims[i]; + var im2 = this.m_ims[i + 1]; + if (im1 + im2 === 0) continue; + var s1 = im1 / (im1 + im2); + var s2 = im2 / (im1 + im2); + p1.SelfMulSub(this.m_k2 * s1 * (this.m_Ls[i] - L), d); + p2.SelfMulAdd(this.m_k2 * s2 * (this.m_Ls[i] - L), d); + } + }; + b2Rope.prototype.SetAngle = function (angle) { + var count3 = this.m_count - 2; + for (var i = 0; i < count3; ++i) this.m_as[i] = angle; + }; + b2Rope.prototype.SolveC3 = function () { + var count3 = this.m_count - 2; + for (var i = 0; i < count3; ++i) { + var p1 = this.m_ps[i]; + var p2 = this.m_ps[i + 1]; + var p3 = this.m_ps[i + 2]; + var m1 = this.m_ims[i]; + var m2 = this.m_ims[i + 1]; + var m3 = this.m_ims[i + 2]; + var d1 = b2Vec2.SubVV(p2, p1, b2Rope.s_d1); + var d2 = b2Vec2.SubVV(p3, p2, b2Rope.s_d2); + var L1sqr = d1.LengthSquared(); + var L2sqr = d2.LengthSquared(); + if (L1sqr * L2sqr === 0) continue; + var a = b2Vec2.CrossVV(d1, d2); + var b = b2Vec2.DotVV(d1, d2); + var angle = b2Atan2(a, b); + var Jd1 = b2Vec2.MulSV(-1 / L1sqr, d1.SelfSkew(), b2Rope.s_Jd1); + var Jd2 = b2Vec2.MulSV(1 / L2sqr, d2.SelfSkew(), b2Rope.s_Jd2); + var J1 = b2Vec2.NegV(Jd1, b2Rope.s_J1); + var J2 = b2Vec2.SubVV(Jd1, Jd2, b2Rope.s_J2); + var J3 = Jd2; + var mass = m1 * b2Vec2.DotVV(J1, J1) + m2 * b2Vec2.DotVV(J2, J2) + m3 * b2Vec2.DotVV(J3, J3); + if (0 === mass) continue; + mass = 1 / mass; + var C = angle - this.m_as[i]; + while (C > b2_pi) { + angle -= 2 * b2_pi; + C = angle - this.m_as[i]; + } + while (C < -b2_pi) { + angle += 2 * b2_pi; + C = angle - this.m_as[i]; + } + var impulse = -this.m_k3 * mass * C; + p1.SelfMulAdd(m1 * impulse, J1); + p2.SelfMulAdd(m2 * impulse, J2); + p3.SelfMulAdd(m3 * impulse, J3); + } + }; + b2Rope.prototype.Draw = function (draw) { + var c = new b2Color(.4, .5, .7); + for (var i = 0; i < this.m_count - 1; ++i) draw.DrawSegment(this.m_ps[i], this.m_ps[i + 1], c); + }; + b2Rope.s_d = new b2Vec2(); + b2Rope.s_d1 = new b2Vec2(); + b2Rope.s_d2 = new b2Vec2(); + b2Rope.s_Jd1 = new b2Vec2(); + b2Rope.s_Jd2 = new b2Vec2(); + b2Rope.s_J1 = new b2Vec2(); + b2Rope.s_J2 = new b2Vec2(); + return b2Rope; + })(); + exports.b2Assert = b2Assert; + exports.b2Maybe = b2Maybe; + exports.b2_maxFloat = b2_maxFloat; + exports.b2_epsilon = b2_epsilon; + exports.b2_epsilon_sq = b2_epsilon_sq; + exports.b2_pi = b2_pi; + exports.b2_maxManifoldPoints = b2_maxManifoldPoints; + exports.b2_maxPolygonVertices = b2_maxPolygonVertices; + exports.b2_aabbExtension = b2_aabbExtension; + exports.b2_aabbMultiplier = b2_aabbMultiplier; + exports.b2_linearSlop = b2_linearSlop; + exports.b2_angularSlop = b2_angularSlop; + exports.b2_polygonRadius = b2_polygonRadius; + exports.b2_maxSubSteps = b2_maxSubSteps; + exports.b2_maxTOIContacts = b2_maxTOIContacts; + exports.b2_velocityThreshold = b2_velocityThreshold; + exports.b2_maxLinearCorrection = b2_maxLinearCorrection; + exports.b2_maxAngularCorrection = b2_maxAngularCorrection; + exports.b2_maxTranslation = b2_maxTranslation; + exports.b2_maxTranslationSquared = b2_maxTranslationSquared; + exports.b2_maxRotation = b2_maxRotation; + exports.b2_maxRotationSquared = b2_maxRotationSquared; + exports.b2_baumgarte = b2_baumgarte; + exports.b2_toiBaumgarte = b2_toiBaumgarte; + exports.b2_invalidParticleIndex = b2_invalidParticleIndex; + exports.b2_maxParticleIndex = b2_maxParticleIndex; + exports.b2_particleStride = b2_particleStride; + exports.b2_minParticleWeight = b2_minParticleWeight; + exports.b2_maxParticlePressure = b2_maxParticlePressure; + exports.b2_maxParticleForce = b2_maxParticleForce; + exports.b2_maxTriadDistance = b2_maxTriadDistance; + exports.b2_maxTriadDistanceSquared = b2_maxTriadDistanceSquared; + exports.b2_minParticleSystemBufferCapacity = b2_minParticleSystemBufferCapacity; + exports.b2_barrierCollisionTime = b2_barrierCollisionTime; + exports.b2_timeToSleep = b2_timeToSleep; + exports.b2_linearSleepTolerance = b2_linearSleepTolerance; + exports.b2_angularSleepTolerance = b2_angularSleepTolerance; + exports.b2Alloc = b2Alloc; + exports.b2Free = b2Free; + exports.b2Log = b2Log; + exports.b2Version = b2Version; + exports.b2_version = b2_version; + exports.b2_branch = b2_branch; + exports.b2_commit = b2_commit; + exports.b2ParseInt = b2ParseInt; + exports.b2ParseUInt = b2ParseUInt; + exports.b2MakeArray = b2MakeArray; + exports.b2MakeNullArray = b2MakeNullArray; + exports.b2MakeNumberArray = b2MakeNumberArray; + exports.b2_pi_over_180 = b2_pi_over_180; + exports.b2_180_over_pi = b2_180_over_pi; + exports.b2_two_pi = b2_two_pi; + exports.b2Abs = b2Abs; + exports.b2Min = b2Min; + exports.b2Max = b2Max; + exports.b2Clamp = b2Clamp; + exports.b2Swap = b2Swap; + exports.b2IsValid = b2IsValid; + exports.b2Sq = b2Sq; + exports.b2InvSqrt = b2InvSqrt; + exports.b2Sqrt = b2Sqrt; + exports.b2Pow = b2Pow; + exports.b2DegToRad = b2DegToRad; + exports.b2RadToDeg = b2RadToDeg; + exports.b2Cos = b2Cos; + exports.b2Sin = b2Sin; + exports.b2Acos = b2Acos; + exports.b2Asin = b2Asin; + exports.b2Atan2 = b2Atan2; + exports.b2NextPowerOfTwo = b2NextPowerOfTwo; + exports.b2IsPowerOfTwo = b2IsPowerOfTwo; + exports.b2Random = b2Random; + exports.b2RandomRange = b2RandomRange; + exports.b2Vec2 = b2Vec2; + exports.b2Vec2_zero = b2Vec2_zero; + exports.b2Vec3 = b2Vec3; + exports.b2Mat22 = b2Mat22; + exports.b2Mat33 = b2Mat33; + exports.b2Rot = b2Rot; + exports.b2Transform = b2Transform; + exports.b2Sweep = b2Sweep; + exports.b2Color = b2Color; + exports.b2Draw = b2Draw; + exports.b2Timer = b2Timer; + exports.b2Counter = b2Counter; + exports.b2GrowableStack = b2GrowableStack; + exports.b2BlockAllocator = b2BlockAllocator; + exports.b2StackAllocator = b2StackAllocator; + exports.b2ContactFeature = b2ContactFeature; + exports.b2ContactID = b2ContactID; + exports.b2ManifoldPoint = b2ManifoldPoint; + exports.b2Manifold = b2Manifold; + exports.b2WorldManifold = b2WorldManifold; + exports.b2GetPointStates = b2GetPointStates; + exports.b2ClipVertex = b2ClipVertex; + exports.b2RayCastInput = b2RayCastInput; + exports.b2RayCastOutput = b2RayCastOutput; + exports.b2AABB = b2AABB; + exports.b2TestOverlapAABB = b2TestOverlapAABB; + exports.b2ClipSegmentToLine = b2ClipSegmentToLine; + exports.b2TestOverlapShape = b2TestOverlapShape; + exports.b2DistanceProxy = b2DistanceProxy; + exports.b2SimplexCache = b2SimplexCache; + exports.b2DistanceInput = b2DistanceInput; + exports.b2DistanceOutput = b2DistanceOutput; + exports.b2ShapeCastInput = b2ShapeCastInput; + exports.b2ShapeCastOutput = b2ShapeCastOutput; + exports.b2_gjk_reset = b2_gjk_reset; + exports.b2SimplexVertex = b2SimplexVertex; + exports.b2Simplex = b2Simplex; + exports.b2Distance = b2Distance; + exports.b2ShapeCast = b2ShapeCast; + exports.b2Pair = b2Pair; + exports.b2BroadPhase = b2BroadPhase; + exports.b2PairLessThan = b2PairLessThan; + exports.b2TreeNode = b2TreeNode; + exports.b2DynamicTree = b2DynamicTree; + exports.b2_toi_reset = b2_toi_reset; + exports.b2TOIInput = b2TOIInput; + exports.b2TOIOutput = b2TOIOutput; + exports.b2SeparationFunction = b2SeparationFunction; + exports.b2TimeOfImpact = b2TimeOfImpact; + exports.b2CollideCircles = b2CollideCircles; + exports.b2CollidePolygonAndCircle = b2CollidePolygonAndCircle; + exports.b2CollidePolygons = b2CollidePolygons; + exports.b2CollideEdgeAndCircle = b2CollideEdgeAndCircle; + exports.b2CollideEdgeAndPolygon = b2CollideEdgeAndPolygon; + exports.b2MassData = b2MassData; + exports.b2Shape = b2Shape; + exports.b2CircleShape = b2CircleShape; + exports.b2PolygonShape = b2PolygonShape; + exports.b2EdgeShape = b2EdgeShape; + exports.b2ChainShape = b2ChainShape; + exports.b2Filter = b2Filter; + exports.b2FixtureDef = b2FixtureDef; + exports.b2FixtureProxy = b2FixtureProxy; + exports.b2Fixture = b2Fixture; + exports.b2BodyDef = b2BodyDef; + exports.b2Body = b2Body; + exports.b2World = b2World; + exports.b2DestructionListener = b2DestructionListener; + exports.b2ContactFilter = b2ContactFilter; + exports.b2ContactImpulse = b2ContactImpulse; + exports.b2ContactListener = b2ContactListener; + exports.b2QueryCallback = b2QueryCallback; + exports.b2RayCastCallback = b2RayCastCallback; + exports.b2Island = b2Island; + exports.b2Profile = b2Profile; + exports.b2TimeStep = b2TimeStep; + exports.b2Position = b2Position; + exports.b2Velocity = b2Velocity; + exports.b2SolverData = b2SolverData; + exports.b2ContactManager = b2ContactManager; + exports.b2MixFriction = b2MixFriction; + exports.b2MixRestitution = b2MixRestitution; + exports.b2ContactEdge = b2ContactEdge; + exports.b2Contact = b2Contact; + exports.b2ContactRegister = b2ContactRegister; + exports.b2ContactFactory = b2ContactFactory; + exports.g_blockSolve = g_blockSolve; + exports.b2VelocityConstraintPoint = b2VelocityConstraintPoint; + exports.b2ContactVelocityConstraint = b2ContactVelocityConstraint; + exports.b2ContactPositionConstraint = b2ContactPositionConstraint; + exports.b2ContactSolverDef = b2ContactSolverDef; + exports.b2PositionSolverManifold = b2PositionSolverManifold; + exports.b2ContactSolver = b2ContactSolver; + exports.b2CircleContact = b2CircleContact; + exports.b2PolygonContact = b2PolygonContact; + exports.b2PolygonAndCircleContact = b2PolygonAndCircleContact; + exports.b2EdgeAndCircleContact = b2EdgeAndCircleContact; + exports.b2EdgeAndPolygonContact = b2EdgeAndPolygonContact; + exports.b2ChainAndCircleContact = b2ChainAndCircleContact; + exports.b2ChainAndPolygonContact = b2ChainAndPolygonContact; + exports.b2Jacobian = b2Jacobian; + exports.b2JointEdge = b2JointEdge; + exports.b2JointDef = b2JointDef; + exports.b2Joint = b2Joint; + exports.b2AreaJointDef = b2AreaJointDef; + exports.b2AreaJoint = b2AreaJoint; + exports.b2DistanceJointDef = b2DistanceJointDef; + exports.b2DistanceJoint = b2DistanceJoint; + exports.b2FrictionJointDef = b2FrictionJointDef; + exports.b2FrictionJoint = b2FrictionJoint; + exports.b2GearJointDef = b2GearJointDef; + exports.b2GearJoint = b2GearJoint; + exports.b2MotorJointDef = b2MotorJointDef; + exports.b2MotorJoint = b2MotorJoint; + exports.b2MouseJointDef = b2MouseJointDef; + exports.b2MouseJoint = b2MouseJoint; + exports.b2PrismaticJointDef = b2PrismaticJointDef; + exports.b2PrismaticJoint = b2PrismaticJoint; + exports.b2_minPulleyLength = b2_minPulleyLength; + exports.b2PulleyJointDef = b2PulleyJointDef; + exports.b2PulleyJoint = b2PulleyJoint; + exports.b2RevoluteJointDef = b2RevoluteJointDef; + exports.b2RevoluteJoint = b2RevoluteJoint; + exports.b2RopeJointDef = b2RopeJointDef; + exports.b2RopeJoint = b2RopeJoint; + exports.b2WeldJointDef = b2WeldJointDef; + exports.b2WeldJoint = b2WeldJoint; + exports.b2WheelJointDef = b2WheelJointDef; + exports.b2WheelJoint = b2WheelJoint; + exports.b2ControllerEdge = b2ControllerEdge; + exports.b2Controller = b2Controller; + exports.b2BuoyancyController = b2BuoyancyController; + exports.b2ConstantAccelController = b2ConstantAccelController; + exports.b2ConstantForceController = b2ConstantForceController; + exports.b2GravityController = b2GravityController; + exports.b2TensorDampingController = b2TensorDampingController; + exports.b2ParticleDef = b2ParticleDef; + exports.b2CalculateParticleIterations = b2CalculateParticleIterations; + exports.b2ParticleHandle = b2ParticleHandle; + exports.b2ParticleGroupDef = b2ParticleGroupDef; + exports.b2ParticleGroup = b2ParticleGroup; + exports.b2GrowableBuffer = b2GrowableBuffer; + exports.b2FixtureParticleQueryCallback = b2FixtureParticleQueryCallback; + exports.b2ParticleContact = b2ParticleContact; + exports.b2ParticleBodyContact = b2ParticleBodyContact; + exports.b2ParticlePair = b2ParticlePair; + exports.b2ParticleTriad = b2ParticleTriad; + exports.b2ParticleSystemDef = b2ParticleSystemDef; + exports.b2RopeDef = b2RopeDef; + exports.b2Rope = b2Rope; + Object.defineProperty(exports, "__esModule", { + value: true + }); + })); + }), {}], + 436: [(function (require, module, exports) { + "use strict"; + var _global = "undefined" === typeof window ? global : window; + _global.cc = _global.cc || {}; + cc.internal = cc.internal || {}; + require("./predefine"); + require("./polyfill/string"); + require("./polyfill/misc"); + require("./polyfill/array"); + require("./polyfill/object"); + require("./polyfill/array-buffer"); + require("./polyfill/number"); + true; + require("./polyfill/typescript"); + require("./cocos2d/core/predefine"); + true; + require("./cocos2d"); + require("./extends"); + false; + module.exports = _global.cc; + }), { + "./cocos2d": 352, + "./cocos2d/core/predefine": 264, + "./extends": 411, + "./package": void 0, + "./polyfill/array": 438, + "./polyfill/array-buffer": 437, + "./polyfill/misc": 439, + "./polyfill/number": 440, + "./polyfill/object": 441, + "./polyfill/string": 442, + "./polyfill/typescript": 443, + "./predefine": 444 + }], + 437: [(function (require, module, exports) { + "use strict"; + if (!ArrayBuffer.isView) { + var TypedArray = Object.getPrototypeOf(Int8Array); + ArrayBuffer.isView = "function" === typeof TypedArray ? function (obj) { + return obj instanceof TypedArray; + } : function (obj) { + if ("object" !== typeof obj) return false; + var ctor = obj.constructor; + return ctor === Float64Array || ctor === Float32Array || ctor === Uint8Array || ctor === Uint32Array || ctor === Int8Array; + }; + } + }), {}], + 438: [(function (require, module, exports) { + "use strict"; + Array.isArray || (Array.isArray = function (arg) { + return "[object Array]" === Object.prototype.toString.call(arg); + }); + Array.prototype.find || (Array.prototype.find = function (callback) { + var length = this.length; + for (var i = 0; i < length; i++) { + var element = this[i]; + if (callback.call(this, element, i, this)) return element; + } + return; + }); + Array.prototype.includes || (Array.prototype.includes = function (value) { + return -1 !== this.indexOf(value); + }); + }), {}], + 439: [(function (require, module, exports) { + "use strict"; + Math.sign || (Math.sign = function (x) { + x = +x; + if (0 === x || isNaN(x)) return x; + return x > 0 ? 1 : -1; + }); + Math.log2 || (Math.log2 = function (x) { + return Math.log(x) * Math.LOG2E; + }); + Number.isInteger || (Number.isInteger = function (value) { + return "number" === typeof value && isFinite(value) && Math.floor(value) === value; + }); + if ((false, false) || !console.time) { + var Timer = window.performance || Date; + var _timerTable = Object.create(null); + console.time = function (label) { + _timerTable[label] = Timer.now(); + }; + console.timeEnd = function (label) { + var startTime = _timerTable[label]; + var duration = Timer.now() - startTime; + console.log(label + ": " + duration + "ms"); + }; + } + }), {}], + 440: [(function (require, module, exports) { + "use strict"; + Number.parseFloat = Number.parseFloat || parseFloat; + Number.parseInt = Number.parseInt || parseInt; + }), {}], + 441: [(function (require, module, exports) { + "use strict"; + Object.assign || (Object.assign = function (target, source) { + return cc.js.mixin(target, source); + }); + Object.getOwnPropertyDescriptors || (Object.getOwnPropertyDescriptors = function (obj) { + var descriptors = {}; + var ownKeys = Object.getOwnPropertyNames(obj); + Object.getOwnPropertySymbols && (ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(obj))); + for (var i = 0; i < ownKeys.length; ++i) { + var key = ownKeys[i]; + descriptors[key] = Object.getOwnPropertyDescriptor(obj, key); + } + return descriptors; + }); + }), {}], + 442: [(function (require, module, exports) { + "use strict"; + String.prototype.startsWith || (String.prototype.startsWith = function (searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }); + String.prototype.endsWith || (String.prototype.endsWith = function (searchString, position) { + ("undefined" === typeof position || position > this.length) && (position = this.length); + position -= searchString.length; + var lastIndex = this.indexOf(searchString, position); + return -1 !== lastIndex && lastIndex === position; + }); + String.prototype.trimLeft || (String.prototype.trimLeft = function () { + return this.replace(/^\s+/, ""); + }); + }), {}], + 443: [(function (require, module, exports) { + "use strict"; + var extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]); + }; + window.__extends = function (d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + window.__assign = Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && (t[p] = s[p]); + } + return t; + }; + window.__rest = function (s, e) { + var t = {}; + for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]); + if (null != s && "function" === typeof Object.getOwnPropertySymbols) for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]); + return t; + }; + window.__decorate = function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r); + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + window.__param = function (paramIndex, decorator) { + return function (target, key) { + decorator(target, key, paramIndex); + }; + }; + window.__metadata = function (metadataKey, metadataValue) { + if ("object" === typeof Reflect && "function" === typeof Reflect.metadata) return Reflect.metadata(metadataKey, metadataValue); + }; + window.__awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + window.__generator = function (thisArg, body) { + var _ = { + label: 0, + sent: function sent() { + if (1 & t[0]) throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, f, y, t, g; + return g = { + next: verb(0), + throw: verb(1), + return: verb(2) + }, "function" === typeof Symbol && (g[Symbol.iterator] = function () { + return this; + }), g; + function verb(n) { + return function (v) { + return step([n, v]); + }; + } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = 2 & op[0] ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), + 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + (y = 0, t) && (op = [2 & op[0], t.value]); + switch (op[0]) { + case 0: + case 1: + t = op; + break; + + case 4: + _.label++; + return { + value: op[1], + done: false + }; + + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (6 === op[0] || 2 === op[0])) { + _ = 0; + continue; + } + if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (6 === op[0] && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + t[2] && _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (5 & op[0]) throw op[1]; + return { + value: op[0] ? op[1] : void 0, + done: true + }; + } + }; + window.__exportStar = function (m, o) { + for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(o, p) || __createBinding(o, m, p); + }; + window.__createBinding = Object.create ? function (o, m, k, k2) { + void 0 === k2 && (k2 = k); + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); + } : function (o, m, k, k2) { + void 0 === k2 && (k2 = k); + o[k2] = m[k]; + }; + window.__values = function (o) { + var s = "function" === typeof Symbol && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && "number" === typeof o.length) return { + next: function next() { + o && i >= o.length && (o = void 0); + return { + value: o && o[i++], + done: !o + }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + window.__read = function (o, n) { + var m = "function" === typeof Symbol && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((void 0 === n || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { + error: error + }; + } finally { + try { + r && !r.done && (m = i["return"]) && m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + window.__spread = function () { + for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); + return ar; + }; + window.__spreadArrays = function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, + k++) r[k] = a[j]; + return r; + }; + window.__await = function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + window.__asyncGenerator = function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { + return this; + }, i; + function verb(n) { + g[n] && (i[n] = function (v) { + return new Promise(function (a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }); + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + (f(v), q.shift(), q.length) && resume(q[0][0], q[0][1]); + } + }; + window.__asyncDelegator = function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", (function (e) { + throw e; + })), verb("return"), i[Symbol.iterator] = function () { + return this; + }, i; + function verb(n, f) { + i[n] = o[n] ? function (v) { + return (p = !p) ? { + value: __await(o[n](v)), + done: "return" === n + } : f ? f(v) : v; + } : f; + } + }; + window.__asyncValues = function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = "function" === typeof __values ? __values(o) : o[Symbol.iterator](), + i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function (v) { + return new Promise(function (resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then((function (v) { + resolve({ + value: v, + done: d + }); + }), reject); + } + }; + window.__makeTemplateObject = function (cooked, raw) { + Object.defineProperty ? Object.defineProperty(cooked, "raw", { + value: raw + }) : cooked.raw = raw; + return cooked; + }; + var __setModuleDefault = Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); + } : function (o, v) { + o["default"] = v; + }; + window.__importStar = function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (null != mod) for (var k in mod) "default" !== k && Object.prototype.hasOwnProperty.call(mod, k) && __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + }; + window.__importDefault = function (mod) { + return mod && mod.__esModule ? mod : { + default: mod + }; + }; + window.__classPrivateFieldGet = function (receiver, privateMap) { + if (!privateMap.has(receiver)) throw new TypeError("attempted to get private field on non-instance"); + return privateMap.get(receiver); + }; + window.__classPrivateFieldSet = function (receiver, privateMap, value) { + if (!privateMap.has(receiver)) throw new TypeError("attempted to set private field on non-instance"); + privateMap.set(receiver, value); + return value; + }; + }), {}], + 444: [(function (require, module, exports) { + "use strict"; + var _global = "undefined" === typeof window ? global : window; + function defineMacro(name, defaultValue) { + "undefined" === typeof _global[name] && (_global[name] = defaultValue); + } + function defineDeprecatedMacroGetter(name, defaultValue) { + "undefined" === typeof _global[name] && Object.defineProperty(_global, name, { + get: function get() { + var recommandedUsage; + "CC_WECHATGAMESUB" === name ? recommandedUsage = "cc.sys.platform === cc.sys.WECHAT_GAME_SUB" : "CC_WECHATGAME" === name ? recommandedUsage = "cc.sys.platform === cc.sys.WECHAT_GAME" : "CC_QQPLAY" === name && (recommandedUsage = "cc.sys.platform === cc.sys.QQ_PLAY"); + cc.warnID(1400, name, recommandedUsage); + return defaultValue; + } + }); + } + function defined(name) { + return "object" === typeof _global[name]; + } + defineMacro("CC_BUILD", false); + true; + _global.CC_BUILD = true; + _global.CC_DEV = false; + _global.CC_DEBUG = true; + _global.CC_JSB = false; + _global.CC_NATIVERENDERER = false; + _global.CC_SUPPORT_JIT = true; + _global.CC_PHYSICS_BUILTIN = false; + _global.CC_PHYSICS_CANNON = true; + _global.CC_EDITOR = false; + _global.CC_PREVIEW = false; + _global.CC_TEST = false; + _global.CC_RUNTIME = false; + _global.CC_JSB = false; + var WECHATGAMESUB = !!(defined("wx") && wx.getSharedCanvas); + var WECHATGAME = !!(defined("wx") && (wx.getSystemInfoSync || wx.getSharedCanvas)); + var QQPLAY = defined("bk"); + defineDeprecatedMacroGetter("CC_WECHATGAMESUB", WECHATGAMESUB); + defineDeprecatedMacroGetter("CC_WECHATGAME", WECHATGAME); + defineDeprecatedMacroGetter("CC_QQPLAY", QQPLAY); + false; + var engineVersion = "2.4.4"; + _global["CocosEngine"] = cc.ENGINE_VERSION = engineVersion; + }), {}] +}, {}, [436]); \ No newline at end of file diff --git a/public/assets/ZenMaruGothic-Regular.2d389171.ttf b/public/assets/ZenMaruGothic-Regular.2d389171.ttf deleted file mode 100644 index b491f5bc83350a5a64a58a0b97ce0d9fdce0744e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3832448 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

A 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

FaC&@F$GukuCGtx8E)8EtA)5p`*)6vt`)5_D_ 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 z

  • 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

    _7_=xw)4p>C`=^_)~0Z@rDXUFL_N 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 z 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

    *j7jEf*RYq6sqOEW>4zm112w2`({9x88) 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


    quYH5ghGiKJei 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

    5CMDx_cv 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≈Wm26r!)2(x@GSh|RSF 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°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�}Xhl7(dO+w(;_sgRL7-zJ$|a_Xn;-JplCj2ryXkI#JQ0(__bJ@ZmX!iW%%@5gIFPsY8fhWKBw)If-d zHxks=$AU9aa24a)!bpVbfaU;0PG_Y}M8WurZsyn|_cP4muKK0$4u=P0ADni#U5fRX zP@%ft{B2+w?xf!2HiBwpX%pgse~=$&WBRwEhsN+KmqeG;Bh!+kG?yJoxlUF&Vq&{2 zqjZ?D?oh9xVr>X4)ld z`lqCiw!4Z2@Q9)T6P~@l8c6!DBei+mbs9F$P;9Wt8|uxGQ+YY5qszU)-pm)T5}evq z*f@o&LYejS{HCeK4)P3s-n?cS8WRmxeS443w|=?mj+aqpR-|UE^#S@kZqKji@L#27 zlL3<=Zhc@5fCIE{#b#13k}iLdJDwDI>+X?TplE?N*T!bzghcs6svH);UWNn`hNA)5 zV2ffT9kk_~=8zUIBFVq#V91y5eFsS@8++^y`jXX~7A1!U&(k4k$slRh@_6etN@VsO zhps*diY+|9tuk{_>({tgl?&$5q=(tihJF)f#zEN&I6na_KsNIro76xDWG4p!h0p<_ z`WixAMzIJm224_D4OedBFu3YZBu5xmSiM_jhh239%ly^1`;*T*vfo5u#969-sb zR;LggzKEjkiw2Iyyhv+o@0Iyb-R5rr=TGw-azU-gxcQ)$2g1jY9yo^d@(k_GjDxe0 z0v~uoe~YJ}o!&Qy zA}JbF1*PEitT}Vj775B^6stoloKT3@`_j~r;dGjXRh%_6pQL6lO#t%&@(f2o2O=FQEfVXu+!A49`na z0OWE!U`{_D?>AkqNcm=Qp0ZQ(#b%xyttd@5i~{X=_vizGTrTi!SjX0Sx#qWe9Tfk8 zZIKZ7Ei) z^i6=Az`NU4z7R}O-Ae(G5r{3(L@~lLJPDW6(9g}cmX(L_kTfm{5YxGM)_6BV$mpQ9 z1G*5MTwb|7rG_?@*~xy8A4&E~p=W^Xx z7#$hcwUNO?SI_lkHo}$JU^hpgj*m&>{%+&UlGu%b7M^pg*@s3+k*ybp}xzd}GJ zavn~9Du*IkM_Y{sbvV3cN^In67N6BU}lK3baX>#&SF(*0O&Y6+qVcIMWE~K|!@<8xm@S&O1)6vW0 zIJ_IYY{L2yVv{C40Y1o*RvQe7EoxqnBD0K>w;nu_?9-8?a|Rra(4b^Nu?EELUeU~d zi`>l0SaWp7%UM4}uIHWcg(@|y1jJ)T11Bt^D-y&|^IJW)(Tn$(ESz^{w11?8DaC+O zX&CZm9zg4W!(+DlrG%$u+8yefn(tFBszB8Sv4_iRy5^rwfzJP?v# z;V*^E@zk|;lOwV|7QtX|(J4eD(bWOF-g+z)kB1(OM@)H1ICTnLYF?BGo`o-Tc&9hB zgS$SrBkhxrvWV@>(pVq;xnenS!Lhk>xx}>>aLHovSEAJ%eNN8U68z4bE+|SNZ9d9@R0CwN-k8KlYqqIh_pR-s4ZY>0$$e?A zM*>(25HJBu3rszKkiphwNPAeN0=c3HU<7fJk6C ztL*oe6hMcO1uIRQKzsxzP@aE^_NF}4n`p5ITt$E5!xXYT;K0m9hp0F)G_Mg388MwF zpA?X&M>80B>hGn)7VU^+Y!GZm&~~XK1lA_JiY{5lBlPM{0wigUkzfRWPj@w!6rt7d z_q=RpM;zrrEBevMrm1ovNQ-3XQqfKLL$&p97himFAd~TL$IR}{BbCZX>;E>&kRlJ~ z3aq~!WPBLAZStjFrC16lpjjmC`IS!WGnD3Xh#`S^^j?^#nGhl&v`iwRf}Zo#-2(-L zki6yyty>=hNQ~1P4OuDfXO#7OpQc4wyf| zm9TZjeZy3@BP7b*81(accE@WkYSnm~?0*Ith zIbD%a0MzF21KToAAROb&mL)EhqiC6$r9MOo)L1HwhL|v@H9fl|+|SH38Z+D;sw=g& zz+sr3ZT3w#U8tg_d{-;2A5ps<)RZ2pV;i$=`G_-}=>rW6xNse2=h$5PnCy-iI|MZ4)8Uneyo?at;^b3% zj*8*7<8*u>fKCvZffmhbk4W*!5E>e7yj^p7(E_sTf(ss8l?Vh9t6D#vn81#5_0?C0 z3i+_<#7d)CsWcmvLu(-}jnPVF^tb&bl3J51xcWxP1xyMFmM{4lGHCF9;00q!38i=2 zh(Ge`pSELw5X~7tcCPiSi9Xp~&V7ZH@GkHdAq_zU?9Nco(dW?|{uoW+_B!h&ZkJll zeTEL(E~i+w07nIMN49+w$N_NFiC`xInLHS?QG6guOmLvoYdAxAGNLvaG$CPuK*48` zyn*SE&I!jIrw4*Mw!wgY=)b2bj-=O{1Z#r^eynE!{QCz;{13P^SK$UaZZoOqjva@p z{ac0{02w+6+LVTg)^$zq>RX5&^l$qi$$9%YQs4wiV1n6(iIFlloMTA$l7TS1YFdIF zZ>5v1z&o?#0qJq5eA3i7WQB|yPCT*cEJKHPP8KIo*E=Ui*x6<0N>0bJlQnSWnU1%C z3b3K>w~@H1a+wu4m`4pth7%}#hT$ioI!t@R3V=08;d|w{;v3LW$@kd+4$e3&$eW?B zJrYKUB3;ifZGA1&|-W zg0K6Bz84rC!b|#*gA#R#zv{hu9XMe4fOGu~O$=tsY8d4tngJ?9Z>vSM_a?F!jB10l z_{PRGu>4{wv`bDZp1Pkku-kZ73Z_N?qq02|2CbVzW+#Zp!Rffa*Nr|}oS~qi^+C1r zt$Tv*9d7&!2He}=dBZRyk(s1%mt+~hdi_IM=0=u{$OfNAKfe{@ugt;8q<>5UZUc=& z*63E$3?ayZAM*r6O^gg^XgCI4;8nv`n+3h^0#J)SrPl8OBdtTQ`+%o)TFuCn@Nm0- zG2Ul(Isa$)%)HGifgCD*LNAhb@&Mfgf=npY6Vo)}-NqLVjG`-vdn`ThNHJ%1<#SFW zmnSzgF4O@2}`=M{#o z9l?wcB`V=GkzQBPoTTCI&&`FEd&eU#R|M|5|MiDhx_hDLHXv=k4Xo`?fa$StlF|DK zIcLszKgOj(o|h~Sfy&5r0gVK?H}o2!K4gJt6+l=?!YO@>7?e0D%sd`Kz-d)3UrWm@ z$1qu5i5w9Jc0>8$^BMwVx3b9 zT~$guLQ>RKzjPy1yvZl;zG-Cg_SVC+y5WY0K*w#AFDnCkNSZK3iySw27E^;EyAYlq z;5ISZAEN%@+*~+wLng$136(jI@3|*2D;)TyHk)cDIhT+2veD1k;1tk)iA_$N!i0tklY%QM^a2; z1Ig-I6Q-d_QmG_@S93U=UdN*jxfv3k#uF5k7*71sm{7KaXtm+^PM8A0WPiU@QEJ;7 zD*KV|*TgB|!(isRXZnWNc{$)1e@4rg{w&$PlI(r<)%-JA5XMjFu z#kJ!JbA!&$5lK6AQCPkruO}eExFeCE$b!pvjh%(gQ1=WlifNb zCD^GBDbSQs=Z5#s1kKi9cqIBedf|86@w9MTcTaG=f~z!wW?h>dYzw<7m%X2GZ&%P^ zXL)ON9}3Ji-5!|=%ZI)%DD`PN)?`nw4WCDc93(w{4DB7`8}Z}h5Y(XHE`P*}o=b<8 zQ&BaCdxs3El0wB2jcj&a@QG<~6d}&AyOM5i^+Unw#r*iGIrM0Pa4WKzYy+6WWsBV+ zVG^$uO#7nSX7$(svvZ)gCn%u<5Y;qv^q?HXxJ+!$poGjRKHg)eVn0ku@0JLKCbn0} zsBxxXK0(nr(nJoq50wS#xWlv)v*tHjcr(qar`H5ma%LDbmf{05V<@+SO(nJgovsdP z3z_aMR3OzFH8)M#8w$#*F`@7n|5U8L_cQoFrL&;n;%E~8Nk*2YbyeO(pemxh0LU#;iK5n==|lIyb1EE zoi{nmt`Wc7;gzY5*~GhJHB$6tZCflXJ3K?$!8Bx0v)$CBe&pt%_p;$6jCGef+zlMx zQeCQz<0D!wvpu9#LAv`2o3`sn_e!%=|KDUXFA}y290DjL(%xQBA-xl*cJVBIbsWJu zN{aC{{%Gr+KqUi{(K{&Zp+DSjG95*SAB8`3ZKh{7n@sGLeI|9(M}x^QvbW-Kk1le> z)_1oatjD?5ce!|iD{zUvgMEp&Nf4iP6m}1g6)RdctdFKomoSDCv{SG~!B| z_4Swjp;Y(z>iE^~yE%d!00B?IrU?R0iH$rF8EtR7i5}MR8M{n2Hz*P_%YUOHWrN3t z!j*3*NAm58tCVt`Ac3EtJvHtku?~-Wtr|GTZTd`N;}nlR3Lozutj9;Ck`aU}I*B)e4v8gNDH=q;Ch`Sv<&C({lOsi@9C$W}_L8UczEFNw1zwfe;hcTf;J=e*{@ekYWPRW!62qJ1zPhT``}%6C8oD9q#%>L} zwVHe)}N`=|h@8ygSl!D-#$KV#vfR@@+25u1KihFMk`43~8`LOu`ln0JMf8W1iz}gEv{{tF36pA@ln{5VyMLrGW4*%e7P|!hT z03@B3`8HISGM=Yc!Emz zwwE?VES5%w zuv%1PXCZh-Z+=Ew(??pC7uFO;`x0vFhfJ0WI#q^QvdlLe-Akg(rVMPL0>B164>EHS zWwjoua}QV3>FOM9zJ7E?31 z6Q{xl#2^+#Bgtc`yvf=(PVXIw3VZ0&_Mo&xkNfIw-h=8aYE6Q(EZXhPvJ;z{rnfG4 zN&hn4-#>l!M3t~ECQtUrNI}m|f^1emUv|7dR(Mu&StHc7?Mu7{#{)TTNqaGB=UtsqL5FRE=5KJ6TUrY2|Dxv$pa!xuLp_eTEx4noGZ7^ zk7#b66ZzUG^0iL_ckm8SVbEZ-$I-I-Y|qz$JNORKtF%GlOoaY^3F=n3R9Xb>Ai$8= z!-(RIsz&p$XOlU|EBQC%>@Ve8-@q(y6oR|&Po)D=>W0?!usti=wu=fWO2m?g9%Y20 zrC>cym0JRAMUJQ2cRa}>aJGuHlL?F2bTVnti76M-Ph_c9oE6&-t3B^@wV(y`&F?Butvp8sXE(Q#Y{==qs|*0nNne!I`Yu z`t$S8H_vW9|NQe`kBo=UZ+$&BuAjs8pO61qU#E$!;NKw^!Ix@zM58u}Ec&O?Fx^SCWS2VWeTEbv`}2oyVvPC{6(bkMV5I z%)8jMUhd~WyI4`x;G7bGVSpT>2-fbO`L&5RnSj>7JC`NpYeOFZhPdzA#-TMxKuvD7 zIxQ3V@%;Eb_<^#_ASe1|^K{SW5yQv1DmTWh<92hWbC+`O?jl-9vM8n_y|%OirI;j? zAW@-EyvMW`6lGT-=~UV$6$@MLWhtEQYkDWL?ZOJ*JQYc90Tb;kNgc>)I~uSf#fhbz zPT0Ckn;PfP4X0OpsLsw&hsMMyv=3wp;;@h82fG(Wiru{O(F#?YTk)EQeeNJdu{QdW z+MV6(iOw^m_wlduxiodQ^8`)<|9I{SqewfHY@J3J1@4yCr`hktwYSU$Q07^4_XpoI zBqS#MnAKvHo*>WU2}~-3RE1s6xEh?&Im!MqJ^eBd^@_j|={_+MG*cjDwpl_kFcUbu zDR7MfePGkqC*$J*bnGE#X?I)X7~oJ2w*~FKYRT_%V6dYw_|92wEv>xPKXKR5xwOt3 zYyDY}lam1=sE`CX=5|Jv;IwYDP@qbm7d1W)pxAIi47t52BGyEp=Bm`R*r=c84WpFj z#K(c1QMIy<)8+rEW-`?=+FWK_7i`akm5`!@DnUi5b)OqX)eLZYvkK^zU3XeMhdxWs z_~{t|u`RF)Uh_0MMuZrwox^JvqNq(AdI-;ezzcwHhXU9J`f-n7o#=>d(Uj(p3|KG5 zggaz2FWPL=UX_f49Hi2lH(hrt+Rsxb7 zoRqj+-eU`GO5t5#IP9tg0joafb2}}(!z$a*ZuT?+S%*_bqQWx3z{9jrW=6T2WbsR8 zp6M_Nbiepqx3^cZB1voJfy0pVNehA}`nY5cIYJ!?LK7M{?P{&5<9+Q4kB@Vx_%x^~ zB%txK)%2t&`%>jfGFd67xX(K6^nKc$t@C8R?sDmV`M=02(ogFZgxA_ckU0Le;AFsI z<&T60+W%UnKh_wSd-Eq^6{{1%)#3Q9cqfqzET$Zip)%R>i$&!}2*In1)c z+?wGv%30+0Ut%)tqu=`iRKE6C<5Ls>Oj4EPB-+eSUS%d;)vLX>PzC5?w^MYQ?0(lq zyBEvNjgSBxydL|J%=my<%H^Cfwyag;mbp>z`2q(GNv{rT`{|?ho3Ex{mxk7)k#GfJ zU1BDzEw)}HzD|(aiOl^L;)F4(8~5=Zr0d z2)@3YrPm+pJNw*zgN{3YL|LDlLiWmRRz)4vC35a=CiwAfl-iq>Kq`;Z)Rq6&k4 z&ql6BA7hTOkvAZV8Hn z8VZ%$GYibgPKOp5H<&FtkvFN8khvv;hBGDik+@n1kp%$s!w8GW4#GPitJk*7bmWTl zwe&H|55~vhkI+Oy$09?HbU}{i&G1;d)tJRFI(eN(oe~(Y_{W;3Hpl#x(QI=lXTuOi z%O)6)9Ekvptr``b9J9sW#9;qDdFS-F2tK;T%8$-8nuE zyCDtGV^hRS?r6UG4O^|2q6y;zxWjng%#6zCKVrD{`>)lX@=V^#TwRZKJ#nVtCdUFplkM z1~2?KG#>l}h_BxQ^R+D8`a1yw5N76AvethxPqgrOs^Kha49AK@`k-xFR{X}(aK76f zHV=`eWwTT&$+cG~$~J6Gtyn2Wbk??tD3N0AVM%w}xoJ|M!Ej1Jmu|pk!E;Fogq0xh zGuqlb7;eygj zjn|LQ-plQuZ8T=_2~RaKRmlHj{knVc-@0A*m|{P>?z+|wuDy0mHp*RVif|jU5fgs5 zK7Xw_lF3B4%r&NHIuqRvz3t}A-ZaOt0oD|^gD~yiXiau;-RhSB_D&s{v6V`TLxsW+ zHVD8R9`L7vDGjA>N80Pf=t@r!KP9hMEoOGP6EYkl;M7__9qYH5Ly&WOQZG%=O2~mP z9{)!K&I8U7ld~9)R!yg|_hp-wj<#{F_G&R(_-ZNO=58$(ix(>4utGoo7;w1)_yK`( z2*vcTnm1yu&9kUN&-B9yq-Ls(lKy4BFO+1bB&Vc}a2SI_?ftHJ9Fo zgcjFB|;ze@O-I6}>Lr!N?wRU-nRVZ;(x`LO-t~ z?8@tXreGG-{6jK+N^kgwP?Y!0eY6Ta|FAik;Wo7%=C}=( zROzFo)SfGKP_16cZKeaCWgnjk?F`{xGQ|D66i}3aw6j*Lf$?2Y)?0&AoZQFNR&6cS ze6`7~leGyqI$Qi+LcDmTSXNaFshPD~xmSvf&osgMVwYyZrBZl-_71%kW?eac|Nj{6 z>4aMG2&@Kf_%Boqe?~*+TEIzK_=T~$$(*Y8CX>C@)IWppFS#=>00ZtutmdG1Y?K_9 zmQRnx^rL%oL67HkO3ca>58+kkeGA^0{|7UA>;)wlQnuqiB@|T9Nn3@^rE=UP2sL`p zcxHGIFzp@9wv=;dYqD;M8iLa{_!LRQamevV=o)y6V^avG)UzI4*W8&rk8s9ZqjivO z8~1iEQEOk!7;dhdKdG-dvuWYc1F~YZ1l9AO+xnsVHx9<#lP^a$FWMvE;16wWG!AY- zlazWRG5#EsJs$ZW;aG1xVSd+|!9~AWcPUOwX7d3GE3d`G-=252TK$FFd?gK@lt1I(yH!>WR0$xp^Ua;tZHAz^6S7=(UQgYz5;^Qz8b)5 z;EB=Y;40wanJ+o;<&EpVdWkE9ilOV0FU<`el}fBD2q6)p=0}fP@3&&;t7t_iZK~6K zdZ_uf+rIB|TCI`RIVbnG9*OUqE}pY-!?^|WwF8#y>GP9!9yNG!6;mS|Az}R1yXS$7 zvijuwhAiEkZ`^e28f!pyIk}COe0Jv@AaNt({se-~;hsGJWOPeigLHS^^g6m1f-9v% zp@q~HDNjQ#DU;g1qonfiD5Y^vVwwuTS+{SiOet#4hZbjasut%40XCOp3|@(Qx#LI@ zPjWQNM_l7XQ)E;cIjy&P!KWoPdBpal3$YXUePapCLLwGWD&Gq9ln`2VmU8OJL%zs)qZ-*`HbXtVMzVXSEM^u@MI>SLwxKXdZ z8A-$^scWvaQPc$!N4u}xi}3{utKYZt6ZqP4uYVa|+ept4n%>S^`r24t?=5_7(A^~e zEEK0Dnq)%LS>tUBK;J5Y8MX#wQ~N9Yh7_>b9L|mB6$)dnbb)~3Hd}VhfDD&Fl+8la z&9U0SQDURG{q0U9tRl|glghhVO{4p#-V6&)xX8)cYIOWbvgLfH2Ck>=55X^Jws}hP z!!$+OS=qq-G?}x1&N~b=2+CF2lgFoS*|u&1ABeVv!FS&_iLVx8wkt>VlHarMq4~2n z+QJw|?I;{Kaxs_?=o6i#%D`pgwN&q@YjU-hZUN~H_o{JMJUF(v{?Z|YpxofpEnDsZ zWw0N0*e{vaKq!yEY=lz}|9;=}3+}8hLoCTSs(-bs6P`?SZROAs%V zHC66QsjBp4vDN}}Bwe*Si+q{rx0cSHo4$QVe2f~oA*2IWTsscw#|xXI<_?UY885kIMr5NfM{j@Mv`iy_q{`8~hd|=S9X)yTmd!V}Uc*stx{HT? zCn=EBDU4M9vUwFG^^CtRspgK~(ZNhnow=>3*cXYC8Vj6Rl7%AOwv3XO!hCl)8x(TG z-!R-LWR6oAw%RrBvof@sUEcJza&=TJ){Sp8KGK(R;98xs$(6*=3@rB}?2YR7%biHU zMWl)SrDM>dx;i|uuHKtY_kM=d`4`ttOsuWiRhYqJ$=?Pywp-vd(xyGI53IN|EA9Yi+JmD(z5~;1#78~wMvq4p| z$q`gJHmvYO=XCv~o1DDO7Ln&Ju8-W_x{4-k$jaoltC_XmMT+b_`So$5Wv}th%S`%q z-w(x+RnR3^+Ufl>lQ%Bzm_kzp#=sX(zv$c=hHT)QD<6e1;ZAk$LvxodVgeDqy7Ip9 zHK$%|kzBHFc52+a808-ZYqqWseGbGz_yi@Bxc-Up)W~gLJGS!YDGr0?GkldXb31}Jn=F3P7VF3ao>@`xJc)^GxOB}Yo+eM ztW2|`vSm_*#dV5SwHoHu(lXlM-;q0g4i{{XN>is5cD8OpdxIh;vpzc-6#)rOkBggD zJJ_;czsN=xe1xcH-c5h}1UEfZ!&oziBfW~dIhD8HXU)xGG=do9v&WAv{?q=+h5&*Y z-BG#lvOyUklrHz~VNK^hyk+pXEXE{A7F+(U*p)GGOeVKnIl4-5%lV(5KXoI- z+iA9MIc4J5ibX~ojGCdDW03XMCZtwOV+1*-pC6DF!w?c5(D+o#mSXYnH&)-Xd-n%n z!qSLI{}}>5+;ak^tzNYBjj!~q{?Zq|Lh({ZJjHi!mOhM{AmP-yPWf**5y0F6wqbnV z+|$sJFgG9AoF9_i8MhtE!(s~$)-r%2O0e@{$_J+x+V^D7rmgQ}j)F9@w_JH!>*Y1; z!v4w82T5~0NFsd~9d;L{hKAS8_Vy}DZ*P^h-1G5_?Ze)6B-ei1)_2a_dt71^Z2} zEL%5_V3y6OE0WQoJCn^~2M)T9hwa?yN<(Od2BK)2He~zSI);k&m`=g|eCZEaU6Z{h zy(P;py03hsUrh-Qm{Cq>RdxG2}0N&7>sPai&n*#h{u9apgxx@ z3iqprKISmlQ)@8rghsmQb6LU9UFM$*IyfXP1FLl)!R>+7Xtu!UJa{$IjXp$gHq_2K>f9BREB_kYu4-Vj~ycF!@>b zN$r6Z-1jiz9DSR&?J13Us+8!xog$jA(%x4G#`{3Zm@6DND58WE7DtZF)!yFv2y3o$ zReX=rL60AxBqQgg?LIKhVt#w$w+_ycTsN%+r=t4kL`VctNKo{TVAcB4CpR4-(>>!c zQA^#bHV$0}KSIr>Mf4V-bIh5}tKcR79L8U({ZJ@0-cm}&;YF<_{i#`JPMNr71Ma-S zv4P0v64?2@Qv)NX*K1o-@aja^svXtFE`*xY9p{g6G97X*C9mlRI~bn#tHGwJVGlYI zJ9j1X=2T#OM1vp;CWkgM9*Cue{(sKC1J04NJby=BBaNg{udCj7wJWVw+NND?zwPDr zdhchS&)4j81KSwfZR|VyY%s34Hw-ob+ZfvvLvSbo5^5+RBm@F~On?v|JNJLyZ=~J5 zJ3}D;`Lv_aNE&_L+spI5r$f(4Kc3kd^bcJ06VRz=UCEsU01IOx}JNgO?ULkR#YVG{#|bU+930d0onVJ^s8EIkWTmwf6KirKAK>Fsvp&+P?Z%8O6ryFo4x2b%})q+P>MBRDePV6{Q>DxLV2 z-e!0(jwx>DPB)5Z+P4G|F;jbk>+<~Amnas<3+YWwv5^q&3p|`ymyPv%(3Xr2GG{rM z7zr>SJ;TUC+XagLXh!>lDmy56pq-=p2Z!H3Kip0Yy)Hhv@5qHMkTwdtv1Kc>i2mjF z<2Bv9`p_VHx|mzpQnrLFdW#w`RtVlGO?tOO=hligg<5IwX?50_UW|#*dGy<^C212& z!XpD#ir_bq$g#%7WI@zp9yfdrGhlZOKGf0aBH6iV#WA#{!GslaK6&CLq@^Y6@)UqF zq2qxpm325WHVspzEiIug>5~WythpaqeAnrZW2W0Ggt#t6Zx>B=`!E91pM!i_vR!E- z;pxkNm^LBOp+GQ^#+kIkoGY9)DVCwgAmHlMwOgq z{@`>rJ00|l7#liJ-yQNDoj=;S78h()MOg@C8h=SL$G zvOh|iE6`iysc)BzI%=DM}i>FMM?J0Ls+Qg{TTUJ@|@t`YJWLMm<1 zx!#LL3w>iF2o6bWd{_`T+HaY2B1*boriiT!9Naa6=oT&q77QO&6x}^ z@VNL)i8gQ*v2|6icU!ZT#NJd++Om4?zZS{Pzm>*a%eKJjUi96H0?6-|*=7|a0HBZJx1 z6!$SgGAkfEvP2uB?)5WQ!3NO<3|+g^xpzDn&+48sNo!-VbYtUn^pK9Bh>c5@k2JwX z0<3Ff{nm7GWTd#6tdklX7mha5xrn>FWW%oT@JFj5V9HvMorZ&>X*$?fxp69jaUT!{ zEz56-Kz^S>%b+-i4=>Yv>zWCp;a+XVg;`f-m zYxRcpy3noJ7EDo`>2EA=!ICs*!KEdpr(Mv3J()$ztRFm0YGAQ2-J-=G81Xfm<$om% z8`BZ66-2W+k)){w3Y9au;2baV2zhY)s%haS+QetbaDCF<9QTnMgVeOvW8s?Vl@Xz% zDY3r_j$s>$`IJe6>E%EB%(p;iY@%{rAu( zpQ58v48rCc@vQzSVHJwB05hROfl$d7@l0G>g69LPa{PIKOc=z~}^2hWOWJ z%5KjSnVtWk(XKsB*dE07n)Y<{?9EZSz@=$EQ0aZ|e6-(hS96Y(y{+6>u_yCR#RS<2 zJLq8zec~GWY(TadMCmvEcg#Nqecyt>%1g>>gNRJsEE3RLkVd(z;pSS~92^kx6P*Nu zqj8$;AOe^00nS$=mC_#$(=b$;>x8@z)qj(W-v#G(;|-Q zAL{NN^!o>&K<-7O5k?Lm?xnY7NfX0WPYvb`(8PjCDTcXjTI^x#ro{Fx3Ni(ZN5&TB zQyKLO>J~|O<&~|S@mJ#bzq2!b5F>7^nS`K4KRvnciDLE z30G%@OJifpVzbV}TLH9Z1YNs~@pX;7vKw>> z3=AIq=Kxr&SoL0r%fRW6g6Vo1_BC9O8Ql+|X<)@1m}PxflbH2%ouh4~&^wdk>RR?~ z8BQzLk}-F&t~{4SENM>S!@3E^jI{bDp6e^pCThMwj-N?ralK5e@$!ZA$a%@aI((mz zw`Y@nnDC78ycVvF;@)Ul_qb{CdF+yyj2Zz4VdT}uSkkI>b05LT z0ui`T%vrSMEgH=Pn#gTR7koeBnv3hc-^C_NWj!QUElCJN=1kgsBE7CXi3_a z#Ip31O`MwdR*N{-U;Yc!D-5KP%-m<%^|bj~7g^b~x%7kx=1i@Nv&pmAyH1z5d?oqG zQrh_?xZR?qk}~#PQuFZQ2f8pE4lbVF35-&OHH$iI@#f$_2$&&&Z>$_IeuGHp#ha69(wJTDgE145g_*uDu4CaT?yfwis1vF8OZK~Jr| zswtJ%hhnlkNmg5U3TKf&YT?`@Q2K1E$B$7s%V+G^6l=ZaBk`pAQB@X|M{q`4I^r?C z1#=wHeGNBGYp^2@g(7$=#fDd=v-(=?n5F}OpV+Q4Veno~RjS)bCU2*<*UK+H&jgdr zW!$}k8eN=Cjzqzx51L?KkzZ#N6)1E|HP6q&JVH!Y9o}0Vxo1taP0qZv-Fy=1VIs`j z<|dG>Om%IBm6~ zSZe=EboB~iOEQs=WcC+GOQu15GN=x6goq7tihv;NdGy-%;@fbp?Tlv}Ll9W08mQo6 ziI^E&!XbmDI^9AXnxC$6z$T{*-skPEGZ}EboWkzvQ!(>UNmS&~N9qt>9?T0R;=rAt{*%R+5EG4b+8G zk4K|=ST+|J0n{}Q>*Qg^gKRY*KfwGoS^PkhQ01kfi-%pN;CnZP;yD9aWGK9$)%bw% zp;g$7WYf8U`%TL?qHj(QT?jv2=QHdcifmZ?gTdNAlOYQ$J5z1LBr%4V;!2jTE+xfh z%IS2ul*w=>LJ{rz)XBwbXjqQk)z-pD0JuQ;_Rmn~3jX~(JOcPSm<}5EP>4vOU*6N~ zuJYjB^ZpKODhw$;bNq)BR%3n#BjLj@PhT)aK}e;3dT(({1;AaOp6!-Hqteg2 zXQewkiqJVW6gft?t%X>uAPoxUHxk9|X!~s2UQApz`oOyN4{!~7X1A2OYa8zG?U1&K zo(*16^ltEo-1~#8Q+h~jm40daNh~}KhrQC!jwJg08$FvH+e)1~IL+w&Yd<9Yfp_TFef5C!$K7n`6uH1u zC$bJ>r*222NT8$SjEd_Cj(Of13+ORnl+e~tMi3P-r z`zBK7OT$L7b8y2@XL*vv;#$1l6L%6v9@<2YY@P~LuZbJz>4rnJ+20K&G!N;T7Ju`- z?|rW^HJ1#QF1o0KZ%2w}?z-OVRt1VK%C{iqy65o07F0?=52m-Z(jI*Aj>?`CZGu9- zaHx0R0KDf5tNDCYdTX$NZ?P(z@$sht3f)c-Gd9wE7ZJ)X`4M8*aw$E0r~ky0LV2gsw*o; zDd2-@U1pATSXcFhY+`#Syc&2`9h>7Dr3G}!il$1&*m0G<*o}l9Kq|*I5a|aTn_EjHT@^18cQxC(t930vFFeMigj^zA+@!YB>90C#=Ev8 zP|$?XTyksqom;7$SCK5o!k8H%2iz6B8XyKV3J2jDpd6rQP^57b*|Jq1f=6b=ta<~F zS@lLuGCe<{(5Bl<>2#?*{cGwfnxhEW934puS3bM$)N>XOS{J<@3*0py3!_(2FmehZ z^k-Hk_@GSxd<1kQaj+0*t!4z9O-xv`vTA7&lPi{6bst8&h$P%4>O4v{K|$LZlB+VhJj!G2r>Ai;y9RRxFI zwA9?;rh?sGXkw4tXF@TEf@Y}=h59l4t3d2S3?vWqzvH$}0B+DI*Th~jvxpE(AOw;n zdpyVg16vcOvSE7&>Qa%Jttlkq$S_1)wc7Zhd&$o-~?Ri^TDB^qc17N0JQ_ zR75Z_VFk2{scUHdRJA(l`<$b_wYA+2B<9w3$MyYp&dlC%!kx{!T-mG}!aaqOp*NNN zpnziy&%#}Q4KR5>S(Xv9NrgLR`cZbCXQwq%_0u5QMh1?SqHK)ta{4M8K0A|NXj^q{fJugLTn4_PBuX$!5 zo%=njKolkpr7{J5V_4S4iAoj@l`){!x=nEVA=azfeADO=B=~fGLwQ3qdsGs`8kN~p z-IFv2%^O;@nv01hP8xwd;s`|puggHidrE* zMUwv$bm=43)^?P?QUhaPI6!(lx=t~fNT{CBOV4B*Z$dAN35meQH2@XX`(U>LcLeaN zem@|^KB)&s_z-JCTpzHGJ`77z4@Yv}z8m4Y1hX}{^@0HOkFf6e#0{1f9l zQJ%*`@h8@{bZklixz(mHq{HZBN@6@ad4I07=m&775iO78?(OIk8ZG2_Ds`BRo-A^& zX?Y;Y*g7j7xQV8FNt51-VXtOKz8UStJkp!)!RR}PMlZ|GeQxxTO`ljSPV-j12QX9Jq5de8brDo(Cfz$S-Oi2 z!B|pdj7;lfQ}Yk&dW1#aVbh(h%4Ex*6b>ULqCGM~Y6b+1#2Ri-&E8PTM9EavQe5{; z0)@t+Y#wzmtyEg%5y%b!Ku=0U21>rPKANlAQnWTFNQJyki}!lDt6)!#BsR7gG*pXF z+z=aEe8V7CXYZS>wvEc>e#V_BpC~89_f+!v%C6pgzPGI_m+R`z<)nWiO8g4d5dAG3 zeWMiO?a@0eC8=`_0r0K~dA(z#of;jE5lr1h#w|9V>pwY9(ueCKFaIc25}c~^T)DS- zG6X@0Nkj4J?B)$H^V2hx%FNd~i_lr9IDz#C4gYlSXQ0dlRzS&<5UtsZBWS}ViiA0C=Q3QzSuf$zTS4fu%9@G#R zdpCrOVcsoJ-GWN%DP#~&M0`e#LUX|6;SH0Y z%iGey0suCRf?nzxFp#r_;ylbD=i;r zwiSUThzTO=M#V}2u?KD7BWklr!}`3w2H9Z!7U`kgbZ)%lX^ML5VFHIqqF1_fO_|VK z8%3afhSsUZ-o3mJgB>Sd3ic=5|9RN4WQxrZ2WdiUP!&NVC1z8=S@x0*4X&?Rrbdqv zwfPMPMp6e(gd?g`8tK{Nv2;3}jU0dWSfV*Jl{gmR)W(Pr5WK+O#R0%IwNB*uaK{RL zBp&zn?1-c4L+{q4uG&WEpv6M9SOvH`4rPQT;{QB5S){{IV|%ru+W|;bN)JbORfg|b z9qDo*ssVc_zW2zXoXMcT+@$P|R-()wpFnKcg}8=(dQaCjPCxR%+UMTEr2{Yf(_Hgt zAbrsYm-cgO4PhSr(D18hfG+TKIRFy{AX2^r+PMfLwm(`^N8iSv?SE_d`N}Rq+KeSr zm0}RGfgndNmckdHoHNP+>VoD>>H%8FSw{6rm4aj=GmY^jP)4|tzIw^P{c~>wwIDXa zYT8JNk!@TzO_uspDO3XTl6y{SH0MIJE*hN+0JK0DJ&+1TvKFW6U8JDyH@Wq_rBtf4 zzIC`fLePRE9Yd|)RCCKvM?XF9FAukDY)_@yk8qfhVBoSuXh+1PE7a#FThDC>4aIWr z;_iVZq*L(So5F*3r&o<=7%Ed3VJ#Gw$<=I$W-`%Su7ZL#ovF9EM0`?e?ll2|P+7_4=v5W4ZQ^!@BHQhOELAyq zq|1Px8EYmW0+jFWDqnMNxjbdkfh;M_!(8-;!V+r7pE8-?mv= z_0XCZq_5fwehsfq3K}EFn;dr2@UY45Fuggzr97S#*IaQW5-z~SipZvZMLF0o*s!PJ z2rAv)2Nm~uIA}jO+d*SQk(8AZlT|DbQc#Vdg?6$Lr{(YrMgYl16F5pqt^++J>KDz`Li zBJD{dB~Xk=Z#4wfuIwm?+B>EqHY|n zddwb^XJ~w;qp7I_|G3|WW9n0?gtQKMj6@&M8w8Aq00eOtAe%7C*WhTiiz&O-{Ret| z#6lpZXb8hFUKC2B_}*c#Wo>A~*Se0A2K{f6kP4u6lb!obX6st510ZumVw?7M4V{_~ zq7eJ{u-8cD;EOXy=ixNMAbB}lneHacZ)5n??|~KLUy_Y=Qz=oioN9uxW-x~xL~u@*oQ|yto;uN>osDTml|w+{UK$lt8?ut>HF9=AzGL1^$cXz67CZ6%=R1Ub)Dr34@n4cN`8aUxdyDwOMUGbIH`RLGI z^fp2U6=s5kD6q20;Z|vVg*3p&AcZj?2(Z)m{GmW+|0W|w0DAuC`@E&2+Czr;V1GH& z%VVsoAu5K_y>zOS4x1IbGv4<_7w@ISn}$!0`*l_=G`N47yFNY%5PJ;}+k&f*uRyc& zH=RkiA+8%RJwu2^ufP|WeR>(~Oz$(RZNK7eYO@!`bU<(8J;0Ayhe38WrN31~kDC*L z5+D<)+%v%3q~Fh5uGYB&CV&_lF$FVWh^BmeC`5I{$QI|tw!!ZJDzrN?x}Uqt(Gl*? zqGW-0sO+u5&Q*@26+@WRPF;BIhBydaB^olY1$gt`kxCo|tp*)_<{Q=gZL}J<<*Ub0 z00@M03@q{=Nd%-t`g%?oNPNa%`b>FxqKYvZ0DrM}fPsMGt@ZbrFlK}n0>xHsHk#k5 zS^S78XtCH(m~ChbaC_BO-d*wPwMvDB_x7XD)QqIRx8ea3ncm^^|iy%kNKCh_V|uX<8bu0lP!ox6gXrJfIN z?z{aDqDgIxzvs&{(_i9z9W!3()k448Xh!>ec+b%7|3Ym)j}wl-5Op4rVa{=L_Hbz$}2zbB$rSS&|hnphb5B9+K< zSK3U7<6lV%;0uwdrpcF&SYsX z%zYpn(>i^=zJQY3OIJ!CQ7LyBl0%KsTY(|&Y70UtT^4nt$;KI4<6Y?gLx7c5j#aB= zR|Vp&n15*!%n}AxP^h+bAnPM5TW8UumBuMz-n@Y1DsI&vdQ(Z0&}dTA>z0IL^Q_`7 zcV{Tv0S}hou>T$&>^KVB)}gSCm9V$d2ojk{>bTQ?&EjL3$w{T5AP#$bxE%zfB_S1d zDt;u`qzmjD#swb=EzOnDV0KF(rc#LJW3Nwdoqe6H%zGG3T}!L{$>iGBg;y^$0|nG& z$;_v$(l~dc^iJ;G2ez-?^Re7iP!D@Pba62~NWOQRX`M!yZ0HCN2V&U|~c+W=q z{W~cXw3Cjq6QN{E$2kZdL1olRbJ#=uUVGCe9lk=Y@m6moG={_k0nh$OIRpYcip0bV z?dANux=`WzkGz2Z4d^wqR%M(OiJv0MqjsYDG5^>bu1JYy)g zsRaPGVVac#72WWf_*C|PzKTY&&NTr{o5zF(RQmZl{1&_FO)@pErgvXOpVh%PHJ05} zxZ~Djn!ESwJ!lT`4hoChP2 zEKN2ob;|0jR3x3+&gow#7ruN+zW|_-s}GT9^~mYXJZI2{k)MJ`?{jrIeRfL*b-vx# zPc|(i0m6-0n!%BH>7ojmzz$EFgp>uRQBU)4*=50DB;6im6#iDnzROd6mikJio zZEx5OG=nRVsb;JsQd${%4jPcN%uAd_W&k~@bJkKv+n~>i$ER}ZQm?WUO-#K2BhM5H@^C~j z>dI1dYhB#?p~?~RL6VSnn2oWpURVGejqd3_%&7tuxRQ@+rSk*cwJD`l`7(K^|}Mdi)F~(y7X8+16Q1Boox}!k+gjI_S{VP4W>sfWq>!= zQ;O}4@J!2lzhbchl;}Snn)`yA64&$lP3b zM1a<5R9H7Qm$<7{S^?wPE$JY-DpbkFfYjdDi*dN}#ubaFyudes5b@{DnJ=Ik5gY(4;I?0QAkgk1@%!dzL zncJB3Sx^`d8jgOD%CD{55N#{xCSgwhq<^REvh)f;XtV(~$>>zVj^Ld1{4HDn0Vp3> zr9T2|koWm`V`C$BuTVpC2|{O%)FdC%K&5iLuD)uDN=v2z2_|w}mQp3;ww-xKahqUU z{CB~DWQ3pylQjAdP^H3R`jt)kM|TBP%&5ii8NJm$7wW+d;*M1Ybegy$x^A}swgKJIUA*|eEbO&XmkleNNwH>iFP7<7`GtI?Tp3V}vm z1qt5_o8TWIHM$Yiy%=?&_aI>{OL(U3NeCdMU#Fe=Z?2P>gR;jE_7VI@65%8vSQk%C zc+{`2sdFtpla>i9vgBy8R5EM|woGi@P^l21MP4c8Wq)yLX{nfj^8!(6A%@~=;83`V z#TM}i+HG`w3gSsRI%#V!+wmH%aC8Bf;rD`d;JQ*sgN4eU9Hk^c2-zUuDEmFVQL8k7 zl3@%8)2LkV^wj9iFkl#NvunW1E3~3VY|fgfrcctMn^^0_d>J@k0`GOBAdGv1u2Q0y zgtsQqVGI$eR`)Uu(P1Iv_mS&`q^74pyPxSP0?=f2Yt}2@C3U#pU`azOwjU^{i_UeGU zJ8YHg+qZMOz(B|h0ucg(h(H5qzKY?LNc&wo1uzrIw`I$n+rv$^JGWSx!qemia{lDW z*~`1+p5W}l!I_r_+buq;*EKUqz$qSG>B=6XR;|LMF1NATEV_;DgVM&KvKFM%Zi3ry z0?dofZ{~i^XeNvSDj4w+fJ2~@UWIgi1i|p%K+{hPjJiwF?DIgw^DM(hJ4B}bUj`(wa$i9U=WHx? zyvFKs9q&1@P@;(l)szq^m0XAk$%0^+?`uE(gb=@=(S$Edk`N;^kQjh!Z07~{tU|I0LrG|0|Crmh5EUquB_OB^!t&L1_Hq) z_;{t!1i=nCN*T;e0st-{whDHdfh~OpBB38e$&uA-BF!mxSIG|k2Xca~+~c)5%2$_p zDU8yn*!~>hoH~rbRfAq$8$&}0no*nv7eNs?db*v0gIjHDwZPZ}>F~iu1Hr9u-?z0u zXn?|itq-B$L3=%D$PXI&E`-J|l&;|CZ;Uk+Ncf8tbze3Yjx7i~H3(lIoSq5mW_Tzn)S!3AO*WQ2%2uYnJu)H?wW zF90N2LcbEzD}=d>iW4h$^Fn^UFjpn{fv_jYmFW_c;lUq zSiFOc*0yq+6?I#@k4LvatJURnR0n)Iuk@)OCIJ4L1Oja0he_@&*Dxhs(YNaxabReL z*4+veH;W!oV>eFOkxbCI;b=ZiyS|p|9qk?M;ntBmxrS_ERspiEg0sEcS|Xaqp(8}$ zOGZq>04f+v3b&D4%~Z)tfZK*i;a3CO_*;Ug7)L9JqcSq!$#7{;-$0j5Pg;YwcMbJ> z!jb5vbwRx{r^-blxmzPS6%MwFIXRcD#pF6_G}hc|2>5vo#z6z%n@+)kYTz2uC^5Sq zx~5PwDOvmtTwOOLN)Y`u^O^JkaQNz>N*D!-RS2s6ST#AvBYULMmxn^JnZEts-zqwl zK+rtzyXUWJQygQz=cl%{u!#Tj{lDBr75;v{|KxKA=c>~wtq^mnAUxeldtA_U^z~9v zm}D~9aBHd4PbeQi7I3n5YfB=*>5{{QXWS-PtF`2cNwIvF^@*o+Et$WHDZy6QTO>Qf zC9K^neU}?s!~59X4+Nvry~C&O=#8Lj*Szn?=e4vu6qnJ)Nk1RCwg+QKv|eNRShsaO zW=4gPeno8&MwW)tPd@x#`)WVyz0V$8SDi{~^-ixz*9h=BTU^li+OiokH$E2{3Zrrx z2zsH4Us@Dw2nkr(xY~h+=7xob6Y6OnHZN9Fzih?oV8aS* zDYSK-p&yS5;^k{<+*NawR&22%BiMf9e3v1h!<@K@9!@bhw&Uf6F#6<7YhT^cmIms@ zED1U32UbakC#cu{qV5mW1-eQC%_*CLFJh&cg+95JDCCE zIW%Ny*o~qpDoNK0=q>flq!E81a6B_d$w4@K;o^w{vB(>YI0V8s8B$c>`!yV?Z4T)OhjYd|RuBH{{4$cZa@;b1jXZavjgZLt?&5O3FYIVx?JSh;W z)Dxegqo?e2){b5ii}19_{SLU(oTsM*pByV!>U0zav*)*1+$uFD3?D4yd|ZX3!cnV) zk$H*p#>D;cE6z(4#0U3_h4^{^O^_eCzH_Q)s&fr}#|HY24Ro}Ioy0g613^+KvG~6{ z_Tk$G;mg9y>^|}FWA7g9wHS~u!6Z_*3We2tGJPI-%aRE7e`6%C*|0&AkKCj#gx9YR z7a%_dK(ucHF?1N~e+Nz~ox;T)^G5(zj6<|7KTD)sL4DNeGTNiUTOBL8Jib zQF1ADUNrVOAA=>W^?0GJdCcwbdUb{cEASaF`I|dN;Q_*CLP|F@R#7k}TD-r~vi9pY z-!RZ;)_Vnvh64Vz5$1Lxy_fc5Q4*|=fk%bh=C~d)Ag|6hIUgmp&pC;Tq@R&~53lO? zz>CCO#Lz-k`Waw!zk?vPm@nFl&_7P2wH?i)S~UQHt*w}P=u#Wq=9X3)^(T-I_<1P5 zJVM2nG+cq*eK(K@8>kucjPTtRksd%Oq^^qM$4a0NT zI6*W%K`q|*)A}sX?kud86D)%DD$ds}@3^kL)0yv2?`x9fR%U;`Ilwj19v>DL)yQjj z%INb4+!0y?7l0pl&;9H_j9BpK4B-f-XAv%`5Q`agidV^Y=H3e$u$)JqaGv}~XQiWb zR{A9zb#U12L%arW{>5H?3NCQyO`As?t(eZLU+p|vBt*q5zd_ME-!K1TP#dA{h8x^;x-p6Rg*AfoeN2;ozIkbeH>l!y^HU3j^&;*#m{<5LY6( zdCa=V21eb3e1P>q`Zx;3dBdXvn7WSGjn+FoN9`b%^T={GH)R2Ts>0NrrW}UkVkUa7 z)oj#Z+JeE9%bDS2iRaOd`^459^Me&STc__g_#zYciwi$;M^zTCtN-ian+AH#S{v|G z88ee`O=b2o;c7F9ieJh88}4r%9bt2Oq1?WJyufSR9Cx@bSeJw%1S{JQS(%B;Rxt!@ zxt)xIza48U}Qas}<7Uu4m~R?weH5BBfhfx&oJx&nVx}oBk(662N`4;q0wY!acB91@!nZqU z8lWAvw94SsBP?9|c0~R$AY4yaIq|d&ZAJ9)S`5b3;a1E5`?c5#^&6M(4An%qGrvH| z4;1Cld$qP6Kf5ypd#k~(RqOP06PUp@8R0d8MoAg& zQE7((jTsaTQ&ndb_YyZsPgC8e^s`dZfu-TmW~nw}q6-yWsWFNUv2Fy(IEC2kw!}dw8l|3Wk{#7=;EoawaxC!MpAXW5%b#YX| zBmb&5tMm?Mi+J~MKRDED*4a@11t-LA(Wjb@kT6*Mwb7zzmG4JmQsEvj{E_Yf4whYO z;MBl2!#$v}17G53b>P=WvELe%jklG$JPI|3XbQdr9~nmBlQrkIB=An$y#~MCj%YD% z55p5{w?_&Z)Zky2pm(y{)7f!*yr`mk5D=SDDU?R(TBr!Ig+2>oAeHQ!Kf*`9#rTxAJ{O7x;ULN-npUQW;WUMzV>WvHrW}w z>j%Stq!iqmX)f}wsNNN$3}quJMe8mFs*0y=bEiqv%9qH3o7m z7qxQG&q2I@NiByQ9{2IX)!E{bbvM%5b&F9xa7_>Ut2R1`uJg zWFq0D(fkgXG(ZL?GtgC-jj3o%7mN$Tuq~m0io>xhX$_vG&alTQ#{7?5>qJ=rTt1a1 zI(QN$VX?hcbdUS|qhkTRfe-5aql0d}lXvtEhxC5#!sflZvq(AVJVI_Cg0pau0>#9x zG@{JtTW;E$Fu>mQ4k3gChZMknzBN0uN%zfPTg_As-*fZFE?-Mo&1We6_YB#%YmIJW zez34-tv_FObN>!RG4JTyOsHAel-;{6!utU=Vu)T;BQXw3-*U|D5 z{Ajn%i}o(<(9l8J@>4|1H`3Abv4N68Y1Z+v-g^@oxRtOhfO`W)u zX6TsATQ48CNnar25{U~c>RDjR{9d(D_w0PH$j2uZzafadYu>H(&`<}2cr+FZhHgJ< zXhh!|R#~n08gE{MprFwjXY_^qEOGqZJ=Y=j#y_t8t;ru9}BDWG+@WQ zaM=|3*yB{TI1cS0Iy3gZh0b0V_hGAG>+i62*$qyZr3N8`8C^>EFgj*19>HiYx=Q^H z5~6mBpxE)VO7uZH=z|zgA8PdMaJj#NphpWjWp0O4R)@x1$p&P?uaJ3cfDtVtWOKc{(SewTf6e@ zc10Rtt;~4`TLhjwl)i4dV04IAfBLF)@{Q@mXA>FdN?drTq7|=}HRt(Ml%(&y@Pu;3BHG z&e-8519ljSgLe2R@h7Q#@pjtbk8xafX^T%{izB6!fDr(g6~Y4``7m80U4m(;o*{c{ zX15guU4T8Z?m$Zl9hlZ*f;Mgr+sP+QQlSM&OUr~UYHh{-chmmIaZPsL zfmRZjHjKh#ZsSBh%4SF*en|NVD8vzzOaQhAg;{?>h5dPRWyMxux8gTFhZ7I;@j$!Y*Jx&q1LK3{Nq zzX1)X0mFIkv|7Rz>#e|OXza)da+5Ld6u5OvINyS)3Oes3VGl#9Cj4u5=Aw>w{b)6c zlAxWsANkxt);EuFWg-|7TQiSOYaUv6ZELC9MfvcT;YuM^g5bQ6EeEJ=(W9{hP06va z5Q$=3rvZ^1b3A6AdS^Q`c=(O~eFE7oseml`Ac8cpt-EvZ9nith*oC@sgBV7nLW52M zC;ag@lrxCVKO&pb46lw-lCnO7LR&UPmJ#$x>ay*qFZy!xDoJQ&2jLT-30ave?Pkf>Br<*bO_5Qm1hC^=6gvx0q(5P951?8~b6p5nMvwI-o^*CVcS zQ6TpnGElx#>~x_d9Zq#eJH8$Rm?|d*k%ocX>_@qtK|DlJl#Q;=;#Ivx62}T>^c}eX zkYYr`|4llB2Llkkp8*e!*NoCLxPaJXMRgFtih(pJ%~;NqJvyCWU$*81K6V~a3PojR=%bN*cMjByNd*NF0srb?LY9AoU8 z=#xLpafzWe8t24EtM}sTL**>E6Z7HW7#nM?8dqD>D25+Jy+`w9*HbSzhDD9^6~|oM zN%Ay$n#>W@KM_=l0dTbdPC(WXtxPDr0glT2t~nITq9zgE%1X}GGR}VVPjU8jH0wzb z0rzM2A8aL@0@$Vywc!2uaLAy+KD$uZ{8=d3RVXu{X*t*(vM>KEJ7O#9ZV6dStg_(j z12w7^{|`*~_GS_^${Avpd!3g3dry$qd*V7@m}=9M+Qg7u?W9IBt;4vN?4A$N>mOpk zb|3f>vFKtL^J#5DEN&xv3GCR+>?MpG(DsiXt+S)`B)#t?E?eiu$|-mq;S&1PTt-Ml z4|kNw+l$4F2S^pPnhy{MzPBZV@5W;1E-%B6QQ3^n7WdU8ZLcOp$fDg3(A9xP6L1ju z;7XN=K+fB$%$QhHnGU8hGy5)}edN8}y<{=PM#4;Ex`B!G3b=I={>9VS#U+ENZrPTK zFiz`S%0%N?f>kz9*ej0^|!;St+rRUD}Bjfx~1@qC6HW(V% zPVcymNP$V%r=zkTsgL!304{iAF=bTJ3=^fJgxJA}~BzxIz)3|e463fbSiFZ~Yevn6r>+ung&Mc*& zfooZVnK);k|5C>$E^BkcJffKqRoGlOD4Z$QK%Yf(8RV6pcu5 zDLL<`*J1!Br~z8L^STP?8QBkKvy0TW*2F5$oFjf@Q|%TEaef2ElA_r2x-pjs7b-&meQ zWxw91jg0IZGny^Jnu}H^;MXPSGSoMsgI2N8r0quH(g&6QS)fSd;Tt~!V7*s>B=K3f znu1h9UEwdw{>!+Civ`Bp`B4`9T1-*{uHpX;=Jy7+av4JWpc6~2N zkZTMUMF`!MP9yrkoJQ_4rUUkcB7_seX}L$a2uT+~2kD}?4wd5$q(o60V1xCB7@*cC ztr7sFr8BreKp=9wYA4(c2Z30 zpEt-NW%HseQXU~M`w@X}I+R6W6a2G0`ZLf5m!bj^m!8|sI}8X`oya0sr8H%7Hb^tv zfhB`hdc-J!z71>Nt1%_hA~JPuowYghW8y%pB|)h=Of=-MpyBlPQy3_aErpkYq3~8G+P< zkSv8XfCpj7G;dp6Vw2xTLJ(g|-~1T}3?MW##xNrQkVKq4)U2y?5rmvp)8DB zQXS!szB5oxXY~#>u=@!u*NJ`_OhPN7i*C3I%Uo#xfQA2;q+#pR> za}<|!9aC^;(^DPN2uia~PqgVoU_?G=(G#;?>-N)9>4aQ34{D;oV3JkR(woa=csMJh z6pK~Sj1PPf^HcvkA-)!%01=})UW3_Y!Dd}|2f=LXG`&5$i0ZDv1{2jO6Md+XCk?0( zblepzp?U%DM24gD-B-22^H=bu zK4Sh|-RQPdYxu=tpV!;hai#nx5$%Xyy*7Mh;?}F<9nlxA43`rVK8kEu3&k5%ycW}~ z^{P+<+H* zQ*Iw8eV@z|#dGvjdY zPIQ7RG@|~rT8-{3+`i%&wg_Lku9My;WFZ99Pd zum+h6PVNxV0&JqVRCw$57|mp|nSv9E)cV#Tsvjb&U})PMEzse|-;r_mcKnD8^dE#{ zCM*g{QT2iLK0ne2p3|R17|VyaJr~2G+Vx)%Z>WH#Y^B{a*4bA5n=L1em=1}ORh3?& zD7W``JU#7q7AqcUQH+~hDHA}e088!~A9ERT1cxzVGls)K?j_9IlHN2$L#?G;Ybex; zaK`6P|4xZ^<_1?o99^XdXXFU&uvY;&jA_WC9dJD`2q z+vRq5?VX;%fy+e)Grd!3ibNUy`XO-3lM?(aOrwSR=xT$u!DY_?MX(^KD+!5W760||t zz*_0o?=~K-xZRbb8#f;5b-8+vY#dvkvq=4x+=jck*DSg9V`Cd~mQNBnE8EE$yvNb8 zXXbeQCXdhT>2UO#Qj>krXy0VY#03NNhfXYhn|vT}f)#grk zyQS3RvO}lXGqsZ-oOe#u|Msj(2$+$cSak(=As&0!^FLB+IV6zZ*1mg=i_GnAx6zUG zeLAWL$*I1JF6x^~3f$pieUnK+NaAk44#oCcl3I%f6W#Gur{7e50DTZP)M?BDZnu^w zI#c;#EtiFEFAM=Ev64wC=gY$@Gec3O%u*l_r!xrxAz(S0oy|QkwILSUF!jvz`gnZ( z^bfb~1&oTx+I#nXCpye1F*XU^Cm*UZ_5 z=3aC4l%FZ}xJr@f{`rBaNMveYzJEHRPzFZ(K1{#rn8xl6S=6Y3a;Pi;uT8^cbE3U9 zYqF4J>=_D3o%Xhz$%G-4uNd%vC!qUAWH!I3i~*mZ2cbL`##_=th~o1vx=0vdZxAlIWxa?>g6e*ev7SJrz+h0Nj^&ZY|>8^ z==qNgmR~9l#Z1q>R33~8+~O}dQ)~!r)NfHu=`k_4Ze(~}PQ>5g5&S&{XG(m_WK+D< z)b8VXU;EGW{`PFP-LJ=97GM!xi3F_~dS?nfl;9P4+en6zeMY$;2t%fPSay3^AJwfp zoB_*FSd!dD+4{#;CYgXFI8*M#{NUjHz})cg+?_y<;H;MFWE$D&o^fe=Vq=C!ffE29 z$5Gg?cEegnu+73Q*-GZ+x5TC7{_-xnMWZ);!av)HSKIbb(qh2M%0Su`X?G2C;A7*8ym+L2jP`8b;m4+NQ@jJN5|P-@p=a;jX!@sc?%!O!hVFJ&ME4E#h~?*8cB^EzM1>;8;MH z?^me%Egik?i3>>6zDly`RY-X0(WVxwwJAYU;O(YTHQ-w{$Zcy5AO6Vgmv$7+AL82v{2C;b!sNQup4{d{B7!w)w#a*2DI1A%7z$QC3VKA}wGCr&i1M(Y$z z=$Zuus|Ga7R2~ueIorA#R~%i<<{~*p!VlNI@h@)mFp3ZLlTUfFkCJV zD~1!rV&Via$QM5mp3UWE;Q+5X{krltj0X}Ls+bZv4^#U>xlv$Qks_8x=`xwK5r1D9 zfG0f$I}+Iuk^x|G5_l}yv2wdfF)y1DBv2`uCv(G_;~gF2{R^__*ZbQLi^Db&=mf=K1%Du84_Xj3=S-u2Xs;2|6)Z^Ds)Q2!Q<@ zq9Iv8tI4Ef&BJGrCRQ9p>VQ(lWK%OM9&5w?%Ju}#!fW2x0(obJZA5(SjQGeX#d2%7eZ#Zi@GOzvY$P%}eE#I76h*7k+c)@; zt3=u(zHfipQ|&Bt2Q|RMBmLdFb}@q4U+S>ED?$eB4@m<4u=>t4WPsY2+<)|f|Hrv< zZH~o7&RzrrjB&qyDZ~;f&B zlM$0i1^=?x?bayGrU201G~7IyxaW~S_^1&*BZASd(K~^ZW)+)Lsb=xsR7Mmt&=P5I z_iM^H)^~lwPBMqyj<>0%5m`;yC1z|JuF1M3khG;W$5m*8S~i*FwI$>CY=+)7Iui=b zjB*kAuSc-`lE3O2Gf*rA%l<>W^gAZ&jCq7v)sXL%o3CjR&?sXR`~%TnkT>&Vy5Psq ze_W(F@8lMLt#GuBD+EP;K>B{Qjr+&INRPE=BvAXa_)V+u>+>&7sI+EC1pkJ0q&>Fk zQL7)o_$Rf)kHU9?qrlwx19#Kv-Axz#8YMS7Oz~(mZn~M6R@E?d`V&Y2m!V7M8#bZ! zj5VB{p+_L%+OQt9BsDDplEboDmtq%ZtDwxnZ_oDh%+7XqbF;{xKyS9SqZOD( zDR;Q(nE$2=jXq>M_#3ZLqDWB`zE70)Yg!rUYn)nraJ-^aXn37IJtGBjq5Hz&`$D-~ z_#$YGQ~kwazjR=r_yR0y8)pm!8@omexzKIjt zoT$cH%FbVUqt87T^>PWOJFqZqsJ{I;q?rht>i<*r9)OLNSK6@Ot6r{p@4Z;fYL+G2 za_{zd`V7-xV3-+t@4XWsKnN`aLV(a)fWQEO1(J|t0||s|+9vyjBy2Xl5K+e=9lTUZB5l*YBhe|!CqjBhQamf5(3EH6ni zia5}oTyA-=Vb~4k>DH3GAj;Z8E(`^sNgdd5^rlC|Z;e3*5vPn7$=WtpkR+$Pv zXg+n8!6=iv3|G9v$?Q&;zKqxGUj0mXK~)~Be|y0U(G<%H2QmJTsxT|0^ z7T9gMtih1|mLZG(4EQInN0R-SFc%`gZF^C3yBeE>++>P*ivZd(G14{|$TSca3%1dc z8-|VtFsE%2;3oQ$B$dU|Wy#5GIaWWUxT2vi`B(GxXBj=nbKoz$V0it&`r(m5qSmSL@Y;@JK3ceAU=lf7O^yB|DANV8R5R@9%u?+DA)D2mzO(@Zx>U zG}qTRxA29LKIZWBSDA|(wEn8_Ydn7HflD=(AFLH^fO8G8&?%>cVupod!%>4FN{T%W z0COK0eXUUGdto!3FAhP=W@=kV$|&-ylHs=A5mAx@?W5&F)v-i?OKhfC0xeWn1?5Cb zLef`cw??4%@yQryLfbw$Iv)5kzarWgG6o3&RnC2OZ z1ZT%)?!BW4h86Uy9Q^FO#l>bsN%Ho@g?_JAsgncv)}xuR$uTU6@?An9+|8T9Z>Esz)vCP!+-UCZh9*l1d-daOah_mYxc=QT%>_zKcUK9cTn3h$V+sZ`c{XKyOSZua$u zQ5l7%%9O>NL-xk`vMfBEU1Z(Ul4}DP2gzZex#Xy~Utdye81J@WyEIAkGVCr4Glr9e z+bET|4Xa_87u@Yeh-H(ZSb-o$^;fDE>AdS09WLa$?Kfm@h#Yxq5&Cp` zdlxztDph=C*T%qbCAM*TA25&ThMBMNAq)HTnkkLkpw@TJ3PbE=XHR7xf+UyitKgqL z;;7HT3$!s#9|?J8(p|Y-UzauivuXyvW)POnSq zrY8&1OcXE^wocphTxM0gRC91YNoUOF%kKn>GRp(=hG2dEZdYH9R@wG=bntXK;*6k9%vK>~cy@y~84~ ze38wh&)!l@W{%$;?zf*gt?AD_Q4uSCq&A&>8F1iPI| z4cg2o0z0UiF${XWITCFSrzV2Al9lUsH|ybg)7^UL)LuXmi@;T((@3D;6Jn zfj0*x2a12zyIgwCPuuKImBERCy9rzYSzI6vu;e?-s?~7)&|gB68M0aiJGCAxQFZq! zRTmX;ecZw`rkAjZ)rg_~1O#L^V}oH1^yZtrBmKfv`EDoKket@*VP~Z?#v^a&R%2?J zHgjx$|DFtCw?1{{rX!4*v=Hab`<6o)y$8S(knyGc--TWcLoyvr{4*_(4n)g~0*Tfl z2IRm}0{A0jdauyGl&IHssaKpZ0v<4?B(BKtoEPoNYlZ#vuVd`Loh7H%qs2eOKhi`K z5U`Z0P$KZA@<_>1{9tT85}6;{p=4rQP^I_@=>eQJ+<|BDkaJ)CuI~EL%;bAr$vZ2f-(HL zMk@7Ax?WF1n2!Tp_y&m5Cqx@;7pQxe<*P#aQc-}oQbc$g4XdSfxa7J?m^a-BSJ=6j zzJc*=uPK;l;*!KY;;Cq*i9u>{F|st`!g8(g(!0FEA4`+Sn?uLZ$Y#m02f$1VKsVrM$#V!KY^WX@#TIENh% z{?fv&7p@&DJIWb$SEl4B4GDjGxLkMMNTU8mXTAI|4amqjJHtw3jLOwLcWpiGwy$`i zPdyd&ynb&u!r$V~&r7h^2ade^7Cu6T+c;$Zk7ael4>uw@uopcJmb-WM?jo6FOT@S$ z&qu2kH;F-zbVF+~5)>gdduwf9ilc~y6Yb$!M2hKsq);Uv=*{WAzUk>cF0+2x=U){G zZ#e>Wm}-z3rH@i2ikP7n4;mX&b zSJ3c9Z)r?!%~oAv4X@tkUY`!29?r7=fX#_Kdir>t5JT_&*AOF{!Y(}p0etEU-q8Z8 zmZJ9%`&fSTk1k_(wf^}_M(vUphz;Eqi4JT<39DJ|8p3&oJ+fkNi>gJ6IUEpNv{FfD zRJoo9J+s>QiLD|Szu)B3zd`%@J(FH|TioD%GRhC)(OVm}`|Ko=^um=2qyp`t5&yP3 z@-aR2X5o}UTDAeh>{V6aKPp$V;OJ~1Fgv=n^{_QxFbm&A%!c)t3;C`2E_3A_qg#7| z<9-!*P`&DjU6gg`%)2QuF^&Ew_|%xy0G3RP!5lV;FJ|oYP|VSbU2B6%Ki0FV^W?#y zlZ4;;Mj8Y4(Li9dKF}EPHH@7pnJm?5yh{eZ#@Lx;F=xTm1*2vHIM27hkUWoB*)56! zjJbKq3|?YKZY!ddAWnN80*g$A95EWj>60X>LE2}<;^t20E%75y=pmd!sm*TNJmdWl zZTk0~rQ@?C2;QKxHyBJ76aP=o#Qa=HT=4qj_RSHqFg9JSPES`V(`nCDUhh?&blMAA zB6eK)m>p5r*y#D@p4zZUOccMBHvL@``4ZE<#mn@@)x$7^QLms0ZrxiV27v#9`E;&m zK3zFf?e)a&y*K7z?$5+Lo*1;u8uVj%5v3X=I1g*-=vGcYZE{+-t$(k*6(N;`V|$^7 zmoUZlf+YdDa$rv3t?Tk7jhENR`etYQ=$GT76c2SHIYgoJAs$M`u<-X^)1v#ebhHXv zvcX$Jp<9F5Y;e|U;4WG}g2D=={yS6E>J&SDqE?%@MJew*^ZXJO{kaU`(FpC#J4p}U zLnh!G2J3!b>fU=(J{G(!?eV1Hx6ki?Q+AV#ht=x`ezOe<_D~@b+Od*{4$0Q)61KFJ zu|S}!;3iSZ-a*cnm0VO(7G$Ns@?SX|KV8$;w+2ubJ8i?3aCpmx4TpuphY8;WX*7~~ z*BotlM3iFlbA1XlMApV92gH~%pX+j%-)q1 zev~QN$5e7Ok5J^ULSC%i(mUMs38Q4gEW z8gu4y;?&RC(V_%w;U@JjXu)FTn!k@m_cEOhqdn4_Aa51OCc%Xk6_bSu4JG`%x&eJvti<&WiE{Wa31Ym*)Zu9;Zo)kb;*0v+bSoQ z%@!`2I-}>z`%ljX=5ksO8-F`ffOE2*S-VErV=O=L_CSvPz&FwptPlBoL-k8W}gw$0LzAe@!VA z!gv*6N0rOvI$ z^SO%#f;AZ1J-Z#I1Ky{EdrQn&w^#$*?`g979I!~Nrd)&rgpHLvh< zV$f3PExmnK9nlx+EzLeNm=Bn9dJehf$e`6bhlX5~JI-}ja%rV9owGb3#{m~Gb|O%$ zS0EwC3T1IRfWFI@ue|miC*)g{h**4!I+r%Ih#X+V9Afzn7Mc_UMG;xc45xIImcAif z(o#PNFkrJM$)1z~tN&x5&o)G^?~ssz*9?Gs&mMFB_~WvON^wRbXh9v7tb1t8Z*U;@ zGQT^M@t5~xKsnA^O6RgBcqgU?ru)aXi2>IBP8LZIq@(7)F&jnfom@7@e$C|@!tWb- z_9NeLPq>GcC?1A=3;ze*>Ug`{Jyz2=Y#P9c02yIOotsDgk-}hBDbQp{&4Vc}m_1Qr zRckDo&1AT5o;!6l%DUKE(0PtuKU^o~3eKCnIuQ&egePE(9UUu|W7p-egq0oB*zzyP ztWa5L;ObGt5>B221lXSDpeN`qmF0{%ob! zmd@!w*AmrS466y(x@gbpIF8B-@BF9EaFE20gVdmXg7iEIO<|0`G}bUtDmK)lQ4i z;Ur;N5;Ob`Ea@k+P#k(ug-Oz)rQ$H~E5;C0A<7d;26G>+9UNSX--U-neT08Uu=6I8 zZZ}Q$8LZwh2l}Z1FEba4_L;vtZbZVK*ZA#^C;Ek7f|b6p!=bZBj-cC*>+LeT4KiNlUR}P@!yNQ4Wk)56i*wfA- z^dX>v{LW6(RgZVdTn3Xy-usmH0%HCId{5+0^vxlC0%!Vp)5cqYl^97!O(Gois;n2Aydnxoz`M29BEybriAl=UCU?B8d0MUu z21bN2NMO>Uqm1}A4vfuDKTatp3g>v0ut?PIz(qX7K5wT%5emDmQl=R23+#W802AEJUe1h!O=Yk!~~RFrcKs+T*XClCq_YN;P$>Fr_==82yFd z5)gSnHq^Z!)2?51&k5t}My@3VgFHIDIawV$;n7bH6HmQ{x0Spao7JR5U@T7B&aPkO=N&&j0QW%inFaz+uZWgsw;1={1=Q$jv>-a< z=01cSfMwerb7&{gL0A;N%M_7FO9f4IKoFb;oMI4|0%;bKG)I^MaTW+BUebt~tbKP*mr(>2&zYj{;MhaRO2 zn(TTZ$C4B}S5OYnM_jH~_;Dl8Z7W{b4dOM0O;@|HrUT)j>v1$61Yv4&TNv%Hkew3Q zA`AsrqZ=LNrN!sb6;-8nvw!yw)dDrj9TFcFe!}t8#M8WKDcgV_^>F#F7nTXEMluQ`~k*=Ff3Zg{$-3v4n zFHm00n{@Uj7?EHVeBuH+UNExo*R<~%AAZv4ZU3Ypoib7{2anc}?nLR9#}Nt3Lj8)eVW!bLt+vXUioL=xI953G#w6o-`Lhgg9_wWNzO zdr3iJ@D2j_MgN&>W6{STu`TWijGOd+#Ct{mc+qczR6CC-fq2uFW9tUtC$y&itd<+Q zEFdvPT@Prs)M}NEJ8gGMUmB(C!(($?)VlDQ#>tDXXU1%ooe4Z=D^9S#$_j(RUj_>^G7WOzWafdrvox4+GWs3x=};T2 zPo;rvtGOp&NLqS_z24zoOJl_Qgvy~YWOJzALzS`4H-`8iz46`vWgPeodb!#=TKDvo z?myz9S#Fw-g~KuaN~j#D%YpsRqnL_>KV`md1@?Ez!Ap5*DllB45@-vcmInvan!Moy zN0q4OSE7Al^87L%5YYk>N$rUx8Kit|rdFH5uU`s;A8}$ACpI|xi)euvX*|Cht%Rdy zWYPfz(2q^j2ED6gjdR~zlJeZ)APY1l`T5V=m9C1R0QkUGF(%DhSoj^_B zS7aenSNL0rKPRE6TPhYI729&;+FrC|^&WJE;cjQlx9z@G6*W1KEg3IbJkEpFuef`} zJjX@e3Q`CM-7J2Dcq{wl(ev|1zq5OOe)ocyQzsKEVL$#F`P4Fmo{&DJe`lm5jFn34 z%cYTbhD%TCok$N=$98Owhmpr&)Y`SkAJf7iN71PvZHtciHD-c)9cE<2Al3P5^pXI2 z9^1B6e1l1C)#`&wZ?Hy3{gK7n`NqWB`Lz?`fxSUfMN=fUiGk6sGcP#OJqANh`T=cE zI^DyHXk3NLT-2K?6#?Y6FpfET`<;3!f7JyhLvpp;;L)j_XftZ7l&nrPy3%Rwdfbne zrpxbF()|;3f0^!fSSw{K&1Y)=zsg>NlVnAyTR&jo891A#iSxPAo@`l=E6noNPHLs< zz{6a!C@BeI<+dSfE6<6u)RKqn-kFWj=*F3QW+`7}R^Vt{Sl0*iz=`Dqe`7@g%NF+E z0}gp%GjI?Fx3G#U`%RZ$4sJ7*O7Hh;K#@Xi0;w04OE?<6bu|7UddX>ZZnZuffXc1~ zXNIbh?OGk039_G%u=xia7Egp7)?zMKv_70GS}aAT{Kvc49Tp&`dQcoYb+&5Bf`lQU z(xzPAOofFCt*LJjlnAG`#TN{{w(&!v=n&b2_!KdZ0piJVE^mSK{ly7V)&O%2P};!2 z@$W($Q_63&CUn$d7B9dx2Y=Sn!}hfGvT?caPc60q%S8PuP^O|Em4|14psMlTS<9iZ zPfr7=0wLDyy>s(FIfwE6Sx)fDa$W2_8ERSnicD&4sAT^olA|5wl)K9Chbnc~hcRT9=U~GyhXSL9Q9l{2Il4PF)H+}H`Xesvqs}bdnZ~bYE8K* zzqR0%yLG%u9;i8MCGHAeF6X-->+>y~=^jie^~zver{uA~C-?t5nz~y$LLGS^*c*_w zwg>qMB(Ow;WF_zn=o)TAl>GL#szCHplvy-IQnE0ll$dEPrX?H#@JGYMN&*oTs+fs# zBNH3qlbc>8znz<+tQ`VF15#CC> zukd)TaHrEA?vvw{VcYFfatv$DnqTU{zC%doODX%nyg~7@v-H|VSDdJ}7N1|?bRCwfsW|{4Cnwk4vXw;$o zUqz6(0sfW^XdZVwz|+eP(5Q=1p~a{hib6y^m~-2ml@y*|wW`_K*<971$q4tQBez8GlTJlY?To$u zCps*KkWW%^p-o$pX)c-Ey50+m2xdrd!}iWV5Y3KbYNlhthr^X8{DYOsfZtKKdptA~ zgFVGA-Ed!J(BDXQ6_Uw9SMtdNT&h#rat1?P+5a$zWG7*~jC6b!WI2y_Ja@oQlkeJA zhT_JiA#V9U-7Uokb*mIdRl1f0fNb$T$cFYO9Hb%fffO%jHSrKXnPdmygIMWMsQ_(} zy(?O%^eIZk3Sf)T^is;s3)8*5)6 z!vu}sHO^YqjO-C$WZ-Ucl)SN8A*q%*sRAJ0>}m{ptVye5tMI#Y=+oiwr$gyR=j!4cMiR_XN9Aox?U1{DXzAKNPoK&8`^tAPKb;G|WH->` z!nYekUhhzYnNj!T9j-6DMQ@a?rQ^c4nWY$)3H`EIl6_ScFA9Gw#y-3w8?iK~!qAVOni> zThfnI`68Os8diy4<^Vrhih&R&O6XiGr)FtC)2?kpBJ_a{I2`y>2N?h>ar{@uySv9H z;9=jPH)nE~4Bo6N*EAlDTHV+czlp5iN3}+k+>Snk=)kLD!=hn)zbR=C3}-NRmae%* zWf&=RCO+v5<+?0?G=Sn;!{;}qqGLhgC35If8#0NpAY46cP*Bij*F>n1jz^c;TFCDe zzMk}4>cLMk={dbP%KYMt4i~?Lh{$Gt`a3jHZ$%xWHFR+TcU1Md8HA-w_D&m# z3M+4lnCUt?7Pbx3t;5~pr}r1}4}mXl4WF3y3lAZJatZ3MbasU~BAc29wZcNx* z-OvrdMbz%R!;!UtB~dR2IiS;55l(PMo_j9hWa-Bt$D(lL6JVMBimVF_Q}3d7TCErh zIW`!3NgOV26ik*h^3KKlv6fK~fmmFY)4n+M;_Y;`v=(TgK=LlhcJc2>y;~#++zy#z zvx$F67E5yKWXrW(WpkLi%NFXc3utW(w4fOp-IXw-+4>(Z8FuxS2sF@5e} zMXds#zO)|D2~pvQpRMdlBP0}M;d)*s=w$gK`PYleaqyGi3Sl(Z7l zx4vepIwHbihhZsI z<4HkL61Ji=MY6qE4N5`xD|W43z3ZoRxP!OcstEREbY2Zw)D%iKd#zMDwQRD>}AO7iZ zi3z>sGJBnshkiO#8lPNOS~n>k*!gDu4})9LZGmBcRe|ZlxIT6jDS~Vbq8{Lx^`$g3ehKtvgWC(iLq*%*8UX+B#h(R7DVi4jAo4-G*yPw@KM^ z?T`lrL{|pwS{(XH<(mZO0G||D+ip@>w5O2ye!fa8e~M1n-}NR?Abu#F4I6H>QAJ9PgH{|hP3ipc1 zaTMft^oDBFsOkfla}4sE2PgdgiNS%%K*LdEkX3Dqf( z7@50ICP0oh#`_VAJ`x6%kkVi2aUebXqbr`{6c#>RthA7$u;w^O?KLz#>(M!Bow@?tIq|*WzJ_c zOu6qYxsqwp1&3muD$_X-nTE%Ej6tL5LxoL^0k?0sZVZ^{I=c>CBz2Zruj9Vb7`qQ> z-k7j`ti-?t{8U*qGGN$jLm`~MAvBu(t3AR@D;cAQ5UF$an$tZvDa7WV_0 z(&AR3T|ts-8F)bR=WNaRvQ0!==zs`{#3b~;i>tT92nr||jvZeUiL4pVO;92CgpW7> ziHxN`U9ENLluiUgl$NMZjXvW#1f|udBPr1GI*GB@->2K&w*+zkxvZ5^u0$M4!UYgk zfdJSUQh_58L%C0kp==*4Uk{$4fl0rAa$sP>&vsh)VUk)m_$ufs4V+OM-E>&YuaH^w zu9D|!icDTDzE0w67`x|3<~)fj?6ge5e4{7&r7xk>HuEUOS72`k;1<7(YMrg9f*{8S z0NSDzwip3Nj02gL?If(Q)PDiPd7w26XkvNk`;v{-nubN)fc+!sh83QUG;gi_l|_K0 zrwe!)H$kJe@B%ncW!$SeqfsY3)zwSPX5^Wohx?c(x3>?a>tI{je#;q!V{=>3z?8|{ z!HwHDg%OHHTO)hPcZ;r+R(aX*Fww*eGo{F%Gc0__l#Q%hNXoJWG&;^Ugby28mDXg^ za&r1p^Dw98p4fx>0;3*vL8(M4f$kc{zD|8KN;Ml=huTyyyWDV1WHVxru!aU(_1h!%2Pe81_3A5=i zc%vtGoP%{wJ&2TWM?~zMsG+FP2jZn&77nxaKv5gBV(2^~gJ zm0f=Y$^+~M7vDKJ?!(QRWOrvy4X!|+Lce-&!^oVfa_mpW8a)%#v?l4lIuN+pn@;&S zPhTc$L{G}TQz{klY#J1rI=9@n>ZDaNPra+!aN1HVK80H3SJ4i`3WJGIg2MpTUDRdyX(hX1Vs$9Adg2Y~Vc~bA zDOo}IjhLwPuFePEMz0=(fPBovwDhF#pR7zbEu6)kwU)ZxD3q+H<6skJn6yR{trX<$7L+uc*(YjUUiVg91ty9g%q8gQQR*!ONhZAQybaphv!9FvH8ILCo>@&aluF|D3W^yL{ zS=2;%$DA7C5!HG|T^g4P2of5S8niC-I9Gs!1x>V(86eYH`v6qIz>T3|>8k)%qaDM@ zrrd%exidSiS%&A3O|Ud;G--=C4a8JCORA+uTJngT4~c&YNC73Y*idvzq0Bb747`aJ zctA5p^8q7HK{G`5hZrEEJvk_vvY+149QArfoBxy^wy+y%I?$pEi3+C9jNx)Jg;`;? zR+~M}KXDif=e*vW@UxuHH~s5Wr-cctICG}So|dH=ziy-+Kv^To)kEvopwX-fGSRafOB5ka7_qzr}LlSkSbpWkNl`|Rutt>5SKYfnqLTp#}ottoX*rKwo8sV6k z;-*k3BbWiPzGQ{1_T+G}I6P7;a%=SFy{xZJMDq$&tx+9LOe76<&|B&g)9Fn7_vCBL zn1yTgCP&c&`GSleZ>3<~L8YQQ$!FL|XB#~YH*ttN)#j+#EW8nOo#nz$Eb2NQZpWjd z+p%G&{JfFpIv)G)ZIm|T)Nc6w1NV;hnlu(36)3z7i&&#cWsWCbPv`*KyHU@6)OT7D zG{6d%Hh=ONHG*bdqc8Ltoz2AO0)TK-8fV!f4Csx2^F&{G0V=)-N)1uPr$IBa4`kqG zuq|GMA}YxVKWOgBh zbI$JK&%0{QvEcmVQck>>?Ji+N&;Iw>wwyB0g6fIKPzcyJePfnD}-{-CFzV0i#`&_*flz3_8Gd|%LmU9Tm z{rgL(4cET(E}g%Ngdg*-h%)_GUnc_VuOmkjPcL{A?u*>`NhICuJQfgs!2+SmSxCe@ zt=h*PA!<8eV_)@~D8^b<=yp203;R2I^WZ+RGMOQ`_6s0-2%5B7)2LB8=!~N@%A-U& zJ&G5^gGu_=I4E9=NM zGtHdP{3zSRQ|u`y{z)Q2nuPWj0weRMt{xs!1?P2a-SWEo8W zlhW}?FP(YCBW%z-q{dYufkPZN=%pRkQy!w|Z;@n>mLi5m9IF;O(KdiumMY{&TPDyc zLv9Q-GfDbtzGnoL>YueX+~R^be5b&_3ct(I?v2R9a+>>KEx2nHwm z2l^(1?8~T4o`BoXdf2Q`fj~hSSU*DQ*3sp&1PvrN+-gU2z{x9s5+H^O*j;a`B0CFQ z0Ap_IP$O4Y=LWW(Vo1a$;&Fo^9-oLM48o`-pO(qedCLRbV*SW46z$tUo_2~#_S0yV zxy)y1&jesn62f%Z0yyl;TqA{>W{zP2`Dhl8&TsPr&3@eiC)+!$FEc`^Sp;;h$ggc`k3}H`D98N$McwOK08; zY5o~!;;E++h-W;MaJdq~n^(yjzI|;scZ`9(a=8$s`sn^QWZy&s93E1AvQ=qMS)qqAGTRtx zTTBsHy)sd~wK+%ul8ui`nY6rHBfb*7ZY5$7!DJgZBCi_r)_TjojHC1hzihsjnD}~k z^-=LypYRRd+>4<=I|3)h7b0dEuRW#4<#SlG{ng1#7}{u?Ihigopif69_YeA2CaA zkfkiy&P~|*L9zqc5oCNG2@~^S(Zt*|R8|4BO#!d<4EClPLmqa&nQ!!!b`ik3tJK#Z zK(R{pVU;&8yg?Nz*c_I3+>sYwM6OEL7b9+WM6ekW@p!`UN&FfTFJaLWRhb#y@DMQW zA0hvi?`u}HPz0?h z5H+i4nMn9vOFOR=GE)8!?j(&%o&YO|vck??s)YC326 z5~`}e*>%CpfXhv?J1FwcIDM z9ort;lP&e8Cs<(w_A6c2|0Rbmoou&<$D37j30%7PnGP!(qVA@27VaZPGDo z2?j0O{3erNFIj^@>vhF|)f&LujKcQ+s>}gwf-t`SZEjjps=Yr%4x0aUa-;|mO_#Lk zq_ahxAqG*~`XBzpp<%z8I4d^9F4{8`QF2#+CHe!}HB8@JGdQ@W`4SEGOUjFLi0eR} zO|t&UUW)ZZa_1|ar`MiuQVm{{$?09f$7Z2(tXv)&FPFy?o{K#ANyI%|qEU^rTh6H8 z9Dnp?7OynkzPVnBZ!q)MQfzvxF&mxjg_*B2Zq}*1(GZP&tglq+i_uvq>Q!qu6LdP- ziyIqbWJ6ucn_sOEh)xOH+XqqX*vh{afp6jRaAEc8Lio~5U}`D=Kdc`T?dzb~>xI^) zIKwAlJ>9ctKP|IlCF8fPl*OgL2u&=RuA=P<9k3Kb5_Qee1h%ZKWuGHWkz|<>GvOgk zC$ffVUpgt@5p#>X20*VX*Bj2e-t!j{T0@?G^wC2KNwL=NSxaWDkhox{UIXaIu=~nX zj?7SQyAE`2pQsG6&xr&XM-ElkYi53)K7T#w z_Vv<{{_;G1!aR<`IiA>;zC>YFX`()7N!SnfXLjw%_z$-wVPA!iQt)M250LRwFjJIN zu;`W4$i+yIErkgqmyJ~LQeME4kZVh%C`fBPumJgvc?W#{~s9)3GCGU4@3jQnwA(hKtZ6CR)^ zAIKhge^ukAP{y%0Fq0^~ZtvWb*E#h2@NvG$k$w9Be+%cM0;G>!Zpvi#rL*STZ+bgr z!i20d%l2`dy}zkv#$CPTP#|lvC(IH7t!q_*(y~_3VH7V`8g6%^Qtow)iceQgENiqH zr)uk3x^#5f7<~XD^UKE^A+l8zK3+n0%nJ5Qp$ zT-(#YC<5hKJ`e3Rzvv8xm&4jELx6I#+R_Q9cvgjn|7kyo7|2SQ6<1>FMb-cbd9`9j zN$rc6th6l1x5SGztdd3GoZu<;4Y&v>4C_5S;V(N<=dKmAB>Cem4PH-D>kgITdfHrU z1fgqi1?bTf5~|@iQKG#IK5Mp4+-dj7b&7i?;!#t~mO7$gFd+5AICx?%dxG%7c&#>G zs5!eQ68ftK_K5+on5I9 zX%y;D=&j(jM18UrPsx==lUy||7pdgTd9QCMvF@@Gaay?41J9j9aAXoW4RAAuMx5CD z=zbd66cL}u*kDJPEHU$J$&s;n(gv_)BjeIq3P-AsmZ#Wfrpus`7xqk*d)?`0o=L+P ze7Mu)>RihOkbueCbV?7JAn0xU!u8=~B{IMsR;aa(A*dJM!6_UWae2 z*7Mnn(JgAb7ohDZ|27PUaw+BHQgkpr$Ywkg!a%YUTN#b}#Jw#=KbG-BNGpZ}XuNgj zL2`Aafk-yH1lLHEP9pokSI6u1@rin!ZIQyQV~DpR_9}IecuM7RfjNSFc#%0mwh>hi zYRZ}gKVsUvj~0LwZ}~puO8iW`ZYKR#`FvOTlSv&Ep{MnrCXQp)jSbu6q_c*(S zG6jX>#=GzL4s@SXYkEA*+DY95UiM=Wq^3&QNK6uHKmt{OTsDx=pxqjHBz$Yd6wi;z zCfrFj{Z29?1)VSc%rkKxD?CVHtc5GW6`wB>H$3dEL?RVvxp5S5eGL@dJgQD8GvzXj z|ILS(0oq3-5Al-_aT{^>VBaEOxFlhT$Vl2&OM4p@Ii{h_LXC+LlUG`{Wn1j7oDQcvk2vA_4m z8=ai+d(N62WL8;ceY~DI2_DsAuFyX8g|ISP(7i614s3sYs^ zrxc>YgFra=%en$&kd)D9;(GvdP86N18)344q2rN*r%HthTEf_t&Xzq%v*=t51uvT% zIz`%KO8`SmN_Qn8zG-3+GD#v09s5b#dM!`u(9SPx58JsfbDCau_WFT=^=Uc?v2^HD!QiKmh!kWWrK^!2M(|U`N%|tYrD8mH ziQyD<04mw+QG_?-y2zfirR;QJOWO@-?`}5Ol2*F5r)*?T7PEAbU!9<^5T`EhZk&CT z8f~f*p%?2DJ0U6P@b?17Wj0YY>hk*!e5~ z{hyT>GDx_Qow5Rtw1Gham+l`1*2|E zN}|R>kk$e_mB59680wU*P~TLib}4los(GOj7kp&FBQS6&Z|R$2iA4b8cK|THpL7#w z;Z6dy_}N%GV-fzu%-JS0Te7J!a4w%qp0-L?+M7^2k-MKbo_()!e3F`rs1tiidWa48 z1Ei+bpClb)?vOks9*_F*RlznEC&YneQh@pr1FJ_&Na^b>1XwcT*U^&9aY+ zIL5Ce9OJq;5j-tCq(t9br_!}5t_J&;L!DUX_peK+9Y~~B$5**Pkf~EZUsd)$fEwdI zs(M!Jiq_xfFS{9(=N$e_m?&J4)%fuG;uUp6a*Xq!@-lPYOOQtT= z>KV%$rDU?iymb6yv9q)IN-3Q#{gN39Nx3i}PiEMw@>EWEKbPFdP(x;R2p{1%^032Z zbI^hP02{~DQyVAUHD2qXuA~cZoB4+)dV444hANmO3#ai1Mu?~4VaV^3;;D2zo=(Mu zAII~Bc)XC0b640S5&Q0-%_hw0&D4Mhe#(z|hf}Y2Iw;>_2z7n$0N0}u<4+)^@Ai(n zJ03vIj!4vMMgk0`KqNh)L9FjYozC8FfC$F!hMlXCEEDcC`~TTiMH8gj z%zP;$s(`^R{W^n=**Qf6Z6 z_$24)={gZI&J<15hx5=-Y2s8zj(^a-9$Iee13gIcfC-8Y#f8GwSwupi zVu&+2_y3FRX_*;uxgxj`?(cZAf+gWW#qec1_ zl8K^N#etT{q4XTyOJ3st)%&o-%Ef(FXZDRmQDCJ~dmB~jVKf(F9r-nMc5Y-7$c)t*w>CcGHw%y8=7|tR z_|@)ux9tSF>Wkb(0>s>%~3=;8$8q_qu~T=|10RZ54ZWkMdkQ;ZqXmd6iN z85yDYSridOoJ*g+NWCsH`O&tASeE`2go%V%iY~uonYNM@XyPSgjIw%{kTI6lo8P85 z_}js99XufA;LCLNGGQ^#Q6&7iV43jAa&VtP>2}$xh2)Mdy-f}$F2A{)3$PSn_$L!M za-qCl!|ZF-YLn_qmS(G46_XzS{@X%D%wcd;X4$)(qf+>7zUmnEWkcMt8@7s}Qw`T2Q*Uh;I7wU!I{vbBp(@0}`Ts{vHe>5=B3vr`I+ zI+meq29xjs%{0>=eo0*;Lqlnm#;gImx9}ozm!#As9LxGx6bk0@s0bL$TH>`@+;Vu- zT&b90%X-DY%xvJ!Qy)drW;JYqC2-}tcEdPt;wz}!O-ogrro@JBiq}cGbXpK zf*1EFJVp2|hx8>6;^G$fvDkcJDSAWscQZjf8hXxOR*{Oa;}{VKlG&Y1HO!#~g1FHwdz25Nw zVLy9DmahJ#(z)X=)wE2QlXYIcx-(}HerC=!S=gFOuTJO8xmRD^sB`I@a?g4+VAr8R zH1DhxhI-@^(7}cZfo2uy2&SLAFl~fRQ}GVWRna3L zsfp*vFnzn~jCMZ>Ow~#CCsuMMEB^~Ifu8`X_kI~Bu zzo$L<0}9Rkhj`ty%+olX4RGQ7o%zV>JM&>qc#Vr}G8-->?0L}DU+d{}x%zs*-#17I z_N4~%cbB}7p(^_{IUm-P9#{@ID2?5ATNP>;rC^|Kv5@O=FBw@gv{g}=r!@(x1H263 zmuZLNGmccs0S%f)uH!dlRm>2T(S5PwOC8UP^CWrkqW?x42cr$^27^x?J(>8Dmv>0C zZW(IYN;YmwM6~3RW@&Mv4{#k@A1wy%un94p%lZ#NSVCvFJP$$v@gFW38B z-ti$88y@#KoAnoHAHINCH6H$0xnf+eQ-V*SxFuz&*h;%nu=3@oJKnWB-FF5Hq%syx zuyf|@0Q;RR-7EZ}kv<$1%Rq1wJ9k8YWT{=jZM**EZTz=Z`|vAphdfiv}v7u8KThQ7J}Mhm>kH=KSOV%qEIkd{7a%w<(9GKdH;@c;OySj#j zHN(Yci542II^%b_db-j`>FSwCclEgL9jvgoh^Ek~%2mus9eh$XQ}J=5tKuaMT&U`` zGMPo^%-ZO(KX1&S1{{U+YCdc9P=zh^{OrE!@XglQo`z8XQ6)YDPBJt~~($!0z0 zf|pxZLbS0u0i#Ay`ib5$`K$N<=m}xC8Uh$dsk|J4yrh-u}H8ARqCNypk zim9t>W2jO_GOpU9`K%gP2)KuoO1V+}Gq?L^&r!MjbJFqGZntoL{|I$g{&I8J;~8!q zd-SzOXRU>lPVWb;04WpoewHFC=O^-j3Oy5b)^i2v%Y zM(K{uIC9sJcU?HCiSMegYYhRTG0*FfB#h)_5ASj{QGmqvQK|l<+s*#VUax{}++Obn zgU`YPmVAnjpl<+gMC<2f&DKaW;6v4ZvqI) z)u@{ILdU}$FLr#Z6rjB50i8-0sj~p332DymnIkcCL+fNF!+xA; z3jgfSyrji2$u#jvui8$ymT#InE$zBF@oZ!!pi-O7!HF;ymeL{It(7VKR=EZDYdr>q z{qGvP!r(=|vPNT-YrVWuJ~2GsoFDQHRGZa7AG^FbGTepKJ@8m|_J_t()`SIh?vPmB zSN5VUg4UfYlJ!zKED8r}S+DSGdYZYs z*|+sZ;ni5TQrR85MOKZ)s_eg&oEG24*@TO!R@v0yf!pe<*KV@)__0NeMsLL;hj%Ia zlftH{G_-0^F8YStTBQ~SoxADLn&on(&eiKs+n^Y`LBaSPg!g$Y!A}87damP@j&F8+ zhZf+0DN70hzG+eqSb1ctbW0`VZR=-g>0!o`5>k#giclRc+Y4Cy9Qr_~q#dyWCEFRF zLu-Z%FC;KVK^%%2Rx-1at*d3Lnxx<%)G0nD>WD+BF2RF$_h+;HP4qdx6U~=Y zOw-ulcgHj;Oc_cC)kl8%}{*irSV; zYpH*by?zvV!U!I~99P&PU-?SJ#!AmeY_^E-$${(UZf;n7KC{{9vtYqh!IS%KH2&bx z|EFJUlX3wZ-5uUnRr+4A9{h+PYjr8=42=|L- z)!!(l^EV>;e4i%x{U6Y?3%zMXWZ36ki~0Sr*P;LckN#AUD#ai9FTd02|1Y1*wdE+K zMRm8@v@AX|RNaV~G@8>UMK0Zy&v#{Va#PAo2&M3cVxwLv)f+|bV)BhfNcc4=U$jYQ zBchjdj^rhM)fosl>6iUR>dPcp9Zsv&>9C$}NSiGwOi&z#&YQB$P)d8miFu{t8!&Qy z*zvQLnM10i?ej#JGy-;SZJA;~(sr3#*w&_QTf&QThe%p0d)GnMZcB*J-2ffqWO<7! zYxyT)o=FNURS_=EyA+DUWxFjkEfUI!$45(_P2N;H=eOPMoUEk-FzcggWHQ%Sq=&-I zJ?DYu9Xu|pwm3RRvsz9D@K>kTLGN=)OR5A8lYL_5-Gu~Z-6Yq&NRO{0TV16yc{8bi z3IfEX(DpVbD&B3vwbh2h(Wt`dLVqn3q$@a$B8e(Z6k!Vc$yJjbNAB3diL2N7$(GF> zePjaN5ESmA+h;7j{mp)tjB_Bnf>S2faV(IF$%F>65Pe-1&kDcD#=3W8!`w$)IQo$+ zoY~PCP7*^$x5EK)p_-iqkVOGLn$XtqOhsc;>Gd3E)~fU>Kf10)U=1NlP|J^W6FZUJ zEHmiWdCU$!$aJU~b&VW8|%OD3_7gk>BF zZDP+%8E*k%;LxZkbSRfub-u9Sug+M^xd$7H9ZMWXJ3}^7Lj&;7zKWpkEJA?S!CU`a z$GxzxAL)3aWe2sE5$w~p)Ia#7y~36o)uLIv%*;L*cOj9n^obB9w1ifc20^QcH)8Rv z)GjDsi6ZGNN;#YK$epD(|D7iE?>{BkKOn|;&l{j~_D`DPv9oEs&YqxW-usx&k@=S! zD3t~VLH!9buWRVJYe*T~Nr&s{@_Ok~xGn5D#f6`6$i>dzz5Da+pG{`|DvYsV2YJ+c zNF?tix0>AOy(E_RkT1Q%0C8{?Z+;3?=xx`li~YmI_t6`sNQO^IM|w*iUH9RLrl^ru zUV-aWe3o3NxAyMcD=h5Uv!_D`faMVwuzipfO+;<4Xt5PN)A1T4#(yj;A6k?bR&r=$ zk`2&GqzFqh+L}K&FHX@r7U!mwXD$vunZk?Ur?mB@)P9obG(QwX#5vi!bgy)a0v1Zk z`>6rmIXHwUlWuOQkn#ankV4DU%Ym=4*`6jGi5|9Adc4z=vX9+$&n@Ufh>)VzSr41L ztipTbA<0ArGT|S-u@N_gBb>sM0EzeKBQ&M`bBsxpW!z23S<)hhotx{Y7)GQZ2o~WL z`ULJ+^h;I?slE%(E}DEOrB^cU-%NQY3c{kCpyiOX`*#`ce>xxSRq1r9@2i23?^`@u zxO?$*=}GPgYgZ=IWtEN#Yk0pwWiaYs44^$QL#z8f7q6i|uHjADoK*#vM#iQr{AYvd zC@qZWP$}2GAy*oT5r`N|2S3YOhV>c<3H-h+*TC+zs1)e4$l2=L#pYnpyxEWHPkcu; z*iq?gNsn{wllCLh87Yu}jymq`vXQ>oDN0DZS?nNga@0m=qngk%c<0hpa)Fm$mI;nO4e{0M%}Krcy< zAvo)Sog@o(9!JMNyh5_$6eJ|W+ST-w@ID<^4bgGvUq|U-bkqg5 zBW-Z~h7)*jGU@qK&a^y6#s}9V>G5Wy5>Hr^GCMSsOdV^My9Ye$%{TlZ>Nw4TpJ>c+ zMAsmDW~i%cNSGV!`YH#xVPP_jd_Ba8afS}FWDSnc%#RR+j?2~y8|ji>+$cUJ-aG?F zW334ds13q3GDLW+GUxF-NXC#{xh;x9Y!If(Wi~#UF=GMVb?!xPIHNDU6m_!VGf}5A z3du5z+5d)Y2xj6o#6+Ix*w^tYfR_L4_+!U@W$KzyY8c zI5X+8kWGP5cRXQ|%V3u%wSzNyJ6H+~p8&wJF8#v!yV^o*pU`hJ;l^g@-wfUT5RX^|+@V@^?Fd zHfqowUl^qlnGdnTE*$s|*f>AlbF>}+qaeSuxrWg9H8u#}}POIJ`q zX;MWx(gnL>K?MaxyI4k<(O(_FH0MK8bGMa9y z!_<`qBdX|Ray5M(Gd!jql)=4-ipA>upQES*`2?y2M30Fv@cUJLFH~=$u6!TIsm6%a zNQ-&v%>M?%vpf_lx*~^(l^nm1mV2MxFM=3plm`pL$!}tDmt-r5v$xk63C-}8A~ zbUQm*0-mJ75Y(Zy9my~6bejCzrQ}RaW=f@Wx>U+cl3TTO#cBeG19sd7 z{B~r7sr7~Sy7Fk%dvMV=7yV$-PZ#~}M14mt4lEx{1T4f!Tab-^U$T(E3A&U`D8o7=eX0Rzytu5}@TrW|`3YU#g_DQ83yrQVkDf4HRp%(CT&pCxR zh+QO2%tZb_wMAo(Xsj(X`&N$nZ%a$7BfNMzpuuz%m&P|b7T`E<-?-Lr4ZZ#vN<|)} zo4d)*-c7m6qlP=NZ)%X69w?CVbjO7U>pl9{1EK>S2s$`su(>{p`;JpZpQ8#rR4}C) zG!}Kkgh%bvn5D*i$*ptq(P1yj!l6+dLlI=oeMKvFT_B5QE(NIYfc_zIW-CXv!LXjq zkwKNapLY~8Mj1*i6$(?XfL%FS6ktofY|s|S=$1$umBd@RUm$0!fZKcYns{3()fOkq z8w=QMftW@weDgTnbT35)_$?iD%JjRhNIxreq0?t2vSg%7o>=rWdKkW3iNcs+BB+E96>q;qTrpSd z%jf$tB-q@OM6=Tqp1U17_1&JtZn}GRZ&OpRu$?YXO?Ym{Gq-yZJL&E|_RLpej&mIN zKNfRvJFmNLV(_|f_`2)z#qOV&gL;~cVpDiVCdeYltQup)XlgZ+bwKlb)Tl?P$~esx zo}`-@I^~a{SNod&tRRR5FdjCg-NA0ou?n8ri z=rb|9Jtnv(Uzy?KzJH8^3!1TO>D$r_gM&Z2=<~>Oy}0Q6i(VIV63{d_@S0a8DiG>W z#o>!Xyoo88e-bBliB(inO^MVlst}Ke>MY2fS6Qc~j^OOzotU~3ois6jKF>)s`QyEQ zwpcnp-+@%|-76YzL3&+c^dPCD&A6Zdj5>oh;6pu6CU}D(Zs#OwuMb1JkaJS%vN}2E zDZ4So3AKp6!G6~rbhwXRO}AHfr(J#Rw{`To(%n~+QM#J7_^A$&CPMCa2NJVbE~BF#hZ)uE3n$5 zPOI@vjJY+YI)&XaJaOwK_;11ukjNHBhrdCyPmbBrajimHA2%hiebE6fcL3a0^7Yy} znInlwEgID28}n^WvT37a(|Tm3fo4Lcng>d<9cEh^$Vo%?fF+^htTl{n;u!EaWMDuCPr+ffu`KPFH%8o2jwXpHMpiGrZ zm_s54Th&TeF>WL4L(C?s6yi_tWlj0KKg(2e`*47mQG^=~=A&#DX**Hj(U=Bt;2X=+ zzfUVD{VSpX z6=inewe!w<_Cil{nsX#lL2m#0_@3Yu`z4`d;{HAHWbpF1<2=U@#$J^#zJJf*Qn!04 zWn`DqnU6!q=%tZ_!H|eZ&m)V_)YR>#vI0Nq3a)>3sao>gaEEzqjHna-KgX81lzPY#E^?iNy?$aZV z_IAgAo4it~*Mxw-1z^&bz!HDsl$?>nBu272%-5)dLO__ScybdfO=ZdjPu6q_9kQsQ zYKbG-V-;sRp(~6~u{Sk@fDTwZZyfOdX3eV3vdwOpZxFFBw19XMyc_*5vWtSWVZ5da z@eKYT;7{>c@K(HrM9_su5a zr2f&%qfq&fJ>RGaC@J(!X9RlSu3;oz$pCeTo&?th$W7(PdE5t2?MHpiEbMgAPw37}00- z8l|OVhF>7JX!xY5_7e7DrM@|h*K0S9_EKKDeLLUm93#K ze>r63TAyZRE5Fl*)H1U|i56u)%H)(BDiVXJa(fOS>`ka{djZMYZ!Y?d7&OeoBF9Nf z#g|%8$ySq}>IL)SV3Lc>NLMp#3-GX-_N@rS!pWzIBo=TtDcC zs`7r%GqdPXs^#%xu7Hb!Nz_D;gQ*6yYAA)R=d5mksBE;7Dq4Ot|iHsyO-;Z`6WVL z>JM_?lKNu83sK*}AL741Zno%jmdzHP7jE5%TgygZbJHC1O9l)?l}_10S_$Su8zp?s zi;W}NG;TC0x=MHh0gor(@k*0PiPuZl0dInyNnvLQd!e?$uktu07+MTHEHT+sDa=yV zXjD?~rfJ@$IZ3Hg04#K12rF6vPvTX!9J-I{Q>J8ldoo92a*@&PHZFDqfq|c58#=PRhvMDc(vNwyyo!$hxAn1MvU5 z7}_^D=9NgiV}px3-+AX9&NnvD*EcZc<6sp#kr{g&y#TaUa1(2eTeNT+4;T|vQDbV;37>GnxHd?TM#)@@Y z$SKHFfX>>Aty`0){EoBzx2@E2CMUgNCxq))oUQbWl`SRPAEZj*dq0;*xLHik9+mmD zHi>b%6r9TX$9r4)#{8!fOPuZ>>uc#9_hUy76gO3Rxs;xw1A0=0kx3mkY?DXdwzJ3H zsIxhS%N>g)gPBH?ukB@5s~;Dp#*Dx9n5)fa%%wrxR&*aeix!&+_@OJACwd%l#mz)S zL~=1|bgn8;G1d)|{jL&RBrl%~x)&RgVrOIEhfE3UX>1;ML9umFsYLK`# zD8uJJ|39|IT-Wzag+fz(TS!1J7O$6S+=ihJ%m6?EOlTnN9j+(*Stpk|c(+n+R9hz7 z@+%^zyu+FPWNk`c#NBm?R{k4n)9}Ax82r{W`i5G!;PyZ3R9~=l1C64dA`HAkeHIG; z#$|q;h0_fdJ6HNfI%yfg)g=VSA6g9_I z#5^iJfC1%aVmSE`hR~2B%b*#SIj9JHH690zK{O`*WRpb*4_T|K1!tksJY>$lFrzp>>wa42 zGf0(MQ>wtNC4gS|#PndDr`=C=mkPdZ+lt^&TVSH+H@)M5z*U<6@i(Rae3cFO56*J`OI!>(mF8Ox+altu}GFy z_M~GFvyLY5$KHJu)33*&oj0K&{Q#;sF^Rv@&M}{@M%tP=Jypd~OJgrk*|l&2_Yox&E#L(YdgV-TRpE z141mg22$SFEiQ5U>BalG^7M5`UE@;t1IH4LbFU7Jy4|A#oOWOo!<7ew%ekL(=1ha| zw?x)*8Ygeam^qA$HD|x^OD@oO?X|fe_e)L*KY{O}N|J87y_=kdZkTqIAOj&aReLTEE!Z(&fA>;MZvUH);I%Pb0Z4?tI70dFy!^sbENZVIZg(AJ+sKL~%a`Mms^C(=lR+M!$+} zUod^dXXJv>t(?vIU}!kgl{Li+vqiS9s)wrz7Q|!@go6Ci_aNw~IwBFLp)52>k=aKQ zd<7v13DDklvlh3zEQ9=?5gqyu9Zz#&^u*XpD8Ll@c z^yVNUc0v?V7YwS0$4VXOksjzMbqpG$imfz;=X%0mcOZ+}U`o>**R<)=oH)mI?l0Fn z8{DRdxfy8`163-P0aU+;mJC{hG5{ZrcB*b*+iq$qSR^Kp;uEwdC$E@7oJi&Ha0oaW z%83!k4EG}bo*7nVqBN?EXrf021B6bf#iHLR<#Hv-Oj~1Pn=sQtTLfD;tvKg)?pFb< za5ijzd@?;1x{+`|i2{GXSLz>qV6z@|AmLr#TJd!5uf>=I6IaW5b3G7B3C6_gbJ3F2jK1 z^$0ogh@HmK?y?SLx;x?S)f57Xa*00kuo+nWxRg-MVR&B^yP&Ip_}46|Sf&_A#j@eh zuw8*cs7$I$=)kTTw^E|w$T>E8f#Hodk}?===G%pDAOGk zBlKQNPiBd7<{$}lC-a1fN^}5tsG@m5@mg~aIcDMrC$V*dh%A+}^QxT^)-NyzdO;`{ zr_k~1} zV~=TK31mP{OP||;!5q*gYL_#*c-V=i8%>>{juxcSLiB1$F&Zs$r(&U;+9~(XtZqON z3c5|w>zAJ;v#IQPE0%Mkb;6l-S`bXCEoHOPf((wz(ri&%VFccj$0oVS^2BgW*vc(QnE{_Cjb|VH*{PiLfX^quk@XIWW6= zX$bS@I6ZGkJ2w)&rCZ4t6*8vbo&lF@py$uM^rLqLk9jFde$!y2$ylHo!Jkc}yoP$m z&`uo%X?*$Qcy!fw{~S-CA#a#W(Ua16>z|wJxd&qoqp9H(x3Hw?q|jsZ-*OXwP>$LI zOvxr!SE7(|ClitBpJ2ykf<5p;uo%J7-dyZ(%snHoqtz(M&cuciH7ZQC`b(~Il(wg% zPp>r;DoNI%z%1e19k<)(9!WL^!mBS<>gD~}sq859s0!_JKV|DWf><^*jzC~N4r4F6 z6h8KTwZ>K3LnlGWz)EsYRDo6LVj3?5%G>8vD;e~P!lioQT1Wt=s~Xygeuea(P@xg@ zv7)J!yRDIaHVSvq)&b5!3kc?(;?Yo}(2iVxNj}^eZocH&A&gH%4cU&@mzmw>nI9gy z|Na1*8&N0z4BUSkrzpgQzIcp#hKn}||C5hrSS+`OT#8<(P<@C;uOU<@A29L1R-0u! zbgEpXvdDE2tz60ZtQg$cY_TBxZ?+1zv<)YR+t`g{38v{$#naR>jO26IFCF)y^Z+9g zv*-5cbe)I)>n3#|6bz`*Zb~Cxa4*f`Ce2OWp!5l9^TJoWlh5 zsY3Ik(kzonmF9v)WdUrl6bqviST_+_R1Xh>>|b@M5S1j6x&o6ovl$VhrK=|!Umf>w#5jY<_-qAY%< z+T>Jn1DlzkRvRwqqr>wj0Y&a?@eqvTyr?V!O?-m*`xlS*y6<|euu=?kC_uub?vuGMZ7aT1Sr!?ysK#5cCd zqX~mC5e1?VMXY^>)Pwy{LmSYqT@umVK#OGJGb+~Ip!-k3$VISg}CwsSl_-tK4@u#cTR_oO^qeJ<5G<{K|N z+ByDxJ@V$Z+q%)fuC%LrpFfYw43|p7b2ldn zY>GcNr+?t{+_8tQSLhTEwVjmm`BEpbTX+CYG)+Ds4J`^G*r;q@BsP8zg^)&=A5CY6 zp2xikm%z~1=*3(+vc>QNK(}fLLIjLgC`k+lJT6XMx)k<-h|v5XAY8lJ7 z4TD}!e_V}LK&d)0=#A!dC8O}kPuy~gH~(1y+VBYgI*Wi$ zJNQhbG+~<1^(Sa}R13w}k|wYu$VYTP?xe^AUud-}6(!`9vlJG%v_kbN$pJ+lXXG0+ zSa0a%%`HU?G^?K(@pvag!4+%kH4>%TtBJ2!5!AXho{1$fY;Gz}KzngIbSmEa72T}Af&$U#>csWu5N5q?{>%qcftKX zQ`+sjciZhs@O2zk@d{}-R0>7f=V1~QiwqYsDr4K@RLcAq5OO+ew5!mW?!TvDfr_Gt zuJfPI`zu+TzI6dZDj7|?iM9Elumi_%(dl- zJ@of>0fLSZrf=!!u;?(Z$forz#z0_90RC|>w~Jn~XQDi`a~Zeoq080gw@ym={i!+x zE!MIXo+%;>d&#DyAkTwEqc31tO$6hB={&9h!!J-AG?YV52CjA<%<#{*B+-F@{;XEA zdR+^?Asi$UbQVzLwd)G>MDH7?lx$^YBI$Sv0!fd-4ph$Lm!#|Ux(4^TQghIb+FinLNi z{)TlY-@t9YzjbfeYz~iMnz1RH*5jS5}6s-D{KvO~XcV=ZM9T)2bMUc@;K)#-ee7mLt3hf%Jk^aAI_V8mnMr_Lx(sjXZCigp$IG145eJ|PgtzQM!>7hKlxl+T=*lWkGD-llSbha7aZcaL-s_y zyAsQ{*NdC z6uhxWftpF@<%Bsy>~O?kqpY!C@)PDawnks93-=V%n1P^b?R0jIN5(t5=WIHZ)$%$_ z)asft>2$`)uI}k88#l!CUM(Sw4m2#~40@;9C0AKB!P%9w68`z;pATnU*@)17aUuHC zpGFJmrs!fyS4bT7|22F5rW6(jI2GybSDnm7n4ft|cgqZo+QODbrHuQ_crF+J%(7&q}hGrdpHIX#tHPO|WLL!s=o3BHK6?B*@-K19dhWmR*Tyh!8Q$yW?z1-*S zqu0L#u`=C9V59J=J`t0qTGDlTv&3JQX-jbU91W8~MiblVZ zkOvxxu#)brpvSp0bv(*%06pN8SM<@uDu=RobUEhKIy&3hPOC?G{U9dRVgw~-Y0&9y zA{%pRFoY~Jk8-AK4I!g3v>DN{CIAVD11`DJ>|HNXPB3>FS#l}UEi2vu3^ENgBYDH!}x$Wvr72AD%cZFRi#Y6YDtzvTUnQ%@j&4n+oLw+ucYA+YMrM`t>jFT8a zy$5b7fpS<98YQ((YDRQNYxTiZFTX~~+77uYN#PoacDafViH<%b0~()v+L&l(*umhX zu;BzwNb!$F`Brv^;qr3nEiL;`iT)sR>i%Y*9z*#uC$9;!# z+{GpP$K|TSt@ViRQ9fRBWi$vF5kAV!oT=bud{w`XJg{p|@{+c6O(L@#eYC(e`S>QOy zK*iOHiT5fJQ5CW(?ky)6gN}xIR`|85M6vEd3kBJ*K@0R9_<#heCY#mMCpVeB5EpRI zm`sM8PujKZmecS2*lihkuP%1W`D+v)D@;@!_^48;L%RBSYK z)eDc+dkn(qJ2?)k^MW>RmKF2#(Ju_>f#h-4=$|I`Z_EHJMwNYG*G;E!h1O)Ub#6y@ z7Am9KduTUS)3alZeswJfqH=Y<$Lh;gIOGY4530 zgV%;mK#jc4<CE8!F`D zm_)=oWvZSzL1VDCG&QwY)17Er*K32;W5z-9hK6N&)YYMXUMkbq^~y0L0NoC1sa!7~ zr>BK)lHazEK$2a|XEUC%o#VD!f&mL>2S(+}WLy(^d>V-*`umCfC#BK!1I}zZS&fkiMXRoSG^&N(~qg7 zN>?GRMpe*Gl$}|!3E}l7+IJ`%3(}?n}>UG|!rJ+_{}+ZI3I^v*=QIrdO}W zOh?}MS#Xf)5PhvfwY!}MchoD~JTFt$Z#}D5xS;mkzKriS@t*G{nLmn;{M~Rk`ExJp z(|QQ38oKVHjPM=ym3oCs*w3@s8SSHMlsa~?ulT*p;p<0uxl-ZNbzORH-b7#RyzaBM z#uZXPPm1^%hp^M}{k|D*Y(I$2Ep9D-Il39&>@fRgUNG4!C?2SMvzl+e;P@7N#Si1Q zng#>g{h2pEOsw^A^6aCdS|3J@^3yjSj04RjVEHTxmAJDR@7_t1HLp3dv@bY3IZVU?N-3Q1KsbaYgBf_~#c zd@ISKJkYWy;0AWW37qFfI0^vBq{vjizZwi%ebV_7g$4SYzM7GRm!e8lP=z3GLK(h8 zg{%grw3o_F`UeQOVr>{Vk*9W(t|6PmNFt0mv~_t++{^vbK{`;3V<;E25{J$s)6YzS z9IvNVE%vHqD%761m#kkIR8uhb95M29q)~fK`2sv}C-yU_?2}Oem8)JycUkfv2&LgiBg`a*afsjkgIH7ijtun>zar3zn#rkpvkRbEd9}@N zzP9HN7#?+qzBzXR=x^dKqibQmiSy0&(jmdIi>W1ctyiWSovYKj6bhAQYIU5RYT7P| zIeXmLJ7Kb$QYl2_DwS*2#7j;m5bjap_ebe!?i${-rZB`UXA@8-@iLo2Cp@^Q*4caLO*YhdqK#d=2u@hXv8g&)|5A&w; zf7ewoyQFOYf=xcpor(&6%oiTK>_AGmi($?Oe;P{yK0p}XIPH|#(Eu;QoSSDTAm!Lv zRN+l-AH5Qac;BT%n1-$J>rQ@Q$g~u)y?x!MdK82zD{!`L2hFn&2$@5Okhsp%NEjZZ- zm)N(gcp^+BPP8_Syvb2+_b5Hs!KLtYb`;I?GI2Zc#qF-{E<0Ks5#u|D114^kHw>pmoNp@eGgp%oyv%eIvVRO;p2#BD`kv#stGB6R!P2 zMT5ZX)>>qx^cc7uwHmD5f#y%fST5twyeWJ3Mcq1N9?;c!{=Ss(IVLdYfCbFlL53MU z)Uf};GF$%2cO5x9V-_yaIZ^DTn>nRR|2C-;?r3L5jp0NMLrogBCpXf9?`+aHwfR(P zU$&(^sZm&BGrHb`!2UQxcGaX8B^M}jb&f5G(e`R2Sxq{u<Q$1e=?WR6JrTm_o70}^61W5@$T zI~j+}GvfPLChETa=+pz5V-<;&Jb*$C#Qnu)2d024IWFGXDJkt*qVcGdb?WJ@1&wiN6;DW#*RJjfLA0LS~U{pk5olYwEtmw=3Nfw74j_{w?UA}#3LM=sY2=`k1z6$I47O$8E>%mc|vYy5` zZSCnWVey7aqPFw|gh9r7VbJOYKrZdTBgK_$|NOUKAc0YqYpe)5sWoUfNPUG}tI-F& zwT-Hdh|)UA-yntkej7w>cFP{m*@@tIG zkhAa%QE0WbtK9@bgY1^xAZj^GCcO@S%Tj2}t}ix6I@_(~E*IHO67~A^zKE}9N$I4< zfk{6chYY~;r@(BR-^Xmgkz_y*kwJ{BYp%ozhJ*$BB63uX+eux{?-y;Xv?iMg8vc%ZI~>TS-@adaz>y6=AI>v#_47HgpV@x=UD- zWR^Ih#YFhLo(s-M$Pq5c6!n|VEDN7wPDB>r0&NIruU27w1YughPA#GV5E+S44gf6k zDXS94xD>m9OkQvh^tepnD9-C~EpK8T(>|uh)fEMF5**0FnxQ1-5hoTCffnam9h{_l z&$tGqx?c6NLmuBbi`A|fINd*JXIdN;SfUn(Wi)Y3ydDCy7o6&eMhE%=b?VE0#TZ|q^$)YUEfnElE>TCQ`5s@0CT#*$j zdJvKQst^7z$))68-t;31q<-`a3$564<7acNdYLF06o$Ks1BpLsA~K=~c_8snQH$CR#oh(ahQ%5U?~6;Yd9Ku?M7m z;Fl?&@lZiE*Q@FTROwUova4iaqOp)=YQ7hF=6FIL|DZ=Iz!$v+<;Ny#9tw#mA$w~} zn!lA)&ut`BmlBU$%9IeSy~+DQ7E)4K3!CLR2pUJ_9+nV-_q-6{bJ#MVD;v;SmCWTJVlcB6v64!_U?9g1&p8i zmfWrspo$A05tn@@>w#)TPlDoY+K@9GdwGG4wu99O#hp3#6*F5$K^?f-yO5?#h! zC6nvm+Qv^WkjJ%wsJwx$!lQjITJx=x2PT)q?jxt>v!%1=ehjU9OQjn;vOg_6 z#R#&~Oqks+Mu{iW`;H9gRZ4|hKXCck8Dw?LnS+;c(%Xxa$tm8>ma297C;Ixw{r>U( zz6n3K3}yh#6kNSIN8j-Xss1BGkldD4K~%T$b&AmXoz1@^y8X8KwDrPE=6oibH<|L; zOrBz>2%3w(Chc5QM2q*l8(U;h5yY7RlOH6`&~on){SU!mj*mGdN2!h5Y=|fH;T0S5 z(7I}=I=Osi(D5Ac(AUX-zkseT7!rzv%QQPtc?f^aQ7Y&4_t7)=iLZguyTDv(w=k#y zxQxd%0-{>6DcR@cE-vjm6)QE+(WMBk+Oj=EJoPMb7p;ag3g*F1sZqy$FSTmghhQE~ zzI%54svygkRp1&3{eZ2n2hBQateYAO3j;bMxF`t1y$Hf}!fGCPA07B1gb)F#YVZv= zj6zJxjh)DDRlNy9%cY|4UrPnp@CdzR8DJCcCF@p( zcnUW~%FxxcDVI<2N*5q8`)EX%;7w{X{4j|o6z0B3eE1U4`X%B`A&tSMTnvzJcu4@u zu;iRJv^1!(gO*`6~KBW8wmzH!IDfX)^p7joPZF+p9 z4})DW3rZbc;-$$PoZ7b}Q)_$w5OrQcx#;@YBL(R?~!nS4_s_~h4kVp zZg2jw^}se1?zxkp>ibwMM&U;;u02YY|0wa-X8NtohQ_>J#b|8I*os!uo4b z8gk0;wi|h?M5@-6HZ-&xo}^!Tl9>NVV$_rG=pWgUrZQ566@Jkh?Kl}!^E=eOnU%9a z8Cm=<(Wm(mc>&Yb&XN&DZb;KxJA6Vf{37Y16vDFaFfQJWb|KL#`sb;$z%8QElFG5b zsjk=_i_IPt^V~ABKFmF+;hC`gIL1mPLbK>}L;tZ*O$1DejdAVGB=k2EH}9vb{rVi@ zR#cK9Y_%CB%H&M11qPPdyY5jaNr|BSyB?-r0vPkhrjD_g(W=B|4-~v2fK%AiwlOUf zrY0J}1T5-%K*=9~^Ch6(4@+mJM90ZLy?k*%OCj4=h}2)9FmBw^g`n0!MGoYNgL<*} zIWJzN$F3v9J^G&OmXgv~a&4Cje;HMR?h7A2Bczv_ZAEM+!InJ=UP5qWvRX>mu1Eq?z9nb=3j znmoSpaK|c>GlgF;7W>K?t`~8 zxTt_qR?*iXhGG?r6s?NhAQ6H5NHO-MnmcF!;;xSlQZ1m2T4I#WW(PlHSDLxxT5W9!D-Bh61HQwBpSp)<&ozH+ZC33An7J&>yk>s5pp#$OC>(1ZdZ76U?N z*6+bifU!l3fv9g>VAh#(6w#52w>V!1d4h9JxPa(LVgQqV8#LYx@qPo~)je z2l9t6>(U`a(dc`wx-hr5W5Dem=(tL_hC)E@be0O;$?|H~9_ys%I?rml;7V*rfIigs zTzaTrHXkd6!=+>2y6UR7NQ3}_P=3P_47kxF@^H^?$kD2mI|X)tFTTCnYlWG zcSYN)Wbkf<2f+V(i5vD(T#Kz?u)R5(kwp{#`67uB_cF28OTQ!%EybZDqHQ1Tjnv@41~Ab#Kzn{B1eCY1%ZJUd-K8VFA%;Ooof+QOz~ zUg~P+6l%Nn*UgRExU#Rewl%+7PB9>bPZ`+Vu zGGIkvzFuDE99x|ekSdp45=+_x@jmcb^4%XnZTBIWvl@-IqP&oH`bgB{L@q;tWaUD{ zW9BQ8uj;+>P#QYboIdZeZVGgj+U|=Eqy-jpFkv%sXEN$M56rFy`(v;J@+(Xd&lLVb zKPAhUEdGhxPi)79qFeX02!EyT$VppvZ;B`|)88czt=pcX0OJ5Xae%IJ+t-EUPE7w6 zkOAh6lvu#K0qZ3<1mB+~Y+eD+EQxkwQBPM*6(y+`*sV&tBg^d~SpC-xmt@<}l#h0( zV^KU@9^U9G6ig%xzR6+1q&2!aJPK?ogr(1AqME~0jeD5B$$EmB*6SNm1|?>VDvb$? z(ctMVaX%&lFC-I5orGP^#dOI8_e1t*tc2bKL>&KKCId!$R=qQ;mj)$NlKU))_p?-z zyTsDgY*3=Dgj1PXJwk~$Fv3vwdp^-321_J~Bq0?C3uWfW7gVfSHA<&3cval`Ba%rJ zaOSH@&Vf^6=5x&+CB}eA>a%Ng8@8+6YPGs|CT09A;|ViknOCK&FkK7g7H zn;$u)Sml-Gfv(Qc)z_3!+35!Fz1F^$LF6Fj;+0E-D)O@CHQki0yNo#_gio1)-C>9m zi?lw6k=Ru9a`J~KO{)TQBJ%M;MLn37$8ulr8CY@)3-;zc(h3Yr#;$R`IOeKz(!$+L zh|UroX4+|z;o#GZm=AGh(R0GRnS)mj@Bl>usQWp$(R4BF9v=&<5o)3OQ4@{o6fWVb z(2FXR%A+3%T}fE{0@t0ArYk!40x8GPTU60(-Q7Zh_c!A3&E#Nirn8{C#^%$JTBrIT zMQr2VF5ym`#P1N3nOoaTEWpy3+FH$O1>O{0eMK_{K45r@3DUwl!Jy>#Q|hXXQFPug z%yTCpaQL4{!@9D_Opt59xD2WecS+M#c$sov9~gd}2%&QODCLI^?@yoZR@tLFZ7l@* zpbxoy)PRyao|mYNr*#zdTA$fBwJfHt)2Mx_(A2QIbO$V^yW2}ZJhCtOOiXhX3F0wO z#k8BQfFw5}KA?nZ#%gL;0&jOIdLI4mY0+Tc1+8p7u6q6Jn|J_UHonw}BG*+79Ty*H zPsV2Gm?B*R$ZNMS?xZ?nYQZO8WC6IYB76AQOEHGv3ESXfm50K#M@C&0zaLKT< z_&(`l%;%WG%)0~Fh5b=60Z_Jzugv$$i6@|wz!$0Dq%{>QkAE2diUHMspnbE;gE<}= zDO6%Mu02ArC(t&naXU%$b{gbE675hL5PP1d!{7xS|ImMTBB<1=@VSlld800cEO72rjyokmMbL9bLTh2H!H)0>o__D&;9sGxB4 zc{-%$DI8sFZErKG5RR%W?LJga7{H!D!0OU3AHyF;dCIA`?fx56FdSiGUt@w*7%6`S zO;>)*BE-H$tS5@ES&k5@tU&$6=%`C=m-9Bq*qB@E0FNh7X!3nn=UFtv{WE95qSh13 ztb^ngBSDt4F)m)9V=HF_42*zSa-Tmi=?f_A_gbT)zmgJ}dq)CG#pzO6BX(a zH=FT!CWk=tFEyVE^(sf%5oI9#6vP^yBAP!Xm-EJJC_cM}w1-@#F|I>0zK9rw)UC?Y z>=BmphC0y|2yeQ4O%nmQO~S7mT*($4FO_>2_ZLSwch>FBZu!I>=w&}R{w3&;7=n)d z$NSmG)rMB`OL9dOdtInAs`l?hx{E2v1%Vm4S0a#D2~a|kkMpL?&JHy?qBwPS)l|1x z_#dW{|3-Qknq4JPQ7Df)Y;BVk%vCU`hDUvoIOdy}0JI0&p@PgOc_fw1ubpfk3i^MNn1TpJE zSDjYGxR_&$w;*0e#U7V&4~+$Zt^w}ykMuf}UbPxJB!eu~v&^5IVl=&+t(N_0?qnrw zqkO<|6r+s|Cs@1Vnr9d4_IWy!`Ah9PGN?r}ltMFf$=-%af`wwds@wT^YTu=UFmVd6 zw*RuT(kAYx)-C57upJT2u}+00mqvH&KRySn+Sb^>qa|0XlIv4Bo7yc&@(!uYWLC+b zPHZx@)r_{oU+V#QX))4F#{*tdg7;+Kho?GR-nTueknm9G^;>t5e__0gOyXs9)x3L4 zz1*eYrHaJ%10BNSI+O5Mg-Yul9B_(zj+}!-Zfs8n>g(w4b!t>{Y-;uP^}5t@Nu5^j z92&A?Nkg4V=NKAt>1^scJ@4x6bzo^AK8d@p$K}ECM3Gc|31Hb2X1}e4l0S6;)5j_p zF5J0)CDx9K5F;8jDkG*_Xb=ds3d)*jR5;GTH2C$?^iH(?@?GceN~R_jd%cS%P7y95 zke8zpE)#bS`MbhJr%XgWV&JduO!yu>)Z21EB7nm&0lRt z!z>s26=yBxw^PbhH+eV(H-&f9*#{OUJmW*dN0QAQTHih9_m6eY^^E%cqdn`n z^H|0HL;X+h0Q<>Z{Jv*K%~#BIriFAm&ApoL#3jjkdi+YHC3*Nu{@K+@d~4HMUvEpf zrPo*avDO4i^j_SEwMdvC)Oy9V@J$4Tov~()YmVL25{)9=?0EMjz^Vh7Y&U^vOec$c zB4St~XjM(ueMkj8GA?kv2dV2F?bR#UH`D7|x z<^=Y&UMQrQd@|*O;PfGi?-KK4= zuW$WaqD8H4Nx%$8n3)*Hh_Gtfy%O?(zvnFhWj{n;vx>6RdQx!g(Gy+G4>ubNthD4o z-t;r_9e%dklC)v=3;N0fJ*@@|Lr0>~72_7ulh3_Qx38Oo7T)OY@``2}{!+d62$^Y& zchefT5nF9DW^;OKWJ3g$wi&7DXCncfZ^Vau1id@esRQRV@miX&Fo~jSt?>==n}kn7 zNMN3SE@Gh+N=_sCVJ^`N6l}i0Tq0XXD@8v@eVE`^V#P36DT?gJbFi{e)GchUBs}4F z*OI>#c@e9^MUVZX1E32CW+vQOZWY;!cun%?#?#aOvEF^XV}Za}@4p9TCr75jN`N*# znX2)Wxwk+vxa7>UvE_4d%|eo)NoJcNn`JJh3mYD-#&<4v_olz%>q)13d@Yz@&%INo zS*PXY`0wps}qVlk; z*p7!W`QBvP7m{tu+mg^iaWLQApk6x=ifjKVFR?EHgqGT`e zKZr$uDVg1B{et*#H84E^ZTl0P^KLhS84UZeHfCzf29#whvE5dE7T$>%ZX=rET&!jx z64ia13HCjyoWyNQ*ij&&1sog!g73MqXRUK!&`o&^huWHRdit$KEI)dh-i}+7j;X!Q zA)nEUzo=5W$w~hiIq8%$f|E`;Ba&>9zH~KZZ7)@wbjFZ!Oas779IuC4Lmp716!2v1 z*b0UkSWDDubqb#vX+|-9TeAtikQy^}BiN*D(AntN(j}`YZ{cBl5xz;m+Fr2s%YcvC z(WQLFqECM0<5}PxvLOj4*0Y<%4n_a+2ob zUOHS9(*xs0HU!0k%!Ry$^uRS_Z_gsCo@LAf6F~>7(wMcIB*%bX8yvBn2TqHHrJTXw zj+p9WL6lAMysl24&O0(Etq9t)_~;r0_^!@YlN==i9!=XuyTTFdC1j?rK7);@D?8M4 zFX0?h17@iWc%{@bg7IGHO5na%0)!%?1T5mJB|$gQmaPT(0*S;rTX#DJrx;UZ>0-fY z2*(gi$uY~PPU;5>N$OIkp0T|Feide*l`lO~Mr}`BV%kFxfkG4CvMI*fxjTU66hFDz zYoQ259}Ta#q*>*$;!w-iFUB{KT6N1l-lLX7#JpHf^&JGh9cXdJ_#<*EMR@>;(Ux3O z@zn5)tV0#(61xsT;96=n4($0OLS73vpf>Hx#{CW5VhWk2cSo|JpecrjTETGeCi|%nz&cI30~uC+Nf^mR$$PhOCDcc9J=FV$2remS60iEO1FCY?fdUug6yd7+V0rPl&Mm&;<-M__lUZ}w{@Wqk2x(s z-3*DiPPixJ@;0IsOyL`BLq8a8Ugs5(zp&T7O&?U)t+6PPpz#8WcUa*g`oYUDqT9I< zb3s@U0;PMad|SJydWQekL^!y(YSy_ch>`yE6mjZP-=u5qHM;)RW2A{6`!!w9O^F2@ zuv)-w2o}Gb9=@Cy@H9G?(~Q`HErK-!i$jW$5of?H7a-xMf5Ok`<-*tKwhUhV3Ds)g zgTU?*VxS~z%aVeudjlCihJz~^3=UQWjT)FAJ%WIWv}~0i~c1*ojbV zQ%n3*ADVYP6tIC9(E+tek^YGu33&CrPRVbGgfyNRur5d#)m}n;cnLAl1|s1GLq_zu zp&-&$BL|p@I&acBD>h|HB+=rq;*>oYPKW7bn293WLcjgHrM;NMBv;grzEWNp(c1i; zUSjj1`dru)T8(HV|`|O57o0WU3e0ap+R8m>2 zJ{IXY*rImfQ{b&yFYDE!GsD97U)=>yk`j>*0DK>*6^vkR<%y05Bx8X}rlF!Wb@Gwp z%LO{0W(M6A=qa#9Kh;>btD_j6UEHtRsm#v5v65KA*d{>wS3H*zpS~pk|&`7d- z$Dk372k7bm3cOrx^fu=}nB zHF;1kYRCwb*X!;3DO`f{&pLDLRFYTq4Yh{V*6vO!wn2a?cIHqL*8`yDWobWPn#$G= z#_Sa~rTpXxttFMp5wcoUT!O+xT#LJtPOx_1=Z_{m_{$>H6P@a{oxMkcu5GDy?HT!e zDon7c$42S;7Oz?w&{3B7Ir`n_fFT*y*vqJyLTE2ho6A07 zl4*25DF0Qcnod^ONQ5FSF30z$_~n09GYsH`4@c4ENBvEa#F7_zvv*{~r}9$sxMygj z+j^8_{wRUFti0g4;Pg}grX9-NQEK;?gmK<%Yi`AEIZTpJy31{O(}VOI57KX3N!tEO zXIF;}tpwCs+vhit3-|NZvrY?BZ@o($*l_0VEKg3`BZS>PLQ3D%b;*Ggh7Z8W3#~n+ zD0s*{;l7vMxDpvt>PC;O-MT5MJN}ni0>eEvoEH9)Ybqf`kb{$A7V87h-6N>SIDkFv z$A==dIHVRD;*qKfI4%nLKZhY<6w%*L%^6C5=0HPZyV9O_p|JqvJArajLW@C@0El!E zD|ZU<)M|aXF|~Ib5IJTk3?9g?6&|Z)EvVZlpQx7fg2a1CQ}5MNNiT{ZRc4AqZmCac zo{^>d#P;mumh!~o+hRjr)EA=JEVOFFNpU?b|I@{nB*^>N_4Gt(Q;fQ@<%;;`j{Ove zyjt2@Q5#g#8*q}^sCJEL4eMA`8+tCrpYOuQZ?AYYWmF&lg_#_p}J zwPVfuBMZ8kVcb3h>ZJ@s74ZaH(~7{_zQr0C&N>y);cm_yzPz3HVEqJ-`4bs|&70*e z8lGJfiL9A@WhwnwI>cQ-dR4e9d(Neug!+1P<;xG}OnZml>%9LkheP>oP>)szQa9)LeR zGaK^4zv+yU`rTPtrI>BrWy)o%1;8{n@Q@YP^8 zkOMZoz)%f!zBeYnjGn%VAShdNyWJHESY;ABC4*Z^-EH2iOTBa_Z+eTg@mu7D|Bf8q z-fb8%O;ApSCXnZ0jtu&DFkLNmr}2S(0U~mgQaE<=sx~IJUE=S=uCRlcuHVlJ5JS z(!EXT0&N+fKq)Qz(z28SEwt=V7-kp-1`0F4V_;a`%)BAuo%7!-TS*Eu@E$bEl`PrL z{r~@4&Ue1^1>$K3I)r1R<@VwELUhly)dsAW$jnuFRoa?At`g0^O*jN(@JzE3FCd4y ze5LNLVso1^wU9X=xF%+$jz*^C$tMk4)WvIhtHbk%uDELf6;1fH>CJha+OZQYhad)p zT3~kf&IG7~P}VIDKf=X8G@;1XdXD~M9e@$+AkaPx_2lEkBYM4f{q&F^rIc9`I=dbL@-V@mDZV>h2SA7p=-r2iP&R)1IbPpcDs0 z1y+Hc*5jt?;^B*MrdU)Hq3($q{Q*J<_S?CIZ^yq@IhR-Gy1?5JfCf-hMY?_A)I#CZ z120D0*NjYx7zN4H1b;jwgIc2bdrZhu&2PuN?-2X%87g{qguT z+V;2#-&-yrfH$%!X`&7J93!*OslY~Mum%eOFRjQ*Cx&ZEUm085g!OWFOjf%lI{15@ z4+eYB_0v83N>+^T)!A}e+q%wz(w!bZeE6Emp$mWjnk@Ftz3roiI&B6~x_Jt|am}g- zJmY>yK&l!6oc>(jxt9_*=p?Or-Aak6R%%g@k-AT>dKGP*q!F~3b&kfPlLNO7Ohls- z1OH~5pRh)^I6UE%s!dz1YQrtMk2iXs3nB9IW|rh1^k=jES7!?D{USR1BhSPH0=n+= zZ`(02G!co6_xF!Q&wcl5tPk$_4++Hy&LpE@wxX<*ZP1G1Blkzp{CwEDP!f{fn=bcc zT)EtU*(IIB0H1$w5A$eQWAjfRG-Iz?b=PvEDU5Ngs!}t?wT&vUeC#=HzFLNY4qQBA zP$KrLnhe5V3p4~97hmL1W4@wN+#qVdva>~4k~ZNzH1q1)%qG*RWaZeL<2Rx+@&nw( z(q**C(&eJk{Lc9=?gNv_6qV0@QK-I7zo6Trqe7VJ!>2wVMPD%GUrKI>}&4o2XuibukVPo zS8b_`Z`@hLo_6n`E!jck%&E%@3^&c@&a2jZo3H+G{_bkZgZZw0C<-^aFjd{4OYPiU zkReyz;Aq~szRB!12l8HI+4$D^1KsGuvq>*UW)`y~Yf09D0~r$(~eZ*+G!PkU^Mgh z+|GYLyA)6DIQlyfT;Xw1%t8Fp)t*}+xO&w11#~zei@|CRDsE4Vj0OUuBNaXtlAGpd zHl+36rZM;g@8u_W^=)1AhBfn>k{Rs!uMM29kz0lSgO{9%=V)obc(W^8f+K^}#bEXg zOEV`cd;EjFy#s!Ke;>wtBbaUm_VfiLgf0wm+5spOebtf(C)oU=5eNSI=uZ#^H1+^) zm7XBzG5gtg%$|pdY0_Q3YiViMA|D9bMIniy#(te>&ANl(${lon2YGc6?$0Hvl~y+> zYtp5Qm9DM|AMV9WGobE$I}@M_fPWJ)?o^R>DxW7d_R1YCN3R^oa z8FAp81|4HJbtE@z%R^hpXm$)=)`o1%2IGT42c8<)%VlyMv0-_Hv6U6NgbhKw` z%ml;>`*{2Jv3!E9g$?E^qI~j_3i*{f0{A!UboriBZ2fQ80-6jImlt+*+CIP!NpqX0 z4LSpcZDrR!xV?aYuvplhZ&j35=?AgNfq{uwY+_(wGIsRKSdbqMsDeXS5JJ{0uPm2} zQ6LBmmQ|Z>^&ofzW({6Gx@sMeKcDRANpHOS!Xm~}$PK3S?km>vv!hG7-cq#O@7L{c zw`3qP>n>z7E#y2PfeH7zMFhf{aFi6P?%3FWvPF#+SN9KI4dT6V=_mkz=Dd!>u)E+~V3 zuypYaBT!f~Mx3XAcGmkHj6cWVbMbg|vlt6v@0!S357Ri^si&QiBwemt0d5$d97T;w zkqa#zgWi!zWv#9Ax>BBtlNW0P*2y0Vi_=j|t8)Ym!Rd7=nwL?6;G?`s&yA9w1<8Zl zc@tIC#&qGSN@X$}o~%@+!Ua-1F?Y7IVSx54+eT9sZ1IIg`@tz=^P|N-x8cCZSeRQ@-LKIT)jOzF69q|vRR~%dE}02_nAoef{MJP=C<6 z>B=gK4%ui!5))_b-NVuy!!UK#3x~VL+z4BAa;}g%p|5yfCdwb zw<}U@mt7BqlG63bP$*fwIvK*Munp%hVx+cJ=b#n+cHwtv+HuqWY)d&I+mo&Y)kU5n zM-aiRng(O3$w|Y)3(PnGxip^+atR~jjV7zHyYjO_2YD1mbJJMaZ47{bW%MV%x?=&e zP)j?G{t-3LN`3dvm0YGPxko`vc0;4KrPU3(c+eu;%i6AiU~r&IWhoaUks|)gpj5 zkvzc#tKlQ<%t`M1V{g2+zF?o%brjVRd{ujf(}$nL0pqo0(Vewvu6J&}uRJ^3R=%&$ z9=7U3a@b@q%=8{by*`A(oYp_pivB5XLQ!?z#j9PeB3ukq6M&k-!T%GCo#b{Fi;58* zM3)Nl3YwO{t0MA6FNmu|i9KJNy zUt1&QKcSJu8ZY+H|xRbe0lh?ybYDZfGvK?={wmPEL8%gB4v>AsG(cWHC8|slD07 zj<~NaTs&(SJZL0&qvy7^oIS?*Qf7H%Uw%WW-LPTS8lG?{!TtuaBTZ&s8&`(waSd1#&$|N}QiJ6u?x83uVjW)eeEZU_7ZPB)$zT>z> zo5P86;}>8HBSJTnXr-f{OmtQsi3}w(O$TvMQbL=4M;Mbec0pg4)6Qv)=(0NSzQp+h(ZQvsv%S05Sa)3T>=%}D2Od7pJD+M(Z+ zM^?u|L%ngG;_8Ykr9zK+p$}bhzz|wSy`D-7TTrb%3+9eOt4DcNRziayF#sen2S8%5 z-%N{lGl8ES{BAplr-Bd$T9FG?+C@Tn!xNDsJUjezBr-8vy`{C>(1>36U{1OOG3uVX z`YaJ<*u?{t;r&IM-fD?jy6-&=acng$D`u7y`VX>DOZ^(mh8C@THGKuUGAKY*$k*s> z9`!ukC+LQeb8LAR=VVop8tFVARLQ^fGmgJZeiH z=F+K&AY1y>L=d+_@aRtCjXBNTj@t%{0vsBw;k)^or1**%yAC;lOYg|G_`bv!t2RD< z0lA0w+v552PQT9F5OX3+i`iV!kVWU*h+Y2!p=ybqGBh`#kB|6i4b{N@XEP+|9TsqC zDuN;m;*&!ee)Nf1r&Fg3I9I>p&4YYJx0(fkrcH)M>q`wfVw)0xx)?%&QT-Q_9cW{L+G8l{xwQ+ zufvaU0Yv6kqgK5}yrvyJ*tX+wMdm|60p@~}xl99By$~JIzmirJrL%@NX>X%|0G2}p zz~|6ypW`YZ1rbpcXqVELREVXy$^JFs)nB9K+QU$2Ps4EaCv8wLr)tL{tkU4FW8$jKzCOZTy!$?=49v)GJw^v3 z{iqU|O84Ok3Fxr>~2}htS_fGSJvvZ|sxp2EEsr+uC|`FC2Up;9GWk z+!i#V29?^8as;tJapW*}BZo<#y=~vJ_739TV;TpElhAXVw2lKj=kofAl!W8gFd|ID zBz3n>Ej3TBxA^@Sg(CUo?5HZ z3T9Q;>80fi$JzT6X0E~dn-Kce${ICmlr8Cb0ytWYO*#ml#mGVFx3Z^rUUhSygWZD8(*Awhlb#PrbJdT$ z;r!M%rTP)2of17#Y5P2cQk-(g;A$TnY2+PR!uZZ39(aU}yj2_3M?kfnBmLviCEmIG z#%Z7E7BqUw<1?x1ADkZDo45TM6Nhy=OdH0wBdWwY8D&H+SgsqKn26Pff`Tx8;tBst zCZv7~ihIX&D?qA=?y=F?#(AFOc?5mRD=3^RyLhH{HLkAWh3I5WfxN3T=eUE0;SL`7 zoxIxVYVY*mY>FH?K^hLh$eY`>M!(0$;rbxA~rxH$M~=OMpL#0U?39MS506esh zgV=P3SG{@FQ!4aua&Rep9=4la^|Y@I*8Lfx!wRgb#`7whb;VVR+-=!;){;2(7MHHP zW!#A&mNwVejTg66Kf=nHbb;EjD5_}B7B9JB7!D59ozYvaD0%LcL+C1&r#7}2@8`aK zfSb9ovo8?JG)2r{LBx#Kk)es+a7)~FPW1tn%1rje<_$6Mg+YvuZrF5rXfg_$446X! zVh$FYxnVIh9b>h!!5*0lLG{cW1o`qmvx_qkqZtsZsbONai6F!{`{&02vAUD9V*+9| z8^hDVKWM%P^QO>ytOd6pB-igEVF@5UKqv8UW zKyECi3^MB1^5hz9UcVMZ3F{?x@oo`I!MLd6P%CvJX5v2cYgi<)dxQl#bp3=JHk$0t zk*m+kSN~3|=Ph!hf)X$Ag|_6}Cl4eYM!R#zM<%Mzh_61>aiEEFv4Zx*wiZucpT}i% zRnr`&CH*F!mQ&MXHZSG^f3%P_$D)-mM{G;>z)-+#_5D(j1b4jp_QJudE0BdUhUM`a zFKXr7o*$*xPK2Q9`^kOo(codZKNTtS^Wl*}p zZaF{`cfd*bRRSN=;w}I}`g}*X56boJJw9JgM|^eVp4NEJX?d32EL$Y=Lk#)(XX!07 zeouU+a!+M-JPBj>Pt3j$lOTm&*t{fW4Au2>&U*Wx#4mbuJiQU*(8>;PTj7pEo5v&m z@?wf?3R;PG;{HaFjqOHD?D^U-3yrQ)f0zEcFr^-7g<}xNgz9KhSpgHVJ65gL=?+dV zrBX|1vV;}#P4RlF8pEAjW*>L8XY7Z0{|@tR>|+!OYK0J;05`u4n8bzNy94FxJe}ph z-Cw!e3tagtc;4x0LAgk3N5Sa3v?Slfv+CDbK2jqUHG{P_B7;q+eNOaTq9=CIKa7M- zbn4JyAX3@(tD96H@1~)D1e|x?d3YvB^G~8!&yic`dJ?-%GYbfjgZy`Ea6tx9v%u*7 zB!k{xGwIn{aQ;`;Om&c4jE}^So;w?YZK1~-N4q%0M{ij@3P0MkeS4h5dK>1XpOyi! z{%ZQ?x3nxZIncNeviD7RszB=~hbt=l4c+9}^X5|^2poHCeQ@kWoCr_tX%C79?oMx$ z6QVNcX$UzVGGF%0y`wf0sI#{9KUW#|=0M15v^v0Ev^E4V>Y=xSrSyC<)EVSp7o$0! zuOjx+VPU>Ie6a{2HTHdgjzDGK)2E*j5Fw<>zK;uGdL0^+-wSiT8j5|YmNoJj7z)_y zV=~;DrC9EXU%Alu-^*)N`AZ>C-S*a9EPK|rv|G>>Z?rVe^t(`$0bU-;N(Z@}s((;9 zgc_5uiYa}}Tg5**2=OJyVQ%NcytnGcCIf&{!yv%<6tt@9&RRbLT@c*M(v{bAJHbNs zJJ&5SN4bX&L~=Y|l|3T+IbY=^)-VR#x##&iJkL9a);%C=qHlpcB%`7+K83i4(zSDl zdXB7m8*l<_-;_dkhFs3l!Rej*WGN2na0uq3c_qU#d>XswE7WX!K>8i@SB z#}0BeaUB%+kZx^hZyCePP5wgW=mV@*^A7^qEF9-Iu%IExtDJ%=+J4n45fkGAk^%#R zuC3fjE>hj5CzZTM{i7wG(iyzrmo-iewG2(g&gGM%BkEokP(ZMq?vS_l7V_iHVm0_I z7wHzF0~6S!6#E7Lmm5qE<}!Sb?)36VI6P85`WEi-B5cF=2hI~aoYD^{@(LE>ijcvQ zkJz!`2C1!R%D(6OpC354Gnwp!sZPL3di4loe;f?_I@r-QNK;x3HJ#zM@JN5_SqDl<^qsqXd7lpS z5l}IKk8PgOhr7dpykb=>7!qvv8+@&9YZwezlWa-u*wGX>>RhtFH)aL-qkF&<0-GqL z$~YR#v5~U-28M|@&<<$5ZAAnk&@WI6!D|3BT`pPPwy9icG?|ou!x90aXs{UXtp4V= z`yBx@;{UfuxBk>%H5|RqXf_0kUJUy+SnTZ=cZbkg3qsZOx+u=fEb0JFSa}$ix3T}f}aB}dfD&nWxHnTC6 z+BhRYWCS(87t}JkguW!~{V~8`BU&BU-`hL!2EW`H0`fR%-X0rG<1fa|x#4u)atlVNZ_#AL8Mu&MJpOP(pr?+n~WRdcaewY5U zGSkRIqZC`Jwn9n7jd|So9}iHQLI`iN+#>FLz3`@BfC)fSt+zah8933kn{uOU@|z=V>iQ`=j|&H%4t?m>$X@J_FOU0K;K z0Rvv&3CEya&y6X{W!*hqZ%_ASAHDR_E=VtT9|Y;#omar^2bI~AgY@2$XzcW4-H=&9 zaPH3e%t1=qWal5~6KFEDkao2S`cOn*Iy)JY?iBVN+RmUBweH#&CoR-$?tNgs`i}rc zk6?~nYpd()Uw7fJqB91ivv7aF3jd47#on;ZZ#Da^!M?EFV8Yro^o6xX&ZqT90RJzt z%!nlr?Lsv9Y7|aP==hh^Vj}#48l|dlCUSP-OUrAjo{f`VQ%{f^n4vqAW524=3*P!=(6gqV5(naEq`X(ElSM+F4<2gcAs?{YJErj_K z;Y#^Y-q$1PoKw0WFwp%d!`maxDTlO~uUFsWNHyQj*Brkh$(olVp`vTL)?BHDY_qtUCSwWGvSHw_kb|&F;2>V_z)PuEM|N8Dw zy(L;f&5#;=YC0(jsUkO=PJ z^RV?)E&yGZJ4^&D*r?*7X2~@ZA?mau^870UnYueJG{j&%SkBePCy3#uKYD^U3`wvgqndE4TyQc5VYZFz`GcM-9^yzd|sXJ?qr6-#`lf|z8A zI;_pxR>Y)=Ji|fB#1Q^R3~#tpKVl7{`hWP9R#=Yjs(oAH#$zuE{hwMxpDQe^@IHpZy#5+#XHq@`f!*&d`G|RJ#uH612VrUdL?P1wn$Tduc(5G#* z*nux*0+Ak{9!R;Tb;s}Qp3bqc&YrQj4m{6vxFL}UDM$ayt~3m41UP?tF>Sk&fzOp9 zbtD{iinGuH?J)#CW>?Om41vc9q00Qe&CX^NmK+Xf6`Bpw&H2uh+Xgrj!B@}-Wg%Bn zzIvNgF=tyPhwu`=yX=wu{V3UgveMR8sjeICVB`~sOHU{K{>0HKhg%PB+_whKM=C3P z@A^|f_9Y(n0v*l^oE*Q?*H`vf{T8#%;_Zz>X48emDkCBLgnk%8K<837LEO;StbeG> zumU3|?=N@u0hex&qh?!ikvfa3TDHtZ zuw8&Fd&)z@VVdc+tO|e>ZFfh82D?4#SlsaJ=E5K0Nx#IO?$havXd2-;uKu^dW|SuA z2+rbpJ7U2kgh&K!BO$+|p}zw{5A+ePJm{)sI|$dFV$M~LVGL3s?Q|H-@$R7zVxAC| z>#N}OOn~}+7?pO=-^G$GTdw7tYx%C@m>^G3<4gb*c*-{)dvRPM@t1ro&e3urp@C{r z7ve5JY)VRcr>wN`PPfIThMpaojCIl2bhT9k^H6T`?_~(Gks0S!<@-23Du35#_O-Tv zzsm)^l*y$?eHUF&c?W;jjH-IZqey?;s}!#K(t_Di=f|Gf>W#dzW8{pSkD8?Z$eVC)QB(U0-1ALEK{@RuPF z=7*p6bVsTkvP)-rCDklfzboaWWaleV4r>v`Ac3#Ki-cBf0;;)_LmO$Z=t=OPrM|Ug zsA)(3=?s_Uti`84! zbR4?c&6NND&<4T=SJ9mPJZ+cIF6UlP$=kM3x1AEYBKVP>p$a}N2n_OTW)kJ(mRu&QHwR& z&|;ADR2NWZ9oNv?ASdPbyl=Qw*?3>O8@0dH&wqOniAXkM?x3# zeqKfccp0xQMoj+YkzQTQg^^I!aQMZhw6kha(b{hhY7It$W}NWyE-z2(rRc$Ow-#XZ zwPF;39}v|$P~zVM4W_$ag9lk>JL_+7mH_#QxwzUKA=r3Y4sRA%PHh8xfrdF>9c{@vET;dX1_ z!9!@`v|6VQrroVAux4mzl$bmRFp&Ub&0du~y=&H#2PRy8NpXT=pUXu&pNKe&zQnjU z1Uk%m*uQ`6LsL1TE{!0jAXIpkk;bzK6%=WYzcZ-ozxT0OhsZurysE1(dElEiCU`Ul) z`po)GY47-`tto}F5Y@=PhE%4q>Ix9Yj;wm;s*kG&0XI-BXyew^DsQNZVmSn&h~K-$ zz$0u@I}(3WUj)B>k|8SCEm$uyn49pdo^jNP1Rr{nLRtXpjZL7vqI)}yW47osd~NR< zFunBSJOa~b)6^wqhW8K6#3ghJZKS#0jCgMgFSeUfQ&r4)2n|L+ID*10!$3$Vj^gOIs1|79|54n7BSKa z2(jJ$9R1^S^psGRL(Na?vk(y4KXlzWSJ;#vC`eOnThrxqbGfjk`ZBC&qz}Ic{t5n} zkPW{xUWxVvEe#Nf2@FE#8)lGVM$bU=K}{FPgjJ8-vPPOIOH>RRX|Q%&67f`R$rkU# zqVQz_jMj2Cldp!Io%F82_sZZ$5CYPDA*J)U3N2{*hXhxmZLK*q+{Wsb&RXbAx~>lO zw?Up5P*t%f6qy`qIpg#^<|yf9=jdBzPTad>4;AA(?>y8?er(9rzW1PTYATu%tp6@2^z8-&^a2c#z4MVNZU1y#71YP&M0*E2cWzpeT&23&1#Mf zln%{rBt^q>Letpp-iB%<=H@|D!pd10a{_i~MVs&^ktqzKe0wFEx<%l*k}JHv$OiYc z#u87W>ZM|4_$I>gs-Y>VWl5DOPOJ@9mKIb^mb+G7z@l^ANl0nE^rlHnJ%@D9#No?Y ztDmPGlXj9LEA157)62z6ZyC2^woBAGam%Hx-s*X>cWk|MlOvUmTTBrdGBXa0#aOp~ zjHe{ib@Z2A8PAhQIxJDvHEmJ1BZf)NhA%^2#uRL@LNWmQ+HPQ!mPNR;f!+fe>*e7K_C^&eSB`!#n?-NBH>2TSW|h zCm-MUR=)Dqf9K=TjU?3y?k0vm0YkC_GkGe`bg~nGHcfOd?Y3BQ8`m{PP*LB! zyJ)9gmA$ZQQ@kM%o8OSLg_DfM-j18@Il`;u3-MABd*Z9q`@->t)5BD#gbnu2Eyxw0 zW8eKw^a6-&k6!Qo#_DE>jT%tiNuPFRF|W&Jcc0n}d03qM%xQbG@kGlRyR%lL0Syp4 z_!5G+ICALAK#|oZaw1$??x3&PBt#UV9U=?dlOk=1@aeu(g9i7b57N_OF6djj$yS0aM?pVO>Z|^k z+NDu*fTm1^F?jni>BO#V<<(XYNhqPtKFR{v&0S;Nv7}8k zA3GM^OxE^(9Z~aGJcHyy5;bXyQbwL8V*kCk5RJsw93EB?iIzQkwze4_qMqW zl#4KiW;PIe&^hk9E1t{8@tDuWzpxiZq6iQBX}u4S@fph3$ zqp?1XF;Hx5q}RvUyg-Q7?Pw=QMEa0Nev}}?H8q=Z4Pk~ynZ3OB>jE2i0#dxjWlz7T zDm&XZHqY+?)6n2^Ub3Zs6aI-*S4p4JKXi)jYMQOPnB3pRtDl*5WcVxH0}Ws>;aAIV z4aGL)SmoE*U;xk@0Fo#8&lzNupF#DJ(|^xL`oeHXV48G^n#Hc!eJ#Gh3Hn><_ch{p z9RdFg4E`QpFnhhmU-QoDJd}U_kr7$S_>Q^cnqji=k8QVGVMVAK-k_hLWlK0&a@)>2 zv(VMd{_zO3J;9V<`>*h5$-Xr|k@FIR9$x;=xL%%F&5p48t1Y_lKt^J#HEHC&@k z%0t)N-Gxann#;tU7O0pS=>QkO9fqZ^&0N#oCxVne|Dh9H?uzj`_86)3&APLxgH(gW zdO+5hUI{S(!j@Ci3RkX*{xpl@JJu9<8| zY|QdndwV>x^7hZOAgOUY{VcWB3i}TCsdUYd6{m&>3;XEsc27dg0I-QY8j<2{r{~ZU zhw@Bf)3&tk(bAa!67bX-U)t0xTe*^5Ge_S$-o5gXSZPm2eNW?tt?9ojosma*-V(ON z7dNHrKcT>n|9J2sBBib{NobFY4ACE7Y+v|Kq06;vGd?!BAiB9r*m zEujz^9xIZ{2JXiqy4%j#n}#?JrX{4e?{4K(NgT+37`lj43Q){TKpiyMz|?;EbM77f;XyH- zSh7(a6uP-MfDx?Di%@WBU-gDn@7MCX<+E0g!z{ZV&A<^hIr$rpMFw&y((JT2v?|>q zTMKtJ{}c=a@v{XSQ#32$`S6irft_TKD&-Lb0?#>o$eM^?JT4#<$P}BGMvoXS`N8h;J1CR zE#Snt2>4ApUx&?U@_daO;HSB)HR0*^yB#7pxyGJb+K7d?GSm@NUCHc+$;tDqo^oP* zvR9rMV?fcdvsjH_S_crhfeX~+1kfgWnV@XJ^Mw7yk+n*Xzue_wU~KjDM5}1EGPs?x z608h#wlW-1;xZ=FxxFU6Gh=ah8P(+a8svg27-sC!)-}JS83!-{!0klM_5zMVa<9+|SXT$CqM$k_d&p{s^*jL}|t@qT_e zQE7DA!cmNYb)xd@&pR!RzRD8ft~w}G8ft~yx`jKg97QAzUsW}e(2R!Di!*pKW)o)+8%5QwhB0=$eox%X>;hMSJ89EW!i|4;zB6t%<;+Gz#?3hf@!*r>UWgt@0S;Xpg<{O zTXA^1>F{<#Gz*$#j8|N(e)knfF%y+er#@f@;}+5-lF-$!p4!r7Zjc5qPxZy$e@UdA z;kXQ$t8ro1Ktsbo*M(f84~)V2IlPiB6nYB5zMBf3KUI}XIFW?>6QS&*EdV~TUTB!9 z2`U(DpycS%aDjz$4|M{>)%)y?74)qDzn`)hp1ZJ=c>eiB3AU9g*B?bejDsNFRo@;> zc#HHg#PUJh#9HWhg11v|E#98@qi?zpW9^_`7#>MCbVBD6)*B*3Uc0}H&RLjJ&z(%;?&OsvU`=dl@@8Dk>x=kp zz*D;D-Qc;%($@zr$f~%fm}G6IW&J$Q>F0U1-7hAS5quz_7j1irN~dlj(eQyDkj3xb zQ+=o1Z-Fu;rg>sgf-i|I{hNd6YiH7DjW2FpuMSySZtPWd2yt_DCIXVa)c`$Q>F#)M zxI3NhhCvKrLB4|p>0UJng4aEits&`FT@u`G1`w>@tn7caSYWPS6O?|K(y&uo~GwkQAN{i7QdbB?kX&vgh zVhoMG1hB8`AHMUs+0D((n`h@Xr&61%P6%X9#cJ&{omt0n`;6xjF4-lnA_OuiJ&y#z zBRyOm2m}Vo;&HsQ+353&a?k&p59ef_R3IJ>NRr zx~9@H9W{iZKwyq7bdxMj-Y{*W*VCJ!e-$2!N|EjmI`WS*yZTXP!WnV{NBG!%P z&Q}*E)|pPR&~?kNZU}4)F0sfJ#csj=sPm!X9E)#iLirs_hyTPzBIs(W)BLD0`+hEL zsO^qDfrS0&H|WFv{i8fNA7z!{2`)*L?ajcOu*(WGHOLwi#bX)Gvc1 z1`#y7-HJ%n?i*{2b@_JzuJvShcX1%QWXmkhMFh3|E3|wng+*%K0rIv5TOz(Dj^0Te zIa{h3T_PY@+vMhE^c4;RyRkPI*IZS(cMFsCbLq5H5pc#C=T>fAi(lBe_Hc!n!%h2g z+uFb)0l0JJp6)Hpk+`KXZUIf);I#+(f-U-V^QMkBYz3s>eP)3?#IQNGZeufD>~{XU zx6|>Ob&baMnepVR*VFlponmAQ2C!&Y8nZyIJ;2*2pjnooMKk; z1(12w;StEP8Enp>n=Wsus$!iNajl^*36EF(aO=g_4+DoXh0zy%d7I~FvgePh_?6WI zYdiVAtN7%q$GArx^Bg?~jTrDheW$lLno@GQ2y!RTsnr){O_(8MFnRrRr8a|i@cq(d zSGE@u)t?1(ZbfO@>kZ1O=FJ}Y*SW zVs?q%xYb=GrPcyq1nHq7eU7uPJg%;!0EHz?w)4nmj#hsyd;CQ|YO?^>(o53;r13~b zq6LqbwJ_7X7I@LSqvareI3#zoXP;Muimx%?=pRG&=+Q@z zisI)xnD{q91mk(ZC>P~{zn)Lt`{ictJF=vFSbua+6ZX$v8-MlO;43v4pGt2ZeZRyb;fBj-c6&E2DV{i-@q1FtlK;U=bPL zyPxM#dY%qwUP#yr%{;15j>`(lr_^1F%w4*}*WpEeffBx)$vCCAGH9s|AAI=CRB1x@ z6Ml=M$y7tU10b9^GTkr5Fp3HTW8AO-$VIUWJ+{#Apj)N@)MK?GWN%t%wCZDKo5Kfv z1Uoc)%yxu*K_S``Lv+JAp#7^ZLf;be_2tE@1st_ST(M~ZKsCY@!3FVM3Z;7aH`m@I zmQVkuFSx52H)`bRnth|zcftUM6)qq zOKjh}69wivu}e2~6J5-HbT+ospp{NHhDP%6)an@G8)HyzoShEYEH;zPp5L3Z2XF}N z`Tdy)%w!`Lt=1w4A|X5s?mg3k8sPCawg}ee3n$pe<2>9-1zQV9|8jGn#!5;+Uss)hCYEQKVudh5X*u>Arzd8_jDsGV6 zuG4PqR+^M@Ap8!(R$udFQ0)3aSDJy|*wU|jfKPtCG^PN>&2&}&6GCHQr*tvjd2gT; z9=@~}(;89NAG&pF^gS;_bm!6=N0T;`t^2RNytVo^hZEe(Ygtc~uH$v}?WN1EA9Og3 z#*lOD=F8eV`i}gI=1jSvQ%dO~a7u=70~%=^l{A>1N~p`L(=}#t(1Vk+;{)?NQ}YAk zSrkv@T&B@Q6*L7r&_p?)GFMEsBLooD(?3c2h6|#XkiT@n z)+R^Ge7h3~<hrmj+I+MUB>qGMiDc@sVo+MC7@#qVrg0}o zf-Zw(aZ3Niqf&iYXTsFL=2Iujc5A$6(+ESt@u@h(XwnBJvL1s`cfEo!tP(2>S)cMC z^fCcvPo5rsh#!C2VmIh~vcsh_*i4e2FMTj`-h>@Gwo&`~i}M3b7k1hd#U`!dm)JD- zuL3m|4gCNulX}LG+Bi>KEg)u83_3esHM=b_f6rv^WLoq;!gJ-ruxRRT4x%F$ zI*=zBORlV$)+onAn87Jj$-lL;Uh|3gDppc+T3S1uYB`gCx`L}2OpI#|BkaeD0%j)O zueGeh$?W3426%rf6n%*@lkxO!ka285dFX+MMw~uG`%X_wgR8m8_8EFZwaMTQwp7|x zxuHu*I@vGl3HF2BU_SaOzC)5e%|P?h?9BKgqslKrI$d!Plm_6haxvAq50qi-HNYPh zaXpx}ZlBL=^FW#z6P%^bBXL)t^B~(Xs-9DJbyDM&EipPr{)uhc7}s0SG4Hkp%r0MK zc5S00SUrQ-!21}np2xF#9^+Izg>^L|Lwmpe0Wb)&5W%|`od|DIvu)wonDAgi0`;E`Usv0srEZ^sK827+MQ|zJJ2V-MP7WP?ytfUN0d$$_y)oTZLjyMVexRE&k?!F{E zoqCqE&*O~Y119YoWO2wqE)r*P#r4vL25C#VC624kuKd{L5r!)lzm=8J6^AF{HiN@C ze9fU^_3zmDAiWVoFXfF>jorSY&E>NFccGw<#!{=dq3sn?1RcAJ^Lq?>>2@|&R^M8@ z=-MGCWXT#QZoM3R#UE;aS}N`2Gmk4{ZJ@-V?x zyWG0e9PUInyUFOY^^ZEkcEu9=89#&{X^1)^&aOPz+CZO!<=A@37w-!?^v-`Dl2S_C ziMQU6-2|$1YW0xM7Iyj#N_jYnUP~9Magtph%7q4+TsFJ2sV5SRe6%B} zE4t8#86Ad`^gALp-|$Q`1aowU^&!-tOkuCLJ?6v*o7)sQXiu3Xk39@#R3wzHzGT3G z4;Y*&pAvHzJvOV!*qF5ipn|6TBuCJmY(!H&a6%>HElal|oG`gss$XDNYoH63xdTYd z#{r5DqP(v*>Z=oIXbwsOj71>I z{{Wa`uj2I|4?;Bxh6Nn#1+*T}UaruF-0NX4h2jCsrRwkEu6(AgEt7Y>m`DA{mCIH! zwTr$E2j>?UvOurr1<=TQ{W;ug&f&Uf)lFJ{_Wz`Mqv3@_eN`jJI}5LLLK3FuTGU(^ zrTpH!v@?_0xwM{-N69(?lS>`d(E;uB6={i0-0zzNlZ(Sr6pZQ+B-R%M^6(R!1Laq| ztG{}Qcl9SjW1-O4(BOC|G+u6;oq$v6_tKP4>-8wB)faNN~F94i7WOaA^| z&U!#8z=!k~g7=cp9|n;~R_^5Xy_0wMem+#MR60tSt>$SfwRI3DOaLc*0X%~-Osx5^ z=8Kk7BZSOYRrrZx$|}on`?6tJzBp;hL0x`aiw^Z_bV!d>sp}?L2?{mbO7|9kqPYJE z#0*DlK|2C@yV>kXCv4zz*&PN5bzM&I^s{`+XMf3U{7a=eO0;WPTACpu1A`k_)Y7PT z_0w&1?*c$?3(467htA3{Ms&-rW}mGw8MOdbz&u`iI_n;~vfZ6PdITDYHPF`=uo$*@ zAWDR7d~Kk`3wRhd!RLV0T=uN@diFTk5VTOQH^ei3>!F?@mP`w7J0cl z3sEB$SvLtO7iZiJ4O5$5l3j2&l3wyxAccuv3;;}MZobjzFhErgN(Bg3f|b!I)Ev}~ z^B3VYF2pS4`&T`&>Qg5b(<7&1G7Eqk~6%f^27L?`wO3e zpnKg~V*`k)4WUf@9BsMl`i8VueghnNrI?NJ+_y1AyN%oY0Iv?X+ZsOZgtk-=>}8|X zZ6aA5fjCP!lwGKFtOk>1kKU^U1# zIbg6i1d%>$0Gj#zAyt}?)ATUm8{W?0{uKAar&!Ec>l=t9N265e3&^3e0Q5)C%!hg- zXh{PE86ODsj43*&L-y&Sb9P8SjCaalaJT@MQ)IGBR$gu1-s?%a;wgt)n!wHrj;@{z zlPDc@hNsqy2OZ{iqs0-P7z@}znKIdf6XOkzVBBDnBU9r+#3RrK3r$XhWIqgW0MY78 zsMwy0=;Fw#zk7{+@+ZwF_CozGfr&7i1SBcoX(o8uhQStS()NTX@YH|D6HHA_t%WVo zdN!S#{7e@`$&UN)n|5~Jil!F~4{K?*UCJO7;sY3V%4lIxZuYeG*${=<-I77JwhXsg z0&hI1_THY|6dduJ6{}9KQ;CAmCvfXFI@Ct#rGYg*q*ux&+LKK?`M6WLd515Tc;4nV z7`=&Z5LbMa4G406(N6^+_(N2G;13x*JWFqYMqIo5Oix>I$Ez1QT;Lcx+P4+hh5PCS zpb3M;JMqq4zIL}KrAP)H@OHCRK|N^NAvjDv+KLxuI={nB{2ly@lq#C~@rXG=(%F(R zoZpq2PN#kG!I-NJmYpq_U&ATC9C-$_4DB@HIA*nz$whe0OU)PJX!7_WXW+?x?aP%l z7N?(f0sjS67)JOGwE%w%p#7(vE>p^SpMc*Gwn2PD^?OS9xFAb!b57nr5%#_W@K}=N z&tbaU8*!5)r{h+v-JAHTQ+_~)DjFg^om5p{_#?jd&o~u0KHo>j?(d0vJLO+lJhsMi zfFoQbOW%~gJ){IIR=*h&8ep(30b5|U80`w)TK%NM9R`^YHAT+*fU8$MhZ|xpDu)gE zsMgn8@PR?*#50}Q;Nc3&}IlUzVe z!ME8`a=H~~>qfMS!wo2s2Xg`W5u2h@LahP6`e}c%KO8KDSPcwX2fOmaL8rm%?}hg> zV9G&wFj%%_!{fzm93Jv5ZL9%%!@+>FG4@?fX_eX9EH9PCK?MExa@J;o%qk%Lj6+PJ z6#>~(`o|HFwPC{DwXg`HVN`^qj90br6wwlzJ=LhHR`C#_6)N)Lgs(&ue~I39>{eKb zLY9jg$NC8A%>-nmtza$f6@kGcErZqf^XeNcp^k4~y?Xo6|ILuC9wb@`*|f-5jR3%5 zBS_>#Ugj?59mbHTXtcB{rr`gQ14bE`<-7NUtQJ2G|)`b=}D zY-qG0BwDi(V{7p}@_d}f#n;)+2&{los@u0vBXniH6c`r_#VC%0k9ICq z{8soF?HA*&(De!KeM>pwtp1n@zofH;Tvme(rr&M~_PPBQU-i3m*V15X*3lHIgzaV_ zn)Vgj_A2~u7~`r4+nc;4d|im*ps&^8-bN?8jj%o4DYQwl9`~(?*?buC)!0?AmuF_j zyh*?;wxPv^iX)e_J97bZNN2(+wjzKtneltr8)HCX{#*9z%^?e#;KDWx1~XWeSk;k$ z{}yvh7L>Tl8U`3^ludHVCSzEHU1=Q%xSPS(p>NK%zhNT>zWvLgx$nP+8Z5fmlsT>86wiqrL5PHc<$(S~0I#GWZhd&0tpL zAn2+q=bP~FaWp{%~$KuM1J3@2f#}JOIa9T zX3$++qMB=c?Y$BZE*BJ?W8q?<*}y1GT%06cTyN2le3L{@{uUvQnjohHFg-F^c~f+D zbp*sJP;8)W78vl_^{%RD&XF!mLgX?u7*%4Rhnsa>eZj7A!pEq51sEzz(DIHU39podf#9d(nAIu!N%)f z`Cnn}lw&P8-*jUF`?|i6v(q=+Uu#hZ`+Od|ta#2j=XATX8Tr5gIg`~ur@O$OBh{Q5 zVfTxvjUf9Am=CU3bE%}i3V}zFp`}EAW#Tg9plVT>%8FG5R&bF228XOIpC5%Ny8K#0 zfL@1b_N4wpTkA>p>K-v`u5~0awrGqB(Yt#p=f?A~=(_Sj$v!q&p6 zmoDD8Zor*&C%aBf<7cCTF1>pnI*^UvPsJ1c89AX0tgD_i-N94)qXEjG3qXqjJaX}R zKuhG})Y3o!Km%N6FS_WW_U2n-U5WF~gHkl-r#-EI1rh@5Fwpc7^a`uZS8#y6FpIEi~wv>LKPj~m& znwYh31IRl_E;sCtid%oK!}K_f>=V*8bkdS>{j6Fmon8NiK*2ZM+KEra){IpXSi^yu zc5xd-6vZS|(V4q}-(Z6?kJcN};mAR#@6MFkJsy4(w_&*UIyb&=0X!3Hi^*wLDkhWpLdK_n7wEFz{_@SMfE3HUuAP+^wr{0O6tEqShtO54Tz zyvtQ6;xFkpbf^EM5)`X{fG_h@krn|v(|y-rHrUw##S~+1)9Tfm9@;!Jv-wT;^%bg5 z6bjOoLLV+Sh*P081QVg!1bsb_id7hrSk)4=C>0}rrrmuGUE~*8Apatr;W<#}gYb+O z^XgFU)cHo|W@pF7W@qO{ds7__M@Q;@YkPBZ`zrIQ9)b7{p`gJ8;~uaIK3ofR{u-*V z9-)X@3DJ%k4wV_UQcRcUtrd1rzz1k%TYhsHo{w+R0%0CjMpOY4MjPC9K^*zN)uj}W0rI0*w%N1>& zBX+)9Ub~~+_7Sm8zD*-Wy~$|K&JOXu=Gz;LMzdbu)YIfB@2`FwG*(bSqN^d@ia1$E z@{>M@&Kih*p#l^127A3`^U-%8s#S9EXEv0`LD(`koF14A_*+gc}J zRW)ui_XA^QM%z5iD?v7Yiui4~4e{gf6rypp2)%Y8Z2=YuUsD)sK&cWG4$Q7l0#5jD zcT+Lu^)eT$9O2fe$<^6@=YiB*TmdfJbjO8{^mKd`%A5elM6tqG zsws0`#uK{44Y}mb7tn=A&X_9;qx>cw=CjrD?}IvvFr7Kbv>mzzoi&_eV=Yia~1@dq$!tNm>XK%fH7y37E%_BzNE zW~lpwhr(Xk@blH(zEXoZ zEQPLxD&92)^PJUSFUiuI}n_ZKznX0#@Hny~Fjx}yBx#R9!i~FD4jV|Ce z(WO#pDavLBCe}~FuP;LDX*=dG9bsS%zbhOs4L$x7W;Nva8%8ADLJ|=8q zx~rwXss+F|*3Nt{jRD`BR*$}s{1`@N;zz>!=l&ZKyk;PdFAy7(I$1w* zIjUdubiqW0O!@}MA=wHG|9DL$U;R)%FU{vGxRlP1j+F;{MjE96MzY%tm{jB~dih#; zELt7FN@Gm1AkPqKL>-Hwso-m4rJrY%u!w#!ug}MXcR-Ax2?zVSwt5L@dL`dpRx5WV z@O$7_OYDlp?XFD9jYf@F_h3+ZHPd4>_GI4FlgS_;Yto9tib!x#n?Nc<11sVsHAL1k zfD*?~m|Yy3m1<^fRcotIJIpn!OS;2JE;MpmME0t!KOw}{T_fhZO{-(xrjxQ({XJ|8 zI!r+sD5JLtdUP?TU1xM!4slIXo$uc;mHdsTI)jK>9mhg)TWfu(S<8wj8dB3$lit|d z&Jh#s_zUylN|;;5sb%6(+6&?$?dDz4Za4!NTw7|(w&s{o?{zeEhTq6Vc%%3_4d^&R z#mhuEE!LGo*K2gdx+4Duj5R|b9P*sWt20H9vkn@ZL=HUCBeLhKw2EK-1y7mOZHq=M9N%R%%6ZSzG{wJF zzwY@TKKUAJ5<*)7G#rGAg1et?4J)h?3*%lZc z0A3_APhbU5aYT*dOZ0>H(4YnBct7!rd_><&JW{}buaSER}qfBim!j$01SD) z5fwmNgSXtJuqqryz{CY=!t|Bf0T{s$iW4PbmfHQSH&H?W0xnL49B8&yf*8&-(vV_I z#T5tdgt%#C36EWo6Pm&xg2z;6S-eg6z4fQ02G^Xow!eSvGl9{{_*m4UM>*c1x3_LT z`g@p**1=e4q<7|>YZ$4>jx|rtrSop-(_EqIcx<@c99{>;H2kNCh5T)h3%Qz$do_3c zlJJcx{4C@`m>BIiBhnIoBwC8%zn;iQ&+k{4`(|eP4<(yjh-fiB3>BBIULV>Z?Q0)= z=8CQ5O2TYSdQnz&dG+3e4YQ1zF{uGR_1e$9eGw==aXf^}#Wk^(Vg%t#Biz+N?*zEz2^u=&Tm-n7~yj>mPCExAd?wQ+tFpe{ND~2@~e7%KI zzcpww>#YqfzOFTqiJ{h^iSXGxZ#;cxhs6t#(?(k>PFP6Up;I7-Jf6mB{WgiB0@;gk zIs-?&xL=~Zeu-CeKA^k!9T2j5pgmAV4D$#yvbuA5=kInyC+q%Gop~HQKMvk=LRjt+ zbdEj4xD*FZQ@pBElSGnG^JQ4!+U4>o!VyJ?Q5&$q(1N-HNaV1lID%YFfjR-J!}{W^ z3d#kkx%?b$>M=Fi#ayP$_QDy8Cs}fS62HT`!`+DiGi>Yty2M{800nUG!)>ci z9m<4o5}YqTD5fdOAoF=W%7zah7Nystuw<2#UeLiOvophs4rR&%k zz$Rf#T>*A;kRm!K-`{oVxY^8|^3yl;c3uxWXzNvD9Fjnoxw`28J3i}&6v0n<^>oV> z!(g${1&qUovvw|X1v-aRP&iS;y#*@(GN2(bC*1a{c$)B6n)0_gKH=?@)>Jw(*4pLg zLc@u0IRN-9I(fafj~X$N=5xcELn14Ksj^cER!D=&JC@6hSJ@R)>%q=aK;7K^lU=tc&DGmAIyCJJcRMZDPfkGfl{ zvLtOH6ArKrasZ2mfH0v~W6gZxqorJ~^wDBIzi_0K&zFwiDmgZ{I5!sF8XBAHoEsB2 z!KJWxu!sZxbAbX8eT`+5#1)JMYd}(yZP{7w<{mD1PL{;`&9-x}BOu?>k{>T*q!%-J zbXzlpVxAqTG@6U|AX-c}o!)d7*d1Ss2BY|bX&<;JlwYPmYr#_B%N9mVu3nSR@mOE; zr@!CEz(QV~QvHHijTHr4+3;y$9BD1(-&KPoyl8TatR|UGWmZS}XW*YCo2d}0d>K3q zG6aF0WIzza(h!*G*U^}Wp^-DK`4R@vMM{OGArdTJ<;zk}vhSL{goG(BttB24uv4Ad ziTa@b7Y4t^*^c92z*c#4G=k3acDDcKhNLFuR4+FT%~g)}6-BP{f{0-!B8kSB9V-M&?!ZDZ;6Un1GoNoQzy!s{d51Lcq65#efh5 z?*{J4?W;fGQdsnWwbD=&&?l->&BzIUo>vSljCt)gXP?ZhD3c-XY`sr(%Y?xkq;ock^{0suhPdRhdh_kpFpf;`xCtS zKyZFr5)2HOyDJ=Qu~*hjj>uZU0Ol1VpM4L*zDJqw-Na|#6y6#(Fx@k{JH3uog~>`9 z{$kwM2Vz2yO6twooV{&06w56{uo=?iS7)ys)iZA}`HY2$==0K>?dH!GPD$#?pb{LP zM7b99#7yZxPi(Y>CP%#hmBH1;_U2G0QQFO4EACH2+*ooS7@s=s>Duswn;_(Le@tWhxCx4wCJifyy z%%VmEZX}qp*8p{QKELRrT7&9uc_ICi(QY$U{s4Zdtux&h@=291k1s?b3*$rbKb&c( zBDZ9wf*Q3v^i{5afYH3#Qv`BLx~o*`aJf24r6T{)KN-p|=`n0hn-@kw5dXvg*uXzj zIL|<|YwQeORnA70WOSyvd1e$9lK`ydi~UuKd3|^X;P-4K)~%*d?t95r(*-;b*yC0l z#ayoFa1^t-l0&+Cy(Ls!g+J;48l?f8xq+t`_kFLkS>RRqU{Y>C<<6hL;F0teluHVyM6{C8;MI7BC&C<%UR7x@HEmZI9VQia zX<*y3NxjaAXlw#(wUWq1qjmKL-*2{qYZbdKP4T$Y&tFmbboZeD5Dc|l!1=K31Hud< z|NbUSY6og1Uut@uxwq`%kb2ilB_p`c?kG&#AJ1ccFZ7b$1zAMN>#4J zlv$pJlyL%NBa5=}U+i5|Z~{#UTX{BqjP#z!Y)p5IS`%Tku#~QcM8nUGNBJHg$qb`-lWHG9| zvmIwiS8El(=Biuw4gk8RK(c{miGOO+Wy1ese8ApbFZNbDqDD4Xb?&}CH=r!=E|?z1 zQ1}I4jSa`K(pVcBDmaR*hcJiHyE0kH!>Ya1f010{(MLp$2lfUv9vC-K&s%YE=Z>fl zaCE27Wczh2+a4Q+RgdC;eHZ`|Zs5HelCtOVQ0EDElj-Fj2`tgS5=>mciIDaTmR~M)3x-z4Mki6M&a0^OoDX78cqKhRM0f zp9uqEHbt5Zm^KG}k+s#Co$l?O-g9_)Os7uH3_>r8Z9Vy~c9;FEzQn9?ui zlZG1H4?s-5*DfpiIyeGEFmRn+0@t;uFCXpp()*KHh$KVC(pNq>Ac7-M18}fIbLPMW<3o zm9=ne8mvM~knPC}FI+v-N3s7wV#gMHha)o|lmQ74F>IiO{R|DqM<3wXRKiWt0V>>^-tu z5mu>gd5~r@bfXokoin^cT$4z6MI_&yVI#8sv*REuc)W`Jl*{R^7ofuZwQZ^_w7!;h z|Fx`H@8;ERQ>q2-UrcPyNHo;ag2tfyBY*aLfcJ^mlaycM-7l+MwouN7b|laXzM+)8 z)o%bhveBeaLPs@buX8Hgk=QFtk=i(ZNl|CfDAbAt(!JWHS;f#8>DE++?jG>FYSb1S z88PAUc3c=@P;M9!kKP!I8Fb5V`@b9%d+FHlSlhoR&S32cYVH$!yL|v)IzabzlppLU zZY`!O3a9tb8|C)2G4bEG#yjipnk=2s2?vQ`=jm&E%X>iZW6?!Gw1=JdzK)KZx@F?b z!&`7ZjUH|4ys_r-g!Em!r}2CHUe`fFHjg%Q{w}2rM1KY+4ilmI|AYh$1{1Xv93h<{ z9y95^a7kPn^bR1volS|R{ngE{qFw_FQJwkMBr;T4ZrhdXexABbfyhO@=g-c?5I!_! zaht`-`eBsg$^^p>`M`+ojpDSW^-N}c>EO2Y*4FiHXJ4=~KDK(n>ezVY2S&6oYZTsG z9dtdv-0NABuTEIxF|$e`$zY`ijhJzbqWjC$_Cr0OFvZiaVGMT#`BM&Kt!qfDCa@$j z9I&+}S7xMVW>%8;w=#@>`}!B9XBPYW7c0Yy{aB(d{ln0a9IClwn&OzHnY(stGZF^d zDV{-gxVUTAg@p$TCfl1)>`QhZ${~HkAxW+8&+rvjGMc@T+j%pmo|0l=S*_2V)m8b4 z$qKVhLiTUKtPdgxybnhGQzudPKU)M1Ba@raLrv|E6GN;TPspxA4kwfpp=>c4n8X-Q zq-X*}g;+Kn7Nvl@)t;-NR&TPcW652OZ5`Yx45-(^v{8kUh$)H(koy2Xn>}>tdD$qG z+G20@nvzN5Q>@+nh&{1?}Q`pq%b+V^Z!4HwUzm+ib-D zm7$F<7zL+)aWG-UAQgvsTrH!&6}3QzgCj35vc00EXg0~$<@O5edDz1a*Xt3jGz?U7 z&i`{d3{)o3voUCa--p>zz)_3>wqmTYzTqU=hQ@rrJH&jbFhdXBqhnr!uQHYEm$D)} z{C>dE+zA>Lh0U^1mUIducArGXwjG+|Pq$ybXD*75b^*iM3U;wTZSyEoeOWn*ZC{6) z-rw|8Jw1mnmscYS;tZ&*u-A|c1kBo%P+>TB=6WK%X5`QC@f8k$(8Gqboc_O-mjB7u zxm_LDawWS87zw8I0I|?qz=70qinFbvtFv`2rI3Q7Js0m72AZ;5&?wy2X0>r)8Nh`^ z=XqTTN$NOP+CYN7nn!{Tpjv!t*du7Ej!DqBC&_ghG8WIwhy*>h6Hg~KYHVuMdmsJ& zW1AVe6kZG=MF)GdtIOy3*XErGR%HPj>+f^naWwnThBJGVuJ)DLj$ZG;%pKuoW2y($ zdUa%J5K+wSxmYB(c4$<3m(BdC!g?C1x?dNVoMG;5JBNZhhgadrQC~e(e~LE#897r2 zO}~F~?zm^0B`GxShB0BT-tK?YY^!|HHvq;+V9B-E6=GvKS%Cx446>F_!)}Mf0pJj} zsB5u2S+(4x6F?i4Fd?rPD4g);t8%hS=!F+pyeMp1ebyj##IvUqECa z`vvSjwL=$?gxgx3_7|mGTR7bI^>TU?WwG(QKYrQ!ItTpV_0PAv7Cv10{n;4)ad#K@ zTO{yoI3(*%BPZ}sQ(jdYlCK@<*~_82%^cp9;e*3XN6!JT==Km$)qRNCgS`@l%GT) zwa|1fShTL^`fqwxSXx$5<*2Nh$u~6BMO0s{+BACMS2IwDC|;r-!>~}hg@VUZ8u<}C z*drd%NLSKW?eUHb1h?*PiD4whHg;WG8f$(op|QR4t(>{rn3roagp+_w3$@haYuADZ zLCjl#8D0v1;uF$(?z9XH0LExCrxdX+N*}72O|a=IL&x5zyg@2?%J+n6U+W$S>r@se z_SWFg*nDc0Bb6B8kAB4Xu<~ul;OC-BBWl~*_pE^~3ub$>w!OsNH8>!st2t$WigebG zHhvV@)y^DLVJK|}ExN&^X3Zd=jjrY7{T>~=goS>;fRgs1jc_|sF;QOo|JUT!%xcZv z(oxf3<5<+ncSzw<^%HWG4v8Ppa>&{h9<)0aj5ESpH6 zhiET_!`$qoZ&pYfilxV0;`8lAfL@Zv)ngX)cphu^N$D4rAr2dowb z;GC5Wg@7WxjOMZuQK{AR61wdDl;|}V^Y-HA;R+(1`uv8c#I#!uuAx+Ge7809qO6$T zsP>}PKJo_ZCPbNRw{y; z>xf`cI!f5YzlWzL{V;i;#SSKP_wb>6##gsXf(y9vNba&5he=A|HBaAuRndO`+7lBt zaH}G?{;D~7|060zW>5P|59fBZN-u5iPCs(Twuduo0DLB9hOqvDXlzG$m~>jUp}tuy z+^Ka5r_f>o6}LiibyCh&4DdNDDt*o05w3fH6m!XOnQ}j zcsB7Y+PxoAB6W6X)oz2v-G1M)Mz2CaZtpJeCjgNA&3InBx~k2`F0y(7aO;nk`U~9z?V62I$3d&XVB3inxb+k}md^VJ>(f@ihSsO8 zY~X1Y*&%AL9v_Kx}EryMNG9wB?+lz6}g)b4h1JX(1Q`VL0g zJh$!K`TA3g?a^f<$p=`htNglDBy^Z0<<8)nzC%R7cjVh&!Gh2kV^j#oqe>SmHXc3A zi1}%1^D2N*Ru}{1@>J0Q1Vn-f-LH-9JD80{bNhGF8>2@T+kGG#jb#t4>u4xw4=VpM zoR8jy|Dt(BPcckoeHJvbF>rC+3xblrtyW3vp))No6CyN4YNT45`!wsBQvKq18P~qwp=gnXPQ>>^S6I@?*yEQqC(;&9a}8i0 zrmw&2r#a{!S}gj2|Ke{z5J1P6Y~wV*!@Qbi;~ERFs&~Z?HhxP96Q~La`$!0kaEtQU zTqeKGJy-_xjh@LauT+wfUD257h8s+=D137YhWCEuvKWtiD?=)gipZ!5Aunh{t*}k& z*I2EjOc?rZf)`~0<4JN_%*g1~$w}6GQJ$*q+ksu(9I{i~i#Aw$oLrlLl}=>Z)&xyGN6tyTkUaZ{bdkw1@Rq$GiPsp-OZN;tMcem7iu%WV#m9#3 z*@jXrC<@o_9<;w#%2&Q!`+FciIpi9>1Sg#9E zC=d_^=2x@XmARLj(B|(uCyTd$+m0V>=WDTnz;2%AtJ=?u0mO}FMgCC#HxcdqeylXu zHV7{k1nlPXs1|$~nL@c=wEJc)KwwtBHWzV^%+H zx|zyxGfRGFGafyg+icOrgO<>c6~8L}yTud&bkGzS?Dxoo{jq)0Bf;STuNFWNou_}u zFEAeOX5=VgtFy^2^R8{OuT@TCEc$<;WmpuE10=LoDg@#UtXyw>9+xl6Bwot=FF84cj+Znv{sq(Y#{Zr<0B<&(+q zFrf8fAY7b&$VUiBMqs=e=h9%bgt@Cqnx+z&0_RuRC2lAjs_VIZwdlK^W84bPisxsTBgGU+w@G=KU{}d}w%R*6$qZ>Ng^kHZ7k03E zQF}>E)%lw^LspIfd{5XX-0NoHwpQ>_>>HbJZk``IB>z*f|L+?g3T6~yamKmvL3$gB zH=MR?)>3&ZMJFASK_b|>4PSTk^;G58ho<)(8q7iyWbd-ingJYv}aetk$Xio{xM^r636_Wm&JG&OXQrQ;dD&$1S1EbWqc0?l0vdD`Rc4(|blsB8TS<`V zVZ#+?#%ve#KHsaZnnC+V9>0+vbu3-yvGi&kf3G#@F-5+Nl_5r}yWnL4>CCv8Ew&Vp z*4xdw7AB0YjFZWsH}4UE;3e$MGvL#;p4ES4<$fHY?-GN7P!(IPm-nv4wS1qdb;rwg zRi`vCg6=?rb<%88JIpuWm)JxDcZ3doq<;4X3{!b?MQy9K+=uY0W?dIg?rg~p0j+jz}O@EFKmg8LNgpR`!57A|A9k<_KeqAL@uZcnxc z0`18M{q2cFyYyI~C&U@&<{ZM}2&@FRYmvqM_3}1D(I5Tu11f>rsMQORut0$c&p`@< zXu6REM4)bYo*E-Lra#nwR0)9PXEt4i z=_4xzf`Dxo4f!r>E^h~F&!kW=N_%Nw39MZXOGoG@Hob!D{n*%j!ek$wJ;eU)`Ezvh z_C&Vw+icuE$CpSWe4lHvP1M)j=0N=oAPsw|)2rY37~%tOd%*^e4PqrnvBR(Pb4vW@ z{r{^YS1QDkH5C2-a|DSHVljn3B`Gad=9*RiuE5Hm{?YPTjHk~kj{?YUGxwyLn^PFU z0#g@18wv?6fD{KOFei?MKme#sj^RU)>CiVe6E-560NunK$T1|qa|VzGJ)&G{I+a|x zLc=NPbWO95&08U=noF+9tX8wH1zd5wl4Jd>@*Lk=txf#&lwsbF+kEraystPgF#rEy zc1(QcJhV|%7W2{1PJS@%V?5qD@p$De48F8<8Kt9p}}PhEsJ0ZH@OpO_>Re(WjCf;?DU4J-AS1yKfe zmb~sjg0f3?XR+7`A^#WshU$3V=5G)MMwoh-7sVG%w$yBW}G-FY2shAy)-?ZunWi1tl1Kh8IKoNw|zI{f#wOqO$aGRFGDjtG1ifG}vp`}85; z*>?ao(>{DdJ6dr_s?rA!75*j=zmH9Y`-eMs&^cdDON5y|gKbCW@YbFzjl86=HBZL_ z4^F>j0F^^@gSsvstbBt{l(IwDwgZd_lhkt7q0)Q*{5N|(wbqOVJwBR$GG2KJ039uO zLO!B=n{ucrStVP$17vIOln;Tdv)x?LR!y4~gwKcs8{aXcNT8jl9d9}U@f1d3cm^#; zP0oKt(%lg4u@!{9>j|tWh0TCjke9IILK(opw;M}=Ba$sH=xNm&6xv+vg~?J+2nR?Z~Z(*sc&=^@!|5uF#4w|kKf<{FH zvP=CHvO^AratSjqmh)?)(2Cnlj;_}Z8bjzv8Si6LwY>35gJ+OP*3OW!g-_5AjupEMWWK7%WIIiwLwn*4dMk z?z&4#_H>@#eutDy-O=8Y+zyYc9loqZ-uoJw-_bg_SXdmIqj!|swe*#9LwIm-@JI^@ z_LbVe^!Ap@e_#L-FMeJK4rLPqww$iY;xXhif!y|8-LxEZT89qX2Z;4AjI`oSHlyOkZcTfuPc=ymXS z`;Del!h{&NZ(J-rnNCL{Y1IF_+@X-i6AFTRhLz)-fe-N)Wag8 zOvSe+=F8D4J=XNqBw7oR>WQidSH-&s&qckfJqOh+a=y#HmPJQOm(gtP#i(ww2OyU` zAyL*Ri%M}0P>@vOAV`mil~a#mQ-;Hz~vHoZ-@ zoz$wGnDvsI-j-IUO}eJ5L{sI88edDi>HCdAzlM9g@oI0tcsd>7t){5RSBu^22B%uG zI&DgoMsIYh6gH<-Qfr`siVqG=hQpIX8}BI>2zO@r!r81?$>!}`Nwo~MfvWvVY=^)! zKURQXa+4l$v*o?)=?Dpg@MV?BK3VSG&xYPxBBe4 zRuun%9yR!81Fd^=Ml8q;8Ao5+*;fHc7AYBlM-fRdp-@PJM1i!ng$_e2GCKv9!bl$| z^k(k3Bhy=W4Teh0sGR~6<-x{WvrdVzCpd70GjXA-t7OIU39M2zC9@gJ2WXi&KWN{} zt0fjGmi$9KY?Io}JwtwL^GL)JkDC}|`E<^1XZvb1*}@dM&Npp)X|w}JO3;tMWmk!s z1fAn27&K!|fyuTgww$4?jp`TxQzf{0Rjk9@tLunW;=pLxz@CX=7^TkEZ8vyuQWCJ` zpNDCf1DfJHO}}jV15S!Ys9sMQvaH$#GLw{{w%!`+6=VS`4T0d3P%gN`Kai2O7DQ!m zalH9B+1bKz!Ff8)erzs^JoZD#zx3G8AwLEa_9s4y7jGk62tJ|wAy25OYNR6(EdDUh z-#O}xS}@&61`6m7zuu;{L~b*_I3g^V{^6jg@?i}rw*E@LQ1Stfda~b z70O$a({K9@j1tIB1oMGFKW+|C)b=j5pXpjr#d@i>9 z8rc4@S;3kQczdE|{C=W2dnU24M`5-kM?$ra0DcHZiyJT0gJHbI>5ZHDDVl9y0mi4W zXIwdp%U+C*TxD!Fs6jQT*65=~4JyP+>2YI3uLk0q4;i#By;BZjXSguxMHMH+_iwPluMGVbN+Dh- z|3*eLGoLscjHF<$AG-FkQsrZE?VeMYlHj?jJkxgRbwl#@*@Mr_I)Jxt2Ea2H-CpPx9(X_weKp_GFW?!wWRDqjC^bT4Td7FMLUG>r%6zJ^c{vsmxYL zNwSQLF`m(&L%Ppt{`A0kEevjaD)-P_l6GhZO&j2TMq6^K&!P01uxTlN?$GD33l4Ld z|D9Nx@t_=K^nqe$aw-JBXczsOGZ_jge1k(>R#|l%BXhA0))D>?pBr_{FY#{KnL73r zM$CemW$=-u?EeEsJ$2ac{us)6uAM(Uyzi0+3MnNs@*TvTMBooS5a_4dcEHhv{iLUNWMq|lcyEZ=T?k-(H$9P$* zKbXUuCuk;zJESbmi96{G`uQ8iyF%$O7W)=??s%p){sFXl(X|X}OCXJE*_knF0WmNn zS0j4#h(JuRBWdv7il&3V%Z))UOqF(fF$$>0&ZWmtTb=?z%*UFZ1#ES5wzy1j5ffOI zH5_H_a?>52_((PQsu>?qgRB)I1-1=Mp*nQ6>iTN70(bGtUUkhvB+U49G=@BGa!;9% z0mfp|1?w+^&0cROwhay2nC{IKjLS68WBVyuN z-iwwLf-uY?>yj;u!4i*Qi;!6ta^>Bl#pqpkMT?_L$^dX#ralacTl>>GR;FC2gdmz; z0QSy0kJ6-dgpba$x;V>v)kxP2$Wskg)pWNVNIN`|8VNWu4xl+q$dmJ~Y{>|wTU0zS zKgw1_cpJb|T$pH;*&bQ(*bU}4(Tc#zl99@Gv-RECQH@FM1U)2BCZU3&Ln?%jj5Py9 z^<8AoqfOTUp7TaIGT*E{<0J?>a$N7AR+khYDh5pTgYl}191SH*ner`0p0`*n?^E0Y zy!cC09LXP=oDYTOC$U`9?0A_1csV;Y7YfZy#U&@7QTd&tvL@p|L`MP?rWsI};)#Nf z^b^r-5ao-dwUwBO?xv28B2#H!t$cwszx^n)z1{--%UIr+ zPFpN#(FXdk@(G}EyiF@m*VhppB}z`vxLQV9Q?z<1N<$SMZcLXplcUW57H0!J0+9g! znGGPJV$?1aD+F_FwREAleA~p>_AOh6hPJ%tnWdqjr3$t!Frf6AV2RoILG1`%?u{Iz z*vBYf9|*Y}Sdjpu=qP!xt;EqkcNPPKE9Uy?yCd1kFLM$5GiRZPUix$@_0D1}R-Eoi zc9s{U`NeYA_;~j@y;Dp72=iSv5KI_R&9sc<+|1n%Dx%49+V#jtd`Kbi7{io#YhJDmkx{ONGaPr@yq z=#=XQ@nqj~!wD`EwnP(4qa{nJR$;&+kS89+A5jOazLlsM)oQ-@zELTX=P2P*dtmnP zbP*HsJk+WZJQ$QS%qopxt$l}AKz8uEp6_Ddy)TGjnm||^ zY1vH&*hXgQ{sfD)$Qq5d9nP)}nb1J*==38vx7xAd=&al9X`8>~Ax6hz=s0?9zXdbf zPBU7){lnM)WS3rHX&aYL87UM--rn7TjcRsvU;!4u(si))up& z85ndG4>?Zq?ip#L*xg+ybaxkj&x*z>1ukg#o^|;H4oASx+Ef@)ep<{@9|iW}Q^4yS zQ*k&hRH|v@D~CEK*yulLIw0qCX46Ddo+vgdL_jU0AGPv&2^xaU8s#gfs-# zADco_CbqqfZf`eVvfC<1{>3an#$msMk3FDLYFsX$XpJV123H!r{aihYnOGvrl@uPY z;ZZtr=p~y!K{3p;!N;-P zH;2XR9u+?`c&}Y1C%iS|Kd;eJY$wH|{TDPy2N?kzjt&J6D&*tF^vJZb+0m~ZsIJW_buCb+Rg-w6G%N|wM6i%8 z2p=^ zojzar5_p{eew^H6f0U1W48>=&{W)Gf<656UX@-m0&klIcOt<%VJU#95ZPxG4;xG5) zeT#dk;R=xAlhj|suelmP;c8u`1gGpsZiD_$bs?w0?~|4(A^xpAG*eWB)fy9Mf!$j= z`4-^pSfSX~d8f4OR(XwPkd*K0>tCr{=;|y8KCfb-)79evCoKO$oMd~v55aI}(}his zfJfyUGzJt3m5@8~V5Cpt*=Y^LHw+a$LI0WioWxFNPJ+s;=SXz@n`s$dO@Ch#vb)38 zSx@&NXcm89rjDz4@?(qRR7=$rzc!2A)0qNS_A1*3D=#=(G3N+ACT(P(%?u(VaBaGx zl5SuorckRj$%&0m1C!UVfC+YhvcHaMC_}LDcOsk06EIq3|eEqywMVM%G%dtvU) z%(fnY0IU!4>Oo2J4UhQ^m>fk`yDe&+)Tz~`xDj(#Si545V@Je81`m>E+yl%{W5kYR z#i9f^Dq}B zJDYGq(C5J0aJ0`Ztvc&Vo18EQfbu5L|8MHKFo!~fE}+d{KER~x+dRYH1{l!ll6;+c zyXf(2y`#-9f^YW$jZ5zu!M<=cKD>X_h3yp@6Cp@`xY1DNWYL%4T%xG@ zTq=0=aRrlB4wz-p~<^eh{pfEz>?Qf?>+jza?b|C?>Jf&DYgt$4*o*+4vSx2F0?SD_Ind z0m?ad;N#=@GTsf=R#UD<@+hR`A<>i`@91v^2(6=J}$+xDL%u< z=LXt^8*qs2m7j$Qg%JN%J_`JQ=F|cjuBcs=&Pf`Sq#p5)OoHHEtyUXz>q#Bym3i_(-$iBbK+pko3yYWl2 zV|e}&PJZ4nKg4t{ny)-xh&ZKN7BN_jt%=2a#GrCxI8$L61>KNetJRr1Mv{7k3*>D2 z-24u1>XCB*EphQpCmMJ_IC zUhv$CkN1uRii7_}zxQ99>H8k9zGvtg4FpE}Di#E8wf)jwvEPF~M%&PA-$ymw2Rvp? zzF@hK4$iM&A`NK${w@iO>Cn%QJonu0=I+FE$>ej1?&j{~lDFLU^N~LFUh2zf{6Gv z+RsB-r!yOp{Pt`(oQ0;vA(p3*moH!lLS8<)iN(>txgA3+ezGXJu1CjT{8i-4oaq&N z2spc>II=SBNI3*5N*Cxa7cF$7AU;fb-e7DFX))|E#_2f}iSf%@mRmg&lWsFkyvOA3@Apz}EPvVFLbnZhHAhgk`u4yjn07(HY=|uH z-Vqg1)YFvi(~PIq-9rNoly2Y3N@CVR0oLI_26 zIw)RLEs^ZoXq4(Ujh3lewE!Ts8q5%i1{=vpR(`RlCF7jqJLXeZ`FItDtfjZZr)R*dHVsBeehVw_i=IH-+xA~81i~U#oQU$5-&jbDjPpG)Uw&k5q~ML+#4nrQ`b{x!0T1PUvG=fg*!SV?ygxOZ_T_rs z`qrMDFFl;{=esMvh6eqj{{lH;(TfTf!D}|Ginp1b<`wc6xxxi(GQevfBY@FzLkQnR zg}(*FR<%}D z$IzTG2UdG6vld3B2s}J&Ce_@KTmst+P?6ihEh;7q3jOeUES*z_`G5W1*-o{-&>EU6 zfKdzlDw(lBY_)9gSAdW5V7C+jHX2v1HD3?2^7h&uX=ga9RR&up^}xgFRp9p5Djf!J2E`pJx3q+@GIP?d2Cl>C zKrczx53T4uI=25OH&MdfV;6mPZRC<}U@ic-=s4KZf2dQhzyXndS3VaKWqUicO?Ga! zk1_=PCA|vv=*D zo!@!Ip4r(wl@R?`wc{f1r{XsuU@zzLP@H=#JM-3em)aebs~znV(rcYIGC$Eo9_xO&8HW(hC*8x((_9p>1Sh0OFM=}w=FG=RTx43AFPzC)|Ro3G^#*t zxqPCliACJKRc}*_|N)CN4wS9F1^Fpol2A+Om`WLU1@yl3=ZE4$ae^oz87G! z_S&XfG1Nl~SxfApXH@}I*%XB)){=C5{Tjim`WH9M7&qV>_QZrJs#sqZm8)o9`4W?o zOy|wUr(YsHfTX})bm>0V(BSC6 zpvT?UyK(buyAtTN@0a`Cp2309!6Dbi|A^wU^xNJGIF89Zj!T$27bfxJJOW~o-!%ZoHA zYDYD$r*T8u8{wSbQpQ&<$Jy12{RuYp1mjvQ;nV3+3mZILy=%agDgTG%xPS;Uv<_~o zzm67<)DfyV67^h83sV%`-G| zdl|j&m2Y_;6VmtzZa45TrPC8*WYEWC4f6gXhO~f@%$MK`$)g>Dv3m~q!a-Ev9u|O7 zIu{CqMHIOP2ED*H+!&C+-ie|O*{b1!AVm5&i1JuTyi%9VrIr0zy%fW;Eo-!!zx#L? zncUwLolQs_`#D(wfM!BprOQmfTI`dJyG^XcwiP`#>50Wy%n0(@dFi@w#rye&Si>0IF%F@et2^RwqTufW`A)xUcmQl77^^jKTD}#wV?`SXg#+4IbHL;a z&T0eUP(WMF$KMUr9)P)h2$NM`If-(gpos8vP`wj^n;I2rgA5_#e#v11x_;y2M$Fv`I?En56)nOC+W(D36Z^S@@Yxw`_@5GUUn(;p`A;4mAXa}06j zEa?_OV(Zq41yw%+?YPFOOP+OZtI4I{0A|Q)iG=hQ^E^ny)W0|C!_AiL_AsU{H5$Fw zYR#lf=E`lLu*cIQOSz+b(ora$<04*Nl$i~IBuHs8HSayRPr93oB$k$xiBXS#cstDn z;weC?q~G3SkfYiP%(y?Pcx$N(W$!F9E<}30gFEn}&cw z%;YGg=B1@(hRA%==EeDDwOQqeTL9KEd)K3`=KSV!;#sSMip@_7gO5fAd&_i8}T zY%-!3ud&;$U4p(uVQ7vhe!!<}MB2)}-_UIFi>UY!IkRT}nDSky;5eJO)aULh-H)*9 z)v$;H5hTZgLB-2e8u&tE@Ewc78Q|^wm_>UA)?5$qLvx zrl(s`&o}U~t7JshVTwy?`V?}*2D z%vXwYEAat$f4B6_?mmyFue(z0?st;{`B$}3X?b^9m0Aq~5Y%ehFe+Vj-3~x6OD5a% z;7xaYg5>FU@QQ!$K$IaKa_qs3LL#Nsqf4XKsS^oYH5nkohmnF#G-a_j=n#-AZ-86p z{=)ZSDf1?gi5MxUJKg#Pw7XGZSBroQfKmm%t@qS?994?a=${p?VGPW!yi=s2ov&4a@A|mcn48aH5#)% zO`Uq0T8;#@DpI`zB_6ERmiiyBv_*HfVDuj7wA6A)u8_dzU{|}dv&TnDU9Y}nm(=w5 z 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


    ;@9U-7pHEkO?reuG~6}84eop31KcaN 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 z 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

    v0JUfnhEtFJkV_ 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

    xKBJIgk_%`UAchI3ql63$;T60yY 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

    >!cu-)~>X5~a>JGu}A7ONRJ{>C}H@RSCEI2Xn zCjIzkc6G)IgHf>bUVUl7;s#QaX>6_h(!fM8wsJwG%i-v%u%pzOobp~xU!eYnVQy-a zknc_f#QXSs(US>Gj}A;m6knuR(nCP*#(WPLVj73v0-z+cr`yG6NCn@oh)fKOP6xUz z?S(>K5Zc=d?Uu`6d|uaeQ|D(PZ`uz1Nck0I2#dM``H-`i4n^*Xf_L?0h3x&fWv$2e z=Ddu$y8*Js(l_$1jT0qp1SATn0a-j@jhSR(D%eT6(|K0L6TCHh+L?JOlMIMS$08zc z4#X-Lms+K37|CBH{V&t28tJR_v*L9+O3!gXjY9F)ha9WkeYSTp9G>j$n+$~}`+8ej zdwW}2q-^o{)Hmph8?^FWT8mlD0sCBm`2buO#U<#UvQqeVrz z7!WAsw*kvC&A`JR1~SiAn_g&o>2MZ-KtFQdw5U~PQ2{_1)uIEbhS(`r;H$I!sgQ)S zkph@|5uYZ@Bn@h?lk0n@HU&6_Kj9*(}It&1WhSBpthRz!3- z`pTHbt%3wx_Sgu<`eAmDw=ZIEbpwe7Gq$uS%nvP#Y&y@3nWH}QsV@wxL}?44jWq^y z+m`h}K12nVA-QR5k`>wUvBe7mG`$<;{4>iH-S()(AtWyb4qT#bb@T!H;@SkhUu~|- zJIt%&rYRg`!7vvkm+nt^^RAIrwF_-x>dvWHzZaEtKu>5JO0Fr22vbOFctJWJfylUC zfZ`&U9_vsVJvrzYu!PK>yo&(SsPxROb(Zam3jk2ywVJ|h8#w6|UTjgTsZdWWRJ^d? z4VZA7Om~ z){&(hOGZYPTqi2pZ~6~qS`x2n&nSP(z4Y(OOnXN@^RLyN@o)d(*QyNSvYFq18()0_ zzg-P`g+RxQNZMh;@)Rne2#B#AP_R+)F(RT?_mA7S7&0QPEg=#SiEQ*TSCJ ze}ZMVXDl5IHWyNX!0dGzv#P=!O8Whhp}(yU`fLCwO3$Huv>l@MMu^w@(M|u@-13sB zJepUrUc@D&wqOL)^g3`Pvl*DCf-z8QN0^hUa^9PGR+E}@SttrvFa3fbwa@jS5+^r; zgusG3!nhzVm7^|nR6NIv(|6pu2TmjBOKhk-X#nz%GEGbMM9;PqQuv0{2|c2{Z_MW# z>+7fE>}C_@d+Yh}mE!YMPxK16+K6@$Hxi(_K!=%-@^vZ=ujP~!JGzN`j5^o8tl%QY zW-*xrFhgx?quyf_{%lqdve{-jN_Q>((qicuZc6?KD5EL#Ytd*$uYwrQOR*`6N=bi1 zhdsK~FyKz9QO;nC0-mv^AEjP|k}CP0Tp2@Y!iOGLzMyPwiXhy7 zDvE~BK`w>>L!ZUC&R^8`9j*;A&c|9YBrxaFo76YJ;{3E(u;cL~UL|u}29RN4Q(`>k zUpa}n>YnKl3KecI%0K4bX_tEpYPZYY))9om`03?MGz2Pkx zOg4Ibrb@~?l*`6+3g8qQ6~=+tr_RAwWYBqz;@5zuMZuF5T~(NeU}-PA^^z9Nch2?} z9yl!cC`)U>sdFQ8s&!=yN;@L{N<)j=qOhSM(3DIIz*I3%BRcS_5g+Vb+#ub@c2#Z;`>!ETi5dlERdU_l<2ud!vVr2-i3YFdL zTR0QIpacE?1-GOGR)3@{e9o*ylJ4wm&>OFta8{Fdy zLPqKsHhRYa`{xmXc;y+N4$wFxmodCx!fQ~?{s>%?+yuWImHvF|_OvIBz6y75mjeM} z4LZ}idOQZ_eeNC`YT@)s9l5)DC$LiBtB}R_EoBK7-xj0>Z@>iE&&?x7nWB!g7?{)s zxsiOT6BUV#BQ?Ri1R$e7W^Kcmpni5{N-)JxCsLVGnO7-yrLbrhwN1?nR}CA*!1ATc z#zXMgFBHj+;#LrGb%-Sd!At#Cf-g2JFbCXQ34NJ)I}g(FnTP1!huVh%dB53e6Skgl zeMh9E^$hZ2-{cac^KFYJ`zX5`ZGNjcCQ9EYJ1;WmIS)476U@B_DzZbi>1f+&`#<_` zUWg({KYi~u{7Qw@93Kwn`t96lbwB+^I(Y$AiKsL)iwjq*SctfNSwzmNbP|QQPAUxs z=#TRx0)Ye~6W7%CUPFFlh=o`>u{U4COu@f4eZ(pLvAtm}nW=_%Py5thPiCf-Yf=N7 z*4V?tga}@DK@QD-Bd*LBIG_Ahiq|mnfc*t2IIUzh$^(ZOLE&R+CjXq1FrNy@E`Vw~ zTuyPVM$tPx9tQ%Q0sWgmh4KV?JaB6P=nEO+L286h$MKgenDnC!O|9Ex60gzBtl|O2 zr#BUQ1IlaZ@4k+F-m6KRT_^uId+&C91*(qiOD+795Ho7%KZKkqnl#jKA^r+Ua~FWv zTpo>?VWeUHgUU4!b9LB&dxzd>le63b^N||;>?rXxxeS4-)1cL;9ER|UH3^kg#k&Y4 zKxcP!`GBhG=#IFncKN+3JR}B6<1y*or4EP5X$bdWI;R?gmclF7BrsUL{%&irXmb(D zY3(lo1gc$HE%5Ijb9x3ir?6z5?c;<-DJ&uKUb2*kogm?a_u&P-w7;@%_S^6~FNfbk zfy8eq2SMd$A`AX5r{N5onX~_2P&&lfywL8a(d;KsyOYS>SuY@}e-^Uv4X*jS#6M4g z){$NChY*?9DVrKd8s~?_(jX^U4!14=KZf{Q5J+1%?J+qiq-hM)0%={$w-vaBG?rAS z4$VyaWaZX>Z1%eB2{T9<&=K~Is@L0ru4c>u z!Z1{oC1KEUc9=mbAWuzA00xpO+g$#Hm)eQhrx~@p9~^;CLq{)Q987M5Gi9M9q)KBi zRy^Jc0K0X1OcFGBfRU=3{ZC-Xsd#?ju+}qCB)REN`$&Ywmi~&Kz$64S$f_HK;zUrG zeQ5{2K(#xT2_`TCi|3hbN@4_x=gBJfLl~T|fnzc9S_2iU;F+PW;2d2ccg0E=kjT{- z)Q%!rM$v$5H&{D598O2L*M&#MxWe$V<-`o&4=@9OGyIFZ9&|P1^RQHyHNZYkne6gZ zpfj~P*m3x<0_LvEA6Dpa7@Yd(phqu%+Tx{gd|I2{ie71hwTL;fHmLLVD6Xdal|WNGDZ>MeOWov6lfYkne`n_ zcf(wK7|H)1H2s80oFvfV*T{=dTEVO^etM%Ld^Z2Eqtb}=+rV@;;dM8 z1ER^@ve2s0iU}?@xO~sjVIK3^cud5!87+C+=;A%g2cAbWjBb|gc z88+YL%B0(yMVG76Zt5#=j~}S+pM4SG>#L>v!Pm~-As@l#i>B5SlLl=7LIe0uKv>nF zsUvbs(qO+9%jl}2QH*%Q)`ch)cf8FOcPkBU5N`0$ZJ3X;1itMACOaK~Sbq(D{oe;B z;X6&gs|$93g0OHP$mvMhq{+k-ncyc#NFt z$F8A%nsp{NpDpACU$-{*wTNDi1C(rZsr2oIO4=Tc0L z#qI5hST-Av42E^ees8-oX+l;}1d63-Yrz~j9Um_Mic6amI2)3XoP#FC6{rU%OXfnB z+HDGS%|TcgPL&w70EOlDF8}+1l~+sOZ<2G-ii` z@8wZXWedZ)=sI*e(gu@FIpoK_h#EU0!(X8_zY)zQkw(t+-=#qoj+yW7$bzqU`1SdP zaZG~FbAn`gf^7^6j>3H=TB1TL!f_$t$7rt%Sy(508h;RXj@EyD>y|IYr zQQ3_`*y4}q?uOXZX(JnwFo6ITf#E<#A0`DlX;h}U#pY@iO^OtK+){Lsad6?yX00s| zY|raau+4u#z_1VC$2rx(m1)R6ol7T#gxB$z@Db3Ck~U(XkQ39*O%ZBa#G3I@i>KYL z<7Qt3eHL0O+*jHARj#p+76sgBD{60%Hsyc>6h+|vRpn??6quSP0uALfHlmQ!{ln;t zer1kSoJEd@>S znD(10RYx%R4#qOriY_u~T{=(MDy~GKN?qqtdK z9t3GHPr?B(29LqPopQqsfovdTyx|64OE&N;^i+8Jf$>9H);Z{Of?6T~tA1G-hr2Y1 zpghG9&u{un(-mk1z8>*J)OO339|H8BAlPJbLDE#d1zYrS6cr&N`Se>3SA#?fq_^d8 z&Ea7il0*Fm?%XSPuxE~|JVUL)$}&Y|U$9rxA$&_SWrXZ_|a<^%WD%GPnl6vm( zYGVGYiUr{9d~3NiKl}LL)2N~Byk+3w!R&zaZ#b{ApzmYKpDV|}+7}_n{{R^JapdJ* z1ROm99MyDCZ67{v7ixJkEGtAlZOKvQKCa8=47jdt(98?!kk)WH3w7fgJdFQSq&`y7 zBXis&7nq@RxP5eZ7)DL`0EXrTTo>w7MbW|02w*G=kz^VTzn%m@3XWU%KtY3Ou!S$Q z6Nhto;;*d0#bGR?ioR=einnQ`1N7RXI+ufj7LcTdkojVj3P`v{!0p~iFMb~FDgl$M zuWYS8XA;R36!3Bo0x)=7dP~1MmD-ClM$%IyU@zDy~JGXZ-goI+=k{ser5yZIBi zoq?d?DnlT3l`#l8u7qCn=HVp)a#M*+)%DuFhSXQxSjwGLKxWS8uv{6wuMS4ZQ!K6#Vj`IvtMAN^7;#rZ|SWu~>oLHmVAi z{y;wCw>2i^l`tGJ(>)o}UmA-T3=vL%;qDsn=o#Xq2O(#B6%S$Uvf+UM;bpHl+)d^t z54uBMMVDzD^9_4 zTIX-w2CrB2LLYqs)zL>K<#FPy>_|4Y<^zYaE+Pn>x#(~$fJ1f^BRUO9Az2Gm8ipIR zKf*9%rQ=1Eb3n_@Q&ePLaVb=QPfdDhb^?Ice26p>wXzIGN*E@|Q|=h}#bBYIM3nRy zgd!})ocDJm%`k)%*WN2(NNZ(`LCah)UZEIps9Aa|6B7S8M(FQmZ%b=XtFmG!G;~(S z?9b{U55->$b`77iYB5mUVsAHV)Y7+>EqfF0fh}&72bA*(tJcXaUFl0Yr2k!NP58cR zAxvGA{^*1(4}1fSeU*iOoDvoI>v@VGq9mt5pp>g95%OVy+FuHUe<*#&Lhy15S9C3< zv>@Oto4N~%FAAoS@)YUlsqzSMY9<`cU~pP0KS)p7>lbVR%wNasy+F*eVLw#eOK>2s zx(8a<)#uRK)x7BJcNpydwDnl69rfav4hpYbAMA1Il`rPQ&aGRWVNPX^8Pqmdcp78O zq(%3<0t6XB{nX2lnsIc`Uk0W25Gon|sRj%8%cc*|`k;{sa;_oz6A6+i^6xo+vRTAw zn7kqlR;T0o$q|lX44tRUA}3V~g0E3CQS#Ab3W7pz4D`oH5I@lc;v)P{gvzQLNyg3< z6;aiLnqq<^Uu#wsRd#(0sg4=N@UmrLs`JOD`h_afj%$es3&Q)ws>@X^4!uSD^%gmY zAJEwc)AIG%J`dVw4EBt3h`hz2MdUfYMu*WZy3jR%(1WAxBrZoE3UC*E=pPqUDFzqH zQx49KLJGs6bO++gR;Qw*!;kZLq7w4ovyd*)2jWf@qEO_=*)$wO%}_n9&#f z#%M(UoKhKym;z4=IV%h?WT)(CFMyfuS_+1HM1x`{j9z4#SIKR_1L7|*m_K?4r5~@_ z+OsX~wh4lUTSunXI*_tu!q(oBZMR7mk%NF%M#W-sB1g%wB$slOewxxMoKCbga4-UB zIbaBUCD*r`c>Ht(MN$Zg=sexIFoK5Rl`$ir3K1qAPZLx$K0s_Vh)2 z)h5;Wmll6_<|S9!=ht6!k>2l1yQCjmTLplAB7-1gMZF845Gbq29@>vK$rWgLxEk61 zA3?7E0`ZU!fKdKnUB1E;pqfhZN9$DB5S2thEMNf=g4`5q`WrD3xz}qR_0`@JVE{;S zkOL8lV!>f&Xo>T_&Bx**fy(;-h=`f|Ms$QQl0dmkw0TH7bn1$lh9S8Q54A=~Pe0|5Wgq@`9q0Rb6-_DGVH|f(m`>j0#?$+|{ z=|S0#z!p+mKQig?HBOj=X{R+*4!Lp`P0Jw`D% zymmO(KJG#f zKdUxn-*|)j9)9uKkY_vQ$taPUMKA<0K%k@l2=s+d(DN@V)Eq}J%nFU73V-xwF`K%n zkkOlr`gA+`+yp*|l(Nw+`obZf*)Ce6qBSO3g97r5kf}-(gN1mLV0s#MU*+VEtOpef z3O*>ThOSv;Lij{%#v18OZS+xX^c&5X;jYu0X79l4-c&N1Xy%@?WCS7epRt6~VnIiC z3lhCwMKF0Ye9Y5o^j5Pd5hm%&51UH3}#JwxqFvFo|xUpP3vZ zbP4GUiuZHZNl&s$_=VD2WQ}og>1>MYb5~1j{v#KniulU`yTiuDZUYd{<=iB_Q+k%W zhJ8QFYP~Fz72bPK$Yw5EW#vCh?F8#6T)Tz>rR&K#ql2)Ve6{7k^aXe$28MU^dDnn~ zgmt8oKZ^nolQ|L9RyDDNnRW9#2)OBmSfl%)Zhq4A%i20Mi2WZq`LuPab4lGYqV=oW z_;WeY7<7belQ5kDo21TDb6BU~GqS76ULjQ?*8$a;kwWcw5g$XMVqWJpIGib#+OEW6 zibr|ttEAjt{Q|A)7i7qR=V&*cyMc~3P@j9e+~=*5fUE*!CH@@U|J*xt|2x*%&zsnM zfZJ?r^1z*oynd@2P>rDu3kB-+033XuKIi=XbUc8Pz3{rCJSeSgaX8;Pw!lvu9a*w0 zhPWg`K0Vh}t%den9&>>lyicc#k8@YV3ejD=qJ`Khk>5|2%rUf=>&Sp+2e#$%Mq?-^ zehqBy_KIsA-G!OpMqxiMqNIaIS;!2{RuoQdi90cNQy<%$kwZjono}X1Ob4}Iotp5V z&IsvU_dwzl?n8Sq{|(}^6Le0$8D=wbWA3yu>hYu16qP^dMTs`sN`Y3fY-tUE(;~2^ zUqHz5QOt>du0cUZ^zIOc5H*!*5J0R=o{4a%d~6$SEA_=UEDFX=GHuB`2Sxj-j607G z8=fHqJeZYK3o~5Et|1Ljqnlbvr~;NH!$Ud3i$f_NR?*rqGAjK$HAzW-J2KWD++;+~%2fMN$x z(hfynxMvS%>n?PYT2#+MS;*^=|iR%{|qcM5|Cgs7(F}#anKFa_KY0dpK0kJ^06zs)T zy4+f{zgx0bOLTiIYFtdONnZ5PpXg3^WSr<$^gw+65TaotYB63y$(HO8{Uh?AanIa_ zG(02Xf2NXUB|Tp(q%=wR>2n!8a^dSAMLigGQ9>2z_4A`o@P6oB2#C4*E+&}kav2if z5ngne7gU6f@*(W#xbGc-S@ma=2H9vAtgDRPdYhI zLs~7oJ7{t_v=`DXGrbFMAtA9Z7k-6)enme1jYR(IT8GP+LvxE&hY&FsQ%J;38vTdy zj>x&^Mmpl)^nDHXB}Nt~-X;*Ii_2(tmQ|+kk@)z@3S>Y{B<$nG3aY=N8H3vi&}=ih zHPx!f;zc3yn7OWTX1n^c4sx4UqbN|=LT7;m3xj%_)*9jA`Xhhq8AhDW$^9tMDpZK0 zb--b|6SbO)vH7XXBnZBAAQU$XqEq8HcG*B)(E43*_x%`&bhV z^V6w~I!?S+*9nbgv<989H`YA#ntfRFF$fM(3%3^%rq24%J7lbJe+0*$&0LDBrB}%_ z;5sFS=f?@i8eoC|cd7K>>^e_OeMuREB+jDiXDR%B#lWaU4!FcqXx4)jNSlw&hdV)GiZcs1pf)4qSUhXVm8&*no14;GKAY!cR3z1 zyWG6Pr!`5B+TyvG?NvwK=g$Kab;qISlovyJEJKUSJmfg+hfFyr`~|mDZzs!1l6B5H z7D-@Zi;qk{)hUOD8{&J;Y4xAHf%hTiW!`bDaD8>qXT6yBQ{DXbZDs|kIR%Br z>{+-vZNkLAfH|>b(ib{m%xYG6rdPzg-63j640m~BE2gFGy}(T&o<(Ctn!B;wg{mw~ za=gc(@fmroHn^d)cWpwg$5dx^^2BLpS9$hbv-Kt_YWJy=mz>O7(4J^6v_ys~Ry9z< z;FOjJBR$I@yxoVsro0*f*%(UMx1stL!kY<1GEe6*RJ|petuA^B<;7*OQ>-q_fTUoL z&lALTgNwEVwiW(oVQ{Q7i!nhqb9#a(F&BKF*S2Q>^NFf~NXG8&=_qx(E8Jo%tW_vi zy^w+$PSMgmq-7A8t)tnbDT!6*0(I1{qBKVIPR7}t}QU+ zMu)+XjtbVgO5@v41P)%9WhXQf~H|&XNL!hbW6jLsfL^IlbMf>%aen2{`jW z0O+~-)hpJe~{|FNDSWu`+^a%nJ0g9nUo1 z-(5Ylvdwh`&aIqsu6=NRa$R0DJM$DMCdcvAs4iIA1N(J_tOigFT5Yt&;p!>@DX)wB zOLwO?lkr(X?J=Ob0L~!P7O+$%r^=pi!ly-&$fq>)%$D}vbd$fO%|DEGJs@zoBJb|F zbzEMf(yp5~bIEMpX3J-1&+ROU%|nXqF_$YQ{ppx1j$4w3{i^loV-xEyT+NvV3x&bi z&jqc`UA$ST@vR=>EVk1>vIasy~kh~L;zs67{ff~xE5j-u2PLrp@7Mn zBfF2e?xe!&5 zl((-qeiI(gwt4G{(X~YJf;rP{mW);__h-q-{kc5xKNDr{Gl>O+X=00R#dJSy?RFuFRNErE!;QPEcy^2+U5@zt&wgUg~dsN$LRNL`L@N%C3bc3 zeJw40FJh#mv$M+$SZnaEySvM2P@1T=y3&DY7xe@=%O!`=hXwIKaKEUeV%-H0-s_o^ zVTv1pk53mf)I>`%{9|kcW*(BLKZ-++S|m<`2LJ|G(RZt!AnaslBs(le7Q1f8RcTTU&tp2CzeniIiE30ev2=Ih}-2HiTwdloh(e zzu9?vAH=@KWhkC=`*zNq%{v@mptCC-Y8!RLaHd#{BOFcfdn8i6N5#}qwbJk5Zh2yx zE&1kI2{fllK8==l_4OhfqQ*ovM=x4`$-wp<`YNJh1;}V(qcx12Km?z-dQ6+iVGF|f zV*bo0!a~sUHKfa*X`w{E!@p0RqJ_dEg<}>+rMR%S6Aeb9>HFWH<2MN4@>_KFt)J3y z*0Oi+-e^nKJII#96?y06TZT*+ljJsZoN@CuE|qDswe-!N*HsLY55(~FjRXew5}m*LHXUb8wdd?dSE3Da^OuvSZ)mAK=;?bK4|+jYv6ny~ z6zl0oVS?Fv>BudfdqCHrC$OnuTY=;Hq>+foA+1yFH-^dZ~U5%e?P zb+Ec4;rAy{wI2Yo`OC@xB;yQA&0mGgFX;q&ZjyoX3<;(V%Va#vx6R01s}VGw8%q7~ zs!V003X_$ok%pPmr3?eC)~Sql*3$5hwWL)M$c4~#{+tO46XNn0Ds3S*o)ke4M^Mz+ zJKEbj?B#PXCIM#F-VIA>?E zqw4e|VjkdHLiuV!rSwSI-O}pexNhmO^Upuukx9duD2GKycyDM5?JEvKgkbe>!^t-c69y zzC({;gGSMJw}n;P?1o9hBsF~=hD|8U7stkmJ=_JsqRr;aJP?&uqJ_nkOuEOZ{MxPYFKjPe zJV``*E5SEjPqOKH{Aj&(!QjS4xhbE@XEbXx!6n6QV~qJd=|7!)|0u``$rYVn*d$rZG9SP=mn4D9*u<^u9XnJtd&~zv?J@kfuW_oxgsa1FY0H@Fw zPn>;|(Y&SL-=lIS{A|6n;iR=PIbQ1g-o@6zwy#+STU!UMv;Tg@6<7F@=|F2>te5+9 z&sZQZ*0U1d4y9W}p`}?srGdlTIq3J+tjh3T7VO&EE^Ec|88;rsWd>SX2WEFyJGeiA zoIAhL+_|!|S-Sbb>dvU$9>p?+(Ovsx*wdk=DnM$Mq8)G(TP9{2lc1|vjG(%P%_L_K zSuC(73dxQHgCF70V-_J9RxlPFhnrd43f?-ffNNUV?;9J$L=V0tYnHZJrSHIGstol^ za&J(b^y~+teOkYhf}P445|gt-3P;%C2ur0*Z14%bbr9#dXw1-bTGrB_pUj2q?D;vGVQl~xZ0>v7D@4uQv9*t@e00_boyjTmGS$@ zy>K6T7VRHY{k9!>3GgC`%G#sPIcK1ZIp7g;F2HLr8_9B%9pAZl=_hb4TQCsQd^c^* zereW6>Z@CgG`_2w0xWu%LC}_9_G4iXuXzN-D z0H~8UYoDN%e3Bjz6U}fc{Xx}s>{0`4$Ibx{*_4rTG-1_1!T8nsc;Dz+@A3QdsQ&?P;9JiEh=d;-mAB&*XN*gFto!q{MtEUqeSH)J)x!$M~+JI@T z*E93=Y2^*z>I5svySSn8KTf30X?(JEB(O2jf1{-B?htJ=QnX zh+9yo4*U);;jmqR(?q3i#qdQ6G3-T=ExO&HA+YHAqOJ2OOy?QtD)ED(V(u|TYtNfKZL1(6*Ypni{lmTgUFdW}0N6NFDA4~P z(4V%D&V7V9`jPiY2UBy0^>|Xr(rrsCG-X8Hj4`vh-3Mk)LX#SFnn2iG92+l` z#*o-sv`V;;c;`};l9ouR;>KAvr5MbXG&|HzM_bAS>^MYM z%;~J7uq7=-M2wsS2DYuORaEOf`X8{mJDG4#%6#pJ{?A!=kx@c?ecJwQTx)-8Yya#S zU3mdb24{2PgCs6mHx(;2LfOFui0x<7fqUFb2-Nx_@pxhOULpS!gWBfS(3 zbMK8e^Z@5NI^-wpDImA6Tc1G|VE>n@r?Nngx+!z$UJxGzde$J^aXc9P6UYy1UMD|_ z;8PVXmK$6TaoHFEas(X`YuAIf^GT83g3q9Rtw0@uGQ-mYZw^j{L750tK#^y7X{lAQ z%~tRaKlscO3yJNmmYHMht)lcMktcT@CK=hd8yJaV@_T&UDnA7P{j+y*k4j6qN0n{e z|JvO)zUga|wwMK=r&`^Q#kTbz-x-;F-z{{x;n>*~hG4LCC&jB^eSd-R|Uh4lWCY9Snc6a8~$H=yKDY3u6;C#L{^@dDrwr=jvM zMENqyr$H80WbsCtrLj~vZItgd$QT%hb2cUEe4X@s~ z1$&EpF(h4Q<(}_2cW~*G8zMlUuuR`L+_9}-GQ!8)Rj2~3qN2DnilqBYAnEA3YRP(_s8Ds1X7I3g`F@ zdXLWD%V2U-WfE(EdA}_l815OX#GQZMdA3a2H4QNWSKk@=@Ql01Wb>eS_AOhue3qQg z?Cj2JhY`;H?=8u=^e-gJxNO&e7sKv&@iLOumywaO%RA8ZT7M@P5aLkbNPjb)v`BWS z&qp7-)aZQcET*t@P5WT%uYg$~GML+erg5k(3Zqk%J}uF_IkvbWFCR#pt&vRB4N+2I zanm*hLwF__EHDVFsW8N)62aA&n)3RH6s}sbEErt2gzH(dJP=sEL|V?5N99meZD3{Ib$f0z1eJicdVH8`(NVY(Phh`asIMgXl5n^SfCJw zi@k*CkqGZ_7{o%b!Y4L0!R4t@N6j#-1sslyC^bTb%zETl1r{VC3LYuqPGKO8Ln$+7 zO_Cm_+Z9hvE{#T)PO_tdMDo4akUNdxkOmudaD_zbKx20Hd9%^z{7IHWg z@dGPL=iXwTqwc_g1KvWr@2TKu59h|Ll;Bv8^j^1Fq!IgqQ&!!(WFI-Qb(6sNJdTWP|R#jr_Fk$CRpilIYhos zV`gQxKp5j-&YIPuq+Zt2d!;AQAoI%wl{RF22-WgM#4UQ@;gryLbRiH&uWu*`7T0We zB>0Kxff}hY+LZ&?qy;oKvWDi&q6!2VmbPYnDz(@UGI*Gt4l1Fl85P%w7o*7u z5b9ILkULoc+w@pKwE>BDe#p78HL#GdHB7RCc5CXprmO2pTfV_jPbkdQ93JUnQq=VD zOdVW*+RlcxrqM9h-)xM>jR;gGNR8_?EurFAuESB`PUEd_k-C2C0gBH*K9}x_0EIqmE z^2#^1g@jNU=BXA}>K5+N#av|BGTNUjFZdIx3*h7guG8jf)dl%h%7j-rMEM3?CBM#R zGN^T_iB3V~;mrn>$uDx7X^jsx$-!m$Xq94DU&V1(`7>$%s1LTjE%aZf-qQn{3ufZr ztG9BQzP7f$*^|mSGio<3$S#T*(9-MGx1MuR*^K&r7at#wk=u0>t?hnV%D3S-fAQeC z7GEt>PGtHFLVc9(nq<)LTR^CvMy3rqg#-cYB>omQ8-?N>jAUyoMNz`ql7h59POXtY zKmtW>wtzP#Q>7&qHO!|X4j>Fg*P@fCKzYH8~Dgo5D zA4xVp;2I}b2|}aF1vch>oDR8wmm!>$9PFu*@D+ToBmAK1pcT@_Y zP@&?u{a-%kYp*yj^nK2W@X(c4T;cjZoV^E}WM!2$-nVkyy0@xs<(zZu%H7p*I``xm zm;@7mff-;31CyBn1_qQQFeFg~MZkc74B#TDh@c{_sJJF%S6x5XZx?l0Glnkz&v|cE zb@za--=E)5UAe34ecuzF^PK18vMy)~bK}98;m;4x1lvDapA#iax*}ahYw%aQKQsdT zfxg9gJA51jYL? zdG4FaDnf@#+ZYS_XMwdR+cJxkCw8)TvTNkk80PGl&mcRg4RT8dSw8%0A7qr@=Chpn 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 z%0D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

    Q9@_ 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%0DWk=+tG7Z>I-TqpdnQEv7)I{-MpOh@Zt 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­ll~B30Qi#Lg@rgDJ7rC`?1ghs@+$b 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 E?=ZbC&-jQNP%yz?xDS^Q) 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%0A1K@vH47? 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

    o0BYVP}Yec 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

    84%euXlUNB3MQgP?ezHAe#E}YT{ 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�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Ú!q1dn5a|558De!Vc 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%0DovxP4W!v4$hKHBkZ67R`NzAh;pD&eF^^Z=Es) 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%0D0w%2WMkj9_t> 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 diff --git a/public/assets/index.b312efde.css b/public/assets/index.2f5031fd.css similarity index 99% rename from public/assets/index.b312efde.css rename to public/assets/index.2f5031fd.css index f8783b9..da06e64 100644 --- a/public/assets/index.b312efde.css +++ b/public/assets/index.2f5031fd.css @@ -3,4 +3,4 @@ * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) -*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, .05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, .1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.2rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#0000008c}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:#000000e6}.navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#0000008c}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#00000008;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:#00000008;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px #00000020}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem}.offcanvas-header .btn-close{padding:.5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translate(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translate(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","\5fae\8f6f\96c5\9ed1",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)}:root{color-scheme:light;--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#ffffff;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, .04),0px 8px 20px rgba(0, 0, 0, .08);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, .12);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, .12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, .08),0px 12px 32px rgba(0, 0, 0, .12),0px 8px 16px -8px rgba(0, 0, 0, .16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0, 0, 0, .8);--el-overlay-color-light:rgba(0, 0, 0, .7);--el-overlay-color-lighter:rgba(0, 0, 0, .5);--el-mask-color:rgba(255, 255, 255, .9);--el-mask-color-extra-light:rgba(255, 255, 255, .3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:13px;--el-alert-description-font-size:12px;--el-alert-close-font-size:12px;--el-alert-close-customed-font-size:13px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);position:relative;background-color:var(--el-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--el-transition-duration-fast)}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:table-cell;padding:0 8px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:18px;vertical-align:text-top}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:5px 0 0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);top:9px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{--el-aside-width:300px;overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--el-aside-width)}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete__popper.el-popper[role=tooltip]{background:#fff;border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);list-style:none;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover,.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid var(--el-color-black)}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:var(--el-text-color-secondary)}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-color-white)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-default:40px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);position:fixed;background-color:var(--el-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--el-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-block;font-size:var(--el-badge-font-size);height:var(--el-badge-size);line-height:var(--el-badge-size);padding:0 var(--el-badge-padding);text-align:center;white-space:nowrap;border:1px solid var(--el-color-white)}.el-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--el-badge-size)/ 2);transform:translateY(-50%) translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--el-text-color-placeholder)}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;display:flex;align-items:center}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:var(--el-transition-color);color:var(--el-text-color-primary)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:var(--el-text-color-regular);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255, 255, 255, .5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color)}.el-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);color:var(--el-button-text-color);-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;transition:.1s;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button>span{display:inline-flex;align-items:center}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button:focus,.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:0}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--el-mask-color-extra-light)}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size);padding:12px 19px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-button--text{border-color:transparent;color:var(--el-color-primary);background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:var(--el-color-primary-light-3);border-color:transparent;background-color:transparent}.el-button--text:active{color:var(--el-color-primary-dark-2);border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-calendar{--el-calendar-border:var(--el-table-border, 1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--el-calendar-header-border-bottom)}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:var(--el-text-color-regular);font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:var(--el-calendar-cell-width)}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;transition:var(--el-transition-duration-fast)}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31, 45, 61, .11);--el-carousel-arrow-hover-background:rgba(31, 45, 61, .23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);border-radius:50%;background-color:var(--el-carousel-arrow-background);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:var(--el-carousel-arrow-font-size);display:inline-flex;justify-content:center;align-items:center}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical) * 2);text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width)/ 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:var(--el-transition-duration)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{transform:translateY(-50%) translate(-10px);opacity:0}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{transform:translateY(-50%) translate(10px);opacity:0}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader-panel{display:flex;border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;color:var(--el-cascader-color-empty)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;text-align:left;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;position:relative;font-size:var(--el-font-size-base);line-height:32px;outline:0}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader .el-input .el-input__suffix-inner .el-icon{height:calc(100% - 2px)}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__inner{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader__dropdown{font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper[role=tooltip]{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper[role=tooltip] .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--el-cascader-tag-background)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:var(--el-text-color-placeholder);color:var(--el-color-white)}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-cascader__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:var(--el-cascader-color-empty)}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 11px;padding:0;color:var(--el-cascader-menu-text-color);border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::placeholder{color:var(--el-text-color-placeholder)}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all);font-weight:700}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-1)}.el-check-tag.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary)}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-checkbox-button--large .el-checkbox-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary)}.el-checkbox{color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;user-select:none;margin-right:30px;height:32px}.el-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:var(--el-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid var(--el-checkbox-checked-icon-color);border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in 50ms;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--el-checkbox-font-size)}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{float:left;box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-0{max-width:0%;flex:0 0 0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{position:relative;left:4.1666666667%}.el-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{position:relative;left:8.3333333333%}.el-col-3{max-width:12.5%;flex:0 0 12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{position:relative;left:16.6666666667%}.el-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{position:relative;left:20.8333333333%}.el-col-6{max-width:25%;flex:0 0 25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{position:relative;left:29.1666666667%}.el-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{position:relative;left:33.3333333333%}.el-col-9{max-width:37.5%;flex:0 0 37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{position:relative;left:41.6666666667%}.el-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{position:relative;left:45.8333333333%}.el-col-12{max-width:50%;flex:0 0 50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{position:relative;left:54.1666666667%}.el-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{position:relative;left:58.3333333333%}.el-col-15{max-width:62.5%;flex:0 0 62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{position:relative;left:66.6666666667%}.el-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{position:relative;left:70.8333333333%}.el-col-18{max-width:75%;flex:0 0 75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{position:relative;left:79.1666666667%}.el-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{position:relative;left:83.3333333333%}.el-col-21{max-width:87.5%;flex:0 0 87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{position:relative;left:91.6666666667%}.el-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{position:relative;left:95.8333333333%}.el-col-24{max-width:100%;flex:0 0 100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.el-col-xs-0,.el-col-xs-0.is-guttered{display:none}.el-col-xs-0{max-width:0%;flex:0 0 0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{position:relative;left:4.1666666667%}.el-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{position:relative;left:8.3333333333%}.el-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{position:relative;left:16.6666666667%}.el-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{position:relative;left:20.8333333333%}.el-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{position:relative;left:29.1666666667%}.el-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{position:relative;left:33.3333333333%}.el-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{position:relative;left:41.6666666667%}.el-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{position:relative;left:45.8333333333%}.el-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{position:relative;left:54.1666666667%}.el-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{position:relative;left:58.3333333333%}.el-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{position:relative;left:66.6666666667%}.el-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{position:relative;left:70.8333333333%}.el-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{position:relative;left:79.1666666667%}.el-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{position:relative;left:83.3333333333%}.el-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{position:relative;left:91.6666666667%}.el-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{position:relative;left:95.8333333333%}.el-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0,.el-col-sm-0.is-guttered{display:none}.el-col-sm-0{max-width:0%;flex:0 0 0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{position:relative;left:4.1666666667%}.el-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{position:relative;left:8.3333333333%}.el-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{position:relative;left:16.6666666667%}.el-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{position:relative;left:20.8333333333%}.el-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{position:relative;left:29.1666666667%}.el-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{position:relative;left:33.3333333333%}.el-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{position:relative;left:41.6666666667%}.el-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{position:relative;left:45.8333333333%}.el-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{position:relative;left:54.1666666667%}.el-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{position:relative;left:58.3333333333%}.el-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{position:relative;left:66.6666666667%}.el-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{position:relative;left:70.8333333333%}.el-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{position:relative;left:79.1666666667%}.el-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{position:relative;left:83.3333333333%}.el-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{position:relative;left:91.6666666667%}.el-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{position:relative;left:95.8333333333%}.el-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0,.el-col-md-0.is-guttered{display:none}.el-col-md-0{max-width:0%;flex:0 0 0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{position:relative;left:4.1666666667%}.el-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{position:relative;left:8.3333333333%}.el-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{position:relative;left:16.6666666667%}.el-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{position:relative;left:20.8333333333%}.el-col-md-6{display:block;max-width:25%;flex:0 0 25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{position:relative;left:29.1666666667%}.el-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{position:relative;left:33.3333333333%}.el-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{position:relative;left:41.6666666667%}.el-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{position:relative;left:45.8333333333%}.el-col-md-12{display:block;max-width:50%;flex:0 0 50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{position:relative;left:54.1666666667%}.el-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{position:relative;left:58.3333333333%}.el-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{position:relative;left:66.6666666667%}.el-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{position:relative;left:70.8333333333%}.el-col-md-18{display:block;max-width:75%;flex:0 0 75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{position:relative;left:79.1666666667%}.el-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{position:relative;left:83.3333333333%}.el-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{position:relative;left:91.6666666667%}.el-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{position:relative;left:95.8333333333%}.el-col-md-24{display:block;max-width:100%;flex:0 0 100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0,.el-col-lg-0.is-guttered{display:none}.el-col-lg-0{max-width:0%;flex:0 0 0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{position:relative;left:4.1666666667%}.el-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{position:relative;left:8.3333333333%}.el-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{position:relative;left:16.6666666667%}.el-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{position:relative;left:20.8333333333%}.el-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{position:relative;left:29.1666666667%}.el-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{position:relative;left:33.3333333333%}.el-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{position:relative;left:41.6666666667%}.el-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{position:relative;left:45.8333333333%}.el-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{position:relative;left:54.1666666667%}.el-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{position:relative;left:58.3333333333%}.el-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{position:relative;left:66.6666666667%}.el-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{position:relative;left:70.8333333333%}.el-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{position:relative;left:79.1666666667%}.el-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{position:relative;left:83.3333333333%}.el-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{position:relative;left:91.6666666667%}.el-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{position:relative;left:95.8333333333%}.el-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0,.el-col-xl-0.is-guttered{display:none}.el-col-xl-0{max-width:0%;flex:0 0 0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{position:relative;left:4.1666666667%}.el-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{position:relative;left:8.3333333333%}.el-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{position:relative;left:16.6666666667%}.el-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{position:relative;left:20.8333333333%}.el-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{position:relative;left:29.1666666667%}.el-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{position:relative;left:33.3333333333%}.el-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{position:relative;left:41.6666666667%}.el-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{position:relative;left:45.8333333333%}.el-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{position:relative;left:54.1666666667%}.el-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{position:relative;left:58.3333333333%}.el-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{position:relative;left:66.6666666667%}.el-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{position:relative;left:70.8333333333%}.el-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{position:relative;left:79.1666666667%}.el-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{position:relative;left:83.3333333333%}.el-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{position:relative;left:91.6666666667%}.el-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{position:relative;left:95.8333333333%}.el-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);font-weight:500;transition:border-bottom-color var(--el-transition-duration);outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);overflow:hidden;box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item__content{padding-bottom:25px;font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);line-height:1.7692307692}.el-collapse-item:last-child{margin-bottom:-1px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px;float:right}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-picker{display:inline-block;position:relative;line-height:normal}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:#ffffffb3}.el-color-picker__trigger{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;height:32px;width:32px;padding:4px;border:1px solid var(--el-border-color);border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{display:inline-flex;justify-content:center;align-items:center;width:100%;height:100%}.el-color-picker .el-color-picker__empty{font-size:12px;color:var(--el-text-color-secondary)}.el-color-picker .el-color-picker__icon{display:inline-flex;justify-content:center;align-items:center;color:#fff;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light)}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td .el-date-table-cell{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td .el-date-table-cell .el-date-table-cell__text{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translate(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{margin-left:5px;margin-right:5px;background-color:var(--el-datepicker-inrange-bg-color);border-radius:15px}.el-date-table td.selected .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:var(--el-datepicker-header-text-color)}.el-date-table th{padding:5px;color:var(--el-datepicker-header-text-color);font-weight:400;border-bottom:solid 1px var(--el-border-color-lighter)}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:var(--el-datepicker-text-color);margin:0 auto}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:192px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:var(--el-text-color-secondary);position:absolute;left:0;width:100%;z-index:var(--el-index-normal);text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:var(--el-text-color-regular)}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:var(--el-date-editor-width)}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{height:inherit;font-size:14px;color:var(--el-text-color-placeholder);float:left}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:transparent}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{flex:1;display:inline-flex;justify-content:center;align-items:center;height:100%;padding:0 5px;margin:0;font-size:14px;word-break:keep-all;color:var(--el-text-color-primary)}.el-date-editor .el-range__close-icon{font-size:14px;color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__inner{display:inline-flex;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:40px}.el-range-editor--large.el-input__inner{height:40px}.el-range-editor--large .el-range-separator{line-height:40px;font-size:14px}.el-range-editor--large .el-range-input{font-size:14px}.el-range-editor--small{line-height:24px}.el-range-editor--small.el-input__inner{height:24px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:12px}.el-range-editor--small .el-range-input{font-size:12px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);line-height:30px}.el-picker-panel .el-time-panel{margin:5px 0;border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-color-white);box-shadow:var(--el-box-shadow-light)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);padding:4px 12px;text-align:right;background-color:var(--el-bg-color-overlay);position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:var(--el-datepicker-text-color);padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:var(--el-datepicker-icon-color);border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;padding-top:6px;background-color:var(--el-bg-color-overlay);overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px var(--el-border-color-lighter)}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:var(--el-text-color-regular)}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:var(--el-datepicker-icon-color)}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid var(--el-datepicker-border-color)}.el-time-panel{border-radius:2px;position:relative;width:180px;left:0;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-16px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light)}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:var(--el-text-color-primary)}.el-time-panel__btn.confirm{font-weight:800;color:var(--el-timepicker-active-color,var(--el-color-primary))}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:23px;font-size:14px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{font-weight:700;color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background)}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color)}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:20px;--el-dialog-border-radius:var(--el-border-radius-small);position:relative;margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;width:var(--el-dialog-width,50%)}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding:var(--el-dialog-padding-primary);padding-bottom:10px;margin-right:16px;word-break:break-all}.el-dialog__headerbtn{position:absolute;top:6px;right:0;padding:0;width:54px;height:54px;background:0 0;border:none;outline:0;cursor:pointer;font-size:var(--el-message-close-size,16px)}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{padding:calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size);word-break:break-all}.el-dialog__footer{padding:var(--el-dialog-padding-primary);padding-top:10px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px calc(var(--el-dialog-padding-primary) + 5px) 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--el-border-color) var(--el-border-style)}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--el-border-color) var(--el-border-style)}.el-divider__text{position:absolute;background-color:var(--el-bg-color);padding:0 20px;font-weight:500;color:var(--el-text-color-primary);font-size:14px}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color, var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary, 20px)}.el-drawer{position:absolute;box-sizing:border-box;background-color:var(--el-drawer-bg-color);display:flex;flex-direction:column;box-shadow:var(--el-box-shadow-dark);overflow:hidden;transition:all var(--el-transition-duration)}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{border:none;cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:transparent;outline:0}.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__close-btn .el-icon{font-size:inherit;vertical-align:text-bottom}.el-drawer__body{flex:1;padding:var(--el-drawer-padding-primary);overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{opacity:0}.el-drawer-fade-enter-to,.el-drawer-fade-leave-from{opacity:1}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary-light-3);--el-dropdown-menu-index:10;display:inline-flex;position:relative;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary-light-3);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:0}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{list-style:none;padding:0;margin:0;box-sizing:border-box}.el-dropdown .el-dropdown__caret-button{padding-left:0;padding-right:0;display:inline-flex;justify-content:center;align-items:center;width:32px;border-left:none}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:var(--el-overlay-color-lighter)}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:0}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{position:relative;top:0;left:0;z-index:var(--el-dropdown-menu-index);padding:5px 0;margin:0;background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;list-style:none}.el-dropdown-menu__item{display:flex;align-items:center;white-space:nowrap;list-style:none;line-height:22px;padding:5px 16px;margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:0}.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{margin:6px 0;border-top:1px solid var(--el-border-color-lighter)}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;line-height:22px;font-size:14px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;line-height:20px;font-size:12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding)}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;object-fit:contain}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-secondary)}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height)}.el-form{--el-form-label-font-size:var(--el-font-size-base)}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item{display:block}.el-form--label-top .el-form-item .el-form-item__label{display:block;text-align:left;margin-bottom:8px;line-height:22px}.el-form--inline .el-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form--large.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:12px;line-height:22px}.el-form--default.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:8px;line-height:22px}.el-form--small.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:4px;line-height:20px}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label,.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label,.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label,.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item__label-wrap{display:flex}.el-form-item__label-wrap .el-form-item__label{display:inline-block}.el-form-item__label{flex:0 0 auto;text-align:right;font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{display:flex;flex-wrap:wrap;align-items:center;flex:1;line-height:32px;position:relative;font-size:var(--font-size);min-width:0}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-select-v2__wrapper,.el-form-item.is-error .el-select-v2__wrapper:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{box-shadow:0 0 0 1px transparent inset}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-header-height)}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none}.el-image-viewer__btn .el-icon{font-size:inherit;cursor:pointer}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none}.el-image-viewer__actions{left:50%;bottom:30px;transform:translate(-50%);width:282px;height:44px;padding:0 23px;background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__prev{top:50%;transform:translateY(-50%);left:40px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__next{top:50%;transform:translateY(-50%);right:40px;text-indent:2px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__close{width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle}.el-image__preview{cursor:pointer}.el-input-number{position:relative;display:inline-block;width:150px;line-height:30px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;padding-left:42px;padding-right:42px;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.el-input-number__decrease,.el-input-number__increase{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--el-fill-color-light);color:var(--el-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__inner,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__inner{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border)}.el-input-number__decrease{left:1px;border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border)}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{width:40px;font-size:14px}.el-input-number--large .el-input__inner{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:24px;font-size:12px}.el-input-number--small .el-input__inner{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border)}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--el-font-size-base)}.el-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);border:none}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{border-color:var(--el-color-danger)}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;font-size:var(--el-font-size-base);display:inline-flex;width:100%;line-height:32px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--el-text-color-disabled)}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear{color:var(--el-input-icon-color);font-size:14px;cursor:pointer;transition:var(--el-transition-color);margin-left:8px}.el-input .el-input__clear:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:var(--el-color-info);font-size:12px}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{position:relative;-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:inline-block;font-size:inherit;height:32px;line-height:32px;outline:0;padding:0 11px;transition:var(--el-transition-box-shadow);width:100%;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__suffix{display:inline-flex;position:absolute;height:100%;right:12px;top:0;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__suffix-inner{pointer-events:all;display:inline-flex}.el-input__prefix{display:inline-flex;position:absolute;height:100%;left:12px;top:0;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration)}.el-input__prefix-inner{pointer-events:all;display:inline-flex}.el-input .el-input__icon{height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border,) inset}.el-input.is-disabled .el-input__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--suffix .el-input__inner{padding-right:31px}.el-input--suffix--password-clear .el-input__inner{padding-right:55px}.el-input--prefix .el-input__inner{padding-left:31px}.el-input--large{font-size:14px;line-height:38px}.el-input--large .el-input__inner{height:40px;line-height:40px;padding:0 15px}.el-input--large .el-input__icon{line-height:40px}.el-input--large.el-input--prefix .el-input__inner{padding-left:35px}.el-input--large.el-input--suffix .el-input__inner{padding-right:35px}.el-input--large .el-input__prefix{left:16px}.el-input--large .el-input__suffix{right:16px}.el-input--small{font-size:12px;line-height:22px}.el-input--small .el-input__inner{height:24px;line-height:24px;padding:0 7px}.el-input--small .el-input__icon{line-height:24px}.el-input--small.el-input--prefix .el-input__inner{padding-left:25px}.el-input--small.el-input--suffix .el-input__inner{padding-right:25px}.el-input--small .el-input__prefix{left:8px}.el-input--small .el-input__suffix{right:8px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);vertical-align:middle;display:table-cell;position:relative;border-radius:var(--el-input-border-radius);padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input__inner{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 0 0 1px var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input-group--prepend>.el-input__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{z-index:1;box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-input-group--append>.el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:-1px 0 0 0 var(--el-input-border-color),-1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner:focus{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner:focus{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{z-index:1;box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder)}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color)}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid var(--el-link-hover-text-color)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{display:inline-flex;justify-content:center;align-items:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--primary.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--success.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--error.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info:after{border-color:var(--el-link-text-color)}.el-link.el-link--info.is-underline:hover:after{border-color:var(--el-link-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:var(--el-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--el-transition-duration)}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/ 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{top:50%;margin-top:calc((0px - var(--el-loading-spinner-size))/ 2);width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--el-main-padding)}.el-menu{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-text-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);border-right:solid 1px var(--el-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--el-menu-bg-color);box-sizing:border-box}.el-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:solid 1px var(--el-menu-border-color);border-right:none}.el-menu--horizontal>.el-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:0}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-bg-color-overlay)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);display:flex;align-items:center;height:36px;padding:0 10px;color:var(--el-menu-text-color)}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:var(--el-menu-hover-text-color);background-color:var(--el-menu-hover-bg-color)}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu{position:relative}.el-menu--collapse .el-sub-menu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu--collapse .el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:none}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu .el-icon{flex-shrink:0}.el-menu-item{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 20px;list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:0}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 20px}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 20px;list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:0}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:rotate(180deg)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform var(--el-transition-duration);font-size:12px;margin-right:0;width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:var(--el-text-color-secondary)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:15px}.el-message-box{display:inline-block;width:var(--el-messagebox-width);padding-bottom:10px;vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);border:1px solid var(--el-border-color-lighter);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-box-shadow-light);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-overlay.is-message-box .el-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{position:relative;padding:var(--el-messagebox-padding-primary);padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:var(--el-messagebox-font-size);line-height:1;color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{position:absolute;top:var(--el-messagebox-padding-primary);right:var(--el-messagebox-padding-primary);padding:0;border:none;outline:0;background:0 0;font-size:var(--el-message-close-size,16px);cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{padding:10px var(--el-messagebox-padding-primary);color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input div.invalid>input{border-color:var(--el-color-error)}.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status.el-icon{position:absolute}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px;word-break:break-word}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns{justify-content:center}.el-message-box--center .el-message-box__content{padding-left:calc(var(--el-messagebox-padding-primary) + 12px);padding-right:calc(var(--el-messagebox-padding-primary) + 12px);text-align:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-message{--el-message-min-width:380px;--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:15px 15px 15px 20px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary)}.el-message{min-width:var(--el-message-min-width);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width-base);border-style:var(--el-border-style-base);border-color:var(--el-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);transition:opacity .3s,transform .4s,top .4s;background-color:var(--el-message-bg-color);transition:opacity var(--el-transition-duration),transform .4s,top .4s;padding:var(--el-message-padding);display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content,.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content,.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content,.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content,.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message__icon{margin-right:10px}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size, 16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular)}.el-notification{display:flex;width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);position:fixed;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:anywhere;overflow:hidden;z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--el-notification-content-color);text-align:justify}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size)}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--el-overlay-color-lighter);overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:var(--el-border-color)}.el-page-header__icon{font-size:18px;margin-right:6px;display:flex;align-items:center}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:var(--el-text-color-primary)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:3px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-height-extra-small:24px;--el-pagination-line-height-extra-small:var(--el-pagination-height-extra-small);white-space:nowrap;padding:2px 5px;color:var(--el-pagination-text-color);font-weight:400;display:flex;align-items:center}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-select .el-input{width:128px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button:disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:var(--el-pagination-bg-color);cursor:pointer;margin:0;color:var(--el-pagination-button-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination .el-pager li.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:var(--el-font-size-extra-small);line-height:var(--el-pagination-line-height-extra-small);height:var(--el-pagination-height-extra-small);min-width:24px}.el-pagination--small .arrow.is-disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:var(--el-pagination-height-extra-small);line-height:var(--el-pagination-line-height-extra-small);font-size:var(--el-font-size-extra-small)}.el-pagination--small .el-pagination__editor{height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-height-extra-small)}.el-pagination--small .el-input--small,.el-pagination--small .el-input__inner{height:var(--el-pagination-height-extra-small)!important;line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-input__suffix,.el-pagination--small .el-input__suffix .el-input__suffix-inner,.el-pagination--small .el-input__suffix .el-input__suffix-inner i.el-select__caret{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-select .el-input{width:100px}.el-pagination__sizes{margin:0 16px 0 0;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__sizes+button.btn-prev[type=button]{margin-left:0}.el-pagination__sizes+.el-pager .number:first-child{margin-left:0}.el-pagination__sizes+.el-pager .number:last-child{margin-right:0}.el-pagination__total{margin-right:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__total+button.btn-prev[type=button]{margin-left:0}.el-pagination__total+.el-pager .number:first-child{margin-left:0}.el-pagination__total+.el-pager .number:last-child{margin-right:0}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__rightwrapper{flex:1;display:flex;align-items:center;justify-content:flex-end}.el-pagination__editor{line-height:18px;margin:0 8px;height:var(--el-pagination-button-height);min-width:56px;text-align:center;box-sizing:border-box;border-radius:var(--el-pagination-border-radius)}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-button-height)}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 4px;background-color:var(--el-pagination-button-bg-color);color:var(--el-text-color-regular);min-width:32px;border-radius:2px}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next.is-first,.el-pagination.is-background .btn-prev.is-first,.el-pagination.is-background .el-pager li.is-first{margin-left:0}.el-pagination.is-background .btn-next.is-last,.el-pagination.is-background .btn-prev.is-last,.el-pagination.is-background .el-pager li.is-last{margin-right:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next:hover:not([disabled]),.el-pagination.is-background .btn-prev:hover:not([disabled]){color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled):hover{color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled).is-active{background-color:var(--el-color-primary);color:var(--el-color-white);font-weight:700}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{min-width:24px}.el-pager{-webkit-user-select:none;user-select:none;list-style:none;font-size:0;padding:0;margin:0;display:flex;align-items:center}.el-pager li{padding:0 4px;background:var(--el-pagination-bg-color);display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box;cursor:pointer;text-align:center}.el-pager li.btn-quickprev:hover,.el-pager li.btn-quicknext:hover{cursor:pointer}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:32px;color:var(--el-pagination-button-color)}.el-pager li.btn-quicknext.is-disabled,.el-pager li.btn-quickprev.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pager li.btn-quicknext svg,.el-pager li.btn-quickprev svg{pointer-events:none}.el-pager li.is-active+li{border-left:0}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color)}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default}.el-pager+button.btn-next[type=button]{margin-right:0}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-color-white);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{position:relative;line-height:1;display:flex;align-items:center}.el-progress__text{font-size:14px;color:var(--el-text-color-regular);margin-left:5px;min-width:50px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{flex-grow:1;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:var(--el-border-color-lighter);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:var(--el-color-primary);text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{transform:translateZ(0);animation:indeterminate 3s infinite}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button__original-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__original-radio:checked+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px var(--el-radio-button-checked-border-color)}.el-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary)}.el-radio{color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;outline:0;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;margin-right:32px;height:32px}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{padding:0 11px 0 7px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);position:relative;cursor:pointer;display:inline-block;box-sizing:border-box}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{width:4px;height:4px;border-radius:var(--el-radio-input-border-radius);background-color:var(--el-color-white);content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary)}.el-rate{display:inline-flex;align-items:center;height:32px}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--el-rate-void-color)}.el-rate .el-rate__icon{position:relative;display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--el-rate-fill-color)}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate.is-disabled .el-rate__item{cursor:auto;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-result-padding)}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{margin:0;font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary)}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__option-item:hover:not(.hover){background-color:transparent}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;margin:6px 0!important;padding:0!important;box-sizing:border-box}.el-select-dropdown__option-item{font-size:var(--el-select-font-size);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__option-item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__option-item.is-disabled:hover{background-color:var(--el-color-white)}.el-select-dropdown__option-item.is-selected{background-color:var(--el-fill-color-light);font-weight:700}.el-select-dropdown__option-item.is-selected:not(.is-multiple){color:var(--el-color-primary)}.el-select-dropdown__option-item.hover{background-color:var(--el-fill-color-light)!important}.el-select-dropdown__option-item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon{position:absolute;right:20px;top:0;height:inherit;font-size:12px}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon svg{height:inherit;vertical-align:middle}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--el-border-color-light)}.el-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--el-border-color-light)}.el-select-group__title{padding-left:20px;font-size:12px;color:var(--el-color-info);line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-v2{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select-v2{display:inline-block;position:relative;vertical-align:middle;font-size:14px}.el-select-v2__wrapper{display:flex;align-items:center;flex-wrap:wrap;box-sizing:border-box;cursor:pointer;padding:1px 30px 1px 0;border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);transition:border-color var(--el-transition-duration-fast) var(--el-ease-in-out-bezier-function)}.el-select-v2__wrapper:hover{border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-filterable{cursor:text}.el-select-v2__wrapper.is-focused{border-color:var(--el-color-primary)}.el-select-v2__wrapper.is-hovering:not(.is-focused){border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled:hover{border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled.is-focus{border-color:var(--el-input-focus-border-color)}.el-select-v2__wrapper.is-disabled .is-transparent{opacity:1;-webkit-user-select:none;user-select:none}.el-select-v2__wrapper.is-disabled .el-select-v2__caret,.el-select-v2__wrapper.is-disabled .el-select-v2__combobox-input{cursor:not-allowed}.el-select-v2__wrapper .el-select-v2__input-wrapper{box-sizing:border-box;position:relative;margin-inline-start:12px;max-width:100%;overflow:hidden}.el-select-v2__wrapper,.el-select-v2__wrapper .el-select-v2__input-wrapper{line-height:32px}.el-select-v2__wrapper .el-select-v2__input-wrapper input{line-height:24px;height:24px;min-width:4px;width:100%;background-color:transparent;-webkit-appearance:none;appearance:none;background:0 0;border:none;margin:2px 0;outline:0;padding:0}.el-select-v2 .el-select-v2__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select-v2__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:14px}.el-select-v2__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select-v2__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select-v2--large .el-select-v2__wrapper .el-select-v2__combobox-input{height:32px}.el-select-v2--large .el-select-v2__caret,.el-select-v2--large .el-select-v2__suffix{height:40px}.el-select-v2--large .el-select-v2__placeholder{font-size:14px;line-height:40px}.el-select-v2--small .el-select-v2__wrapper .el-select-v2__combobox-input{height:16px}.el-select-v2--small .el-select-v2__caret,.el-select-v2--small .el-select-v2__suffix{height:24px}.el-select-v2--small .el-select-v2__placeholder{font-size:12px;line-height:24px}.el-select-v2 .el-select-v2__selection>span{display:inline-block}.el-select-v2:hover .el-select-v2__combobox-input{border-color:var(--el-select-border-color-hover)}.el-select-v2 .el-select__selection-text{text-overflow:ellipsis;display:inline-block;overflow-x:hidden;vertical-align:bottom}.el-select-v2 .el-select-v2__combobox-input{padding-right:35px;display:block}.el-select-v2 .el-select-v2__combobox-input:focus{border-color:var(--el-select-input-focus-border-color)}.el-select-v2__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;appearance:none;height:28px}.el-select-v2__input.is-small{height:14px}.el-select-v2__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select-v2__close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__suffix{display:inline-flex;position:absolute;right:12px;height:32px;top:50%;transform:translateY(-50%);color:var(--el-input-icon-color,var(--el-text-color-placeholder))}.el-select-v2__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotate(180deg);cursor:pointer}.el-select-v2__caret.is-reverse{transform:rotate(0)}.el-select-v2__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select-v2__caret.is-show-close:hover{color:--el-select-close-hover-color}.el-select-v2__caret.el-icon{height:inherit}.el-select-v2__caret.el-icon svg{vertical-align:middle}.el-select-v2__selection{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select-v2__wrapper{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);position:relative;transition:all var(--el-transition-duration) var(--el-ease-in-out-bezier-function)}.el-select-v2__input-calculator{left:0;position:absolute;top:0;visibility:hidden;white-space:pre;z-index:999}.el-select-v2__selected-item{line-height:inherit;height:inherit;-webkit-user-select:none;user-select:none;display:flex}.el-select-v2__placeholder{position:absolute;top:50%;transform:translateY(-50%);margin-inline-start:12px;width:calc(100% - 52px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--el-input-text-color,var(--el-text-color-regular))}.el-select-v2__placeholder.is-transparent{color:var(--el-text-color-placeholder)}.el-select-v2 .el-select-v2__selection .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:var(--el-fill-color)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;color:var(--el-color-white)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select-v2.el-select-v2--small .el-select-v2__selection .el-tag{margin:1px 0 1px 6px;height:18px}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown .el-select-dropdown__option-item.is-selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select{display:inline-block;position:relative;line-height:32px}.el-select__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select .el-select-tags-wrapper.has-prefix{margin-left:6px}.el-select--large{line-height:40px}.el-select--large .el-select-tags-wrapper.has-prefix{margin-left:8px}.el-select--small{line-height:24px}.el-select--small .el-select-tags-wrapper.has-prefix{margin-left:4px}.el-select .el-select__tags>span{display:inline-block}.el-select:hover:not(.el-select--disabled) .el-input__inner{box-shadow:0 0 0 1px var(--el-select-border-color-hover) inset}.el-select .el-select__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select .el-input__inner{cursor:pointer;display:inline-flex}.el-select .el-input__inner:focus{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select .el-input{display:flex}.el-select .el-input .el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select .el-input .el-select__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select .el-input .el-select__caret.el-icon{position:relative;height:inherit;z-index:2}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select .el-input.is-disabled .el-select__caret{cursor:not-allowed}.el-select .el-input.is-focus .el-input__inner{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select__close:hover{color:var(--el-select-close-hover-color)}.el-select__tags{position:absolute;line-height:normal;top:50%;transform:translateY(-50%);white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-select .el-select__tags .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 6px 2px 0}.el-select .el-select__tags .el-tag:last-child{margin-right:0}.el-select .el-select__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;top:0;color:#fff}.el-select .el-select__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select .el-select__tags .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select .el-select__tags .el-tag--info{background-color:var(--el-fill-color)}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);display:inline-block;height:16px;border-radius:var(--el-border-radius-base);width:100%}.el-skeleton__circle{border-radius:50%;width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size)}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px}.el-slider{width:100%;height:32px;display:flex;align-items:center}.el-slider__runway{flex:1;height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);position:relative;cursor:pointer}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);position:absolute;z-index:1;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal;outline:0}.el-slider__button-wrapper:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{display:inline-block;width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);border-radius:50%;box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{position:absolute;height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);transform:translate(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translate(-50%);font-size:14px;color:var(--el-color-info);margin-top:15px}.el-slider.is-vertical{position:relative;height:100%;flex:0}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:var(--el-bg-color-overlay);transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:var(--el-text-color-placeholder)}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:var(--el-text-color-primary)}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:var(--el-text-color-placeholder)}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:var(--el-fill-color-light)}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);--el-switch-core-border-radius:10px;--el-switch-width:40px;--el-switch-height:20px;--el-switch-button-size:16px}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:var(--el-switch-height);height:32px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);height:var(--el-switch-height);display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--el-text-color-primary)}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;display:inline-block;position:relative;width:var(--el-switch-width);height:var(--el-switch-height);border:1px solid var(--el-switch-off-color);outline:0;border-radius:var(--el-switch-core-border-radius);box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);vertical-align:middle}.el-switch__core .el-switch__inner{position:absolute;top:1px;left:1px;transition:all var(--el-transition-duration);width:var(--el-switch-button-size);height:var(--el-switch-button-size);display:flex;justify-content:center;align-items:center;left:50%;white-space:nowrap}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;user-select:none}.el-switch__core .el-switch__action{position:absolute;top:1px;left:1px;border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);width:var(--el-switch-button-size);height:var(--el-switch-button-size);background-color:var(--el-color-white);display:flex;justify-content:center;align-items:center;color:var(--el-switch-off-color)}.el-switch__core .el-switch__action .is-icon,.el-switch__core .el-switch__action .is-text{transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;user-select:none}.el-switch__core .is-text{font-size:12px}.el-switch__core .is-show{opacity:1}.el-switch__core .is-hide{opacity:0}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-on-color);background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{left:100%;margin-left:calc(-1px - var(--el-switch-button-size));color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__inner{left:50%;white-space:nowrap;margin-left:calc(-1px - var(--el-switch-button-size))}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px}.el-switch--large .el-switch__label,.el-switch--large .el-switch__label *{font-size:14px}.el-switch--small{font-size:12px;height:24px}.el-switch--small .el-switch__label,.el-switch--small .el-switch__label *{font-size:12px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--el-font-size-base)}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary-light-3)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, .15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, .15)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;height:-moz-fit-content;height:fit-content;width:100%;max-width:100%;background-color:var(--el-table-bg-color);font-size:14px;color:var(--el-table-text-color)}.el-table__inner-wrapper{position:relative}.el-table__inner-wrapper:before{left:0;bottom:0;width:100%;height:1px;z-index:3}.el-table.has-footer .el-table__inner-wrapper:before{bottom:1px}.el-table__empty-block{position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:var(--el-text-color-secondary)}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{position:relative;cursor:pointer;color:var(--el-text-color-regular);font-size:12px;transition:transform var(--el-transition-duration-fast) ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table thead{color:var(--el-table-header-text-color);font-weight:500}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{padding:8px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left;z-index:1}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding:0 12px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{-webkit-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;width:100%}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__footer-wrapper tr:first-child td:first-child,.el-table--border .el-table__footer-wrapper tr:first-child th:first-child,.el-table--border .el-table__inner-wrapper tr:first-child td:first-child,.el-table--border .el-table__inner-wrapper tr:first-child th:first-child,.el-table--group .el-table__footer-wrapper tr:first-child td:first-child,.el-table--group .el-table__footer-wrapper tr:first-child th:first-child,.el-table--group .el-table__inner-wrapper tr:first-child td:first-child,.el-table--group .el-table__inner-wrapper tr:first-child th:first-child{border-left:var(--el-table-border)}.el-table--border .el-table__footer-wrapper,.el-table--group .el-table__footer-wrapper{border-top:var(--el-table-border)}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{content:"";position:absolute;background-color:var(--el-table-border-color);z-index:3}.el-table--border .el-table__inner-wrapper:after{left:0;top:0;width:100%;height:1px;z-index:3}.el-table--border:before{top:-1px;left:0;width:1px;height:100%;z-index:3}.el-table--border:after{top:-1px;right:0;width:1px;height:100%;z-index:3}.el-table--border .el-table__inner-wrapper{border-right:none;border-bottom:none}.el-table--border .el-table__footer-wrapper{position:relative}.el-table--border .el-table__footer-wrapper{margin-top:-2px}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{position:sticky!important;z-index:2;background:var(--el-bg-color)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{content:"";position:absolute;top:0;width:10px;bottom:-1px;overflow-x:hidden;overflow-y:hidden;box-shadow:none;touch-action:none;pointer-events:none}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px;box-shadow:none}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{position:sticky!important;z-index:2;background:#fff;right:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:2}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:14px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--el-table-border);z-index:10}.el-table__column-filter-trigger{display:inline-block;cursor:pointer}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-bottom-patch{left:0;height:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-right-patch{top:0;height:100%;width:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--el-color-primary);z-index:1;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none}.el-tabs__new-tab{display:flex;align-items:center;justify-content:center;float:right;border:1px solid var(--el-border-color);height:20px;width:20px;line-height:20px;margin:10px 0 10px 10px;border-radius:3px;text-align:center;font-size:12px;color:var(--el-text-color-primary);cursor:pointer;transition:all .15s}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--el-border-color-light);z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:var(--el-text-color-secondary)}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:var(--el-text-color-primary);position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item .is-icon-close{border-radius:50%;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-left:5px}.el-tabs__item .is-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item .is-icon-close svg{margin-top:1px}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border:1px solid transparent;margin-top:-1px;color:var(--el-text-color-secondary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--el-border-color-light);border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--el-border-color-light);border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave var(--el-transition-duration)}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave var(--el-transition-duration)}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(-100%);opacity:0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px}.el-tag{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-text-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary);background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);display:inline-flex;justify-content:center;align-items:center;height:24px;padding:0 9px;font-size:var(--el-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-text-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-text-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-text-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-text-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-text-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color)}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--plain{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-text-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-text-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-text-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-text-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-text-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-text-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error)}.el-tag.is-closable{padding-right:5px}.el-tag--large{padding:0 11px;height:32px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{padding:0 7px;height:20px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);font-weight:700;cursor:pointer}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid var(--el-timeline-node-color)}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{position:absolute;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{left:-2px;width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light)}.el-timeline{margin:0;font-size:var(--el-font-size-base);list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{display:flex;align-items:center}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);background-color:var(--el-color-white);padding:var(--el-tooltip-v2-padding);border:1px solid var(--el-border-color)}.el-tooltip-v2__arrow{position:absolute;color:var(--el-color-white);width:var(--el-tooltip-v2-arrow-width);height:var(--el-tooltip-v2-arrow-height);pointer-events:none;left:var(--el-tooltip-v2-arrow-x);top:var(--el-tooltip-v2-arrow-y)}.el-tooltip-v2__arrow:before{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__arrow:after{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;background-color:var(--el-color-black);color:var(--el-color-white);border-color:transparent}.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px}.el-transfer{font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{overflow:hidden;background:var(--el-bg-color-overlay);display:inline-block;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:var(--el-transfer-panel-body-height);overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:22px;line-height:var(--el-transfer-item-height)}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;width:auto}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:calc(var(--el-transfer-filter-height)/ 2)}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{display:flex;align-items:center;height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);margin:0;padding-left:15px;border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black)}.el-transfer-panel .el-transfer-panel__header .el-checkbox{position:relative;display:flex;width:100%;align-items:center}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:var(--el-text-color-primary);font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0);color:var(--el-text-color-secondary);font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);margin:0;padding:0;border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius)}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:var(--el-text-color-regular)}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding:6px 15px 0;color:var(--el-text-color-secondary);text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-tree{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree{position:relative;cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--el-text-color-secondary);font-size:var(--el-font-size-base)}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:var(--el-color-primary)}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px;box-sizing:content-box}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__label{font-size:var(--el-font-size-base)}.el-tree-node__loading-icon{margin-right:8px;font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color)}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__item{flex:1;background:0 0!important;padding-left:0;height:20px;line-height:20px}.el-upload{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:var(--el-text-color-regular);margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{--el-upload-picture-card-size:148px;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;display:inline-flex;justify-content:center;align-items:center}.el-upload--picture-card i{font-size:28px;color:var(--el-text-color-secondary)}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{font-size:67px;color:var(--el-text-color-placeholder);margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:var(--el-text-color-regular);margin-bottom:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{display:none;position:absolute;right:5px;top:50%;cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{display:none;position:absolute;right:5px;font-size:12px;cursor:pointer;opacity:1;color:var(--el-color-primary);transform:translateY(-50%)}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;justify-content:center;flex-direction:column;width:100%;margin-left:4px}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list.is-disabled .el-upload-list__item-status-label,.el-upload-list.is-disabled .el-upload-list__item:hover{display:block}.el-upload-list__item-name{color:var(--el-text-color-regular);display:inline-flex;text-align:center;align-items:center;padding:0 4px;overflow:hidden;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap;font-size:var(--el-font-size-base)}.el-upload-list__item-name .el-icon{margin-right:6px;color:var(--el-text-color-secondary)}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none;height:100%;justify-content:center;align-items:center;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:var(--el-text-color-regular);display:none}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:var(--el-fill-color-blank);border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;padding:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%;object-fit:contain}.el-upload-list--picture-card .el-upload-list__item-status-label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;display:inline-flex;justify-content:center;align-items:center;color:#fff;opacity:0;font-size:20px;background-color:var(--el-overlay-color-lighter);transition:opacity var(--el-transition-duration)}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:1rem}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:var(--el-fill-color-blank);border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{display:inline-flex;justify-content:center;align-items:center;width:70px;height:70px;object-fit:contain;position:relative;z-index:1;background-color:var(--el-color-white)}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:var(--el-overlay-color-light);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:var(--el-text-color-primary)}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius, 4px)}.el-popper{position:absolute;border-radius:var(--el-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.el-popper.is-dark{color:var(--el-bg-color);background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark .el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light .el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-bg-color-overlay);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.el-popper__arrow:before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--el-text-color-primary);box-sizing:border-box}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent!important;border-bottom-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-select-dropdown__item{font-size:var(--el-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:var(--el-color-white)}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.selected{color:var(--el-color-primary);font-weight:700}.vld-shown{overflow:hidden}.vld-overlay{bottom:0;left:0;position:absolute;right:0;top:0;align-items:center;display:none;justify-content:center;overflow:hidden;z-index:9999}.vld-overlay.is-active{display:flex}.vld-overlay.is-full-page{z-index:9999;position:fixed}.vld-overlay .vld-background{bottom:0;left:0;position:absolute;right:0;top:0;background:#fff;opacity:.5}.vld-overlay .vld-icon,.vld-parent{position:relative}@font-face{font-family:Zen Maru Gothic;src:url(./ZenMaruGothic-Regular.2d389171.ttf);font-weight:400;font-style:normal}.table{width:inherit}.el-tabs__nav-scroll{margin:0 auto}.el-tabs__nav{float:none}.el-tabs__item{font-size:18px}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:0;font-family:Zen Maru Gothic,sans-serif} +*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, .05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, .1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.2rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#0000008c}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:#000000e6}.navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#0000008c}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#00000008;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:#00000008;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px #00000020}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem}.offcanvas-header .btn-close{padding:.5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translate(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translate(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","\5fae\8f6f\96c5\9ed1",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)}:root{color-scheme:light;--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#ffffff;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, .04),0px 8px 20px rgba(0, 0, 0, .08);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, .12);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, .12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, .08),0px 12px 32px rgba(0, 0, 0, .12),0px 8px 16px -8px rgba(0, 0, 0, .16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0, 0, 0, .8);--el-overlay-color-light:rgba(0, 0, 0, .7);--el-overlay-color-lighter:rgba(0, 0, 0, .5);--el-mask-color:rgba(255, 255, 255, .9);--el-mask-color-extra-light:rgba(255, 255, 255, .3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:13px;--el-alert-description-font-size:12px;--el-alert-close-font-size:12px;--el-alert-close-customed-font-size:13px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);position:relative;background-color:var(--el-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--el-transition-duration-fast)}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:table-cell;padding:0 8px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:18px;vertical-align:text-top}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:5px 0 0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);top:9px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{--el-aside-width:300px;overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--el-aside-width)}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete__popper.el-popper[role=tooltip]{background:#fff;border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-autocomplete__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);list-style:none;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover,.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid var(--el-color-black)}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:var(--el-text-color-secondary)}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-color-white)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-default:40px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);position:fixed;background-color:var(--el-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--el-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-block;font-size:var(--el-badge-font-size);height:var(--el-badge-size);line-height:var(--el-badge-size);padding:0 var(--el-badge-padding);text-align:center;white-space:nowrap;border:1px solid var(--el-color-white)}.el-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--el-badge-size)/ 2);transform:translateY(-50%) translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--el-text-color-placeholder)}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;display:flex;align-items:center}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:var(--el-transition-color);color:var(--el-text-color-primary)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:var(--el-text-color-regular);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255, 255, 255, .5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color)}.el-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);color:var(--el-button-text-color);-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;transition:.1s;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button>span{display:inline-flex;align-items:center}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button:focus,.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:0}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--el-mask-color-extra-light)}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size);padding:12px 19px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-button--text{border-color:transparent;color:var(--el-color-primary);background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:var(--el-color-primary-light-3);border-color:transparent;background-color:transparent}.el-button--text:active{color:var(--el-color-primary-dark-2);border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-calendar{--el-calendar-border:var(--el-table-border, 1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--el-calendar-header-border-bottom)}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:var(--el-text-color-regular);font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:var(--el-calendar-cell-width)}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;transition:var(--el-transition-duration-fast)}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31, 45, 61, .11);--el-carousel-arrow-hover-background:rgba(31, 45, 61, .23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);border-radius:50%;background-color:var(--el-carousel-arrow-background);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:var(--el-carousel-arrow-font-size);display:inline-flex;justify-content:center;align-items:center}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical) * 2);text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width)/ 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:var(--el-transition-duration)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{transform:translateY(-50%) translate(-10px);opacity:0}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{transform:translateY(-50%) translate(10px);opacity:0}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader-panel{display:flex;border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;color:var(--el-cascader-color-empty)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;text-align:left;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;position:relative;font-size:var(--el-font-size-base);line-height:32px;outline:0}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader .el-input .el-input__suffix-inner .el-icon{height:calc(100% - 2px)}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__inner{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader__dropdown{font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper[role=tooltip]{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper[role=tooltip] .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-cascader__dropdown.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--el-cascader-tag-background)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:var(--el-text-color-placeholder);color:var(--el-color-white)}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-cascader__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:var(--el-cascader-color-empty)}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 11px;padding:0;color:var(--el-cascader-menu-text-color);border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::placeholder{color:var(--el-text-color-placeholder)}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all);font-weight:700}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-1)}.el-check-tag.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary)}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-checkbox-button--large .el-checkbox-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary)}.el-checkbox{color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;user-select:none;margin-right:30px;height:32px}.el-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:var(--el-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid var(--el-checkbox-checked-icon-color);border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in 50ms;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--el-checkbox-font-size)}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{float:left;box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-0{max-width:0%;flex:0 0 0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{position:relative;left:4.1666666667%}.el-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{position:relative;left:8.3333333333%}.el-col-3{max-width:12.5%;flex:0 0 12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{position:relative;left:16.6666666667%}.el-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{position:relative;left:20.8333333333%}.el-col-6{max-width:25%;flex:0 0 25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{position:relative;left:29.1666666667%}.el-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{position:relative;left:33.3333333333%}.el-col-9{max-width:37.5%;flex:0 0 37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{position:relative;left:41.6666666667%}.el-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{position:relative;left:45.8333333333%}.el-col-12{max-width:50%;flex:0 0 50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{position:relative;left:54.1666666667%}.el-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{position:relative;left:58.3333333333%}.el-col-15{max-width:62.5%;flex:0 0 62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{position:relative;left:66.6666666667%}.el-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{position:relative;left:70.8333333333%}.el-col-18{max-width:75%;flex:0 0 75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{position:relative;left:79.1666666667%}.el-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{position:relative;left:83.3333333333%}.el-col-21{max-width:87.5%;flex:0 0 87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{position:relative;left:91.6666666667%}.el-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{position:relative;left:95.8333333333%}.el-col-24{max-width:100%;flex:0 0 100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.el-col-xs-0,.el-col-xs-0.is-guttered{display:none}.el-col-xs-0{max-width:0%;flex:0 0 0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{position:relative;left:4.1666666667%}.el-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{position:relative;left:8.3333333333%}.el-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{position:relative;left:16.6666666667%}.el-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{position:relative;left:20.8333333333%}.el-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{position:relative;left:29.1666666667%}.el-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{position:relative;left:33.3333333333%}.el-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{position:relative;left:41.6666666667%}.el-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{position:relative;left:45.8333333333%}.el-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{position:relative;left:54.1666666667%}.el-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{position:relative;left:58.3333333333%}.el-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{position:relative;left:66.6666666667%}.el-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{position:relative;left:70.8333333333%}.el-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{position:relative;left:79.1666666667%}.el-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{position:relative;left:83.3333333333%}.el-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{position:relative;left:91.6666666667%}.el-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{position:relative;left:95.8333333333%}.el-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0,.el-col-sm-0.is-guttered{display:none}.el-col-sm-0{max-width:0%;flex:0 0 0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{position:relative;left:4.1666666667%}.el-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{position:relative;left:8.3333333333%}.el-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{position:relative;left:16.6666666667%}.el-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{position:relative;left:20.8333333333%}.el-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{position:relative;left:29.1666666667%}.el-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{position:relative;left:33.3333333333%}.el-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{position:relative;left:41.6666666667%}.el-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{position:relative;left:45.8333333333%}.el-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{position:relative;left:54.1666666667%}.el-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{position:relative;left:58.3333333333%}.el-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{position:relative;left:66.6666666667%}.el-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{position:relative;left:70.8333333333%}.el-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{position:relative;left:79.1666666667%}.el-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{position:relative;left:83.3333333333%}.el-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{position:relative;left:91.6666666667%}.el-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{position:relative;left:95.8333333333%}.el-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0,.el-col-md-0.is-guttered{display:none}.el-col-md-0{max-width:0%;flex:0 0 0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{position:relative;left:4.1666666667%}.el-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{position:relative;left:8.3333333333%}.el-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{position:relative;left:16.6666666667%}.el-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{position:relative;left:20.8333333333%}.el-col-md-6{display:block;max-width:25%;flex:0 0 25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{position:relative;left:29.1666666667%}.el-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{position:relative;left:33.3333333333%}.el-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{position:relative;left:41.6666666667%}.el-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{position:relative;left:45.8333333333%}.el-col-md-12{display:block;max-width:50%;flex:0 0 50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{position:relative;left:54.1666666667%}.el-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{position:relative;left:58.3333333333%}.el-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{position:relative;left:66.6666666667%}.el-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{position:relative;left:70.8333333333%}.el-col-md-18{display:block;max-width:75%;flex:0 0 75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{position:relative;left:79.1666666667%}.el-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{position:relative;left:83.3333333333%}.el-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{position:relative;left:91.6666666667%}.el-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{position:relative;left:95.8333333333%}.el-col-md-24{display:block;max-width:100%;flex:0 0 100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0,.el-col-lg-0.is-guttered{display:none}.el-col-lg-0{max-width:0%;flex:0 0 0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{position:relative;left:4.1666666667%}.el-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{position:relative;left:8.3333333333%}.el-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{position:relative;left:16.6666666667%}.el-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{position:relative;left:20.8333333333%}.el-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{position:relative;left:29.1666666667%}.el-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{position:relative;left:33.3333333333%}.el-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{position:relative;left:41.6666666667%}.el-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{position:relative;left:45.8333333333%}.el-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{position:relative;left:54.1666666667%}.el-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{position:relative;left:58.3333333333%}.el-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{position:relative;left:66.6666666667%}.el-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{position:relative;left:70.8333333333%}.el-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{position:relative;left:79.1666666667%}.el-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{position:relative;left:83.3333333333%}.el-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{position:relative;left:91.6666666667%}.el-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{position:relative;left:95.8333333333%}.el-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0,.el-col-xl-0.is-guttered{display:none}.el-col-xl-0{max-width:0%;flex:0 0 0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{position:relative;left:4.1666666667%}.el-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{position:relative;left:8.3333333333%}.el-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{position:relative;left:16.6666666667%}.el-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{position:relative;left:20.8333333333%}.el-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{position:relative;left:29.1666666667%}.el-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{position:relative;left:33.3333333333%}.el-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{position:relative;left:41.6666666667%}.el-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{position:relative;left:45.8333333333%}.el-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{position:relative;left:54.1666666667%}.el-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{position:relative;left:58.3333333333%}.el-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{position:relative;left:66.6666666667%}.el-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{position:relative;left:70.8333333333%}.el-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{position:relative;left:79.1666666667%}.el-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{position:relative;left:83.3333333333%}.el-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{position:relative;left:91.6666666667%}.el-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{position:relative;left:95.8333333333%}.el-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);font-weight:500;transition:border-bottom-color var(--el-transition-duration);outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);overflow:hidden;box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item__content{padding-bottom:25px;font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);line-height:1.7692307692}.el-collapse-item:last-child{margin-bottom:-1px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px;float:right}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-picker{display:inline-block;position:relative;line-height:normal}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:#ffffffb3}.el-color-picker__trigger{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;height:32px;width:32px;padding:4px;border:1px solid var(--el-border-color);border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{display:inline-flex;justify-content:center;align-items:center;width:100%;height:100%}.el-color-picker .el-color-picker__empty{font-size:12px;color:var(--el-text-color-secondary)}.el-color-picker .el-color-picker__icon{display:inline-flex;justify-content:center;align-items:center;color:#fff;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light)}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td .el-date-table-cell{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td .el-date-table-cell .el-date-table-cell__text{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translate(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{margin-left:5px;margin-right:5px;background-color:var(--el-datepicker-inrange-bg-color);border-radius:15px}.el-date-table td.selected .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:var(--el-datepicker-header-text-color)}.el-date-table th{padding:5px;color:var(--el-datepicker-header-text-color);font-weight:400;border-bottom:solid 1px var(--el-border-color-lighter)}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:var(--el-datepicker-text-color);margin:0 auto}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:192px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:var(--el-text-color-secondary);position:absolute;left:0;width:100%;z-index:var(--el-index-normal);text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:var(--el-text-color-regular)}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-picker__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:var(--el-date-editor-width)}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{height:inherit;font-size:14px;color:var(--el-text-color-placeholder);float:left}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:transparent}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{flex:1;display:inline-flex;justify-content:center;align-items:center;height:100%;padding:0 5px;margin:0;font-size:14px;word-break:keep-all;color:var(--el-text-color-primary)}.el-date-editor .el-range__close-icon{font-size:14px;color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__inner{display:inline-flex;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:40px}.el-range-editor--large.el-input__inner{height:40px}.el-range-editor--large .el-range-separator{line-height:40px;font-size:14px}.el-range-editor--large .el-range-input{font-size:14px}.el-range-editor--small{line-height:24px}.el-range-editor--small.el-input__inner{height:24px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:12px}.el-range-editor--small .el-range-input{font-size:12px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);line-height:30px}.el-picker-panel .el-time-panel{margin:5px 0;border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-color-white);box-shadow:var(--el-box-shadow-light)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);padding:4px 12px;text-align:right;background-color:var(--el-bg-color-overlay);position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:var(--el-datepicker-text-color);padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:var(--el-datepicker-icon-color);border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;padding-top:6px;background-color:var(--el-bg-color-overlay);overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px var(--el-border-color-lighter)}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:var(--el-text-color-regular)}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:var(--el-datepicker-icon-color)}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid var(--el-datepicker-border-color)}.el-time-panel{border-radius:2px;position:relative;width:180px;left:0;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-16px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light)}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:var(--el-text-color-primary)}.el-time-panel__btn.confirm{font-weight:800;color:var(--el-timepicker-active-color,var(--el-color-primary))}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:23px;font-size:14px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{font-weight:700;color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background)}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color)}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:20px;--el-dialog-border-radius:var(--el-border-radius-small);position:relative;margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;width:var(--el-dialog-width,50%)}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding:var(--el-dialog-padding-primary);padding-bottom:10px;margin-right:16px;word-break:break-all}.el-dialog__headerbtn{position:absolute;top:6px;right:0;padding:0;width:54px;height:54px;background:0 0;border:none;outline:0;cursor:pointer;font-size:var(--el-message-close-size,16px)}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{padding:calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size);word-break:break-all}.el-dialog__footer{padding:var(--el-dialog-padding-primary);padding-top:10px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px calc(var(--el-dialog-padding-primary) + 5px) 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--el-border-color) var(--el-border-style)}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--el-border-color) var(--el-border-style)}.el-divider__text{position:absolute;background-color:var(--el-bg-color);padding:0 20px;font-weight:500;color:var(--el-text-color-primary);font-size:14px}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color, var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary, 20px)}.el-drawer{position:absolute;box-sizing:border-box;background-color:var(--el-drawer-bg-color);display:flex;flex-direction:column;box-shadow:var(--el-box-shadow-dark);overflow:hidden;transition:all var(--el-transition-duration)}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{border:none;cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:transparent;outline:0}.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__close-btn .el-icon{font-size:inherit;vertical-align:text-bottom}.el-drawer__body{flex:1;padding:var(--el-drawer-padding-primary);overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{opacity:0}.el-drawer-fade-enter-to,.el-drawer-fade-leave-from{opacity:1}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary-light-3);--el-dropdown-menu-index:10;display:inline-flex;position:relative;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary-light-3);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-dropdown__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:0}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{list-style:none;padding:0;margin:0;box-sizing:border-box}.el-dropdown .el-dropdown__caret-button{padding-left:0;padding-right:0;display:inline-flex;justify-content:center;align-items:center;width:32px;border-left:none}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:var(--el-overlay-color-lighter)}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:0}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{position:relative;top:0;left:0;z-index:var(--el-dropdown-menu-index);padding:5px 0;margin:0;background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;list-style:none}.el-dropdown-menu__item{display:flex;align-items:center;white-space:nowrap;list-style:none;line-height:22px;padding:5px 16px;margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:0}.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{margin:6px 0;border-top:1px solid var(--el-border-color-lighter)}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;line-height:22px;font-size:14px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;line-height:20px;font-size:12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding)}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;object-fit:contain}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-secondary)}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height)}.el-form{--el-form-label-font-size:var(--el-font-size-base)}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item{display:block}.el-form--label-top .el-form-item .el-form-item__label{display:block;text-align:left;margin-bottom:8px;line-height:22px}.el-form--inline .el-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form--large.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:12px;line-height:22px}.el-form--default.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:8px;line-height:22px}.el-form--small.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:4px;line-height:20px}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label,.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label,.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label,.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item__label-wrap{display:flex}.el-form-item__label-wrap .el-form-item__label{display:inline-block}.el-form-item__label{flex:0 0 auto;text-align:right;font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{display:flex;flex-wrap:wrap;align-items:center;flex:1;line-height:32px;position:relative;font-size:var(--font-size);min-width:0}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-select-v2__wrapper,.el-form-item.is-error .el-select-v2__wrapper:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{box-shadow:0 0 0 1px transparent inset}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-header-height)}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none}.el-image-viewer__btn .el-icon{font-size:inherit;cursor:pointer}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none}.el-image-viewer__actions{left:50%;bottom:30px;transform:translate(-50%);width:282px;height:44px;padding:0 23px;background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__prev{top:50%;transform:translateY(-50%);left:40px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__next{top:50%;transform:translateY(-50%);right:40px;text-indent:2px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__close{width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle}.el-image__preview{cursor:pointer}.el-input-number{position:relative;display:inline-block;width:150px;line-height:30px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;padding-left:42px;padding-right:42px;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.el-input-number__decrease,.el-input-number__increase{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--el-fill-color-light);color:var(--el-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__inner,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__inner{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border)}.el-input-number__decrease{left:1px;border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border)}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{width:40px;font-size:14px}.el-input-number--large .el-input__inner{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:24px;font-size:12px}.el-input-number--small .el-input__inner{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border)}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--el-font-size-base)}.el-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);border:none}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{border-color:var(--el-color-danger)}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;font-size:var(--el-font-size-base);display:inline-flex;width:100%;line-height:32px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--el-text-color-disabled)}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear{color:var(--el-input-icon-color);font-size:14px;cursor:pointer;transition:var(--el-transition-color);margin-left:8px}.el-input .el-input__clear:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:var(--el-color-info);font-size:12px}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{position:relative;-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:inline-block;font-size:inherit;height:32px;line-height:32px;outline:0;padding:0 11px;transition:var(--el-transition-box-shadow);width:100%;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__suffix{display:inline-flex;position:absolute;height:100%;right:12px;top:0;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__suffix-inner{pointer-events:all;display:inline-flex}.el-input__prefix{display:inline-flex;position:absolute;height:100%;left:12px;top:0;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration)}.el-input__prefix-inner{pointer-events:all;display:inline-flex}.el-input .el-input__icon{height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border,) inset}.el-input.is-disabled .el-input__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--suffix .el-input__inner{padding-right:31px}.el-input--suffix--password-clear .el-input__inner{padding-right:55px}.el-input--prefix .el-input__inner{padding-left:31px}.el-input--large{font-size:14px;line-height:38px}.el-input--large .el-input__inner{height:40px;line-height:40px;padding:0 15px}.el-input--large .el-input__icon{line-height:40px}.el-input--large.el-input--prefix .el-input__inner{padding-left:35px}.el-input--large.el-input--suffix .el-input__inner{padding-right:35px}.el-input--large .el-input__prefix{left:16px}.el-input--large .el-input__suffix{right:16px}.el-input--small{font-size:12px;line-height:22px}.el-input--small .el-input__inner{height:24px;line-height:24px;padding:0 7px}.el-input--small .el-input__icon{line-height:24px}.el-input--small.el-input--prefix .el-input__inner{padding-left:25px}.el-input--small.el-input--suffix .el-input__inner{padding-right:25px}.el-input--small .el-input__prefix{left:8px}.el-input--small .el-input__suffix{right:8px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);vertical-align:middle;display:table-cell;position:relative;border-radius:var(--el-input-border-radius);padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input__inner{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 0 0 1px var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input-group--prepend>.el-input__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{z-index:1;box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-input-group--append>.el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:-1px 0 0 0 var(--el-input-border-color),-1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner:focus{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner:focus{outline:0;z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{z-index:1;box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder)}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color)}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid var(--el-link-hover-text-color)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{display:inline-flex;justify-content:center;align-items:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--primary.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--success.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--error.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info:after{border-color:var(--el-link-text-color)}.el-link.el-link--info.is-underline:hover:after{border-color:var(--el-link-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:var(--el-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--el-transition-duration)}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/ 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{top:50%;margin-top:calc((0px - var(--el-loading-spinner-size))/ 2);width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--el-main-padding)}.el-menu{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-text-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);border-right:solid 1px var(--el-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--el-menu-bg-color);box-sizing:border-box}.el-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:solid 1px var(--el-menu-border-color);border-right:none}.el-menu--horizontal>.el-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:0}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-bg-color-overlay)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);display:flex;align-items:center;height:36px;padding:0 10px;color:var(--el-menu-text-color)}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:var(--el-menu-hover-text-color);background-color:var(--el-menu-hover-bg-color)}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu{position:relative}.el-menu--collapse .el-sub-menu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu--collapse .el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:none}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu .el-icon{flex-shrink:0}.el-menu-item{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 20px;list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:0}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 20px}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 20px;list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:0}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:rotate(180deg)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform var(--el-transition-duration);font-size:12px;margin-right:0;width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:var(--el-text-color-secondary)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:15px}.el-message-box{display:inline-block;width:var(--el-messagebox-width);padding-bottom:10px;vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);border:1px solid var(--el-border-color-lighter);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-box-shadow-light);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-overlay.is-message-box .el-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{position:relative;padding:var(--el-messagebox-padding-primary);padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:var(--el-messagebox-font-size);line-height:1;color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{position:absolute;top:var(--el-messagebox-padding-primary);right:var(--el-messagebox-padding-primary);padding:0;border:none;outline:0;background:0 0;font-size:var(--el-message-close-size,16px);cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{padding:10px var(--el-messagebox-padding-primary);color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input div.invalid>input{border-color:var(--el-color-error)}.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status.el-icon{position:absolute}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px;word-break:break-word}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns{justify-content:center}.el-message-box--center .el-message-box__content{padding-left:calc(var(--el-messagebox-padding-primary) + 12px);padding-right:calc(var(--el-messagebox-padding-primary) + 12px);text-align:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-message{--el-message-min-width:380px;--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:15px 15px 15px 20px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary)}.el-message{min-width:var(--el-message-min-width);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width-base);border-style:var(--el-border-style-base);border-color:var(--el-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);transition:opacity .3s,transform .4s,top .4s;background-color:var(--el-message-bg-color);transition:opacity var(--el-transition-duration),transform .4s,top .4s;padding:var(--el-message-padding);display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content,.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content,.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content,.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content,.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message__icon{margin-right:10px}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size, 16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular)}.el-notification{display:flex;width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);position:fixed;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:anywhere;overflow:hidden;z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--el-notification-content-color);text-align:justify}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size)}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--el-overlay-color-lighter);overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:var(--el-border-color)}.el-page-header__icon{font-size:18px;margin-right:6px;display:flex;align-items:center}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:var(--el-text-color-primary)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:3px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-height-extra-small:24px;--el-pagination-line-height-extra-small:var(--el-pagination-height-extra-small);white-space:nowrap;padding:2px 5px;color:var(--el-pagination-text-color);font-weight:400;display:flex;align-items:center}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-select .el-input{width:128px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button:disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:var(--el-pagination-bg-color);cursor:pointer;margin:0;color:var(--el-pagination-button-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination .el-pager li.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:var(--el-font-size-extra-small);line-height:var(--el-pagination-line-height-extra-small);height:var(--el-pagination-height-extra-small);min-width:24px}.el-pagination--small .arrow.is-disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:var(--el-pagination-height-extra-small);line-height:var(--el-pagination-line-height-extra-small);font-size:var(--el-font-size-extra-small)}.el-pagination--small .el-pagination__editor{height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-height-extra-small)}.el-pagination--small .el-input--small,.el-pagination--small .el-input__inner{height:var(--el-pagination-height-extra-small)!important;line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-input__suffix,.el-pagination--small .el-input__suffix .el-input__suffix-inner,.el-pagination--small .el-input__suffix .el-input__suffix-inner i.el-select__caret{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-select .el-input{width:100px}.el-pagination__sizes{margin:0 16px 0 0;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__sizes+button.btn-prev[type=button]{margin-left:0}.el-pagination__sizes+.el-pager .number:first-child{margin-left:0}.el-pagination__sizes+.el-pager .number:last-child{margin-right:0}.el-pagination__total{margin-right:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__total+button.btn-prev[type=button]{margin-left:0}.el-pagination__total+.el-pager .number:first-child{margin-left:0}.el-pagination__total+.el-pager .number:last-child{margin-right:0}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__rightwrapper{flex:1;display:flex;align-items:center;justify-content:flex-end}.el-pagination__editor{line-height:18px;margin:0 8px;height:var(--el-pagination-button-height);min-width:56px;text-align:center;box-sizing:border-box;border-radius:var(--el-pagination-border-radius)}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-button-height)}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 4px;background-color:var(--el-pagination-button-bg-color);color:var(--el-text-color-regular);min-width:32px;border-radius:2px}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next.is-first,.el-pagination.is-background .btn-prev.is-first,.el-pagination.is-background .el-pager li.is-first{margin-left:0}.el-pagination.is-background .btn-next.is-last,.el-pagination.is-background .btn-prev.is-last,.el-pagination.is-background .el-pager li.is-last{margin-right:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next:hover:not([disabled]),.el-pagination.is-background .btn-prev:hover:not([disabled]){color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled):hover{color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled).is-active{background-color:var(--el-color-primary);color:var(--el-color-white);font-weight:700}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{min-width:24px}.el-pager{-webkit-user-select:none;user-select:none;list-style:none;font-size:0;padding:0;margin:0;display:flex;align-items:center}.el-pager li{padding:0 4px;background:var(--el-pagination-bg-color);display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box;cursor:pointer;text-align:center}.el-pager li.btn-quickprev:hover,.el-pager li.btn-quicknext:hover{cursor:pointer}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:32px;color:var(--el-pagination-button-color)}.el-pager li.btn-quicknext.is-disabled,.el-pager li.btn-quickprev.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pager li.btn-quicknext svg,.el-pager li.btn-quickprev svg{pointer-events:none}.el-pager li.is-active+li{border-left:0}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color)}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default}.el-pager+button.btn-next[type=button]{margin-right:0}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-color-white);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{position:relative;line-height:1;display:flex;align-items:center}.el-progress__text{font-size:14px;color:var(--el-text-color-regular);margin-left:5px;min-width:50px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{flex-grow:1;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:var(--el-border-color-lighter);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:var(--el-color-primary);text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{transform:translateZ(0);animation:indeterminate 3s infinite}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button__original-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__original-radio:checked+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px var(--el-radio-button-checked-border-color)}.el-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary)}.el-radio{color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;outline:0;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;margin-right:32px;height:32px}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{padding:0 11px 0 7px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);position:relative;cursor:pointer;display:inline-block;box-sizing:border-box}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{width:4px;height:4px;border-radius:var(--el-radio-input-border-radius);background-color:var(--el-color-white);content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary)}.el-rate{display:inline-flex;align-items:center;height:32px}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--el-rate-void-color)}.el-rate .el-rate__icon{position:relative;display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--el-rate-fill-color)}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate.is-disabled .el-rate__item{cursor:auto;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-result-padding)}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{margin:0;font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary)}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__option-item:hover:not(.hover){background-color:transparent}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;margin:6px 0!important;padding:0!important;box-sizing:border-box}.el-select-dropdown__option-item{font-size:var(--el-select-font-size);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__option-item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__option-item.is-disabled:hover{background-color:var(--el-color-white)}.el-select-dropdown__option-item.is-selected{background-color:var(--el-fill-color-light);font-weight:700}.el-select-dropdown__option-item.is-selected:not(.is-multiple){color:var(--el-color-primary)}.el-select-dropdown__option-item.hover{background-color:var(--el-fill-color-light)!important}.el-select-dropdown__option-item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon{position:absolute;right:20px;top:0;height:inherit;font-size:12px}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon svg{height:inherit;vertical-align:middle}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--el-border-color-light)}.el-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--el-border-color-light)}.el-select-group__title{padding-left:20px;font-size:12px;color:var(--el-color-info);line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-v2{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select-v2{display:inline-block;position:relative;vertical-align:middle;font-size:14px}.el-select-v2__wrapper{display:flex;align-items:center;flex-wrap:wrap;box-sizing:border-box;cursor:pointer;padding:1px 30px 1px 0;border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);transition:border-color var(--el-transition-duration-fast) var(--el-ease-in-out-bezier-function)}.el-select-v2__wrapper:hover{border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-filterable{cursor:text}.el-select-v2__wrapper.is-focused{border-color:var(--el-color-primary)}.el-select-v2__wrapper.is-hovering:not(.is-focused){border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled:hover{border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled.is-focus{border-color:var(--el-input-focus-border-color)}.el-select-v2__wrapper.is-disabled .is-transparent{opacity:1;-webkit-user-select:none;user-select:none}.el-select-v2__wrapper.is-disabled .el-select-v2__caret,.el-select-v2__wrapper.is-disabled .el-select-v2__combobox-input{cursor:not-allowed}.el-select-v2__wrapper .el-select-v2__input-wrapper{box-sizing:border-box;position:relative;margin-inline-start:12px;max-width:100%;overflow:hidden}.el-select-v2__wrapper,.el-select-v2__wrapper .el-select-v2__input-wrapper{line-height:32px}.el-select-v2__wrapper .el-select-v2__input-wrapper input{line-height:24px;height:24px;min-width:4px;width:100%;background-color:transparent;-webkit-appearance:none;appearance:none;background:0 0;border:none;margin:2px 0;outline:0;padding:0}.el-select-v2 .el-select-v2__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select-v2__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:14px}.el-select-v2__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select-v2__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select-v2__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select-v2--large .el-select-v2__wrapper .el-select-v2__combobox-input{height:32px}.el-select-v2--large .el-select-v2__caret,.el-select-v2--large .el-select-v2__suffix{height:40px}.el-select-v2--large .el-select-v2__placeholder{font-size:14px;line-height:40px}.el-select-v2--small .el-select-v2__wrapper .el-select-v2__combobox-input{height:16px}.el-select-v2--small .el-select-v2__caret,.el-select-v2--small .el-select-v2__suffix{height:24px}.el-select-v2--small .el-select-v2__placeholder{font-size:12px;line-height:24px}.el-select-v2 .el-select-v2__selection>span{display:inline-block}.el-select-v2:hover .el-select-v2__combobox-input{border-color:var(--el-select-border-color-hover)}.el-select-v2 .el-select__selection-text{text-overflow:ellipsis;display:inline-block;overflow-x:hidden;vertical-align:bottom}.el-select-v2 .el-select-v2__combobox-input{padding-right:35px;display:block}.el-select-v2 .el-select-v2__combobox-input:focus{border-color:var(--el-select-input-focus-border-color)}.el-select-v2__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;appearance:none;height:28px}.el-select-v2__input.is-small{height:14px}.el-select-v2__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select-v2__close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__suffix{display:inline-flex;position:absolute;right:12px;height:32px;top:50%;transform:translateY(-50%);color:var(--el-input-icon-color,var(--el-text-color-placeholder))}.el-select-v2__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotate(180deg);cursor:pointer}.el-select-v2__caret.is-reverse{transform:rotate(0)}.el-select-v2__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select-v2__caret.is-show-close:hover{color:--el-select-close-hover-color}.el-select-v2__caret.el-icon{height:inherit}.el-select-v2__caret.el-icon svg{vertical-align:middle}.el-select-v2__selection{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select-v2__wrapper{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);position:relative;transition:all var(--el-transition-duration) var(--el-ease-in-out-bezier-function)}.el-select-v2__input-calculator{left:0;position:absolute;top:0;visibility:hidden;white-space:pre;z-index:999}.el-select-v2__selected-item{line-height:inherit;height:inherit;-webkit-user-select:none;user-select:none;display:flex}.el-select-v2__placeholder{position:absolute;top:50%;transform:translateY(-50%);margin-inline-start:12px;width:calc(100% - 52px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--el-input-text-color,var(--el-text-color-regular))}.el-select-v2__placeholder.is-transparent{color:var(--el-text-color-placeholder)}.el-select-v2 .el-select-v2__selection .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:var(--el-fill-color)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;color:var(--el-color-white)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select-v2.el-select-v2--small .el-select-v2__selection .el-tag{margin:1px 0 1px 6px;height:18px}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown .el-select-dropdown__option-item.is-selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select{display:inline-block;position:relative;line-height:32px}.el-select__popper.el-popper[role=tooltip]{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper[role=tooltip] .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select__popper.el-popper[role=tooltip][data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select .el-select-tags-wrapper.has-prefix{margin-left:6px}.el-select--large{line-height:40px}.el-select--large .el-select-tags-wrapper.has-prefix{margin-left:8px}.el-select--small{line-height:24px}.el-select--small .el-select-tags-wrapper.has-prefix{margin-left:4px}.el-select .el-select__tags>span{display:inline-block}.el-select:hover:not(.el-select--disabled) .el-input__inner{box-shadow:0 0 0 1px var(--el-select-border-color-hover) inset}.el-select .el-select__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select .el-input__inner{cursor:pointer;display:inline-flex}.el-select .el-input__inner:focus{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select .el-input{display:flex}.el-select .el-input .el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select .el-input .el-select__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select .el-input .el-select__caret.el-icon{position:relative;height:inherit;z-index:2}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select .el-input.is-disabled .el-select__caret{cursor:not-allowed}.el-select .el-input.is-focus .el-input__inner{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select__close:hover{color:var(--el-select-close-hover-color)}.el-select__tags{position:absolute;line-height:normal;top:50%;transform:translateY(-50%);white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-select .el-select__tags .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 6px 2px 0}.el-select .el-select__tags .el-tag:last-child{margin-right:0}.el-select .el-select__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;top:0;color:#fff}.el-select .el-select__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select .el-select__tags .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select .el-select__tags .el-tag--info{background-color:var(--el-fill-color)}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);display:inline-block;height:16px;border-radius:var(--el-border-radius-base);width:100%}.el-skeleton__circle{border-radius:50%;width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size)}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px}.el-slider{width:100%;height:32px;display:flex;align-items:center}.el-slider__runway{flex:1;height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);position:relative;cursor:pointer}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);position:absolute;z-index:1;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal;outline:0}.el-slider__button-wrapper:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{display:inline-block;width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);border-radius:50%;box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{position:absolute;height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);transform:translate(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translate(-50%);font-size:14px;color:var(--el-color-info);margin-top:15px}.el-slider.is-vertical{position:relative;height:100%;flex:0}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:var(--el-bg-color-overlay);transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:var(--el-text-color-placeholder)}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:var(--el-text-color-primary)}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:var(--el-text-color-placeholder)}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:var(--el-fill-color-light)}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);--el-switch-core-border-radius:10px;--el-switch-width:40px;--el-switch-height:20px;--el-switch-button-size:16px}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:var(--el-switch-height);height:32px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);height:var(--el-switch-height);display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--el-text-color-primary)}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;display:inline-block;position:relative;width:var(--el-switch-width);height:var(--el-switch-height);border:1px solid var(--el-switch-off-color);outline:0;border-radius:var(--el-switch-core-border-radius);box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);vertical-align:middle}.el-switch__core .el-switch__inner{position:absolute;top:1px;left:1px;transition:all var(--el-transition-duration);width:var(--el-switch-button-size);height:var(--el-switch-button-size);display:flex;justify-content:center;align-items:center;left:50%;white-space:nowrap}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;user-select:none}.el-switch__core .el-switch__action{position:absolute;top:1px;left:1px;border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);width:var(--el-switch-button-size);height:var(--el-switch-button-size);background-color:var(--el-color-white);display:flex;justify-content:center;align-items:center;color:var(--el-switch-off-color)}.el-switch__core .el-switch__action .is-icon,.el-switch__core .el-switch__action .is-text{transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;user-select:none}.el-switch__core .is-text{font-size:12px}.el-switch__core .is-show{opacity:1}.el-switch__core .is-hide{opacity:0}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-on-color);background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{left:100%;margin-left:calc(-1px - var(--el-switch-button-size));color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__inner{left:50%;white-space:nowrap;margin-left:calc(-1px - var(--el-switch-button-size))}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px}.el-switch--large .el-switch__label,.el-switch--large .el-switch__label *{font-size:14px}.el-switch--small{font-size:12px;height:24px}.el-switch--small .el-switch__label,.el-switch--small .el-switch__label *{font-size:12px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--el-font-size-base)}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary-light-3)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, .15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, .15)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;height:-moz-fit-content;height:fit-content;width:100%;max-width:100%;background-color:var(--el-table-bg-color);font-size:14px;color:var(--el-table-text-color)}.el-table__inner-wrapper{position:relative}.el-table__inner-wrapper:before{left:0;bottom:0;width:100%;height:1px;z-index:3}.el-table.has-footer .el-table__inner-wrapper:before{bottom:1px}.el-table__empty-block{position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:var(--el-text-color-secondary)}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{position:relative;cursor:pointer;color:var(--el-text-color-regular);font-size:12px;transition:transform var(--el-transition-duration-fast) ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table thead{color:var(--el-table-header-text-color);font-weight:500}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{padding:8px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left;z-index:1}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding:0 12px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{-webkit-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;width:100%}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__footer-wrapper tr:first-child td:first-child,.el-table--border .el-table__footer-wrapper tr:first-child th:first-child,.el-table--border .el-table__inner-wrapper tr:first-child td:first-child,.el-table--border .el-table__inner-wrapper tr:first-child th:first-child,.el-table--group .el-table__footer-wrapper tr:first-child td:first-child,.el-table--group .el-table__footer-wrapper tr:first-child th:first-child,.el-table--group .el-table__inner-wrapper tr:first-child td:first-child,.el-table--group .el-table__inner-wrapper tr:first-child th:first-child{border-left:var(--el-table-border)}.el-table--border .el-table__footer-wrapper,.el-table--group .el-table__footer-wrapper{border-top:var(--el-table-border)}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{content:"";position:absolute;background-color:var(--el-table-border-color);z-index:3}.el-table--border .el-table__inner-wrapper:after{left:0;top:0;width:100%;height:1px;z-index:3}.el-table--border:before{top:-1px;left:0;width:1px;height:100%;z-index:3}.el-table--border:after{top:-1px;right:0;width:1px;height:100%;z-index:3}.el-table--border .el-table__inner-wrapper{border-right:none;border-bottom:none}.el-table--border .el-table__footer-wrapper{position:relative}.el-table--border .el-table__footer-wrapper{margin-top:-2px}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{position:sticky!important;z-index:2;background:var(--el-bg-color)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{content:"";position:absolute;top:0;width:10px;bottom:-1px;overflow-x:hidden;overflow-y:hidden;box-shadow:none;touch-action:none;pointer-events:none}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px;box-shadow:none}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{position:sticky!important;z-index:2;background:#fff;right:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:2}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:14px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--el-table-border);z-index:10}.el-table__column-filter-trigger{display:inline-block;cursor:pointer}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-bottom-patch{left:0;height:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-right-patch{top:0;height:100%;width:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--el-color-primary);z-index:1;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none}.el-tabs__new-tab{display:flex;align-items:center;justify-content:center;float:right;border:1px solid var(--el-border-color);height:20px;width:20px;line-height:20px;margin:10px 0 10px 10px;border-radius:3px;text-align:center;font-size:12px;color:var(--el-text-color-primary);cursor:pointer;transition:all .15s}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--el-border-color-light);z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:var(--el-text-color-secondary)}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:var(--el-text-color-primary);position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item .is-icon-close{border-radius:50%;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-left:5px}.el-tabs__item .is-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item .is-icon-close svg{margin-top:1px}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border:1px solid transparent;margin-top:-1px;color:var(--el-text-color-secondary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--el-border-color-light);border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--el-border-color-light);border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave var(--el-transition-duration)}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave var(--el-transition-duration)}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(-100%);opacity:0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px}.el-tag{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-text-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary);background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);display:inline-flex;justify-content:center;align-items:center;height:24px;padding:0 9px;font-size:var(--el-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-text-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-text-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-text-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-text-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-text-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color)}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-text-color:var(--el-color-white);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--plain{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-text-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-text-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-text-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-text-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-text-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-color-white);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-text-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error)}.el-tag.is-closable{padding-right:5px}.el-tag--large{padding:0 11px;height:32px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{padding:0 7px;height:20px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);font-weight:700;cursor:pointer}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid var(--el-timeline-node-color)}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{position:absolute;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{left:-2px;width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light)}.el-timeline{margin:0;font-size:var(--el-font-size-base);list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{display:flex;align-items:center}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);background-color:var(--el-color-white);padding:var(--el-tooltip-v2-padding);border:1px solid var(--el-border-color)}.el-tooltip-v2__arrow{position:absolute;color:var(--el-color-white);width:var(--el-tooltip-v2-arrow-width);height:var(--el-tooltip-v2-arrow-height);pointer-events:none;left:var(--el-tooltip-v2-arrow-x);top:var(--el-tooltip-v2-arrow-y)}.el-tooltip-v2__arrow:before{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__arrow:after{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;background-color:var(--el-color-black);color:var(--el-color-white);border-color:transparent}.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px}.el-transfer{font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{overflow:hidden;background:var(--el-bg-color-overlay);display:inline-block;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:var(--el-transfer-panel-body-height);overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:22px;line-height:var(--el-transfer-item-height)}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;width:auto}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:calc(var(--el-transfer-filter-height)/ 2)}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{display:flex;align-items:center;height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);margin:0;padding-left:15px;border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black)}.el-transfer-panel .el-transfer-panel__header .el-checkbox{position:relative;display:flex;width:100%;align-items:center}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:var(--el-text-color-primary);font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0);color:var(--el-text-color-secondary);font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);margin:0;padding:0;border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius)}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:var(--el-text-color-regular)}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding:6px 15px 0;color:var(--el-text-color-secondary);text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-tree{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree{position:relative;cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--el-text-color-secondary);font-size:var(--el-font-size-base)}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:var(--el-color-primary)}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px;box-sizing:content-box}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__label{font-size:var(--el-font-size-base)}.el-tree-node__loading-icon{margin-right:8px;font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color)}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__item{flex:1;background:0 0!important;padding-left:0;height:20px;line-height:20px}.el-upload{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:var(--el-text-color-regular);margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{--el-upload-picture-card-size:148px;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;display:inline-flex;justify-content:center;align-items:center}.el-upload--picture-card i{font-size:28px;color:var(--el-text-color-secondary)}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{font-size:67px;color:var(--el-text-color-placeholder);margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:var(--el-text-color-regular);margin-bottom:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{display:none;position:absolute;right:5px;top:50%;cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{display:none;position:absolute;right:5px;font-size:12px;cursor:pointer;opacity:1;color:var(--el-color-primary);transform:translateY(-50%)}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;justify-content:center;flex-direction:column;width:100%;margin-left:4px}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list.is-disabled .el-upload-list__item-status-label,.el-upload-list.is-disabled .el-upload-list__item:hover{display:block}.el-upload-list__item-name{color:var(--el-text-color-regular);display:inline-flex;text-align:center;align-items:center;padding:0 4px;overflow:hidden;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap;font-size:var(--el-font-size-base)}.el-upload-list__item-name .el-icon{margin-right:6px;color:var(--el-text-color-secondary)}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none;height:100%;justify-content:center;align-items:center;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:var(--el-text-color-regular);display:none}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:var(--el-fill-color-blank);border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;padding:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%;object-fit:contain}.el-upload-list--picture-card .el-upload-list__item-status-label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;display:inline-flex;justify-content:center;align-items:center;color:#fff;opacity:0;font-size:20px;background-color:var(--el-overlay-color-lighter);transition:opacity var(--el-transition-duration)}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:1rem}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:var(--el-fill-color-blank);border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{display:inline-flex;justify-content:center;align-items:center;width:70px;height:70px;object-fit:contain;position:relative;z-index:1;background-color:var(--el-color-white)}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:var(--el-overlay-color-light);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:var(--el-text-color-primary)}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius, 4px)}.el-popper{position:absolute;border-radius:var(--el-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.el-popper.is-dark{color:var(--el-bg-color);background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark .el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light .el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-bg-color-overlay);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.el-popper__arrow:before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--el-text-color-primary);box-sizing:border-box}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent!important;border-bottom-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-select-dropdown__item{font-size:var(--el-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:var(--el-color-white)}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.selected{color:var(--el-color-primary);font-weight:700}.vld-shown{overflow:hidden}.vld-overlay{bottom:0;left:0;position:absolute;right:0;top:0;align-items:center;display:none;justify-content:center;overflow:hidden;z-index:9999}.vld-overlay.is-active{display:flex}.vld-overlay.is-full-page{z-index:9999;position:fixed}.vld-overlay .vld-background{bottom:0;left:0;position:absolute;right:0;top:0;background:#fff;opacity:.5}.vld-overlay .vld-icon,.vld-parent{position:relative}#GameDiv.studentSize{width:1280px;height:720px}#GameCanvas{display:block;touch-action:none;user-select:none;cursor:default;border-radius:5px}canvas:focus{outline:none}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:0;font-family:Zen Maru Gothic,sans-serif} diff --git a/public/assets/index.12a12ee9.js b/public/assets/index.a0e31fb5.js similarity index 55% rename from public/assets/index.12a12ee9.js rename to public/assets/index.a0e31fb5.js index d2d3a6f..3823e56 100644 --- a/public/assets/index.12a12ee9.js +++ b/public/assets/index.a0e31fb5.js @@ -1,11 +1,11 @@ -var qC=Object.defineProperty,GC=Object.defineProperties;var XC=Object.getOwnPropertyDescriptors;var Pa=Object.getOwnPropertySymbols;var Hp=Object.prototype.hasOwnProperty,zp=Object.prototype.propertyIsEnumerable;var qu=(e,t,n)=>t in e?qC(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ne=(e,t)=>{for(var n in t||(t={}))Hp.call(t,n)&&qu(e,n,t[n]);if(Pa)for(var n of Pa(t))zp.call(t,n)&&qu(e,n,t[n]);return e},Te=(e,t)=>GC(e,XC(t));var Kp=(e,t)=>{var n={};for(var o in e)Hp.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&Pa)for(var o of Pa(e))t.indexOf(o)<0&&zp.call(e,o)&&(n[o]=e[o]);return n};var JC=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ys=(e,t,n)=>(qu(e,typeof t!="symbol"?t+"":t,n),n);var BQ=JC((Sn,En)=>{const ZC=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&o(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerpolicy&&(l.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?l.credentials="include":s.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function o(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}};ZC();var ln="top",Tn="bottom",An="right",rn="left",au="auto",or=[ln,Tn,An,rn],Zs="start",Vl="end",Kg="clippingParents",Qd="viewport",kl="popper",Wg="reference",Fc=or.reduce(function(e,t){return e.concat([t+"-"+Zs,t+"-"+Vl])},[]),iu=[].concat(or,[au]).reduce(function(e,t){return e.concat([t,t+"-"+Zs,t+"-"+Vl])},[]),jg="beforeRead",Yg="read",Ug="afterRead",qg="beforeMain",Gg="main",Xg="afterMain",Jg="beforeWrite",Zg="write",Qg="afterWrite",xg=[jg,Yg,Ug,qg,Gg,Xg,Jg,Zg,Qg];function $o(e){return e?(e.nodeName||"").toLowerCase():null}function io(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Fl(e){var t=io(e).Element;return e instanceof t||e instanceof Element}function Fn(e){var t=io(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function xd(e){if(typeof ShadowRoot=="undefined")return!1;var t=io(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function QC(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var o=t.styles[n]||{},s=t.attributes[n]||{},l=t.elements[n];!Fn(l)||!$o(l)||(Object.assign(l.style,o),Object.keys(s).forEach(function(r){var a=s[r];a===!1?l.removeAttribute(r):l.setAttribute(r,a===!0?"":a)}))})}function xC(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(o){var s=t.elements[o],l=t.attributes[o]||{},r=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:n[o]),a=r.reduce(function(i,u){return i[u]="",i},{});!Fn(s)||!$o(s)||(Object.assign(s.style,a),Object.keys(l).forEach(function(i){s.removeAttribute(i)}))})}}var ef={name:"applyStyles",enabled:!0,phase:"write",fn:QC,effect:xC,requires:["computeStyles"]};function Co(e){return e.split("-")[0]}var Ks=Math.max,Li=Math.min,Hl=Math.round;function zl(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),o=1,s=1;if(Fn(e)&&t){var l=e.offsetHeight,r=e.offsetWidth;r>0&&(o=Hl(n.width)/r||1),l>0&&(s=Hl(n.height)/l||1)}return{width:n.width/o,height:n.height/s,top:n.top/s,right:n.right/o,bottom:n.bottom/s,left:n.left/o,x:n.left/o,y:n.top/s}}function tf(e){var t=zl(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function eb(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&xd(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function Ro(e){return io(e).getComputedStyle(e)}function e$(e){return["table","td","th"].indexOf($o(e))>=0}function hs(e){return((Fl(e)?e.ownerDocument:e.document)||window.document).documentElement}function uu(e){return $o(e)==="html"?e:e.assignedSlot||e.parentNode||(xd(e)?e.host:null)||hs(e)}function Wp(e){return!Fn(e)||Ro(e).position==="fixed"?null:e.offsetParent}function t$(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&Fn(e)){var o=Ro(e);if(o.position==="fixed")return null}var s=uu(e);for(xd(s)&&(s=s.host);Fn(s)&&["html","body"].indexOf($o(s))<0;){var l=Ro(s);if(l.transform!=="none"||l.perspective!=="none"||l.contain==="paint"||["transform","perspective"].indexOf(l.willChange)!==-1||t&&l.willChange==="filter"||t&&l.filter&&l.filter!=="none")return s;s=s.parentNode}return null}function ma(e){for(var t=io(e),n=Wp(e);n&&e$(n)&&Ro(n).position==="static";)n=Wp(n);return n&&($o(n)==="html"||$o(n)==="body"&&Ro(n).position==="static")?t:n||t$(e)||t}function nf(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Dr(e,t,n){return Ks(e,Li(t,n))}function n$(e,t,n){var o=Dr(e,t,n);return o>n?n:o}function tb(){return{top:0,right:0,bottom:0,left:0}}function nb(e){return Object.assign({},tb(),e)}function ob(e,t){return t.reduce(function(n,o){return n[o]=e,n},{})}var o$=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,nb(typeof t!="number"?t:ob(t,or))};function s$(e){var t,n=e.state,o=e.name,s=e.options,l=n.elements.arrow,r=n.modifiersData.popperOffsets,a=Co(n.placement),i=nf(a),u=[rn,An].indexOf(a)>=0,c=u?"height":"width";if(!(!l||!r)){var d=o$(s.padding,n),f=tf(l),p=i==="y"?ln:rn,h=i==="y"?Tn:An,g=n.rects.reference[c]+n.rects.reference[i]-r[i]-n.rects.popper[c],m=r[i]-n.rects.reference[i],v=ma(l),y=v?i==="y"?v.clientHeight||0:v.clientWidth||0:0,w=g/2-m/2,S=d[p],$=y-f[c]-d[h],k=y/2-f[c]/2+w,T=Dr(S,k,$),O=i;n.modifiersData[o]=(t={},t[O]=T,t.centerOffset=T-k,t)}}function l$(e){var t=e.state,n=e.options,o=n.element,s=o===void 0?"[data-popper-arrow]":o;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||!eb(t.elements.popper,s)||(t.elements.arrow=s))}var sb={name:"arrow",enabled:!0,phase:"main",fn:s$,effect:l$,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kl(e){return e.split("-")[1]}var r$={top:"auto",right:"auto",bottom:"auto",left:"auto"};function a$(e){var t=e.x,n=e.y,o=window,s=o.devicePixelRatio||1;return{x:Hl(t*s)/s||0,y:Hl(n*s)/s||0}}function jp(e){var t,n=e.popper,o=e.popperRect,s=e.placement,l=e.variation,r=e.offsets,a=e.position,i=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,f=r.x,p=f===void 0?0:f,h=r.y,g=h===void 0?0:h,m=typeof c=="function"?c({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=r.hasOwnProperty("x"),y=r.hasOwnProperty("y"),w=rn,S=ln,$=window;if(u){var k=ma(n),T="clientHeight",O="clientWidth";if(k===io(n)&&(k=hs(n),Ro(k).position!=="static"&&a==="absolute"&&(T="scrollHeight",O="scrollWidth")),k=k,s===ln||(s===rn||s===An)&&l===Vl){S=Tn;var L=d&&k===$&&$.visualViewport?$.visualViewport.height:k[T];g-=L-o.height,g*=i?1:-1}if(s===rn||(s===ln||s===Tn)&&l===Vl){w=An;var B=d&&k===$&&$.visualViewport?$.visualViewport.width:k[O];p-=B-o.width,p*=i?1:-1}}var V=Object.assign({position:a},u&&r$),H=c===!0?a$({x:p,y:g}):{x:p,y:g};if(p=H.x,g=H.y,i){var R;return Object.assign({},V,(R={},R[S]=y?"0":"",R[w]=v?"0":"",R.transform=($.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",R))}return Object.assign({},V,(t={},t[S]=y?g+"px":"",t[w]=v?p+"px":"",t.transform="",t))}function i$(e){var t=e.state,n=e.options,o=n.gpuAcceleration,s=o===void 0?!0:o,l=n.adaptive,r=l===void 0?!0:l,a=n.roundOffsets,i=a===void 0?!0:a,u={placement:Co(t.placement),variation:Kl(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,jp(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:i})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,jp(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:i})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var of={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:i$,data:{}},La={passive:!0};function u$(e){var t=e.state,n=e.instance,o=e.options,s=o.scroll,l=s===void 0?!0:s,r=o.resize,a=r===void 0?!0:r,i=io(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return l&&u.forEach(function(c){c.addEventListener("scroll",n.update,La)}),a&&i.addEventListener("resize",n.update,La),function(){l&&u.forEach(function(c){c.removeEventListener("scroll",n.update,La)}),a&&i.removeEventListener("resize",n.update,La)}}var sf={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:u$,data:{}},c$={left:"right",right:"left",bottom:"top",top:"bottom"};function ti(e){return e.replace(/left|right|bottom|top/g,function(t){return c$[t]})}var d$={start:"end",end:"start"};function Yp(e){return e.replace(/start|end/g,function(t){return d$[t]})}function lf(e){var t=io(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}}function rf(e){return zl(hs(e)).left+lf(e).scrollLeft}function f$(e){var t=io(e),n=hs(e),o=t.visualViewport,s=n.clientWidth,l=n.clientHeight,r=0,a=0;return o&&(s=o.width,l=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=o.offsetLeft,a=o.offsetTop)),{width:s,height:l,x:r+rf(e),y:a}}function p$(e){var t,n=hs(e),o=lf(e),s=(t=e.ownerDocument)==null?void 0:t.body,l=Ks(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Ks(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-o.scrollLeft+rf(e),i=-o.scrollTop;return Ro(s||n).direction==="rtl"&&(a+=Ks(n.clientWidth,s?s.clientWidth:0)-l),{width:l,height:r,x:a,y:i}}function af(e){var t=Ro(e),n=t.overflow,o=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+s+o)}function lb(e){return["html","body","#document"].indexOf($o(e))>=0?e.ownerDocument.body:Fn(e)&&af(e)?e:lb(uu(e))}function Pr(e,t){var n;t===void 0&&(t=[]);var o=lb(e),s=o===((n=e.ownerDocument)==null?void 0:n.body),l=io(o),r=s?[l].concat(l.visualViewport||[],af(o)?o:[]):o,a=t.concat(r);return s?a:a.concat(Pr(uu(r)))}function Hc(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function h$(e){var t=zl(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Up(e,t){return t===Qd?Hc(f$(e)):Fl(t)?h$(t):Hc(p$(hs(e)))}function m$(e){var t=Pr(uu(e)),n=["absolute","fixed"].indexOf(Ro(e).position)>=0,o=n&&Fn(e)?ma(e):e;return Fl(o)?t.filter(function(s){return Fl(s)&&eb(s,o)&&$o(s)!=="body"}):[]}function v$(e,t,n){var o=t==="clippingParents"?m$(e):[].concat(t),s=[].concat(o,[n]),l=s[0],r=s.reduce(function(a,i){var u=Up(e,i);return a.top=Ks(u.top,a.top),a.right=Li(u.right,a.right),a.bottom=Li(u.bottom,a.bottom),a.left=Ks(u.left,a.left),a},Up(e,l));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function rb(e){var t=e.reference,n=e.element,o=e.placement,s=o?Co(o):null,l=o?Kl(o):null,r=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,i;switch(s){case ln:i={x:r,y:t.y-n.height};break;case Tn:i={x:r,y:t.y+t.height};break;case An:i={x:t.x+t.width,y:a};break;case rn:i={x:t.x-n.width,y:a};break;default:i={x:t.x,y:t.y}}var u=s?nf(s):null;if(u!=null){var c=u==="y"?"height":"width";switch(l){case Zs:i[u]=i[u]-(t[c]/2-n[c]/2);break;case Vl:i[u]=i[u]+(t[c]/2-n[c]/2);break}}return i}function Wl(e,t){t===void 0&&(t={});var n=t,o=n.placement,s=o===void 0?e.placement:o,l=n.boundary,r=l===void 0?Kg:l,a=n.rootBoundary,i=a===void 0?Qd:a,u=n.elementContext,c=u===void 0?kl:u,d=n.altBoundary,f=d===void 0?!1:d,p=n.padding,h=p===void 0?0:p,g=nb(typeof h!="number"?h:ob(h,or)),m=c===kl?Wg:kl,v=e.rects.popper,y=e.elements[f?m:c],w=v$(Fl(y)?y:y.contextElement||hs(e.elements.popper),r,i),S=zl(e.elements.reference),$=rb({reference:S,element:v,strategy:"absolute",placement:s}),k=Hc(Object.assign({},v,$)),T=c===kl?k:S,O={top:w.top-T.top+g.top,bottom:T.bottom-w.bottom+g.bottom,left:w.left-T.left+g.left,right:T.right-w.right+g.right},L=e.modifiersData.offset;if(c===kl&&L){var B=L[s];Object.keys(O).forEach(function(V){var H=[An,Tn].indexOf(V)>=0?1:-1,R=[ln,Tn].indexOf(V)>=0?"y":"x";O[V]+=B[R]*H})}return O}function g$(e,t){t===void 0&&(t={});var n=t,o=n.placement,s=n.boundary,l=n.rootBoundary,r=n.padding,a=n.flipVariations,i=n.allowedAutoPlacements,u=i===void 0?iu:i,c=Kl(o),d=c?a?Fc:Fc.filter(function(h){return Kl(h)===c}):or,f=d.filter(function(h){return u.indexOf(h)>=0});f.length===0&&(f=d);var p=f.reduce(function(h,g){return h[g]=Wl(e,{placement:g,boundary:s,rootBoundary:l,padding:r})[Co(g)],h},{});return Object.keys(p).sort(function(h,g){return p[h]-p[g]})}function b$(e){if(Co(e)===au)return[];var t=ti(e);return[Yp(e),t,Yp(t)]}function y$(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var s=n.mainAxis,l=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!0:r,i=n.fallbackPlacements,u=n.padding,c=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=p===void 0?!0:p,g=n.allowedAutoPlacements,m=t.options.placement,v=Co(m),y=v===m,w=i||(y||!h?[ti(m)]:b$(m)),S=[m].concat(w).reduce(function(Ee,Me){return Ee.concat(Co(Me)===au?g$(t,{placement:Me,boundary:c,rootBoundary:d,padding:u,flipVariations:h,allowedAutoPlacements:g}):Me)},[]),$=t.rects.reference,k=t.rects.popper,T=new Map,O=!0,L=S[0],B=0;B=0,W=z?"width":"height",P=Wl(t,{placement:V,boundary:c,rootBoundary:d,altBoundary:f,padding:u}),N=z?R?An:rn:R?Tn:ln;$[W]>k[W]&&(N=ti(N));var I=ti(N),U=[];if(l&&U.push(P[H]<=0),a&&U.push(P[N]<=0,P[I]<=0),U.every(function(Ee){return Ee})){L=V,O=!1;break}T.set(V,U)}if(O)for(var q=h?3:1,Q=function(Me){var Z=S.find(function(ve){var Ce=T.get(ve);if(Ce)return Ce.slice(0,Me).every(function(ke){return ke})});if(Z)return L=Z,"break"},J=q;J>0;J--){var ae=Q(J);if(ae==="break")break}t.placement!==L&&(t.modifiersData[o]._skip=!0,t.placement=L,t.reset=!0)}}var ab={name:"flip",enabled:!0,phase:"main",fn:y$,requiresIfExists:["offset"],data:{_skip:!1}};function qp(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Gp(e){return[ln,An,Tn,rn].some(function(t){return e[t]>=0})}function w$(e){var t=e.state,n=e.name,o=t.rects.reference,s=t.rects.popper,l=t.modifiersData.preventOverflow,r=Wl(t,{elementContext:"reference"}),a=Wl(t,{altBoundary:!0}),i=qp(r,o),u=qp(a,s,l),c=Gp(i),d=Gp(u);t.modifiersData[n]={referenceClippingOffsets:i,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var ib={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:w$};function C$(e,t,n){var o=Co(e),s=[rn,ln].indexOf(o)>=0?-1:1,l=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,r=l[0],a=l[1];return r=r||0,a=(a||0)*s,[rn,An].indexOf(o)>=0?{x:a,y:r}:{x:r,y:a}}function $$(e){var t=e.state,n=e.options,o=e.name,s=n.offset,l=s===void 0?[0,0]:s,r=iu.reduce(function(c,d){return c[d]=C$(d,t.rects,l),c},{}),a=r[t.placement],i=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=u),t.modifiersData[o]=r}var ub={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:$$};function k$(e){var t=e.state,n=e.name;t.modifiersData[n]=rb({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var uf={name:"popperOffsets",enabled:!0,phase:"read",fn:k$,data:{}};function S$(e){return e==="x"?"y":"x"}function E$(e){var t=e.state,n=e.options,o=e.name,s=n.mainAxis,l=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!1:r,i=n.boundary,u=n.rootBoundary,c=n.altBoundary,d=n.padding,f=n.tether,p=f===void 0?!0:f,h=n.tetherOffset,g=h===void 0?0:h,m=Wl(t,{boundary:i,rootBoundary:u,padding:d,altBoundary:c}),v=Co(t.placement),y=Kl(t.placement),w=!y,S=nf(v),$=S$(S),k=t.modifiersData.popperOffsets,T=t.rects.reference,O=t.rects.popper,L=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,B=typeof L=="number"?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),V=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,H={x:0,y:0};if(!!k){if(l){var R,z=S==="y"?ln:rn,W=S==="y"?Tn:An,P=S==="y"?"height":"width",N=k[S],I=N+m[z],U=N-m[W],q=p?-O[P]/2:0,Q=y===Zs?T[P]:O[P],J=y===Zs?-O[P]:-T[P],ae=t.elements.arrow,Ee=p&&ae?tf(ae):{width:0,height:0},Me=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:tb(),Z=Me[z],ve=Me[W],Ce=Dr(0,T[P],Ee[P]),ke=w?T[P]/2-q-Ce-Z-B.mainAxis:Q-Ce-Z-B.mainAxis,Oe=w?-T[P]/2+q+Ce+ve+B.mainAxis:J+Ce+ve+B.mainAxis,We=t.elements.arrow&&ma(t.elements.arrow),qe=We?S==="y"?We.clientTop||0:We.clientLeft||0:0,K=(R=V==null?void 0:V[S])!=null?R:0,X=N+ke-K-qe,fe=N+Oe-K,ye=Dr(p?Li(I,X):I,N,p?Ks(U,fe):U);k[S]=ye,H[S]=ye-N}if(a){var be,_e=S==="x"?ln:rn,re=S==="x"?Tn:An,se=k[$],ee=$==="y"?"height":"width",ue=se+m[_e],Re=se-m[re],F=[ln,rn].indexOf(v)!==-1,de=(be=V==null?void 0:V[$])!=null?be:0,Fe=F?ue:se-T[ee]-O[ee]-de+B.altAxis,Ze=F?se+T[ee]+O[ee]-de-B.altAxis:Re,He=p&&F?n$(Fe,se,Ze):Dr(p?Fe:ue,se,p?Ze:Re);k[$]=He,H[$]=He-se}t.modifiersData[o]=H}}var cb={name:"preventOverflow",enabled:!0,phase:"main",fn:E$,requiresIfExists:["offset"]};function _$(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function T$(e){return e===io(e)||!Fn(e)?lf(e):_$(e)}function A$(e){var t=e.getBoundingClientRect(),n=Hl(t.width)/e.offsetWidth||1,o=Hl(t.height)/e.offsetHeight||1;return n!==1||o!==1}function N$(e,t,n){n===void 0&&(n=!1);var o=Fn(t),s=Fn(t)&&A$(t),l=hs(t),r=zl(e,s),a={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(o||!o&&!n)&&(($o(t)!=="body"||af(l))&&(a=T$(t)),Fn(t)?(i=zl(t,!0),i.x+=t.clientLeft,i.y+=t.clientTop):l&&(i.x=rf(l))),{x:r.left+a.scrollLeft-i.x,y:r.top+a.scrollTop-i.y,width:r.width,height:r.height}}function M$(e){var t=new Map,n=new Set,o=[];e.forEach(function(l){t.set(l.name,l)});function s(l){n.add(l.name);var r=[].concat(l.requires||[],l.requiresIfExists||[]);r.forEach(function(a){if(!n.has(a)){var i=t.get(a);i&&s(i)}}),o.push(l)}return e.forEach(function(l){n.has(l.name)||s(l)}),o}function O$(e){var t=M$(e);return xg.reduce(function(n,o){return n.concat(t.filter(function(s){return s.phase===o}))},[])}function I$(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function D$(e){var t=e.reduce(function(n,o){var s=n[o.name];return n[o.name]=s?Object.assign({},s,o,{options:Object.assign({},s.options,o.options),data:Object.assign({},s.data,o.data)}):o,n},{});return Object.keys(t).map(function(n){return t[n]})}var Xp={placement:"bottom",modifiers:[],strategy:"absolute"};function Jp(){for(var e=arguments.length,t=new Array(e),n=0;nt in e?ZC(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ne=(e,t)=>{for(var n in t||(t={}))zp.call(t,n)&&Hp(e,n,t[n]);if(Pa)for(var n of Pa(t))Kp.call(t,n)&&Hp(e,n,t[n]);return e},Te=(e,t)=>JC(e,QC(t));var Wp=(e,t)=>{var n={};for(var o in e)zp.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&Pa)for(var o of Pa(e))t.indexOf(o)<0&&Kp.call(e,o)&&(n[o]=e[o]);return n};var xC=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var VQ=xC((Sn,En)=>{const e$=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&o(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerpolicy&&(l.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?l.credentials="include":s.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function o(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}};e$();var ln="top",Tn="bottom",An="right",rn="left",ru="auto",nr=[ln,Tn,An,rn],Zs="start",Vl="end",jg="clippingParents",Jd="viewport",$l="popper",Yg="reference",Bc=nr.reduce(function(e,t){return e.concat([t+"-"+Zs,t+"-"+Vl])},[]),au=[].concat(nr,[ru]).reduce(function(e,t){return e.concat([t,t+"-"+Zs,t+"-"+Vl])},[]),Ug="beforeRead",qg="read",Gg="afterRead",Xg="beforeMain",Zg="main",Jg="afterMain",Qg="beforeWrite",xg="write",eb="afterWrite",tb=[Ug,qg,Gg,Xg,Zg,Jg,Qg,xg,eb];function $o(e){return e?(e.nodeName||"").toLowerCase():null}function io(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Bl(e){var t=io(e).Element;return e instanceof t||e instanceof Element}function Fn(e){var t=io(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Qd(e){if(typeof ShadowRoot=="undefined")return!1;var t=io(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function t$(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var o=t.styles[n]||{},s=t.attributes[n]||{},l=t.elements[n];!Fn(l)||!$o(l)||(Object.assign(l.style,o),Object.keys(s).forEach(function(r){var a=s[r];a===!1?l.removeAttribute(r):l.setAttribute(r,a===!0?"":a)}))})}function n$(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(o){var s=t.elements[o],l=t.attributes[o]||{},r=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:n[o]),a=r.reduce(function(i,u){return i[u]="",i},{});!Fn(s)||!$o(s)||(Object.assign(s.style,a),Object.keys(l).forEach(function(i){s.removeAttribute(i)}))})}}var xd={name:"applyStyles",enabled:!0,phase:"write",fn:t$,effect:n$,requires:["computeStyles"]};function Co(e){return e.split("-")[0]}var zs=Math.max,Di=Math.min,Fl=Math.round;function Hl(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),o=1,s=1;if(Fn(e)&&t){var l=e.offsetHeight,r=e.offsetWidth;r>0&&(o=Fl(n.width)/r||1),l>0&&(s=Fl(n.height)/l||1)}return{width:n.width/o,height:n.height/s,top:n.top/s,right:n.right/o,bottom:n.bottom/s,left:n.left/o,x:n.left/o,y:n.top/s}}function ef(e){var t=Hl(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function nb(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Qd(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function Ro(e){return io(e).getComputedStyle(e)}function o$(e){return["table","td","th"].indexOf($o(e))>=0}function hs(e){return((Bl(e)?e.ownerDocument:e.document)||window.document).documentElement}function iu(e){return $o(e)==="html"?e:e.assignedSlot||e.parentNode||(Qd(e)?e.host:null)||hs(e)}function jp(e){return!Fn(e)||Ro(e).position==="fixed"?null:e.offsetParent}function s$(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&Fn(e)){var o=Ro(e);if(o.position==="fixed")return null}var s=iu(e);for(Qd(s)&&(s=s.host);Fn(s)&&["html","body"].indexOf($o(s))<0;){var l=Ro(s);if(l.transform!=="none"||l.perspective!=="none"||l.contain==="paint"||["transform","perspective"].indexOf(l.willChange)!==-1||t&&l.willChange==="filter"||t&&l.filter&&l.filter!=="none")return s;s=s.parentNode}return null}function ha(e){for(var t=io(e),n=jp(e);n&&o$(n)&&Ro(n).position==="static";)n=jp(n);return n&&($o(n)==="html"||$o(n)==="body"&&Ro(n).position==="static")?t:n||s$(e)||t}function tf(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ir(e,t,n){return zs(e,Di(t,n))}function l$(e,t,n){var o=Ir(e,t,n);return o>n?n:o}function ob(){return{top:0,right:0,bottom:0,left:0}}function sb(e){return Object.assign({},ob(),e)}function lb(e,t){return t.reduce(function(n,o){return n[o]=e,n},{})}var r$=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,sb(typeof t!="number"?t:lb(t,nr))};function a$(e){var t,n=e.state,o=e.name,s=e.options,l=n.elements.arrow,r=n.modifiersData.popperOffsets,a=Co(n.placement),i=tf(a),u=[rn,An].indexOf(a)>=0,c=u?"height":"width";if(!(!l||!r)){var d=r$(s.padding,n),f=ef(l),p=i==="y"?ln:rn,h=i==="y"?Tn:An,g=n.rects.reference[c]+n.rects.reference[i]-r[i]-n.rects.popper[c],m=r[i]-n.rects.reference[i],v=ha(l),b=v?i==="y"?v.clientHeight||0:v.clientWidth||0:0,w=g/2-m/2,S=d[p],$=b-f[c]-d[h],k=b/2-f[c]/2+w,T=Ir(S,k,$),O=i;n.modifiersData[o]=(t={},t[O]=T,t.centerOffset=T-k,t)}}function i$(e){var t=e.state,n=e.options,o=n.element,s=o===void 0?"[data-popper-arrow]":o;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||!nb(t.elements.popper,s)||(t.elements.arrow=s))}var rb={name:"arrow",enabled:!0,phase:"main",fn:a$,effect:i$,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function zl(e){return e.split("-")[1]}var u$={top:"auto",right:"auto",bottom:"auto",left:"auto"};function c$(e){var t=e.x,n=e.y,o=window,s=o.devicePixelRatio||1;return{x:Fl(t*s)/s||0,y:Fl(n*s)/s||0}}function Yp(e){var t,n=e.popper,o=e.popperRect,s=e.placement,l=e.variation,r=e.offsets,a=e.position,i=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,f=r.x,p=f===void 0?0:f,h=r.y,g=h===void 0?0:h,m=typeof c=="function"?c({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),w=rn,S=ln,$=window;if(u){var k=ha(n),T="clientHeight",O="clientWidth";if(k===io(n)&&(k=hs(n),Ro(k).position!=="static"&&a==="absolute"&&(T="scrollHeight",O="scrollWidth")),k=k,s===ln||(s===rn||s===An)&&l===Vl){S=Tn;var L=d&&k===$&&$.visualViewport?$.visualViewport.height:k[T];g-=L-o.height,g*=i?1:-1}if(s===rn||(s===ln||s===Tn)&&l===Vl){w=An;var V=d&&k===$&&$.visualViewport?$.visualViewport.width:k[O];p-=V-o.width,p*=i?1:-1}}var B=Object.assign({position:a},u&&u$),H=c===!0?c$({x:p,y:g}):{x:p,y:g};if(p=H.x,g=H.y,i){var R;return Object.assign({},B,(R={},R[S]=b?"0":"",R[w]=v?"0":"",R.transform=($.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",R))}return Object.assign({},B,(t={},t[S]=b?g+"px":"",t[w]=v?p+"px":"",t.transform="",t))}function d$(e){var t=e.state,n=e.options,o=n.gpuAcceleration,s=o===void 0?!0:o,l=n.adaptive,r=l===void 0?!0:l,a=n.roundOffsets,i=a===void 0?!0:a,u={placement:Co(t.placement),variation:zl(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Yp(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:i})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Yp(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:i})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var nf={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:d$,data:{}},Da={passive:!0};function f$(e){var t=e.state,n=e.instance,o=e.options,s=o.scroll,l=s===void 0?!0:s,r=o.resize,a=r===void 0?!0:r,i=io(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return l&&u.forEach(function(c){c.addEventListener("scroll",n.update,Da)}),a&&i.addEventListener("resize",n.update,Da),function(){l&&u.forEach(function(c){c.removeEventListener("scroll",n.update,Da)}),a&&i.removeEventListener("resize",n.update,Da)}}var of={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:f$,data:{}},p$={left:"right",right:"left",bottom:"top",top:"bottom"};function ei(e){return e.replace(/left|right|bottom|top/g,function(t){return p$[t]})}var h$={start:"end",end:"start"};function Up(e){return e.replace(/start|end/g,function(t){return h$[t]})}function sf(e){var t=io(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}}function lf(e){return Hl(hs(e)).left+sf(e).scrollLeft}function m$(e){var t=io(e),n=hs(e),o=t.visualViewport,s=n.clientWidth,l=n.clientHeight,r=0,a=0;return o&&(s=o.width,l=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=o.offsetLeft,a=o.offsetTop)),{width:s,height:l,x:r+lf(e),y:a}}function v$(e){var t,n=hs(e),o=sf(e),s=(t=e.ownerDocument)==null?void 0:t.body,l=zs(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=zs(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-o.scrollLeft+lf(e),i=-o.scrollTop;return Ro(s||n).direction==="rtl"&&(a+=zs(n.clientWidth,s?s.clientWidth:0)-l),{width:l,height:r,x:a,y:i}}function rf(e){var t=Ro(e),n=t.overflow,o=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+s+o)}function ab(e){return["html","body","#document"].indexOf($o(e))>=0?e.ownerDocument.body:Fn(e)&&rf(e)?e:ab(iu(e))}function Pr(e,t){var n;t===void 0&&(t=[]);var o=ab(e),s=o===((n=e.ownerDocument)==null?void 0:n.body),l=io(o),r=s?[l].concat(l.visualViewport||[],rf(o)?o:[]):o,a=t.concat(r);return s?a:a.concat(Pr(iu(r)))}function Fc(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function g$(e){var t=Hl(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function qp(e,t){return t===Jd?Fc(m$(e)):Bl(t)?g$(t):Fc(v$(hs(e)))}function b$(e){var t=Pr(iu(e)),n=["absolute","fixed"].indexOf(Ro(e).position)>=0,o=n&&Fn(e)?ha(e):e;return Bl(o)?t.filter(function(s){return Bl(s)&&nb(s,o)&&$o(s)!=="body"}):[]}function y$(e,t,n){var o=t==="clippingParents"?b$(e):[].concat(t),s=[].concat(o,[n]),l=s[0],r=s.reduce(function(a,i){var u=qp(e,i);return a.top=zs(u.top,a.top),a.right=Di(u.right,a.right),a.bottom=Di(u.bottom,a.bottom),a.left=zs(u.left,a.left),a},qp(e,l));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function ib(e){var t=e.reference,n=e.element,o=e.placement,s=o?Co(o):null,l=o?zl(o):null,r=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,i;switch(s){case ln:i={x:r,y:t.y-n.height};break;case Tn:i={x:r,y:t.y+t.height};break;case An:i={x:t.x+t.width,y:a};break;case rn:i={x:t.x-n.width,y:a};break;default:i={x:t.x,y:t.y}}var u=s?tf(s):null;if(u!=null){var c=u==="y"?"height":"width";switch(l){case Zs:i[u]=i[u]-(t[c]/2-n[c]/2);break;case Vl:i[u]=i[u]+(t[c]/2-n[c]/2);break}}return i}function Kl(e,t){t===void 0&&(t={});var n=t,o=n.placement,s=o===void 0?e.placement:o,l=n.boundary,r=l===void 0?jg:l,a=n.rootBoundary,i=a===void 0?Jd:a,u=n.elementContext,c=u===void 0?$l:u,d=n.altBoundary,f=d===void 0?!1:d,p=n.padding,h=p===void 0?0:p,g=sb(typeof h!="number"?h:lb(h,nr)),m=c===$l?Yg:$l,v=e.rects.popper,b=e.elements[f?m:c],w=y$(Bl(b)?b:b.contextElement||hs(e.elements.popper),r,i),S=Hl(e.elements.reference),$=ib({reference:S,element:v,strategy:"absolute",placement:s}),k=Fc(Object.assign({},v,$)),T=c===$l?k:S,O={top:w.top-T.top+g.top,bottom:T.bottom-w.bottom+g.bottom,left:w.left-T.left+g.left,right:T.right-w.right+g.right},L=e.modifiersData.offset;if(c===$l&&L){var V=L[s];Object.keys(O).forEach(function(B){var H=[An,Tn].indexOf(B)>=0?1:-1,R=[ln,Tn].indexOf(B)>=0?"y":"x";O[B]+=V[R]*H})}return O}function w$(e,t){t===void 0&&(t={});var n=t,o=n.placement,s=n.boundary,l=n.rootBoundary,r=n.padding,a=n.flipVariations,i=n.allowedAutoPlacements,u=i===void 0?au:i,c=zl(o),d=c?a?Bc:Bc.filter(function(h){return zl(h)===c}):nr,f=d.filter(function(h){return u.indexOf(h)>=0});f.length===0&&(f=d);var p=f.reduce(function(h,g){return h[g]=Kl(e,{placement:g,boundary:s,rootBoundary:l,padding:r})[Co(g)],h},{});return Object.keys(p).sort(function(h,g){return p[h]-p[g]})}function C$(e){if(Co(e)===ru)return[];var t=ei(e);return[Up(e),t,Up(t)]}function $$(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var s=n.mainAxis,l=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!0:r,i=n.fallbackPlacements,u=n.padding,c=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=p===void 0?!0:p,g=n.allowedAutoPlacements,m=t.options.placement,v=Co(m),b=v===m,w=i||(b||!h?[ei(m)]:C$(m)),S=[m].concat(w).reduce(function(Ee,Me){return Ee.concat(Co(Me)===ru?w$(t,{placement:Me,boundary:c,rootBoundary:d,padding:u,flipVariations:h,allowedAutoPlacements:g}):Me)},[]),$=t.rects.reference,k=t.rects.popper,T=new Map,O=!0,L=S[0],V=0;V=0,W=z?"width":"height",P=Kl(t,{placement:B,boundary:c,rootBoundary:d,altBoundary:f,padding:u}),N=z?R?An:rn:R?Tn:ln;$[W]>k[W]&&(N=ei(N));var I=ei(N),U=[];if(l&&U.push(P[H]<=0),a&&U.push(P[N]<=0,P[I]<=0),U.every(function(Ee){return Ee})){L=B,O=!1;break}T.set(B,U)}if(O)for(var q=h?3:1,Q=function(Me){var J=S.find(function(ve){var Ce=T.get(ve);if(Ce)return Ce.slice(0,Me).every(function(ke){return ke})});if(J)return L=J,"break"},Z=q;Z>0;Z--){var ae=Q(Z);if(ae==="break")break}t.placement!==L&&(t.modifiersData[o]._skip=!0,t.placement=L,t.reset=!0)}}var ub={name:"flip",enabled:!0,phase:"main",fn:$$,requiresIfExists:["offset"],data:{_skip:!1}};function Gp(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Xp(e){return[ln,An,Tn,rn].some(function(t){return e[t]>=0})}function k$(e){var t=e.state,n=e.name,o=t.rects.reference,s=t.rects.popper,l=t.modifiersData.preventOverflow,r=Kl(t,{elementContext:"reference"}),a=Kl(t,{altBoundary:!0}),i=Gp(r,o),u=Gp(a,s,l),c=Xp(i),d=Xp(u);t.modifiersData[n]={referenceClippingOffsets:i,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var cb={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:k$};function S$(e,t,n){var o=Co(e),s=[rn,ln].indexOf(o)>=0?-1:1,l=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,r=l[0],a=l[1];return r=r||0,a=(a||0)*s,[rn,An].indexOf(o)>=0?{x:a,y:r}:{x:r,y:a}}function E$(e){var t=e.state,n=e.options,o=e.name,s=n.offset,l=s===void 0?[0,0]:s,r=au.reduce(function(c,d){return c[d]=S$(d,t.rects,l),c},{}),a=r[t.placement],i=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=u),t.modifiersData[o]=r}var db={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:E$};function _$(e){var t=e.state,n=e.name;t.modifiersData[n]=ib({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var af={name:"popperOffsets",enabled:!0,phase:"read",fn:_$,data:{}};function T$(e){return e==="x"?"y":"x"}function A$(e){var t=e.state,n=e.options,o=e.name,s=n.mainAxis,l=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!1:r,i=n.boundary,u=n.rootBoundary,c=n.altBoundary,d=n.padding,f=n.tether,p=f===void 0?!0:f,h=n.tetherOffset,g=h===void 0?0:h,m=Kl(t,{boundary:i,rootBoundary:u,padding:d,altBoundary:c}),v=Co(t.placement),b=zl(t.placement),w=!b,S=tf(v),$=T$(S),k=t.modifiersData.popperOffsets,T=t.rects.reference,O=t.rects.popper,L=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,V=typeof L=="number"?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),B=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,H={x:0,y:0};if(!!k){if(l){var R,z=S==="y"?ln:rn,W=S==="y"?Tn:An,P=S==="y"?"height":"width",N=k[S],I=N+m[z],U=N-m[W],q=p?-O[P]/2:0,Q=b===Zs?T[P]:O[P],Z=b===Zs?-O[P]:-T[P],ae=t.elements.arrow,Ee=p&&ae?ef(ae):{width:0,height:0},Me=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:ob(),J=Me[z],ve=Me[W],Ce=Ir(0,T[P],Ee[P]),ke=w?T[P]/2-q-Ce-J-V.mainAxis:Q-Ce-J-V.mainAxis,Oe=w?-T[P]/2+q+Ce+ve+V.mainAxis:Z+Ce+ve+V.mainAxis,We=t.elements.arrow&&ha(t.elements.arrow),qe=We?S==="y"?We.clientTop||0:We.clientLeft||0:0,K=(R=B==null?void 0:B[S])!=null?R:0,X=N+ke-K-qe,fe=N+Oe-K,ye=Ir(p?Di(I,X):I,N,p?zs(U,fe):U);k[S]=ye,H[S]=ye-N}if(a){var be,_e=S==="x"?ln:rn,re=S==="x"?Tn:An,se=k[$],te=$==="y"?"height":"width",ue=se+m[_e],Re=se-m[re],F=[ln,rn].indexOf(v)!==-1,de=(be=B==null?void 0:B[$])!=null?be:0,Fe=F?ue:se-T[te]-O[te]-de+V.altAxis,Je=F?se+T[te]+O[te]-de-V.altAxis:Re,He=p&&F?l$(Fe,se,Je):Ir(p?Fe:ue,se,p?Je:Re);k[$]=He,H[$]=He-se}t.modifiersData[o]=H}}var fb={name:"preventOverflow",enabled:!0,phase:"main",fn:A$,requiresIfExists:["offset"]};function N$(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function M$(e){return e===io(e)||!Fn(e)?sf(e):N$(e)}function O$(e){var t=e.getBoundingClientRect(),n=Fl(t.width)/e.offsetWidth||1,o=Fl(t.height)/e.offsetHeight||1;return n!==1||o!==1}function I$(e,t,n){n===void 0&&(n=!1);var o=Fn(t),s=Fn(t)&&O$(t),l=hs(t),r=Hl(e,s),a={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(o||!o&&!n)&&(($o(t)!=="body"||rf(l))&&(a=M$(t)),Fn(t)?(i=Hl(t,!0),i.x+=t.clientLeft,i.y+=t.clientTop):l&&(i.x=lf(l))),{x:r.left+a.scrollLeft-i.x,y:r.top+a.scrollTop-i.y,width:r.width,height:r.height}}function P$(e){var t=new Map,n=new Set,o=[];e.forEach(function(l){t.set(l.name,l)});function s(l){n.add(l.name);var r=[].concat(l.requires||[],l.requiresIfExists||[]);r.forEach(function(a){if(!n.has(a)){var i=t.get(a);i&&s(i)}}),o.push(l)}return e.forEach(function(l){n.has(l.name)||s(l)}),o}function D$(e){var t=P$(e);return tb.reduce(function(n,o){return n.concat(t.filter(function(s){return s.phase===o}))},[])}function L$(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function R$(e){var t=e.reduce(function(n,o){var s=n[o.name];return n[o.name]=s?Object.assign({},s,o,{options:Object.assign({},s.options,o.options),data:Object.assign({},s.data,o.data)}):o,n},{});return Object.keys(t).map(function(n){return t[n]})}var Zp={placement:"bottom",modifiers:[],strategy:"absolute"};function Jp(){for(var e=arguments.length,t=new Array(e),n=0;ne==null?`${e}`:{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),z$=e=>{do e+=Math.floor(Math.random()*V$);while(document.getElementById(e));return e},fb=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&n!=="#"?n.trim():null}return t},cf=e=>{const t=fb(e);return t&&document.querySelector(t)?t:null},is=e=>{const t=fb(e);return t?document.querySelector(t):null},K$=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const o=Number.parseFloat(t),s=Number.parseFloat(n);return!o&&!s?0:(t=t.split(",")[0],n=n.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(n))*F$)},pb=e=>{e.dispatchEvent(new Event(zc))},Qs=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),us=e=>Qs(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(e):null,So=(e,t,n)=>{Object.keys(n).forEach(o=>{const s=n[o],l=t[o],r=l&&Qs(l)?"element":H$(l);if(!new RegExp(s).test(r))throw new TypeError(`${e.toUpperCase()}: Option "${o}" provided type "${r}" but expected type "${s}".`)})},ga=e=>!Qs(e)||e.getClientRects().length===0?!1:getComputedStyle(e).getPropertyValue("visibility")==="visible",Ws=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",hb=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?hb(e.parentNode):null},Ri=()=>{},sr=e=>{e.offsetHeight},mb=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},Gu=[],W$=e=>{document.readyState==="loading"?(Gu.length||document.addEventListener("DOMContentLoaded",()=>{Gu.forEach(t=>t())}),Gu.push(e)):e()},dn=()=>document.documentElement.dir==="rtl",qn=e=>{W$(()=>{const t=mb();if(t){const n=e.NAME,o=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=o,e.jQueryInterface)}})},Ds=e=>{typeof e=="function"&&e()},vb=(e,t,n=!0)=>{if(!n){Ds(e);return}const o=5,s=K$(t)+o;let l=!1;const r=({target:a})=>{a===t&&(l=!0,t.removeEventListener(zc,r),Ds(e))};t.addEventListener(zc,r),setTimeout(()=>{l||pb(t)},s)},gb=(e,t,n,o)=>{let s=e.indexOf(t);if(s===-1)return e[!n&&o?e.length-1:0];const l=e.length;return s+=n?1:-1,o&&(s=(s+l)%l),e[Math.max(0,Math.min(s,l-1))]},j$=/[^.]*(?=\..*)\.|.*/,Y$=/\..*/,U$=/::\d+$/,Xu={};let Zp=1;const q$={mouseenter:"mouseover",mouseleave:"mouseout"},G$=/^(mouseenter|mouseleave)/i,bb=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function yb(e,t){return t&&`${t}::${Zp++}`||e.uidEvent||Zp++}function wb(e){const t=yb(e);return e.uidEvent=t,Xu[t]=Xu[t]||{},Xu[t]}function X$(e,t){return function n(o){return o.delegateTarget=e,n.oneOff&&Be.off(e,o.type,t),t.apply(e,[o])}}function J$(e,t,n){return function o(s){const l=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=l.length;a--;)if(l[a]===r)return s.delegateTarget=r,o.oneOff&&Be.off(e,s.type,t,n),n.apply(r,[s]);return null}}function Cb(e,t,n=null){const o=Object.keys(e);for(let s=0,l=o.length;sfunction(g){if(!g.relatedTarget||g.relatedTarget!==g.delegateTarget&&!g.delegateTarget.contains(g.relatedTarget))return h.call(this,g)};o?o=p(o):n=p(n)}const[l,r,a]=$b(t,n,o),i=wb(e),u=i[a]||(i[a]={}),c=Cb(u,r,l?n:null);if(c){c.oneOff=c.oneOff&&s;return}const d=yb(r,t.replace(j$,"")),f=l?J$(e,n,o):X$(e,n);f.delegationSelector=l?n:null,f.originalHandler=r,f.oneOff=s,f.uidEvent=d,u[d]=f,e.addEventListener(a,f,l)}function Kc(e,t,n,o,s){const l=Cb(t[n],o,s);!l||(e.removeEventListener(n,l,Boolean(s)),delete t[n][l.uidEvent])}function Z$(e,t,n,o){const s=t[n]||{};Object.keys(s).forEach(l=>{if(l.includes(o)){const r=s[l];Kc(e,t,n,r.originalHandler,r.delegationSelector)}})}function kb(e){return e=e.replace(Y$,""),q$[e]||e}const Be={on(e,t,n,o){Qp(e,t,n,o,!1)},one(e,t,n,o){Qp(e,t,n,o,!0)},off(e,t,n,o){if(typeof t!="string"||!e)return;const[s,l,r]=$b(t,n,o),a=r!==t,i=wb(e),u=t.startsWith(".");if(typeof l!="undefined"){if(!i||!i[r])return;Kc(e,i,r,l,s?n:null);return}u&&Object.keys(i).forEach(d=>{Z$(e,i,d,t.slice(1))});const c=i[r]||{};Object.keys(c).forEach(d=>{const f=d.replace(U$,"");if(!a||t.includes(f)){const p=c[d];Kc(e,i,r,p.originalHandler,p.delegationSelector)}})},trigger(e,t,n){if(typeof t!="string"||!e)return null;const o=mb(),s=kb(t),l=t!==s,r=bb.has(s);let a,i=!0,u=!0,c=!1,d=null;return l&&o&&(a=o.Event(t,n),o(e).trigger(a),i=!a.isPropagationStopped(),u=!a.isImmediatePropagationStopped(),c=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,i,!0)):d=new CustomEvent(t,{bubbles:i,cancelable:!0}),typeof n!="undefined"&&Object.keys(n).forEach(f=>{Object.defineProperty(d,f,{get(){return n[f]}})}),c&&d.preventDefault(),u&&e.dispatchEvent(d),d.defaultPrevented&&typeof a!="undefined"&&a.preventDefault(),d}},Go=new Map,Lr={set(e,t,n){Go.has(e)||Go.set(e,new Map);const o=Go.get(e);if(!o.has(t)&&o.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`);return}o.set(t,n)},get(e,t){return Go.has(e)&&Go.get(e).get(t)||null},remove(e,t){if(!Go.has(e))return;const n=Go.get(e);n.delete(t),n.size===0&&Go.delete(e)}},Q$="5.1.3";class uo{constructor(t){t=us(t),t&&(this._element=t,Lr.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Lr.remove(this._element,this.constructor.DATA_KEY),Be.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,n,o=!0){vb(t,n,o)}static getInstance(t){return Lr.get(us(t),this.DATA_KEY)}static getOrCreateInstance(t,n={}){return this.getInstance(t)||new this(t,typeof n=="object"?n:null)}static get VERSION(){return Q$}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const du=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,o=e.NAME;Be.on(document,n,`[data-bs-dismiss="${o}"]`,function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),Ws(this))return;const l=is(this)||this.closest(`.${o}`);e.getOrCreateInstance(l)[t]()})},x$="alert",ek="bs.alert",Sb=`.${ek}`,tk=`close${Sb}`,nk=`closed${Sb}`,ok="fade",sk="show";class fu extends uo{static get NAME(){return x$}close(){if(Be.trigger(this._element,tk).defaultPrevented)return;this._element.classList.remove(sk);const n=this._element.classList.contains(ok);this._queueCallback(()=>this._destroyElement(),this._element,n)}_destroyElement(){this._element.remove(),Be.trigger(this._element,nk),this.dispose()}static jQueryInterface(t){return this.each(function(){const n=fu.getOrCreateInstance(this);if(typeof t=="string"){if(n[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}du(fu,"close");qn(fu);const lk="button",rk="bs.button",ak=`.${rk}`,ik=".data-api",uk="active",xp='[data-bs-toggle="button"]',ck=`click${ak}${ik}`;class pu extends uo{static get NAME(){return lk}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(uk))}static jQueryInterface(t){return this.each(function(){const n=pu.getOrCreateInstance(this);t==="toggle"&&n[t]()})}}Be.on(document,ck,xp,e=>{e.preventDefault();const t=e.target.closest(xp);pu.getOrCreateInstance(t).toggle()});qn(pu);function eh(e){return e==="true"?!0:e==="false"?!1:e===Number(e).toString()?Number(e):e===""||e==="null"?null:e}function Ju(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const xt={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${Ju(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Ju(t)}`)},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter(n=>n.startsWith("bs")).forEach(n=>{let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=eh(e.dataset[n])}),t},getDataAttribute(e,t){return eh(e.getAttribute(`data-bs-${Ju(t)}`))},offset(e){const t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset,left:t.left+window.pageXOffset}},position(e){return{top:e.offsetTop,left:e.offsetLeft}}},dk=3,ut={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(n=>n.matches(t))},parents(e,t){const n=[];let o=e.parentNode;for(;o&&o.nodeType===Node.ELEMENT_NODE&&o.nodeType!==dk;)o.matches(t)&&n.push(o),o=o.parentNode;return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(n=>`${n}:not([tabindex^="-"])`).join(", ");return this.find(t,e).filter(n=>!Ws(n)&&ga(n))}},th="carousel",fk="bs.carousel",In=`.${fk}`,Eb=".data-api",pk="ArrowLeft",hk="ArrowRight",mk=500,vk=40,nh={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},gk={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},ws="next",Cs="prev",As="left",Tr="right",bk={[pk]:Tr,[hk]:As},yk=`slide${In}`,oh=`slid${In}`,wk=`keydown${In}`,Ck=`mouseenter${In}`,$k=`mouseleave${In}`,kk=`touchstart${In}`,Sk=`touchmove${In}`,Ek=`touchend${In}`,_k=`pointerdown${In}`,Tk=`pointerup${In}`,Ak=`dragstart${In}`,Nk=`load${In}${Eb}`,Mk=`click${In}${Eb}`,Ok="carousel",$s="active",Ik="slide",Dk="carousel-item-end",Pk="carousel-item-start",Lk="carousel-item-next",Rk="carousel-item-prev",Bk="pointer-event",Vk=".active",Ra=".active.carousel-item",Fk=".carousel-item",Hk=".carousel-item img",zk=".carousel-item-next, .carousel-item-prev",Kk=".carousel-indicators",Wk="[data-bs-target]",jk="[data-bs-slide], [data-bs-slide-to]",Yk='[data-bs-ride="carousel"]',Uk="touch",qk="pen";class Io extends uo{constructor(t,n){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(n),this._indicatorsElement=ut.findOne(Kk,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return nh}static get NAME(){return th}next(){this._slide(ws)}nextWhenVisible(){!document.hidden&&ga(this._element)&&this.next()}prev(){this._slide(Cs)}pause(t){t||(this._isPaused=!0),ut.findOne(zk,this._element)&&(pb(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=ut.findOne(Ra,this._element);const n=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding){Be.one(this._element,oh,()=>this.to(t));return}if(n===t){this.pause(),this.cycle();return}const o=t>n?ws:Cs;this._slide(o,this._items[t])}_getConfig(t){return t=ne(ne(ne({},nh),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(th,t,gk),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=vk)return;const n=t/this.touchDeltaX;this.touchDeltaX=0,n&&this._slide(n>0?Tr:As)}_addEventListeners(){this._config.keyboard&&Be.on(this._element,wk,t=>this._keydown(t)),this._config.pause==="hover"&&(Be.on(this._element,Ck,t=>this.pause(t)),Be.on(this._element,$k,t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=l=>this._pointerEvent&&(l.pointerType===qk||l.pointerType===Uk),n=l=>{t(l)?this.touchStartX=l.clientX:this._pointerEvent||(this.touchStartX=l.touches[0].clientX)},o=l=>{this.touchDeltaX=l.touches&&l.touches.length>1?0:l.touches[0].clientX-this.touchStartX},s=l=>{t(l)&&(this.touchDeltaX=l.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(r=>this.cycle(r),mk+this._config.interval))};ut.find(Hk,this._element).forEach(l=>{Be.on(l,Ak,r=>r.preventDefault())}),this._pointerEvent?(Be.on(this._element,_k,l=>n(l)),Be.on(this._element,Tk,l=>s(l)),this._element.classList.add(Bk)):(Be.on(this._element,kk,l=>n(l)),Be.on(this._element,Sk,l=>o(l)),Be.on(this._element,Ek,l=>s(l)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const n=bk[t.key];n&&(t.preventDefault(),this._slide(n))}_getItemIndex(t){return this._items=t&&t.parentNode?ut.find(Fk,t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,n){const o=t===ws;return gb(this._items,n,o,this._config.wrap)}_triggerSlideEvent(t,n){const o=this._getItemIndex(t),s=this._getItemIndex(ut.findOne(Ra,this._element));return Be.trigger(this._element,yk,{relatedTarget:t,direction:n,from:s,to:o})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const n=ut.findOne(Vk,this._indicatorsElement);n.classList.remove($s),n.removeAttribute("aria-current");const o=ut.find(Wk,this._indicatorsElement);for(let s=0;s{Be.trigger(this._element,oh,{relatedTarget:r,direction:f,from:l,to:a})};if(this._element.classList.contains(Ik)){r.classList.add(d),sr(r),s.classList.add(c),r.classList.add(c);const g=()=>{r.classList.remove(c,d),r.classList.add($s),s.classList.remove($s,d,c),this._isSliding=!1,setTimeout(h,0)};this._queueCallback(g,s,!0)}else s.classList.remove($s),r.classList.add($s),this._isSliding=!1,h();i&&this.cycle()}_directionToOrder(t){return[Tr,As].includes(t)?dn()?t===As?Cs:ws:t===As?ws:Cs:t}_orderToDirection(t){return[ws,Cs].includes(t)?dn()?t===Cs?As:Tr:t===Cs?Tr:As:t}static carouselInterface(t,n){const o=Io.getOrCreateInstance(t,n);let{_config:s}=o;typeof n=="object"&&(s=ne(ne({},s),n));const l=typeof n=="string"?n:s.slide;if(typeof n=="number")o.to(n);else if(typeof l=="string"){if(typeof o[l]=="undefined")throw new TypeError(`No method named "${l}"`);o[l]()}else s.interval&&s.ride&&(o.pause(),o.cycle())}static jQueryInterface(t){return this.each(function(){Io.carouselInterface(this,t)})}static dataApiClickHandler(t){const n=is(this);if(!n||!n.classList.contains(Ok))return;const o=ne(ne({},xt.getDataAttributes(n)),xt.getDataAttributes(this)),s=this.getAttribute("data-bs-slide-to");s&&(o.interval=!1),Io.carouselInterface(n,o),s&&Io.getInstance(n).to(s),t.preventDefault()}}Be.on(document,Mk,jk,Io.dataApiClickHandler);Be.on(window,Nk,()=>{const e=ut.find(Yk);for(let t=0,n=e.length;tu===this._element);a!==null&&i.length&&(this._selector=a,this._triggerArray.push(r))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return lh}static get NAME(){return sh}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[],n;if(this._config.parent){const u=ut.find(ah,this._config.parent);t=ut.find(s2,this._config.parent).filter(c=>!u.includes(c))}const o=ut.findOne(this._selector);if(t.length){const u=t.find(c=>o!==c);if(n=u?Ml.getInstance(u):null,n&&n._isTransitioning)return}if(Be.trigger(this._element,Jk).defaultPrevented)return;t.forEach(u=>{o!==u&&Ml.getOrCreateInstance(u,{toggle:!1}).hide(),n||Lr.set(u,_b,null)});const l=this._getDimension();this._element.classList.remove(Tl),this._element.classList.add(Ba),this._element.style[l]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const r=()=>{this._isTransitioning=!1,this._element.classList.remove(Ba),this._element.classList.add(Tl,Zu),this._element.style[l]="",Be.trigger(this._element,Zk)},i=`scroll${l[0].toUpperCase()+l.slice(1)}`;this._queueCallback(r,this._element,!0),this._element.style[l]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||Be.trigger(this._element,Qk).defaultPrevented)return;const n=this._getDimension();this._element.style[n]=`${this._element.getBoundingClientRect()[n]}px`,sr(this._element),this._element.classList.add(Ba),this._element.classList.remove(Tl,Zu);const o=this._triggerArray.length;for(let l=0;l{this._isTransitioning=!1,this._element.classList.remove(Ba),this._element.classList.add(Tl),Be.trigger(this._element,xk)};this._element.style[n]="",this._queueCallback(s,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Zu)}_getConfig(t){return t=ne(ne(ne({},lh),xt.getDataAttributes(this._element)),t),t.toggle=Boolean(t.toggle),t.parent=us(t.parent),So(sh,t,Xk),t}_getDimension(){return this._element.classList.contains(t2)?n2:o2}_initializeChildren(){if(!this._config.parent)return;const t=ut.find(ah,this._config.parent);ut.find(Wc,this._config.parent).filter(n=>!t.includes(n)).forEach(n=>{const o=is(n);o&&this._addAriaAndCollapsedClass([n],this._isShown(o))})}_addAriaAndCollapsedClass(t,n){!t.length||t.forEach(o=>{n?o.classList.remove(rh):o.classList.add(rh),o.setAttribute("aria-expanded",n)})}static jQueryInterface(t){return this.each(function(){const n={};typeof t=="string"&&/show|hide/.test(t)&&(n.toggle=!1);const o=Ml.getOrCreateInstance(this,n);if(typeof t=="string"){if(typeof o[t]=="undefined")throw new TypeError(`No method named "${t}"`);o[t]()}})}}Be.on(document,e2,Wc,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();const t=cf(this);ut.find(t).forEach(o=>{Ml.getOrCreateInstance(o,{toggle:!1}).toggle()})});qn(Ml);const Qu="dropdown",l2="bs.dropdown",rl=`.${l2}`,df=".data-api",ni="Escape",ih="Space",uh="Tab",jc="ArrowUp",oi="ArrowDown",r2=2,a2=new RegExp(`${jc}|${oi}|${ni}`),i2=`hide${rl}`,u2=`hidden${rl}`,c2=`show${rl}`,d2=`shown${rl}`,Tb=`click${rl}${df}`,Ab=`keydown${rl}${df}`,f2=`keyup${rl}${df}`,vl="show",p2="dropup",h2="dropend",m2="dropstart",v2="navbar",Rr='[data-bs-toggle="dropdown"]',Yc=".dropdown-menu",g2=".navbar-nav",b2=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",y2=dn()?"top-end":"top-start",w2=dn()?"top-start":"top-end",C2=dn()?"bottom-end":"bottom-start",$2=dn()?"bottom-start":"bottom-end",k2=dn()?"left-start":"right-start",S2=dn()?"right-start":"left-start",E2={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},_2={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Vn extends uo{constructor(t,n){super(t),this._popper=null,this._config=this._getConfig(n),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return E2}static get DefaultType(){return _2}static get NAME(){return Qu}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Ws(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(Be.trigger(this._element,c2,t).defaultPrevented)return;const o=Vn.getParentFromElement(this._element);this._inNavbar?xt.setDataAttribute(this._menu,"popper","none"):this._createPopper(o),"ontouchstart"in document.documentElement&&!o.closest(g2)&&[].concat(...document.body.children).forEach(s=>Be.on(s,"mouseover",Ri)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(vl),this._element.classList.add(vl),Be.trigger(this._element,d2,t)}hide(){if(Ws(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){Be.trigger(this._element,i2,t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(o=>Be.off(o,"mouseover",Ri)),this._popper&&this._popper.destroy(),this._menu.classList.remove(vl),this._element.classList.remove(vl),this._element.setAttribute("aria-expanded","false"),xt.removeDataAttribute(this._menu,"popper"),Be.trigger(this._element,u2,t))}_getConfig(t){if(t=ne(ne(ne({},this.constructor.Default),xt.getDataAttributes(this._element)),t),So(Qu,t,this.constructor.DefaultType),typeof t.reference=="object"&&!Qs(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Qu.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(typeof db=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let n=this._element;this._config.reference==="parent"?n=t:Qs(this._config.reference)?n=us(this._config.reference):typeof this._config.reference=="object"&&(n=this._config.reference);const o=this._getPopperConfig(),s=o.modifiers.find(l=>l.name==="applyStyles"&&l.enabled===!1);this._popper=va(n,this._menu,o),s&&xt.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(vl)}_getMenuElement(){return ut.next(this._element,Yc)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains(h2))return k2;if(t.classList.contains(m2))return S2;const n=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(p2)?n?w2:y2:n?$2:C2}_detectNavbar(){return this._element.closest(`.${v2}`)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(n=>Number.parseInt(n,10)):typeof t=="function"?n=>t(n,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),ne(ne({},t),typeof this._config.popperConfig=="function"?this._config.popperConfig(t):this._config.popperConfig)}_selectMenuItem({key:t,target:n}){const o=ut.find(b2,this._menu).filter(ga);!o.length||gb(o,n,t===oi,!o.includes(n)).focus()}static jQueryInterface(t){return this.each(function(){const n=Vn.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}static clearMenus(t){if(t&&(t.button===r2||t.type==="keyup"&&t.key!==uh))return;const n=ut.find(Rr);for(let o=0,s=n.length;on+t),this._setElementAttributes(ch,"paddingRight",n=>n+t),this._setElementAttributes(dh,"marginRight",n=>n-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,n,o){const s=this.getWidth(),l=r=>{if(r!==this._element&&window.innerWidth>r.clientWidth+s)return;this._saveInitialAttribute(r,n);const a=window.getComputedStyle(r)[n];r.style[n]=`${o(Number.parseFloat(a))}px`};this._applyManipulationCallback(t,l)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(ch,"paddingRight"),this._resetElementAttributes(dh,"marginRight")}_saveInitialAttribute(t,n){const o=t.style[n];o&&xt.setDataAttribute(t,n,o)}_resetElementAttributes(t,n){const o=s=>{const l=xt.getDataAttribute(s,n);typeof l=="undefined"?s.style.removeProperty(n):(xt.removeDataAttribute(s,n),s.style[n]=l)};this._applyManipulationCallback(t,o)}_applyManipulationCallback(t,n){Qs(t)?n(t):ut.find(t,this._element).forEach(n)}isOverflowing(){return this.getWidth()>0}}const T2={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},A2={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Nb="backdrop",N2="fade",fh="show",ph=`mousedown.bs.${Nb}`;class Mb{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){if(!this._config.isVisible){Ds(t);return}this._append(),this._config.isAnimated&&sr(this._getElement()),this._getElement().classList.add(fh),this._emulateAnimation(()=>{Ds(t)})}hide(t){if(!this._config.isVisible){Ds(t);return}this._getElement().classList.remove(fh),this._emulateAnimation(()=>{this.dispose(),Ds(t)})}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(N2),this._element=t}return this._element}_getConfig(t){return t=ne(ne({},T2),typeof t=="object"?t:{}),t.rootElement=us(t.rootElement),So(Nb,t,A2),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),Be.on(this._getElement(),ph,()=>{Ds(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||(Be.off(this._element,ph),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){vb(t,this._getElement(),this._config.isAnimated)}}const M2={trapElement:null,autofocus:!0},O2={trapElement:"element",autofocus:"boolean"},I2="focustrap",D2="bs.focustrap",Bi=`.${D2}`,P2=`focusin${Bi}`,L2=`keydown.tab${Bi}`,R2="Tab",B2="forward",hh="backward";class Ob{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:n}=this._config;this._isActive||(n&&t.focus(),Be.off(document,Bi),Be.on(document,P2,o=>this._handleFocusin(o)),Be.on(document,L2,o=>this._handleKeydown(o)),this._isActive=!0)}deactivate(){!this._isActive||(this._isActive=!1,Be.off(document,Bi))}_handleFocusin(t){const{target:n}=t,{trapElement:o}=this._config;if(n===document||n===o||o.contains(n))return;const s=ut.focusableChildren(o);s.length===0?o.focus():this._lastTabNavDirection===hh?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){t.key===R2&&(this._lastTabNavDirection=t.shiftKey?hh:B2)}_getConfig(t){return t=ne(ne({},M2),typeof t=="object"?t:{}),So(I2,t,O2),t}}const mh="modal",V2="bs.modal",Gn=`.${V2}`,F2=".data-api",vh="Escape",gh={backdrop:!0,keyboard:!0,focus:!0},H2={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},z2=`hide${Gn}`,K2=`hidePrevented${Gn}`,Ib=`hidden${Gn}`,Db=`show${Gn}`,W2=`shown${Gn}`,bh=`resize${Gn}`,yh=`click.dismiss${Gn}`,wh=`keydown.dismiss${Gn}`,j2=`mouseup.dismiss${Gn}`,Ch=`mousedown.dismiss${Gn}`,Y2=`click${Gn}${F2}`,$h="modal-open",U2="fade",kh="show",xu="modal-static",q2=".modal.show",G2=".modal-dialog",X2=".modal-body",J2='[data-bs-toggle="modal"]';class jl extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._dialog=ut.findOne(G2,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Uc}static get Default(){return gh}static get NAME(){return mh}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Be.trigger(this._element,Db,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add($h),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),Be.on(this._dialog,Ch,()=>{Be.one(this._element,j2,o=>{o.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning||Be.trigger(this._element,z2).defaultPrevented)return;this._isShown=!1;const n=this._isAnimated();n&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(kh),Be.off(this._element,yh),Be.off(this._dialog,Ch),this._queueCallback(()=>this._hideModal(),this._element,n)}dispose(){[window,this._dialog].forEach(t=>Be.off(t,Gn)),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Mb({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ob({trapElement:this._element})}_getConfig(t){return t=ne(ne(ne({},gh),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(mh,t,H2),t}_showElement(t){const n=this._isAnimated(),o=ut.findOne(X2,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,o&&(o.scrollTop=0),n&&sr(this._element),this._element.classList.add(kh);const s=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Be.trigger(this._element,W2,{relatedTarget:t})};this._queueCallback(s,this._dialog,n)}_setEscapeEvent(){this._isShown?Be.on(this._element,wh,t=>{this._config.keyboard&&t.key===vh?(t.preventDefault(),this.hide()):!this._config.keyboard&&t.key===vh&&this._triggerBackdropTransition()}):Be.off(this._element,wh)}_setResizeEvent(){this._isShown?Be.on(window,bh,()=>this._adjustDialog()):Be.off(window,bh)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove($h),this._resetAdjustments(),this._scrollBar.reset(),Be.trigger(this._element,Ib)})}_showBackdrop(t){Be.on(this._element,yh,n=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains(U2)}_triggerBackdropTransition(){if(Be.trigger(this._element,K2).defaultPrevented)return;const{classList:n,scrollHeight:o,style:s}=this._element,l=o>document.documentElement.clientHeight;!l&&s.overflowY==="hidden"||n.contains(xu)||(l||(s.overflowY="hidden"),n.add(xu),this._queueCallback(()=>{n.remove(xu),l||this._queueCallback(()=>{s.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),o=n>0;(!o&&t&&!dn()||o&&!t&&dn())&&(this._element.style.paddingLeft=`${n}px`),(o&&!t&&!dn()||!o&&t&&dn())&&(this._element.style.paddingRight=`${n}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,n){return this.each(function(){const o=jl.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof o[t]=="undefined")throw new TypeError(`No method named "${t}"`);o[t](n)}})}}Be.on(document,Y2,J2,function(e){const t=is(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Be.one(t,Db,s=>{s.defaultPrevented||Be.one(t,Ib,()=>{ga(this)&&this.focus()})});const n=ut.findOne(q2);n&&jl.getInstance(n).hide(),jl.getOrCreateInstance(t).toggle(this)});du(jl);qn(jl);const Sh="offcanvas",Z2="bs.offcanvas",al=`.${Z2}`,Pb=".data-api",Q2=`load${al}${Pb}`,x2="Escape",Eh={backdrop:!0,keyboard:!0,scroll:!1},eS={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},_h="show",tS="offcanvas-backdrop",Lb=".offcanvas.show",nS=`show${al}`,oS=`shown${al}`,sS=`hide${al}`,Rb=`hidden${al}`,lS=`click${al}${Pb}`,rS=`keydown.dismiss${al}`,aS='[data-bs-toggle="offcanvas"]';class xs extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Sh}static get Default(){return Eh}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Be.trigger(this._element,nS,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||new Uc().hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(_h);const o=()=>{this._config.scroll||this._focustrap.activate(),Be.trigger(this._element,oS,{relatedTarget:t})};this._queueCallback(o,this._element,!0)}hide(){if(!this._isShown||Be.trigger(this._element,sS).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove(_h),this._backdrop.hide();const n=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new Uc().reset(),Be.trigger(this._element,Rb)};this._queueCallback(n,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t=ne(ne(ne({},Eh),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(Sh,t,eS),t}_initializeBackDrop(){return new Mb({className:tS,isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ob({trapElement:this._element})}_addEventListeners(){Be.on(this._element,rS,t=>{this._config.keyboard&&t.key===x2&&this.hide()})}static jQueryInterface(t){return this.each(function(){const n=xs.getOrCreateInstance(this,t);if(typeof t=="string"){if(n[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}Be.on(document,lS,aS,function(e){const t=is(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ws(this))return;Be.one(t,Rb,()=>{ga(this)&&this.focus()});const n=ut.findOne(Lb);n&&n!==t&&xs.getInstance(n).hide(),xs.getOrCreateInstance(t).toggle(this)});Be.on(window,Q2,()=>ut.find(Lb).forEach(e=>xs.getOrCreateInstance(e).show()));du(xs);qn(xs);const iS=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),uS=/^aria-[\w-]*$/i,cS=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,dS=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,fS=(e,t)=>{const n=e.nodeName.toLowerCase();if(t.includes(n))return iS.has(n)?Boolean(cS.test(e.nodeValue)||dS.test(e.nodeValue)):!0;const o=t.filter(s=>s instanceof RegExp);for(let s=0,l=o.length;s{fS(f,d)||i.removeAttribute(f.nodeName)})}return s.body.innerHTML}const Ah="tooltip",hS="bs.tooltip",ho=`.${hS}`,mS="bs-tooltip",vS=new Set(["sanitize","allowList","sanitizeFn"]),gS={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},bS={AUTO:"auto",TOP:"top",RIGHT:dn()?"left":"right",BOTTOM:"bottom",LEFT:dn()?"right":"left"},yS={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:pS,popperConfig:null},wS={HIDE:`hide${ho}`,HIDDEN:`hidden${ho}`,SHOW:`show${ho}`,SHOWN:`shown${ho}`,INSERTED:`inserted${ho}`,CLICK:`click${ho}`,FOCUSIN:`focusin${ho}`,FOCUSOUT:`focusout${ho}`,MOUSEENTER:`mouseenter${ho}`,MOUSELEAVE:`mouseleave${ho}`},Va="fade",CS="modal",vr="show",gr="show",ec="out",Nh=".tooltip-inner",Mh=`.${CS}`,Oh="hide.bs.modal",br="hover",tc="focus",$S="click",kS="manual";class lr extends uo{constructor(t,n){if(typeof db=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(n),this.tip=null,this._setListeners()}static get Default(){return yS}static get NAME(){return Ah}static get Event(){return wS}static get DefaultType(){return gS}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(!!this._isEnabled)if(t){const n=this._initializeOnDelegatedTarget(t);n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(vr)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),Be.off(this._element.closest(Mh),Oh,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;const t=Be.trigger(this._element,this.constructor.Event.SHOW),n=hb(this._element),o=n===null?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(t.defaultPrevented||!o)return;this.constructor.NAME==="tooltip"&&this.tip&&this.getTitle()!==this.tip.querySelector(Nh).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const s=this.getTipElement(),l=z$(this.constructor.NAME);s.setAttribute("id",l),this._element.setAttribute("aria-describedby",l),this._config.animation&&s.classList.add(Va);const r=typeof this._config.placement=="function"?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:i}=this._config;Lr.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),Be.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=va(this._element,s,this._getPopperConfig(a)),s.classList.add(vr);const u=this._resolvePossibleFunction(this._config.customClass);u&&s.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(f=>{Be.on(f,"mouseover",Ri)});const c=()=>{const f=this._hoverState;this._hoverState=null,Be.trigger(this._element,this.constructor.Event.SHOWN),f===ec&&this._leave(null,this)},d=this.tip.classList.contains(Va);this._queueCallback(c,this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement(),n=()=>{this._isWithActiveTrigger()||(this._hoverState!==gr&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),Be.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())};if(Be.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(vr),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(l=>Be.off(l,"mouseover",Ri)),this._activeTrigger[$S]=!1,this._activeTrigger[tc]=!1,this._activeTrigger[br]=!1;const s=this.tip.classList.contains(Va);this._queueCallback(n,this.tip,s),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const n=t.children[0];return this.setContent(n),n.classList.remove(Va,vr),this.tip=n,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),Nh)}_sanitizeAndSetContent(t,n,o){const s=ut.findOne(o,t);if(!n&&s){s.remove();return}this.setElementContent(s,n)}setElementContent(t,n){if(t!==null){if(Qs(n)){n=us(n),this._config.html?n.parentNode!==t&&(t.innerHTML="",t.append(n)):t.textContent=n.textContent;return}this._config.html?(this._config.sanitize&&(n=Th(n,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=n):t.textContent=n}}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return t==="right"?"end":t==="left"?"start":t}_initializeOnDelegatedTarget(t,n){return n||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(n=>Number.parseInt(n,10)):typeof t=="function"?n=>t(n,this._element):t}_resolvePossibleFunction(t){return typeof t=="function"?t.call(this._element):t}_getPopperConfig(t){const n={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:o=>this._handlePopperPlacementChange(o)}],onFirstUpdate:o=>{o.options.placement!==o.placement&&this._handlePopperPlacementChange(o)}};return ne(ne({},n),typeof this._config.popperConfig=="function"?this._config.popperConfig(n):this._config.popperConfig)}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return bS[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(n=>{if(n==="click")Be.on(this._element,this.constructor.Event.CLICK,this._config.selector,o=>this.toggle(o));else if(n!==kS){const o=n===br?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s=n===br?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;Be.on(this._element,o,this._config.selector,l=>this._enter(l)),Be.on(this._element,s,this._config.selector,l=>this._leave(l))}}),this._hideModalHandler=()=>{this._element&&this.hide()},Be.on(this._element.closest(Mh),Oh,this._hideModalHandler),this._config.selector?this._config=Te(ne({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),n=typeof this._element.getAttribute("data-bs-original-title");(t||n!=="string")&&(this._element.setAttribute("data-bs-original-title",t||""),t&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,n){if(n=this._initializeOnDelegatedTarget(t,n),t&&(n._activeTrigger[t.type==="focusin"?tc:br]=!0),n.getTipElement().classList.contains(vr)||n._hoverState===gr){n._hoverState=gr;return}if(clearTimeout(n._timeout),n._hoverState=gr,!n._config.delay||!n._config.delay.show){n.show();return}n._timeout=setTimeout(()=>{n._hoverState===gr&&n.show()},n._config.delay.show)}_leave(t,n){if(n=this._initializeOnDelegatedTarget(t,n),t&&(n._activeTrigger[t.type==="focusout"?tc:br]=n._element.contains(t.relatedTarget)),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=ec,!n._config.delay||!n._config.delay.hide){n.hide();return}n._timeout=setTimeout(()=>{n._hoverState===ec&&n.hide()},n._config.delay.hide)}}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const n=xt.getDataAttributes(this._element);return Object.keys(n).forEach(o=>{vS.has(o)&&delete n[o]}),t=ne(ne(ne({},this.constructor.Default),n),typeof t=="object"&&t?t:{}),t.container=t.container===!1?document.body:us(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),So(Ah,t,this.constructor.DefaultType),t.sanitize&&(t.template=Th(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const n in this._config)this.constructor.Default[n]!==this._config[n]&&(t[n]=this._config[n]);return t}_cleanTipClass(){const t=this.getTipElement(),n=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),o=t.getAttribute("class").match(n);o!==null&&o.length>0&&o.map(s=>s.trim()).forEach(s=>t.classList.remove(s))}_getBasicClassPrefix(){return mS}_handlePopperPlacementChange(t){const{state:n}=t;!n||(this.tip=n.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(n.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each(function(){const n=lr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}qn(lr);const SS="popover",ES="bs.popover",mo=`.${ES}`,_S="bs-popover",TS=Te(ne({},lr.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),AS=Te(ne({},lr.DefaultType),{content:"(string|element|function)"}),NS={HIDE:`hide${mo}`,HIDDEN:`hidden${mo}`,SHOW:`show${mo}`,SHOWN:`shown${mo}`,INSERTED:`inserted${mo}`,CLICK:`click${mo}`,FOCUSIN:`focusin${mo}`,FOCUSOUT:`focusout${mo}`,MOUSEENTER:`mouseenter${mo}`,MOUSELEAVE:`mouseleave${mo}`},MS=".popover-header",OS=".popover-body";class ff extends lr{static get Default(){return TS}static get NAME(){return SS}static get Event(){return NS}static get DefaultType(){return AS}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),MS),this._sanitizeAndSetContent(t,this._getContent(),OS)}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return _S}static jQueryInterface(t){return this.each(function(){const n=ff.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}qn(ff);const Ih="scrollspy",IS="bs.scrollspy",hu=`.${IS}`,DS=".data-api",Dh={offset:10,method:"auto",target:""},PS={offset:"number",method:"string",target:"(string|element)"},LS=`activate${hu}`,RS=`scroll${hu}`,BS=`load${hu}${DS}`,Bb="dropdown-item",gl="active",VS='[data-bs-spy="scroll"]',FS=".nav, .list-group",qc=".nav-link",HS=".nav-item",Vb=".list-group-item",nc=`${qc}, ${Vb}, .${Bb}`,zS=".dropdown",KS=".dropdown-toggle",WS="offset",Ph="position";class mu extends uo{constructor(t,n){super(t),this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(n),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Be.on(this._scrollElement,RS,()=>this._process()),this.refresh(),this._process()}static get Default(){return Dh}static get NAME(){return Ih}refresh(){const t=this._scrollElement===this._scrollElement.window?WS:Ph,n=this._config.method==="auto"?t:this._config.method,o=n===Ph?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),ut.find(nc,this._config.target).map(l=>{const r=cf(l),a=r?ut.findOne(r):null;if(a){const i=a.getBoundingClientRect();if(i.width||i.height)return[xt[n](a).top+o,r]}return null}).filter(l=>l).sort((l,r)=>l[0]-r[0]).forEach(l=>{this._offsets.push(l[0]),this._targets.push(l[1])})}dispose(){Be.off(this._scrollElement,hu),super.dispose()}_getConfig(t){return t=ne(ne(ne({},Dh),xt.getDataAttributes(this._element)),typeof t=="object"&&t?t:{}),t.target=us(t.target)||document.documentElement,So(Ih,t,PS),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,n=this._getScrollHeight(),o=this._config.offset+n-this._getOffsetHeight();if(this._scrollHeight!==n&&this.refresh(),t>=o){const s=this._targets[this._targets.length-1];this._activeTarget!==s&&this._activate(s);return}if(this._activeTarget&&t0){this._activeTarget=null,this._clear();return}for(let s=this._offsets.length;s--;)this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&(typeof this._offsets[s+1]=="undefined"||t`${s}[data-bs-target="${t}"],${s}[href="${t}"]`),o=ut.findOne(n.join(","),this._config.target);o.classList.add(gl),o.classList.contains(Bb)?ut.findOne(KS,o.closest(zS)).classList.add(gl):ut.parents(o,FS).forEach(s=>{ut.prev(s,`${qc}, ${Vb}`).forEach(l=>l.classList.add(gl)),ut.prev(s,HS).forEach(l=>{ut.children(l,qc).forEach(r=>r.classList.add(gl))})}),Be.trigger(this._scrollElement,LS,{relatedTarget:t})}_clear(){ut.find(nc,this._config.target).filter(t=>t.classList.contains(gl)).forEach(t=>t.classList.remove(gl))}static jQueryInterface(t){return this.each(function(){const n=mu.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Be.on(window,BS,()=>{ut.find(VS).forEach(e=>new mu(e))});qn(mu);const jS="tab",YS="bs.tab",ya=`.${YS}`,US=".data-api",qS=`hide${ya}`,GS=`hidden${ya}`,XS=`show${ya}`,JS=`shown${ya}`,ZS=`click${ya}${US}`,QS="dropdown-menu",yr="active",Lh="fade",Rh="show",xS=".dropdown",eE=".nav, .list-group",Bh=".active",Vh=":scope > li > .active",tE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',nE=".dropdown-toggle",oE=":scope > .dropdown-menu .active";class vu extends uo{static get NAME(){return jS}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(yr))return;let t;const n=is(this._element),o=this._element.closest(eE);if(o){const a=o.nodeName==="UL"||o.nodeName==="OL"?Vh:Bh;t=ut.find(a,o),t=t[t.length-1]}const s=t?Be.trigger(t,qS,{relatedTarget:this._element}):null;if(Be.trigger(this._element,XS,{relatedTarget:t}).defaultPrevented||s!==null&&s.defaultPrevented)return;this._activate(this._element,o);const r=()=>{Be.trigger(t,GS,{relatedTarget:this._element}),Be.trigger(this._element,JS,{relatedTarget:t})};n?this._activate(n,n.parentNode,r):r()}_activate(t,n,o){const l=(n&&(n.nodeName==="UL"||n.nodeName==="OL")?ut.find(Vh,n):ut.children(n,Bh))[0],r=o&&l&&l.classList.contains(Lh),a=()=>this._transitionComplete(t,l,o);l&&r?(l.classList.remove(Rh),this._queueCallback(a,t,!0)):a()}_transitionComplete(t,n,o){if(n){n.classList.remove(yr);const l=ut.findOne(oE,n.parentNode);l&&l.classList.remove(yr),n.getAttribute("role")==="tab"&&n.setAttribute("aria-selected",!1)}t.classList.add(yr),t.getAttribute("role")==="tab"&&t.setAttribute("aria-selected",!0),sr(t),t.classList.contains(Lh)&&t.classList.add(Rh);let s=t.parentNode;if(s&&s.nodeName==="LI"&&(s=s.parentNode),s&&s.classList.contains(QS)){const l=t.closest(xS);l&&ut.find(nE,l).forEach(r=>r.classList.add(yr)),t.setAttribute("aria-expanded",!0)}o&&o()}static jQueryInterface(t){return this.each(function(){const n=vu.getOrCreateInstance(this);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Be.on(document,ZS,tE,function(e){if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ws(this))return;vu.getOrCreateInstance(this).show()});qn(vu);const Fh="toast",sE="bs.toast",ms=`.${sE}`,lE=`mouseover${ms}`,rE=`mouseout${ms}`,aE=`focusin${ms}`,iE=`focusout${ms}`,uE=`hide${ms}`,cE=`hidden${ms}`,dE=`show${ms}`,fE=`shown${ms}`,pE="fade",Hh="hide",wr="show",Fa="showing",hE={animation:"boolean",autohide:"boolean",delay:"number"},zh={animation:!0,autohide:!0,delay:5e3};class gu extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return hE}static get Default(){return zh}static get NAME(){return Fh}show(){if(Be.trigger(this._element,dE).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(pE);const n=()=>{this._element.classList.remove(Fa),Be.trigger(this._element,fE),this._maybeScheduleHide()};this._element.classList.remove(Hh),sr(this._element),this._element.classList.add(wr),this._element.classList.add(Fa),this._queueCallback(n,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(wr)||Be.trigger(this._element,uE).defaultPrevented)return;const n=()=>{this._element.classList.add(Hh),this._element.classList.remove(Fa),this._element.classList.remove(wr),Be.trigger(this._element,cE)};this._element.classList.add(Fa),this._queueCallback(n,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(wr)&&this._element.classList.remove(wr),super.dispose()}_getConfig(t){return t=ne(ne(ne({},zh),xt.getDataAttributes(this._element)),typeof t=="object"&&t?t:{}),So(Fh,t,this.constructor.DefaultType),t}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(t,n){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=n;break;case"focusin":case"focusout":this._hasKeyboardInteraction=n;break}if(n){this._clearTimeout();return}const o=t.relatedTarget;this._element===o||this._element.contains(o)||this._maybeScheduleHide()}_setListeners(){Be.on(this._element,lE,t=>this._onInteraction(t,!0)),Be.on(this._element,rE,t=>this._onInteraction(t,!1)),Be.on(this._element,aE,t=>this._onInteraction(t,!0)),Be.on(this._element,iE,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const n=gu.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}du(gu);qn(gu);function pf(e,t){const n=Object.create(null),o=e.split(",");for(let s=0;s!!n[s.toLowerCase()]:s=>!!n[s]}const mE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",vE=pf(mE);function Fb(e){return!!e||e===""}function De(e){if(Xe(e)){const t={};for(let n=0;n{if(n){const o=n.split(bE);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function _(e){let t="";if(Qe(e))t=e;else if(Xe(e))for(let n=0;nYl(n,t))}const he=e=>Qe(e)?e:e==null?"":Xe(e)||dt(e)&&(e.toString===Kb||!et(e.toString))?JSON.stringify(e,zb,2):String(e),zb=(e,t)=>t&&t.__v_isRef?zb(e,t.value):Il(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,s])=>(n[`${o} =>`]=s,n),{})}:yu(t)?{[`Set(${t.size})`]:[...t.values()]}:dt(t)&&!Xe(t)&&!Wb(t)?String(t):t,Mt={},Ol=[],wt=()=>{},CE=()=>!1,$E=/^on[^a-z]/,bu=e=>$E.test(e),hf=e=>e.startsWith("onUpdate:"),Jt=Object.assign,mf=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},kE=Object.prototype.hasOwnProperty,at=(e,t)=>kE.call(e,t),Xe=Array.isArray,Il=e=>wa(e)==="[object Map]",yu=e=>wa(e)==="[object Set]",Kh=e=>e instanceof Date,et=e=>typeof e=="function",Qe=e=>typeof e=="string",vf=e=>typeof e=="symbol",dt=e=>e!==null&&typeof e=="object",el=e=>dt(e)&&et(e.then)&&et(e.catch),Kb=Object.prototype.toString,wa=e=>Kb.call(e),si=e=>wa(e).slice(8,-1),Wb=e=>wa(e)==="[object Object]",gf=e=>Qe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,li=pf(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),wu=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},SE=/-(\w)/g,Wn=wu(e=>e.replace(SE,(t,n)=>n?n.toUpperCase():"")),EE=/\B([A-Z])/g,vs=wu(e=>e.replace(EE,"-$1").toLowerCase()),yn=wu(e=>e.charAt(0).toUpperCase()+e.slice(1)),ri=wu(e=>e?`on${yn(e)}`:""),Gr=(e,t)=>!Object.is(e,t),ai=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Fi=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Wh;const _E=()=>Wh||(Wh=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Rn;class jb{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Rn&&(this.parent=Rn,this.index=(Rn.scopes||(Rn.scopes=[])).push(this)-1)}run(t){if(this.active)try{return Rn=this,t()}finally{Rn=this.parent}}on(){Rn=this}off(){Rn=this.parent}stop(t){if(this.active){let n,o;for(n=0,o=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Ub=e=>(e.w&cs)>0,qb=e=>(e.n&cs)>0,ME=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o{(u==="length"||u>=o)&&a.push(i)});else switch(n!==void 0&&a.push(r.get(n)),t){case"add":Xe(e)?gf(n)&&a.push(r.get("length")):(a.push(r.get(js)),Il(e)&&a.push(r.get(Jc)));break;case"delete":Xe(e)||(a.push(r.get(js)),Il(e)&&a.push(r.get(Jc)));break;case"set":Il(e)&&a.push(r.get(js));break}if(a.length===1)a[0]&&Zc(a[0]);else{const i=[];for(const u of a)u&&i.push(...u);Zc(bf(i))}}function Zc(e,t){for(const n of Xe(e)?e:[...e])(n!==yo||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const IE=pf("__proto__,__v_isRef,__isVue"),Jb=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(vf)),DE=wf(),PE=wf(!1,!0),LE=wf(!0),Yh=RE();function RE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=$t(this);for(let l=0,r=this.length;l{e[t]=function(...n){il();const o=$t(this)[t].apply(this,n);return ul(),o}}),e}function wf(e=!1,t=!1){return function(o,s,l){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&l===(e?t?QE:ty:t?ey:xb).get(o))return o;const r=Xe(o);if(!e&&r&&at(Yh,s))return Reflect.get(Yh,s,l);const a=Reflect.get(o,s,l);return(vf(s)?Jb.has(s):IE(s))||(e||Nn(o,"get",s),t)?a:Lt(a)?!r||!gf(s)?a.value:a:dt(a)?e?Ca(a):yt(a):a}}const BE=Zb(),VE=Zb(!0);function Zb(e=!1){return function(n,o,s,l){let r=n[o];if(Xr(r)&&Lt(r)&&!Lt(s))return!1;if(!e&&!Xr(s)&&(ny(s)||(s=$t(s),r=$t(r)),!Xe(n)&&Lt(r)&&!Lt(s)))return r.value=s,!0;const a=Xe(n)&&gf(o)?Number(o)e,Cu=e=>Reflect.getPrototypeOf(e);function Ha(e,t,n=!1,o=!1){e=e.__v_raw;const s=$t(e),l=$t(t);t!==l&&!n&&Nn(s,"get",t),!n&&Nn(s,"get",l);const{has:r}=Cu(s),a=o?Cf:n?Sf:Zr;if(r.call(s,t))return a(e.get(t));if(r.call(s,l))return a(e.get(l));e!==s&&e.get(t)}function za(e,t=!1){const n=this.__v_raw,o=$t(n),s=$t(e);return e!==s&&!t&&Nn(o,"has",e),!t&&Nn(o,"has",s),e===s?n.has(e):n.has(e)||n.has(s)}function Ka(e,t=!1){return e=e.__v_raw,!t&&Nn($t(e),"iterate",js),Reflect.get(e,"size",e)}function Uh(e){e=$t(e);const t=$t(this);return Cu(t).has.call(t,e)||(t.add(e),Bo(t,"add",e,e)),this}function qh(e,t){t=$t(t);const n=$t(this),{has:o,get:s}=Cu(n);let l=o.call(n,e);l||(e=$t(e),l=o.call(n,e));const r=s.call(n,e);return n.set(e,t),l?Gr(t,r)&&Bo(n,"set",e,t):Bo(n,"add",e,t),this}function Gh(e){const t=$t(this),{has:n,get:o}=Cu(t);let s=n.call(t,e);s||(e=$t(e),s=n.call(t,e)),o&&o.call(t,e);const l=t.delete(e);return s&&Bo(t,"delete",e,void 0),l}function Xh(){const e=$t(this),t=e.size!==0,n=e.clear();return t&&Bo(e,"clear",void 0,void 0),n}function Wa(e,t){return function(o,s){const l=this,r=l.__v_raw,a=$t(r),i=t?Cf:e?Sf:Zr;return!e&&Nn(a,"iterate",js),r.forEach((u,c)=>o.call(s,i(u),i(c),l))}}function ja(e,t,n){return function(...o){const s=this.__v_raw,l=$t(s),r=Il(l),a=e==="entries"||e===Symbol.iterator&&r,i=e==="keys"&&r,u=s[e](...o),c=n?Cf:t?Sf:Zr;return!t&&Nn(l,"iterate",i?Jc:js),{next(){const{value:d,done:f}=u.next();return f?{value:d,done:f}:{value:a?[c(d[0]),c(d[1])]:c(d),done:f}},[Symbol.iterator](){return this}}}}function Xo(e){return function(...t){return e==="delete"?!1:this}}function jE(){const e={get(l){return Ha(this,l)},get size(){return Ka(this)},has:za,add:Uh,set:qh,delete:Gh,clear:Xh,forEach:Wa(!1,!1)},t={get(l){return Ha(this,l,!1,!0)},get size(){return Ka(this)},has:za,add:Uh,set:qh,delete:Gh,clear:Xh,forEach:Wa(!1,!0)},n={get(l){return Ha(this,l,!0)},get size(){return Ka(this,!0)},has(l){return za.call(this,l,!0)},add:Xo("add"),set:Xo("set"),delete:Xo("delete"),clear:Xo("clear"),forEach:Wa(!0,!1)},o={get(l){return Ha(this,l,!0,!0)},get size(){return Ka(this,!0)},has(l){return za.call(this,l,!0)},add:Xo("add"),set:Xo("set"),delete:Xo("delete"),clear:Xo("clear"),forEach:Wa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=ja(l,!1,!1),n[l]=ja(l,!0,!1),t[l]=ja(l,!1,!0),o[l]=ja(l,!0,!0)}),[e,n,t,o]}const[YE,UE,qE,GE]=jE();function $f(e,t){const n=t?e?GE:qE:e?UE:YE;return(o,s,l)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?o:Reflect.get(at(n,s)&&s in o?n:o,s,l)}const XE={get:$f(!1,!1)},JE={get:$f(!1,!0)},ZE={get:$f(!0,!1)},xb=new WeakMap,ey=new WeakMap,ty=new WeakMap,QE=new WeakMap;function xE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function e_(e){return e.__v_skip||!Object.isExtensible(e)?0:xE(si(e))}function yt(e){return Xr(e)?e:kf(e,!1,Qb,XE,xb)}function t_(e){return kf(e,!1,WE,JE,ey)}function Ca(e){return kf(e,!0,KE,ZE,ty)}function kf(e,t,n,o,s){if(!dt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const l=s.get(e);if(l)return l;const r=e_(e);if(r===0)return e;const a=new Proxy(e,r===2?o:n);return s.set(e,a),a}function Dl(e){return Xr(e)?Dl(e.__v_raw):!!(e&&e.__v_isReactive)}function Xr(e){return!!(e&&e.__v_isReadonly)}function ny(e){return!!(e&&e.__v_isShallow)}function oy(e){return Dl(e)||Xr(e)}function $t(e){const t=e&&e.__v_raw;return t?$t(t):e}function Jr(e){return Vi(e,"__v_skip",!0),e}const Zr=e=>dt(e)?yt(e):e,Sf=e=>dt(e)?Ca(e):e;function sy(e){ls&&yo&&(e=$t(e),Xb(e.dep||(e.dep=bf())))}function Ef(e,t){e=$t(e),e.dep&&Zc(e.dep)}function Lt(e){return!!(e&&e.__v_isRef===!0)}function A(e){return ly(e,!1)}function jt(e){return ly(e,!0)}function ly(e,t){return Lt(e)?e:new n_(e,t)}class n_{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:$t(t),this._value=n?t:Zr(t)}get value(){return sy(this),this._value}set value(t){t=this.__v_isShallow?t:$t(t),Gr(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Zr(t),Ef(this))}}function Cr(e){Ef(e)}function b(e){return Lt(e)?e.value:e}const o_={get:(e,t,n)=>b(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const s=e[t];return Lt(s)&&!Lt(n)?(s.value=n,!0):Reflect.set(e,t,n,o)}};function ry(e){return Dl(e)?e:new Proxy(e,o_)}function Ut(e){const t=Xe(e)?new Array(e.length):{};for(const n in e)t[n]=Yt(e,n);return t}class s_{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Yt(e,t,n){const o=e[t];return Lt(o)?o:new s_(e,t,n)}class l_{constructor(t,n,o,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new yf(t,()=>{this._dirty||(this._dirty=!0,Ef(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=o}get value(){const t=$t(this);return sy(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function r_(e,t,n=!1){let o,s;const l=et(e);return l?(o=e,s=wt):(o=e.get,s=e.set),new l_(o,s,l||!s,n)}Promise.resolve();const Br=[];function a_(e,...t){il();const n=Br.length?Br[Br.length-1].component:null,o=n&&n.appContext.config.warnHandler,s=i_();if(o)Do(o,n,11,[e+t.join(""),n&&n.proxy,s.map(({vnode:l})=>`at <${Vy(n,l.type)}>`).join(` + */const z$=1e6,K$=1e3,Hc="transitionend",W$=e=>e==null?`${e}`:{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),j$=e=>{do e+=Math.floor(Math.random()*z$);while(document.getElementById(e));return e},hb=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&n!=="#"?n.trim():null}return t},uf=e=>{const t=hb(e);return t&&document.querySelector(t)?t:null},is=e=>{const t=hb(e);return t?document.querySelector(t):null},Y$=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const o=Number.parseFloat(t),s=Number.parseFloat(n);return!o&&!s?0:(t=t.split(",")[0],n=n.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(n))*K$)},mb=e=>{e.dispatchEvent(new Event(Hc))},Js=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),us=e=>Js(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(e):null,So=(e,t,n)=>{Object.keys(n).forEach(o=>{const s=n[o],l=t[o],r=l&&Js(l)?"element":W$(l);if(!new RegExp(s).test(r))throw new TypeError(`${e.toUpperCase()}: Option "${o}" provided type "${r}" but expected type "${s}".`)})},va=e=>!Js(e)||e.getClientRects().length===0?!1:getComputedStyle(e).getPropertyValue("visibility")==="visible",Ks=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",vb=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?vb(e.parentNode):null},Li=()=>{},or=e=>{e.offsetHeight},gb=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},Uu=[],U$=e=>{document.readyState==="loading"?(Uu.length||document.addEventListener("DOMContentLoaded",()=>{Uu.forEach(t=>t())}),Uu.push(e)):e()},dn=()=>document.documentElement.dir==="rtl",qn=e=>{U$(()=>{const t=gb();if(t){const n=e.NAME,o=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=o,e.jQueryInterface)}})},Is=e=>{typeof e=="function"&&e()},bb=(e,t,n=!0)=>{if(!n){Is(e);return}const o=5,s=Y$(t)+o;let l=!1;const r=({target:a})=>{a===t&&(l=!0,t.removeEventListener(Hc,r),Is(e))};t.addEventListener(Hc,r),setTimeout(()=>{l||mb(t)},s)},yb=(e,t,n,o)=>{let s=e.indexOf(t);if(s===-1)return e[!n&&o?e.length-1:0];const l=e.length;return s+=n?1:-1,o&&(s=(s+l)%l),e[Math.max(0,Math.min(s,l-1))]},q$=/[^.]*(?=\..*)\.|.*/,G$=/\..*/,X$=/::\d+$/,qu={};let Qp=1;const Z$={mouseenter:"mouseover",mouseleave:"mouseout"},J$=/^(mouseenter|mouseleave)/i,wb=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Cb(e,t){return t&&`${t}::${Qp++}`||e.uidEvent||Qp++}function $b(e){const t=Cb(e);return e.uidEvent=t,qu[t]=qu[t]||{},qu[t]}function Q$(e,t){return function n(o){return o.delegateTarget=e,n.oneOff&&Ve.off(e,o.type,t),t.apply(e,[o])}}function x$(e,t,n){return function o(s){const l=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=l.length;a--;)if(l[a]===r)return s.delegateTarget=r,o.oneOff&&Ve.off(e,s.type,t,n),n.apply(r,[s]);return null}}function kb(e,t,n=null){const o=Object.keys(e);for(let s=0,l=o.length;sfunction(g){if(!g.relatedTarget||g.relatedTarget!==g.delegateTarget&&!g.delegateTarget.contains(g.relatedTarget))return h.call(this,g)};o?o=p(o):n=p(n)}const[l,r,a]=Sb(t,n,o),i=$b(e),u=i[a]||(i[a]={}),c=kb(u,r,l?n:null);if(c){c.oneOff=c.oneOff&&s;return}const d=Cb(r,t.replace(q$,"")),f=l?x$(e,n,o):Q$(e,n);f.delegationSelector=l?n:null,f.originalHandler=r,f.oneOff=s,f.uidEvent=d,u[d]=f,e.addEventListener(a,f,l)}function zc(e,t,n,o,s){const l=kb(t[n],o,s);!l||(e.removeEventListener(n,l,Boolean(s)),delete t[n][l.uidEvent])}function ek(e,t,n,o){const s=t[n]||{};Object.keys(s).forEach(l=>{if(l.includes(o)){const r=s[l];zc(e,t,n,r.originalHandler,r.delegationSelector)}})}function Eb(e){return e=e.replace(G$,""),Z$[e]||e}const Ve={on(e,t,n,o){xp(e,t,n,o,!1)},one(e,t,n,o){xp(e,t,n,o,!0)},off(e,t,n,o){if(typeof t!="string"||!e)return;const[s,l,r]=Sb(t,n,o),a=r!==t,i=$b(e),u=t.startsWith(".");if(typeof l!="undefined"){if(!i||!i[r])return;zc(e,i,r,l,s?n:null);return}u&&Object.keys(i).forEach(d=>{ek(e,i,d,t.slice(1))});const c=i[r]||{};Object.keys(c).forEach(d=>{const f=d.replace(X$,"");if(!a||t.includes(f)){const p=c[d];zc(e,i,r,p.originalHandler,p.delegationSelector)}})},trigger(e,t,n){if(typeof t!="string"||!e)return null;const o=gb(),s=Eb(t),l=t!==s,r=wb.has(s);let a,i=!0,u=!0,c=!1,d=null;return l&&o&&(a=o.Event(t,n),o(e).trigger(a),i=!a.isPropagationStopped(),u=!a.isImmediatePropagationStopped(),c=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,i,!0)):d=new CustomEvent(t,{bubbles:i,cancelable:!0}),typeof n!="undefined"&&Object.keys(n).forEach(f=>{Object.defineProperty(d,f,{get(){return n[f]}})}),c&&d.preventDefault(),u&&e.dispatchEvent(d),d.defaultPrevented&&typeof a!="undefined"&&a.preventDefault(),d}},Go=new Map,Dr={set(e,t,n){Go.has(e)||Go.set(e,new Map);const o=Go.get(e);if(!o.has(t)&&o.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`);return}o.set(t,n)},get(e,t){return Go.has(e)&&Go.get(e).get(t)||null},remove(e,t){if(!Go.has(e))return;const n=Go.get(e);n.delete(t),n.size===0&&Go.delete(e)}},tk="5.1.3";class uo{constructor(t){t=us(t),t&&(this._element=t,Dr.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Dr.remove(this._element,this.constructor.DATA_KEY),Ve.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,n,o=!0){bb(t,n,o)}static getInstance(t){return Dr.get(us(t),this.DATA_KEY)}static getOrCreateInstance(t,n={}){return this.getInstance(t)||new this(t,typeof n=="object"?n:null)}static get VERSION(){return tk}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const cu=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,o=e.NAME;Ve.on(document,n,`[data-bs-dismiss="${o}"]`,function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),Ks(this))return;const l=is(this)||this.closest(`.${o}`);e.getOrCreateInstance(l)[t]()})},nk="alert",ok="bs.alert",_b=`.${ok}`,sk=`close${_b}`,lk=`closed${_b}`,rk="fade",ak="show";class du extends uo{static get NAME(){return nk}close(){if(Ve.trigger(this._element,sk).defaultPrevented)return;this._element.classList.remove(ak);const n=this._element.classList.contains(rk);this._queueCallback(()=>this._destroyElement(),this._element,n)}_destroyElement(){this._element.remove(),Ve.trigger(this._element,lk),this.dispose()}static jQueryInterface(t){return this.each(function(){const n=du.getOrCreateInstance(this);if(typeof t=="string"){if(n[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}cu(du,"close");qn(du);const ik="button",uk="bs.button",ck=`.${uk}`,dk=".data-api",fk="active",eh='[data-bs-toggle="button"]',pk=`click${ck}${dk}`;class fu extends uo{static get NAME(){return ik}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(fk))}static jQueryInterface(t){return this.each(function(){const n=fu.getOrCreateInstance(this);t==="toggle"&&n[t]()})}}Ve.on(document,pk,eh,e=>{e.preventDefault();const t=e.target.closest(eh);fu.getOrCreateInstance(t).toggle()});qn(fu);function th(e){return e==="true"?!0:e==="false"?!1:e===Number(e).toString()?Number(e):e===""||e==="null"?null:e}function Gu(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const xt={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${Gu(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Gu(t)}`)},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter(n=>n.startsWith("bs")).forEach(n=>{let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=th(e.dataset[n])}),t},getDataAttribute(e,t){return th(e.getAttribute(`data-bs-${Gu(t)}`))},offset(e){const t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset,left:t.left+window.pageXOffset}},position(e){return{top:e.offsetTop,left:e.offsetLeft}}},hk=3,ut={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(n=>n.matches(t))},parents(e,t){const n=[];let o=e.parentNode;for(;o&&o.nodeType===Node.ELEMENT_NODE&&o.nodeType!==hk;)o.matches(t)&&n.push(o),o=o.parentNode;return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(n=>`${n}:not([tabindex^="-"])`).join(", ");return this.find(t,e).filter(n=>!Ks(n)&&va(n))}},nh="carousel",mk="bs.carousel",In=`.${mk}`,Tb=".data-api",vk="ArrowLeft",gk="ArrowRight",bk=500,yk=40,oh={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},wk={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},ys="next",ws="prev",Ts="left",_r="right",Ck={[vk]:_r,[gk]:Ts},$k=`slide${In}`,sh=`slid${In}`,kk=`keydown${In}`,Sk=`mouseenter${In}`,Ek=`mouseleave${In}`,_k=`touchstart${In}`,Tk=`touchmove${In}`,Ak=`touchend${In}`,Nk=`pointerdown${In}`,Mk=`pointerup${In}`,Ok=`dragstart${In}`,Ik=`load${In}${Tb}`,Pk=`click${In}${Tb}`,Dk="carousel",Cs="active",Lk="slide",Rk="carousel-item-end",Vk="carousel-item-start",Bk="carousel-item-next",Fk="carousel-item-prev",Hk="pointer-event",zk=".active",La=".active.carousel-item",Kk=".carousel-item",Wk=".carousel-item img",jk=".carousel-item-next, .carousel-item-prev",Yk=".carousel-indicators",Uk="[data-bs-target]",qk="[data-bs-slide], [data-bs-slide-to]",Gk='[data-bs-ride="carousel"]',Xk="touch",Zk="pen";class Io extends uo{constructor(t,n){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(n),this._indicatorsElement=ut.findOne(Yk,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return oh}static get NAME(){return nh}next(){this._slide(ys)}nextWhenVisible(){!document.hidden&&va(this._element)&&this.next()}prev(){this._slide(ws)}pause(t){t||(this._isPaused=!0),ut.findOne(jk,this._element)&&(mb(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=ut.findOne(La,this._element);const n=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding){Ve.one(this._element,sh,()=>this.to(t));return}if(n===t){this.pause(),this.cycle();return}const o=t>n?ys:ws;this._slide(o,this._items[t])}_getConfig(t){return t=ne(ne(ne({},oh),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(nh,t,wk),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=yk)return;const n=t/this.touchDeltaX;this.touchDeltaX=0,n&&this._slide(n>0?_r:Ts)}_addEventListeners(){this._config.keyboard&&Ve.on(this._element,kk,t=>this._keydown(t)),this._config.pause==="hover"&&(Ve.on(this._element,Sk,t=>this.pause(t)),Ve.on(this._element,Ek,t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=l=>this._pointerEvent&&(l.pointerType===Zk||l.pointerType===Xk),n=l=>{t(l)?this.touchStartX=l.clientX:this._pointerEvent||(this.touchStartX=l.touches[0].clientX)},o=l=>{this.touchDeltaX=l.touches&&l.touches.length>1?0:l.touches[0].clientX-this.touchStartX},s=l=>{t(l)&&(this.touchDeltaX=l.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(r=>this.cycle(r),bk+this._config.interval))};ut.find(Wk,this._element).forEach(l=>{Ve.on(l,Ok,r=>r.preventDefault())}),this._pointerEvent?(Ve.on(this._element,Nk,l=>n(l)),Ve.on(this._element,Mk,l=>s(l)),this._element.classList.add(Hk)):(Ve.on(this._element,_k,l=>n(l)),Ve.on(this._element,Tk,l=>o(l)),Ve.on(this._element,Ak,l=>s(l)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const n=Ck[t.key];n&&(t.preventDefault(),this._slide(n))}_getItemIndex(t){return this._items=t&&t.parentNode?ut.find(Kk,t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,n){const o=t===ys;return yb(this._items,n,o,this._config.wrap)}_triggerSlideEvent(t,n){const o=this._getItemIndex(t),s=this._getItemIndex(ut.findOne(La,this._element));return Ve.trigger(this._element,$k,{relatedTarget:t,direction:n,from:s,to:o})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const n=ut.findOne(zk,this._indicatorsElement);n.classList.remove(Cs),n.removeAttribute("aria-current");const o=ut.find(Uk,this._indicatorsElement);for(let s=0;s{Ve.trigger(this._element,sh,{relatedTarget:r,direction:f,from:l,to:a})};if(this._element.classList.contains(Lk)){r.classList.add(d),or(r),s.classList.add(c),r.classList.add(c);const g=()=>{r.classList.remove(c,d),r.classList.add(Cs),s.classList.remove(Cs,d,c),this._isSliding=!1,setTimeout(h,0)};this._queueCallback(g,s,!0)}else s.classList.remove(Cs),r.classList.add(Cs),this._isSliding=!1,h();i&&this.cycle()}_directionToOrder(t){return[_r,Ts].includes(t)?dn()?t===Ts?ws:ys:t===Ts?ys:ws:t}_orderToDirection(t){return[ys,ws].includes(t)?dn()?t===ws?Ts:_r:t===ws?_r:Ts:t}static carouselInterface(t,n){const o=Io.getOrCreateInstance(t,n);let{_config:s}=o;typeof n=="object"&&(s=ne(ne({},s),n));const l=typeof n=="string"?n:s.slide;if(typeof n=="number")o.to(n);else if(typeof l=="string"){if(typeof o[l]=="undefined")throw new TypeError(`No method named "${l}"`);o[l]()}else s.interval&&s.ride&&(o.pause(),o.cycle())}static jQueryInterface(t){return this.each(function(){Io.carouselInterface(this,t)})}static dataApiClickHandler(t){const n=is(this);if(!n||!n.classList.contains(Dk))return;const o=ne(ne({},xt.getDataAttributes(n)),xt.getDataAttributes(this)),s=this.getAttribute("data-bs-slide-to");s&&(o.interval=!1),Io.carouselInterface(n,o),s&&Io.getInstance(n).to(s),t.preventDefault()}}Ve.on(document,Pk,qk,Io.dataApiClickHandler);Ve.on(window,Ik,()=>{const e=ut.find(Gk);for(let t=0,n=e.length;tu===this._element);a!==null&&i.length&&(this._selector=a,this._triggerArray.push(r))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rh}static get NAME(){return lh}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[],n;if(this._config.parent){const u=ut.find(ih,this._config.parent);t=ut.find(a2,this._config.parent).filter(c=>!u.includes(c))}const o=ut.findOne(this._selector);if(t.length){const u=t.find(c=>o!==c);if(n=u?Nl.getInstance(u):null,n&&n._isTransitioning)return}if(Ve.trigger(this._element,xk).defaultPrevented)return;t.forEach(u=>{o!==u&&Nl.getOrCreateInstance(u,{toggle:!1}).hide(),n||Dr.set(u,Ab,null)});const l=this._getDimension();this._element.classList.remove(_l),this._element.classList.add(Ra),this._element.style[l]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const r=()=>{this._isTransitioning=!1,this._element.classList.remove(Ra),this._element.classList.add(_l,Xu),this._element.style[l]="",Ve.trigger(this._element,e2)},i=`scroll${l[0].toUpperCase()+l.slice(1)}`;this._queueCallback(r,this._element,!0),this._element.style[l]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||Ve.trigger(this._element,t2).defaultPrevented)return;const n=this._getDimension();this._element.style[n]=`${this._element.getBoundingClientRect()[n]}px`,or(this._element),this._element.classList.add(Ra),this._element.classList.remove(_l,Xu);const o=this._triggerArray.length;for(let l=0;l{this._isTransitioning=!1,this._element.classList.remove(Ra),this._element.classList.add(_l),Ve.trigger(this._element,n2)};this._element.style[n]="",this._queueCallback(s,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Xu)}_getConfig(t){return t=ne(ne(ne({},rh),xt.getDataAttributes(this._element)),t),t.toggle=Boolean(t.toggle),t.parent=us(t.parent),So(lh,t,Qk),t}_getDimension(){return this._element.classList.contains(s2)?l2:r2}_initializeChildren(){if(!this._config.parent)return;const t=ut.find(ih,this._config.parent);ut.find(Kc,this._config.parent).filter(n=>!t.includes(n)).forEach(n=>{const o=is(n);o&&this._addAriaAndCollapsedClass([n],this._isShown(o))})}_addAriaAndCollapsedClass(t,n){!t.length||t.forEach(o=>{n?o.classList.remove(ah):o.classList.add(ah),o.setAttribute("aria-expanded",n)})}static jQueryInterface(t){return this.each(function(){const n={};typeof t=="string"&&/show|hide/.test(t)&&(n.toggle=!1);const o=Nl.getOrCreateInstance(this,n);if(typeof t=="string"){if(typeof o[t]=="undefined")throw new TypeError(`No method named "${t}"`);o[t]()}})}}Ve.on(document,o2,Kc,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();const t=uf(this);ut.find(t).forEach(o=>{Nl.getOrCreateInstance(o,{toggle:!1}).toggle()})});qn(Nl);const Zu="dropdown",i2="bs.dropdown",ll=`.${i2}`,cf=".data-api",ti="Escape",uh="Space",ch="Tab",Wc="ArrowUp",ni="ArrowDown",u2=2,c2=new RegExp(`${Wc}|${ni}|${ti}`),d2=`hide${ll}`,f2=`hidden${ll}`,p2=`show${ll}`,h2=`shown${ll}`,Nb=`click${ll}${cf}`,Mb=`keydown${ll}${cf}`,m2=`keyup${ll}${cf}`,ml="show",v2="dropup",g2="dropend",b2="dropstart",y2="navbar",Lr='[data-bs-toggle="dropdown"]',jc=".dropdown-menu",w2=".navbar-nav",C2=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",$2=dn()?"top-end":"top-start",k2=dn()?"top-start":"top-end",S2=dn()?"bottom-end":"bottom-start",E2=dn()?"bottom-start":"bottom-end",_2=dn()?"left-start":"right-start",T2=dn()?"right-start":"left-start",A2={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},N2={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Bn extends uo{constructor(t,n){super(t),this._popper=null,this._config=this._getConfig(n),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return A2}static get DefaultType(){return N2}static get NAME(){return Zu}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Ks(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(Ve.trigger(this._element,p2,t).defaultPrevented)return;const o=Bn.getParentFromElement(this._element);this._inNavbar?xt.setDataAttribute(this._menu,"popper","none"):this._createPopper(o),"ontouchstart"in document.documentElement&&!o.closest(w2)&&[].concat(...document.body.children).forEach(s=>Ve.on(s,"mouseover",Li)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ml),this._element.classList.add(ml),Ve.trigger(this._element,h2,t)}hide(){if(Ks(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){Ve.trigger(this._element,d2,t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(o=>Ve.off(o,"mouseover",Li)),this._popper&&this._popper.destroy(),this._menu.classList.remove(ml),this._element.classList.remove(ml),this._element.setAttribute("aria-expanded","false"),xt.removeDataAttribute(this._menu,"popper"),Ve.trigger(this._element,f2,t))}_getConfig(t){if(t=ne(ne(ne({},this.constructor.Default),xt.getDataAttributes(this._element)),t),So(Zu,t,this.constructor.DefaultType),typeof t.reference=="object"&&!Js(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Zu.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(typeof pb=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let n=this._element;this._config.reference==="parent"?n=t:Js(this._config.reference)?n=us(this._config.reference):typeof this._config.reference=="object"&&(n=this._config.reference);const o=this._getPopperConfig(),s=o.modifiers.find(l=>l.name==="applyStyles"&&l.enabled===!1);this._popper=ma(n,this._menu,o),s&&xt.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(ml)}_getMenuElement(){return ut.next(this._element,jc)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains(g2))return _2;if(t.classList.contains(b2))return T2;const n=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(v2)?n?k2:$2:n?E2:S2}_detectNavbar(){return this._element.closest(`.${y2}`)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(n=>Number.parseInt(n,10)):typeof t=="function"?n=>t(n,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),ne(ne({},t),typeof this._config.popperConfig=="function"?this._config.popperConfig(t):this._config.popperConfig)}_selectMenuItem({key:t,target:n}){const o=ut.find(C2,this._menu).filter(va);!o.length||yb(o,n,t===ni,!o.includes(n)).focus()}static jQueryInterface(t){return this.each(function(){const n=Bn.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}static clearMenus(t){if(t&&(t.button===u2||t.type==="keyup"&&t.key!==ch))return;const n=ut.find(Lr);for(let o=0,s=n.length;on+t),this._setElementAttributes(dh,"paddingRight",n=>n+t),this._setElementAttributes(fh,"marginRight",n=>n-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,n,o){const s=this.getWidth(),l=r=>{if(r!==this._element&&window.innerWidth>r.clientWidth+s)return;this._saveInitialAttribute(r,n);const a=window.getComputedStyle(r)[n];r.style[n]=`${o(Number.parseFloat(a))}px`};this._applyManipulationCallback(t,l)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(dh,"paddingRight"),this._resetElementAttributes(fh,"marginRight")}_saveInitialAttribute(t,n){const o=t.style[n];o&&xt.setDataAttribute(t,n,o)}_resetElementAttributes(t,n){const o=s=>{const l=xt.getDataAttribute(s,n);typeof l=="undefined"?s.style.removeProperty(n):(xt.removeDataAttribute(s,n),s.style[n]=l)};this._applyManipulationCallback(t,o)}_applyManipulationCallback(t,n){Js(t)?n(t):ut.find(t,this._element).forEach(n)}isOverflowing(){return this.getWidth()>0}}const M2={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},O2={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Ob="backdrop",I2="fade",ph="show",hh=`mousedown.bs.${Ob}`;class Ib{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){if(!this._config.isVisible){Is(t);return}this._append(),this._config.isAnimated&&or(this._getElement()),this._getElement().classList.add(ph),this._emulateAnimation(()=>{Is(t)})}hide(t){if(!this._config.isVisible){Is(t);return}this._getElement().classList.remove(ph),this._emulateAnimation(()=>{this.dispose(),Is(t)})}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(I2),this._element=t}return this._element}_getConfig(t){return t=ne(ne({},M2),typeof t=="object"?t:{}),t.rootElement=us(t.rootElement),So(Ob,t,O2),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),Ve.on(this._getElement(),hh,()=>{Is(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||(Ve.off(this._element,hh),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){bb(t,this._getElement(),this._config.isAnimated)}}const P2={trapElement:null,autofocus:!0},D2={trapElement:"element",autofocus:"boolean"},L2="focustrap",R2="bs.focustrap",Ri=`.${R2}`,V2=`focusin${Ri}`,B2=`keydown.tab${Ri}`,F2="Tab",H2="forward",mh="backward";class Pb{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:n}=this._config;this._isActive||(n&&t.focus(),Ve.off(document,Ri),Ve.on(document,V2,o=>this._handleFocusin(o)),Ve.on(document,B2,o=>this._handleKeydown(o)),this._isActive=!0)}deactivate(){!this._isActive||(this._isActive=!1,Ve.off(document,Ri))}_handleFocusin(t){const{target:n}=t,{trapElement:o}=this._config;if(n===document||n===o||o.contains(n))return;const s=ut.focusableChildren(o);s.length===0?o.focus():this._lastTabNavDirection===mh?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){t.key===F2&&(this._lastTabNavDirection=t.shiftKey?mh:H2)}_getConfig(t){return t=ne(ne({},P2),typeof t=="object"?t:{}),So(L2,t,D2),t}}const vh="modal",z2="bs.modal",Gn=`.${z2}`,K2=".data-api",gh="Escape",bh={backdrop:!0,keyboard:!0,focus:!0},W2={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},j2=`hide${Gn}`,Y2=`hidePrevented${Gn}`,Db=`hidden${Gn}`,Lb=`show${Gn}`,U2=`shown${Gn}`,yh=`resize${Gn}`,wh=`click.dismiss${Gn}`,Ch=`keydown.dismiss${Gn}`,q2=`mouseup.dismiss${Gn}`,$h=`mousedown.dismiss${Gn}`,G2=`click${Gn}${K2}`,kh="modal-open",X2="fade",Sh="show",Ju="modal-static",Z2=".modal.show",J2=".modal-dialog",Q2=".modal-body",x2='[data-bs-toggle="modal"]';class Wl extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._dialog=ut.findOne(J2,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Yc}static get Default(){return bh}static get NAME(){return vh}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Ve.trigger(this._element,Lb,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(kh),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),Ve.on(this._dialog,$h,()=>{Ve.one(this._element,q2,o=>{o.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning||Ve.trigger(this._element,j2).defaultPrevented)return;this._isShown=!1;const n=this._isAnimated();n&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(Sh),Ve.off(this._element,wh),Ve.off(this._dialog,$h),this._queueCallback(()=>this._hideModal(),this._element,n)}dispose(){[window,this._dialog].forEach(t=>Ve.off(t,Gn)),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ib({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Pb({trapElement:this._element})}_getConfig(t){return t=ne(ne(ne({},bh),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(vh,t,W2),t}_showElement(t){const n=this._isAnimated(),o=ut.findOne(Q2,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,o&&(o.scrollTop=0),n&&or(this._element),this._element.classList.add(Sh);const s=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Ve.trigger(this._element,U2,{relatedTarget:t})};this._queueCallback(s,this._dialog,n)}_setEscapeEvent(){this._isShown?Ve.on(this._element,Ch,t=>{this._config.keyboard&&t.key===gh?(t.preventDefault(),this.hide()):!this._config.keyboard&&t.key===gh&&this._triggerBackdropTransition()}):Ve.off(this._element,Ch)}_setResizeEvent(){this._isShown?Ve.on(window,yh,()=>this._adjustDialog()):Ve.off(window,yh)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(kh),this._resetAdjustments(),this._scrollBar.reset(),Ve.trigger(this._element,Db)})}_showBackdrop(t){Ve.on(this._element,wh,n=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains(X2)}_triggerBackdropTransition(){if(Ve.trigger(this._element,Y2).defaultPrevented)return;const{classList:n,scrollHeight:o,style:s}=this._element,l=o>document.documentElement.clientHeight;!l&&s.overflowY==="hidden"||n.contains(Ju)||(l||(s.overflowY="hidden"),n.add(Ju),this._queueCallback(()=>{n.remove(Ju),l||this._queueCallback(()=>{s.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),o=n>0;(!o&&t&&!dn()||o&&!t&&dn())&&(this._element.style.paddingLeft=`${n}px`),(o&&!t&&!dn()||!o&&t&&dn())&&(this._element.style.paddingRight=`${n}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,n){return this.each(function(){const o=Wl.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof o[t]=="undefined")throw new TypeError(`No method named "${t}"`);o[t](n)}})}}Ve.on(document,G2,x2,function(e){const t=is(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ve.one(t,Lb,s=>{s.defaultPrevented||Ve.one(t,Db,()=>{va(this)&&this.focus()})});const n=ut.findOne(Z2);n&&Wl.getInstance(n).hide(),Wl.getOrCreateInstance(t).toggle(this)});cu(Wl);qn(Wl);const Eh="offcanvas",eS="bs.offcanvas",rl=`.${eS}`,Rb=".data-api",tS=`load${rl}${Rb}`,nS="Escape",_h={backdrop:!0,keyboard:!0,scroll:!1},oS={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},Th="show",sS="offcanvas-backdrop",Vb=".offcanvas.show",lS=`show${rl}`,rS=`shown${rl}`,aS=`hide${rl}`,Bb=`hidden${rl}`,iS=`click${rl}${Rb}`,uS=`keydown.dismiss${rl}`,cS='[data-bs-toggle="offcanvas"]';class Qs extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Eh}static get Default(){return _h}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Ve.trigger(this._element,lS,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||new Yc().hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Th);const o=()=>{this._config.scroll||this._focustrap.activate(),Ve.trigger(this._element,rS,{relatedTarget:t})};this._queueCallback(o,this._element,!0)}hide(){if(!this._isShown||Ve.trigger(this._element,aS).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove(Th),this._backdrop.hide();const n=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new Yc().reset(),Ve.trigger(this._element,Bb)};this._queueCallback(n,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t=ne(ne(ne({},_h),xt.getDataAttributes(this._element)),typeof t=="object"?t:{}),So(Eh,t,oS),t}_initializeBackDrop(){return new Ib({className:sS,isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Pb({trapElement:this._element})}_addEventListeners(){Ve.on(this._element,uS,t=>{this._config.keyboard&&t.key===nS&&this.hide()})}static jQueryInterface(t){return this.each(function(){const n=Qs.getOrCreateInstance(this,t);if(typeof t=="string"){if(n[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}Ve.on(document,iS,cS,function(e){const t=is(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ks(this))return;Ve.one(t,Bb,()=>{va(this)&&this.focus()});const n=ut.findOne(Vb);n&&n!==t&&Qs.getInstance(n).hide(),Qs.getOrCreateInstance(t).toggle(this)});Ve.on(window,tS,()=>ut.find(Vb).forEach(e=>Qs.getOrCreateInstance(e).show()));cu(Qs);qn(Qs);const dS=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),fS=/^aria-[\w-]*$/i,pS=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,hS=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,mS=(e,t)=>{const n=e.nodeName.toLowerCase();if(t.includes(n))return dS.has(n)?Boolean(pS.test(e.nodeValue)||hS.test(e.nodeValue)):!0;const o=t.filter(s=>s instanceof RegExp);for(let s=0,l=o.length;s{mS(f,d)||i.removeAttribute(f.nodeName)})}return s.body.innerHTML}const Nh="tooltip",gS="bs.tooltip",ho=`.${gS}`,bS="bs-tooltip",yS=new Set(["sanitize","allowList","sanitizeFn"]),wS={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},CS={AUTO:"auto",TOP:"top",RIGHT:dn()?"left":"right",BOTTOM:"bottom",LEFT:dn()?"right":"left"},$S={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:vS,popperConfig:null},kS={HIDE:`hide${ho}`,HIDDEN:`hidden${ho}`,SHOW:`show${ho}`,SHOWN:`shown${ho}`,INSERTED:`inserted${ho}`,CLICK:`click${ho}`,FOCUSIN:`focusin${ho}`,FOCUSOUT:`focusout${ho}`,MOUSEENTER:`mouseenter${ho}`,MOUSELEAVE:`mouseleave${ho}`},Va="fade",SS="modal",mr="show",vr="show",Qu="out",Mh=".tooltip-inner",Oh=`.${SS}`,Ih="hide.bs.modal",gr="hover",xu="focus",ES="click",_S="manual";class sr extends uo{constructor(t,n){if(typeof pb=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(n),this.tip=null,this._setListeners()}static get Default(){return $S}static get NAME(){return Nh}static get Event(){return kS}static get DefaultType(){return wS}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(!!this._isEnabled)if(t){const n=this._initializeOnDelegatedTarget(t);n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(mr)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),Ve.off(this._element.closest(Oh),Ih,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;const t=Ve.trigger(this._element,this.constructor.Event.SHOW),n=vb(this._element),o=n===null?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(t.defaultPrevented||!o)return;this.constructor.NAME==="tooltip"&&this.tip&&this.getTitle()!==this.tip.querySelector(Mh).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const s=this.getTipElement(),l=j$(this.constructor.NAME);s.setAttribute("id",l),this._element.setAttribute("aria-describedby",l),this._config.animation&&s.classList.add(Va);const r=typeof this._config.placement=="function"?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:i}=this._config;Dr.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),Ve.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=ma(this._element,s,this._getPopperConfig(a)),s.classList.add(mr);const u=this._resolvePossibleFunction(this._config.customClass);u&&s.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(f=>{Ve.on(f,"mouseover",Li)});const c=()=>{const f=this._hoverState;this._hoverState=null,Ve.trigger(this._element,this.constructor.Event.SHOWN),f===Qu&&this._leave(null,this)},d=this.tip.classList.contains(Va);this._queueCallback(c,this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement(),n=()=>{this._isWithActiveTrigger()||(this._hoverState!==vr&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),Ve.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())};if(Ve.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(mr),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(l=>Ve.off(l,"mouseover",Li)),this._activeTrigger[ES]=!1,this._activeTrigger[xu]=!1,this._activeTrigger[gr]=!1;const s=this.tip.classList.contains(Va);this._queueCallback(n,this.tip,s),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const n=t.children[0];return this.setContent(n),n.classList.remove(Va,mr),this.tip=n,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),Mh)}_sanitizeAndSetContent(t,n,o){const s=ut.findOne(o,t);if(!n&&s){s.remove();return}this.setElementContent(s,n)}setElementContent(t,n){if(t!==null){if(Js(n)){n=us(n),this._config.html?n.parentNode!==t&&(t.innerHTML="",t.append(n)):t.textContent=n.textContent;return}this._config.html?(this._config.sanitize&&(n=Ah(n,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=n):t.textContent=n}}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return t==="right"?"end":t==="left"?"start":t}_initializeOnDelegatedTarget(t,n){return n||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(n=>Number.parseInt(n,10)):typeof t=="function"?n=>t(n,this._element):t}_resolvePossibleFunction(t){return typeof t=="function"?t.call(this._element):t}_getPopperConfig(t){const n={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:o=>this._handlePopperPlacementChange(o)}],onFirstUpdate:o=>{o.options.placement!==o.placement&&this._handlePopperPlacementChange(o)}};return ne(ne({},n),typeof this._config.popperConfig=="function"?this._config.popperConfig(n):this._config.popperConfig)}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return CS[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(n=>{if(n==="click")Ve.on(this._element,this.constructor.Event.CLICK,this._config.selector,o=>this.toggle(o));else if(n!==_S){const o=n===gr?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s=n===gr?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;Ve.on(this._element,o,this._config.selector,l=>this._enter(l)),Ve.on(this._element,s,this._config.selector,l=>this._leave(l))}}),this._hideModalHandler=()=>{this._element&&this.hide()},Ve.on(this._element.closest(Oh),Ih,this._hideModalHandler),this._config.selector?this._config=Te(ne({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),n=typeof this._element.getAttribute("data-bs-original-title");(t||n!=="string")&&(this._element.setAttribute("data-bs-original-title",t||""),t&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,n){if(n=this._initializeOnDelegatedTarget(t,n),t&&(n._activeTrigger[t.type==="focusin"?xu:gr]=!0),n.getTipElement().classList.contains(mr)||n._hoverState===vr){n._hoverState=vr;return}if(clearTimeout(n._timeout),n._hoverState=vr,!n._config.delay||!n._config.delay.show){n.show();return}n._timeout=setTimeout(()=>{n._hoverState===vr&&n.show()},n._config.delay.show)}_leave(t,n){if(n=this._initializeOnDelegatedTarget(t,n),t&&(n._activeTrigger[t.type==="focusout"?xu:gr]=n._element.contains(t.relatedTarget)),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=Qu,!n._config.delay||!n._config.delay.hide){n.hide();return}n._timeout=setTimeout(()=>{n._hoverState===Qu&&n.hide()},n._config.delay.hide)}}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const n=xt.getDataAttributes(this._element);return Object.keys(n).forEach(o=>{yS.has(o)&&delete n[o]}),t=ne(ne(ne({},this.constructor.Default),n),typeof t=="object"&&t?t:{}),t.container=t.container===!1?document.body:us(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),So(Nh,t,this.constructor.DefaultType),t.sanitize&&(t.template=Ah(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const n in this._config)this.constructor.Default[n]!==this._config[n]&&(t[n]=this._config[n]);return t}_cleanTipClass(){const t=this.getTipElement(),n=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),o=t.getAttribute("class").match(n);o!==null&&o.length>0&&o.map(s=>s.trim()).forEach(s=>t.classList.remove(s))}_getBasicClassPrefix(){return bS}_handlePopperPlacementChange(t){const{state:n}=t;!n||(this.tip=n.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(n.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each(function(){const n=sr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}qn(sr);const TS="popover",AS="bs.popover",mo=`.${AS}`,NS="bs-popover",MS=Te(ne({},sr.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),OS=Te(ne({},sr.DefaultType),{content:"(string|element|function)"}),IS={HIDE:`hide${mo}`,HIDDEN:`hidden${mo}`,SHOW:`show${mo}`,SHOWN:`shown${mo}`,INSERTED:`inserted${mo}`,CLICK:`click${mo}`,FOCUSIN:`focusin${mo}`,FOCUSOUT:`focusout${mo}`,MOUSEENTER:`mouseenter${mo}`,MOUSELEAVE:`mouseleave${mo}`},PS=".popover-header",DS=".popover-body";class df extends sr{static get Default(){return MS}static get NAME(){return TS}static get Event(){return IS}static get DefaultType(){return OS}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),PS),this._sanitizeAndSetContent(t,this._getContent(),DS)}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return NS}static jQueryInterface(t){return this.each(function(){const n=df.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}qn(df);const Ph="scrollspy",LS="bs.scrollspy",pu=`.${LS}`,RS=".data-api",Dh={offset:10,method:"auto",target:""},VS={offset:"number",method:"string",target:"(string|element)"},BS=`activate${pu}`,FS=`scroll${pu}`,HS=`load${pu}${RS}`,Fb="dropdown-item",vl="active",zS='[data-bs-spy="scroll"]',KS=".nav, .list-group",Uc=".nav-link",WS=".nav-item",Hb=".list-group-item",ec=`${Uc}, ${Hb}, .${Fb}`,jS=".dropdown",YS=".dropdown-toggle",US="offset",Lh="position";class hu extends uo{constructor(t,n){super(t),this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(n),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Ve.on(this._scrollElement,FS,()=>this._process()),this.refresh(),this._process()}static get Default(){return Dh}static get NAME(){return Ph}refresh(){const t=this._scrollElement===this._scrollElement.window?US:Lh,n=this._config.method==="auto"?t:this._config.method,o=n===Lh?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),ut.find(ec,this._config.target).map(l=>{const r=uf(l),a=r?ut.findOne(r):null;if(a){const i=a.getBoundingClientRect();if(i.width||i.height)return[xt[n](a).top+o,r]}return null}).filter(l=>l).sort((l,r)=>l[0]-r[0]).forEach(l=>{this._offsets.push(l[0]),this._targets.push(l[1])})}dispose(){Ve.off(this._scrollElement,pu),super.dispose()}_getConfig(t){return t=ne(ne(ne({},Dh),xt.getDataAttributes(this._element)),typeof t=="object"&&t?t:{}),t.target=us(t.target)||document.documentElement,So(Ph,t,VS),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,n=this._getScrollHeight(),o=this._config.offset+n-this._getOffsetHeight();if(this._scrollHeight!==n&&this.refresh(),t>=o){const s=this._targets[this._targets.length-1];this._activeTarget!==s&&this._activate(s);return}if(this._activeTarget&&t0){this._activeTarget=null,this._clear();return}for(let s=this._offsets.length;s--;)this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&(typeof this._offsets[s+1]=="undefined"||t`${s}[data-bs-target="${t}"],${s}[href="${t}"]`),o=ut.findOne(n.join(","),this._config.target);o.classList.add(vl),o.classList.contains(Fb)?ut.findOne(YS,o.closest(jS)).classList.add(vl):ut.parents(o,KS).forEach(s=>{ut.prev(s,`${Uc}, ${Hb}`).forEach(l=>l.classList.add(vl)),ut.prev(s,WS).forEach(l=>{ut.children(l,Uc).forEach(r=>r.classList.add(vl))})}),Ve.trigger(this._scrollElement,BS,{relatedTarget:t})}_clear(){ut.find(ec,this._config.target).filter(t=>t.classList.contains(vl)).forEach(t=>t.classList.remove(vl))}static jQueryInterface(t){return this.each(function(){const n=hu.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Ve.on(window,HS,()=>{ut.find(zS).forEach(e=>new hu(e))});qn(hu);const qS="tab",GS="bs.tab",ba=`.${GS}`,XS=".data-api",ZS=`hide${ba}`,JS=`hidden${ba}`,QS=`show${ba}`,xS=`shown${ba}`,eE=`click${ba}${XS}`,tE="dropdown-menu",br="active",Rh="fade",Vh="show",nE=".dropdown",oE=".nav, .list-group",Bh=".active",Fh=":scope > li > .active",sE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',lE=".dropdown-toggle",rE=":scope > .dropdown-menu .active";class mu extends uo{static get NAME(){return qS}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(br))return;let t;const n=is(this._element),o=this._element.closest(oE);if(o){const a=o.nodeName==="UL"||o.nodeName==="OL"?Fh:Bh;t=ut.find(a,o),t=t[t.length-1]}const s=t?Ve.trigger(t,ZS,{relatedTarget:this._element}):null;if(Ve.trigger(this._element,QS,{relatedTarget:t}).defaultPrevented||s!==null&&s.defaultPrevented)return;this._activate(this._element,o);const r=()=>{Ve.trigger(t,JS,{relatedTarget:this._element}),Ve.trigger(this._element,xS,{relatedTarget:t})};n?this._activate(n,n.parentNode,r):r()}_activate(t,n,o){const l=(n&&(n.nodeName==="UL"||n.nodeName==="OL")?ut.find(Fh,n):ut.children(n,Bh))[0],r=o&&l&&l.classList.contains(Rh),a=()=>this._transitionComplete(t,l,o);l&&r?(l.classList.remove(Vh),this._queueCallback(a,t,!0)):a()}_transitionComplete(t,n,o){if(n){n.classList.remove(br);const l=ut.findOne(rE,n.parentNode);l&&l.classList.remove(br),n.getAttribute("role")==="tab"&&n.setAttribute("aria-selected",!1)}t.classList.add(br),t.getAttribute("role")==="tab"&&t.setAttribute("aria-selected",!0),or(t),t.classList.contains(Rh)&&t.classList.add(Vh);let s=t.parentNode;if(s&&s.nodeName==="LI"&&(s=s.parentNode),s&&s.classList.contains(tE)){const l=t.closest(nE);l&&ut.find(lE,l).forEach(r=>r.classList.add(br)),t.setAttribute("aria-expanded",!0)}o&&o()}static jQueryInterface(t){return this.each(function(){const n=mu.getOrCreateInstance(this);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Ve.on(document,eE,sE,function(e){if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ks(this))return;mu.getOrCreateInstance(this).show()});qn(mu);const Hh="toast",aE="bs.toast",ms=`.${aE}`,iE=`mouseover${ms}`,uE=`mouseout${ms}`,cE=`focusin${ms}`,dE=`focusout${ms}`,fE=`hide${ms}`,pE=`hidden${ms}`,hE=`show${ms}`,mE=`shown${ms}`,vE="fade",zh="hide",yr="show",Ba="showing",gE={animation:"boolean",autohide:"boolean",delay:"number"},Kh={animation:!0,autohide:!0,delay:5e3};class vu extends uo{constructor(t,n){super(t),this._config=this._getConfig(n),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return gE}static get Default(){return Kh}static get NAME(){return Hh}show(){if(Ve.trigger(this._element,hE).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(vE);const n=()=>{this._element.classList.remove(Ba),Ve.trigger(this._element,mE),this._maybeScheduleHide()};this._element.classList.remove(zh),or(this._element),this._element.classList.add(yr),this._element.classList.add(Ba),this._queueCallback(n,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(yr)||Ve.trigger(this._element,fE).defaultPrevented)return;const n=()=>{this._element.classList.add(zh),this._element.classList.remove(Ba),this._element.classList.remove(yr),Ve.trigger(this._element,pE)};this._element.classList.add(Ba),this._queueCallback(n,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(yr)&&this._element.classList.remove(yr),super.dispose()}_getConfig(t){return t=ne(ne(ne({},Kh),xt.getDataAttributes(this._element)),typeof t=="object"&&t?t:{}),So(Hh,t,this.constructor.DefaultType),t}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(t,n){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=n;break;case"focusin":case"focusout":this._hasKeyboardInteraction=n;break}if(n){this._clearTimeout();return}const o=t.relatedTarget;this._element===o||this._element.contains(o)||this._maybeScheduleHide()}_setListeners(){Ve.on(this._element,iE,t=>this._onInteraction(t,!0)),Ve.on(this._element,uE,t=>this._onInteraction(t,!1)),Ve.on(this._element,cE,t=>this._onInteraction(t,!0)),Ve.on(this._element,dE,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const n=vu.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t](this)}})}}cu(vu);qn(vu);function ff(e,t){const n=Object.create(null),o=e.split(",");for(let s=0;s!!n[s.toLowerCase()]:s=>!!n[s]}const bE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",yE=ff(bE);function zb(e){return!!e||e===""}function Pe(e){if(Xe(e)){const t={};for(let n=0;n{if(n){const o=n.split(CE);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function _(e){let t="";if(Qe(e))t=e;else if(Xe(e))for(let n=0;njl(n,t))}const he=e=>Qe(e)?e:e==null?"":Xe(e)||dt(e)&&(e.toString===jb||!et(e.toString))?JSON.stringify(e,Wb,2):String(e),Wb=(e,t)=>t&&t.__v_isRef?Wb(e,t.value):Ol(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,s])=>(n[`${o} =>`]=s,n),{})}:bu(t)?{[`Set(${t.size})`]:[...t.values()]}:dt(t)&&!Xe(t)&&!Yb(t)?String(t):t,Mt={},Ml=[],wt=()=>{},SE=()=>!1,EE=/^on[^a-z]/,gu=e=>EE.test(e),pf=e=>e.startsWith("onUpdate:"),Zt=Object.assign,hf=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},_E=Object.prototype.hasOwnProperty,rt=(e,t)=>_E.call(e,t),Xe=Array.isArray,Ol=e=>ya(e)==="[object Map]",bu=e=>ya(e)==="[object Set]",Wh=e=>e instanceof Date,et=e=>typeof e=="function",Qe=e=>typeof e=="string",mf=e=>typeof e=="symbol",dt=e=>e!==null&&typeof e=="object",xs=e=>dt(e)&&et(e.then)&&et(e.catch),jb=Object.prototype.toString,ya=e=>jb.call(e),oi=e=>ya(e).slice(8,-1),Yb=e=>ya(e)==="[object Object]",vf=e=>Qe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,si=ff(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yu=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},TE=/-(\w)/g,Wn=yu(e=>e.replace(TE,(t,n)=>n?n.toUpperCase():"")),AE=/\B([A-Z])/g,vs=yu(e=>e.replace(AE,"-$1").toLowerCase()),yn=yu(e=>e.charAt(0).toUpperCase()+e.slice(1)),li=yu(e=>e?`on${yn(e)}`:""),qr=(e,t)=>!Object.is(e,t),ri=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Bi=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let jh;const NE=()=>jh||(jh=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Rn;class Ub{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Rn&&(this.parent=Rn,this.index=(Rn.scopes||(Rn.scopes=[])).push(this)-1)}run(t){if(this.active)try{return Rn=this,t()}finally{Rn=this.parent}}on(){Rn=this}off(){Rn=this.parent}stop(t){if(this.active){let n,o;for(n=0,o=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Gb=e=>(e.w&cs)>0,Xb=e=>(e.n&cs)>0,PE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o{(u==="length"||u>=o)&&a.push(i)});else switch(n!==void 0&&a.push(r.get(n)),t){case"add":Xe(e)?vf(n)&&a.push(r.get("length")):(a.push(r.get(Ws)),Ol(e)&&a.push(r.get(Xc)));break;case"delete":Xe(e)||(a.push(r.get(Ws)),Ol(e)&&a.push(r.get(Xc)));break;case"set":Ol(e)&&a.push(r.get(Ws));break}if(a.length===1)a[0]&&Zc(a[0]);else{const i=[];for(const u of a)u&&i.push(...u);Zc(gf(i))}}function Zc(e,t){for(const n of Xe(e)?e:[...e])(n!==yo||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const LE=ff("__proto__,__v_isRef,__isVue"),Qb=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(mf)),RE=yf(),VE=yf(!1,!0),BE=yf(!0),Uh=FE();function FE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=$t(this);for(let l=0,r=this.length;l{e[t]=function(...n){al();const o=$t(this)[t].apply(this,n);return il(),o}}),e}function yf(e=!1,t=!1){return function(o,s,l){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&l===(e?t?t_:oy:t?ny:ty).get(o))return o;const r=Xe(o);if(!e&&r&&rt(Uh,s))return Reflect.get(Uh,s,l);const a=Reflect.get(o,s,l);return(mf(s)?Qb.has(s):LE(s))||(e||Nn(o,"get",s),t)?a:Lt(a)?!r||!vf(s)?a.value:a:dt(a)?e?wa(a):yt(a):a}}const HE=xb(),zE=xb(!0);function xb(e=!1){return function(n,o,s,l){let r=n[o];if(Gr(r)&&Lt(r)&&!Lt(s))return!1;if(!e&&!Gr(s)&&(sy(s)||(s=$t(s),r=$t(r)),!Xe(n)&&Lt(r)&&!Lt(s)))return r.value=s,!0;const a=Xe(n)&&vf(o)?Number(o)e,wu=e=>Reflect.getPrototypeOf(e);function Fa(e,t,n=!1,o=!1){e=e.__v_raw;const s=$t(e),l=$t(t);t!==l&&!n&&Nn(s,"get",t),!n&&Nn(s,"get",l);const{has:r}=wu(s),a=o?wf:n?kf:Zr;if(r.call(s,t))return a(e.get(t));if(r.call(s,l))return a(e.get(l));e!==s&&e.get(t)}function Ha(e,t=!1){const n=this.__v_raw,o=$t(n),s=$t(e);return e!==s&&!t&&Nn(o,"has",e),!t&&Nn(o,"has",s),e===s?n.has(e):n.has(e)||n.has(s)}function za(e,t=!1){return e=e.__v_raw,!t&&Nn($t(e),"iterate",Ws),Reflect.get(e,"size",e)}function qh(e){e=$t(e);const t=$t(this);return wu(t).has.call(t,e)||(t.add(e),Vo(t,"add",e,e)),this}function Gh(e,t){t=$t(t);const n=$t(this),{has:o,get:s}=wu(n);let l=o.call(n,e);l||(e=$t(e),l=o.call(n,e));const r=s.call(n,e);return n.set(e,t),l?qr(t,r)&&Vo(n,"set",e,t):Vo(n,"add",e,t),this}function Xh(e){const t=$t(this),{has:n,get:o}=wu(t);let s=n.call(t,e);s||(e=$t(e),s=n.call(t,e)),o&&o.call(t,e);const l=t.delete(e);return s&&Vo(t,"delete",e,void 0),l}function Zh(){const e=$t(this),t=e.size!==0,n=e.clear();return t&&Vo(e,"clear",void 0,void 0),n}function Ka(e,t){return function(o,s){const l=this,r=l.__v_raw,a=$t(r),i=t?wf:e?kf:Zr;return!e&&Nn(a,"iterate",Ws),r.forEach((u,c)=>o.call(s,i(u),i(c),l))}}function Wa(e,t,n){return function(...o){const s=this.__v_raw,l=$t(s),r=Ol(l),a=e==="entries"||e===Symbol.iterator&&r,i=e==="keys"&&r,u=s[e](...o),c=n?wf:t?kf:Zr;return!t&&Nn(l,"iterate",i?Xc:Ws),{next(){const{value:d,done:f}=u.next();return f?{value:d,done:f}:{value:a?[c(d[0]),c(d[1])]:c(d),done:f}},[Symbol.iterator](){return this}}}}function Xo(e){return function(...t){return e==="delete"?!1:this}}function qE(){const e={get(l){return Fa(this,l)},get size(){return za(this)},has:Ha,add:qh,set:Gh,delete:Xh,clear:Zh,forEach:Ka(!1,!1)},t={get(l){return Fa(this,l,!1,!0)},get size(){return za(this)},has:Ha,add:qh,set:Gh,delete:Xh,clear:Zh,forEach:Ka(!1,!0)},n={get(l){return Fa(this,l,!0)},get size(){return za(this,!0)},has(l){return Ha.call(this,l,!0)},add:Xo("add"),set:Xo("set"),delete:Xo("delete"),clear:Xo("clear"),forEach:Ka(!0,!1)},o={get(l){return Fa(this,l,!0,!0)},get size(){return za(this,!0)},has(l){return Ha.call(this,l,!0)},add:Xo("add"),set:Xo("set"),delete:Xo("delete"),clear:Xo("clear"),forEach:Ka(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=Wa(l,!1,!1),n[l]=Wa(l,!0,!1),t[l]=Wa(l,!1,!0),o[l]=Wa(l,!0,!0)}),[e,n,t,o]}const[GE,XE,ZE,JE]=qE();function Cf(e,t){const n=t?e?JE:ZE:e?XE:GE;return(o,s,l)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?o:Reflect.get(rt(n,s)&&s in o?n:o,s,l)}const QE={get:Cf(!1,!1)},xE={get:Cf(!1,!0)},e_={get:Cf(!0,!1)},ty=new WeakMap,ny=new WeakMap,oy=new WeakMap,t_=new WeakMap;function n_(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function o_(e){return e.__v_skip||!Object.isExtensible(e)?0:n_(oi(e))}function yt(e){return Gr(e)?e:$f(e,!1,ey,QE,ty)}function s_(e){return $f(e,!1,UE,xE,ny)}function wa(e){return $f(e,!0,YE,e_,oy)}function $f(e,t,n,o,s){if(!dt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const l=s.get(e);if(l)return l;const r=o_(e);if(r===0)return e;const a=new Proxy(e,r===2?o:n);return s.set(e,a),a}function Il(e){return Gr(e)?Il(e.__v_raw):!!(e&&e.__v_isReactive)}function Gr(e){return!!(e&&e.__v_isReadonly)}function sy(e){return!!(e&&e.__v_isShallow)}function ly(e){return Il(e)||Gr(e)}function $t(e){const t=e&&e.__v_raw;return t?$t(t):e}function Xr(e){return Vi(e,"__v_skip",!0),e}const Zr=e=>dt(e)?yt(e):e,kf=e=>dt(e)?wa(e):e;function ry(e){ls&&yo&&(e=$t(e),Jb(e.dep||(e.dep=gf())))}function Sf(e,t){e=$t(e),e.dep&&Zc(e.dep)}function Lt(e){return!!(e&&e.__v_isRef===!0)}function A(e){return ay(e,!1)}function jt(e){return ay(e,!0)}function ay(e,t){return Lt(e)?e:new l_(e,t)}class l_{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:$t(t),this._value=n?t:Zr(t)}get value(){return ry(this),this._value}set value(t){t=this.__v_isShallow?t:$t(t),qr(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Zr(t),Sf(this))}}function wr(e){Sf(e)}function y(e){return Lt(e)?e.value:e}const r_={get:(e,t,n)=>y(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const s=e[t];return Lt(s)&&!Lt(n)?(s.value=n,!0):Reflect.set(e,t,n,o)}};function iy(e){return Il(e)?e:new Proxy(e,r_)}function Ut(e){const t=Xe(e)?new Array(e.length):{};for(const n in e)t[n]=Yt(e,n);return t}class a_{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Yt(e,t,n){const o=e[t];return Lt(o)?o:new a_(e,t,n)}class i_{constructor(t,n,o,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new bf(t,()=>{this._dirty||(this._dirty=!0,Sf(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=o}get value(){const t=$t(this);return ry(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function u_(e,t,n=!1){let o,s;const l=et(e);return l?(o=e,s=wt):(o=e.get,s=e.set),new i_(o,s,l||!s,n)}Promise.resolve();const Rr=[];function c_(e,...t){al();const n=Rr.length?Rr[Rr.length-1].component:null,o=n&&n.appContext.config.warnHandler,s=d_();if(o)Po(o,n,11,[e+t.join(""),n&&n.proxy,s.map(({vnode:l})=>`at <${Hy(n,l.type)}>`).join(` `),s]);else{const l=[`[Vue warn]: ${e}`,...t];s.length&&l.push(` -`,...u_(s)),console.warn(...l)}ul()}function i_(){let e=Br[Br.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function u_(e){const t=[];return e.forEach((n,o)=>{t.push(...o===0?[]:[` -`],...c_(n))}),t}function c_({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,s=` at <${Vy(e.component,e.type,o)}`,l=">"+n;return e.props?[s,...d_(e.props),l]:[s+l]}function d_(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...ay(o,e[o]))}),n.length>3&&t.push(" ..."),t}function ay(e,t,n){return Qe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Lt(t)?(t=ay(e,$t(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):et(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=$t(t),n?t:[`${e}=`,t])}function Do(e,t,n,o){let s;try{s=o?e(...o):e()}catch(l){$u(l,t,n)}return s}function Hn(e,t,n,o){if(et(e)){const l=Do(e,t,n,o);return l&&el(l)&&l.catch(r=>{$u(r,t,n)}),l}const s=[];for(let l=0;l>>1;Qr(wn[o])Mo&&wn.splice(t,1)}function dy(e,t,n,o){Xe(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?o+1:o))&&n.push(e),cy()}function m_(e){dy(e,Nr,Vr,Sl)}function v_(e){dy(e,Qo,Fr,El)}function Tf(e,t=null){if(Vr.length){for(xc=t,Nr=[...new Set(Vr)],Vr.length=0,Sl=0;SlQr(n)-Qr(o)),El=0;Ele.id==null?1/0:e.id;function py(e){Qc=!1,Hi=!0,Tf(e),wn.sort((n,o)=>Qr(n)-Qr(o));const t=wt;try{for(Mo=0;Mop.trim()):d&&(s=n.map(Fi))}let a,i=o[a=ri(t)]||o[a=ri(Wn(t))];!i&&l&&(i=o[a=ri(vs(t))]),i&&Hn(i,e,6,s);const u=o[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Hn(u,e,6,s)}}function hy(e,t,n=!1){const o=t.emitsCache,s=o.get(e);if(s!==void 0)return s;const l=e.emits;let r={},a=!1;if(!et(e)){const i=u=>{const c=hy(u,t,!0);c&&(a=!0,Jt(r,c))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!l&&!a?(o.set(e,null),null):(Xe(l)?l.forEach(i=>r[i]=null):Jt(r,l),o.set(e,r),r)}function Af(e,t){return!e||!bu(t)?!1:(t=t.slice(2).replace(/Once$/,""),at(e,t[0].toLowerCase()+t.slice(1))||at(e,vs(t))||at(e,t))}let $n=null,my=null;function zi(e){const t=$n;return $n=e,my=e&&e.type.__scopeId||null,t}function j(e,t=$n,n){if(!t||e._n)return e;const o=(...s)=>{o._d&&am(-1);const l=zi(t),r=e(...s);return zi(l),o._d&&am(1),r};return o._n=!0,o._c=!0,o._d=!0,o}function oc(e){const{type:t,vnode:n,proxy:o,withProxy:s,props:l,propsOptions:[r],slots:a,attrs:i,emit:u,render:c,renderCache:d,data:f,setupState:p,ctx:h,inheritAttrs:g}=e;let m,v;const y=zi(e);try{if(n.shapeFlag&4){const S=s||o;m=go(c.call(S,S,d,l,p,f,h)),v=i}else{const S=t;m=go(S.length>1?S(l,{attrs:i,slots:a,emit:u}):S(l,null)),v=t.props?i:b_(i)}}catch(S){zr.length=0,$u(S,e,1),m=Y(pn)}let w=m;if(v&&g!==!1){const S=Object.keys(v),{shapeFlag:$}=w;S.length&&$&7&&(r&&S.some(hf)&&(v=y_(v,r)),w=tl(w,v))}return n.dirs&&(w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),m=w,zi(y),m}const b_=e=>{let t;for(const n in e)(n==="class"||n==="style"||bu(n))&&((t||(t={}))[n]=e[n]);return t},y_=(e,t)=>{const n={};for(const o in e)(!hf(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function w_(e,t,n){const{props:o,children:s,component:l}=e,{props:r,children:a,patchFlag:i}=t,u=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return o?Jh(o,r,u):!!r;if(i&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function k_(e,t){t&&t.pendingBranch?Xe(e)?t.effects.push(...e):t.effects.push(e):v_(e)}function st(e,t){if(Xt){let n=Xt.provides;const o=Xt.parent&&Xt.parent.provides;o===n&&(n=Xt.provides=Object.create(o)),n[e]=t}}function Ne(e,t,n=!1){const o=Xt||$n;if(o){const s=o.parent==null?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(s&&e in s)return s[e];if(arguments.length>1)return n&&et(t)?t.call(o.proxy):t}}function zn(e,t){return Nf(e,null,t)}const Zh={};function pe(e,t,n){return Nf(e,t,n)}function Nf(e,t,{immediate:n,deep:o,flush:s,onTrack:l,onTrigger:r}=Mt){const a=Xt;let i,u=!1,c=!1;if(Lt(e)?(i=()=>e.value,u=ny(e)):Dl(e)?(i=()=>e,o=!0):Xe(e)?(c=!0,u=e.some(Dl),i=()=>e.map(v=>{if(Lt(v))return v.value;if(Dl(v))return Bs(v);if(et(v))return Do(v,a,2)})):et(e)?t?i=()=>Do(e,a,2):i=()=>{if(!(a&&a.isUnmounted))return d&&d(),Hn(e,a,3,[f])}:i=wt,t&&o){const v=i;i=()=>Bs(v())}let d,f=v=>{d=m.onStop=()=>{Do(v,a,4)}};if(ta)return f=wt,t?n&&Hn(t,a,3,[i(),c?[]:void 0,f]):i(),wt;let p=c?[]:Zh;const h=()=>{if(!!m.active)if(t){const v=m.run();(o||u||(c?v.some((y,w)=>Gr(y,p[w])):Gr(v,p)))&&(d&&d(),Hn(t,a,3,[v,p===Zh?void 0:p,f]),p=v)}else m.run()};h.allowRecurse=!!t;let g;s==="sync"?g=h:s==="post"?g=()=>cn(h,a&&a.suspense):g=()=>{!a||a.isMounted?m_(h):h()};const m=new yf(i,g);return t?n?h():p=m.run():s==="post"?cn(m.run.bind(m),a&&a.suspense):m.run(),()=>{m.stop(),a&&a.scope&&mf(a.scope.effects,m)}}function S_(e,t,n){const o=this.proxy,s=Qe(e)?e.includes(".")?vy(o,e):()=>o[e]:e.bind(o,o);let l;et(t)?l=t:(l=t.handler,n=t);const r=Xt;Ul(this);const a=Nf(s,l.bind(o),n);return r?Ul(r):Us(),a}function vy(e,t){const n=t.split(".");return()=>{let o=e;for(let s=0;s{Bs(n,t)});else if(Wb(e))for(const n in e)Bs(e[n],t);return e}function gy(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xe(()=>{e.isMounted=!0}),_t(()=>{e.isUnmounting=!0}),e}const Ln=[Function,Array],E_={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ln,onEnter:Ln,onAfterEnter:Ln,onEnterCancelled:Ln,onBeforeLeave:Ln,onLeave:Ln,onAfterLeave:Ln,onLeaveCancelled:Ln,onBeforeAppear:Ln,onAppear:Ln,onAfterAppear:Ln,onAppearCancelled:Ln},setup(e,{slots:t}){const n=nt(),o=gy();let s;return()=>{const l=t.default&&Mf(t.default(),!0);if(!l||!l.length)return;const r=$t(e),{mode:a}=r,i=l[0];if(o.isLeaving)return sc(i);const u=Qh(i);if(!u)return sc(i);const c=xr(u,r,o,n);ea(u,c);const d=n.subTree,f=d&&Qh(d);let p=!1;const{getTransitionKey:h}=u.type;if(h){const g=h();s===void 0?s=g:g!==s&&(s=g,p=!0)}if(f&&f.type!==pn&&(!Ps(u,f)||p)){const g=xr(f,r,o,n);if(ea(f,g),a==="out-in")return o.isLeaving=!0,g.afterLeave=()=>{o.isLeaving=!1,n.update()},sc(i);a==="in-out"&&u.type!==pn&&(g.delayLeave=(m,v,y)=>{const w=yy(o,f);w[String(f.key)]=f,m._leaveCb=()=>{v(),m._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=y})}return i}}},by=E_;function yy(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function xr(e,t,n,o){const{appear:s,mode:l,persisted:r=!1,onBeforeEnter:a,onEnter:i,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:g,onAppear:m,onAfterAppear:v,onAppearCancelled:y}=t,w=String(e.key),S=yy(n,e),$=(T,O)=>{T&&Hn(T,o,9,O)},k={mode:l,persisted:r,beforeEnter(T){let O=a;if(!n.isMounted)if(s)O=g||a;else return;T._leaveCb&&T._leaveCb(!0);const L=S[w];L&&Ps(e,L)&&L.el._leaveCb&&L.el._leaveCb(),$(O,[T])},enter(T){let O=i,L=u,B=c;if(!n.isMounted)if(s)O=m||i,L=v||u,B=y||c;else return;let V=!1;const H=T._enterCb=R=>{V||(V=!0,R?$(B,[T]):$(L,[T]),k.delayedLeave&&k.delayedLeave(),T._enterCb=void 0)};O?(O(T,H),O.length<=1&&H()):H()},leave(T,O){const L=String(e.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return O();$(d,[T]);let B=!1;const V=T._leaveCb=H=>{B||(B=!0,O(),H?$(h,[T]):$(p,[T]),T._leaveCb=void 0,S[L]===e&&delete S[L])};S[L]=e,f?(f(T,V),f.length<=1&&V()):V()},clone(T){return xr(T,t,n,o)}};return k}function sc(e){if(ku(e))return e=tl(e),e.children=null,e}function Qh(e){return ku(e)?e.children?e.children[0]:void 0:e}function ea(e,t){e.shapeFlag&6&&e.component?ea(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Mf(e,t=!1){let n=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader,ku=e=>e.type.__isKeepAlive;function __(e,t){wy(e,"a",t)}function T_(e,t){wy(e,"da",t)}function wy(e,t,n=Xt){const o=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Su(t,o,n),n){let s=n.parent;for(;s&&s.parent;)ku(s.parent.vnode)&&A_(o,t,n,s),s=s.parent}}function A_(e,t,n,o){const s=Su(t,e,o,!0);ka(()=>{mf(o[t],s)},n)}function Su(e,t,n=Xt,o=!1){if(n){const s=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;il(),Ul(n);const a=Hn(t,n,e,r);return Us(),ul(),a});return o?s.unshift(l):s.push(l),l}}const zo=e=>(t,n=Xt)=>(!ta||e==="sp")&&Su(e,t,n),$a=zo("bm"),xe=zo("m"),Cy=zo("bu"),Xn=zo("u"),_t=zo("bum"),ka=zo("um"),N_=zo("sp"),M_=zo("rtg"),O_=zo("rtc");function I_(e,t=Xt){Su("ec",e,t)}let td=!0;function D_(e){const t=ky(e),n=e.proxy,o=e.ctx;td=!1,t.beforeCreate&&xh(t.beforeCreate,e,"bc");const{data:s,computed:l,methods:r,watch:a,provide:i,inject:u,created:c,beforeMount:d,mounted:f,beforeUpdate:p,updated:h,activated:g,deactivated:m,beforeDestroy:v,beforeUnmount:y,destroyed:w,unmounted:S,render:$,renderTracked:k,renderTriggered:T,errorCaptured:O,serverPrefetch:L,expose:B,inheritAttrs:V,components:H,directives:R,filters:z}=t;if(u&&P_(u,o,null,e.appContext.config.unwrapInjectedRef),r)for(const N in r){const I=r[N];et(I)&&(o[N]=I.bind(n))}if(s){const N=s.call(n,n);dt(N)&&(e.data=yt(N))}if(td=!0,l)for(const N in l){const I=l[N],U=et(I)?I.bind(n,n):et(I.get)?I.get.bind(n,n):wt,q=!et(I)&&et(I.set)?I.set.bind(n):wt,Q=E({get:U,set:q});Object.defineProperty(o,N,{enumerable:!0,configurable:!0,get:()=>Q.value,set:J=>Q.value=J})}if(a)for(const N in a)$y(a[N],o,n,N);if(i){const N=et(i)?i.call(n):i;Reflect.ownKeys(N).forEach(I=>{st(I,N[I])})}c&&xh(c,e,"c");function P(N,I){Xe(I)?I.forEach(U=>N(U.bind(n))):I&&N(I.bind(n))}if(P($a,d),P(xe,f),P(Cy,p),P(Xn,h),P(__,g),P(T_,m),P(I_,O),P(O_,k),P(M_,T),P(_t,y),P(ka,S),P(N_,L),Xe(B))if(B.length){const N=e.exposed||(e.exposed={});B.forEach(I=>{Object.defineProperty(N,I,{get:()=>n[I],set:U=>n[I]=U})})}else e.exposed||(e.exposed={});$&&e.render===wt&&(e.render=$),V!=null&&(e.inheritAttrs=V),H&&(e.components=H),R&&(e.directives=R)}function P_(e,t,n=wt,o=!1){Xe(e)&&(e=nd(e));for(const s in e){const l=e[s];let r;dt(l)?"default"in l?r=Ne(l.from||s,l.default,!0):r=Ne(l.from||s):r=Ne(l),Lt(r)&&o?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[s]=r}}function xh(e,t,n){Hn(Xe(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function $y(e,t,n,o){const s=o.includes(".")?vy(n,o):()=>n[o];if(Qe(e)){const l=t[e];et(l)&&pe(s,l)}else if(et(e))pe(s,e.bind(n));else if(dt(e))if(Xe(e))e.forEach(l=>$y(l,t,n,o));else{const l=et(e.handler)?e.handler.bind(n):t[e.handler];et(l)&&pe(s,l,e)}}function ky(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:s,optionsCache:l,config:{optionMergeStrategies:r}}=e.appContext,a=l.get(t);let i;return a?i=a:!s.length&&!n&&!o?i=t:(i={},s.length&&s.forEach(u=>Ki(i,u,r,!0)),Ki(i,t,r)),l.set(t,i),i}function Ki(e,t,n,o=!1){const{mixins:s,extends:l}=t;l&&Ki(e,l,n,!0),s&&s.forEach(r=>Ki(e,r,n,!0));for(const r in t)if(!(o&&r==="expose")){const a=L_[r]||n&&n[r];e[r]=a?a(e[r],t[r]):t[r]}return e}const L_={data:em,props:Ns,emits:Ns,methods:Ns,computed:Ns,beforeCreate:sn,created:sn,beforeMount:sn,mounted:sn,beforeUpdate:sn,updated:sn,beforeDestroy:sn,beforeUnmount:sn,destroyed:sn,unmounted:sn,activated:sn,deactivated:sn,errorCaptured:sn,serverPrefetch:sn,components:Ns,directives:Ns,watch:B_,provide:em,inject:R_};function em(e,t){return t?e?function(){return Jt(et(e)?e.call(this,this):e,et(t)?t.call(this,this):t)}:t:e}function R_(e,t){return Ns(nd(e),nd(t))}function nd(e){if(Xe(e)){const t={};for(let n=0;n0)&&!(r&16)){if(r&8){const c=e.vnode.dynamicProps;for(let d=0;d{i=!0;const[f,p]=Ey(d,t,!0);Jt(r,f),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!l&&!i)return o.set(e,Ol),Ol;if(Xe(l))for(let c=0;c-1,p[1]=g<0||h-1||at(p,"default"))&&a.push(d)}}}const u=[r,a];return o.set(e,u),u}function tm(e){return e[0]!=="$"}function nm(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function om(e,t){return nm(e)===nm(t)}function sm(e,t){return Xe(t)?t.findIndex(n=>om(n,e)):et(t)&&om(t,e)?0:-1}const _y=e=>e[0]==="_"||e==="$stable",Of=e=>Xe(e)?e.map(go):[go(e)],H_=(e,t,n)=>{const o=j((...s)=>Of(t(...s)),n);return o._c=!1,o},Ty=(e,t,n)=>{const o=e._ctx;for(const s in e){if(_y(s))continue;const l=e[s];if(et(l))t[s]=H_(s,l,o);else if(l!=null){const r=Of(l);t[s]=()=>r}}},Ay=(e,t)=>{const n=Of(t);e.slots.default=()=>n},z_=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=$t(t),Vi(t,"_",n)):Ty(t,e.slots={})}else e.slots={},t&&Ay(e,t);Vi(e.slots,Eu,1)},K_=(e,t,n)=>{const{vnode:o,slots:s}=e;let l=!0,r=Mt;if(o.shapeFlag&32){const a=t._;a?n&&a===1?l=!1:(Jt(s,t),!n&&a===1&&delete s._):(l=!t.$stable,Ty(t,s)),r=t}else t&&(Ay(e,t),r={default:1});if(l)for(const a in s)!_y(a)&&!(a in r)&&delete s[a]};function Ge(e,t){const n=$n;if(n===null)return e;const o=n.proxy,s=e.dirs||(e.dirs=[]);for(let l=0;lsd(f,t&&(Xe(t)?t[p]:t),n,o,s));return}if(ed(o)&&!s)return;const l=o.shapeFlag&4?Rf(o.component)||o.component.proxy:o.el,r=s?null:l,{i:a,r:i}=e,u=t&&t.r,c=a.refs===Mt?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==i&&(Qe(u)?(c[u]=null,at(d,u)&&(d[u]=null)):Lt(u)&&(u.value=null)),et(i))Do(i,a,12,[r,c]);else{const f=Qe(i),p=Lt(i);if(f||p){const h=()=>{if(e.f){const g=f?c[i]:i.value;s?Xe(g)&&mf(g,l):Xe(g)?g.includes(l)||g.push(l):f?c[i]=[l]:(i.value=[l],e.k&&(c[e.k]=i.value))}else f?(c[i]=r,at(d,i)&&(d[i]=r)):Lt(i)&&(i.value=r,e.k&&(c[e.k]=r))};r?(h.id=-1,cn(h,n)):h()}}}const cn=k_;function Y_(e){return U_(e)}function U_(e,t){const n=_E();n.__VUE__=!0;const{insert:o,remove:s,patchProp:l,createElement:r,createText:a,createComment:i,setText:u,setElementText:c,parentNode:d,nextSibling:f,setScopeId:p=wt,cloneNode:h,insertStaticContent:g}=e,m=(K,X,fe,ye=null,be=null,_e=null,re=!1,se=null,ee=!!X.dynamicChildren)=>{if(K===X)return;K&&!Ps(K,X)&&(ye=Ce(K),ae(K,be,_e,!0),K=null),X.patchFlag===-2&&(ee=!1,X.dynamicChildren=null);const{type:ue,ref:Re,shapeFlag:F}=X;switch(ue){case Ea:v(K,X,fe,ye);break;case pn:y(K,X,fe,ye);break;case lc:K==null&&w(X,fe,ye,re);break;case Le:R(K,X,fe,ye,be,_e,re,se,ee);break;default:F&1?k(K,X,fe,ye,be,_e,re,se,ee):F&6?z(K,X,fe,ye,be,_e,re,se,ee):(F&64||F&128)&&ue.process(K,X,fe,ye,be,_e,re,se,ee,Oe)}Re!=null&&be&&sd(Re,K&&K.ref,_e,X||K,!X)},v=(K,X,fe,ye)=>{if(K==null)o(X.el=a(X.children),fe,ye);else{const be=X.el=K.el;X.children!==K.children&&u(be,X.children)}},y=(K,X,fe,ye)=>{K==null?o(X.el=i(X.children||""),fe,ye):X.el=K.el},w=(K,X,fe,ye)=>{[K.el,K.anchor]=g(K.children,X,fe,ye,K.el,K.anchor)},S=({el:K,anchor:X},fe,ye)=>{let be;for(;K&&K!==X;)be=f(K),o(K,fe,ye),K=be;o(X,fe,ye)},$=({el:K,anchor:X})=>{let fe;for(;K&&K!==X;)fe=f(K),s(K),K=fe;s(X)},k=(K,X,fe,ye,be,_e,re,se,ee)=>{re=re||X.type==="svg",K==null?T(X,fe,ye,be,_e,re,se,ee):B(K,X,be,_e,re,se,ee)},T=(K,X,fe,ye,be,_e,re,se)=>{let ee,ue;const{type:Re,props:F,shapeFlag:de,transition:Fe,patchFlag:Ze,dirs:He}=K;if(K.el&&h!==void 0&&Ze===-1)ee=K.el=h(K.el);else{if(ee=K.el=r(K.type,_e,F&&F.is,F),de&8?c(ee,K.children):de&16&&L(K.children,ee,null,ye,be,_e&&Re!=="foreignObject",re,se),He&&ks(K,null,ye,"created"),F){for(const me in F)me!=="value"&&!li(me)&&l(ee,me,null,F[me],_e,K.children,ye,be,ve);"value"in F&&l(ee,"value",null,F.value),(ue=F.onVnodeBeforeMount)&&vo(ue,ye,K)}O(ee,K,K.scopeId,re,ye)}He&&ks(K,null,ye,"beforeMount");const oe=(!be||be&&!be.pendingBranch)&&Fe&&!Fe.persisted;oe&&Fe.beforeEnter(ee),o(ee,X,fe),((ue=F&&F.onVnodeMounted)||oe||He)&&cn(()=>{ue&&vo(ue,ye,K),oe&&Fe.enter(ee),He&&ks(K,null,ye,"mounted")},be)},O=(K,X,fe,ye,be)=>{if(fe&&p(K,fe),ye)for(let _e=0;_e{for(let ue=ee;ue{const se=X.el=K.el;let{patchFlag:ee,dynamicChildren:ue,dirs:Re}=X;ee|=K.patchFlag&16;const F=K.props||Mt,de=X.props||Mt;let Fe;fe&&Ss(fe,!1),(Fe=de.onVnodeBeforeUpdate)&&vo(Fe,fe,X,K),Re&&ks(X,K,fe,"beforeUpdate"),fe&&Ss(fe,!0);const Ze=be&&X.type!=="foreignObject";if(ue?V(K.dynamicChildren,ue,se,fe,ye,Ze,_e):re||U(K,X,se,null,fe,ye,Ze,_e,!1),ee>0){if(ee&16)H(se,X,F,de,fe,ye,be);else if(ee&2&&F.class!==de.class&&l(se,"class",null,de.class,be),ee&4&&l(se,"style",F.style,de.style,be),ee&8){const He=X.dynamicProps;for(let oe=0;oe{Fe&&vo(Fe,fe,X,K),Re&&ks(X,K,fe,"updated")},ye)},V=(K,X,fe,ye,be,_e,re)=>{for(let se=0;se{if(fe!==ye){for(const se in ye){if(li(se))continue;const ee=ye[se],ue=fe[se];ee!==ue&&se!=="value"&&l(K,se,ue,ee,re,X.children,be,_e,ve)}if(fe!==Mt)for(const se in fe)!li(se)&&!(se in ye)&&l(K,se,fe[se],null,re,X.children,be,_e,ve);"value"in ye&&l(K,"value",fe.value,ye.value)}},R=(K,X,fe,ye,be,_e,re,se,ee)=>{const ue=X.el=K?K.el:a(""),Re=X.anchor=K?K.anchor:a("");let{patchFlag:F,dynamicChildren:de,slotScopeIds:Fe}=X;Fe&&(se=se?se.concat(Fe):Fe),K==null?(o(ue,fe,ye),o(Re,fe,ye),L(X.children,fe,Re,be,_e,re,se,ee)):F>0&&F&64&&de&&K.dynamicChildren?(V(K.dynamicChildren,de,fe,be,_e,re,se),(X.key!=null||be&&X===be.subTree)&&If(K,X,!0)):U(K,X,fe,Re,be,_e,re,se,ee)},z=(K,X,fe,ye,be,_e,re,se,ee)=>{X.slotScopeIds=se,K==null?X.shapeFlag&512?be.ctx.activate(X,fe,ye,re,ee):W(X,fe,ye,be,_e,re,ee):P(K,X,ee)},W=(K,X,fe,ye,be,_e,re)=>{const se=K.component=sT(K,ye,be);if(ku(K)&&(se.ctx.renderer=Oe),lT(se),se.asyncDep){if(be&&be.registerDep(se,N),!K.el){const ee=se.subTree=Y(pn);y(null,ee,X,fe)}return}N(se,K,X,fe,be,_e,re)},P=(K,X,fe)=>{const ye=X.component=K.component;if(w_(K,X,fe))if(ye.asyncDep&&!ye.asyncResolved){I(ye,X,fe);return}else ye.next=X,h_(ye.update),ye.update();else X.component=K.component,X.el=K.el,ye.vnode=X},N=(K,X,fe,ye,be,_e,re)=>{const se=()=>{if(K.isMounted){let{next:Re,bu:F,u:de,parent:Fe,vnode:Ze}=K,He=Re,oe;Ss(K,!1),Re?(Re.el=Ze.el,I(K,Re,re)):Re=Ze,F&&ai(F),(oe=Re.props&&Re.props.onVnodeBeforeUpdate)&&vo(oe,Fe,Re,Ze),Ss(K,!0);const me=oc(K),ce=K.subTree;K.subTree=me,m(ce,me,d(ce.el),Ce(ce),K,be,_e),Re.el=me.el,He===null&&C_(K,me.el),de&&cn(de,be),(oe=Re.props&&Re.props.onVnodeUpdated)&&cn(()=>vo(oe,Fe,Re,Ze),be)}else{let Re;const{el:F,props:de}=X,{bm:Fe,m:Ze,parent:He}=K,oe=ed(X);if(Ss(K,!1),Fe&&ai(Fe),!oe&&(Re=de&&de.onVnodeBeforeMount)&&vo(Re,He,X),Ss(K,!0),F&&qe){const me=()=>{K.subTree=oc(K),qe(F,K.subTree,K,be,null)};oe?X.type.__asyncLoader().then(()=>!K.isUnmounted&&me()):me()}else{const me=K.subTree=oc(K);m(null,me,fe,ye,K,be,_e),X.el=me.el}if(Ze&&cn(Ze,be),!oe&&(Re=de&&de.onVnodeMounted)){const me=X;cn(()=>vo(Re,He,me),be)}X.shapeFlag&256&&K.a&&cn(K.a,be),K.isMounted=!0,X=fe=ye=null}},ee=K.effect=new yf(se,()=>uy(K.update),K.scope),ue=K.update=ee.run.bind(ee);ue.id=K.uid,Ss(K,!0),ue()},I=(K,X,fe)=>{X.component=K;const ye=K.vnode.props;K.vnode=X,K.next=null,F_(K,X.props,ye,fe),K_(K,X.children,fe),il(),Tf(void 0,K.update),ul()},U=(K,X,fe,ye,be,_e,re,se,ee=!1)=>{const ue=K&&K.children,Re=K?K.shapeFlag:0,F=X.children,{patchFlag:de,shapeFlag:Fe}=X;if(de>0){if(de&128){Q(ue,F,fe,ye,be,_e,re,se,ee);return}else if(de&256){q(ue,F,fe,ye,be,_e,re,se,ee);return}}Fe&8?(Re&16&&ve(ue,be,_e),F!==ue&&c(fe,F)):Re&16?Fe&16?Q(ue,F,fe,ye,be,_e,re,se,ee):ve(ue,be,_e,!0):(Re&8&&c(fe,""),Fe&16&&L(F,fe,ye,be,_e,re,se,ee))},q=(K,X,fe,ye,be,_e,re,se,ee)=>{K=K||Ol,X=X||Ol;const ue=K.length,Re=X.length,F=Math.min(ue,Re);let de;for(de=0;deRe?ve(K,be,_e,!0,!1,F):L(X,fe,ye,be,_e,re,se,ee,F)},Q=(K,X,fe,ye,be,_e,re,se,ee)=>{let ue=0;const Re=X.length;let F=K.length-1,de=Re-1;for(;ue<=F&&ue<=de;){const Fe=K[ue],Ze=X[ue]=ee?ts(X[ue]):go(X[ue]);if(Ps(Fe,Ze))m(Fe,Ze,fe,null,be,_e,re,se,ee);else break;ue++}for(;ue<=F&&ue<=de;){const Fe=K[F],Ze=X[de]=ee?ts(X[de]):go(X[de]);if(Ps(Fe,Ze))m(Fe,Ze,fe,null,be,_e,re,se,ee);else break;F--,de--}if(ue>F){if(ue<=de){const Fe=de+1,Ze=Fede)for(;ue<=F;)ae(K[ue],be,_e,!0),ue++;else{const Fe=ue,Ze=ue,He=new Map;for(ue=Ze;ue<=de;ue++){const bt=X[ue]=ee?ts(X[ue]):go(X[ue]);bt.key!=null&&He.set(bt.key,ue)}let oe,me=0;const ce=de-Ze+1;let Ae=!1,Ue=0;const mt=new Array(ce);for(ue=0;ue=ce){ae(bt,be,_e,!0);continue}let At;if(bt.key!=null)At=He.get(bt.key);else for(oe=Ze;oe<=de;oe++)if(mt[oe-Ze]===0&&Ps(bt,X[oe])){At=oe;break}At===void 0?ae(bt,be,_e,!0):(mt[At-Ze]=ue+1,At>=Ue?Ue=At:Ae=!0,m(bt,X[At],fe,null,be,_e,re,se,ee),me++)}const St=Ae?q_(mt):Ol;for(oe=St.length-1,ue=ce-1;ue>=0;ue--){const bt=Ze+ue,At=X[bt],Pn=bt+1{const{el:_e,type:re,transition:se,children:ee,shapeFlag:ue}=K;if(ue&6){J(K.component.subTree,X,fe,ye);return}if(ue&128){K.suspense.move(X,fe,ye);return}if(ue&64){re.move(K,X,fe,Oe);return}if(re===Le){o(_e,X,fe);for(let F=0;Fse.enter(_e),be);else{const{leave:F,delayLeave:de,afterLeave:Fe}=se,Ze=()=>o(_e,X,fe),He=()=>{F(_e,()=>{Ze(),Fe&&Fe()})};de?de(_e,Ze,He):He()}else o(_e,X,fe)},ae=(K,X,fe,ye=!1,be=!1)=>{const{type:_e,props:re,ref:se,children:ee,dynamicChildren:ue,shapeFlag:Re,patchFlag:F,dirs:de}=K;if(se!=null&&sd(se,null,fe,K,!0),Re&256){X.ctx.deactivate(K);return}const Fe=Re&1&&de,Ze=!ed(K);let He;if(Ze&&(He=re&&re.onVnodeBeforeUnmount)&&vo(He,X,K),Re&6)Z(K.component,fe,ye);else{if(Re&128){K.suspense.unmount(fe,ye);return}Fe&&ks(K,null,X,"beforeUnmount"),Re&64?K.type.remove(K,X,fe,be,Oe,ye):ue&&(_e!==Le||F>0&&F&64)?ve(ue,X,fe,!1,!0):(_e===Le&&F&384||!be&&Re&16)&&ve(ee,X,fe),ye&&Ee(K)}(Ze&&(He=re&&re.onVnodeUnmounted)||Fe)&&cn(()=>{He&&vo(He,X,K),Fe&&ks(K,null,X,"unmounted")},fe)},Ee=K=>{const{type:X,el:fe,anchor:ye,transition:be}=K;if(X===Le){Me(fe,ye);return}if(X===lc){$(K);return}const _e=()=>{s(fe),be&&!be.persisted&&be.afterLeave&&be.afterLeave()};if(K.shapeFlag&1&&be&&!be.persisted){const{leave:re,delayLeave:se}=be,ee=()=>re(fe,_e);se?se(K.el,_e,ee):ee()}else _e()},Me=(K,X)=>{let fe;for(;K!==X;)fe=f(K),s(K),K=fe;s(X)},Z=(K,X,fe)=>{const{bum:ye,scope:be,update:_e,subTree:re,um:se}=K;ye&&ai(ye),be.stop(),_e&&(_e.active=!1,ae(re,K,X,fe)),se&&cn(se,X),cn(()=>{K.isUnmounted=!0},X),X&&X.pendingBranch&&!X.isUnmounted&&K.asyncDep&&!K.asyncResolved&&K.suspenseId===X.pendingId&&(X.deps--,X.deps===0&&X.resolve())},ve=(K,X,fe,ye=!1,be=!1,_e=0)=>{for(let re=_e;reK.shapeFlag&6?Ce(K.component.subTree):K.shapeFlag&128?K.suspense.next():f(K.anchor||K.el),ke=(K,X,fe)=>{K==null?X._vnode&&ae(X._vnode,null,null,!0):m(X._vnode||null,K,X,null,null,null,fe),fy(),X._vnode=K},Oe={p:m,um:ae,m:J,r:Ee,mt:W,mc:L,pc:U,pbc:V,n:Ce,o:e};let We,qe;return t&&([We,qe]=t(Oe)),{render:ke,hydrate:We,createApp:j_(ke,We)}}function Ss({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function If(e,t,n=!1){const o=e.children,s=t.children;if(Xe(o)&&Xe(s))for(let l=0;l>1,e[n[a]]0&&(t[o]=n[l-1]),n[l]=o)}}for(l=n.length,r=n[l-1];l-- >0;)n[l]=r,r=t[r];return n}const G_=e=>e.__isTeleport,Hr=e=>e&&(e.disabled||e.disabled===""),lm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,ld=(e,t)=>{const n=e&&e.to;return Qe(n)?t?t(n):null:n},X_={__isTeleport:!0,process(e,t,n,o,s,l,r,a,i,u){const{mc:c,pc:d,pbc:f,o:{insert:p,querySelector:h,createText:g,createComment:m}}=u,v=Hr(t.props);let{shapeFlag:y,children:w,dynamicChildren:S}=t;if(e==null){const $=t.el=g(""),k=t.anchor=g("");p($,n,o),p(k,n,o);const T=t.target=ld(t.props,h),O=t.targetAnchor=g("");T&&(p(O,T),r=r||lm(T));const L=(B,V)=>{y&16&&c(w,B,V,s,l,r,a,i)};v?L(n,k):T&&L(T,O)}else{t.el=e.el;const $=t.anchor=e.anchor,k=t.target=e.target,T=t.targetAnchor=e.targetAnchor,O=Hr(e.props),L=O?n:k,B=O?$:T;if(r=r||lm(k),S?(f(e.dynamicChildren,S,L,s,l,r,a),If(e,t,!0)):i||d(e,t,L,B,s,l,r,a,!1),v)O||Ya(t,n,$,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=ld(t.props,h);V&&Ya(t,V,null,u,0)}else O&&Ya(t,k,T,u,1)}},remove(e,t,n,o,{um:s,o:{remove:l}},r){const{shapeFlag:a,children:i,anchor:u,targetAnchor:c,target:d,props:f}=e;if(d&&l(c),(r||!Hr(f))&&(l(u),a&16))for(let p=0;p0?Ys||Ol:null,Q_(),Wi>0&&Ys&&Ys.push(e),e}function M(e,t,n,o,s,l){return Oy(D(e,t,n,o,s,l,!0))}function x(e,t,n,o,s){return Oy(Y(e,t,n,o,s,!0))}function Ft(e){return e?e.__v_isVNode===!0:!1}function Ps(e,t){return e.type===t.type&&e.key===t.key}const Eu="__vInternal",Iy=({key:e})=>e!=null?e:null,ii=({ref:e,ref_key:t,ref_for:n})=>e!=null?Qe(e)||Lt(e)||et(e)?{i:$n,r:e,k:t,f:!!n}:e:null;function D(e,t=null,n=null,o=0,s=null,l=e===Le?0:1,r=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Iy(t),ref:t&&ii(t),scopeId:my,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:o,dynamicProps:s,dynamicChildren:null,appContext:null};return a?(Lf(i,n),l&128&&e.normalize(i)):n&&(i.shapeFlag|=Qe(n)?8:16),Wi>0&&!r&&Ys&&(i.patchFlag>0||l&6)&&i.patchFlag!==32&&Ys.push(i),i}const Y=x_;function x_(e,t=null,n=null,o=0,s=null,l=!1){if((!e||e===My)&&(e=pn),Ft(e)){const a=tl(e,t,!0);return n&&Lf(a,n),a}if(cT(e)&&(e=e.__vccOpts),t){t=ds(t);let{class:a,style:i}=t;a&&!Qe(a)&&(t.class=_(a)),dt(i)&&(oy(i)&&!Xe(i)&&(i=Jt({},i)),t.style=De(i))}const r=Qe(e)?1:$_(e)?128:G_(e)?64:dt(e)?4:et(e)?2:0;return D(e,t,n,o,s,r,l,!0)}function ds(e){return e?oy(e)||Eu in e?Jt({},e):e:null}function tl(e,t,n=!1){const{props:o,ref:s,patchFlag:l,children:r}=e,a=t?Et(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Iy(a),ref:t&&t.ref?n&&s?Xe(s)?s.concat(ii(t)):[s,ii(t)]:ii(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Le?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tl(e.ssContent),ssFallback:e.ssFallback&&tl(e.ssFallback),el:e.el,anchor:e.anchor}}function it(e=" ",t=0){return Y(Ea,null,e,t)}function G(e="",t=!1){return t?(C(),x(pn,null,e)):Y(pn,null,e)}function go(e){return e==null||typeof e=="boolean"?Y(pn):Xe(e)?Y(Le,null,e.slice()):typeof e=="object"?ts(e):Y(Ea,null,String(e))}function ts(e){return e.el===null||e.memo?e:tl(e)}function Lf(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(Xe(t))n=16;else if(typeof t=="object")if(o&65){const s=t.default;s&&(s._c&&(s._d=!1),Lf(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Eu in t)?t._ctx=$n:s===3&&$n&&($n.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else et(t)?(t={default:t,_ctx:$n},n=32):(t=String(t),o&64?(n=16,t=[it(t)]):n=8);e.children=t,e.shapeFlag|=n}function Et(...e){const t={};for(let n=0;nt(r,a,void 0,l&&l[a]));else{const r=Object.keys(e);s=new Array(r.length);for(let a=0,i=r.length;aFt(t)?!(t.type===pn||t.type===Le&&!Dy(t.children)):!0)?e:null}function eT(e){const t={};for(const n in e)t[ri(n)]=e[n];return t}const rd=e=>e?Py(e)?Rf(e)||e.proxy:rd(e.parent):null,ji=Jt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rd(e.parent),$root:e=>rd(e.root),$emit:e=>e.emit,$options:e=>ky(e),$forceUpdate:e=>()=>uy(e.update),$nextTick:e=>ze.bind(e.proxy),$watch:e=>S_.bind(e)}),tT={get({_:e},t){const{ctx:n,setupState:o,data:s,props:l,accessCache:r,type:a,appContext:i}=e;let u;if(t[0]!=="$"){const p=r[t];if(p!==void 0)switch(p){case 1:return o[t];case 2:return s[t];case 4:return n[t];case 3:return l[t]}else{if(o!==Mt&&at(o,t))return r[t]=1,o[t];if(s!==Mt&&at(s,t))return r[t]=2,s[t];if((u=e.propsOptions[0])&&at(u,t))return r[t]=3,l[t];if(n!==Mt&&at(n,t))return r[t]=4,n[t];td&&(r[t]=0)}}const c=ji[t];let d,f;if(c)return t==="$attrs"&&Nn(e,"get",t),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==Mt&&at(n,t))return r[t]=4,n[t];if(f=i.config.globalProperties,at(f,t))return f[t]},set({_:e},t,n){const{data:o,setupState:s,ctx:l}=e;return s!==Mt&&at(s,t)?(s[t]=n,!0):o!==Mt&&at(o,t)?(o[t]=n,!0):at(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:s,propsOptions:l}},r){let a;return!!n[r]||e!==Mt&&at(e,r)||t!==Mt&&at(t,r)||(a=l[0])&&at(a,r)||at(o,r)||at(ji,r)||at(s.config.globalProperties,r)},defineProperty(e,t,n){return n.get!=null?this.set(e,t,n.get(),null):n.value!=null&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},nT=Ny();let oT=0;function sT(e,t,n){const o=e.type,s=(t?t.appContext:e.appContext)||nT,l={uid:oT++,vnode:e,type:o,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new jb(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ey(o,s),emitsOptions:hy(o,s),emit:null,emitted:null,propsDefaults:Mt,inheritAttrs:o.inheritAttrs,ctx:Mt,data:Mt,props:Mt,attrs:Mt,slots:Mt,refs:Mt,setupState:Mt,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return l.ctx={_:l},l.root=t?t.root:l,l.emit=g_.bind(null,l),e.ce&&e.ce(l),l}let Xt=null;const nt=()=>Xt||$n,Ul=e=>{Xt=e,e.scope.on()},Us=()=>{Xt&&Xt.scope.off(),Xt=null};function Py(e){return e.vnode.shapeFlag&4}let ta=!1;function lT(e,t=!1){ta=t;const{props:n,children:o}=e.vnode,s=Py(e);V_(e,n,s,t),z_(e,o);const l=s?rT(e,t):void 0;return ta=!1,l}function rT(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Jr(new Proxy(e.ctx,tT));const{setup:o}=n;if(o){const s=e.setupContext=o.length>1?Ry(e):null;Ul(e),il();const l=Do(o,e,0,[e.props,s]);if(ul(),Us(),el(l)){if(l.then(Us,Us),t)return l.then(r=>{im(e,r,t)}).catch(r=>{$u(r,e,0)});e.asyncDep=l}else im(e,l,t)}else Ly(e,t)}function im(e,t,n){et(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:dt(t)&&(e.setupState=ry(t)),Ly(e,n)}let um;function Ly(e,t,n){const o=e.type;if(!e.render){if(!t&&um&&!o.render){const s=o.template;if(s){const{isCustomElement:l,compilerOptions:r}=e.appContext.config,{delimiters:a,compilerOptions:i}=o,u=Jt(Jt({isCustomElement:l,delimiters:a},r),i);o.render=um(s,u)}}e.render=o.render||wt}Ul(e),il(),D_(e),ul(),Us()}function aT(e){return new Proxy(e.attrs,{get(t,n){return Nn(e,"get","$attrs"),t[n]}})}function Ry(e){const t=o=>{e.exposed=o||{}};let n;return{get attrs(){return n||(n=aT(e))},slots:e.slots,emit:e.emit,expose:t}}function Rf(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ry(Jr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ji)return ji[n](e)}}))}const iT=/(?:^|[-_])(\w)/g,uT=e=>e.replace(iT,t=>t.toUpperCase()).replace(/[-_]/g,"");function By(e){return et(e)&&e.displayName||e.name}function Vy(e,t,n=!1){let o=By(t);if(!o&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(o=s[1])}if(!o&&e&&e.parent){const s=l=>{for(const r in l)if(l[r]===t)return r};o=s(e.components||e.parent.type.components)||s(e.appContext.components)}return o?uT(o):n?"App":"Anonymous"}function cT(e){return et(e)&&"__vccOpts"in e}const E=(e,t)=>r_(e,t,ta);function _a(){return Hy().slots}function Fy(){return Hy().attrs}function Hy(){const e=nt();return e.setupContext||(e.setupContext=Ry(e))}function Pe(e,t,n){const o=arguments.length;return o===2?dt(t)&&!Xe(t)?Ft(t)?Y(e,null,[t]):Y(e,t):Y(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&Ft(n)&&(n=[n]),Y(e,t,n))}const dT="3.2.31",fT="http://www.w3.org/2000/svg",Ls=typeof document!="undefined"?document:null,cm=Ls&&Ls.createElement("template"),pT={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const s=t?Ls.createElementNS(fT,e):Ls.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&s.setAttribute("multiple",o.multiple),s},createText:e=>Ls.createTextNode(e),createComment:e=>Ls.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ls.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,o,s,l){const r=n?n.previousSibling:t.lastChild;if(s&&(s===l||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===l||!(s=s.nextSibling)););else{cm.innerHTML=o?`${e}`:e;const a=cm.content;if(o){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function hT(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function mT(e,t,n){const o=e.style,s=Qe(n);if(n&&!s){for(const l in n)ad(o,l,n[l]);if(t&&!Qe(t))for(const l in t)n[l]==null&&ad(o,l,"")}else{const l=o.display;s?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=l)}}const dm=/\s*!important$/;function ad(e,t,n){if(Xe(n))n.forEach(o=>ad(e,t,o));else if(t.startsWith("--"))e.setProperty(t,n);else{const o=vT(e,t);dm.test(n)?e.setProperty(vs(o),n.replace(dm,""),"important"):e[o]=n}}const fm=["Webkit","Moz","ms"],rc={};function vT(e,t){const n=rc[t];if(n)return n;let o=Wn(t);if(o!=="filter"&&o in e)return rc[t]=o;o=yn(o);for(let s=0;sdocument.createEvent("Event").timeStamp&&(Yi=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);zy=!!(e&&Number(e[1])<=53)}let id=0;const yT=Promise.resolve(),wT=()=>{id=0},CT=()=>id||(yT.then(wT),id=Yi());function ns(e,t,n,o){e.addEventListener(t,n,o)}function $T(e,t,n,o){e.removeEventListener(t,n,o)}function kT(e,t,n,o,s=null){const l=e._vei||(e._vei={}),r=l[t];if(o&&r)r.value=o;else{const[a,i]=ST(t);if(o){const u=l[t]=ET(o,s);ns(e,a,u,i)}else r&&($T(e,a,r,i),l[t]=void 0)}}const hm=/(?:Once|Passive|Capture)$/;function ST(e){let t;if(hm.test(e)){t={};let n;for(;n=e.match(hm);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[vs(e.slice(2)),t]}function ET(e,t){const n=o=>{const s=o.timeStamp||Yi();(zy||s>=n.attached-1)&&Hn(_T(o,n.value),t,5,[o])};return n.value=e,n.attached=CT(),n}function _T(e,t){if(Xe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>s=>!s._stopped&&o&&o(s))}else return t}const mm=/^on[a-z]/,TT=(e,t,n,o,s=!1,l,r,a,i)=>{t==="class"?hT(e,o,s):t==="style"?mT(e,n,o):bu(t)?hf(t)||kT(e,t,n,o,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):AT(e,t,o,s))?bT(e,t,o,l,r,a,i):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),gT(e,t,o,s))};function AT(e,t,n,o){return o?!!(t==="innerHTML"||t==="textContent"||t in e&&mm.test(t)&&et(n)):t==="spellcheck"||t==="draggable"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||mm.test(t)&&Qe(n)?!1:t in e}const Jo="transition",$r="animation",zt=(e,{slots:t})=>Pe(by,Wy(e),t);zt.displayName="Transition";const Ky={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},NT=zt.props=Jt({},by.props,Ky),Es=(e,t=[])=>{Xe(e)?e.forEach(n=>n(...t)):e&&e(...t)},vm=e=>e?Xe(e)?e.some(t=>t.length>1):e.length>1:!1;function Wy(e){const t={};for(const H in e)H in Ky||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:o,duration:s,enterFromClass:l=`${n}-enter-from`,enterActiveClass:r=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=l,appearActiveClass:u=r,appearToClass:c=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=MT(s),g=h&&h[0],m=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:w,onLeave:S,onLeaveCancelled:$,onBeforeAppear:k=v,onAppear:T=y,onAppearCancelled:O=w}=t,L=(H,R,z)=>{Ms(H,R?c:a),Ms(H,R?u:r),z&&z()},B=(H,R)=>{Ms(H,p),Ms(H,f),R&&R()},V=H=>(R,z)=>{const W=H?T:y,P=()=>L(R,H,z);Es(W,[R,P]),gm(()=>{Ms(R,H?i:l),No(R,H?c:a),vm(W)||bm(R,o,g,P)})};return Jt(t,{onBeforeEnter(H){Es(v,[H]),No(H,l),No(H,r)},onBeforeAppear(H){Es(k,[H]),No(H,i),No(H,u)},onEnter:V(!1),onAppear:V(!0),onLeave(H,R){const z=()=>B(H,R);No(H,d),Yy(),No(H,f),gm(()=>{Ms(H,d),No(H,p),vm(S)||bm(H,o,m,z)}),Es(S,[H,z])},onEnterCancelled(H){L(H,!1),Es(w,[H])},onAppearCancelled(H){L(H,!0),Es(O,[H])},onLeaveCancelled(H){B(H),Es($,[H])}})}function MT(e){if(e==null)return null;if(dt(e))return[ac(e.enter),ac(e.leave)];{const t=ac(e);return[t,t]}}function ac(e){return Fi(e)}function No(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ms(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function gm(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let OT=0;function bm(e,t,n,o){const s=e._endId=++OT,l=()=>{s===e._endId&&o()};if(n)return setTimeout(l,n);const{type:r,timeout:a,propCount:i}=jy(e,t);if(!r)return o();const u=r+"end";let c=0;const d=()=>{e.removeEventListener(u,f),l()},f=p=>{p.target===e&&++c>=i&&d()};setTimeout(()=>{c(n[h]||"").split(", "),s=o(Jo+"Delay"),l=o(Jo+"Duration"),r=ym(s,l),a=o($r+"Delay"),i=o($r+"Duration"),u=ym(a,i);let c=null,d=0,f=0;t===Jo?r>0&&(c=Jo,d=r,f=l.length):t===$r?u>0&&(c=$r,d=u,f=i.length):(d=Math.max(r,u),c=d>0?r>u?Jo:$r:null,f=c?c===Jo?l.length:i.length:0);const p=c===Jo&&/\b(transform|all)(,|$)/.test(n[Jo+"Property"]);return{type:c,timeout:d,propCount:f,hasTransform:p}}function ym(e,t){for(;e.lengthwm(n)+wm(e[o])))}function wm(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Yy(){return document.body.offsetHeight}const Uy=new WeakMap,qy=new WeakMap,IT={name:"TransitionGroup",props:Jt({},NT,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=nt(),o=gy();let s,l;return Xn(()=>{if(!s.length)return;const r=e.moveClass||`${e.name||"v"}-move`;if(!BT(s[0].el,n.vnode.el,r))return;s.forEach(PT),s.forEach(LT);const a=s.filter(RT);Yy(),a.forEach(i=>{const u=i.el,c=u.style;No(u,r),c.transform=c.webkitTransform=c.transitionDuration="";const d=u._moveCb=f=>{f&&f.target!==u||(!f||/transform$/.test(f.propertyName))&&(u.removeEventListener("transitionend",d),u._moveCb=null,Ms(u,r))};u.addEventListener("transitionend",d)})}),()=>{const r=$t(e),a=Wy(r);let i=r.tag||Le;s=l,l=t.default?Mf(t.default()):[];for(let u=0;u{r.split(/\s+/).forEach(a=>a&&o.classList.remove(a))}),n.split(/\s+/).forEach(r=>r&&o.classList.add(r)),o.style.display="none";const s=t.nodeType===1?t:t.parentNode;s.appendChild(o);const{hasTransform:l}=jy(o);return s.removeChild(o),l}const ql=e=>{const t=e.props["onUpdate:modelValue"];return Xe(t)?n=>ai(t,n):t};function VT(e){e.target.composing=!0}function Cm(e){const t=e.target;t.composing&&(t.composing=!1,FT(t,"input"))}function FT(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}const Bf={created(e,{modifiers:{lazy:t,trim:n,number:o}},s){e._assign=ql(s);const l=o||s.props&&s.props.type==="number";ns(e,t?"change":"input",r=>{if(r.target.composing)return;let a=e.value;n?a=a.trim():l&&(a=Fi(a)),e._assign(a)}),n&&ns(e,"change",()=>{e.value=e.value.trim()}),t||(ns(e,"compositionstart",VT),ns(e,"compositionend",Cm),ns(e,"change",Cm))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:s}},l){if(e._assign=ql(l),e.composing||document.activeElement===e&&(n||o&&e.value.trim()===t||(s||e.type==="number")&&Fi(e.value)===t))return;const r=t==null?"":t;e.value!==r&&(e.value=r)}},Ui={deep:!0,created(e,t,n){e._assign=ql(n),ns(e,"change",()=>{const o=e._modelValue,s=Xy(e),l=e.checked,r=e._assign;if(Xe(o)){const a=Hb(o,s),i=a!==-1;if(l&&!i)r(o.concat(s));else if(!l&&i){const u=[...o];u.splice(a,1),r(u)}}else if(yu(o)){const a=new Set(o);l?a.add(s):a.delete(s),r(a)}else r(Jy(e,l))})},mounted:$m,beforeUpdate(e,t,n){e._assign=ql(n),$m(e,t,n)}};function $m(e,{value:t,oldValue:n},o){e._modelValue=t,Xe(t)?e.checked=Hb(t,o.props.value)>-1:yu(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=Yl(t,Jy(e,!0)))}const Gy={created(e,{value:t},n){e.checked=Yl(t,n.props.value),e._assign=ql(n),ns(e,"change",()=>{e._assign(Xy(e))})},beforeUpdate(e,{value:t,oldValue:n},o){e._assign=ql(o),t!==n&&(e.checked=Yl(t,o.props.value))}};function Xy(e){return"_value"in e?e._value:e.value}function Jy(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const HT=["ctrl","shift","alt","meta"],zT={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>HT.some(n=>e[`${n}Key`]&&!t.includes(n))},Ke=(e,t)=>(n,...o)=>{for(let s=0;sn=>{if(!("key"in n))return;const o=vs(n.key);if(t.some(s=>s===o||KT[s]===o))return e(n)},pt={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):kr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),kr(e,!0),o.enter(e)):o.leave(e,()=>{kr(e,!1)}):kr(e,t))},beforeUnmount(e,{value:t}){kr(e,t)}};function kr(e,t){e.style.display=t?e._vod:"none"}const WT=Jt({patchProp:TT},pT);let km;function Zy(){return km||(km=Y_(WT))}const Gl=(...e)=>{Zy().render(...e)},Qy=(...e)=>{const t=Zy().createApp(...e),{mount:n}=t;return t.mount=o=>{const s=jT(o);if(!s)return;const l=t._component;!et(l)&&!l.render&&!l.template&&(l.template=s.innerHTML),s.innerHTML="";const r=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),r},t};function jT(e){return Qe(e)?document.querySelector(e):e}var YT=typeof global=="object"&&global&&global.Object===Object&&global,xy=YT,UT=typeof self=="object"&&self&&self.Object===Object&&self,qT=xy||UT||Function("return this")(),co=qT,GT=co.Symbol,jn=GT,e0=Object.prototype,XT=e0.hasOwnProperty,JT=e0.toString,Sr=jn?jn.toStringTag:void 0;function ZT(e){var t=XT.call(e,Sr),n=e[Sr];try{e[Sr]=void 0;var o=!0}catch{}var s=JT.call(e);return o&&(t?e[Sr]=n:delete e[Sr]),s}var QT=Object.prototype,xT=QT.toString;function eA(e){return xT.call(e)}var tA="[object Null]",nA="[object Undefined]",Sm=jn?jn.toStringTag:void 0;function rr(e){return e==null?e===void 0?nA:tA:Sm&&Sm in Object(e)?ZT(e):eA(e)}function Vo(e){return e!=null&&typeof e=="object"}var oA="[object Symbol]";function _u(e){return typeof e=="symbol"||Vo(e)&&rr(e)==oA}function sA(e,t){for(var n=-1,o=e==null?0:e.length,s=Array(o);++n0){if(++t>=VA)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function KA(e){return function(){return e}}var WA=function(){try{var e=dl(Object,"defineProperty");return e({},"",{}),e}catch{}}(),qi=WA,jA=qi?function(e,t){return qi(e,"toString",{configurable:!0,enumerable:!1,value:KA(t),writable:!0})}:n0,YA=jA,UA=zA(YA),s0=UA;function qA(e,t){for(var n=-1,o=e==null?0:e.length;++n-1}var xA=9007199254740991,eN=/^(?:0|[1-9]\d*)$/;function Vf(e,t){var n=typeof e;return t=t==null?xA:t,!!t&&(n=="number"||n!="symbol"&&eN.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=sN}function Kf(e){return e!=null&&zf(e.length)&&!o0(e)}var lN=Object.prototype;function Wf(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||lN;return e===n}function rN(e,t){for(var n=-1,o=Array(e);++n-1}function CM(e,t){var n=this.__data__,o=Au(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Ko(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?Iu(a,t-1,n,o,s):Xf(s,a):o||(s[s.length]=a)}return s}function FM(e){var t=e==null?0:e.length;return t?Iu(e,1):[]}function HM(e){return s0(r0(e,void 0,FM),e+"")}var zM=f0(Object.getPrototypeOf,Object),h0=zM;function sa(){if(!arguments.length)return[];var e=arguments[0];return so(e)?e:[e]}function KM(){this.__data__=new Ko,this.size=0}function WM(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function jM(e){return this.__data__.get(e)}function YM(e){return this.__data__.has(e)}var UM=200;function qM(e,t){var n=this.__data__;if(n instanceof Ko){var o=n.__data__;if(!oa||o.lengtha))return!1;var u=l.get(e),c=l.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,p=n&D3?new ra:void 0;for(l.set(e,t),l.set(t,e);++d=t||T<0||d&&O>=l}function v(){var k=dc();if(m(k))return y(k);a=setTimeout(v,g(k))}function y(k){return a=void 0,f&&o?p(k):(o=s=void 0,r)}function w(){a!==void 0&&clearTimeout(a),u=0,o=i=s=a=void 0}function S(){return a===void 0?r:y(dc())}function $(){var k=dc(),T=m(k);if(o=arguments,s=this,i=k,T){if(a===void 0)return h(i);if(d)return clearTimeout(a),a=setTimeout(v,t),p(i)}return a===void 0&&(a=setTimeout(v,t)),r}return $.cancel=w,$.flush=S,$}function uI(e){return Vo(e)&&Kf(e)}function cI(e,t,n){for(var o=-1,s=e==null?0:e.length;++o=CI){var u=t?null:wI(e);if(u)return Qf(u);r=!1,s=$0,i=new ra}else i=t?[]:a;e:for(;++ogetComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,ev=e=>Array.from(e.querySelectorAll(SI)).filter(t=>_I(t)&&EI(t)),_I=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ci=function(e,t,...n){let o;t.includes("mouse")||t.includes("click")?o="MouseEvents":t.includes("key")?o="KeyboardEvent":o="HTMLEvents";const s=document.createEvent(o);return s.initEvent(t,...n),e.dispatchEvent(s),e},T0=e=>!e.getAttribute("aria-owns"),A0=(e,t,n)=>{const{parentNode:o}=e;if(!o)return null;const s=o.querySelectorAll(n),l=Array.prototype.indexOf.call(s,e);return s[l+t]||null},di=e=>{!e||(e.focus(),!T0(e)&&e.click())},Tt=(e,t,n,o=!1)=>{e&&t&&n&&(e==null||e.addEventListener(t,n,o))},Vt=(e,t,n,o=!1)=>{e&&t&&n&&(e==null||e.removeEventListener(t,n,o))},TI=(e,t,n)=>{const o=function(...s){n&&n.apply(this,s),Vt(e,t,o)};Tt(e,t,o)},Dt=(e,t,{checkForDefaultPrevented:n=!0}={})=>s=>{const l=e==null?void 0:e(s);if(n===!1||!l)return t==null?void 0:t(s)},tv=e=>t=>t.pointerType==="mouse"?e(t):void 0;var AI=Object.defineProperty,NI=Object.defineProperties,MI=Object.getOwnPropertyDescriptors,nv=Object.getOwnPropertySymbols,OI=Object.prototype.hasOwnProperty,II=Object.prototype.propertyIsEnumerable,ov=(e,t,n)=>t in e?AI(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,DI=(e,t)=>{for(var n in t||(t={}))OI.call(t,n)&&ov(e,n,t[n]);if(nv)for(var n of nv(t))II.call(t,n)&&ov(e,n,t[n]);return e},PI=(e,t)=>NI(e,MI(t));function sv(e,t){var n;const o=jt();return zn(()=>{o.value=e()},PI(DI({},t),{flush:(n=t==null?void 0:t.flush)!=null?n:"sync"})),Ca(o)}function Du(e){return NE()?(Yb(e),!0):!1}const ct=typeof window!="undefined",en=e=>typeof e=="boolean",ht=e=>typeof e=="number",LI=e=>typeof e=="string",pc=()=>{};function N0(e,t){function n(...o){e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})}return n}function RI(e,t={}){let n,o;return l=>{const r=b(e),a=b(t.maxWait);if(n&&clearTimeout(n),r<=0||a!==void 0&&a<=0)return o&&(clearTimeout(o),o=null),l();a&&!o&&(o=setTimeout(()=>{n&&clearTimeout(n),o=null,l()},a)),n=setTimeout(()=>{o&&clearTimeout(o),o=null,l()},r)}}function BI(e,t=!0,n=!0){let o=0,s,l=!n;const r=()=>{s&&(clearTimeout(s),s=void 0)};return i=>{const u=b(e),c=Date.now()-o;if(r(),u<=0)return o=Date.now(),i();c>u&&(o=Date.now(),l?l=!1:i()),t&&(s=setTimeout(()=>{o=Date.now(),n||(l=!0),r(),i()},u)),!n&&!s&&(s=setTimeout(()=>l=!0,u))}}function VI(e,t=200,n={}){return N0(RI(t,n),e)}function FI(e,t=200,n={}){if(t<=0)return e;const o=A(e.value),s=VI(()=>{o.value=e.value},t,n);return pe(e,()=>s()),o}function M0(e,t=200,n=!0,o=!0){return N0(BI(t,n,o),e)}function HI(e,t=!0){nt()?xe(e):t?e():ze(e)}function ol(e,t,n={}){const{immediate:o=!0}=n,s=A(!1);let l=null;function r(){l&&(clearTimeout(l),l=null)}function a(){s.value=!1,r()}function i(...u){r(),s.value=!0,l=setTimeout(()=>{s.value=!1,l=null,e(...u)},b(t))}return o&&(s.value=!0,ct&&i()),Du(a),{isPending:s,start:i,stop:a}}function no(e){var t;const n=b(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Ta=ct?window:void 0,zI=ct?window.document:void 0;function Ht(...e){let t,n,o,s;if(LI(e[0])?([n,o,s]=e,t=Ta):[t,n,o,s]=e,!t)return pc;let l=pc;const r=pe(()=>no(t),i=>{l(),i&&(i.addEventListener(n,o,s),l=()=>{i.removeEventListener(n,o,s),l=pc})},{immediate:!0,flush:"post"}),a=()=>{r(),l()};return Du(a),a}function Ji(e,t,n={}){const{window:o=Ta,ignore:s,capture:l=!0}=n;if(!o)return;const r=A(!0),i=[Ht(o,"click",c=>{const d=no(e),f=c.composedPath();!d||d===c.target||f.includes(d)||!r.value||s&&s.length>0&&s.some(p=>{const h=no(p);return h&&(c.target===h||f.includes(h))})||t(c)},{passive:!0,capture:l}),Ht(o,"pointerdown",c=>{const d=no(e);r.value=!!d&&!c.composedPath().includes(d)},{passive:!0})];return()=>i.forEach(c=>c())}const pd=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},hd="__vueuse_ssr_handlers__";pd[hd]=pd[hd]||{};pd[hd];function KI({document:e=zI}={}){if(!e)return A("visible");const t=A(e.visibilityState);return Ht(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var lv=Object.getOwnPropertySymbols,WI=Object.prototype.hasOwnProperty,jI=Object.prototype.propertyIsEnumerable,YI=(e,t)=>{var n={};for(var o in e)WI.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&lv)for(var o of lv(e))t.indexOf(o)<0&&jI.call(e,o)&&(n[o]=e[o]);return n};function ar(e,t,n={}){const o=n,{window:s=Ta}=o,l=YI(o,["window"]);let r;const a=s&&"ResizeObserver"in s,i=()=>{r&&(r.disconnect(),r=void 0)},u=pe(()=>no(e),d=>{i(),a&&s&&d&&(r=new ResizeObserver(t),r.observe(d,l))},{immediate:!0,flush:"post"}),c=()=>{i(),u()};return Du(c),{isSupported:a,stop:c}}function rv(e,t={}){const{reset:n=!0,windowResize:o=!0,windowScroll:s=!0}=t,l=A(0),r=A(0),a=A(0),i=A(0),u=A(0),c=A(0),d=A(0),f=A(0);function p(){const h=no(e);if(!h){n&&(l.value=0,r.value=0,a.value=0,i.value=0,u.value=0,c.value=0,d.value=0,f.value=0);return}const g=h.getBoundingClientRect();l.value=g.height,r.value=g.bottom,a.value=g.left,i.value=g.right,u.value=g.top,c.value=g.width,d.value=g.x,f.value=g.y}return ar(e,p),pe(()=>no(e),h=>!h&&p()),s&&Ht("scroll",p,{passive:!0}),o&&Ht("resize",p,{passive:!0}),{height:l,bottom:r,left:a,right:i,top:u,width:c,x:d,y:f,update:p}}var av,iv;ct&&(window==null?void 0:window.navigator)&&((av=window==null?void 0:window.navigator)==null?void 0:av.platform)&&/iP(ad|hone|od)/.test((iv=window==null?void 0:window.navigator)==null?void 0:iv.platform);function UI({window:e=Ta}={}){if(!e)return A(!1);const t=A(e.document.hasFocus());return Ht(e,"blur",()=>{t.value=!1}),Ht(e,"focus",()=>{t.value=!0}),t}function qI({window:e=Ta,initialWidth:t=1/0,initialHeight:n=1/0}={}){const o=A(t),s=A(n),l=()=>{e&&(o.value=e.innerWidth,s.value=e.innerHeight)};return l(),HI(l),Ht("resize",l,{passive:!0}),{width:o,height:s}}const GI=(e,t)=>{if(!ct||!e||!t)return!1;const n=e.getBoundingClientRect();let o;return t instanceof Element?o=t.getBoundingClientRect():o={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},n.topo.top&&n.right>o.left&&n.left{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},XI=(e,t)=>Math.abs(uv(e)-uv(t)),ep=e=>{let t,n;return e.type==="touchend"?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},JI=function(e){for(const t of e){const n=t.target.__resizeListeners__||[];n.length&&n.forEach(o=>{o()})}},ir=function(e,t){!ct||!e||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new ResizeObserver(JI),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},ur=function(e,t){var n;!e||!e.__resizeListeners__||(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||(n=e.__ro__)==null||n.disconnect())},Cn=e=>e===void 0,aa=e=>!e&&e!==0||Xe(e)&&e.length===0||dt(e)&&!Object.keys(e).length,sl=e=>typeof Element=="undefined"?!1:e instanceof Element,ZI=e=>xf(e),QI=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),md=e=>Object.keys(e),xI=e=>Object.entries(e),fi=(e,t,n)=>({get value(){return It(e,t,n)},set value(o){vI(e,t,o)}}),O0=(e="")=>e.split(" ").filter(t=>!!t.trim()),oo=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},wo=(e,t)=>{!e||!t.trim()||e.classList.add(...O0(t))},fn=(e,t)=>{!e||!t.trim()||e.classList.remove(...O0(t))},bo=(e,t)=>{var n;if(!ct||!e||!t)return"";Wn(t);try{const o=e.style[t];if(o)return o;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[t]:""}catch{return e.style[t]}},e4=(e,t)=>{if(!ct)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],o=bo(e,n);return["scroll","auto","overlay"].some(s=>o.includes(s))},tp=(e,t)=>{if(!ct)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(e4(n,t))return n;n=n.parentNode}return n};let qa;const t4=()=>{var e;if(!ct)return 0;if(qa!==void 0)return qa;const t=document.createElement("div");t.className="el-scrollbar__wrap",t.style.visibility="hidden",t.style.width="100px",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t);const n=t.offsetWidth;t.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",t.appendChild(o);const s=o.offsetWidth;return(e=t.parentNode)==null||e.removeChild(t),qa=n-s,qa};function I0(e,t){if(!ct)return;if(!t){e.scrollTop=0;return}const n=[];let o=t.offsetParent;for(;o!==null&&e!==o&&e.contains(o);)n.push(o),o=o.offsetParent;const s=t.offsetTop+n.reduce((i,u)=>i+u.offsetTop,0),l=s+t.offsetHeight,r=e.scrollTop,a=r+e.clientHeight;sa&&(e.scrollTop=l-e.clientHeight)}var gt=(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n};const n4=te({name:"ArrowDown"}),o4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},s4=D("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"},null,-1),l4=[s4];function r4(e,t,n,o,s,l){return C(),M("svg",o4,l4)}var fl=gt(n4,[["render",r4]]);const a4=te({name:"ArrowLeft"}),i4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},u4=D("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"},null,-1),c4=[u4];function d4(e,t,n,o,s,l){return C(),M("svg",i4,c4)}var pl=gt(a4,[["render",d4]]);const f4=te({name:"ArrowRight"}),p4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},h4=D("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"},null,-1),m4=[h4];function v4(e,t,n,o,s,l){return C(),M("svg",p4,m4)}var Jn=gt(f4,[["render",v4]]);const g4=te({name:"ArrowUp"}),b4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},y4=D("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z"},null,-1),w4=[y4];function C4(e,t,n,o,s,l){return C(),M("svg",b4,w4)}var Aa=gt(g4,[["render",C4]]);const $4=te({name:"Back"}),k4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},S4=D("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64z"},null,-1),E4=D("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312L237.248 512z"},null,-1),_4=[S4,E4];function T4(e,t,n,o,s,l){return C(),M("svg",k4,_4)}var A4=gt($4,[["render",T4]]);const N4=te({name:"Calendar"}),M4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},O4=D("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z"},null,-1),I4=[O4];function D4(e,t,n,o,s,l){return C(),M("svg",M4,I4)}var P4=gt(N4,[["render",D4]]);const L4=te({name:"CaretRight"}),R4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},B4=D("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"},null,-1),V4=[B4];function F4(e,t,n,o,s,l){return C(),M("svg",R4,V4)}var D0=gt(L4,[["render",F4]]);const H4=te({name:"CaretTop"}),z4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},K4=D("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"},null,-1),W4=[K4];function j4(e,t,n,o,s,l){return C(),M("svg",z4,W4)}var Y4=gt(H4,[["render",j4]]);const U4=te({name:"Check"}),q4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},G4=D("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1),X4=[G4];function J4(e,t,n,o,s,l){return C(),M("svg",q4,X4)}var Jl=gt(U4,[["render",J4]]);const Z4=te({name:"CircleCheckFilled"}),Q4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},x4=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),eD=[x4];function tD(e,t,n,o,s,l){return C(),M("svg",Q4,eD)}var nD=gt(Z4,[["render",tD]]);const oD=te({name:"CircleCheck"}),sD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},lD=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),rD=D("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"},null,-1),aD=[lD,rD];function iD(e,t,n,o,s,l){return C(),M("svg",sD,aD)}var Zi=gt(oD,[["render",iD]]);const uD=te({name:"CircleCloseFilled"}),cD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},dD=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z"},null,-1),fD=[dD];function pD(e,t,n,o,s,l){return C(),M("svg",cD,fD)}var np=gt(uD,[["render",pD]]);const hD=te({name:"CircleClose"}),mD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},vD=D("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z"},null,-1),gD=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),bD=[vD,gD];function yD(e,t,n,o,s,l){return C(),M("svg",mD,bD)}var Fo=gt(hD,[["render",yD]]);const wD=te({name:"Clock"}),CD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},$D=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),kD=D("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z"},null,-1),SD=D("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z"},null,-1),ED=[$D,kD,SD];function _D(e,t,n,o,s,l){return C(),M("svg",CD,ED)}var P0=gt(wD,[["render",_D]]);const TD=te({name:"Close"}),AD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ND=D("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),MD=[ND];function OD(e,t,n,o,s,l){return C(),M("svg",AD,MD)}var Yn=gt(TD,[["render",OD]]);const ID=te({name:"DArrowLeft"}),DD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},PD=D("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"},null,-1),LD=[PD];function RD(e,t,n,o,s,l){return C(),M("svg",DD,LD)}var Pu=gt(ID,[["render",RD]]);const BD=te({name:"DArrowRight"}),VD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},FD=D("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"},null,-1),HD=[FD];function zD(e,t,n,o,s,l){return C(),M("svg",VD,HD)}var Lu=gt(BD,[["render",zD]]);const KD=te({name:"Delete"}),WD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},jD=D("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"},null,-1),YD=[jD];function UD(e,t,n,o,s,l){return C(),M("svg",WD,YD)}var qD=gt(KD,[["render",UD]]);const GD=te({name:"Document"}),XD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},JD=D("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1),ZD=[JD];function QD(e,t,n,o,s,l){return C(),M("svg",XD,ZD)}var xD=gt(GD,[["render",QD]]);const eP=te({name:"FullScreen"}),tP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},nP=D("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z"},null,-1),oP=[nP];function sP(e,t,n,o,s,l){return C(),M("svg",tP,oP)}var lP=gt(eP,[["render",sP]]);const rP=te({name:"Hide"}),aP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},iP=D("path",{d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z",fill:"currentColor"},null,-1),uP=D("path",{d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z",fill:"currentColor"},null,-1),cP=[iP,uP];function dP(e,t,n,o,s,l){return C(),M("svg",aP,cP)}var fP=gt(rP,[["render",dP]]);const pP=te({name:"InfoFilled"}),hP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},mP=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"},null,-1),vP=[mP];function gP(e,t,n,o,s,l){return C(),M("svg",hP,vP)}var op=gt(pP,[["render",gP]]);const bP=te({name:"Loading"}),yP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},wP=D("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"},null,-1),CP=[wP];function $P(e,t,n,o,s,l){return C(),M("svg",yP,CP)}var gs=gt(bP,[["render",$P]]);const kP=te({name:"Minus"}),SP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},EP=D("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z"},null,-1),_P=[EP];function TP(e,t,n,o,s,l){return C(),M("svg",SP,_P)}var AP=gt(kP,[["render",TP]]);const NP=te({name:"MoreFilled"}),MP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},OP=D("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z"},null,-1),IP=[OP];function DP(e,t,n,o,s,l){return C(),M("svg",MP,IP)}var PP=gt(NP,[["render",DP]]);const LP=te({name:"More"}),RP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},BP=D("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96z"},null,-1),VP=[BP];function FP(e,t,n,o,s,l){return C(),M("svg",RP,VP)}var HP=gt(LP,[["render",FP]]);const zP=te({name:"PictureFilled"}),KP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},WP=D("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H96zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112zM256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384z"},null,-1),jP=[WP];function YP(e,t,n,o,s,l){return C(),M("svg",KP,jP)}var UP=gt(zP,[["render",YP]]);const qP=te({name:"Plus"}),GP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},XP=D("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"},null,-1),JP=[XP];function ZP(e,t,n,o,s,l){return C(),M("svg",GP,JP)}var L0=gt(qP,[["render",ZP]]);const QP=te({name:"QuestionFilled"}),xP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},eL=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"},null,-1),tL=[eL];function nL(e,t,n,o,s,l){return C(),M("svg",xP,tL)}var oL=gt(QP,[["render",nL]]);const sL=te({name:"RefreshLeft"}),lL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},rL=D("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"},null,-1),aL=[rL];function iL(e,t,n,o,s,l){return C(),M("svg",lL,aL)}var uL=gt(sL,[["render",iL]]);const cL=te({name:"RefreshRight"}),dL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},fL=D("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"},null,-1),pL=[fL];function hL(e,t,n,o,s,l){return C(),M("svg",dL,pL)}var mL=gt(cL,[["render",hL]]);const vL=te({name:"ScaleToOriginal"}),gL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},bL=D("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z"},null,-1),yL=[bL];function wL(e,t,n,o,s,l){return C(),M("svg",gL,yL)}var CL=gt(vL,[["render",wL]]);const $L=te({name:"Search"}),kL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},SL=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704z"},null,-1),EL=[SL];function _L(e,t,n,o,s,l){return C(),M("svg",kL,EL)}var TL=gt($L,[["render",_L]]);const AL=te({name:"StarFilled"}),NL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ML=D("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"},null,-1),OL=[ML];function IL(e,t,n,o,s,l){return C(),M("svg",NL,OL)}var Ga=gt(AL,[["render",IL]]);const DL=te({name:"Star"}),PL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},LL=D("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"},null,-1),RL=[LL];function BL(e,t,n,o,s,l){return C(),M("svg",PL,RL)}var VL=gt(DL,[["render",BL]]);const FL=te({name:"SuccessFilled"}),HL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},zL=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),KL=[zL];function WL(e,t,n,o,s,l){return C(),M("svg",HL,KL)}var R0=gt(FL,[["render",WL]]);const jL=te({name:"View"}),YL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},UL=D("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z"},null,-1),qL=[UL];function GL(e,t,n,o,s,l){return C(),M("svg",YL,qL)}var XL=gt(jL,[["render",GL]]);const JL=te({name:"WarningFilled"}),ZL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},QL=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z"},null,-1),xL=[QL];function e8(e,t,n,o,s,l){return C(),M("svg",ZL,xL)}var ia=gt(JL,[["render",e8]]);const t8=te({name:"ZoomIn"}),n8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},o8=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z"},null,-1),s8=[o8];function l8(e,t,n,o,s,l){return C(),M("svg",n8,s8)}var B0=gt(t8,[["render",l8]]);const r8=te({name:"ZoomOut"}),a8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i8=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z"},null,-1),u8=[i8];function c8(e,t,n,o,s,l){return C(),M("svg",a8,u8)}var d8=gt(r8,[["render",c8]]);const vd=Symbol(),cv="__elPropsReservedKey";function fo(e,t){if(!dt(e)||!!e[cv])return e;const{values:n,required:o,default:s,type:l,validator:r}=e,a=n||r?u=>{let c=!1,d=[];if(n&&(d=Array.from(n),at(e,"default")&&d.push(s),c||(c=d.includes(u))),r&&(c||(c=r(u))),!c&&d.length>0){const f=[...new Set(d)].map(p=>JSON.stringify(p)).join(", ");a_(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${f}], got value ${JSON.stringify(u)}.`)}return c}:void 0,i={type:dt(l)&&Object.getOwnPropertySymbols(l).includes(vd)?l[vd]:l,required:!!o,validator:a,[cv]:!0};return at(e,"default")&&(i.default=s),i}const Ve=e=>E0(Object.entries(e).map(([t,n])=>[t,fo(n,t)])),$e=e=>({[vd]:e}),nn=$e([String,Object,Function]),f8={Close:Yn},Ru={Close:Yn,SuccessFilled:R0,InfoFilled:op,WarningFilled:ia,CircleCloseFilled:np},Ho={success:R0,warning:ia,error:np,info:op},V0={validating:gs,success:Zi,error:Fo},ot=(e,t)=>{if(e.install=n=>{for(const o of[e,...Object.values(t!=null?t:{})])n.component(o.name,o)},t)for(const[n,o]of Object.entries(t))e[n]=o;return e},F0=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rt=e=>(e.install=wt,e),sp=(...e)=>t=>{e.forEach(n=>{et(n)?n(t):n.value=t})};class p8 extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function Kt(e,t){throw new p8(`[${e}] ${t}`)}function ro(e,t="px"){if(!e)return"";if(Qe(e))return e;if(ht(e))return`${e}${t}`}const Ie={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},h8=["year","month","date","dates","week","datetime","datetimerange","daterange","monthrange"],hc=["sun","mon","tue","wed","thu","fri","sat"],tt="update:modelValue",qt="change",ps="input",Eo=["","default","small","large"],m8={large:40,default:32,small:24},H0=(e="default")=>m8[e||"default"],On=e=>["",...Eo].includes(e),z0=e=>[...h8].includes(e);var Bn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Bn||{});function K0(e){return Ft(e)&&e.type===Le}function v8(e){return Ft(e)&&e.type===pn}function g8(e){return Ft(e)&&!K0(e)&&!v8(e)}const b8=e=>{if(!Ft(e))return{};const t=e.props||{},n=(Ft(e.type)?e.type.props:void 0)||{},o={};return Object.keys(n).forEach(s=>{at(n[s],"default")&&(o[s]=n[s].default)}),Object.keys(t).forEach(s=>{o[Wn(s)]=t[s]}),o},y8=e=>{if(!Xe(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},dv=e=>e**3,w8=e=>e<.5?dv(e*2)/2:1-dv((1-e)*2)/2,fv=e=>[...new Set(e)],Gs=e=>!e&&e!==0?[]:Array.isArray(e)?e:[e],lp=()=>ct&&/firefox/i.test(window.navigator.userAgent),Bu=e=>/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e),W0=e=>ct?window.requestAnimationFrame(e):setTimeout(e,16),j0=e=>ct?window.cancelAnimationFrame(e):clearTimeout(e),Na=()=>Math.floor(Math.random()*1e4),Pt=e=>e,C8=["class","style"],$8=/^on[A-Z]/,rp=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n=[]}=e,o=n.concat(C8),s=nt();return E(s?()=>{var l;return E0(Object.entries((l=s.proxy)==null?void 0:l.$attrs).filter(([r])=>!o.includes(r)&&!(t&&$8.test(r))))}:()=>({}))},Y0=Symbol("breadcrumbKey"),U0=Symbol("buttonGroupContextKey"),q0=Symbol("carouselContextKey"),G0=Symbol("collapseContextKey"),X0=Symbol(),J0=Symbol("dialogInjectionKey"),Dn=Symbol("formContextKey"),Un=Symbol("formItemContextKey"),Z0=Symbol("elPaginationKey"),Q0=Symbol("radioGroupKey"),x0=Symbol("rowContextKey"),e1=Symbol("scrollbarContextKey"),Vu=Symbol("tabsRootContextKey"),t1=Symbol("uploadContextKey"),ap=Symbol("popper"),n1=Symbol("popperContent"),Fu=Symbol("tooltipV2"),o1=Symbol("tooltipV2Content"),mc="tooltip_v2.open",s1=e=>{const t=nt();return E(()=>{var n,o;return(o=(n=t.proxy)==null?void 0:n.$props[e])!=null?o:void 0})},Qi=A();function cr(e,t=void 0){const n=nt()?Ne(X0,Qi):Qi;return e?E(()=>{var o,s;return(s=(o=n.value)==null?void 0:o[e])!=null?s:t}):n}const l1=(e,t,n=!1)=>{var o;const s=!!nt(),l=s?cr():void 0,r=(o=t==null?void 0:t.provide)!=null?o:s?st:void 0;if(!r)return;const a=E(()=>{const i=b(e);return l!=null&&l.value?k8(l.value,i):i});return r(X0,a),(n||!Qi.value)&&(Qi.value=a.value),a},k8=(e,t)=>{var n;const o=[...new Set([...md(e),...md(t)])],s={};for(const l of o)s[l]=(n=t[l])!=null?n:e[l];return s},Hu=fo({type:String,values:Eo,required:!1}),Wt=(e,t={})=>{const n=A(void 0),o=t.prop?n:s1("size"),s=t.global?n:cr("size"),l=t.form?{size:void 0}:Ne(Dn,void 0),r=t.formItem?{size:void 0}:Ne(Un,void 0);return E(()=>o.value||b(e)||(r==null?void 0:r.size)||(l==null?void 0:l.size)||s.value||"")},hl=e=>{const t=s1("disabled"),n=Ne(Dn,void 0);return E(()=>t.value||b(e)||(n==null?void 0:n.disabled)||!1)},Ma=({from:e,replacement:t,scope:n,version:o,ref:s,type:l="API"},r)=>{pe(()=>b(r),a=>{},{immediate:!0})},r1=(e,t,n)=>{let o={offsetX:0,offsetY:0};const s=a=>{const i=a.clientX,u=a.clientY,{offsetX:c,offsetY:d}=o,f=e.value.getBoundingClientRect(),p=f.left,h=f.top,g=f.width,m=f.height,v=document.documentElement.clientWidth,y=document.documentElement.clientHeight,w=-p+c,S=-h+d,$=v-p-g+c,k=y-h-m+d,T=L=>{const B=Math.min(Math.max(c+L.clientX-i,w),$),V=Math.min(Math.max(d+L.clientY-u,S),k);o={offsetX:B,offsetY:V},e.value.style.transform=`translate(${ro(B)}, ${ro(V)})`},O=()=>{document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",T),document.addEventListener("mouseup",O)},l=()=>{t.value&&e.value&&t.value.addEventListener("mousedown",s)},r=()=>{t.value&&e.value&&t.value.removeEventListener("mousedown",s)};xe(()=>{zn(()=>{n.value?l():r()})}),_t(()=>{r()})},S8=e=>({focus:()=>{var t,n;(n=(t=e.value)==null?void 0:t.focus)==null||n.call(t)}}),dr=()=>{const e=Ne(Dn,void 0),t=Ne(Un,void 0);return{form:e,formItem:t}};var E8={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const _8=e=>(t,n)=>T8(t,n,b(e)),T8=(e,t,n)=>It(n,e,e).replace(/\{(\w+)\}/g,(o,s)=>{var l;return`${(l=t==null?void 0:t[s])!=null?l:`{${s}}`}`}),A8=e=>{const t=E(()=>b(e).name),n=Lt(e)?e:A(e);return{lang:t,locale:n,t:_8(e)}},kt=()=>{const e=cr("locale");return A8(E(()=>e.value||E8))},a1=e=>{if(Lt(e)||Kt("[useLockscreen]","You need to pass a ref param to this function"),!ct||oo(document.body,"el-popup-parent--hidden"))return;let t=0,n=!1,o="0",s=0;const l=()=>{fn(document.body,"el-popup-parent--hidden"),n&&(document.body.style.paddingRight=o)};pe(e,r=>{if(!r){l();return}n=!oo(document.body,"el-popup-parent--hidden"),n&&(o=document.body.style.paddingRight,s=Number.parseInt(bo(document.body,"paddingRight"),10)),t=t4();const a=document.documentElement.clientHeight0&&(a||i==="scroll")&&n&&(document.body.style.paddingRight=`${s+t}px`),wo(document.body,"el-popup-parent--hidden")}),Yb(()=>l())},Ll=[],N8=e=>{Ll.length!==0&&e.code===Ie.esc&&(e.stopPropagation(),Ll[Ll.length-1].handleClose())},i1=(e,t)=>{pe(t,n=>{n?Ll.push(e):Ll.splice(Ll.indexOf(e),1)})};ct&&Ht(document,"keydown",N8);const M8=fo({type:$e(Boolean),default:null}),O8=fo({type:$e(Function)}),I8=e=>{const t={[e]:M8,[`onUpdate:${e}`]:O8},n=[`update:${e}`];return{useModelToggle:({indicator:s,shouldHideWhenRouteChanges:l,shouldProceed:r,onShow:a,onHide:i})=>{const u=nt(),c=u.props,{emit:d}=u,f=`update:${e}`,p=E(()=>et(c[`onUpdate:${e}`])),h=E(()=>c[e]===null),g=()=>{s.value!==!0&&(s.value=!0,et(a)&&a())},m=()=>{s.value!==!1&&(s.value=!1,et(i)&&i())},v=()=>{if(c.disabled===!0||et(r)&&!r())return;const $=p.value&&ct;$&&d(f,!0),(h.value||!$)&&g()},y=()=>{if(c.disabled===!0||!ct)return;const $=p.value&&ct;$&&d(f,!1),(h.value||!$)&&m()},w=$=>{!en($)||(c.disabled&&$?p.value&&d(f,!1):s.value!==$&&($?g():m()))},S=()=>{s.value?y():v()};return pe(()=>c[e],w),l&&u.appContext.config.globalProperties.$route!==void 0&&pe(()=>ne({},u.proxy.$route),()=>{l.value&&s.value&&y()}),xe(()=>{w(c[e])}),{hide:y,show:v,toggle:S}},useModelToggleProps:t,useModelToggleEmits:n}},D8=(e,t,n)=>{const o=l=>{n(l)&&l.stopImmediatePropagation()};let s;pe(()=>e.value,l=>{l?s=Ht(document,t,o,!0):s==null||s()},{immediate:!0})},u1=(e,t)=>{let n;pe(()=>e.value,o=>{var s,l;o?(n=document.activeElement,Lt(t)&&((l=(s=t.value).focus)==null||l.call(s))):n.focus()})},ip=e=>{if(!e)return{onClick:wt,onMousedown:wt,onMouseup:wt};let t=!1,n=!1;return{onClick:r=>{t&&n&&e(r),t=n=!1},onMousedown:r=>{t=r.target===r.currentTarget},onMouseup:r=>{n=r.target===r.currentTarget}}},P8=(e,t=0)=>{if(t===0)return e;const n=A(!1);let o=0;const s=()=>{o&&clearTimeout(o),o=window.setTimeout(()=>{n.value=e.value},t)};return xe(s),pe(()=>e.value,l=>{l?s():n.value=l}),n};function L8(){let e;const t=(o,s)=>{n(),e=window.setTimeout(o,s)},n=()=>window.clearTimeout(e);return Du(()=>n()),{registerTimeout:t,cancelTimeout:n}}const R8={prefix:Math.floor(Math.random()*1e4),current:0},B8=Symbol("elIdInjection"),up=e=>{const t=Ne(B8,R8);return E(()=>b(e)||`el-id-${t.prefix}-${t.current++}`)},V8=e=>{const t=n=>{const o=n;o.key===Ie.esc&&(e==null||e(o))};xe(()=>{Tt(document,"keydown",t)}),_t(()=>{Vt(document,"keydown",t)})};let pv;const c1=`el-popper-container-${Na()}`,d1=`#${c1}`,F8=()=>{const e=document.createElement("div");return e.id=c1,document.body.appendChild(e),e},H8=()=>{$a(()=>{!ct||(!pv||!document.body.querySelector(d1))&&(pv=F8())})},z8=Ve({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200}}),K8=({showAfter:e,hideAfter:t,open:n,close:o})=>{const{registerTimeout:s}=L8();return{onOpen:()=>{s(()=>{n()},b(e))},onClose:()=>{s(()=>{o()},b(t))}}},f1=Symbol("elForwardRef"),W8=e=>{st(f1,{setForwardRef:n=>{e.value=n}})},j8=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Y8="el",U8="is-",_s=(e,t,n,o,s)=>{let l=`${e}-${t}`;return n&&(l+=`-${n}`),o&&(l+=`__${o}`),s&&(l+=`--${s}`),l},we=e=>{const t=cr("namespace"),n=E(()=>t.value||Y8);return{namespace:n,b:(d="")=>_s(b(n),e,d,"",""),e:d=>d?_s(b(n),e,"",d,""):"",m:d=>d?_s(b(n),e,"","",d):"",be:(d,f)=>d&&f?_s(b(n),e,d,f,""):"",em:(d,f)=>d&&f?_s(b(n),e,"",d,f):"",bm:(d,f)=>d&&f?_s(b(n),e,d,"",f):"",bem:(d,f,p)=>d&&f&&p?_s(b(n),e,d,f,p):"",is:(d,...f)=>{const p=f.length>=1?f[0]:!0;return d&&p?`${U8}${d}`:""}}},hv=A(0),jo=()=>{const e=cr("zIndex",2e3),t=E(()=>e.value+hv.value);return{initialZIndex:e,currentZIndex:t,nextZIndex:()=>(hv.value++,t.value)}};function cp(e){return e.split("-")[0]}function p1(e){return e.split("-")[1]}function dp(e){return["top","bottom"].includes(cp(e))?"x":"y"}function h1(e){return e==="y"?"height":"width"}function mv(e,t,n){let{reference:o,floating:s}=e;const l=o.x+o.width/2-s.width/2,r=o.y+o.height/2-s.height/2,a=dp(t),i=h1(a),u=o[i]/2-s[i]/2,c=a==="x";let d;switch(cp(t)){case"top":d={x:l,y:o.y-s.height};break;case"bottom":d={x:l,y:o.y+o.height};break;case"right":d={x:o.x+o.width,y:r};break;case"left":d={x:o.x-s.width,y:r};break;default:d={x:o.x,y:o.y}}switch(p1(t)){case"start":d[a]-=u*(n&&c?-1:1);break;case"end":d[a]+=u*(n&&c?-1:1)}return d}const q8=async(e,t,n)=>{const{placement:o="bottom",strategy:s="absolute",middleware:l=[],platform:r}=n,a=await(r.isRTL==null?void 0:r.isRTL(t));let i=await r.getElementRects({reference:e,floating:t,strategy:s}),{x:u,y:c}=mv(i,o,a),d=o,f={};for(let p=0;p({name:"arrow",options:e,async fn(t){const{element:n,padding:o=0}=e!=null?e:{},{x:s,y:l,placement:r,rects:a,platform:i}=t;if(n==null)return{};const u=G8(o),c={x:s,y:l},d=dp(r),f=h1(d),p=await i.getDimensions(n),h=d==="y"?"top":"left",g=d==="y"?"bottom":"right",m=a.reference[f]+a.reference[d]-c[d]-a.floating[f],v=c[d]-a.reference[d],y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(n)),w=y?d==="y"?y.clientHeight||0:y.clientWidth||0:0,S=m/2-v/2,$=u[h],k=w-p[f]-u[g],T=w/2-p[f]/2+S,O=Z8($,T,k);return{data:{[d]:O,centerOffset:T-O}}}}),x8=["top","right","bottom","left"];x8.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const e6=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:o,placement:s,rects:l,platform:r,elements:a}=t,i=function(u,c,d,f){f===void 0&&(f=!1);const p=cp(u),h=p1(u),g=dp(u)==="x",m=["left","top"].includes(p)?-1:1,v=f&&g?-1:1,y=typeof d=="function"?d(Te(ne({},c),{placement:u})):d,w=typeof y=="number";let{mainAxis:S,crossAxis:$,alignmentAxis:k}=w?{mainAxis:y,crossAxis:0,alignmentAxis:null}:ne({mainAxis:0,crossAxis:0,alignmentAxis:null},y);return h&&typeof k=="number"&&($=h==="end"?-1*k:k),g?{x:$*v,y:S*m}:{x:S*m,y:$*v}}(s,l,e,await(r.isRTL==null?void 0:r.isRTL(a.floating)));return{x:n+i.x,y:o+i.y,data:i}}}};function m1(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Yo(e){if(e==null)return window;if(!m1(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function Oa(e){return Yo(e).getComputedStyle(e)}function Lo(e){return m1(e)?"":e?(e.nodeName||"").toLowerCase():""}function ko(e){return e instanceof Yo(e).HTMLElement}function Zl(e){return e instanceof Yo(e).Element}function fp(e){return e instanceof Yo(e).ShadowRoot||e instanceof ShadowRoot}function zu(e){const{overflow:t,overflowX:n,overflowY:o}=Oa(e);return/auto|scroll|overlay|hidden/.test(t+o+n)}function t6(e){return["table","td","th"].includes(Lo(e))}function gv(e){const t=navigator.userAgent.toLowerCase().includes("firefox"),n=Oa(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&!!n.filter&&n.filter!=="none"}function v1(){return!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}const bv=Math.min,Wr=Math.max,xi=Math.round;function Xs(e,t,n){var o,s,l,r;t===void 0&&(t=!1),n===void 0&&(n=!1);const a=e.getBoundingClientRect();let i=1,u=1;t&&ko(e)&&(i=e.offsetWidth>0&&xi(a.width)/e.offsetWidth||1,u=e.offsetHeight>0&&xi(a.height)/e.offsetHeight||1);const c=Zl(e)?Yo(e):window,d=!v1()&&n,f=(a.left+(d&&(o=(s=c.visualViewport)==null?void 0:s.offsetLeft)!=null?o:0))/i,p=(a.top+(d&&(l=(r=c.visualViewport)==null?void 0:r.offsetTop)!=null?l:0))/u,h=a.width/i,g=a.height/u;return{width:h,height:g,top:p,right:f+h,bottom:p+g,left:f,x:f,y:p}}function rs(e){return(t=e,(t instanceof Yo(t).Node?e.ownerDocument:e.document)||window.document).documentElement;var t}function Ku(e){return Zl(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function g1(e){return Xs(rs(e)).left+Ku(e).scrollLeft}function n6(e,t,n){const o=ko(t),s=rs(t),l=Xs(e,o&&function(i){const u=Xs(i);return xi(u.width)!==i.offsetWidth||xi(u.height)!==i.offsetHeight}(t),n==="fixed");let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(o||!o&&n!=="fixed")if((Lo(t)!=="body"||zu(s))&&(r=Ku(t)),ko(t)){const i=Xs(t,!0);a.x=i.x+t.clientLeft,a.y=i.y+t.clientTop}else s&&(a.x=g1(s));return{x:l.left+r.scrollLeft-a.x,y:l.top+r.scrollTop-a.y,width:l.width,height:l.height}}function b1(e){return Lo(e)==="html"?e:e.assignedSlot||e.parentNode||(fp(e)?e.host:null)||rs(e)}function yv(e){return ko(e)&&getComputedStyle(e).position!=="fixed"?e.offsetParent:null}function gd(e){const t=Yo(e);let n=yv(e);for(;n&&t6(n)&&getComputedStyle(n).position==="static";)n=yv(n);return n&&(Lo(n)==="html"||Lo(n)==="body"&&getComputedStyle(n).position==="static"&&!gv(n))?t:n||function(o){let s=b1(o);for(fp(s)&&(s=s.host);ko(s)&&!["html","body"].includes(Lo(s));){if(gv(s))return s;s=s.parentNode}return null}(e)||t}function wv(e){if(ko(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=Xs(e);return{width:t.width,height:t.height}}function y1(e){const t=b1(e);return["html","body","#document"].includes(Lo(t))?e.ownerDocument.body:ko(t)&&zu(t)?t:y1(t)}function w1(e,t){var n;t===void 0&&(t=[]);const o=y1(e),s=o===((n=e.ownerDocument)==null?void 0:n.body),l=Yo(o),r=s?[l].concat(l.visualViewport||[],zu(o)?o:[]):o,a=t.concat(r);return s?a:a.concat(w1(r))}function Cv(e,t,n){return t==="viewport"?vv(function(o,s){const l=Yo(o),r=rs(o),a=l.visualViewport;let i=r.clientWidth,u=r.clientHeight,c=0,d=0;if(a){i=a.width,u=a.height;const f=v1();(f||!f&&s==="fixed")&&(c=a.offsetLeft,d=a.offsetTop)}return{width:i,height:u,x:c,y:d}}(e,n)):Zl(t)?function(o,s){const l=Xs(o,!1,s==="fixed"),r=l.top+o.clientTop,a=l.left+o.clientLeft;return{top:r,left:a,x:a,y:r,right:a+o.clientWidth,bottom:r+o.clientHeight,width:o.clientWidth,height:o.clientHeight}}(t,n):vv(function(o){var s;const l=rs(o),r=Ku(o),a=(s=o.ownerDocument)==null?void 0:s.body,i=Wr(l.scrollWidth,l.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),u=Wr(l.scrollHeight,l.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0);let c=-r.scrollLeft+g1(o);const d=-r.scrollTop;return Oa(a||l).direction==="rtl"&&(c+=Wr(l.clientWidth,a?a.clientWidth:0)-i),{width:i,height:u,x:c,y:d}}(rs(e)))}function o6(e){const t=w1(e),n=["absolute","fixed"].includes(Oa(e).position)&&ko(e)?gd(e):e;return Zl(n)?t.filter(o=>Zl(o)&&function(s,l){const r=l==null||l.getRootNode==null?void 0:l.getRootNode();if(s!=null&&s.contains(l))return!0;if(r&&fp(r)){let a=l;do{if(a&&s===a)return!0;a=a.parentNode||a.host}while(a)}return!1}(o,n)&&Lo(o)!=="body"):[]}const s6={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:s}=e;const l=[...n==="clippingAncestors"?o6(t):[].concat(n),o],r=l[0],a=l.reduce((i,u)=>{const c=Cv(t,u,s);return i.top=Wr(c.top,i.top),i.right=bv(c.right,i.right),i.bottom=bv(c.bottom,i.bottom),i.left=Wr(c.left,i.left),i},Cv(t,r,s));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:o}=e;const s=ko(n),l=rs(n);if(n===l)return t;let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((s||!s&&o!=="fixed")&&((Lo(n)!=="body"||zu(l))&&(r=Ku(n)),ko(n))){const i=Xs(n,!0);a.x=i.x+n.clientLeft,a.y=i.y+n.clientTop}return Te(ne({},t),{x:t.x-r.scrollLeft+a.x,y:t.y-r.scrollTop+a.y})},isElement:Zl,getDimensions:wv,getOffsetParent:gd,getDocumentElement:rs,getElementRects:e=>{let{reference:t,floating:n,strategy:o}=e;return{reference:n6(t,gd(n),o),floating:Te(ne({},wv(n)),{x:0,y:0})}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Oa(e).direction==="rtl"},l6=(e,t,n)=>q8(e,t,ne({platform:s6},n));Ve({});const r6=e=>{if(!ct)return;if(!e)return e;const t=no(e);return t||(Lt(e)?t:e)},a6=({middleware:e,placement:t,strategy:n})=>{const o=A(),s=A(),l=A(),r=A(),a=A({}),i={x:l,y:r,placement:t,strategy:n,middlewareData:a},u=async()=>{if(!ct)return;const c=r6(o),d=no(s);if(!c||!d)return;const f=await l6(c,d,{placement:b(t),strategy:b(n),middleware:b(e)});Object.keys(i).forEach(p=>{i[p].value=f[p]})};return xe(()=>{zn(()=>{u()})}),Te(ne({},i),{update:u,referenceRef:o,contentRef:s})},i6=({arrowRef:e,padding:t})=>({name:"arrow",options:{element:e,padding:t},fn(n){const o=b(e);return o?Q8({element:o,padding:t}).fn(n):{}}}),u6="2.1.9",$v=Symbol("INSTALLED_KEY"),c6=(e=[])=>({version:u6,install:(n,o)=>{n[$v]||(n[$v]=!0,e.forEach(s=>n.use(s)),o&&l1(o,n,!0))}}),d6=Ve({zIndex:{type:$e([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),f6={scroll:({scrollTop:e,fixed:t})=>typeof e=="number"&&typeof t=="boolean",change:e=>typeof e=="boolean"};var ge=(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n};const p6={name:"ElAffix"},h6=te(Te(ne({},p6),{props:d6,emits:f6,setup(e,{expose:t,emit:n}){const o=e,s="ElAffix",l=we("affix"),r=jt(),a=jt(),i=jt(),{height:u}=qI(),{height:c,width:d,top:f,bottom:p,update:h}=rv(a),g=rv(r),m=A(!1),v=A(0),y=A(0),w=E(()=>({height:m.value?`${c.value}px`:"",width:m.value?`${d.value}px`:""})),S=E(()=>{if(!m.value)return{};const T=o.offset?`${o.offset}px`:0;return{height:`${c.value}px`,width:`${d.value}px`,top:o.position==="top"?T:"",bottom:o.position==="bottom"?T:"",transform:y.value?`translateY(${y.value}px)`:"",zIndex:o.zIndex}}),$=()=>{if(!!i.value)if(v.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0,o.position==="top")if(o.target){const T=g.bottom.value-o.offset-c.value;m.value=o.offset>f.value&&g.bottom.value>0,y.value=T<0?T:0}else m.value=o.offset>f.value;else if(o.target){const T=u.value-g.top.value-o.offset-c.value;m.value=u.value-o.offsetg.top.value,y.value=T<0?-T:0}else m.value=u.value-o.offset{n("scroll",{scrollTop:v.value,fixed:m.value})};return pe(m,T=>n("change",T)),xe(()=>{var T;o.target?(r.value=(T=document.querySelector(o.target))!=null?T:void 0,r.value||Kt(s,`Target is not existed: ${o.target}`)):r.value=document.documentElement,i.value=tp(a.value,!0),h()}),Ht(i,"scroll",k),zn($),t({update:$}),(T,O)=>(C(),M("div",{ref_key:"root",ref:a,class:_(b(l).b()),style:De(b(w))},[D("div",{class:_({[b(l).m("fixed")]:m.value}),style:De(b(S))},[ie(T.$slots,"default")],6)],6))}}));var m6=ge(h6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/affix/src/affix.vue"]]);const v6=ot(m6),g6=Ve({size:{type:$e([Number,String])},color:{type:String}}),b6={name:"ElIcon",inheritAttrs:!1},y6=te(Te(ne({},b6),{props:g6,setup(e){const t=e,n=we("icon"),o=E(()=>!t.size&&!t.color?{}:{fontSize:Cn(t.size)?void 0:ro(t.size),"--color":t.color});return(s,l)=>(C(),M("i",Et({class:b(n).b(),style:b(o)},s.$attrs),[ie(s.$slots,"default")],16))}}));var w6=ge(y6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue"]]);const je=ot(w6),C6=["light","dark"],$6=Ve({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:md(Ho),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:C6,default:"light"}}),k6={close:e=>e instanceof MouseEvent},S6={name:"ElAlert"},E6=te(Te(ne({},S6),{props:$6,emits:k6,setup(e,{emit:t}){const n=e,{Close:o}=Ru,s=_a(),l=we("alert"),r=A(!0),a=E(()=>Ho[n.type]||Ho.info),i=E(()=>n.description||{[l.is("big")]:s.default}),u=E(()=>n.description||{[l.is("bold")]:s.default}),c=d=>{r.value=!1,t("close",d)};return(d,f)=>(C(),x(zt,{name:b(l).b("fade")},{default:j(()=>[Ge(D("div",{class:_([b(l).b(),b(l).m(d.type),b(l).is("center",d.center),b(l).is(d.effect)]),role:"alert"},[d.showIcon&&b(a)?(C(),x(b(je),{key:0,class:_([b(l).e("icon"),b(i)])},{default:j(()=>[(C(),x(ft(b(a))))]),_:1},8,["class"])):G("v-if",!0),D("div",{class:_(b(l).e("content"))},[d.title||d.$slots.title?(C(),M("span",{key:0,class:_([b(l).e("title"),b(u)])},[ie(d.$slots,"title",{},()=>[it(he(d.title),1)])],2)):G("v-if",!0),d.$slots.default||d.description?(C(),M("p",{key:1,class:_(b(l).e("description"))},[ie(d.$slots,"default",{},()=>[it(he(d.description),1)])],2)):G("v-if",!0),d.closable?(C(),M(Le,{key:2},[d.closeText?(C(),M("div",{key:0,class:_([b(l).e("close-btn"),b(l).is("customed")]),onClick:c},he(d.closeText),3)):(C(),x(b(je),{key:1,class:_(b(l).e("close-btn")),onClick:c},{default:j(()=>[Y(b(o))]),_:1},8,["class"]))],2112)):G("v-if",!0)],2)],2),[[pt,r.value]])]),_:3},8,["name"]))}}));var _6=ge(E6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/alert/src/alert.vue"]]);const T6=ot(_6);let Qn;const A6=` +`,...f_(s)),console.warn(...l)}il()}function d_(){let e=Rr[Rr.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function f_(e){const t=[];return e.forEach((n,o)=>{t.push(...o===0?[]:[` +`],...p_(n))}),t}function p_({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,s=` at <${Hy(e.component,e.type,o)}`,l=">"+n;return e.props?[s,...h_(e.props),l]:[s+l]}function h_(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...uy(o,e[o]))}),n.length>3&&t.push(" ..."),t}function uy(e,t,n){return Qe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Lt(t)?(t=uy(e,$t(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):et(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=$t(t),n?t:[`${e}=`,t])}function Po(e,t,n,o){let s;try{s=o?e(...o):e()}catch(l){Cu(l,t,n)}return s}function Hn(e,t,n,o){if(et(e)){const l=Po(e,t,n,o);return l&&xs(l)&&l.catch(r=>{Cu(r,t,n)}),l}const s=[];for(let l=0;l>>1;Jr(wn[o])Mo&&wn.splice(t,1)}function py(e,t,n,o){Xe(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?o+1:o))&&n.push(e),fy()}function b_(e){py(e,Ar,Vr,kl)}function y_(e){py(e,Qo,Br,Sl)}function _f(e,t=null){if(Vr.length){for(Qc=t,Ar=[...new Set(Vr)],Vr.length=0,kl=0;klJr(n)-Jr(o)),Sl=0;Sle.id==null?1/0:e.id;function my(e){Jc=!1,Fi=!0,_f(e),wn.sort((n,o)=>Jr(n)-Jr(o));const t=wt;try{for(Mo=0;Mop.trim()):d&&(s=n.map(Bi))}let a,i=o[a=li(t)]||o[a=li(Wn(t))];!i&&l&&(i=o[a=li(vs(t))]),i&&Hn(i,e,6,s);const u=o[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Hn(u,e,6,s)}}function vy(e,t,n=!1){const o=t.emitsCache,s=o.get(e);if(s!==void 0)return s;const l=e.emits;let r={},a=!1;if(!et(e)){const i=u=>{const c=vy(u,t,!0);c&&(a=!0,Zt(r,c))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!l&&!a?(o.set(e,null),null):(Xe(l)?l.forEach(i=>r[i]=null):Zt(r,l),o.set(e,r),r)}function Tf(e,t){return!e||!gu(t)?!1:(t=t.slice(2).replace(/Once$/,""),rt(e,t[0].toLowerCase()+t.slice(1))||rt(e,vs(t))||rt(e,t))}let $n=null,gy=null;function Hi(e){const t=$n;return $n=e,gy=e&&e.type.__scopeId||null,t}function j(e,t=$n,n){if(!t||e._n)return e;const o=(...s)=>{o._d&&im(-1);const l=Hi(t),r=e(...s);return Hi(l),o._d&&im(1),r};return o._n=!0,o._c=!0,o._d=!0,o}function tc(e){const{type:t,vnode:n,proxy:o,withProxy:s,props:l,propsOptions:[r],slots:a,attrs:i,emit:u,render:c,renderCache:d,data:f,setupState:p,ctx:h,inheritAttrs:g}=e;let m,v;const b=Hi(e);try{if(n.shapeFlag&4){const S=s||o;m=go(c.call(S,S,d,l,p,f,h)),v=i}else{const S=t;m=go(S.length>1?S(l,{attrs:i,slots:a,emit:u}):S(l,null)),v=t.props?i:C_(i)}}catch(S){Hr.length=0,Cu(S,e,1),m=Y(pn)}let w=m;if(v&&g!==!1){const S=Object.keys(v),{shapeFlag:$}=w;S.length&&$&7&&(r&&S.some(pf)&&(v=$_(v,r)),w=el(w,v))}return n.dirs&&(w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),m=w,Hi(b),m}const C_=e=>{let t;for(const n in e)(n==="class"||n==="style"||gu(n))&&((t||(t={}))[n]=e[n]);return t},$_=(e,t)=>{const n={};for(const o in e)(!pf(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function k_(e,t,n){const{props:o,children:s,component:l}=e,{props:r,children:a,patchFlag:i}=t,u=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return o?Jh(o,r,u):!!r;if(i&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function __(e,t){t&&t.pendingBranch?Xe(e)?t.effects.push(...e):t.effects.push(e):y_(e)}function st(e,t){if(Xt){let n=Xt.provides;const o=Xt.parent&&Xt.parent.provides;o===n&&(n=Xt.provides=Object.create(o)),n[e]=t}}function Ne(e,t,n=!1){const o=Xt||$n;if(o){const s=o.parent==null?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(s&&e in s)return s[e];if(arguments.length>1)return n&&et(t)?t.call(o.proxy):t}}function zn(e,t){return Af(e,null,t)}const Qh={};function pe(e,t,n){return Af(e,t,n)}function Af(e,t,{immediate:n,deep:o,flush:s,onTrack:l,onTrigger:r}=Mt){const a=Xt;let i,u=!1,c=!1;if(Lt(e)?(i=()=>e.value,u=sy(e)):Il(e)?(i=()=>e,o=!0):Xe(e)?(c=!0,u=e.some(Il),i=()=>e.map(v=>{if(Lt(v))return v.value;if(Il(v))return Rs(v);if(et(v))return Po(v,a,2)})):et(e)?t?i=()=>Po(e,a,2):i=()=>{if(!(a&&a.isUnmounted))return d&&d(),Hn(e,a,3,[f])}:i=wt,t&&o){const v=i;i=()=>Rs(v())}let d,f=v=>{d=m.onStop=()=>{Po(v,a,4)}};if(ea)return f=wt,t?n&&Hn(t,a,3,[i(),c?[]:void 0,f]):i(),wt;let p=c?[]:Qh;const h=()=>{if(!!m.active)if(t){const v=m.run();(o||u||(c?v.some((b,w)=>qr(b,p[w])):qr(v,p)))&&(d&&d(),Hn(t,a,3,[v,p===Qh?void 0:p,f]),p=v)}else m.run()};h.allowRecurse=!!t;let g;s==="sync"?g=h:s==="post"?g=()=>cn(h,a&&a.suspense):g=()=>{!a||a.isMounted?b_(h):h()};const m=new bf(i,g);return t?n?h():p=m.run():s==="post"?cn(m.run.bind(m),a&&a.suspense):m.run(),()=>{m.stop(),a&&a.scope&&hf(a.scope.effects,m)}}function T_(e,t,n){const o=this.proxy,s=Qe(e)?e.includes(".")?by(o,e):()=>o[e]:e.bind(o,o);let l;et(t)?l=t:(l=t.handler,n=t);const r=Xt;Yl(this);const a=Af(s,l.bind(o),n);return r?Yl(r):Ys(),a}function by(e,t){const n=t.split(".");return()=>{let o=e;for(let s=0;s{Rs(n,t)});else if(Yb(e))for(const n in e)Rs(e[n],t);return e}function yy(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xe(()=>{e.isMounted=!0}),_t(()=>{e.isUnmounting=!0}),e}const Ln=[Function,Array],A_={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ln,onEnter:Ln,onAfterEnter:Ln,onEnterCancelled:Ln,onBeforeLeave:Ln,onLeave:Ln,onAfterLeave:Ln,onLeaveCancelled:Ln,onBeforeAppear:Ln,onAppear:Ln,onAfterAppear:Ln,onAppearCancelled:Ln},setup(e,{slots:t}){const n=nt(),o=yy();let s;return()=>{const l=t.default&&Nf(t.default(),!0);if(!l||!l.length)return;const r=$t(e),{mode:a}=r,i=l[0];if(o.isLeaving)return nc(i);const u=xh(i);if(!u)return nc(i);const c=Qr(u,r,o,n);xr(u,c);const d=n.subTree,f=d&&xh(d);let p=!1;const{getTransitionKey:h}=u.type;if(h){const g=h();s===void 0?s=g:g!==s&&(s=g,p=!0)}if(f&&f.type!==pn&&(!Ps(u,f)||p)){const g=Qr(f,r,o,n);if(xr(f,g),a==="out-in")return o.isLeaving=!0,g.afterLeave=()=>{o.isLeaving=!1,n.update()},nc(i);a==="in-out"&&u.type!==pn&&(g.delayLeave=(m,v,b)=>{const w=Cy(o,f);w[String(f.key)]=f,m._leaveCb=()=>{v(),m._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}},wy=A_;function Cy(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function Qr(e,t,n,o){const{appear:s,mode:l,persisted:r=!1,onBeforeEnter:a,onEnter:i,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:g,onAppear:m,onAfterAppear:v,onAppearCancelled:b}=t,w=String(e.key),S=Cy(n,e),$=(T,O)=>{T&&Hn(T,o,9,O)},k={mode:l,persisted:r,beforeEnter(T){let O=a;if(!n.isMounted)if(s)O=g||a;else return;T._leaveCb&&T._leaveCb(!0);const L=S[w];L&&Ps(e,L)&&L.el._leaveCb&&L.el._leaveCb(),$(O,[T])},enter(T){let O=i,L=u,V=c;if(!n.isMounted)if(s)O=m||i,L=v||u,V=b||c;else return;let B=!1;const H=T._enterCb=R=>{B||(B=!0,R?$(V,[T]):$(L,[T]),k.delayedLeave&&k.delayedLeave(),T._enterCb=void 0)};O?(O(T,H),O.length<=1&&H()):H()},leave(T,O){const L=String(e.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return O();$(d,[T]);let V=!1;const B=T._leaveCb=H=>{V||(V=!0,O(),H?$(h,[T]):$(p,[T]),T._leaveCb=void 0,S[L]===e&&delete S[L])};S[L]=e,f?(f(T,B),f.length<=1&&B()):B()},clone(T){return Qr(T,t,n,o)}};return k}function nc(e){if($u(e))return e=el(e),e.children=null,e}function xh(e){return $u(e)?e.children?e.children[0]:void 0:e}function xr(e,t){e.shapeFlag&6&&e.component?xr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Nf(e,t=!1){let n=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader,$u=e=>e.type.__isKeepAlive;function N_(e,t){$y(e,"a",t)}function M_(e,t){$y(e,"da",t)}function $y(e,t,n=Xt){const o=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ku(t,o,n),n){let s=n.parent;for(;s&&s.parent;)$u(s.parent.vnode)&&O_(o,t,n,s),s=s.parent}}function O_(e,t,n,o){const s=ku(t,e,o,!0);$a(()=>{hf(o[t],s)},n)}function ku(e,t,n=Xt,o=!1){if(n){const s=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;al(),Yl(n);const a=Hn(t,n,e,r);return Ys(),il(),a});return o?s.unshift(l):s.push(l),l}}const zo=e=>(t,n=Xt)=>(!ea||e==="sp")&&ku(e,t,n),Ca=zo("bm"),xe=zo("m"),ky=zo("bu"),Xn=zo("u"),_t=zo("bum"),$a=zo("um"),I_=zo("sp"),P_=zo("rtg"),D_=zo("rtc");function L_(e,t=Xt){ku("ec",e,t)}let ed=!0;function R_(e){const t=Ey(e),n=e.proxy,o=e.ctx;ed=!1,t.beforeCreate&&em(t.beforeCreate,e,"bc");const{data:s,computed:l,methods:r,watch:a,provide:i,inject:u,created:c,beforeMount:d,mounted:f,beforeUpdate:p,updated:h,activated:g,deactivated:m,beforeDestroy:v,beforeUnmount:b,destroyed:w,unmounted:S,render:$,renderTracked:k,renderTriggered:T,errorCaptured:O,serverPrefetch:L,expose:V,inheritAttrs:B,components:H,directives:R,filters:z}=t;if(u&&V_(u,o,null,e.appContext.config.unwrapInjectedRef),r)for(const N in r){const I=r[N];et(I)&&(o[N]=I.bind(n))}if(s){const N=s.call(n,n);dt(N)&&(e.data=yt(N))}if(ed=!0,l)for(const N in l){const I=l[N],U=et(I)?I.bind(n,n):et(I.get)?I.get.bind(n,n):wt,q=!et(I)&&et(I.set)?I.set.bind(n):wt,Q=E({get:U,set:q});Object.defineProperty(o,N,{enumerable:!0,configurable:!0,get:()=>Q.value,set:Z=>Q.value=Z})}if(a)for(const N in a)Sy(a[N],o,n,N);if(i){const N=et(i)?i.call(n):i;Reflect.ownKeys(N).forEach(I=>{st(I,N[I])})}c&&em(c,e,"c");function P(N,I){Xe(I)?I.forEach(U=>N(U.bind(n))):I&&N(I.bind(n))}if(P(Ca,d),P(xe,f),P(ky,p),P(Xn,h),P(N_,g),P(M_,m),P(L_,O),P(D_,k),P(P_,T),P(_t,b),P($a,S),P(I_,L),Xe(V))if(V.length){const N=e.exposed||(e.exposed={});V.forEach(I=>{Object.defineProperty(N,I,{get:()=>n[I],set:U=>n[I]=U})})}else e.exposed||(e.exposed={});$&&e.render===wt&&(e.render=$),B!=null&&(e.inheritAttrs=B),H&&(e.components=H),R&&(e.directives=R)}function V_(e,t,n=wt,o=!1){Xe(e)&&(e=td(e));for(const s in e){const l=e[s];let r;dt(l)?"default"in l?r=Ne(l.from||s,l.default,!0):r=Ne(l.from||s):r=Ne(l),Lt(r)&&o?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[s]=r}}function em(e,t,n){Hn(Xe(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function Sy(e,t,n,o){const s=o.includes(".")?by(n,o):()=>n[o];if(Qe(e)){const l=t[e];et(l)&&pe(s,l)}else if(et(e))pe(s,e.bind(n));else if(dt(e))if(Xe(e))e.forEach(l=>Sy(l,t,n,o));else{const l=et(e.handler)?e.handler.bind(n):t[e.handler];et(l)&&pe(s,l,e)}}function Ey(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:s,optionsCache:l,config:{optionMergeStrategies:r}}=e.appContext,a=l.get(t);let i;return a?i=a:!s.length&&!n&&!o?i=t:(i={},s.length&&s.forEach(u=>zi(i,u,r,!0)),zi(i,t,r)),l.set(t,i),i}function zi(e,t,n,o=!1){const{mixins:s,extends:l}=t;l&&zi(e,l,n,!0),s&&s.forEach(r=>zi(e,r,n,!0));for(const r in t)if(!(o&&r==="expose")){const a=B_[r]||n&&n[r];e[r]=a?a(e[r],t[r]):t[r]}return e}const B_={data:tm,props:As,emits:As,methods:As,computed:As,beforeCreate:sn,created:sn,beforeMount:sn,mounted:sn,beforeUpdate:sn,updated:sn,beforeDestroy:sn,beforeUnmount:sn,destroyed:sn,unmounted:sn,activated:sn,deactivated:sn,errorCaptured:sn,serverPrefetch:sn,components:As,directives:As,watch:H_,provide:tm,inject:F_};function tm(e,t){return t?e?function(){return Zt(et(e)?e.call(this,this):e,et(t)?t.call(this,this):t)}:t:e}function F_(e,t){return As(td(e),td(t))}function td(e){if(Xe(e)){const t={};for(let n=0;n0)&&!(r&16)){if(r&8){const c=e.vnode.dynamicProps;for(let d=0;d{i=!0;const[f,p]=Ty(d,t,!0);Zt(r,f),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!l&&!i)return o.set(e,Ml),Ml;if(Xe(l))for(let c=0;c-1,p[1]=g<0||h-1||rt(p,"default"))&&a.push(d)}}}const u=[r,a];return o.set(e,u),u}function nm(e){return e[0]!=="$"}function om(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function sm(e,t){return om(e)===om(t)}function lm(e,t){return Xe(t)?t.findIndex(n=>sm(n,e)):et(t)&&sm(t,e)?0:-1}const Ay=e=>e[0]==="_"||e==="$stable",Mf=e=>Xe(e)?e.map(go):[go(e)],W_=(e,t,n)=>{const o=j((...s)=>Mf(t(...s)),n);return o._c=!1,o},Ny=(e,t,n)=>{const o=e._ctx;for(const s in e){if(Ay(s))continue;const l=e[s];if(et(l))t[s]=W_(s,l,o);else if(l!=null){const r=Mf(l);t[s]=()=>r}}},My=(e,t)=>{const n=Mf(t);e.slots.default=()=>n},j_=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=$t(t),Vi(t,"_",n)):Ny(t,e.slots={})}else e.slots={},t&&My(e,t);Vi(e.slots,Su,1)},Y_=(e,t,n)=>{const{vnode:o,slots:s}=e;let l=!0,r=Mt;if(o.shapeFlag&32){const a=t._;a?n&&a===1?l=!1:(Zt(s,t),!n&&a===1&&delete s._):(l=!t.$stable,Ny(t,s)),r=t}else t&&(My(e,t),r={default:1});if(l)for(const a in s)!Ay(a)&&!(a in r)&&delete s[a]};function Ge(e,t){const n=$n;if(n===null)return e;const o=n.proxy,s=e.dirs||(e.dirs=[]);for(let l=0;lod(f,t&&(Xe(t)?t[p]:t),n,o,s));return}if(xc(o)&&!s)return;const l=o.shapeFlag&4?Lf(o.component)||o.component.proxy:o.el,r=s?null:l,{i:a,r:i}=e,u=t&&t.r,c=a.refs===Mt?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==i&&(Qe(u)?(c[u]=null,rt(d,u)&&(d[u]=null)):Lt(u)&&(u.value=null)),et(i))Po(i,a,12,[r,c]);else{const f=Qe(i),p=Lt(i);if(f||p){const h=()=>{if(e.f){const g=f?c[i]:i.value;s?Xe(g)&&hf(g,l):Xe(g)?g.includes(l)||g.push(l):f?c[i]=[l]:(i.value=[l],e.k&&(c[e.k]=i.value))}else f?(c[i]=r,rt(d,i)&&(d[i]=r)):Lt(i)&&(i.value=r,e.k&&(c[e.k]=r))};r?(h.id=-1,cn(h,n)):h()}}}const cn=__;function G_(e){return X_(e)}function X_(e,t){const n=NE();n.__VUE__=!0;const{insert:o,remove:s,patchProp:l,createElement:r,createText:a,createComment:i,setText:u,setElementText:c,parentNode:d,nextSibling:f,setScopeId:p=wt,cloneNode:h,insertStaticContent:g}=e,m=(K,X,fe,ye=null,be=null,_e=null,re=!1,se=null,te=!!X.dynamicChildren)=>{if(K===X)return;K&&!Ps(K,X)&&(ye=Ce(K),ae(K,be,_e,!0),K=null),X.patchFlag===-2&&(te=!1,X.dynamicChildren=null);const{type:ue,ref:Re,shapeFlag:F}=X;switch(ue){case Sa:v(K,X,fe,ye);break;case pn:b(K,X,fe,ye);break;case oc:K==null&&w(X,fe,ye,re);break;case Le:R(K,X,fe,ye,be,_e,re,se,te);break;default:F&1?k(K,X,fe,ye,be,_e,re,se,te):F&6?z(K,X,fe,ye,be,_e,re,se,te):(F&64||F&128)&&ue.process(K,X,fe,ye,be,_e,re,se,te,Oe)}Re!=null&&be&&od(Re,K&&K.ref,_e,X||K,!X)},v=(K,X,fe,ye)=>{if(K==null)o(X.el=a(X.children),fe,ye);else{const be=X.el=K.el;X.children!==K.children&&u(be,X.children)}},b=(K,X,fe,ye)=>{K==null?o(X.el=i(X.children||""),fe,ye):X.el=K.el},w=(K,X,fe,ye)=>{[K.el,K.anchor]=g(K.children,X,fe,ye,K.el,K.anchor)},S=({el:K,anchor:X},fe,ye)=>{let be;for(;K&&K!==X;)be=f(K),o(K,fe,ye),K=be;o(X,fe,ye)},$=({el:K,anchor:X})=>{let fe;for(;K&&K!==X;)fe=f(K),s(K),K=fe;s(X)},k=(K,X,fe,ye,be,_e,re,se,te)=>{re=re||X.type==="svg",K==null?T(X,fe,ye,be,_e,re,se,te):V(K,X,be,_e,re,se,te)},T=(K,X,fe,ye,be,_e,re,se)=>{let te,ue;const{type:Re,props:F,shapeFlag:de,transition:Fe,patchFlag:Je,dirs:He}=K;if(K.el&&h!==void 0&&Je===-1)te=K.el=h(K.el);else{if(te=K.el=r(K.type,_e,F&&F.is,F),de&8?c(te,K.children):de&16&&L(K.children,te,null,ye,be,_e&&Re!=="foreignObject",re,se),He&&$s(K,null,ye,"created"),F){for(const me in F)me!=="value"&&!si(me)&&l(te,me,null,F[me],_e,K.children,ye,be,ve);"value"in F&&l(te,"value",null,F.value),(ue=F.onVnodeBeforeMount)&&vo(ue,ye,K)}O(te,K,K.scopeId,re,ye)}He&&$s(K,null,ye,"beforeMount");const oe=(!be||be&&!be.pendingBranch)&&Fe&&!Fe.persisted;oe&&Fe.beforeEnter(te),o(te,X,fe),((ue=F&&F.onVnodeMounted)||oe||He)&&cn(()=>{ue&&vo(ue,ye,K),oe&&Fe.enter(te),He&&$s(K,null,ye,"mounted")},be)},O=(K,X,fe,ye,be)=>{if(fe&&p(K,fe),ye)for(let _e=0;_e{for(let ue=te;ue{const se=X.el=K.el;let{patchFlag:te,dynamicChildren:ue,dirs:Re}=X;te|=K.patchFlag&16;const F=K.props||Mt,de=X.props||Mt;let Fe;fe&&ks(fe,!1),(Fe=de.onVnodeBeforeUpdate)&&vo(Fe,fe,X,K),Re&&$s(X,K,fe,"beforeUpdate"),fe&&ks(fe,!0);const Je=be&&X.type!=="foreignObject";if(ue?B(K.dynamicChildren,ue,se,fe,ye,Je,_e):re||U(K,X,se,null,fe,ye,Je,_e,!1),te>0){if(te&16)H(se,X,F,de,fe,ye,be);else if(te&2&&F.class!==de.class&&l(se,"class",null,de.class,be),te&4&&l(se,"style",F.style,de.style,be),te&8){const He=X.dynamicProps;for(let oe=0;oe{Fe&&vo(Fe,fe,X,K),Re&&$s(X,K,fe,"updated")},ye)},B=(K,X,fe,ye,be,_e,re)=>{for(let se=0;se{if(fe!==ye){for(const se in ye){if(si(se))continue;const te=ye[se],ue=fe[se];te!==ue&&se!=="value"&&l(K,se,ue,te,re,X.children,be,_e,ve)}if(fe!==Mt)for(const se in fe)!si(se)&&!(se in ye)&&l(K,se,fe[se],null,re,X.children,be,_e,ve);"value"in ye&&l(K,"value",fe.value,ye.value)}},R=(K,X,fe,ye,be,_e,re,se,te)=>{const ue=X.el=K?K.el:a(""),Re=X.anchor=K?K.anchor:a("");let{patchFlag:F,dynamicChildren:de,slotScopeIds:Fe}=X;Fe&&(se=se?se.concat(Fe):Fe),K==null?(o(ue,fe,ye),o(Re,fe,ye),L(X.children,fe,Re,be,_e,re,se,te)):F>0&&F&64&&de&&K.dynamicChildren?(B(K.dynamicChildren,de,fe,be,_e,re,se),(X.key!=null||be&&X===be.subTree)&&Of(K,X,!0)):U(K,X,fe,Re,be,_e,re,se,te)},z=(K,X,fe,ye,be,_e,re,se,te)=>{X.slotScopeIds=se,K==null?X.shapeFlag&512?be.ctx.activate(X,fe,ye,re,te):W(X,fe,ye,be,_e,re,te):P(K,X,te)},W=(K,X,fe,ye,be,_e,re)=>{const se=K.component=aT(K,ye,be);if($u(K)&&(se.ctx.renderer=Oe),iT(se),se.asyncDep){if(be&&be.registerDep(se,N),!K.el){const te=se.subTree=Y(pn);b(null,te,X,fe)}return}N(se,K,X,fe,be,_e,re)},P=(K,X,fe)=>{const ye=X.component=K.component;if(k_(K,X,fe))if(ye.asyncDep&&!ye.asyncResolved){I(ye,X,fe);return}else ye.next=X,g_(ye.update),ye.update();else X.component=K.component,X.el=K.el,ye.vnode=X},N=(K,X,fe,ye,be,_e,re)=>{const se=()=>{if(K.isMounted){let{next:Re,bu:F,u:de,parent:Fe,vnode:Je}=K,He=Re,oe;ks(K,!1),Re?(Re.el=Je.el,I(K,Re,re)):Re=Je,F&&ri(F),(oe=Re.props&&Re.props.onVnodeBeforeUpdate)&&vo(oe,Fe,Re,Je),ks(K,!0);const me=tc(K),ce=K.subTree;K.subTree=me,m(ce,me,d(ce.el),Ce(ce),K,be,_e),Re.el=me.el,He===null&&S_(K,me.el),de&&cn(de,be),(oe=Re.props&&Re.props.onVnodeUpdated)&&cn(()=>vo(oe,Fe,Re,Je),be)}else{let Re;const{el:F,props:de}=X,{bm:Fe,m:Je,parent:He}=K,oe=xc(X);if(ks(K,!1),Fe&&ri(Fe),!oe&&(Re=de&&de.onVnodeBeforeMount)&&vo(Re,He,X),ks(K,!0),F&&qe){const me=()=>{K.subTree=tc(K),qe(F,K.subTree,K,be,null)};oe?X.type.__asyncLoader().then(()=>!K.isUnmounted&&me()):me()}else{const me=K.subTree=tc(K);m(null,me,fe,ye,K,be,_e),X.el=me.el}if(Je&&cn(Je,be),!oe&&(Re=de&&de.onVnodeMounted)){const me=X;cn(()=>vo(Re,He,me),be)}X.shapeFlag&256&&K.a&&cn(K.a,be),K.isMounted=!0,X=fe=ye=null}},te=K.effect=new bf(se,()=>dy(K.update),K.scope),ue=K.update=te.run.bind(te);ue.id=K.uid,ks(K,!0),ue()},I=(K,X,fe)=>{X.component=K;const ye=K.vnode.props;K.vnode=X,K.next=null,K_(K,X.props,ye,fe),Y_(K,X.children,fe),al(),_f(void 0,K.update),il()},U=(K,X,fe,ye,be,_e,re,se,te=!1)=>{const ue=K&&K.children,Re=K?K.shapeFlag:0,F=X.children,{patchFlag:de,shapeFlag:Fe}=X;if(de>0){if(de&128){Q(ue,F,fe,ye,be,_e,re,se,te);return}else if(de&256){q(ue,F,fe,ye,be,_e,re,se,te);return}}Fe&8?(Re&16&&ve(ue,be,_e),F!==ue&&c(fe,F)):Re&16?Fe&16?Q(ue,F,fe,ye,be,_e,re,se,te):ve(ue,be,_e,!0):(Re&8&&c(fe,""),Fe&16&&L(F,fe,ye,be,_e,re,se,te))},q=(K,X,fe,ye,be,_e,re,se,te)=>{K=K||Ml,X=X||Ml;const ue=K.length,Re=X.length,F=Math.min(ue,Re);let de;for(de=0;deRe?ve(K,be,_e,!0,!1,F):L(X,fe,ye,be,_e,re,se,te,F)},Q=(K,X,fe,ye,be,_e,re,se,te)=>{let ue=0;const Re=X.length;let F=K.length-1,de=Re-1;for(;ue<=F&&ue<=de;){const Fe=K[ue],Je=X[ue]=te?ts(X[ue]):go(X[ue]);if(Ps(Fe,Je))m(Fe,Je,fe,null,be,_e,re,se,te);else break;ue++}for(;ue<=F&&ue<=de;){const Fe=K[F],Je=X[de]=te?ts(X[de]):go(X[de]);if(Ps(Fe,Je))m(Fe,Je,fe,null,be,_e,re,se,te);else break;F--,de--}if(ue>F){if(ue<=de){const Fe=de+1,Je=Fede)for(;ue<=F;)ae(K[ue],be,_e,!0),ue++;else{const Fe=ue,Je=ue,He=new Map;for(ue=Je;ue<=de;ue++){const bt=X[ue]=te?ts(X[ue]):go(X[ue]);bt.key!=null&&He.set(bt.key,ue)}let oe,me=0;const ce=de-Je+1;let Ae=!1,Ue=0;const mt=new Array(ce);for(ue=0;ue=ce){ae(bt,be,_e,!0);continue}let At;if(bt.key!=null)At=He.get(bt.key);else for(oe=Je;oe<=de;oe++)if(mt[oe-Je]===0&&Ps(bt,X[oe])){At=oe;break}At===void 0?ae(bt,be,_e,!0):(mt[At-Je]=ue+1,At>=Ue?Ue=At:Ae=!0,m(bt,X[At],fe,null,be,_e,re,se,te),me++)}const St=Ae?Z_(mt):Ml;for(oe=St.length-1,ue=ce-1;ue>=0;ue--){const bt=Je+ue,At=X[bt],Dn=bt+1{const{el:_e,type:re,transition:se,children:te,shapeFlag:ue}=K;if(ue&6){Z(K.component.subTree,X,fe,ye);return}if(ue&128){K.suspense.move(X,fe,ye);return}if(ue&64){re.move(K,X,fe,Oe);return}if(re===Le){o(_e,X,fe);for(let F=0;Fse.enter(_e),be);else{const{leave:F,delayLeave:de,afterLeave:Fe}=se,Je=()=>o(_e,X,fe),He=()=>{F(_e,()=>{Je(),Fe&&Fe()})};de?de(_e,Je,He):He()}else o(_e,X,fe)},ae=(K,X,fe,ye=!1,be=!1)=>{const{type:_e,props:re,ref:se,children:te,dynamicChildren:ue,shapeFlag:Re,patchFlag:F,dirs:de}=K;if(se!=null&&od(se,null,fe,K,!0),Re&256){X.ctx.deactivate(K);return}const Fe=Re&1&&de,Je=!xc(K);let He;if(Je&&(He=re&&re.onVnodeBeforeUnmount)&&vo(He,X,K),Re&6)J(K.component,fe,ye);else{if(Re&128){K.suspense.unmount(fe,ye);return}Fe&&$s(K,null,X,"beforeUnmount"),Re&64?K.type.remove(K,X,fe,be,Oe,ye):ue&&(_e!==Le||F>0&&F&64)?ve(ue,X,fe,!1,!0):(_e===Le&&F&384||!be&&Re&16)&&ve(te,X,fe),ye&&Ee(K)}(Je&&(He=re&&re.onVnodeUnmounted)||Fe)&&cn(()=>{He&&vo(He,X,K),Fe&&$s(K,null,X,"unmounted")},fe)},Ee=K=>{const{type:X,el:fe,anchor:ye,transition:be}=K;if(X===Le){Me(fe,ye);return}if(X===oc){$(K);return}const _e=()=>{s(fe),be&&!be.persisted&&be.afterLeave&&be.afterLeave()};if(K.shapeFlag&1&&be&&!be.persisted){const{leave:re,delayLeave:se}=be,te=()=>re(fe,_e);se?se(K.el,_e,te):te()}else _e()},Me=(K,X)=>{let fe;for(;K!==X;)fe=f(K),s(K),K=fe;s(X)},J=(K,X,fe)=>{const{bum:ye,scope:be,update:_e,subTree:re,um:se}=K;ye&&ri(ye),be.stop(),_e&&(_e.active=!1,ae(re,K,X,fe)),se&&cn(se,X),cn(()=>{K.isUnmounted=!0},X),X&&X.pendingBranch&&!X.isUnmounted&&K.asyncDep&&!K.asyncResolved&&K.suspenseId===X.pendingId&&(X.deps--,X.deps===0&&X.resolve())},ve=(K,X,fe,ye=!1,be=!1,_e=0)=>{for(let re=_e;reK.shapeFlag&6?Ce(K.component.subTree):K.shapeFlag&128?K.suspense.next():f(K.anchor||K.el),ke=(K,X,fe)=>{K==null?X._vnode&&ae(X._vnode,null,null,!0):m(X._vnode||null,K,X,null,null,null,fe),hy(),X._vnode=K},Oe={p:m,um:ae,m:Z,r:Ee,mt:W,mc:L,pc:U,pbc:B,n:Ce,o:e};let We,qe;return t&&([We,qe]=t(Oe)),{render:ke,hydrate:We,createApp:q_(ke,We)}}function ks({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Of(e,t,n=!1){const o=e.children,s=t.children;if(Xe(o)&&Xe(s))for(let l=0;l>1,e[n[a]]0&&(t[o]=n[l-1]),n[l]=o)}}for(l=n.length,r=n[l-1];l-- >0;)n[l]=r,r=t[r];return n}const J_=e=>e.__isTeleport,Fr=e=>e&&(e.disabled||e.disabled===""),rm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,sd=(e,t)=>{const n=e&&e.to;return Qe(n)?t?t(n):null:n},Q_={__isTeleport:!0,process(e,t,n,o,s,l,r,a,i,u){const{mc:c,pc:d,pbc:f,o:{insert:p,querySelector:h,createText:g,createComment:m}}=u,v=Fr(t.props);let{shapeFlag:b,children:w,dynamicChildren:S}=t;if(e==null){const $=t.el=g(""),k=t.anchor=g("");p($,n,o),p(k,n,o);const T=t.target=sd(t.props,h),O=t.targetAnchor=g("");T&&(p(O,T),r=r||rm(T));const L=(V,B)=>{b&16&&c(w,V,B,s,l,r,a,i)};v?L(n,k):T&&L(T,O)}else{t.el=e.el;const $=t.anchor=e.anchor,k=t.target=e.target,T=t.targetAnchor=e.targetAnchor,O=Fr(e.props),L=O?n:k,V=O?$:T;if(r=r||rm(k),S?(f(e.dynamicChildren,S,L,s,l,r,a),Of(e,t,!0)):i||d(e,t,L,V,s,l,r,a,!1),v)O||ja(t,n,$,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const B=t.target=sd(t.props,h);B&&ja(t,B,null,u,0)}else O&&ja(t,k,T,u,1)}},remove(e,t,n,o,{um:s,o:{remove:l}},r){const{shapeFlag:a,children:i,anchor:u,targetAnchor:c,target:d,props:f}=e;if(d&&l(c),(r||!Fr(f))&&(l(u),a&16))for(let p=0;p0?js||Ml:null,tT(),Ki>0&&js&&js.push(e),e}function M(e,t,n,o,s,l){return Py(D(e,t,n,o,s,l,!0))}function x(e,t,n,o,s){return Py(Y(e,t,n,o,s,!0))}function Ft(e){return e?e.__v_isVNode===!0:!1}function Ps(e,t){return e.type===t.type&&e.key===t.key}const Su="__vInternal",Dy=({key:e})=>e!=null?e:null,ai=({ref:e,ref_key:t,ref_for:n})=>e!=null?Qe(e)||Lt(e)||et(e)?{i:$n,r:e,k:t,f:!!n}:e:null;function D(e,t=null,n=null,o=0,s=null,l=e===Le?0:1,r=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Dy(t),ref:t&&ai(t),scopeId:gy,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:o,dynamicProps:s,dynamicChildren:null,appContext:null};return a?(Df(i,n),l&128&&e.normalize(i)):n&&(i.shapeFlag|=Qe(n)?8:16),Ki>0&&!r&&js&&(i.patchFlag>0||l&6)&&i.patchFlag!==32&&js.push(i),i}const Y=nT;function nT(e,t=null,n=null,o=0,s=null,l=!1){if((!e||e===Iy)&&(e=pn),Ft(e)){const a=el(e,t,!0);return n&&Df(a,n),a}if(pT(e)&&(e=e.__vccOpts),t){t=ds(t);let{class:a,style:i}=t;a&&!Qe(a)&&(t.class=_(a)),dt(i)&&(ly(i)&&!Xe(i)&&(i=Zt({},i)),t.style=Pe(i))}const r=Qe(e)?1:E_(e)?128:J_(e)?64:dt(e)?4:et(e)?2:0;return D(e,t,n,o,s,r,l,!0)}function ds(e){return e?ly(e)||Su in e?Zt({},e):e:null}function el(e,t,n=!1){const{props:o,ref:s,patchFlag:l,children:r}=e,a=t?Et(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Dy(a),ref:t&&t.ref?n&&s?Xe(s)?s.concat(ai(t)):[s,ai(t)]:ai(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Le?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&el(e.ssContent),ssFallback:e.ssFallback&&el(e.ssFallback),el:e.el,anchor:e.anchor}}function at(e=" ",t=0){return Y(Sa,null,e,t)}function G(e="",t=!1){return t?(C(),x(pn,null,e)):Y(pn,null,e)}function go(e){return e==null||typeof e=="boolean"?Y(pn):Xe(e)?Y(Le,null,e.slice()):typeof e=="object"?ts(e):Y(Sa,null,String(e))}function ts(e){return e.el===null||e.memo?e:el(e)}function Df(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(Xe(t))n=16;else if(typeof t=="object")if(o&65){const s=t.default;s&&(s._c&&(s._d=!1),Df(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Su in t)?t._ctx=$n:s===3&&$n&&($n.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else et(t)?(t={default:t,_ctx:$n},n=32):(t=String(t),o&64?(n=16,t=[at(t)]):n=8);e.children=t,e.shapeFlag|=n}function Et(...e){const t={};for(let n=0;nt(r,a,void 0,l&&l[a]));else{const r=Object.keys(e);s=new Array(r.length);for(let a=0,i=r.length;aFt(t)?!(t.type===pn||t.type===Le&&!Ly(t.children)):!0)?e:null}function oT(e){const t={};for(const n in e)t[li(n)]=e[n];return t}const ld=e=>e?Ry(e)?Lf(e)||e.proxy:ld(e.parent):null,Wi=Zt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ld(e.parent),$root:e=>ld(e.root),$emit:e=>e.emit,$options:e=>Ey(e),$forceUpdate:e=>()=>dy(e.update),$nextTick:e=>ze.bind(e.proxy),$watch:e=>T_.bind(e)}),sT={get({_:e},t){const{ctx:n,setupState:o,data:s,props:l,accessCache:r,type:a,appContext:i}=e;let u;if(t[0]!=="$"){const p=r[t];if(p!==void 0)switch(p){case 1:return o[t];case 2:return s[t];case 4:return n[t];case 3:return l[t]}else{if(o!==Mt&&rt(o,t))return r[t]=1,o[t];if(s!==Mt&&rt(s,t))return r[t]=2,s[t];if((u=e.propsOptions[0])&&rt(u,t))return r[t]=3,l[t];if(n!==Mt&&rt(n,t))return r[t]=4,n[t];ed&&(r[t]=0)}}const c=Wi[t];let d,f;if(c)return t==="$attrs"&&Nn(e,"get",t),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==Mt&&rt(n,t))return r[t]=4,n[t];if(f=i.config.globalProperties,rt(f,t))return f[t]},set({_:e},t,n){const{data:o,setupState:s,ctx:l}=e;return s!==Mt&&rt(s,t)?(s[t]=n,!0):o!==Mt&&rt(o,t)?(o[t]=n,!0):rt(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:s,propsOptions:l}},r){let a;return!!n[r]||e!==Mt&&rt(e,r)||t!==Mt&&rt(t,r)||(a=l[0])&&rt(a,r)||rt(o,r)||rt(Wi,r)||rt(s.config.globalProperties,r)},defineProperty(e,t,n){return n.get!=null?this.set(e,t,n.get(),null):n.value!=null&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},lT=Oy();let rT=0;function aT(e,t,n){const o=e.type,s=(t?t.appContext:e.appContext)||lT,l={uid:rT++,vnode:e,type:o,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new Ub(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ty(o,s),emitsOptions:vy(o,s),emit:null,emitted:null,propsDefaults:Mt,inheritAttrs:o.inheritAttrs,ctx:Mt,data:Mt,props:Mt,attrs:Mt,slots:Mt,refs:Mt,setupState:Mt,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return l.ctx={_:l},l.root=t?t.root:l,l.emit=w_.bind(null,l),e.ce&&e.ce(l),l}let Xt=null;const nt=()=>Xt||$n,Yl=e=>{Xt=e,e.scope.on()},Ys=()=>{Xt&&Xt.scope.off(),Xt=null};function Ry(e){return e.vnode.shapeFlag&4}let ea=!1;function iT(e,t=!1){ea=t;const{props:n,children:o}=e.vnode,s=Ry(e);z_(e,n,s,t),j_(e,o);const l=s?uT(e,t):void 0;return ea=!1,l}function uT(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Xr(new Proxy(e.ctx,sT));const{setup:o}=n;if(o){const s=e.setupContext=o.length>1?By(e):null;Yl(e),al();const l=Po(o,e,0,[e.props,s]);if(il(),Ys(),xs(l)){if(l.then(Ys,Ys),t)return l.then(r=>{um(e,r,t)}).catch(r=>{Cu(r,e,0)});e.asyncDep=l}else um(e,l,t)}else Vy(e,t)}function um(e,t,n){et(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:dt(t)&&(e.setupState=iy(t)),Vy(e,n)}let cm;function Vy(e,t,n){const o=e.type;if(!e.render){if(!t&&cm&&!o.render){const s=o.template;if(s){const{isCustomElement:l,compilerOptions:r}=e.appContext.config,{delimiters:a,compilerOptions:i}=o,u=Zt(Zt({isCustomElement:l,delimiters:a},r),i);o.render=cm(s,u)}}e.render=o.render||wt}Yl(e),al(),R_(e),il(),Ys()}function cT(e){return new Proxy(e.attrs,{get(t,n){return Nn(e,"get","$attrs"),t[n]}})}function By(e){const t=o=>{e.exposed=o||{}};let n;return{get attrs(){return n||(n=cT(e))},slots:e.slots,emit:e.emit,expose:t}}function Lf(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(iy(Xr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Wi)return Wi[n](e)}}))}const dT=/(?:^|[-_])(\w)/g,fT=e=>e.replace(dT,t=>t.toUpperCase()).replace(/[-_]/g,"");function Fy(e){return et(e)&&e.displayName||e.name}function Hy(e,t,n=!1){let o=Fy(t);if(!o&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(o=s[1])}if(!o&&e&&e.parent){const s=l=>{for(const r in l)if(l[r]===t)return r};o=s(e.components||e.parent.type.components)||s(e.appContext.components)}return o?fT(o):n?"App":"Anonymous"}function pT(e){return et(e)&&"__vccOpts"in e}const E=(e,t)=>u_(e,t,ea);function Ea(){return Ky().slots}function zy(){return Ky().attrs}function Ky(){const e=nt();return e.setupContext||(e.setupContext=By(e))}function De(e,t,n){const o=arguments.length;return o===2?dt(t)&&!Xe(t)?Ft(t)?Y(e,null,[t]):Y(e,t):Y(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&Ft(n)&&(n=[n]),Y(e,t,n))}const hT="3.2.31",mT="http://www.w3.org/2000/svg",Ds=typeof document!="undefined"?document:null,dm=Ds&&Ds.createElement("template"),vT={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const s=t?Ds.createElementNS(mT,e):Ds.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&s.setAttribute("multiple",o.multiple),s},createText:e=>Ds.createTextNode(e),createComment:e=>Ds.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ds.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,o,s,l){const r=n?n.previousSibling:t.lastChild;if(s&&(s===l||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===l||!(s=s.nextSibling)););else{dm.innerHTML=o?`${e}`:e;const a=dm.content;if(o){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function gT(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function bT(e,t,n){const o=e.style,s=Qe(n);if(n&&!s){for(const l in n)rd(o,l,n[l]);if(t&&!Qe(t))for(const l in t)n[l]==null&&rd(o,l,"")}else{const l=o.display;s?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=l)}}const fm=/\s*!important$/;function rd(e,t,n){if(Xe(n))n.forEach(o=>rd(e,t,o));else if(t.startsWith("--"))e.setProperty(t,n);else{const o=yT(e,t);fm.test(n)?e.setProperty(vs(o),n.replace(fm,""),"important"):e[o]=n}}const pm=["Webkit","Moz","ms"],sc={};function yT(e,t){const n=sc[t];if(n)return n;let o=Wn(t);if(o!=="filter"&&o in e)return sc[t]=o;o=yn(o);for(let s=0;sdocument.createEvent("Event").timeStamp&&(ji=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);Wy=!!(e&&Number(e[1])<=53)}let ad=0;const $T=Promise.resolve(),kT=()=>{ad=0},ST=()=>ad||($T.then(kT),ad=ji());function ns(e,t,n,o){e.addEventListener(t,n,o)}function ET(e,t,n,o){e.removeEventListener(t,n,o)}function _T(e,t,n,o,s=null){const l=e._vei||(e._vei={}),r=l[t];if(o&&r)r.value=o;else{const[a,i]=TT(t);if(o){const u=l[t]=AT(o,s);ns(e,a,u,i)}else r&&(ET(e,a,r,i),l[t]=void 0)}}const mm=/(?:Once|Passive|Capture)$/;function TT(e){let t;if(mm.test(e)){t={};let n;for(;n=e.match(mm);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[vs(e.slice(2)),t]}function AT(e,t){const n=o=>{const s=o.timeStamp||ji();(Wy||s>=n.attached-1)&&Hn(NT(o,n.value),t,5,[o])};return n.value=e,n.attached=ST(),n}function NT(e,t){if(Xe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>s=>!s._stopped&&o&&o(s))}else return t}const vm=/^on[a-z]/,MT=(e,t,n,o,s=!1,l,r,a,i)=>{t==="class"?gT(e,o,s):t==="style"?bT(e,n,o):gu(t)?pf(t)||_T(e,t,n,o,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):OT(e,t,o,s))?CT(e,t,o,l,r,a,i):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),wT(e,t,o,s))};function OT(e,t,n,o){return o?!!(t==="innerHTML"||t==="textContent"||t in e&&vm.test(t)&&et(n)):t==="spellcheck"||t==="draggable"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||vm.test(t)&&Qe(n)?!1:t in e}const Zo="transition",Cr="animation",zt=(e,{slots:t})=>De(wy,Yy(e),t);zt.displayName="Transition";const jy={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},IT=zt.props=Zt({},wy.props,jy),Ss=(e,t=[])=>{Xe(e)?e.forEach(n=>n(...t)):e&&e(...t)},gm=e=>e?Xe(e)?e.some(t=>t.length>1):e.length>1:!1;function Yy(e){const t={};for(const H in e)H in jy||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:o,duration:s,enterFromClass:l=`${n}-enter-from`,enterActiveClass:r=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=l,appearActiveClass:u=r,appearToClass:c=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=PT(s),g=h&&h[0],m=h&&h[1],{onBeforeEnter:v,onEnter:b,onEnterCancelled:w,onLeave:S,onLeaveCancelled:$,onBeforeAppear:k=v,onAppear:T=b,onAppearCancelled:O=w}=t,L=(H,R,z)=>{Ns(H,R?c:a),Ns(H,R?u:r),z&&z()},V=(H,R)=>{Ns(H,p),Ns(H,f),R&&R()},B=H=>(R,z)=>{const W=H?T:b,P=()=>L(R,H,z);Ss(W,[R,P]),bm(()=>{Ns(R,H?i:l),No(R,H?c:a),gm(W)||ym(R,o,g,P)})};return Zt(t,{onBeforeEnter(H){Ss(v,[H]),No(H,l),No(H,r)},onBeforeAppear(H){Ss(k,[H]),No(H,i),No(H,u)},onEnter:B(!1),onAppear:B(!0),onLeave(H,R){const z=()=>V(H,R);No(H,d),qy(),No(H,f),bm(()=>{Ns(H,d),No(H,p),gm(S)||ym(H,o,m,z)}),Ss(S,[H,z])},onEnterCancelled(H){L(H,!1),Ss(w,[H])},onAppearCancelled(H){L(H,!0),Ss(O,[H])},onLeaveCancelled(H){V(H),Ss($,[H])}})}function PT(e){if(e==null)return null;if(dt(e))return[lc(e.enter),lc(e.leave)];{const t=lc(e);return[t,t]}}function lc(e){return Bi(e)}function No(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ns(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function bm(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let DT=0;function ym(e,t,n,o){const s=e._endId=++DT,l=()=>{s===e._endId&&o()};if(n)return setTimeout(l,n);const{type:r,timeout:a,propCount:i}=Uy(e,t);if(!r)return o();const u=r+"end";let c=0;const d=()=>{e.removeEventListener(u,f),l()},f=p=>{p.target===e&&++c>=i&&d()};setTimeout(()=>{c(n[h]||"").split(", "),s=o(Zo+"Delay"),l=o(Zo+"Duration"),r=wm(s,l),a=o(Cr+"Delay"),i=o(Cr+"Duration"),u=wm(a,i);let c=null,d=0,f=0;t===Zo?r>0&&(c=Zo,d=r,f=l.length):t===Cr?u>0&&(c=Cr,d=u,f=i.length):(d=Math.max(r,u),c=d>0?r>u?Zo:Cr:null,f=c?c===Zo?l.length:i.length:0);const p=c===Zo&&/\b(transform|all)(,|$)/.test(n[Zo+"Property"]);return{type:c,timeout:d,propCount:f,hasTransform:p}}function wm(e,t){for(;e.lengthCm(n)+Cm(e[o])))}function Cm(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function qy(){return document.body.offsetHeight}const Gy=new WeakMap,Xy=new WeakMap,LT={name:"TransitionGroup",props:Zt({},IT,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=nt(),o=yy();let s,l;return Xn(()=>{if(!s.length)return;const r=e.moveClass||`${e.name||"v"}-move`;if(!HT(s[0].el,n.vnode.el,r))return;s.forEach(VT),s.forEach(BT);const a=s.filter(FT);qy(),a.forEach(i=>{const u=i.el,c=u.style;No(u,r),c.transform=c.webkitTransform=c.transitionDuration="";const d=u._moveCb=f=>{f&&f.target!==u||(!f||/transform$/.test(f.propertyName))&&(u.removeEventListener("transitionend",d),u._moveCb=null,Ns(u,r))};u.addEventListener("transitionend",d)})}),()=>{const r=$t(e),a=Yy(r);let i=r.tag||Le;s=l,l=t.default?Nf(t.default()):[];for(let u=0;u{r.split(/\s+/).forEach(a=>a&&o.classList.remove(a))}),n.split(/\s+/).forEach(r=>r&&o.classList.add(r)),o.style.display="none";const s=t.nodeType===1?t:t.parentNode;s.appendChild(o);const{hasTransform:l}=Uy(o);return s.removeChild(o),l}const Ul=e=>{const t=e.props["onUpdate:modelValue"];return Xe(t)?n=>ri(t,n):t};function zT(e){e.target.composing=!0}function $m(e){const t=e.target;t.composing&&(t.composing=!1,KT(t,"input"))}function KT(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}const Rf={created(e,{modifiers:{lazy:t,trim:n,number:o}},s){e._assign=Ul(s);const l=o||s.props&&s.props.type==="number";ns(e,t?"change":"input",r=>{if(r.target.composing)return;let a=e.value;n?a=a.trim():l&&(a=Bi(a)),e._assign(a)}),n&&ns(e,"change",()=>{e.value=e.value.trim()}),t||(ns(e,"compositionstart",zT),ns(e,"compositionend",$m),ns(e,"change",$m))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:s}},l){if(e._assign=Ul(l),e.composing||document.activeElement===e&&(n||o&&e.value.trim()===t||(s||e.type==="number")&&Bi(e.value)===t))return;const r=t==null?"":t;e.value!==r&&(e.value=r)}},Yi={deep:!0,created(e,t,n){e._assign=Ul(n),ns(e,"change",()=>{const o=e._modelValue,s=Jy(e),l=e.checked,r=e._assign;if(Xe(o)){const a=Kb(o,s),i=a!==-1;if(l&&!i)r(o.concat(s));else if(!l&&i){const u=[...o];u.splice(a,1),r(u)}}else if(bu(o)){const a=new Set(o);l?a.add(s):a.delete(s),r(a)}else r(Qy(e,l))})},mounted:km,beforeUpdate(e,t,n){e._assign=Ul(n),km(e,t,n)}};function km(e,{value:t,oldValue:n},o){e._modelValue=t,Xe(t)?e.checked=Kb(t,o.props.value)>-1:bu(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=jl(t,Qy(e,!0)))}const Zy={created(e,{value:t},n){e.checked=jl(t,n.props.value),e._assign=Ul(n),ns(e,"change",()=>{e._assign(Jy(e))})},beforeUpdate(e,{value:t,oldValue:n},o){e._assign=Ul(o),t!==n&&(e.checked=jl(t,o.props.value))}};function Jy(e){return"_value"in e?e._value:e.value}function Qy(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const WT=["ctrl","shift","alt","meta"],jT={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>WT.some(n=>e[`${n}Key`]&&!t.includes(n))},Ke=(e,t)=>(n,...o)=>{for(let s=0;sn=>{if(!("key"in n))return;const o=vs(n.key);if(t.some(s=>s===o||YT[s]===o))return e(n)},pt={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):$r(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),$r(e,!0),o.enter(e)):o.leave(e,()=>{$r(e,!1)}):$r(e,t))},beforeUnmount(e,{value:t}){$r(e,t)}};function $r(e,t){e.style.display=t?e._vod:"none"}const UT=Zt({patchProp:MT},vT);let Sm;function xy(){return Sm||(Sm=G_(UT))}const ql=(...e)=>{xy().render(...e)},e0=(...e)=>{const t=xy().createApp(...e),{mount:n}=t;return t.mount=o=>{const s=qT(o);if(!s)return;const l=t._component;!et(l)&&!l.render&&!l.template&&(l.template=s.innerHTML),s.innerHTML="";const r=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),r},t};function qT(e){return Qe(e)?document.querySelector(e):e}var GT=typeof global=="object"&&global&&global.Object===Object&&global,t0=GT,XT=typeof self=="object"&&self&&self.Object===Object&&self,ZT=t0||XT||Function("return this")(),co=ZT,JT=co.Symbol,jn=JT,n0=Object.prototype,QT=n0.hasOwnProperty,xT=n0.toString,kr=jn?jn.toStringTag:void 0;function eA(e){var t=QT.call(e,kr),n=e[kr];try{e[kr]=void 0;var o=!0}catch{}var s=xT.call(e);return o&&(t?e[kr]=n:delete e[kr]),s}var tA=Object.prototype,nA=tA.toString;function oA(e){return nA.call(e)}var sA="[object Null]",lA="[object Undefined]",Em=jn?jn.toStringTag:void 0;function lr(e){return e==null?e===void 0?lA:sA:Em&&Em in Object(e)?eA(e):oA(e)}function Bo(e){return e!=null&&typeof e=="object"}var rA="[object Symbol]";function Eu(e){return typeof e=="symbol"||Bo(e)&&lr(e)==rA}function aA(e,t){for(var n=-1,o=e==null?0:e.length,s=Array(o);++n0){if(++t>=zA)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function YA(e){return function(){return e}}var UA=function(){try{var e=cl(Object,"defineProperty");return e({},"",{}),e}catch{}}(),Ui=UA,qA=Ui?function(e,t){return Ui(e,"toString",{configurable:!0,enumerable:!1,value:YA(t),writable:!0})}:s0,GA=qA,XA=jA(GA),r0=XA;function ZA(e,t){for(var n=-1,o=e==null?0:e.length;++n-1}var nN=9007199254740991,oN=/^(?:0|[1-9]\d*)$/;function Vf(e,t){var n=typeof e;return t=t==null?nN:t,!!t&&(n=="number"||n!="symbol"&&oN.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=aN}function zf(e){return e!=null&&Hf(e.length)&&!l0(e)}var iN=Object.prototype;function Kf(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||iN;return e===n}function uN(e,t){for(var n=-1,o=Array(e);++n-1}function SM(e,t){var n=this.__data__,o=Tu(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Ko(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?Ou(a,t-1,n,o,s):Gf(s,a):o||(s[s.length]=a)}return s}function KM(e){var t=e==null?0:e.length;return t?Ou(e,1):[]}function WM(e){return r0(i0(e,void 0,KM),e+"")}var jM=h0(Object.getPrototypeOf,Object),v0=jM;function oa(){if(!arguments.length)return[];var e=arguments[0];return so(e)?e:[e]}function YM(){this.__data__=new Ko,this.size=0}function UM(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function qM(e){return this.__data__.get(e)}function GM(e){return this.__data__.has(e)}var XM=200;function ZM(e,t){var n=this.__data__;if(n instanceof Ko){var o=n.__data__;if(!na||o.lengtha))return!1;var u=l.get(e),c=l.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,p=n&RI?new la:void 0;for(l.set(e,t),l.set(t,e);++d=t||T<0||d&&O>=l}function v(){var k=uc();if(m(k))return b(k);a=setTimeout(v,g(k))}function b(k){return a=void 0,f&&o?p(k):(o=s=void 0,r)}function w(){a!==void 0&&clearTimeout(a),u=0,o=i=s=a=void 0}function S(){return a===void 0?r:b(uc())}function $(){var k=uc(),T=m(k);if(o=arguments,s=this,i=k,T){if(a===void 0)return h(i);if(d)return clearTimeout(a),a=setTimeout(v,t),p(i)}return a===void 0&&(a=setTimeout(v,t)),r}return $.cancel=w,$.flush=S,$}function f3(e){return Bo(e)&&zf(e)}function p3(e,t,n){for(var o=-1,s=e==null?0:e.length;++o=S3){var u=t?null:k3(e);if(u)return Jf(u);r=!1,s=S0,i=new la}else i=t?[]:a;e:for(;++ogetComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,tv=e=>Array.from(e.querySelectorAll(T3)).filter(t=>N3(t)&&A3(t)),N3=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ui=function(e,t,...n){let o;t.includes("mouse")||t.includes("click")?o="MouseEvents":t.includes("key")?o="KeyboardEvent":o="HTMLEvents";const s=document.createEvent(o);return s.initEvent(t,...n),e.dispatchEvent(s),e},N0=e=>!e.getAttribute("aria-owns"),M0=(e,t,n)=>{const{parentNode:o}=e;if(!o)return null;const s=o.querySelectorAll(n),l=Array.prototype.indexOf.call(s,e);return s[l+t]||null},ci=e=>{!e||(e.focus(),!N0(e)&&e.click())},Tt=(e,t,n,o=!1)=>{e&&t&&n&&(e==null||e.addEventListener(t,n,o))},Bt=(e,t,n,o=!1)=>{e&&t&&n&&(e==null||e.removeEventListener(t,n,o))},M3=(e,t,n)=>{const o=function(...s){n&&n.apply(this,s),Bt(e,t,o)};Tt(e,t,o)},Pt=(e,t,{checkForDefaultPrevented:n=!0}={})=>s=>{const l=e==null?void 0:e(s);if(n===!1||!l)return t==null?void 0:t(s)},nv=e=>t=>t.pointerType==="mouse"?e(t):void 0;var O3=Object.defineProperty,I3=Object.defineProperties,P3=Object.getOwnPropertyDescriptors,ov=Object.getOwnPropertySymbols,D3=Object.prototype.hasOwnProperty,L3=Object.prototype.propertyIsEnumerable,sv=(e,t,n)=>t in e?O3(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,R3=(e,t)=>{for(var n in t||(t={}))D3.call(t,n)&&sv(e,n,t[n]);if(ov)for(var n of ov(t))L3.call(t,n)&&sv(e,n,t[n]);return e},V3=(e,t)=>I3(e,P3(t));function lv(e,t){var n;const o=jt();return zn(()=>{o.value=e()},V3(R3({},t),{flush:(n=t==null?void 0:t.flush)!=null?n:"sync"})),wa(o)}function Iu(e){return IE()?(qb(e),!0):!1}const ct=typeof window!="undefined",en=e=>typeof e=="boolean",ht=e=>typeof e=="number",B3=e=>typeof e=="string",fc=()=>{};function O0(e,t){function n(...o){e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})}return n}function F3(e,t={}){let n,o;return l=>{const r=y(e),a=y(t.maxWait);if(n&&clearTimeout(n),r<=0||a!==void 0&&a<=0)return o&&(clearTimeout(o),o=null),l();a&&!o&&(o=setTimeout(()=>{n&&clearTimeout(n),o=null,l()},a)),n=setTimeout(()=>{o&&clearTimeout(o),o=null,l()},r)}}function H3(e,t=!0,n=!0){let o=0,s,l=!n;const r=()=>{s&&(clearTimeout(s),s=void 0)};return i=>{const u=y(e),c=Date.now()-o;if(r(),u<=0)return o=Date.now(),i();c>u&&(o=Date.now(),l?l=!1:i()),t&&(s=setTimeout(()=>{o=Date.now(),n||(l=!0),r(),i()},u)),!n&&!s&&(s=setTimeout(()=>l=!0,u))}}function z3(e,t=200,n={}){return O0(F3(t,n),e)}function K3(e,t=200,n={}){if(t<=0)return e;const o=A(e.value),s=z3(()=>{o.value=e.value},t,n);return pe(e,()=>s()),o}function I0(e,t=200,n=!0,o=!0){return O0(H3(t,n,o),e)}function W3(e,t=!0){nt()?xe(e):t?e():ze(e)}function nl(e,t,n={}){const{immediate:o=!0}=n,s=A(!1);let l=null;function r(){l&&(clearTimeout(l),l=null)}function a(){s.value=!1,r()}function i(...u){r(),s.value=!0,l=setTimeout(()=>{s.value=!1,l=null,e(...u)},y(t))}return o&&(s.value=!0,ct&&i()),Iu(a),{isPending:s,start:i,stop:a}}function no(e){var t;const n=y(e);return(t=n==null?void 0:n.$el)!=null?t:n}const _a=ct?window:void 0,j3=ct?window.document:void 0;function Ht(...e){let t,n,o,s;if(B3(e[0])?([n,o,s]=e,t=_a):[t,n,o,s]=e,!t)return fc;let l=fc;const r=pe(()=>no(t),i=>{l(),i&&(i.addEventListener(n,o,s),l=()=>{i.removeEventListener(n,o,s),l=fc})},{immediate:!0,flush:"post"}),a=()=>{r(),l()};return Iu(a),a}function Xi(e,t,n={}){const{window:o=_a,ignore:s,capture:l=!0}=n;if(!o)return;const r=A(!0),i=[Ht(o,"click",c=>{const d=no(e),f=c.composedPath();!d||d===c.target||f.includes(d)||!r.value||s&&s.length>0&&s.some(p=>{const h=no(p);return h&&(c.target===h||f.includes(h))})||t(c)},{passive:!0,capture:l}),Ht(o,"pointerdown",c=>{const d=no(e);r.value=!!d&&!c.composedPath().includes(d)},{passive:!0})];return()=>i.forEach(c=>c())}const fd=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},pd="__vueuse_ssr_handlers__";fd[pd]=fd[pd]||{};fd[pd];function Y3({document:e=j3}={}){if(!e)return A("visible");const t=A(e.visibilityState);return Ht(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var rv=Object.getOwnPropertySymbols,U3=Object.prototype.hasOwnProperty,q3=Object.prototype.propertyIsEnumerable,G3=(e,t)=>{var n={};for(var o in e)U3.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&rv)for(var o of rv(e))t.indexOf(o)<0&&q3.call(e,o)&&(n[o]=e[o]);return n};function rr(e,t,n={}){const o=n,{window:s=_a}=o,l=G3(o,["window"]);let r;const a=s&&"ResizeObserver"in s,i=()=>{r&&(r.disconnect(),r=void 0)},u=pe(()=>no(e),d=>{i(),a&&s&&d&&(r=new ResizeObserver(t),r.observe(d,l))},{immediate:!0,flush:"post"}),c=()=>{i(),u()};return Iu(c),{isSupported:a,stop:c}}function av(e,t={}){const{reset:n=!0,windowResize:o=!0,windowScroll:s=!0}=t,l=A(0),r=A(0),a=A(0),i=A(0),u=A(0),c=A(0),d=A(0),f=A(0);function p(){const h=no(e);if(!h){n&&(l.value=0,r.value=0,a.value=0,i.value=0,u.value=0,c.value=0,d.value=0,f.value=0);return}const g=h.getBoundingClientRect();l.value=g.height,r.value=g.bottom,a.value=g.left,i.value=g.right,u.value=g.top,c.value=g.width,d.value=g.x,f.value=g.y}return rr(e,p),pe(()=>no(e),h=>!h&&p()),s&&Ht("scroll",p,{passive:!0}),o&&Ht("resize",p,{passive:!0}),{height:l,bottom:r,left:a,right:i,top:u,width:c,x:d,y:f,update:p}}var iv,uv;ct&&(window==null?void 0:window.navigator)&&((iv=window==null?void 0:window.navigator)==null?void 0:iv.platform)&&/iP(ad|hone|od)/.test((uv=window==null?void 0:window.navigator)==null?void 0:uv.platform);function X3({window:e=_a}={}){if(!e)return A(!1);const t=A(e.document.hasFocus());return Ht(e,"blur",()=>{t.value=!1}),Ht(e,"focus",()=>{t.value=!0}),t}function Z3({window:e=_a,initialWidth:t=1/0,initialHeight:n=1/0}={}){const o=A(t),s=A(n),l=()=>{e&&(o.value=e.innerWidth,s.value=e.innerHeight)};return l(),W3(l),Ht("resize",l,{passive:!0}),{width:o,height:s}}const J3=(e,t)=>{if(!ct||!e||!t)return!1;const n=e.getBoundingClientRect();let o;return t instanceof Element?o=t.getBoundingClientRect():o={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},n.topo.top&&n.right>o.left&&n.left{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},Q3=(e,t)=>Math.abs(cv(e)-cv(t)),xf=e=>{let t,n;return e.type==="touchend"?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},x3=function(e){for(const t of e){const n=t.target.__resizeListeners__||[];n.length&&n.forEach(o=>{o()})}},ar=function(e,t){!ct||!e||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new ResizeObserver(x3),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},ir=function(e,t){var n;!e||!e.__resizeListeners__||(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||(n=e.__ro__)==null||n.disconnect())},Cn=e=>e===void 0,ra=e=>!e&&e!==0||Xe(e)&&e.length===0||dt(e)&&!Object.keys(e).length,ol=e=>typeof Element=="undefined"?!1:e instanceof Element,e4=e=>Qf(e),t4=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),hd=e=>Object.keys(e),n4=e=>Object.entries(e),di=(e,t,n)=>({get value(){return It(e,t,n)},set value(o){y3(e,t,o)}}),P0=(e="")=>e.split(" ").filter(t=>!!t.trim()),oo=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},wo=(e,t)=>{!e||!t.trim()||e.classList.add(...P0(t))},fn=(e,t)=>{!e||!t.trim()||e.classList.remove(...P0(t))},bo=(e,t)=>{var n;if(!ct||!e||!t)return"";Wn(t);try{const o=e.style[t];if(o)return o;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[t]:""}catch{return e.style[t]}},o4=(e,t)=>{if(!ct)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],o=bo(e,n);return["scroll","auto","overlay"].some(s=>o.includes(s))},ep=(e,t)=>{if(!ct)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(o4(n,t))return n;n=n.parentNode}return n};let Ua;const s4=()=>{var e;if(!ct)return 0;if(Ua!==void 0)return Ua;const t=document.createElement("div");t.className="el-scrollbar__wrap",t.style.visibility="hidden",t.style.width="100px",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t);const n=t.offsetWidth;t.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",t.appendChild(o);const s=o.offsetWidth;return(e=t.parentNode)==null||e.removeChild(t),Ua=n-s,Ua};function D0(e,t){if(!ct)return;if(!t){e.scrollTop=0;return}const n=[];let o=t.offsetParent;for(;o!==null&&e!==o&&e.contains(o);)n.push(o),o=o.offsetParent;const s=t.offsetTop+n.reduce((i,u)=>i+u.offsetTop,0),l=s+t.offsetHeight,r=e.scrollTop,a=r+e.clientHeight;sa&&(e.scrollTop=l-e.clientHeight)}var gt=(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n};const l4=ee({name:"ArrowDown"}),r4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},a4=D("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"},null,-1),i4=[a4];function u4(e,t,n,o,s,l){return C(),M("svg",r4,i4)}var dl=gt(l4,[["render",u4]]);const c4=ee({name:"ArrowLeft"}),d4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},f4=D("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"},null,-1),p4=[f4];function h4(e,t,n,o,s,l){return C(),M("svg",d4,p4)}var fl=gt(c4,[["render",h4]]);const m4=ee({name:"ArrowRight"}),v4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},g4=D("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"},null,-1),b4=[g4];function y4(e,t,n,o,s,l){return C(),M("svg",v4,b4)}var Zn=gt(m4,[["render",y4]]);const w4=ee({name:"ArrowUp"}),C4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},$4=D("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z"},null,-1),k4=[$4];function S4(e,t,n,o,s,l){return C(),M("svg",C4,k4)}var Ta=gt(w4,[["render",S4]]);const E4=ee({name:"Back"}),_4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T4=D("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64z"},null,-1),A4=D("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312L237.248 512z"},null,-1),N4=[T4,A4];function M4(e,t,n,o,s,l){return C(),M("svg",_4,N4)}var O4=gt(E4,[["render",M4]]);const I4=ee({name:"Calendar"}),P4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},D4=D("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z"},null,-1),L4=[D4];function R4(e,t,n,o,s,l){return C(),M("svg",P4,L4)}var V4=gt(I4,[["render",R4]]);const B4=ee({name:"CaretRight"}),F4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},H4=D("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"},null,-1),z4=[H4];function K4(e,t,n,o,s,l){return C(),M("svg",F4,z4)}var L0=gt(B4,[["render",K4]]);const W4=ee({name:"CaretTop"}),j4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y4=D("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"},null,-1),U4=[Y4];function q4(e,t,n,o,s,l){return C(),M("svg",j4,U4)}var G4=gt(W4,[["render",q4]]);const X4=ee({name:"Check"}),Z4={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},J4=D("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1),Q4=[J4];function x4(e,t,n,o,s,l){return C(),M("svg",Z4,Q4)}var Xl=gt(X4,[["render",x4]]);const eP=ee({name:"CircleCheckFilled"}),tP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},nP=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),oP=[nP];function sP(e,t,n,o,s,l){return C(),M("svg",tP,oP)}var lP=gt(eP,[["render",sP]]);const rP=ee({name:"CircleCheck"}),aP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},iP=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),uP=D("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"},null,-1),cP=[iP,uP];function dP(e,t,n,o,s,l){return C(),M("svg",aP,cP)}var Zi=gt(rP,[["render",dP]]);const fP=ee({name:"CircleCloseFilled"}),pP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},hP=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z"},null,-1),mP=[hP];function vP(e,t,n,o,s,l){return C(),M("svg",pP,mP)}var tp=gt(fP,[["render",vP]]);const gP=ee({name:"CircleClose"}),bP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},yP=D("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z"},null,-1),wP=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),CP=[yP,wP];function $P(e,t,n,o,s,l){return C(),M("svg",bP,CP)}var Fo=gt(gP,[["render",$P]]);const kP=ee({name:"Clock"}),SP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},EP=D("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),_P=D("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z"},null,-1),TP=D("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z"},null,-1),AP=[EP,_P,TP];function NP(e,t,n,o,s,l){return C(),M("svg",SP,AP)}var R0=gt(kP,[["render",NP]]);const MP=ee({name:"Close"}),OP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},IP=D("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),PP=[IP];function DP(e,t,n,o,s,l){return C(),M("svg",OP,PP)}var Yn=gt(MP,[["render",DP]]);const LP=ee({name:"DArrowLeft"}),RP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},VP=D("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"},null,-1),BP=[VP];function FP(e,t,n,o,s,l){return C(),M("svg",RP,BP)}var Pu=gt(LP,[["render",FP]]);const HP=ee({name:"DArrowRight"}),zP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},KP=D("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"},null,-1),WP=[KP];function jP(e,t,n,o,s,l){return C(),M("svg",zP,WP)}var Du=gt(HP,[["render",jP]]);const YP=ee({name:"Delete"}),UP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qP=D("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"},null,-1),GP=[qP];function XP(e,t,n,o,s,l){return C(),M("svg",UP,GP)}var ZP=gt(YP,[["render",XP]]);const JP=ee({name:"Document"}),QP={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},xP=D("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1),eD=[xP];function tD(e,t,n,o,s,l){return C(),M("svg",QP,eD)}var nD=gt(JP,[["render",tD]]);const oD=ee({name:"FullScreen"}),sD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},lD=D("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z"},null,-1),rD=[lD];function aD(e,t,n,o,s,l){return C(),M("svg",sD,rD)}var iD=gt(oD,[["render",aD]]);const uD=ee({name:"Hide"}),cD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},dD=D("path",{d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z",fill:"currentColor"},null,-1),fD=D("path",{d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z",fill:"currentColor"},null,-1),pD=[dD,fD];function hD(e,t,n,o,s,l){return C(),M("svg",cD,pD)}var mD=gt(uD,[["render",hD]]);const vD=ee({name:"InfoFilled"}),gD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},bD=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"},null,-1),yD=[bD];function wD(e,t,n,o,s,l){return C(),M("svg",gD,yD)}var np=gt(vD,[["render",wD]]);const CD=ee({name:"Loading"}),$D={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},kD=D("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"},null,-1),SD=[kD];function ED(e,t,n,o,s,l){return C(),M("svg",$D,SD)}var gs=gt(CD,[["render",ED]]);const _D=ee({name:"Minus"}),TD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},AD=D("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z"},null,-1),ND=[AD];function MD(e,t,n,o,s,l){return C(),M("svg",TD,ND)}var OD=gt(_D,[["render",MD]]);const ID=ee({name:"MoreFilled"}),PD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},DD=D("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z"},null,-1),LD=[DD];function RD(e,t,n,o,s,l){return C(),M("svg",PD,LD)}var VD=gt(ID,[["render",RD]]);const BD=ee({name:"More"}),FD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},HD=D("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96z"},null,-1),zD=[HD];function KD(e,t,n,o,s,l){return C(),M("svg",FD,zD)}var WD=gt(BD,[["render",KD]]);const jD=ee({name:"PictureFilled"}),YD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},UD=D("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H96zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112zM256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384z"},null,-1),qD=[UD];function GD(e,t,n,o,s,l){return C(),M("svg",YD,qD)}var XD=gt(jD,[["render",GD]]);const ZD=ee({name:"Plus"}),JD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},QD=D("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"},null,-1),xD=[QD];function eL(e,t,n,o,s,l){return C(),M("svg",JD,xD)}var V0=gt(ZD,[["render",eL]]);const tL=ee({name:"QuestionFilled"}),nL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},oL=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"},null,-1),sL=[oL];function lL(e,t,n,o,s,l){return C(),M("svg",nL,sL)}var rL=gt(tL,[["render",lL]]);const aL=ee({name:"RefreshLeft"}),iL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},uL=D("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"},null,-1),cL=[uL];function dL(e,t,n,o,s,l){return C(),M("svg",iL,cL)}var fL=gt(aL,[["render",dL]]);const pL=ee({name:"RefreshRight"}),hL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},mL=D("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"},null,-1),vL=[mL];function gL(e,t,n,o,s,l){return C(),M("svg",hL,vL)}var bL=gt(pL,[["render",gL]]);const yL=ee({name:"ScaleToOriginal"}),wL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},CL=D("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z"},null,-1),$L=[CL];function kL(e,t,n,o,s,l){return C(),M("svg",wL,$L)}var SL=gt(yL,[["render",kL]]);const EL=ee({name:"Search"}),_L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},TL=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704z"},null,-1),AL=[TL];function NL(e,t,n,o,s,l){return C(),M("svg",_L,AL)}var ML=gt(EL,[["render",NL]]);const OL=ee({name:"StarFilled"}),IL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},PL=D("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"},null,-1),DL=[PL];function LL(e,t,n,o,s,l){return C(),M("svg",IL,DL)}var qa=gt(OL,[["render",LL]]);const RL=ee({name:"Star"}),VL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},BL=D("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"},null,-1),FL=[BL];function HL(e,t,n,o,s,l){return C(),M("svg",VL,FL)}var zL=gt(RL,[["render",HL]]);const KL=ee({name:"SuccessFilled"}),WL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},jL=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),YL=[jL];function UL(e,t,n,o,s,l){return C(),M("svg",WL,YL)}var B0=gt(KL,[["render",UL]]);const qL=ee({name:"View"}),GL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},XL=D("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z"},null,-1),ZL=[XL];function JL(e,t,n,o,s,l){return C(),M("svg",GL,ZL)}var QL=gt(qL,[["render",JL]]);const xL=ee({name:"WarningFilled"}),e8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},t8=D("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z"},null,-1),n8=[t8];function o8(e,t,n,o,s,l){return C(),M("svg",e8,n8)}var aa=gt(xL,[["render",o8]]);const s8=ee({name:"ZoomIn"}),l8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},r8=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z"},null,-1),a8=[r8];function i8(e,t,n,o,s,l){return C(),M("svg",l8,a8)}var F0=gt(s8,[["render",i8]]);const u8=ee({name:"ZoomOut"}),c8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},d8=D("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z"},null,-1),f8=[d8];function p8(e,t,n,o,s,l){return C(),M("svg",c8,f8)}var h8=gt(u8,[["render",p8]]);const md=Symbol(),dv="__elPropsReservedKey";function fo(e,t){if(!dt(e)||!!e[dv])return e;const{values:n,required:o,default:s,type:l,validator:r}=e,a=n||r?u=>{let c=!1,d=[];if(n&&(d=Array.from(n),rt(e,"default")&&d.push(s),c||(c=d.includes(u))),r&&(c||(c=r(u))),!c&&d.length>0){const f=[...new Set(d)].map(p=>JSON.stringify(p)).join(", ");c_(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${f}], got value ${JSON.stringify(u)}.`)}return c}:void 0,i={type:dt(l)&&Object.getOwnPropertySymbols(l).includes(md)?l[md]:l,required:!!o,validator:a,[dv]:!0};return rt(e,"default")&&(i.default=s),i}const Be=e=>T0(Object.entries(e).map(([t,n])=>[t,fo(n,t)])),$e=e=>({[md]:e}),nn=$e([String,Object,Function]),m8={Close:Yn},Lu={Close:Yn,SuccessFilled:B0,InfoFilled:np,WarningFilled:aa,CircleCloseFilled:tp},Ho={success:B0,warning:aa,error:tp,info:np},H0={validating:gs,success:Zi,error:Fo},ot=(e,t)=>{if(e.install=n=>{for(const o of[e,...Object.values(t!=null?t:{})])n.component(o.name,o)},t)for(const[n,o]of Object.entries(t))e[n]=o;return e},z0=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rt=e=>(e.install=wt,e),op=(...e)=>t=>{e.forEach(n=>{et(n)?n(t):n.value=t})};class v8 extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function Kt(e,t){throw new v8(`[${e}] ${t}`)}function ro(e,t="px"){if(!e)return"";if(Qe(e))return e;if(ht(e))return`${e}${t}`}const Ie={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},g8=["year","month","date","dates","week","datetime","datetimerange","daterange","monthrange"],pc=["sun","mon","tue","wed","thu","fri","sat"],tt="update:modelValue",qt="change",ps="input",Eo=["","default","small","large"],b8={large:40,default:32,small:24},K0=(e="default")=>b8[e||"default"],On=e=>["",...Eo].includes(e),W0=e=>[...g8].includes(e);var Vn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Vn||{});function j0(e){return Ft(e)&&e.type===Le}function y8(e){return Ft(e)&&e.type===pn}function w8(e){return Ft(e)&&!j0(e)&&!y8(e)}const C8=e=>{if(!Ft(e))return{};const t=e.props||{},n=(Ft(e.type)?e.type.props:void 0)||{},o={};return Object.keys(n).forEach(s=>{rt(n[s],"default")&&(o[s]=n[s].default)}),Object.keys(t).forEach(s=>{o[Wn(s)]=t[s]}),o},$8=e=>{if(!Xe(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},fv=e=>e**3,k8=e=>e<.5?fv(e*2)/2:1-fv((1-e)*2)/2,pv=e=>[...new Set(e)],qs=e=>!e&&e!==0?[]:Array.isArray(e)?e:[e],sp=()=>ct&&/firefox/i.test(window.navigator.userAgent),Ru=e=>/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e),Y0=e=>ct?window.requestAnimationFrame(e):setTimeout(e,16),U0=e=>ct?window.cancelAnimationFrame(e):clearTimeout(e),Aa=()=>Math.floor(Math.random()*1e4),Dt=e=>e,S8=["class","style"],E8=/^on[A-Z]/,lp=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n=[]}=e,o=n.concat(S8),s=nt();return E(s?()=>{var l;return T0(Object.entries((l=s.proxy)==null?void 0:l.$attrs).filter(([r])=>!o.includes(r)&&!(t&&E8.test(r))))}:()=>({}))},q0=Symbol("breadcrumbKey"),G0=Symbol("buttonGroupContextKey"),X0=Symbol("carouselContextKey"),Z0=Symbol("collapseContextKey"),J0=Symbol(),Q0=Symbol("dialogInjectionKey"),Pn=Symbol("formContextKey"),Un=Symbol("formItemContextKey"),x0=Symbol("elPaginationKey"),e1=Symbol("radioGroupKey"),t1=Symbol("rowContextKey"),n1=Symbol("scrollbarContextKey"),Vu=Symbol("tabsRootContextKey"),o1=Symbol("uploadContextKey"),rp=Symbol("popper"),s1=Symbol("popperContent"),Bu=Symbol("tooltipV2"),l1=Symbol("tooltipV2Content"),hc="tooltip_v2.open",r1=e=>{const t=nt();return E(()=>{var n,o;return(o=(n=t.proxy)==null?void 0:n.$props[e])!=null?o:void 0})},Ji=A();function ur(e,t=void 0){const n=nt()?Ne(J0,Ji):Ji;return e?E(()=>{var o,s;return(s=(o=n.value)==null?void 0:o[e])!=null?s:t}):n}const a1=(e,t,n=!1)=>{var o;const s=!!nt(),l=s?ur():void 0,r=(o=t==null?void 0:t.provide)!=null?o:s?st:void 0;if(!r)return;const a=E(()=>{const i=y(e);return l!=null&&l.value?_8(l.value,i):i});return r(J0,a),(n||!Ji.value)&&(Ji.value=a.value),a},_8=(e,t)=>{var n;const o=[...new Set([...hd(e),...hd(t)])],s={};for(const l of o)s[l]=(n=t[l])!=null?n:e[l];return s},Fu=fo({type:String,values:Eo,required:!1}),Wt=(e,t={})=>{const n=A(void 0),o=t.prop?n:r1("size"),s=t.global?n:ur("size"),l=t.form?{size:void 0}:Ne(Pn,void 0),r=t.formItem?{size:void 0}:Ne(Un,void 0);return E(()=>o.value||y(e)||(r==null?void 0:r.size)||(l==null?void 0:l.size)||s.value||"")},pl=e=>{const t=r1("disabled"),n=Ne(Pn,void 0);return E(()=>t.value||y(e)||(n==null?void 0:n.disabled)||!1)},Na=({from:e,replacement:t,scope:n,version:o,ref:s,type:l="API"},r)=>{pe(()=>y(r),a=>{},{immediate:!0})},i1=(e,t,n)=>{let o={offsetX:0,offsetY:0};const s=a=>{const i=a.clientX,u=a.clientY,{offsetX:c,offsetY:d}=o,f=e.value.getBoundingClientRect(),p=f.left,h=f.top,g=f.width,m=f.height,v=document.documentElement.clientWidth,b=document.documentElement.clientHeight,w=-p+c,S=-h+d,$=v-p-g+c,k=b-h-m+d,T=L=>{const V=Math.min(Math.max(c+L.clientX-i,w),$),B=Math.min(Math.max(d+L.clientY-u,S),k);o={offsetX:V,offsetY:B},e.value.style.transform=`translate(${ro(V)}, ${ro(B)})`},O=()=>{document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",T),document.addEventListener("mouseup",O)},l=()=>{t.value&&e.value&&t.value.addEventListener("mousedown",s)},r=()=>{t.value&&e.value&&t.value.removeEventListener("mousedown",s)};xe(()=>{zn(()=>{n.value?l():r()})}),_t(()=>{r()})},T8=e=>({focus:()=>{var t,n;(n=(t=e.value)==null?void 0:t.focus)==null||n.call(t)}}),cr=()=>{const e=Ne(Pn,void 0),t=Ne(Un,void 0);return{form:e,formItem:t}};var A8={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const N8=e=>(t,n)=>M8(t,n,y(e)),M8=(e,t,n)=>It(n,e,e).replace(/\{(\w+)\}/g,(o,s)=>{var l;return`${(l=t==null?void 0:t[s])!=null?l:`{${s}}`}`}),O8=e=>{const t=E(()=>y(e).name),n=Lt(e)?e:A(e);return{lang:t,locale:n,t:N8(e)}},kt=()=>{const e=ur("locale");return O8(E(()=>e.value||A8))},u1=e=>{if(Lt(e)||Kt("[useLockscreen]","You need to pass a ref param to this function"),!ct||oo(document.body,"el-popup-parent--hidden"))return;let t=0,n=!1,o="0",s=0;const l=()=>{fn(document.body,"el-popup-parent--hidden"),n&&(document.body.style.paddingRight=o)};pe(e,r=>{if(!r){l();return}n=!oo(document.body,"el-popup-parent--hidden"),n&&(o=document.body.style.paddingRight,s=Number.parseInt(bo(document.body,"paddingRight"),10)),t=s4();const a=document.documentElement.clientHeight0&&(a||i==="scroll")&&n&&(document.body.style.paddingRight=`${s+t}px`),wo(document.body,"el-popup-parent--hidden")}),qb(()=>l())},Dl=[],I8=e=>{Dl.length!==0&&e.code===Ie.esc&&(e.stopPropagation(),Dl[Dl.length-1].handleClose())},c1=(e,t)=>{pe(t,n=>{n?Dl.push(e):Dl.splice(Dl.indexOf(e),1)})};ct&&Ht(document,"keydown",I8);const P8=fo({type:$e(Boolean),default:null}),D8=fo({type:$e(Function)}),L8=e=>{const t={[e]:P8,[`onUpdate:${e}`]:D8},n=[`update:${e}`];return{useModelToggle:({indicator:s,shouldHideWhenRouteChanges:l,shouldProceed:r,onShow:a,onHide:i})=>{const u=nt(),c=u.props,{emit:d}=u,f=`update:${e}`,p=E(()=>et(c[`onUpdate:${e}`])),h=E(()=>c[e]===null),g=()=>{s.value!==!0&&(s.value=!0,et(a)&&a())},m=()=>{s.value!==!1&&(s.value=!1,et(i)&&i())},v=()=>{if(c.disabled===!0||et(r)&&!r())return;const $=p.value&&ct;$&&d(f,!0),(h.value||!$)&&g()},b=()=>{if(c.disabled===!0||!ct)return;const $=p.value&&ct;$&&d(f,!1),(h.value||!$)&&m()},w=$=>{!en($)||(c.disabled&&$?p.value&&d(f,!1):s.value!==$&&($?g():m()))},S=()=>{s.value?b():v()};return pe(()=>c[e],w),l&&u.appContext.config.globalProperties.$route!==void 0&&pe(()=>ne({},u.proxy.$route),()=>{l.value&&s.value&&b()}),xe(()=>{w(c[e])}),{hide:b,show:v,toggle:S}},useModelToggleProps:t,useModelToggleEmits:n}},R8=(e,t,n)=>{const o=l=>{n(l)&&l.stopImmediatePropagation()};let s;pe(()=>e.value,l=>{l?s=Ht(document,t,o,!0):s==null||s()},{immediate:!0})},d1=(e,t)=>{let n;pe(()=>e.value,o=>{var s,l;o?(n=document.activeElement,Lt(t)&&((l=(s=t.value).focus)==null||l.call(s))):n.focus()})},ap=e=>{if(!e)return{onClick:wt,onMousedown:wt,onMouseup:wt};let t=!1,n=!1;return{onClick:r=>{t&&n&&e(r),t=n=!1},onMousedown:r=>{t=r.target===r.currentTarget},onMouseup:r=>{n=r.target===r.currentTarget}}},V8=(e,t=0)=>{if(t===0)return e;const n=A(!1);let o=0;const s=()=>{o&&clearTimeout(o),o=window.setTimeout(()=>{n.value=e.value},t)};return xe(s),pe(()=>e.value,l=>{l?s():n.value=l}),n};function B8(){let e;const t=(o,s)=>{n(),e=window.setTimeout(o,s)},n=()=>window.clearTimeout(e);return Iu(()=>n()),{registerTimeout:t,cancelTimeout:n}}const F8={prefix:Math.floor(Math.random()*1e4),current:0},H8=Symbol("elIdInjection"),ip=e=>{const t=Ne(H8,F8);return E(()=>y(e)||`el-id-${t.prefix}-${t.current++}`)},z8=e=>{const t=n=>{const o=n;o.key===Ie.esc&&(e==null||e(o))};xe(()=>{Tt(document,"keydown",t)}),_t(()=>{Bt(document,"keydown",t)})};let hv;const f1=`el-popper-container-${Aa()}`,p1=`#${f1}`,K8=()=>{const e=document.createElement("div");return e.id=f1,document.body.appendChild(e),e},W8=()=>{Ca(()=>{!ct||(!hv||!document.body.querySelector(p1))&&(hv=K8())})},j8=Be({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200}}),Y8=({showAfter:e,hideAfter:t,open:n,close:o})=>{const{registerTimeout:s}=B8();return{onOpen:()=>{s(()=>{n()},y(e))},onClose:()=>{s(()=>{o()},y(t))}}},h1=Symbol("elForwardRef"),U8=e=>{st(h1,{setForwardRef:n=>{e.value=n}})},q8=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),G8="el",X8="is-",Es=(e,t,n,o,s)=>{let l=`${e}-${t}`;return n&&(l+=`-${n}`),o&&(l+=`__${o}`),s&&(l+=`--${s}`),l},we=e=>{const t=ur("namespace"),n=E(()=>t.value||G8);return{namespace:n,b:(d="")=>Es(y(n),e,d,"",""),e:d=>d?Es(y(n),e,"",d,""):"",m:d=>d?Es(y(n),e,"","",d):"",be:(d,f)=>d&&f?Es(y(n),e,d,f,""):"",em:(d,f)=>d&&f?Es(y(n),e,"",d,f):"",bm:(d,f)=>d&&f?Es(y(n),e,d,"",f):"",bem:(d,f,p)=>d&&f&&p?Es(y(n),e,d,f,p):"",is:(d,...f)=>{const p=f.length>=1?f[0]:!0;return d&&p?`${X8}${d}`:""}}},mv=A(0),jo=()=>{const e=ur("zIndex",2e3),t=E(()=>e.value+mv.value);return{initialZIndex:e,currentZIndex:t,nextZIndex:()=>(mv.value++,t.value)}};function up(e){return e.split("-")[0]}function m1(e){return e.split("-")[1]}function cp(e){return["top","bottom"].includes(up(e))?"x":"y"}function v1(e){return e==="y"?"height":"width"}function vv(e,t,n){let{reference:o,floating:s}=e;const l=o.x+o.width/2-s.width/2,r=o.y+o.height/2-s.height/2,a=cp(t),i=v1(a),u=o[i]/2-s[i]/2,c=a==="x";let d;switch(up(t)){case"top":d={x:l,y:o.y-s.height};break;case"bottom":d={x:l,y:o.y+o.height};break;case"right":d={x:o.x+o.width,y:r};break;case"left":d={x:o.x-s.width,y:r};break;default:d={x:o.x,y:o.y}}switch(m1(t)){case"start":d[a]-=u*(n&&c?-1:1);break;case"end":d[a]+=u*(n&&c?-1:1)}return d}const Z8=async(e,t,n)=>{const{placement:o="bottom",strategy:s="absolute",middleware:l=[],platform:r}=n,a=await(r.isRTL==null?void 0:r.isRTL(t));let i=await r.getElementRects({reference:e,floating:t,strategy:s}),{x:u,y:c}=vv(i,o,a),d=o,f={};for(let p=0;p({name:"arrow",options:e,async fn(t){const{element:n,padding:o=0}=e!=null?e:{},{x:s,y:l,placement:r,rects:a,platform:i}=t;if(n==null)return{};const u=J8(o),c={x:s,y:l},d=cp(r),f=v1(d),p=await i.getDimensions(n),h=d==="y"?"top":"left",g=d==="y"?"bottom":"right",m=a.reference[f]+a.reference[d]-c[d]-a.floating[f],v=c[d]-a.reference[d],b=await(i.getOffsetParent==null?void 0:i.getOffsetParent(n)),w=b?d==="y"?b.clientHeight||0:b.clientWidth||0:0,S=m/2-v/2,$=u[h],k=w-p[f]-u[g],T=w/2-p[f]/2+S,O=e6($,T,k);return{data:{[d]:O,centerOffset:T-O}}}}),n6=["top","right","bottom","left"];n6.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const o6=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:o,placement:s,rects:l,platform:r,elements:a}=t,i=function(u,c,d,f){f===void 0&&(f=!1);const p=up(u),h=m1(u),g=cp(u)==="x",m=["left","top"].includes(p)?-1:1,v=f&&g?-1:1,b=typeof d=="function"?d(Te(ne({},c),{placement:u})):d,w=typeof b=="number";let{mainAxis:S,crossAxis:$,alignmentAxis:k}=w?{mainAxis:b,crossAxis:0,alignmentAxis:null}:ne({mainAxis:0,crossAxis:0,alignmentAxis:null},b);return h&&typeof k=="number"&&($=h==="end"?-1*k:k),g?{x:$*v,y:S*m}:{x:S*m,y:$*v}}(s,l,e,await(r.isRTL==null?void 0:r.isRTL(a.floating)));return{x:n+i.x,y:o+i.y,data:i}}}};function g1(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Yo(e){if(e==null)return window;if(!g1(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ma(e){return Yo(e).getComputedStyle(e)}function Lo(e){return g1(e)?"":e?(e.nodeName||"").toLowerCase():""}function ko(e){return e instanceof Yo(e).HTMLElement}function Zl(e){return e instanceof Yo(e).Element}function dp(e){return e instanceof Yo(e).ShadowRoot||e instanceof ShadowRoot}function Hu(e){const{overflow:t,overflowX:n,overflowY:o}=Ma(e);return/auto|scroll|overlay|hidden/.test(t+o+n)}function s6(e){return["table","td","th"].includes(Lo(e))}function bv(e){const t=navigator.userAgent.toLowerCase().includes("firefox"),n=Ma(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&!!n.filter&&n.filter!=="none"}function b1(){return!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}const yv=Math.min,Kr=Math.max,Qi=Math.round;function Gs(e,t,n){var o,s,l,r;t===void 0&&(t=!1),n===void 0&&(n=!1);const a=e.getBoundingClientRect();let i=1,u=1;t&&ko(e)&&(i=e.offsetWidth>0&&Qi(a.width)/e.offsetWidth||1,u=e.offsetHeight>0&&Qi(a.height)/e.offsetHeight||1);const c=Zl(e)?Yo(e):window,d=!b1()&&n,f=(a.left+(d&&(o=(s=c.visualViewport)==null?void 0:s.offsetLeft)!=null?o:0))/i,p=(a.top+(d&&(l=(r=c.visualViewport)==null?void 0:r.offsetTop)!=null?l:0))/u,h=a.width/i,g=a.height/u;return{width:h,height:g,top:p,right:f+h,bottom:p+g,left:f,x:f,y:p}}function rs(e){return(t=e,(t instanceof Yo(t).Node?e.ownerDocument:e.document)||window.document).documentElement;var t}function zu(e){return Zl(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function y1(e){return Gs(rs(e)).left+zu(e).scrollLeft}function l6(e,t,n){const o=ko(t),s=rs(t),l=Gs(e,o&&function(i){const u=Gs(i);return Qi(u.width)!==i.offsetWidth||Qi(u.height)!==i.offsetHeight}(t),n==="fixed");let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(o||!o&&n!=="fixed")if((Lo(t)!=="body"||Hu(s))&&(r=zu(t)),ko(t)){const i=Gs(t,!0);a.x=i.x+t.clientLeft,a.y=i.y+t.clientTop}else s&&(a.x=y1(s));return{x:l.left+r.scrollLeft-a.x,y:l.top+r.scrollTop-a.y,width:l.width,height:l.height}}function w1(e){return Lo(e)==="html"?e:e.assignedSlot||e.parentNode||(dp(e)?e.host:null)||rs(e)}function wv(e){return ko(e)&&getComputedStyle(e).position!=="fixed"?e.offsetParent:null}function vd(e){const t=Yo(e);let n=wv(e);for(;n&&s6(n)&&getComputedStyle(n).position==="static";)n=wv(n);return n&&(Lo(n)==="html"||Lo(n)==="body"&&getComputedStyle(n).position==="static"&&!bv(n))?t:n||function(o){let s=w1(o);for(dp(s)&&(s=s.host);ko(s)&&!["html","body"].includes(Lo(s));){if(bv(s))return s;s=s.parentNode}return null}(e)||t}function Cv(e){if(ko(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=Gs(e);return{width:t.width,height:t.height}}function C1(e){const t=w1(e);return["html","body","#document"].includes(Lo(t))?e.ownerDocument.body:ko(t)&&Hu(t)?t:C1(t)}function $1(e,t){var n;t===void 0&&(t=[]);const o=C1(e),s=o===((n=e.ownerDocument)==null?void 0:n.body),l=Yo(o),r=s?[l].concat(l.visualViewport||[],Hu(o)?o:[]):o,a=t.concat(r);return s?a:a.concat($1(r))}function $v(e,t,n){return t==="viewport"?gv(function(o,s){const l=Yo(o),r=rs(o),a=l.visualViewport;let i=r.clientWidth,u=r.clientHeight,c=0,d=0;if(a){i=a.width,u=a.height;const f=b1();(f||!f&&s==="fixed")&&(c=a.offsetLeft,d=a.offsetTop)}return{width:i,height:u,x:c,y:d}}(e,n)):Zl(t)?function(o,s){const l=Gs(o,!1,s==="fixed"),r=l.top+o.clientTop,a=l.left+o.clientLeft;return{top:r,left:a,x:a,y:r,right:a+o.clientWidth,bottom:r+o.clientHeight,width:o.clientWidth,height:o.clientHeight}}(t,n):gv(function(o){var s;const l=rs(o),r=zu(o),a=(s=o.ownerDocument)==null?void 0:s.body,i=Kr(l.scrollWidth,l.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),u=Kr(l.scrollHeight,l.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0);let c=-r.scrollLeft+y1(o);const d=-r.scrollTop;return Ma(a||l).direction==="rtl"&&(c+=Kr(l.clientWidth,a?a.clientWidth:0)-i),{width:i,height:u,x:c,y:d}}(rs(e)))}function r6(e){const t=$1(e),n=["absolute","fixed"].includes(Ma(e).position)&&ko(e)?vd(e):e;return Zl(n)?t.filter(o=>Zl(o)&&function(s,l){const r=l==null||l.getRootNode==null?void 0:l.getRootNode();if(s!=null&&s.contains(l))return!0;if(r&&dp(r)){let a=l;do{if(a&&s===a)return!0;a=a.parentNode||a.host}while(a)}return!1}(o,n)&&Lo(o)!=="body"):[]}const a6={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:s}=e;const l=[...n==="clippingAncestors"?r6(t):[].concat(n),o],r=l[0],a=l.reduce((i,u)=>{const c=$v(t,u,s);return i.top=Kr(c.top,i.top),i.right=yv(c.right,i.right),i.bottom=yv(c.bottom,i.bottom),i.left=Kr(c.left,i.left),i},$v(t,r,s));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:o}=e;const s=ko(n),l=rs(n);if(n===l)return t;let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((s||!s&&o!=="fixed")&&((Lo(n)!=="body"||Hu(l))&&(r=zu(n)),ko(n))){const i=Gs(n,!0);a.x=i.x+n.clientLeft,a.y=i.y+n.clientTop}return Te(ne({},t),{x:t.x-r.scrollLeft+a.x,y:t.y-r.scrollTop+a.y})},isElement:Zl,getDimensions:Cv,getOffsetParent:vd,getDocumentElement:rs,getElementRects:e=>{let{reference:t,floating:n,strategy:o}=e;return{reference:l6(t,vd(n),o),floating:Te(ne({},Cv(n)),{x:0,y:0})}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Ma(e).direction==="rtl"},i6=(e,t,n)=>Z8(e,t,ne({platform:a6},n));Be({});const u6=e=>{if(!ct)return;if(!e)return e;const t=no(e);return t||(Lt(e)?t:e)},c6=({middleware:e,placement:t,strategy:n})=>{const o=A(),s=A(),l=A(),r=A(),a=A({}),i={x:l,y:r,placement:t,strategy:n,middlewareData:a},u=async()=>{if(!ct)return;const c=u6(o),d=no(s);if(!c||!d)return;const f=await i6(c,d,{placement:y(t),strategy:y(n),middleware:y(e)});Object.keys(i).forEach(p=>{i[p].value=f[p]})};return xe(()=>{zn(()=>{u()})}),Te(ne({},i),{update:u,referenceRef:o,contentRef:s})},d6=({arrowRef:e,padding:t})=>({name:"arrow",options:{element:e,padding:t},fn(n){const o=y(e);return o?t6({element:o,padding:t}).fn(n):{}}}),f6="2.1.9",kv=Symbol("INSTALLED_KEY"),p6=(e=[])=>({version:f6,install:(n,o)=>{n[kv]||(n[kv]=!0,e.forEach(s=>n.use(s)),o&&a1(o,n,!0))}}),h6=Be({zIndex:{type:$e([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),m6={scroll:({scrollTop:e,fixed:t})=>typeof e=="number"&&typeof t=="boolean",change:e=>typeof e=="boolean"};var ge=(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n};const v6={name:"ElAffix"},g6=ee(Te(ne({},v6),{props:h6,emits:m6,setup(e,{expose:t,emit:n}){const o=e,s="ElAffix",l=we("affix"),r=jt(),a=jt(),i=jt(),{height:u}=Z3(),{height:c,width:d,top:f,bottom:p,update:h}=av(a),g=av(r),m=A(!1),v=A(0),b=A(0),w=E(()=>({height:m.value?`${c.value}px`:"",width:m.value?`${d.value}px`:""})),S=E(()=>{if(!m.value)return{};const T=o.offset?`${o.offset}px`:0;return{height:`${c.value}px`,width:`${d.value}px`,top:o.position==="top"?T:"",bottom:o.position==="bottom"?T:"",transform:b.value?`translateY(${b.value}px)`:"",zIndex:o.zIndex}}),$=()=>{if(!!i.value)if(v.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0,o.position==="top")if(o.target){const T=g.bottom.value-o.offset-c.value;m.value=o.offset>f.value&&g.bottom.value>0,b.value=T<0?T:0}else m.value=o.offset>f.value;else if(o.target){const T=u.value-g.top.value-o.offset-c.value;m.value=u.value-o.offsetg.top.value,b.value=T<0?-T:0}else m.value=u.value-o.offset{n("scroll",{scrollTop:v.value,fixed:m.value})};return pe(m,T=>n("change",T)),xe(()=>{var T;o.target?(r.value=(T=document.querySelector(o.target))!=null?T:void 0,r.value||Kt(s,`Target is not existed: ${o.target}`)):r.value=document.documentElement,i.value=ep(a.value,!0),h()}),Ht(i,"scroll",k),zn($),t({update:$}),(T,O)=>(C(),M("div",{ref_key:"root",ref:a,class:_(y(l).b()),style:Pe(y(w))},[D("div",{class:_({[y(l).m("fixed")]:m.value}),style:Pe(y(S))},[ie(T.$slots,"default")],6)],6))}}));var b6=ge(g6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/affix/src/affix.vue"]]);const y6=ot(b6),w6=Be({size:{type:$e([Number,String])},color:{type:String}}),C6={name:"ElIcon",inheritAttrs:!1},$6=ee(Te(ne({},C6),{props:w6,setup(e){const t=e,n=we("icon"),o=E(()=>!t.size&&!t.color?{}:{fontSize:Cn(t.size)?void 0:ro(t.size),"--color":t.color});return(s,l)=>(C(),M("i",Et({class:y(n).b(),style:y(o)},s.$attrs),[ie(s.$slots,"default")],16))}}));var k6=ge($6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue"]]);const je=ot(k6),S6=["light","dark"],E6=Be({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:hd(Ho),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:S6,default:"light"}}),_6={close:e=>e instanceof MouseEvent},T6={name:"ElAlert"},A6=ee(Te(ne({},T6),{props:E6,emits:_6,setup(e,{emit:t}){const n=e,{Close:o}=Lu,s=Ea(),l=we("alert"),r=A(!0),a=E(()=>Ho[n.type]||Ho.info),i=E(()=>n.description||{[l.is("big")]:s.default}),u=E(()=>n.description||{[l.is("bold")]:s.default}),c=d=>{r.value=!1,t("close",d)};return(d,f)=>(C(),x(zt,{name:y(l).b("fade")},{default:j(()=>[Ge(D("div",{class:_([y(l).b(),y(l).m(d.type),y(l).is("center",d.center),y(l).is(d.effect)]),role:"alert"},[d.showIcon&&y(a)?(C(),x(y(je),{key:0,class:_([y(l).e("icon"),y(i)])},{default:j(()=>[(C(),x(ft(y(a))))]),_:1},8,["class"])):G("v-if",!0),D("div",{class:_(y(l).e("content"))},[d.title||d.$slots.title?(C(),M("span",{key:0,class:_([y(l).e("title"),y(u)])},[ie(d.$slots,"title",{},()=>[at(he(d.title),1)])],2)):G("v-if",!0),d.$slots.default||d.description?(C(),M("p",{key:1,class:_(y(l).e("description"))},[ie(d.$slots,"default",{},()=>[at(he(d.description),1)])],2)):G("v-if",!0),d.closable?(C(),M(Le,{key:2},[d.closeText?(C(),M("div",{key:0,class:_([y(l).e("close-btn"),y(l).is("customed")]),onClick:c},he(d.closeText),3)):(C(),x(y(je),{key:1,class:_(y(l).e("close-btn")),onClick:c},{default:j(()=>[Y(y(o))]),_:1},8,["class"]))],2112)):G("v-if",!0)],2)],2),[[pt,r.value]])]),_:3},8,["name"]))}}));var N6=ge(A6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/alert/src/alert.vue"]]);const M6=ot(N6);let Qn;const O6=` height:0 !important; visibility:hidden !important; overflow:hidden !important; @@ -13,7 +13,7 @@ var qC=Object.defineProperty,GC=Object.defineProperties;var XC=Object.getOwnProp z-index:-1000 !important; top:0 !important; right:0 !important; -`,N6=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function M6(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),o=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),s=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:N6.map(r=>`${r}:${t.getPropertyValue(r)}`).join(";"),paddingSize:o,borderSize:s,boxSizing:n}}function kv(e,t=1,n){var o;Qn||(Qn=document.createElement("textarea"),document.body.appendChild(Qn));const{paddingSize:s,borderSize:l,boxSizing:r,contextStyle:a}=M6(e);Qn.setAttribute("style",`${a};${A6}`),Qn.value=e.value||e.placeholder||"";let i=Qn.scrollHeight;const u={};r==="border-box"?i=i+l:r==="content-box"&&(i=i-s),Qn.value="";const c=Qn.scrollHeight-s;if(ht(t)){let d=c*t;r==="border-box"&&(d=d+s+l),i=Math.max(d,i),u.minHeight=`${d}px`}if(ht(n)){let d=c*n;r==="border-box"&&(d=d+s+l),i=Math.min(d,i)}return u.height=`${i}px`,(o=Qn.parentNode)==null||o.removeChild(Qn),Qn=void 0,u}const O6=Ve({size:Hu,disabled:Boolean,modelValue:{type:$e([String,Number,Object]),default:""},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:$e([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},placeholder:{type:String},form:{type:String,default:""},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},suffixIcon:{type:nn,default:""},prefixIcon:{type:nn,default:""},label:{type:String},tabindex:{type:[Number,String]},validateEvent:{type:Boolean,default:!0},inputStyle:{type:$e([Object,Array,String]),default:()=>Pt({})}}),I6={[tt]:e=>Qe(e),input:e=>Qe(e),change:e=>Qe(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},D6=["type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder"],P6=["tabindex","disabled","readonly","autocomplete","aria-label","placeholder"],L6={name:"ElInput",inheritAttrs:!1},R6=te(Te(ne({},L6),{props:O6,emits:I6,setup(e,{expose:t,emit:n}){const o=e,s={suffix:"append",prefix:"prepend"},l=nt(),r=Fy(),a=_a(),i=rp(),{form:u,formItem:c}=dr(),d=Wt(),f=hl(),p=we("input"),h=we("textarea"),g=jt(),m=jt(),v=A(!1),y=A(!1),w=A(!1),S=A(!1),$=jt(o.inputStyle),k=E(()=>g.value||m.value),T=E(()=>{var F;return(F=u==null?void 0:u.statusIcon)!=null?F:!1}),O=E(()=>(c==null?void 0:c.validateState)||""),L=E(()=>V0[O.value]),B=E(()=>S.value?XL:fP),V=E(()=>[r.style,o.inputStyle]),H=E(()=>[o.inputStyle,$.value,{resize:o.resize}]),R=E(()=>xf(o.modelValue)?"":String(o.modelValue)),z=E(()=>o.clearable&&!f.value&&!o.readonly&&!!R.value&&(v.value||y.value)),W=E(()=>o.showPassword&&!f.value&&!o.readonly&&(!!R.value||v.value)),P=E(()=>o.showWordLimit&&!!i.value.maxlength&&(o.type==="text"||o.type==="textarea")&&!f.value&&!o.readonly&&!o.showPassword),N=E(()=>Array.from(R.value).length),I=E(()=>!!P.value&&N.value>Number(i.value.maxlength)),U=E(()=>!!a.suffix||!!o.suffixIcon||z.value||o.showPassword||P.value||!!O.value&&T.value),q=()=>{const{type:F,autosize:de}=o;if(!(!ct||F!=="textarea"))if(de){const Fe=dt(de)?de.minRows:void 0,Ze=dt(de)?de.maxRows:void 0;$.value=ne({},kv(m.value,Fe,Ze))}else $.value={minHeight:kv(m.value).minHeight}},Q=()=>{const F=k.value;!F||F.value===R.value||(F.value=R.value)},J=F=>{const{el:de}=l.vnode;if(!de)return;const Ze=Array.from(de.querySelectorAll(`.${p.e(F)}`)).find(oe=>oe.parentNode===de);if(!Ze)return;const He=s[F];a[He]?Ze.style.transform=`translateX(${F==="suffix"?"-":""}${de.querySelector(`.${p.be("group",He)}`).offsetWidth}px)`:Ze.removeAttribute("style")},ae=()=>{J("prefix"),J("suffix")},Ee=async F=>{const{value:de}=F.target;w.value||de!==R.value&&(n(tt,de),n("input",de),await ze(),Q())},Me=F=>{n("change",F.target.value)},Z=F=>{n("compositionstart",F),w.value=!0},ve=F=>{var de;n("compositionupdate",F);const Fe=(de=F.target)==null?void 0:de.value,Ze=Fe[Fe.length-1]||"";w.value=!Bu(Ze)},Ce=F=>{n("compositionend",F),w.value&&(w.value=!1,Ee(F))},ke=()=>{S.value=!S.value,Oe()},Oe=async()=>{var F;await ze(),(F=k.value)==null||F.focus()},We=()=>{var F;return(F=k.value)==null?void 0:F.blur()},qe=F=>{v.value=!0,n("focus",F)},K=F=>{var de;v.value=!1,n("blur",F),o.validateEvent&&((de=c==null?void 0:c.validate)==null||de.call(c,"blur").catch(Fe=>void 0))},X=F=>{y.value=!1,n("mouseleave",F)},fe=F=>{y.value=!0,n("mouseenter",F)},ye=F=>{n("keydown",F)},be=()=>{var F;(F=k.value)==null||F.select()},_e=()=>{n(tt,""),n("change",""),n("clear"),n("input","")};pe(()=>o.modelValue,()=>{var F;ze(()=>q()),o.validateEvent&&((F=c==null?void 0:c.validate)==null||F.call(c,"change").catch(de=>void 0))}),pe(R,()=>Q()),pe(()=>o.type,async()=>{await ze(),Q(),q(),ae()});const re=A(),se=A(),ee=A({}),ue=(F,de)=>{if(F.value){const Fe=F.value.offsetWidth;return Fe>0?Fe+16:de}return de},Re=()=>{ee.value=ne({paddingRight:`${ue(re,0)}px`,paddingLeft:`${ue(se,11)}px`},o.inputStyle)};return pe(z,()=>{ze(()=>{Re()})}),xe(async()=>{Re(),Q(),ae(),await ze(),q()}),Xn(async()=>{await ze(),ae()}),t({input:g,textarea:m,ref:k,textareaStyle:H,autosize:Yt(o,"autosize"),focus:Oe,blur:We,select:be,clear:_e,resizeTextarea:q}),(F,de)=>Ge((C(),M("div",{class:_([F.type==="textarea"?b(h).b():b(p).b(),b(p).m(b(d)),b(p).is("disabled",b(f)),b(p).is("exceed",b(I)),{[b(p).b("group")]:F.$slots.prepend||F.$slots.append,[b(p).bm("group","append")]:F.$slots.append,[b(p).bm("group","prepend")]:F.$slots.prepend,[b(p).m("prefix")]:F.$slots.prefix||F.prefixIcon,[b(p).m("suffix")]:F.$slots.suffix||F.suffixIcon||F.clearable||F.showPassword,[b(p).m("suffix--password-clear")]:b(z)&&b(W)},F.$attrs.class]),style:De(b(V)),onMouseenter:fe,onMouseleave:X},[G(" input "),F.type!=="textarea"?(C(),M(Le,{key:0},[G(" prepend slot "),F.$slots.prepend?(C(),M("div",{key:0,class:_(b(p).be("group","prepend"))},[ie(F.$slots,"prepend")],2)):G("v-if",!0),D("input",Et({ref_key:"input",ref:g,class:b(p).e("inner")},b(i),{type:F.showPassword?S.value?"text":"password":F.type,disabled:b(f),readonly:F.readonly,autocomplete:F.autocomplete,tabindex:F.tabindex,"aria-label":F.label,placeholder:F.placeholder,style:ee.value,onCompositionstart:Z,onCompositionupdate:ve,onCompositionend:Ce,onInput:Ee,onFocus:qe,onBlur:K,onChange:Me,onKeydown:ye}),null,16,D6),G(" prefix slot "),F.$slots.prefix||F.prefixIcon?(C(),M("span",{key:1,class:_(b(p).e("prefix"))},[D("span",{ref_key:"innerPrefixRef",ref:se,class:_(b(p).e("prefix-inner"))},[ie(F.$slots,"prefix"),F.prefixIcon?(C(),x(b(je),{key:0,class:_(b(p).e("icon"))},{default:j(()=>[(C(),x(ft(F.prefixIcon)))]),_:1},8,["class"])):G("v-if",!0)],2)],2)):G("v-if",!0),G(" suffix slot "),b(U)?(C(),M("span",{key:2,class:_(b(p).e("suffix"))},[D("span",{ref_key:"innerSuffixRef",ref:re,class:_(b(p).e("suffix-inner"))},[!b(z)||!b(W)||!b(P)?(C(),M(Le,{key:0},[ie(F.$slots,"suffix"),F.suffixIcon?(C(),x(b(je),{key:0,class:_(b(p).e("icon"))},{default:j(()=>[(C(),x(ft(F.suffixIcon)))]),_:1},8,["class"])):G("v-if",!0)],64)):G("v-if",!0),b(z)?(C(),x(b(je),{key:1,class:_([b(p).e("icon"),b(p).e("clear")]),onMousedown:de[0]||(de[0]=Ke(()=>{},["prevent"])),onClick:_e},{default:j(()=>[Y(b(Fo))]),_:1},8,["class"])):G("v-if",!0),b(W)?(C(),x(b(je),{key:2,class:_([b(p).e("icon"),b(p).e("clear")]),onClick:ke},{default:j(()=>[(C(),x(ft(b(B))))]),_:1},8,["class"])):G("v-if",!0),b(P)?(C(),M("span",{key:3,class:_(b(p).e("count"))},[D("span",{class:_(b(p).e("count-inner"))},he(b(N))+" / "+he(b(i).maxlength),3)],2)):G("v-if",!0)],2),b(O)&&b(L)&&b(T)?(C(),x(b(je),{key:0,class:_([b(p).e("icon"),b(p).e("validateIcon"),b(p).is("loading",b(O)==="validating")])},{default:j(()=>[(C(),x(ft(b(L))))]),_:1},8,["class"])):G("v-if",!0)],2)):G("v-if",!0),G(" append slot "),F.$slots.append?(C(),M("div",{key:3,class:_(b(p).be("group","append"))},[ie(F.$slots,"append")],2)):G("v-if",!0)],64)):(C(),M(Le,{key:1},[G(" textarea "),D("textarea",Et({ref_key:"textarea",ref:m,class:b(h).e("inner")},b(i),{tabindex:F.tabindex,disabled:b(f),readonly:F.readonly,autocomplete:F.autocomplete,style:b(H),"aria-label":F.label,placeholder:F.placeholder,onCompositionstart:Z,onCompositionupdate:ve,onCompositionend:Ce,onInput:Ee,onFocus:qe,onBlur:K,onChange:Me,onKeydown:ye}),null,16,P6),b(P)?(C(),M("span",{key:0,class:_(b(p).e("count"))},he(b(N))+" / "+he(b(i).maxlength),3)):G("v-if",!0)],64))],38)),[[pt,F.type!=="hidden"]])}}));var B6=ge(R6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]);const Zn=ot(B6),C1={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},V6=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),F6=Ve({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),Sv="Thumb",H6=te({name:Sv,props:F6,setup(e){const t=Ne(e1),n=we("scrollbar");t||Kt(Sv,"can not inject scrollbar context");const o=A(),s=A(),l=A({}),r=A(!1);let a=!1,i=!1,u=ct?document.onselectstart:null;const c=E(()=>C1[e.vertical?"vertical":"horizontal"]),d=E(()=>V6({size:e.size,move:e.move,bar:c.value})),f=E(()=>o.value[c.value.offset]**2/t.wrapElement[c.value.scrollSize]/e.ratio/s.value[c.value.offset]),p=$=>{var k;if($.stopPropagation(),$.ctrlKey||[1,2].includes($.button))return;(k=window.getSelection())==null||k.removeAllRanges(),g($);const T=$.currentTarget;!T||(l.value[c.value.axis]=T[c.value.offset]-($[c.value.client]-T.getBoundingClientRect()[c.value.direction]))},h=$=>{if(!s.value||!o.value||!t.wrapElement)return;const k=Math.abs($.target.getBoundingClientRect()[c.value.direction]-$[c.value.client]),T=s.value[c.value.offset]/2,O=(k-T)*100*f.value/o.value[c.value.offset];t.wrapElement[c.value.scroll]=O*t.wrapElement[c.value.scrollSize]/100},g=$=>{$.stopImmediatePropagation(),a=!0,document.addEventListener("mousemove",m),document.addEventListener("mouseup",v),u=document.onselectstart,document.onselectstart=()=>!1},m=$=>{if(!o.value||!s.value||a===!1)return;const k=l.value[c.value.axis];if(!k)return;const T=(o.value.getBoundingClientRect()[c.value.direction]-$[c.value.client])*-1,O=s.value[c.value.offset]-k,L=(T-O)*100*f.value/o.value[c.value.offset];t.wrapElement[c.value.scroll]=L*t.wrapElement[c.value.scrollSize]/100},v=()=>{a=!1,l.value[c.value.axis]=0,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",v),S(),i&&(r.value=!1)},y=()=>{i=!1,r.value=!!e.size},w=()=>{i=!0,r.value=a};_t(()=>{S(),document.removeEventListener("mouseup",v)});const S=()=>{document.onselectstart!==u&&(document.onselectstart=u)};return Ht(Yt(t,"scrollbarElement"),"mousemove",y),Ht(Yt(t,"scrollbarElement"),"mouseleave",w),{ns:n,instance:o,thumb:s,bar:c,thumbStyle:d,visible:r,clickTrackHandler:h,clickThumbHandler:p}}});function z6(e,t,n,o,s,l){return C(),x(zt,{name:e.ns.b("fade")},{default:j(()=>[Ge(D("div",{ref:"instance",class:_([e.ns.e("bar"),e.ns.is(e.bar.key)]),onMousedown:t[1]||(t[1]=(...r)=>e.clickTrackHandler&&e.clickTrackHandler(...r))},[D("div",{ref:"thumb",class:_(e.ns.e("thumb")),style:De(e.thumbStyle),onMousedown:t[0]||(t[0]=(...r)=>e.clickThumbHandler&&e.clickThumbHandler(...r))},null,38)],34),[[pt,e.always||e.visible]])]),_:1},8,["name"])}var K6=ge(H6,[["render",z6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue"]]);const W6=Ve({always:{type:Boolean,default:!0},width:{type:String,default:""},height:{type:String,default:""},ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),j6=te({components:{Thumb:K6},props:W6,setup(e){const t=A(0),n=A(0),o=4;return{handleScroll:l=>{if(l){const r=l.offsetHeight-o,a=l.offsetWidth-o;n.value=l.scrollTop*100/r*e.ratioY,t.value=l.scrollLeft*100/a*e.ratioX}},moveX:t,moveY:n}}});function Y6(e,t,n,o,s,l){const r=le("thumb");return C(),M(Le,null,[Y(r,{move:e.moveX,ratio:e.ratioX,size:e.width,always:e.always},null,8,["move","ratio","size","always"]),Y(r,{move:e.moveY,ratio:e.ratioY,size:e.height,vertical:"",always:e.always},null,8,["move","ratio","size","always"])],64)}var U6=ge(j6,[["render",Y6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue"]]);const q6=Ve({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:$e([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:{type:Boolean,default:!1},minSize:{type:Number,default:20}}),G6={scroll:({scrollTop:e,scrollLeft:t})=>ht(e)&&ht(t)},X6=te({name:"ElScrollbar",components:{Bar:U6},props:q6,emits:G6,setup(e,{emit:t}){const n=we("scrollbar");let o,s;const l=A(),r=A(),a=A(),i=A("0"),u=A("0"),c=A(),d=A(0),f=A(0),p=A(1),h=A(1),g=4,m=E(()=>{const k={};return e.height&&(k.height=ro(e.height)),e.maxHeight&&(k.maxHeight=ro(e.maxHeight)),[e.wrapStyle,k]}),v=()=>{var k;r.value&&((k=c.value)==null||k.handleScroll(r.value),t("scroll",{scrollTop:r.value.scrollTop,scrollLeft:r.value.scrollLeft}))};function y(k,T){dt(k)?r.value.scrollTo(k):ht(k)&&ht(T)&&r.value.scrollTo(k,T)}const w=k=>{!ht(k)||(r.value.scrollTop=k)},S=k=>{!ht(k)||(r.value.scrollLeft=k)},$=()=>{if(!r.value)return;const k=r.value.offsetHeight-g,T=r.value.offsetWidth-g,O=k**2/r.value.scrollHeight,L=T**2/r.value.scrollWidth,B=Math.max(O,e.minSize),V=Math.max(L,e.minSize);p.value=O/(k-O)/(B/(k-B)),h.value=L/(T-L)/(V/(T-V)),u.value=B+ge.noresize,k=>{k?(o==null||o(),s==null||s()):({stop:o}=ar(a,$),s=Ht("resize",$))},{immediate:!0}),pe(()=>[e.maxHeight,e.height],()=>{e.native||ze(()=>{var k;$(),r.value&&((k=c.value)==null||k.handleScroll(r.value))})}),st(e1,yt({scrollbarElement:l,wrapElement:r})),xe(()=>{e.native||ze(()=>$())}),Xn(()=>$()),{ns:n,scrollbar$:l,wrap$:r,resize$:a,barRef:c,moveX:d,moveY:f,ratioX:h,ratioY:p,sizeWidth:i,sizeHeight:u,style:m,update:$,handleScroll:v,scrollTo:y,setScrollTop:w,setScrollLeft:S}}});function J6(e,t,n,o,s,l){const r=le("bar");return C(),M("div",{ref:"scrollbar$",class:_(e.ns.b())},[D("div",{ref:"wrap$",class:_([e.wrapClass,e.ns.e("wrap"),{[e.ns.em("wrap","hidden-default")]:!e.native}]),style:De(e.style),onScroll:t[0]||(t[0]=(...a)=>e.handleScroll&&e.handleScroll(...a))},[(C(),x(ft(e.tag),{ref:"resize$",class:_([e.ns.e("view"),e.viewClass]),style:De(e.viewStyle)},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["class","style"]))],38),e.native?G("v-if",!0):(C(),x(r,{key:0,ref:"barRef",height:e.sizeHeight,width:e.sizeWidth,always:e.always,"ratio-x":e.ratioX,"ratio-y":e.ratioY},null,8,["height","width","always","ratio-x","ratio-y"]))],2)}var Z6=ge(X6,[["render",J6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue"]]);const Uo=ot(Z6),Q6={name:"ElPopperRoot",inheritAttrs:!1},x6=te(Te(ne({},Q6),{setup(e,{expose:t}){const n=A(),o=A(),s=A(),l=A(),r={triggerRef:n,popperInstanceRef:o,contentRef:s,referenceRef:l};return t(r),st(ap,r),(a,i)=>ie(a.$slots,"default")}}));var eR=ge(x6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue"]]);const $1=Ve({arrowOffset:{type:Number,default:5}}),tR={name:"ElPopperArrow",inheritAttrs:!1},nR=te(Te(ne({},tR),{props:$1,setup(e,{expose:t}){const n=e,o=we("popper"),{arrowOffset:s,arrowRef:l}=Ne(n1,void 0);return pe(()=>n.arrowOffset,r=>{s.value=r}),_t(()=>{l.value=void 0}),t({arrowRef:l}),(r,a)=>(C(),M("span",{ref_key:"arrowRef",ref:l,class:_(b(o).e("arrow")),"data-popper-arrow":""},null,2))}}));var oR=ge(nR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue"]]);const sR="ElOnlyChild",lR=te({name:sR,setup(e,{slots:t,attrs:n}){var o;const s=Ne(f1),l=j8((o=s==null?void 0:s.setForwardRef)!=null?o:wt);return()=>{var r;const a=(r=t.default)==null?void 0:r.call(t,n);if(!a||a.length>1)return null;const i=k1(a);return i?Ge(tl(i,n),[[l]]):null}}});function k1(e){if(!e)return null;const t=e;for(const n of t){if(dt(n))switch(n.type){case pn:continue;case Ea:return vc(n);case"svg":return vc(n);case Le:return k1(n.children);default:return n}return vc(n)}return null}function vc(e){return Y("span",{class:"el-only-child__content"},[e])}const S1=Ve({virtualRef:{type:$e(Object)},virtualTriggering:Boolean,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,onBlur:Function,onContextmenu:Function,id:String,open:Boolean}),rR={name:"ElPopperTrigger",inheritAttrs:!1},aR=te(Te(ne({},rR),{props:S1,setup(e,{expose:t}){const n=e,{triggerRef:o}=Ne(ap,void 0);return W8(o),xe(()=>{pe(()=>n.virtualRef,s=>{s&&(o.value=no(s))},{immediate:!0}),pe(()=>o.value,(s,l)=>{sl(s)&&["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(r=>{var a;const i=n[r];i&&(s.addEventListener(r.slice(2).toLowerCase(),i),(a=l==null?void 0:l.removeEventListener)==null||a.call(l,r.slice(2).toLowerCase(),i))})},{immediate:!0})}),t({triggerRef:o}),(s,l)=>s.virtualTriggering?G("v-if",!0):(C(),x(b(lR),Et({key:0},s.$attrs,{"aria-describedby":s.open?s.id:void 0}),{default:j(()=>[ie(s.$slots,"default")]),_:3},16,["aria-describedby"]))}}));var iR=ge(aR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue"]]);const uR=["fixed","absolute"],cR=Ve({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:$e(Array),default:()=>[]},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:iu,default:"bottom"},popperOptions:{type:$e(Object),default:()=>({})},strategy:{type:String,values:uR,default:"absolute"}}),E1=Ve(Te(ne({},cR),{style:{type:$e([String,Array,Object])},className:{type:$e([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,popperClass:{type:$e([String,Array,Object])},popperStyle:{type:$e([String,Array,Object])},referenceEl:{type:$e(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},zIndex:Number})),Ev=(e,t)=>{const{placement:n,strategy:o,popperOptions:s}=e,l=Te(ne({placement:n,strategy:o},s),{modifiers:fR(e)});return pR(l,t),hR(l,s==null?void 0:s.modifiers),l},dR=e=>{if(!!ct)return no(e)};function fR(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:o}=e;return[{name:"offset",options:{offset:[0,t!=null?t:12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:o!=null?o:[]}},{name:"computeStyles",options:{gpuAcceleration:n,adaptive:n}}]}function pR(e,{arrowEl:t,arrowOffset:n}){e.modifiers.push({name:"arrow",options:{element:t,padding:n!=null?n:5}})}function hR(e,t){t&&(e.modifiers=[...e.modifiers,...t!=null?t:[]])}const mR={name:"ElPopperContent"},vR=te(Te(ne({},mR),{props:E1,emits:["mouseenter","mouseleave"],setup(e,{expose:t}){const n=e,{popperInstanceRef:o,contentRef:s,triggerRef:l}=Ne(ap,void 0),{nextZIndex:r}=jo(),a=we("popper"),i=A(),u=A(),c=A();st(n1,{arrowRef:u,arrowOffset:c});const d=A(n.zIndex||r()),f=E(()=>dR(n.referenceEl)||b(l)),p=E(()=>[{zIndex:b(d)},n.popperStyle]),h=E(()=>[a.b(),a.is("pure",n.pure),a.is(n.effect),n.popperClass]),g=({referenceEl:y,popperContentEl:w,arrowEl:S})=>{const $=Ev(n,{arrowEl:S,arrowOffset:b(c)});return va(y,w,$)},m=()=>{var y;(y=b(o))==null||y.update(),d.value=n.zIndex||d.value||r()},v=()=>{var y,w;const S={name:"eventListeners",enabled:n.visible};(w=(y=b(o))==null?void 0:y.setOptions)==null||w.call(y,$=>Te(ne({},$),{modifiers:[...$.modifiers||[],S]})),m()};return xe(()=>{let y;pe(f,w=>{var S;y==null||y();const $=b(o);if((S=$==null?void 0:$.destroy)==null||S.call($),w){const k=b(i);s.value=k,o.value=g({referenceEl:w,popperContentEl:k,arrowEl:b(u)}),y=pe(()=>w.getBoundingClientRect(),()=>m(),{immediate:!0})}else o.value=void 0},{immediate:!0}),pe(()=>n.visible,v,{immediate:!0}),pe(()=>Ev(n,{arrowEl:b(u),arrowOffset:b(c)}),w=>{var S;return(S=o.value)==null?void 0:S.setOptions(w)})}),t({popperContentRef:i,popperInstanceRef:o,updatePopper:m,contentStyle:p}),(y,w)=>(C(),M("div",{ref_key:"popperContentRef",ref:i,style:De(b(p)),class:_(b(h)),role:"tooltip",onMouseenter:w[0]||(w[0]=S=>y.$emit("mouseenter",S)),onMouseleave:w[1]||(w[1]=S=>y.$emit("mouseleave",S))},[ie(y.$slots,"default")],38))}}));var gR=ge(vR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue"]]);const bR={LIGHT:"light",DARK:"dark"};Ve({autoClose:{type:Number,default:0},cutoff:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}});function fr(e,t){const n=nt(),o=E(()=>en(n.props[t])?n.props[t]:n.props.teleported);return Ma({scope:e,from:t,replacement:"teleported",version:"2.1.0",ref:"https://element-plus.org/en-US/component/tooltip.html#attributes"},E(()=>en(n.props[t]))),{compatTeleported:o}}const _1=ot(eR),yR=te({name:"ElVisuallyHidden",props:{style:{type:[String,Object,Array]}},setup(e){return{computedStyle:E(()=>[e.style,{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}])}}});function wR(e,t,n,o,s,l){return C(),M("span",Et(e.$attrs,{style:e.computedStyle}),[ie(e.$slots,"default")],16)}var T1=ge(yR,[["render",wR],["__file","/home/runner/work/element-plus/element-plus/packages/components/visual-hidden/src/visual-hidden.vue"]]);const Zt=Ve(Te(ne(ne({},z8),E1),{appendTo:{type:$e([String,Object]),default:d1},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:$e(Boolean),default:null},transition:{type:String,default:"el-fade-in-linear"},teleported:{type:Boolean,default:!0},disabled:{type:Boolean}})),ua=Ve(Te(ne({},S1),{disabled:Boolean,trigger:{type:$e([String,Array]),default:"hover"}})),CR=Ve({openDelay:{type:Number},visibleArrow:{type:Boolean,default:void 0},hideAfter:{type:Number,default:200},showArrow:{type:Boolean,default:!0}}),Wu=Symbol("elTooltip"),$R=te({name:"ElTooltipContent",components:{ElPopperContent:gR,ElVisuallyHidden:T1},inheritAttrs:!1,props:Zt,setup(e){const t=A(null),n=A(!1),o=A(!1),s=A(!1),l=A(!1),{controlled:r,id:a,open:i,trigger:u,onClose:c,onOpen:d,onShow:f,onHide:p,onBeforeShow:h,onBeforeHide:g}=Ne(Wu,void 0),m=E(()=>e.persistent);_t(()=>{l.value=!0});const v=E(()=>b(m)?!0:b(i)),y=E(()=>e.disabled?!1:b(i)),w=E(()=>{var R;return(R=e.style)!=null?R:{}}),S=E(()=>!b(i));V8(c);const $=()=>{p()},k=()=>{if(b(r))return!0},T=Dt(k,()=>{e.enterable&&b(u)==="hover"&&d()}),O=Dt(k,()=>{b(u)==="hover"&&c()}),L=()=>{var R,z;(z=(R=t.value)==null?void 0:R.updatePopper)==null||z.call(R),h==null||h()},B=()=>{g==null||g()},V=()=>{f()};let H;return pe(()=>b(i),R=>{R?H=Ji(E(()=>{var z;return(z=t.value)==null?void 0:z.popperContentRef}),()=>{if(b(r))return;b(u)!=="hover"&&c()}):H==null||H()},{flush:"post"}),{ariaHidden:S,entering:o,leaving:s,id:a,intermediateOpen:n,contentStyle:w,contentRef:t,destroyed:l,shouldRender:v,shouldShow:y,open:i,onAfterShow:V,onBeforeEnter:L,onBeforeLeave:B,onContentEnter:T,onContentLeave:O,onTransitionLeave:$}}});function kR(e,t,n,o,s,l){const r=le("el-visually-hidden"),a=le("el-popper-content");return C(),x(Sa,{disabled:!e.teleported,to:e.appendTo},[Y(zt,{name:e.transition,onAfterLeave:e.onTransitionLeave,onBeforeEnter:e.onBeforeEnter,onAfterEnter:e.onAfterShow,onBeforeLeave:e.onBeforeLeave},{default:j(()=>[e.shouldRender?Ge((C(),x(a,Et({key:0,ref:"contentRef"},e.$attrs,{"aria-hidden":e.ariaHidden,"boundaries-padding":e.boundariesPadding,"fallback-placements":e.fallbackPlacements,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,placement:e.placement,"popper-options":e.popperOptions,strategy:e.strategy,effect:e.effect,enterable:e.enterable,pure:e.pure,"popper-class":e.popperClass,"popper-style":[e.popperStyle,e.contentStyle],"reference-el":e.referenceEl,visible:e.shouldShow,"z-index":e.zIndex,onMouseenter:e.onContentEnter,onMouseleave:e.onContentLeave}),{default:j(()=>[G(" Workaround bug #6378 "),e.destroyed?G("v-if",!0):(C(),M(Le,{key:0},[ie(e.$slots,"default"),Y(r,{id:e.id,role:"tooltip"},{default:j(()=>[it(he(e.ariaLabel),1)]),_:1},8,["id"])],64))]),_:3},16,["aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","visible","z-index","onMouseenter","onMouseleave"])),[[pt,e.shouldShow]]):G("v-if",!0)]),_:3},8,["name","onAfterLeave","onBeforeEnter","onAfterEnter","onBeforeLeave"])],8,["disabled","to"])}var SR=ge($R,[["render",kR],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue"]]);const ER=(e,t)=>Xe(e)?e.includes(t):e===t,bl=(e,t,n)=>o=>{ER(b(e),t)&&n(o)},_R=te({name:"ElTooltipTrigger",components:{ElPopperTrigger:iR},props:ua,setup(e){const t=we("tooltip"),{controlled:n,id:o,open:s,onOpen:l,onClose:r,onToggle:a}=Ne(Wu,void 0),i=A(null),u=()=>{if(b(n)||e.disabled)return!0},c=Yt(e,"trigger"),d=Dt(u,bl(c,"hover",l)),f=Dt(u,bl(c,"hover",r)),p=Dt(u,bl(c,"click",y=>{y.button===0&&a(y)})),h=Dt(u,bl(c,"focus",l)),g=Dt(u,bl(c,"focus",r)),m=Dt(u,bl(c,"contextmenu",y=>{y.preventDefault(),a(y)})),v=Dt(u,y=>{const{code:w}=y;(w===Ie.enter||w===Ie.space)&&a(y)});return{onBlur:g,onContextMenu:m,onFocus:h,onMouseenter:d,onMouseleave:f,onClick:p,onKeydown:v,open:s,id:o,triggerRef:i,ns:t}}});function TR(e,t,n,o,s,l){const r=le("el-popper-trigger");return C(),x(r,{id:e.id,"virtual-ref":e.virtualRef,open:e.open,"virtual-triggering":e.virtualTriggering,class:_(e.ns.e("trigger")),onBlur:e.onBlur,onClick:e.onClick,onContextmenu:e.onContextMenu,onFocus:e.onFocus,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onKeydown:e.onKeydown},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"])}var AR=ge(_R,[["render",TR],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue"]]);const{useModelToggleProps:NR,useModelToggle:MR,useModelToggleEmits:OR}=I8("visible"),IR=te({name:"ElTooltip",components:{ElPopper:_1,ElPopperArrow:oR,ElTooltipContent:SR,ElTooltipTrigger:AR},props:ne(ne(ne(ne(ne({},NR),Zt),ua),$1),CR),emits:[...OR,"before-show","before-hide","show","hide"],setup(e,{emit:t}){H8();const n=E(()=>(Cn(e.openDelay),e.openDelay||e.showAfter)),o=E(()=>(Cn(e.visibleArrow),en(e.visibleArrow)?e.visibleArrow:e.showArrow)),s=up(),l=A(null),r=()=>{var p;const h=b(l);h&&((p=h.popperInstanceRef)==null||p.update())},a=A(!1),{show:i,hide:u}=MR({indicator:a}),{onOpen:c,onClose:d}=K8({showAfter:n,hideAfter:Yt(e,"hideAfter"),open:i,close:u}),f=E(()=>en(e.visible));return st(Wu,{controlled:f,id:s,open:Ca(a),trigger:Yt(e,"trigger"),onOpen:c,onClose:d,onToggle:()=>{b(a)?d():c()},onShow:()=>{t("show")},onHide:()=>{t("hide")},onBeforeShow:()=>{t("before-show")},onBeforeHide:()=>{t("before-hide")},updatePopper:r}),pe(()=>e.disabled,p=>{p&&a.value&&(a.value=!1)}),{compatShowAfter:n,compatShowArrow:o,popperRef:l,open:a,hide:u,updatePopper:r,onOpen:c,onClose:d}}}),DR=["innerHTML"],PR={key:1};function LR(e,t,n,o,s,l){const r=le("el-tooltip-trigger"),a=le("el-popper-arrow"),i=le("el-tooltip-content"),u=le("el-popper");return C(),x(u,{ref:"popperRef"},{default:j(()=>[Y(r,{disabled:e.disabled,trigger:e.trigger,"virtual-ref":e.virtualRef,"virtual-triggering":e.virtualTriggering},{default:j(()=>[e.$slots.default?ie(e.$slots,"default",{key:0}):G("v-if",!0)]),_:3},8,["disabled","trigger","virtual-ref","virtual-triggering"]),Y(i,{"aria-label":e.ariaLabel,"boundaries-padding":e.boundariesPadding,content:e.content,disabled:e.disabled,effect:e.effect,enterable:e.enterable,"fallback-placements":e.fallbackPlacements,"hide-after":e.hideAfter,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,persistent:e.persistent,"popper-class":e.popperClass,"popper-style":e.popperStyle,placement:e.placement,"popper-options":e.popperOptions,pure:e.pure,"raw-content":e.rawContent,"reference-el":e.referenceEl,"show-after":e.compatShowAfter,strategy:e.strategy,teleported:e.teleported,transition:e.transition,"z-index":e.zIndex,"append-to":e.appendTo},{default:j(()=>[ie(e.$slots,"content",{},()=>[e.rawContent?(C(),M("span",{key:0,innerHTML:e.content},null,8,DR)):(C(),M("span",PR,he(e.content),1))]),e.compatShowArrow?(C(),x(a,{key:0,"arrow-offset":e.arrowOffset},null,8,["arrow-offset"])):G("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","show-after","strategy","teleported","transition","z-index","append-to"])]),_:3},512)}var RR=ge(IR,[["render",LR],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue"]]);const mn=ot(RR),BR=Ve({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:$e(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:$e([Function,Array]),default:wt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},popperAppendToBody:{type:Boolean,default:void 0},teleported:Zt.teleported,highlightFirstItem:{type:Boolean,default:!1}}),VR={[tt]:e=>Qe(e),input:e=>Qe(e),change:e=>Qe(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>dt(e)},FR=["aria-expanded","aria-owns"],HR={key:0},zR=["id","aria-selected","onClick"],KR={name:"ElAutocomplete",inheritAttrs:!1},WR=te(Te(ne({},KR),{props:BR,emits:VR,setup(e,{expose:t,emit:n}){const o=e,s="ElAutocomplete",l=we("autocomplete"),{compatTeleported:r}=fr(s,"popperAppendToBody");let a=!1;const i=rp(),u=Fy(),c=A([]),d=A(-1),f=A(""),p=A(!1),h=A(!1),g=A(!1),m=A(),v=A(),y=A(),w=A(),S=E(()=>l.b(String(Na()))),$=E(()=>u.style),k=E(()=>(Xe(c.value)&&c.value.length>0||g.value)&&p.value),T=E(()=>!o.hideLoading&&g.value),O=()=>{ze(()=>{k.value&&(f.value=`${m.value.$el.offsetWidth}px`)})},B=hn(Q=>{if(h.value)return;g.value=!0;const J=ae=>{g.value=!1,!h.value&&(Xe(ae)?(c.value=ae,d.value=o.highlightFirstItem?0:-1):Kt(s,"autocomplete suggestions must be an array"))};if(Xe(o.fetchSuggestions))J(o.fetchSuggestions);else{const ae=o.fetchSuggestions(Q,J);Xe(ae)?J(ae):el(ae)&&ae.then(J)}},o.debounce),V=Q=>{const J=Boolean(Q);if(n("input",Q),n(tt,Q),h.value=!1,p.value||(p.value=a&&J),!o.triggerOnFocus&&!Q){h.value=!0,c.value=[];return}a&&J&&(a=!1),B(Q)},H=Q=>{n("change",Q)},R=Q=>{p.value=!0,n("focus",Q),o.triggerOnFocus&&B(String(o.modelValue))},z=Q=>{n("blur",Q)},W=()=>{p.value=!1,a=!0,n(tt,""),n("clear")},P=()=>{k.value&&d.value>=0&&d.value{c.value=[],d.value=-1}))},N=()=>{p.value=!1},I=()=>{var Q;(Q=m.value)==null||Q.focus()},U=Q=>{n("input",Q[o.valueKey]),n(tt,Q[o.valueKey]),n("select",Q),ze(()=>{c.value=[],d.value=-1})},q=Q=>{if(!k.value||g.value)return;if(Q<0){d.value=-1;return}Q>=c.value.length&&(Q=c.value.length-1);const J=v.value.querySelector(`.${l.be("suggestion","wrap")}`),Ee=J.querySelectorAll(`.${l.be("suggestion","list")} li`)[Q],Me=J.scrollTop,{offsetTop:Z,scrollHeight:ve}=Ee;Z+ve>Me+J.clientHeight&&(J.scrollTop+=ve),Z{m.value.ref.setAttribute("role","textbox"),m.value.ref.setAttribute("aria-autocomplete","list"),m.value.ref.setAttribute("aria-controls","id"),m.value.ref.setAttribute("aria-activedescendant",`${S.value}-item-${d.value}`)}),t({highlightedIndex:d,activated:p,loading:g,inputRef:m,popperRef:y,suggestions:c,handleSelect:U,handleKeyEnter:P,focus:I,close:N,highlight:q}),(Q,J)=>(C(),x(b(mn),{ref_key:"popperRef",ref:y,visible:b(k),"onUpdate:visible":J[2]||(J[2]=ae=>Lt(k)?k.value=ae:null),placement:Q.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[b(l).e("popper"),Q.popperClass],teleported:b(r),"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${b(l).namespace.value}-zoom-in-top`,persistent:"",onBeforeShow:O},{content:j(()=>[D("div",{ref_key:"regionRef",ref:v,class:_([b(l).b("suggestion"),b(l).is("loading",b(T))]),style:De({minWidth:f.value,outline:"none"}),role:"region"},[Y(b(Uo),{id:b(S),tag:"ul","wrap-class":b(l).be("suggestion","wrap"),"view-class":b(l).be("suggestion","list"),role:"listbox"},{default:j(()=>[b(T)?(C(),M("li",HR,[Y(b(je),{class:_(b(l).is("loading"))},{default:j(()=>[Y(b(gs))]),_:1},8,["class"])])):(C(!0),M(Le,{key:1},rt(c.value,(ae,Ee)=>(C(),M("li",{id:`${b(S)}-item-${Ee}`,key:Ee,class:_({highlighted:d.value===Ee}),role:"option","aria-selected":d.value===Ee,onClick:Me=>U(ae)},[ie(Q.$slots,"default",{item:ae},()=>[it(he(ae[Q.valueKey]),1)])],10,zR))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:j(()=>[D("div",{ref_key:"listboxRef",ref:w,class:_([b(l).b(),Q.$attrs.class]),style:De(b($)),role:"combobox","aria-haspopup":"listbox","aria-expanded":b(k),"aria-owns":b(S)},[Y(b(Zn),Et({ref_key:"inputRef",ref:m},b(i),{"model-value":Q.modelValue,onInput:V,onChange:H,onFocus:R,onBlur:z,onClear:W,onKeydown:[J[0]||(J[0]=lt(Ke(ae=>q(d.value-1),["prevent"]),["up"])),J[1]||(J[1]=lt(Ke(ae=>q(d.value+1),["prevent"]),["down"])),lt(P,["enter"]),lt(N,["tab"])]}),fs({_:2},[Q.$slots.prepend?{name:"prepend",fn:j(()=>[ie(Q.$slots,"prepend")])}:void 0,Q.$slots.append?{name:"append",fn:j(()=>[ie(Q.$slots,"append")])}:void 0,Q.$slots.prefix?{name:"prefix",fn:j(()=>[ie(Q.$slots,"prefix")])}:void 0,Q.$slots.suffix?{name:"suffix",fn:j(()=>[ie(Q.$slots,"suffix")])}:void 0]),1040,["model-value","onKeydown"])],14,FR)]),_:3},8,["visible","placement","popper-class","teleported","transition"]))}}));var jR=ge(WR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/autocomplete/src/autocomplete.vue"]]);const YR=ot(jR),UR=Ve({size:{type:[Number,String],values:Eo,default:"",validator:e=>typeof e=="number"},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:nn},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:$e(String),default:"cover"}}),qR={error:e=>e instanceof Event},GR=["src","alt","srcset"],XR={name:"ElAvatar"},JR=te(Te(ne({},XR),{props:UR,emits:qR,setup(e,{emit:t}){const n=e,o=we("avatar"),s=A(!1),l=E(()=>{const{size:u,icon:c,shape:d}=n,f=[o.b()];return Qe(u)&&f.push(o.m(u)),c&&f.push(o.m("icon")),d&&f.push(o.m(d)),f}),r=E(()=>{const{size:u}=n;return ht(u)?{"--el-avatar-size":ro(u)}:void 0}),a=E(()=>({objectFit:n.fit}));pe(()=>n.src,()=>s.value=!1);function i(u){s.value=!0,t("error",u)}return(u,c)=>(C(),M("span",{class:_(b(l)),style:De(b(r))},[(u.src||u.srcSet)&&!s.value?(C(),M("img",{key:0,src:u.src,alt:u.alt,srcset:u.srcSet,style:De(b(a)),onError:i},null,44,GR)):u.icon?(C(),x(b(je),{key:1},{default:j(()=>[(C(),x(ft(u.icon)))]),_:1})):ie(u.$slots,"default",{key:2})],6))}}));var ZR=ge(JR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/avatar/src/avatar.vue"]]);const QR=ot(ZR),xR={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},eB={click:e=>e instanceof MouseEvent},tB=["onClick"],nB={name:"ElBacktop"},oB=te(Te(ne({},nB),{props:xR,emits:eB,setup(e,{emit:t}){const n=e,o="ElBacktop",s=we("backtop"),l=jt(),r=jt(),a=A(!1),i=E(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`})),u=()=>{if(!l.value)return;const p=Date.now(),h=l.value.scrollTop,g=()=>{if(!l.value)return;const m=(Date.now()-p)/500;m<1?(l.value.scrollTop=h*(1-w8(m)),requestAnimationFrame(g)):l.value.scrollTop=0};requestAnimationFrame(g)},c=()=>{l.value&&(a.value=l.value.scrollTop>=n.visibilityHeight)},d=p=>{u(),t("click",p)},f=M0(c,300);return xe(()=>{var p;r.value=document,l.value=document.documentElement,n.target&&(l.value=(p=document.querySelector(n.target))!=null?p:void 0,l.value||Kt(o,`target is not existed: ${n.target}`),r.value=l.value),Ht(r,"scroll",f)}),(p,h)=>(C(),x(zt,{name:`${b(s).namespace.value}-fade-in`},{default:j(()=>[a.value?(C(),M("div",{key:0,style:De(b(i)),class:_(b(s).b()),onClick:Ke(d,["stop"])},[ie(p.$slots,"default",{},()=>[Y(b(je),{class:_(b(s).e("icon"))},{default:j(()=>[Y(b(Y4))]),_:1},8,["class"])])],14,tB)):G("v-if",!0)]),_:3},8,["name"]))}}));var sB=ge(oB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/backtop/src/backtop.vue"]]);const lB=ot(sB),rB=Ve({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),aB=["textContent"],iB={name:"ElBadge"},uB=te(Te(ne({},iB),{props:rB,setup(e,{expose:t}){const n=e,o=we("badge"),s=E(()=>n.isDot?"":ht(n.value)&&ht(n.max)?n.max(C(),M("div",{class:_(b(o).b())},[ie(l.$slots,"default"),Y(zt,{name:`${b(o).namespace.value}-zoom-in-center`},{default:j(()=>[Ge(D("sup",{class:_([b(o).e("content"),b(o).em("content",l.type),b(o).is("fixed",!!l.$slots.default),b(o).is("dot",l.isDot)]),textContent:he(b(s))},null,10,aB),[[pt,!l.hidden&&(b(s)||b(s)==="0"||l.isDot)]])]),_:1},8,["name"])],2))}}));var cB=ge(uB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/badge/src/badge.vue"]]);const A1=ot(cB),dB=Ve({separator:{type:String,default:"/"},separatorIcon:{type:nn,default:""}}),fB={name:"ElBreadcrumb"},pB=te(Te(ne({},fB),{props:dB,setup(e){const t=e,n=we("breadcrumb"),o=A();return st(Y0,t),xe(()=>{const s=o.value.querySelectorAll(`.${n.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,l)=>(C(),M("div",{ref_key:"breadcrumb",ref:o,class:_(b(n).b()),"aria-label":"Breadcrumb",role:"navigation"},[ie(s.$slots,"default")],2))}}));var hB=ge(pB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb.vue"]]);const mB=Ve({to:{type:$e([String,Object]),default:""},replace:{type:Boolean,default:!1}}),vB={name:"ElBreadcrumbItem"},gB=te(Te(ne({},vB),{props:mB,setup(e){const t=e,o=nt().appContext.config.globalProperties.$router,s=Ne(Y0,{}),l=we("breadcrumb"),{separator:r,separatorIcon:a}=s,i=A(),u=()=>{!t.to||!o||(t.replace?o.replace(t.to):o.push(t.to))};return(c,d)=>(C(),M("span",{class:_(b(l).e("item"))},[D("span",{ref_key:"link",ref:i,class:_([b(l).e("inner"),b(l).is("link",!!c.to)]),role:"link",onClick:u},[ie(c.$slots,"default")],2),b(a)?(C(),x(b(je),{key:0,class:_(b(l).e("separator"))},{default:j(()=>[(C(),x(ft(b(a))))]),_:1},8,["class"])):(C(),M("span",{key:1,class:_(b(l).e("separator")),role:"presentation"},he(b(r)),3))],2))}}));var N1=ge(gB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb-item.vue"]]);const bB=ot(hB,{BreadcrumbItem:N1}),yB=Rt(N1),bd=["default","primary","success","warning","info","danger","text",""],wB=["button","submit","reset"],yd=Ve({size:Hu,disabled:Boolean,type:{type:String,values:bd,default:""},icon:{type:nn,default:""},nativeType:{type:String,values:wB,default:"button"},loading:Boolean,loadingIcon:{type:nn,default:()=>gs},plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0}}),CB={click:e=>e instanceof MouseEvent};function tn(e,t){$B(e)&&(e="100%");var n=kB(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function Xa(e){return Math.min(1,Math.max(0,e))}function $B(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function kB(e){return typeof e=="string"&&e.indexOf("%")!==-1}function M1(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Ja(e){return e<=1?Number(e)*100+"%":e}function Vs(e){return e.length===1?"0"+e:String(e)}function SB(e,t,n){return{r:tn(e,255)*255,g:tn(t,255)*255,b:tn(n,255)*255}}function _v(e,t,n){e=tn(e,255),t=tn(t,255),n=tn(n,255);var o=Math.max(e,t,n),s=Math.min(e,t,n),l=0,r=0,a=(o+s)/2;if(o===s)r=0,l=0;else{var i=o-s;switch(r=a>.5?i/(2-o-s):i/(o+s),o){case e:l=(t-n)/i+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function EB(e,t,n){var o,s,l;if(e=tn(e,360),t=tn(t,100),n=tn(n,100),t===0)s=n,l=n,o=n;else{var r=n<.5?n*(1+t):n+t-n*t,a=2*n-r;o=gc(a,r,e+1/3),s=gc(a,r,e),l=gc(a,r,e-1/3)}return{r:o*255,g:s*255,b:l*255}}function Tv(e,t,n){e=tn(e,255),t=tn(t,255),n=tn(n,255);var o=Math.max(e,t,n),s=Math.min(e,t,n),l=0,r=o,a=o-s,i=o===0?0:a/o;if(o===s)l=0;else{switch(o){case e:l=(t-n)/a+(t>16,g:(e&65280)>>8,b:e&255}}var wd={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function MB(e){var t={r:0,g:0,b:0},n=1,o=null,s=null,l=null,r=!1,a=!1;return typeof e=="string"&&(e=DB(e)),typeof e=="object"&&(Ao(e.r)&&Ao(e.g)&&Ao(e.b)?(t=SB(e.r,e.g,e.b),r=!0,a=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Ao(e.h)&&Ao(e.s)&&Ao(e.v)?(o=Ja(e.s),s=Ja(e.v),t=_B(e.h,o,s),r=!0,a="hsv"):Ao(e.h)&&Ao(e.s)&&Ao(e.l)&&(o=Ja(e.s),l=Ja(e.l),t=EB(e.h,o,l),r=!0,a="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=M1(n),{ok:r,format:e.format||a,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var OB="[-\\+]?\\d+%?",IB="[-\\+]?\\d*\\.\\d+%?",ss="(?:"+IB+")|(?:"+OB+")",bc="[\\s|\\(]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")\\s*\\)?",yc="[\\s|\\(]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")\\s*\\)?",xn={CSS_UNIT:new RegExp(ss),rgb:new RegExp("rgb"+bc),rgba:new RegExp("rgba"+yc),hsl:new RegExp("hsl"+bc),hsla:new RegExp("hsla"+yc),hsv:new RegExp("hsv"+bc),hsva:new RegExp("hsva"+yc),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function DB(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(wd[e])e=wd[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=xn.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=xn.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=xn.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=xn.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=xn.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=xn.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=xn.hex8.exec(e),n?{r:gn(n[1]),g:gn(n[2]),b:gn(n[3]),a:Nv(n[4]),format:t?"name":"hex8"}:(n=xn.hex6.exec(e),n?{r:gn(n[1]),g:gn(n[2]),b:gn(n[3]),format:t?"name":"hex"}:(n=xn.hex4.exec(e),n?{r:gn(n[1]+n[1]),g:gn(n[2]+n[2]),b:gn(n[3]+n[3]),a:Nv(n[4]+n[4]),format:t?"name":"hex8"}:(n=xn.hex3.exec(e),n?{r:gn(n[1]+n[1]),g:gn(n[2]+n[2]),b:gn(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function Ao(e){return Boolean(xn.CSS_UNIT.exec(String(e)))}var O1=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var o;if(t instanceof e)return t;typeof t=="number"&&(t=NB(t)),this.originalInput=t;var s=MB(t);this.originalInput=t,this.r=s.r,this.g=s.g,this.b=s.b,this.a=s.a,this.roundA=Math.round(100*this.a)/100,this.format=(o=n.format)!==null&&o!==void 0?o:s.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=s.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,o,s,l=t.r/255,r=t.g/255,a=t.b/255;return l<=.03928?n=l/12.92:n=Math.pow((l+.055)/1.055,2.4),r<=.03928?o=r/12.92:o=Math.pow((r+.055)/1.055,2.4),a<=.03928?s=a/12.92:s=Math.pow((a+.055)/1.055,2.4),.2126*n+.7152*o+.0722*s},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=M1(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.toHsv=function(){var t=Tv(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=Tv(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),s=Math.round(t.v*100);return this.a===1?"hsv("+n+", "+o+"%, "+s+"%)":"hsva("+n+", "+o+"%, "+s+"%, "+this.roundA+")"},e.prototype.toHsl=function(){var t=_v(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=_v(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),s=Math.round(t.l*100);return this.a===1?"hsl("+n+", "+o+"%, "+s+"%)":"hsla("+n+", "+o+"%, "+s+"%, "+this.roundA+")"},e.prototype.toHex=function(t){return t===void 0&&(t=!1),Av(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),TB(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),o=Math.round(this.b);return this.a===1?"rgb("+t+", "+n+", "+o+")":"rgba("+t+", "+n+", "+o+", "+this.roundA+")"},e.prototype.toPercentageRgb=function(){var t=function(n){return Math.round(tn(n,255)*100)+"%"};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(tn(n,255)*100)};return this.a===1?"rgb("+t(this.r)+"%, "+t(this.g)+"%, "+t(this.b)+"%)":"rgba("+t(this.r)+"%, "+t(this.g)+"%, "+t(this.b)+"%, "+this.roundA+")"},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+Av(this.r,this.g,this.b,!1),n=0,o=Object.entries(wd);n=0,l=!n&&s&&(t.startsWith("hex")||t==="name");return l?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(o=this.toRgbString()),t==="prgb"&&(o=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(o=this.toHexString()),t==="hex3"&&(o=this.toHexString(!0)),t==="hex4"&&(o=this.toHex8String(!0)),t==="hex8"&&(o=this.toHex8String()),t==="name"&&(o=this.toName()),t==="hsl"&&(o=this.toHslString()),t==="hsv"&&(o=this.toHsvString()),o||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=Xa(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=Xa(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=Xa(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=Xa(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),o=(n.h+t)%360;return n.h=o<0?360+o:o,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var o=this.toRgb(),s=new e(t).toRgb(),l=n/100,r={r:(s.r-o.r)*l+o.r,g:(s.g-o.g)*l+o.g,b:(s.b-o.b)*l+o.b,a:(s.a-o.a)*l+o.a};return new e(r)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var o=this.toHsl(),s=360/n,l=[this];for(o.h=(o.h-(s*t>>1)+720)%360;--t;)o.h=(o.h+s)%360,l.push(new e(o));return l},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),o=n.h,s=n.s,l=n.v,r=[],a=1/t;t--;)r.push(new e({h:o,s,v:l})),l=(l+a)%1;return r},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),o=new e(t).toRgb();return new e({r:o.r+(n.r-o.r)*n.a,g:o.g+(n.g-o.g)*n.a,b:o.b+(n.b-o.b)*n.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),o=n.h,s=[this],l=360/t,r=1;r{let n={};const o=e.color;if(o){const s=new O1(o),l=e.dark?s.tint(20).toString():Zo(s,20);if(e.plain)n={"--el-button-bg-color":e.dark?Zo(s,90):s.tint(90).toString(),"--el-button-text-color":o,"--el-button-border-color":e.dark?Zo(s,50):s.tint(50).toString(),"--el-button-hover-text-color":"var(--el-color-white)","--el-button-hover-bg-color":o,"--el-button-hover-border-color":o,"--el-button-active-bg-color":l,"--el-button-active-text-color":"var(--el-color-white)","--el-button-active-border-color":l},t.value&&(n["--el-button-disabled-bg-color"]=e.dark?Zo(s,90):s.tint(90).toString(),n["--el-button-disabled-text-color"]=e.dark?Zo(s,50):s.tint(50).toString(),n["--el-button-disabled-border-color"]=e.dark?Zo(s,80):s.tint(80).toString());else{const r=e.dark?Zo(s,30):s.tint(30).toString(),a=s.isDark()?"var(--el-color-white)":"var(--el-color-black)";if(n={"--el-button-bg-color":o,"--el-button-text-color":a,"--el-button-border-color":o,"--el-button-hover-bg-color":r,"--el-button-hover-text-color":a,"--el-button-hover-border-color":r,"--el-button-active-bg-color":l,"--el-button-active-border-color":l},t.value){const i=e.dark?Zo(s,50):s.tint(50).toString();n["--el-button-disabled-bg-color"]=i,n["--el-button-disabled-text-color"]=e.dark?"rgba(255, 255, 255, 0.5)":"var(--el-color-white)",n["--el-button-disabled-border-color"]=i}}}return n})}const LB=["disabled","autofocus","type"],RB={name:"ElButton"},BB=te(Te(ne({},RB),{props:yd,emits:CB,setup(e,{expose:t,emit:n}){const o=e,s=_a(),l=Ne(U0,void 0),r=cr("button"),a=we("button"),{form:i}=dr(),u=Wt(E(()=>l==null?void 0:l.size)),c=hl(),d=A(),f=E(()=>o.type||(l==null?void 0:l.type)||""),p=E(()=>{var v,y,w;return(w=(y=o.autoInsertSpace)!=null?y:(v=r.value)==null?void 0:v.autoInsertSpace)!=null?w:!1}),h=E(()=>{var v;const y=(v=s.default)==null?void 0:v.call(s);if(p.value&&(y==null?void 0:y.length)===1){const w=y[0];if((w==null?void 0:w.type)===Ea){const S=w.children;return/^\p{Unified_Ideograph}{2}$/u.test(S.trim())}}return!1}),g=PB(o),m=v=>{o.nativeType==="reset"&&(i==null||i.resetFields()),n("click",v)};return t({ref:d,size:u,type:f,disabled:c,shouldAddSpace:h}),(v,y)=>(C(),M("button",{ref_key:"_ref",ref:d,class:_([b(a).b(),b(a).m(b(f)),b(a).m(b(u)),b(a).is("disabled",b(c)),b(a).is("loading",v.loading),b(a).is("plain",v.plain),b(a).is("round",v.round),b(a).is("circle",v.circle)]),disabled:b(c)||v.loading,autofocus:v.autofocus,type:v.nativeType,style:De(b(g)),onClick:m},[v.loading?(C(),M(Le,{key:0},[v.$slots.loading?ie(v.$slots,"loading",{key:0}):(C(),x(b(je),{key:1,class:_(b(a).is("loading"))},{default:j(()=>[(C(),x(ft(v.loadingIcon)))]),_:1},8,["class"]))],2112)):v.icon||v.$slots.icon?(C(),x(b(je),{key:1},{default:j(()=>[v.icon?(C(),x(ft(v.icon),{key:0})):ie(v.$slots,"icon",{key:1})]),_:3})):G("v-if",!0),v.$slots.default?(C(),M("span",{key:2,class:_({[b(a).em("text","expand")]:b(h)})},[ie(v.$slots,"default")],2)):G("v-if",!0)],14,LB))}}));var VB=ge(BB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue"]]);const FB={size:yd.size,type:yd.type},HB={name:"ElButtonGroup"},zB=te(Te(ne({},HB),{props:FB,setup(e){const t=e;st(U0,yt({size:Yt(t,"size"),type:Yt(t,"type")}));const n=we("button");return(o,s)=>(C(),M("div",{class:_(`${b(n).b("group")}`)},[ie(o.$slots,"default")],2))}}));var I1=ge(zB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue"]]);const Kn=ot(VB,{ButtonGroup:I1}),D1=Rt(I1);var qo=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function KB(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var P1={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){var n=1e3,o=6e4,s=36e5,l="millisecond",r="second",a="minute",i="hour",u="day",c="week",d="month",f="quarter",p="year",h="date",g="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|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,y={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("_")},w=function(R,z,W){var P=String(R);return!P||P.length>=z?R:""+Array(z+1-P.length).join(W)+R},S={s:w,z:function(R){var z=-R.utcOffset(),W=Math.abs(z),P=Math.floor(W/60),N=W%60;return(z<=0?"+":"-")+w(P,2,"0")+":"+w(N,2,"0")},m:function R(z,W){if(z.date()1)return R(U[0])}else{var q=z.name;k[q]=z,N=q}return!P&&N&&($=N),N||!P&&$},L=function(R,z){if(T(R))return R.clone();var W=typeof z=="object"?z:{};return W.date=R,W.args=arguments,new V(W)},B=S;B.l=O,B.i=T,B.w=function(R,z){return L(R,{locale:z.$L,utc:z.$u,x:z.$x,$offset:z.$offset})};var V=function(){function R(W){this.$L=O(W.locale,null,!0),this.parse(W)}var z=R.prototype;return z.parse=function(W){this.$d=function(P){var N=P.date,I=P.utc;if(N===null)return new Date(NaN);if(B.u(N))return new Date;if(N instanceof Date)return new Date(N);if(typeof N=="string"&&!/Z$/i.test(N)){var U=N.match(m);if(U){var q=U[2]-1||0,Q=(U[7]||"0").substring(0,3);return I?new Date(Date.UTC(U[1],q,U[3]||1,U[4]||0,U[5]||0,U[6]||0,Q)):new Date(U[1],q,U[3]||1,U[4]||0,U[5]||0,U[6]||0,Q)}}return new Date(N)}(W),this.$x=W.x||{},this.init()},z.init=function(){var W=this.$d;this.$y=W.getFullYear(),this.$M=W.getMonth(),this.$D=W.getDate(),this.$W=W.getDay(),this.$H=W.getHours(),this.$m=W.getMinutes(),this.$s=W.getSeconds(),this.$ms=W.getMilliseconds()},z.$utils=function(){return B},z.isValid=function(){return this.$d.toString()!==g},z.isSame=function(W,P){var N=L(W);return this.startOf(P)<=N&&N<=this.endOf(P)},z.isAfter=function(W,P){return L(W)68?1900:2e3)},u=function(g){return function(m){this[g]=+m}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(m){if(!m||m==="Z")return 0;var v=m.match(/([+-]|\d\d)/g),y=60*v[1]+(+v[2]||0);return y===0?0:v[0]==="+"?-y:y}(g)}],d=function(g){var m=a[g];return m&&(m.indexOf?m:m.s.concat(m.f))},f=function(g,m){var v,y=a.meridiem;if(y){for(var w=1;w<=24;w+=1)if(g.indexOf(y(w,0,m))>-1){v=w>12;break}}else v=g===(m?"pm":"PM");return v},p={A:[r,function(g){this.afternoon=f(g,!1)}],a:[r,function(g){this.afternoon=f(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[s,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[l,u("seconds")],ss:[l,u("seconds")],m:[l,u("minutes")],mm:[l,u("minutes")],H:[l,u("hours")],h:[l,u("hours")],HH:[l,u("hours")],hh:[l,u("hours")],D:[l,u("day")],DD:[s,u("day")],Do:[r,function(g){var m=a.ordinal,v=g.match(/\d+/);if(this.day=v[0],m)for(var y=1;y<=31;y+=1)m(y).replace(/\[|\]/g,"")===g&&(this.day=y)}],M:[l,u("month")],MM:[s,u("month")],MMM:[r,function(g){var m=d("months"),v=(d("monthsShort")||m.map(function(y){return y.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[r,function(g){var m=d("months").indexOf(g)+1;if(m<1)throw new Error;this.month=m%12||m}],Y:[/[+-]?\d+/,u("year")],YY:[s,function(g){this.year=i(g)}],YYYY:[/\d{4}/,u("year")],Z:c,ZZ:c};function h(g){var m,v;m=g,v=a&&a.formats;for(var y=(g=m.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(L,B,V){var H=V&&V.toUpperCase();return B||v[V]||n[V]||v[H].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,z,W){return z||W.slice(1)})})).match(o),w=y.length,S=0;S-1)return new Date((N==="X"?1e3:1)*P);var U=h(N)(P),q=U.year,Q=U.month,J=U.day,ae=U.hours,Ee=U.minutes,Me=U.seconds,Z=U.milliseconds,ve=U.zone,Ce=new Date,ke=J||(q||Q?1:Ce.getDate()),Oe=q||Ce.getFullYear(),We=0;q&&!Q||(We=Q>0?Q-1:Ce.getMonth());var qe=ae||0,K=Ee||0,X=Me||0,fe=Z||0;return ve?new Date(Date.UTC(Oe,We,ke,qe,K,X,fe+60*ve.offset*1e3)):I?new Date(Date.UTC(Oe,We,ke,qe,K,X,fe)):new Date(Oe,We,ke,qe,K,X,fe)}catch{return new Date("")}}($,O,k),this.init(),H&&H!==!0&&(this.$L=this.locale(H).$L),V&&$!=this.format(O)&&(this.$d=new Date("")),a={}}else if(O instanceof Array)for(var R=O.length,z=1;z<=R;z+=1){T[1]=O[z-1];var W=v.apply(this,T);if(W.isValid()){this.$d=W.$d,this.$L=W.$L,this.init();break}z===R&&(this.$d=new Date(""))}else w.call(this,S)}}})})(B1);var pp=B1.exports;const Cd="HH:mm:ss",Mr="YYYY-MM-DD",WB={date:Mr,week:"gggg[w]ww",year:"YYYY",month:"YYYY-MM",datetime:`${Mr} ${Cd}`,monthrange:"YYYY-MM",daterange:Mr,datetimerange:`${Mr} ${Cd}`},hp={id:{type:[Array,String]},name:{type:[Array,String],default:""},popperClass:{type:String,default:""},format:{type:String},valueFormat:{type:String},type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Fo},editable:{type:Boolean,default:!0},prefixIcon:{type:[String,Object],default:""},size:{type:String,validator:On},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},modelValue:{type:[Date,Array,String,Number],default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:[Date,Array]},defaultTime:{type:[Date,Array]},isRange:{type:Boolean,default:!1},disabledHours:{type:Function},disabledMinutes:{type:Function},disabledSeconds:{type:Function},disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:{type:Boolean,default:!1},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean},Mv=function(e,t){const n=e instanceof Date,o=t instanceof Date;return n&&o?e.getTime()===t.getTime():!n&&!o?e===t:!1},Ov=function(e,t){const n=Array.isArray(e),o=Array.isArray(t);return n&&o?e.length!==t.length?!1:e.every((s,l)=>Mv(s,t[l])):!n&&!o?Mv(e,t):!1},Iv=function(e,t,n){const o=aa(t)||t==="x"?Je(e).locale(n):Je(e,t).locale(n);return o.isValid()?o:void 0},Dv=function(e,t,n){return aa(t)?e:t==="x"?+e:Je(e).locale(n).format(t)},jB=te({name:"Picker",components:{ElInput:Zn,ElTooltip:mn,ElIcon:je},props:hp,emits:["update:modelValue","change","focus","blur","calendar-change","panel-change","visible-change"],setup(e,t){const{lang:n}=kt(),o=we("date"),s=we("input"),l=we("range"),r=Ne(Dn,{}),a=Ne(Un,{}),i=Ne("ElPopperOptions",{}),u=A(),c=A(),d=A(!1),f=A(!1),p=A(null);pe(d,F=>{var de;F?p.value=e.modelValue:(Ce.value=null,ze(()=>{h(e.modelValue)}),t.emit("blur"),Oe(),e.validateEvent&&((de=a.validate)==null||de.call(a,"blur").catch(Fe=>void 0)))});const h=(F,de)=>{var Fe;(de||!Ov(F,p.value))&&(t.emit("change",F),e.validateEvent&&((Fe=a.validate)==null||Fe.call(a,"change").catch(Ze=>void 0)))},g=F=>{if(!Ov(e.modelValue,F)){let de;Array.isArray(F)?de=F.map(Fe=>Dv(Fe,e.valueFormat,n.value)):F&&(de=Dv(F,e.valueFormat,n.value)),t.emit("update:modelValue",F&&de,n.value)}},m=E(()=>{if(c.value){const F=ae.value?c.value:c.value.$el;return Array.from(F.querySelectorAll("input"))}return[]}),v=E(()=>m==null?void 0:m.value[0]),y=E(()=>m==null?void 0:m.value[1]),w=(F,de,Fe)=>{const Ze=m.value;!Ze.length||(!Fe||Fe==="min"?(Ze[0].setSelectionRange(F,de),Ze[0].focus()):Fe==="max"&&(Ze[1].setSelectionRange(F,de),Ze[1].focus()))},S=(F="",de=!1)=>{d.value=de;let Fe;Array.isArray(F)?Fe=F.map(Ze=>Ze.toDate()):Fe=F&&F.toDate(),Ce.value=null,g(Fe)},$=()=>{f.value=!0},k=()=>{t.emit("visible-change",!0)},T=()=>{f.value=!1,t.emit("visible-change",!1)},O=(F=!0)=>{let de=v.value;!F&&ae.value&&(de=y.value),de&&de.focus()},L=F=>{e.readonly||V.value||d.value||(d.value=!0,t.emit("focus",F))},B=()=>{var F;(F=u.value)==null||F.onClose(),Oe()},V=E(()=>e.disabled||r.disabled),H=E(()=>{let F;if(q.value?se.value.getDefaultValue&&(F=se.value.getDefaultValue()):Array.isArray(e.modelValue)?F=e.modelValue.map(de=>Iv(de,e.valueFormat,n.value)):F=Iv(e.modelValue,e.valueFormat,n.value),se.value.getRangeAvailableTime){const de=se.value.getRangeAvailableTime(F);_n(de,F)||(F=de,g(Array.isArray(F)?F.map(Fe=>Fe.toDate()):F.toDate()))}return Array.isArray(F)&&F.some(de=>!de)&&(F=[]),F}),R=E(()=>{if(!se.value.panelReady)return;const F=qe(H.value);if(Array.isArray(Ce.value))return[Ce.value[0]||F&&F[0]||"",Ce.value[1]||F&&F[1]||""];if(Ce.value!==null)return Ce.value;if(!(!W.value&&q.value)&&!(!d.value&&q.value))return F?P.value?F.join(", "):F:""}),z=E(()=>e.type.includes("time")),W=E(()=>e.type.startsWith("time")),P=E(()=>e.type==="dates"),N=E(()=>e.prefixIcon||(z.value?P0:P4)),I=A(!1),U=F=>{e.readonly||V.value||I.value&&(F.stopPropagation(),g(null),h(null,!0),I.value=!1,d.value=!1,se.value.handleClear&&se.value.handleClear())},q=E(()=>!e.modelValue||Array.isArray(e.modelValue)&&!e.modelValue.length),Q=()=>{e.readonly||V.value||!q.value&&e.clearable&&(I.value=!0)},J=()=>{I.value=!1},ae=E(()=>e.type.includes("range")),Ee=Wt(),Me=E(()=>{var F,de;return(de=(F=u.value)==null?void 0:F.popperRef)==null?void 0:de.contentRef}),Z=E(()=>{var F,de;return(de=(F=b(u))==null?void 0:F.popperRef)==null?void 0:de.contentRef}),ve=E(()=>{var F;return b(ae)?b(c):(F=b(c))==null?void 0:F.$el});Ji(ve,F=>{const de=b(Z),Fe=b(ve);de&&(F.target===de||F.composedPath().includes(de))||F.target===Fe||F.composedPath().includes(Fe)||(d.value=!1)});const Ce=A(null),ke=()=>{if(Ce.value){const F=We(R.value);F&&K(F)&&(g(Array.isArray(F)?F.map(de=>de.toDate()):F.toDate()),Ce.value=null)}Ce.value===""&&(g(null),h(null),Ce.value=null)},Oe=()=>{m.value.forEach(F=>F.blur())},We=F=>F?se.value.parseUserInput(F):null,qe=F=>F?se.value.formatToString(F):null,K=F=>se.value.isValidValue(F),X=F=>{const de=F.code;if(de===Ie.esc){d.value=!1,F.stopPropagation();return}if(de===Ie.tab){ae.value?setTimeout(()=>{m.value.includes(document.activeElement)||(d.value=!1,Oe())},0):(ke(),d.value=!1,F.stopPropagation());return}if(de===Ie.enter||de===Ie.numpadEnter){(Ce.value===null||Ce.value===""||K(We(R.value)))&&(ke(),d.value=!1),F.stopPropagation();return}if(Ce.value){F.stopPropagation();return}se.value.handleKeydown&&se.value.handleKeydown(F)},fe=F=>{Ce.value=F},ye=F=>{Ce.value?Ce.value=[F.target.value,Ce.value[1]]:Ce.value=[F.target.value,null]},be=F=>{Ce.value?Ce.value=[Ce.value[0],F.target.value]:Ce.value=[null,F.target.value]},_e=()=>{const F=We(Ce.value&&Ce.value[0]);if(F&&F.isValid()){Ce.value=[qe(F),R.value[1]];const de=[F,H.value&&H.value[1]];K(de)&&(g(de),Ce.value=null)}},re=()=>{const F=We(Ce.value&&Ce.value[1]);if(F&&F.isValid()){Ce.value=[R.value[0],qe(F)];const de=[H.value&&H.value[0],F];K(de)&&(g(de),Ce.value=null)}},se=A({}),ee=F=>{se.value[F[0]]=F[1],se.value.panelReady=!0},ue=F=>{t.emit("calendar-change",F)},Re=(F,de,Fe)=>{t.emit("panel-change",F,de,Fe)};return st("EP_PICKER_BASE",{props:e}),{nsDate:o,nsInput:s,nsRange:l,elPopperOptions:i,isDatesPicker:P,handleEndChange:re,handleStartChange:_e,handleStartInput:ye,handleEndInput:be,onUserInput:fe,handleChange:ke,handleKeydown:X,popperPaneRef:Me,onClickOutside:Ji,pickerSize:Ee,isRangeInput:ae,onMouseLeave:J,onMouseEnter:Q,onClearIconClick:U,showClose:I,triggerIcon:N,onPick:S,handleFocus:L,handleBlur:B,pickerVisible:d,pickerActualVisible:f,displayValue:R,parsedValue:H,setSelectionRange:w,refPopper:u,inputRef:c,pickerDisabled:V,onSetPickerOption:ee,onCalendarChange:ue,onPanelChange:Re,focus:O,onShow:k,onBeforeShow:$,onHide:T}}}),YB=["id","name","placeholder","value","disabled","readonly"],UB=["id","name","placeholder","value","disabled","readonly"];function qB(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-input"),i=le("el-tooltip");return C(),x(i,Et({ref:"refPopper",visible:e.pickerVisible,"onUpdate:visible":t[17]||(t[17]=u=>e.pickerVisible=u),effect:"light",pure:"",trigger:"click"},e.$attrs,{"append-to-body":"",transition:`${e.nsDate.namespace.value}-zoom-in-top`,"popper-class":[`${e.nsDate.namespace.value}-picker__popper`,e.popperClass],"popper-options":e.elPopperOptions,"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:e.onBeforeShow,onShow:e.onShow,onHide:e.onHide}),{default:j(()=>[e.isRangeInput?(C(),M("div",{key:1,ref:"inputRef",class:_([e.nsDate.b("editor"),e.nsDate.bm("editor",e.type),e.nsInput.e("inner"),e.nsDate.is("disabled",e.pickerDisabled),e.nsDate.is("active",e.pickerVisible),e.nsRange.b("editor"),e.pickerSize?e.nsRange.bm("editor",e.pickerSize):"",e.$attrs.class]),style:De(e.$attrs.style),onClick:t[7]||(t[7]=(...u)=>e.handleFocus&&e.handleFocus(...u)),onMouseenter:t[8]||(t[8]=(...u)=>e.onMouseEnter&&e.onMouseEnter(...u)),onMouseleave:t[9]||(t[9]=(...u)=>e.onMouseLeave&&e.onMouseLeave(...u)),onKeydown:t[10]||(t[10]=(...u)=>e.handleKeydown&&e.handleKeydown(...u))},[e.triggerIcon?(C(),x(r,{key:0,class:_([e.nsInput.e("icon"),e.nsRange.e("icon")]),onClick:e.handleFocus},{default:j(()=>[(C(),x(ft(e.triggerIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0),D("input",{id:e.id&&e.id[0],autocomplete:"off",name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:e.displayValue&&e.displayValue[0],disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,class:_(e.nsRange.b("input")),onInput:t[1]||(t[1]=(...u)=>e.handleStartInput&&e.handleStartInput(...u)),onChange:t[2]||(t[2]=(...u)=>e.handleStartChange&&e.handleStartChange(...u)),onFocus:t[3]||(t[3]=(...u)=>e.handleFocus&&e.handleFocus(...u))},null,42,YB),ie(e.$slots,"range-separator",{},()=>[D("span",{class:_(e.nsRange.b("separator"))},he(e.rangeSeparator),3)]),D("input",{id:e.id&&e.id[1],autocomplete:"off",name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:e.displayValue&&e.displayValue[1],disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,class:_(e.nsRange.b("input")),onFocus:t[4]||(t[4]=(...u)=>e.handleFocus&&e.handleFocus(...u)),onInput:t[5]||(t[5]=(...u)=>e.handleEndInput&&e.handleEndInput(...u)),onChange:t[6]||(t[6]=(...u)=>e.handleEndChange&&e.handleEndChange(...u))},null,42,UB),e.clearIcon?(C(),x(r,{key:1,class:_([e.nsInput.e("icon"),e.nsRange.e("close-icon"),{[e.nsRange.e("close-icon--hidden")]:!e.showClose}]),onClick:e.onClearIconClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)],38)):(C(),x(a,{key:0,id:e.id,ref:"inputRef","model-value":e.displayValue,name:e.name,size:e.pickerSize,disabled:e.pickerDisabled,placeholder:e.placeholder,class:_([e.nsDate.b("editor"),e.nsDate.bm("editor",e.type),e.$attrs.class]),style:De(e.$attrs.style),readonly:!e.editable||e.readonly||e.isDatesPicker||e.type==="week",onInput:e.onUserInput,onFocus:e.handleFocus,onKeydown:e.handleKeydown,onChange:e.handleChange,onMouseenter:e.onMouseEnter,onMouseleave:e.onMouseLeave,onClick:t[0]||(t[0]=Ke(()=>{},["stop"]))},{prefix:j(()=>[e.triggerIcon?(C(),x(r,{key:0,class:_(e.nsInput.e("icon")),onClick:e.handleFocus},{default:j(()=>[(C(),x(ft(e.triggerIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),suffix:j(()=>[e.showClose&&e.clearIcon?(C(),x(r,{key:0,class:_(`${e.nsInput.e("icon")} clear-icon`),onClick:e.onClearIconClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","onInput","onFocus","onKeydown","onChange","onMouseenter","onMouseleave"]))]),content:j(()=>[ie(e.$slots,"default",{visible:e.pickerVisible,actualVisible:e.pickerActualVisible,parsedValue:e.parsedValue,format:e.format,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,onPick:t[11]||(t[11]=(...u)=>e.onPick&&e.onPick(...u)),onSelectRange:t[12]||(t[12]=(...u)=>e.setSelectionRange&&e.setSelectionRange(...u)),onSetPickerOption:t[13]||(t[13]=(...u)=>e.onSetPickerOption&&e.onSetPickerOption(...u)),onCalendarChange:t[14]||(t[14]=(...u)=>e.onCalendarChange&&e.onCalendarChange(...u)),onPanelChange:t[15]||(t[15]=(...u)=>e.onPanelChange&&e.onPanelChange(...u)),onMousedown:t[16]||(t[16]=Ke(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-options","onBeforeShow","onShow","onHide"])}var V1=ge(jB,[["render",qB],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue"]]);const xo=new Map;let Pv;ct&&(document.addEventListener("mousedown",e=>Pv=e),document.addEventListener("mouseup",e=>{for(const t of xo.values())for(const{documentHandler:n}of t)n(e,Pv)}));function Lv(e,t){let n=[];return Array.isArray(t.arg)?n=t.arg:sl(t.arg)&&n.push(t.arg),function(o,s){const l=t.instance.popperRef,r=o.target,a=s==null?void 0:s.target,i=!t||!t.instance,u=!r||!a,c=e.contains(r)||e.contains(a),d=e===r,f=n.length&&n.some(h=>h==null?void 0:h.contains(r))||n.length&&n.includes(a),p=l&&(l.contains(r)||l.contains(a));i||u||c||d||f||p||t.value(o,s)}}const ml={beforeMount(e,t){xo.has(e)||xo.set(e,[]),xo.get(e).push({documentHandler:Lv(e,t),bindingFn:t.value})},updated(e,t){xo.has(e)||xo.set(e,[]);const n=xo.get(e),o=n.findIndex(l=>l.bindingFn===t.oldValue),s={documentHandler:Lv(e,t),bindingFn:t.value};o>=0?n.splice(o,1,s):n.push(s)},unmounted(e){xo.delete(e)}};var F1={beforeMount(e,t){let n=null,o;const s=()=>t.value&&t.value(),l=()=>{Date.now()-o<100&&s(),clearInterval(n),n=null};Tt(e,"mousedown",r=>{r.button===0&&(o=Date.now(),TI(document,"mouseup",l),clearInterval(n),n=setInterval(s,100))})}};const $d="_trap-focus-children",Fs=[],Rv=e=>{if(Fs.length===0)return;const t=Fs[Fs.length-1][$d];if(t.length>0&&e.code===Ie.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}const n=e.shiftKey,o=e.target===t[0],s=e.target===t[t.length-1];o&&n&&(e.preventDefault(),t[t.length-1].focus()),s&&!n&&(e.preventDefault(),t[0].focus())}},H1={beforeMount(e){e[$d]=ev(e),Fs.push(e),Fs.length<=1&&Tt(document,"keydown",Rv)},updated(e){ze(()=>{e[$d]=ev(e)})},unmounted(){Fs.shift(),Fs.length===0&&Vt(document,"keydown",Rv)}};var Bv=!1,Rs,kd,Sd,pi,hi,z1,mi,Ed,_d,Td,K1,Ad,Nd,W1,j1;function un(){if(!Bv){Bv=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Ad=/\b(iPhone|iP[ao]d)/.exec(e),Nd=/\b(iP[ao]d)/.exec(e),Td=/Android/i.exec(e),W1=/FBAN\/\w+;/i.exec(e),j1=/Mobile/i.exec(e),K1=!!/Win64/.exec(e),t){Rs=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,Rs&&document&&document.documentMode&&(Rs=document.documentMode);var o=/(?:Trident\/(\d+.\d+))/.exec(e);z1=o?parseFloat(o[1])+4:Rs,kd=t[2]?parseFloat(t[2]):NaN,Sd=t[3]?parseFloat(t[3]):NaN,pi=t[4]?parseFloat(t[4]):NaN,pi?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),hi=t&&t[1]?parseFloat(t[1]):NaN):hi=NaN}else Rs=kd=Sd=hi=pi=NaN;if(n){if(n[1]){var s=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);mi=s?parseFloat(s[1].replace("_",".")):!0}else mi=!1;Ed=!!n[2],_d=!!n[3]}else mi=Ed=_d=!1}}var Md={ie:function(){return un()||Rs},ieCompatibilityMode:function(){return un()||z1>Rs},ie64:function(){return Md.ie()&&K1},firefox:function(){return un()||kd},opera:function(){return un()||Sd},webkit:function(){return un()||pi},safari:function(){return Md.webkit()},chrome:function(){return un()||hi},windows:function(){return un()||Ed},osx:function(){return un()||mi},linux:function(){return un()||_d},iphone:function(){return un()||Ad},mobile:function(){return un()||Ad||Nd||Td||j1},nativeApp:function(){return un()||W1},android:function(){return un()||Td},ipad:function(){return un()||Nd}},GB=Md,Za=!!(typeof window<"u"&&window.document&&window.document.createElement),XB={canUseDOM:Za,canUseWorkers:typeof Worker<"u",canUseEventListeners:Za&&!!(window.addEventListener||window.attachEvent),canUseViewport:Za&&!!window.screen,isInWorker:!Za},Y1=XB,U1;Y1.canUseDOM&&(U1=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function JB(e,t){if(!Y1.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var s=document.createElement("div");s.setAttribute(n,"return;"),o=typeof s[n]=="function"}return!o&&U1&&e==="wheel"&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}var ZB=JB,Vv=10,Fv=40,Hv=800;function q1(e){var t=0,n=0,o=0,s=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),o=t*Vv,s=n*Vv,"deltaY"in e&&(s=e.deltaY),"deltaX"in e&&(o=e.deltaX),(o||s)&&e.deltaMode&&(e.deltaMode==1?(o*=Fv,s*=Fv):(o*=Hv,s*=Hv)),o&&!t&&(t=o<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:o,pixelY:s}}q1.getEventType=function(){return GB.firefox()?"DOMMouseScroll":ZB("wheel")?"wheel":"mousewheel"};var QB=q1;/** +`,I6=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function P6(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),o=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),s=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:I6.map(r=>`${r}:${t.getPropertyValue(r)}`).join(";"),paddingSize:o,borderSize:s,boxSizing:n}}function Sv(e,t=1,n){var o;Qn||(Qn=document.createElement("textarea"),document.body.appendChild(Qn));const{paddingSize:s,borderSize:l,boxSizing:r,contextStyle:a}=P6(e);Qn.setAttribute("style",`${a};${O6}`),Qn.value=e.value||e.placeholder||"";let i=Qn.scrollHeight;const u={};r==="border-box"?i=i+l:r==="content-box"&&(i=i-s),Qn.value="";const c=Qn.scrollHeight-s;if(ht(t)){let d=c*t;r==="border-box"&&(d=d+s+l),i=Math.max(d,i),u.minHeight=`${d}px`}if(ht(n)){let d=c*n;r==="border-box"&&(d=d+s+l),i=Math.min(d,i)}return u.height=`${i}px`,(o=Qn.parentNode)==null||o.removeChild(Qn),Qn=void 0,u}const D6=Be({size:Fu,disabled:Boolean,modelValue:{type:$e([String,Number,Object]),default:""},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:$e([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},placeholder:{type:String},form:{type:String,default:""},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},suffixIcon:{type:nn,default:""},prefixIcon:{type:nn,default:""},label:{type:String},tabindex:{type:[Number,String]},validateEvent:{type:Boolean,default:!0},inputStyle:{type:$e([Object,Array,String]),default:()=>Dt({})}}),L6={[tt]:e=>Qe(e),input:e=>Qe(e),change:e=>Qe(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},R6=["type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder"],V6=["tabindex","disabled","readonly","autocomplete","aria-label","placeholder"],B6={name:"ElInput",inheritAttrs:!1},F6=ee(Te(ne({},B6),{props:D6,emits:L6,setup(e,{expose:t,emit:n}){const o=e,s={suffix:"append",prefix:"prepend"},l=nt(),r=zy(),a=Ea(),i=lp(),{form:u,formItem:c}=cr(),d=Wt(),f=pl(),p=we("input"),h=we("textarea"),g=jt(),m=jt(),v=A(!1),b=A(!1),w=A(!1),S=A(!1),$=jt(o.inputStyle),k=E(()=>g.value||m.value),T=E(()=>{var F;return(F=u==null?void 0:u.statusIcon)!=null?F:!1}),O=E(()=>(c==null?void 0:c.validateState)||""),L=E(()=>H0[O.value]),V=E(()=>S.value?QL:mD),B=E(()=>[r.style,o.inputStyle]),H=E(()=>[o.inputStyle,$.value,{resize:o.resize}]),R=E(()=>Qf(o.modelValue)?"":String(o.modelValue)),z=E(()=>o.clearable&&!f.value&&!o.readonly&&!!R.value&&(v.value||b.value)),W=E(()=>o.showPassword&&!f.value&&!o.readonly&&(!!R.value||v.value)),P=E(()=>o.showWordLimit&&!!i.value.maxlength&&(o.type==="text"||o.type==="textarea")&&!f.value&&!o.readonly&&!o.showPassword),N=E(()=>Array.from(R.value).length),I=E(()=>!!P.value&&N.value>Number(i.value.maxlength)),U=E(()=>!!a.suffix||!!o.suffixIcon||z.value||o.showPassword||P.value||!!O.value&&T.value),q=()=>{const{type:F,autosize:de}=o;if(!(!ct||F!=="textarea"))if(de){const Fe=dt(de)?de.minRows:void 0,Je=dt(de)?de.maxRows:void 0;$.value=ne({},Sv(m.value,Fe,Je))}else $.value={minHeight:Sv(m.value).minHeight}},Q=()=>{const F=k.value;!F||F.value===R.value||(F.value=R.value)},Z=F=>{const{el:de}=l.vnode;if(!de)return;const Je=Array.from(de.querySelectorAll(`.${p.e(F)}`)).find(oe=>oe.parentNode===de);if(!Je)return;const He=s[F];a[He]?Je.style.transform=`translateX(${F==="suffix"?"-":""}${de.querySelector(`.${p.be("group",He)}`).offsetWidth}px)`:Je.removeAttribute("style")},ae=()=>{Z("prefix"),Z("suffix")},Ee=async F=>{const{value:de}=F.target;w.value||de!==R.value&&(n(tt,de),n("input",de),await ze(),Q())},Me=F=>{n("change",F.target.value)},J=F=>{n("compositionstart",F),w.value=!0},ve=F=>{var de;n("compositionupdate",F);const Fe=(de=F.target)==null?void 0:de.value,Je=Fe[Fe.length-1]||"";w.value=!Ru(Je)},Ce=F=>{n("compositionend",F),w.value&&(w.value=!1,Ee(F))},ke=()=>{S.value=!S.value,Oe()},Oe=async()=>{var F;await ze(),(F=k.value)==null||F.focus()},We=()=>{var F;return(F=k.value)==null?void 0:F.blur()},qe=F=>{v.value=!0,n("focus",F)},K=F=>{var de;v.value=!1,n("blur",F),o.validateEvent&&((de=c==null?void 0:c.validate)==null||de.call(c,"blur").catch(Fe=>void 0))},X=F=>{b.value=!1,n("mouseleave",F)},fe=F=>{b.value=!0,n("mouseenter",F)},ye=F=>{n("keydown",F)},be=()=>{var F;(F=k.value)==null||F.select()},_e=()=>{n(tt,""),n("change",""),n("clear"),n("input","")};pe(()=>o.modelValue,()=>{var F;ze(()=>q()),o.validateEvent&&((F=c==null?void 0:c.validate)==null||F.call(c,"change").catch(de=>void 0))}),pe(R,()=>Q()),pe(()=>o.type,async()=>{await ze(),Q(),q(),ae()});const re=A(),se=A(),te=A({}),ue=(F,de)=>{if(F.value){const Fe=F.value.offsetWidth;return Fe>0?Fe+16:de}return de},Re=()=>{te.value=ne({paddingRight:`${ue(re,0)}px`,paddingLeft:`${ue(se,11)}px`},o.inputStyle)};return pe(z,()=>{ze(()=>{Re()})}),xe(async()=>{Re(),Q(),ae(),await ze(),q()}),Xn(async()=>{await ze(),ae()}),t({input:g,textarea:m,ref:k,textareaStyle:H,autosize:Yt(o,"autosize"),focus:Oe,blur:We,select:be,clear:_e,resizeTextarea:q}),(F,de)=>Ge((C(),M("div",{class:_([F.type==="textarea"?y(h).b():y(p).b(),y(p).m(y(d)),y(p).is("disabled",y(f)),y(p).is("exceed",y(I)),{[y(p).b("group")]:F.$slots.prepend||F.$slots.append,[y(p).bm("group","append")]:F.$slots.append,[y(p).bm("group","prepend")]:F.$slots.prepend,[y(p).m("prefix")]:F.$slots.prefix||F.prefixIcon,[y(p).m("suffix")]:F.$slots.suffix||F.suffixIcon||F.clearable||F.showPassword,[y(p).m("suffix--password-clear")]:y(z)&&y(W)},F.$attrs.class]),style:Pe(y(B)),onMouseenter:fe,onMouseleave:X},[G(" input "),F.type!=="textarea"?(C(),M(Le,{key:0},[G(" prepend slot "),F.$slots.prepend?(C(),M("div",{key:0,class:_(y(p).be("group","prepend"))},[ie(F.$slots,"prepend")],2)):G("v-if",!0),D("input",Et({ref_key:"input",ref:g,class:y(p).e("inner")},y(i),{type:F.showPassword?S.value?"text":"password":F.type,disabled:y(f),readonly:F.readonly,autocomplete:F.autocomplete,tabindex:F.tabindex,"aria-label":F.label,placeholder:F.placeholder,style:te.value,onCompositionstart:J,onCompositionupdate:ve,onCompositionend:Ce,onInput:Ee,onFocus:qe,onBlur:K,onChange:Me,onKeydown:ye}),null,16,R6),G(" prefix slot "),F.$slots.prefix||F.prefixIcon?(C(),M("span",{key:1,class:_(y(p).e("prefix"))},[D("span",{ref_key:"innerPrefixRef",ref:se,class:_(y(p).e("prefix-inner"))},[ie(F.$slots,"prefix"),F.prefixIcon?(C(),x(y(je),{key:0,class:_(y(p).e("icon"))},{default:j(()=>[(C(),x(ft(F.prefixIcon)))]),_:1},8,["class"])):G("v-if",!0)],2)],2)):G("v-if",!0),G(" suffix slot "),y(U)?(C(),M("span",{key:2,class:_(y(p).e("suffix"))},[D("span",{ref_key:"innerSuffixRef",ref:re,class:_(y(p).e("suffix-inner"))},[!y(z)||!y(W)||!y(P)?(C(),M(Le,{key:0},[ie(F.$slots,"suffix"),F.suffixIcon?(C(),x(y(je),{key:0,class:_(y(p).e("icon"))},{default:j(()=>[(C(),x(ft(F.suffixIcon)))]),_:1},8,["class"])):G("v-if",!0)],64)):G("v-if",!0),y(z)?(C(),x(y(je),{key:1,class:_([y(p).e("icon"),y(p).e("clear")]),onMousedown:de[0]||(de[0]=Ke(()=>{},["prevent"])),onClick:_e},{default:j(()=>[Y(y(Fo))]),_:1},8,["class"])):G("v-if",!0),y(W)?(C(),x(y(je),{key:2,class:_([y(p).e("icon"),y(p).e("clear")]),onClick:ke},{default:j(()=>[(C(),x(ft(y(V))))]),_:1},8,["class"])):G("v-if",!0),y(P)?(C(),M("span",{key:3,class:_(y(p).e("count"))},[D("span",{class:_(y(p).e("count-inner"))},he(y(N))+" / "+he(y(i).maxlength),3)],2)):G("v-if",!0)],2),y(O)&&y(L)&&y(T)?(C(),x(y(je),{key:0,class:_([y(p).e("icon"),y(p).e("validateIcon"),y(p).is("loading",y(O)==="validating")])},{default:j(()=>[(C(),x(ft(y(L))))]),_:1},8,["class"])):G("v-if",!0)],2)):G("v-if",!0),G(" append slot "),F.$slots.append?(C(),M("div",{key:3,class:_(y(p).be("group","append"))},[ie(F.$slots,"append")],2)):G("v-if",!0)],64)):(C(),M(Le,{key:1},[G(" textarea "),D("textarea",Et({ref_key:"textarea",ref:m,class:y(h).e("inner")},y(i),{tabindex:F.tabindex,disabled:y(f),readonly:F.readonly,autocomplete:F.autocomplete,style:y(H),"aria-label":F.label,placeholder:F.placeholder,onCompositionstart:J,onCompositionupdate:ve,onCompositionend:Ce,onInput:Ee,onFocus:qe,onBlur:K,onChange:Me,onKeydown:ye}),null,16,V6),y(P)?(C(),M("span",{key:0,class:_(y(p).e("count"))},he(y(N))+" / "+he(y(i).maxlength),3)):G("v-if",!0)],64))],38)),[[pt,F.type!=="hidden"]])}}));var H6=ge(F6,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]);const Jn=ot(H6),k1={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},z6=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),K6=Be({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),Ev="Thumb",W6=ee({name:Ev,props:K6,setup(e){const t=Ne(n1),n=we("scrollbar");t||Kt(Ev,"can not inject scrollbar context");const o=A(),s=A(),l=A({}),r=A(!1);let a=!1,i=!1,u=ct?document.onselectstart:null;const c=E(()=>k1[e.vertical?"vertical":"horizontal"]),d=E(()=>z6({size:e.size,move:e.move,bar:c.value})),f=E(()=>o.value[c.value.offset]**2/t.wrapElement[c.value.scrollSize]/e.ratio/s.value[c.value.offset]),p=$=>{var k;if($.stopPropagation(),$.ctrlKey||[1,2].includes($.button))return;(k=window.getSelection())==null||k.removeAllRanges(),g($);const T=$.currentTarget;!T||(l.value[c.value.axis]=T[c.value.offset]-($[c.value.client]-T.getBoundingClientRect()[c.value.direction]))},h=$=>{if(!s.value||!o.value||!t.wrapElement)return;const k=Math.abs($.target.getBoundingClientRect()[c.value.direction]-$[c.value.client]),T=s.value[c.value.offset]/2,O=(k-T)*100*f.value/o.value[c.value.offset];t.wrapElement[c.value.scroll]=O*t.wrapElement[c.value.scrollSize]/100},g=$=>{$.stopImmediatePropagation(),a=!0,document.addEventListener("mousemove",m),document.addEventListener("mouseup",v),u=document.onselectstart,document.onselectstart=()=>!1},m=$=>{if(!o.value||!s.value||a===!1)return;const k=l.value[c.value.axis];if(!k)return;const T=(o.value.getBoundingClientRect()[c.value.direction]-$[c.value.client])*-1,O=s.value[c.value.offset]-k,L=(T-O)*100*f.value/o.value[c.value.offset];t.wrapElement[c.value.scroll]=L*t.wrapElement[c.value.scrollSize]/100},v=()=>{a=!1,l.value[c.value.axis]=0,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",v),S(),i&&(r.value=!1)},b=()=>{i=!1,r.value=!!e.size},w=()=>{i=!0,r.value=a};_t(()=>{S(),document.removeEventListener("mouseup",v)});const S=()=>{document.onselectstart!==u&&(document.onselectstart=u)};return Ht(Yt(t,"scrollbarElement"),"mousemove",b),Ht(Yt(t,"scrollbarElement"),"mouseleave",w),{ns:n,instance:o,thumb:s,bar:c,thumbStyle:d,visible:r,clickTrackHandler:h,clickThumbHandler:p}}});function j6(e,t,n,o,s,l){return C(),x(zt,{name:e.ns.b("fade")},{default:j(()=>[Ge(D("div",{ref:"instance",class:_([e.ns.e("bar"),e.ns.is(e.bar.key)]),onMousedown:t[1]||(t[1]=(...r)=>e.clickTrackHandler&&e.clickTrackHandler(...r))},[D("div",{ref:"thumb",class:_(e.ns.e("thumb")),style:Pe(e.thumbStyle),onMousedown:t[0]||(t[0]=(...r)=>e.clickThumbHandler&&e.clickThumbHandler(...r))},null,38)],34),[[pt,e.always||e.visible]])]),_:1},8,["name"])}var Y6=ge(W6,[["render",j6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue"]]);const U6=Be({always:{type:Boolean,default:!0},width:{type:String,default:""},height:{type:String,default:""},ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),q6=ee({components:{Thumb:Y6},props:U6,setup(e){const t=A(0),n=A(0),o=4;return{handleScroll:l=>{if(l){const r=l.offsetHeight-o,a=l.offsetWidth-o;n.value=l.scrollTop*100/r*e.ratioY,t.value=l.scrollLeft*100/a*e.ratioX}},moveX:t,moveY:n}}});function G6(e,t,n,o,s,l){const r=le("thumb");return C(),M(Le,null,[Y(r,{move:e.moveX,ratio:e.ratioX,size:e.width,always:e.always},null,8,["move","ratio","size","always"]),Y(r,{move:e.moveY,ratio:e.ratioY,size:e.height,vertical:"",always:e.always},null,8,["move","ratio","size","always"])],64)}var X6=ge(q6,[["render",G6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue"]]);const Z6=Be({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:$e([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:{type:Boolean,default:!1},minSize:{type:Number,default:20}}),J6={scroll:({scrollTop:e,scrollLeft:t})=>ht(e)&&ht(t)},Q6=ee({name:"ElScrollbar",components:{Bar:X6},props:Z6,emits:J6,setup(e,{emit:t}){const n=we("scrollbar");let o,s;const l=A(),r=A(),a=A(),i=A("0"),u=A("0"),c=A(),d=A(0),f=A(0),p=A(1),h=A(1),g=4,m=E(()=>{const k={};return e.height&&(k.height=ro(e.height)),e.maxHeight&&(k.maxHeight=ro(e.maxHeight)),[e.wrapStyle,k]}),v=()=>{var k;r.value&&((k=c.value)==null||k.handleScroll(r.value),t("scroll",{scrollTop:r.value.scrollTop,scrollLeft:r.value.scrollLeft}))};function b(k,T){dt(k)?r.value.scrollTo(k):ht(k)&&ht(T)&&r.value.scrollTo(k,T)}const w=k=>{!ht(k)||(r.value.scrollTop=k)},S=k=>{!ht(k)||(r.value.scrollLeft=k)},$=()=>{if(!r.value)return;const k=r.value.offsetHeight-g,T=r.value.offsetWidth-g,O=k**2/r.value.scrollHeight,L=T**2/r.value.scrollWidth,V=Math.max(O,e.minSize),B=Math.max(L,e.minSize);p.value=O/(k-O)/(V/(k-V)),h.value=L/(T-L)/(B/(T-B)),u.value=V+ge.noresize,k=>{k?(o==null||o(),s==null||s()):({stop:o}=rr(a,$),s=Ht("resize",$))},{immediate:!0}),pe(()=>[e.maxHeight,e.height],()=>{e.native||ze(()=>{var k;$(),r.value&&((k=c.value)==null||k.handleScroll(r.value))})}),st(n1,yt({scrollbarElement:l,wrapElement:r})),xe(()=>{e.native||ze(()=>$())}),Xn(()=>$()),{ns:n,scrollbar$:l,wrap$:r,resize$:a,barRef:c,moveX:d,moveY:f,ratioX:h,ratioY:p,sizeWidth:i,sizeHeight:u,style:m,update:$,handleScroll:v,scrollTo:b,setScrollTop:w,setScrollLeft:S}}});function x6(e,t,n,o,s,l){const r=le("bar");return C(),M("div",{ref:"scrollbar$",class:_(e.ns.b())},[D("div",{ref:"wrap$",class:_([e.wrapClass,e.ns.e("wrap"),{[e.ns.em("wrap","hidden-default")]:!e.native}]),style:Pe(e.style),onScroll:t[0]||(t[0]=(...a)=>e.handleScroll&&e.handleScroll(...a))},[(C(),x(ft(e.tag),{ref:"resize$",class:_([e.ns.e("view"),e.viewClass]),style:Pe(e.viewStyle)},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["class","style"]))],38),e.native?G("v-if",!0):(C(),x(r,{key:0,ref:"barRef",height:e.sizeHeight,width:e.sizeWidth,always:e.always,"ratio-x":e.ratioX,"ratio-y":e.ratioY},null,8,["height","width","always","ratio-x","ratio-y"]))],2)}var eR=ge(Q6,[["render",x6],["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue"]]);const Uo=ot(eR),tR={name:"ElPopperRoot",inheritAttrs:!1},nR=ee(Te(ne({},tR),{setup(e,{expose:t}){const n=A(),o=A(),s=A(),l=A(),r={triggerRef:n,popperInstanceRef:o,contentRef:s,referenceRef:l};return t(r),st(rp,r),(a,i)=>ie(a.$slots,"default")}}));var oR=ge(nR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue"]]);const S1=Be({arrowOffset:{type:Number,default:5}}),sR={name:"ElPopperArrow",inheritAttrs:!1},lR=ee(Te(ne({},sR),{props:S1,setup(e,{expose:t}){const n=e,o=we("popper"),{arrowOffset:s,arrowRef:l}=Ne(s1,void 0);return pe(()=>n.arrowOffset,r=>{s.value=r}),_t(()=>{l.value=void 0}),t({arrowRef:l}),(r,a)=>(C(),M("span",{ref_key:"arrowRef",ref:l,class:_(y(o).e("arrow")),"data-popper-arrow":""},null,2))}}));var rR=ge(lR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue"]]);const aR="ElOnlyChild",iR=ee({name:aR,setup(e,{slots:t,attrs:n}){var o;const s=Ne(h1),l=q8((o=s==null?void 0:s.setForwardRef)!=null?o:wt);return()=>{var r;const a=(r=t.default)==null?void 0:r.call(t,n);if(!a||a.length>1)return null;const i=E1(a);return i?Ge(el(i,n),[[l]]):null}}});function E1(e){if(!e)return null;const t=e;for(const n of t){if(dt(n))switch(n.type){case pn:continue;case Sa:return mc(n);case"svg":return mc(n);case Le:return E1(n.children);default:return n}return mc(n)}return null}function mc(e){return Y("span",{class:"el-only-child__content"},[e])}const _1=Be({virtualRef:{type:$e(Object)},virtualTriggering:Boolean,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,onBlur:Function,onContextmenu:Function,id:String,open:Boolean}),uR={name:"ElPopperTrigger",inheritAttrs:!1},cR=ee(Te(ne({},uR),{props:_1,setup(e,{expose:t}){const n=e,{triggerRef:o}=Ne(rp,void 0);return U8(o),xe(()=>{pe(()=>n.virtualRef,s=>{s&&(o.value=no(s))},{immediate:!0}),pe(()=>o.value,(s,l)=>{ol(s)&&["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(r=>{var a;const i=n[r];i&&(s.addEventListener(r.slice(2).toLowerCase(),i),(a=l==null?void 0:l.removeEventListener)==null||a.call(l,r.slice(2).toLowerCase(),i))})},{immediate:!0})}),t({triggerRef:o}),(s,l)=>s.virtualTriggering?G("v-if",!0):(C(),x(y(iR),Et({key:0},s.$attrs,{"aria-describedby":s.open?s.id:void 0}),{default:j(()=>[ie(s.$slots,"default")]),_:3},16,["aria-describedby"]))}}));var dR=ge(cR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue"]]);const fR=["fixed","absolute"],pR=Be({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:$e(Array),default:()=>[]},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:au,default:"bottom"},popperOptions:{type:$e(Object),default:()=>({})},strategy:{type:String,values:fR,default:"absolute"}}),T1=Be(Te(ne({},pR),{style:{type:$e([String,Array,Object])},className:{type:$e([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,popperClass:{type:$e([String,Array,Object])},popperStyle:{type:$e([String,Array,Object])},referenceEl:{type:$e(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},zIndex:Number})),_v=(e,t)=>{const{placement:n,strategy:o,popperOptions:s}=e,l=Te(ne({placement:n,strategy:o},s),{modifiers:mR(e)});return vR(l,t),gR(l,s==null?void 0:s.modifiers),l},hR=e=>{if(!!ct)return no(e)};function mR(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:o}=e;return[{name:"offset",options:{offset:[0,t!=null?t:12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:o!=null?o:[]}},{name:"computeStyles",options:{gpuAcceleration:n,adaptive:n}}]}function vR(e,{arrowEl:t,arrowOffset:n}){e.modifiers.push({name:"arrow",options:{element:t,padding:n!=null?n:5}})}function gR(e,t){t&&(e.modifiers=[...e.modifiers,...t!=null?t:[]])}const bR={name:"ElPopperContent"},yR=ee(Te(ne({},bR),{props:T1,emits:["mouseenter","mouseleave"],setup(e,{expose:t}){const n=e,{popperInstanceRef:o,contentRef:s,triggerRef:l}=Ne(rp,void 0),{nextZIndex:r}=jo(),a=we("popper"),i=A(),u=A(),c=A();st(s1,{arrowRef:u,arrowOffset:c});const d=A(n.zIndex||r()),f=E(()=>hR(n.referenceEl)||y(l)),p=E(()=>[{zIndex:y(d)},n.popperStyle]),h=E(()=>[a.b(),a.is("pure",n.pure),a.is(n.effect),n.popperClass]),g=({referenceEl:b,popperContentEl:w,arrowEl:S})=>{const $=_v(n,{arrowEl:S,arrowOffset:y(c)});return ma(b,w,$)},m=()=>{var b;(b=y(o))==null||b.update(),d.value=n.zIndex||d.value||r()},v=()=>{var b,w;const S={name:"eventListeners",enabled:n.visible};(w=(b=y(o))==null?void 0:b.setOptions)==null||w.call(b,$=>Te(ne({},$),{modifiers:[...$.modifiers||[],S]})),m()};return xe(()=>{let b;pe(f,w=>{var S;b==null||b();const $=y(o);if((S=$==null?void 0:$.destroy)==null||S.call($),w){const k=y(i);s.value=k,o.value=g({referenceEl:w,popperContentEl:k,arrowEl:y(u)}),b=pe(()=>w.getBoundingClientRect(),()=>m(),{immediate:!0})}else o.value=void 0},{immediate:!0}),pe(()=>n.visible,v,{immediate:!0}),pe(()=>_v(n,{arrowEl:y(u),arrowOffset:y(c)}),w=>{var S;return(S=o.value)==null?void 0:S.setOptions(w)})}),t({popperContentRef:i,popperInstanceRef:o,updatePopper:m,contentStyle:p}),(b,w)=>(C(),M("div",{ref_key:"popperContentRef",ref:i,style:Pe(y(p)),class:_(y(h)),role:"tooltip",onMouseenter:w[0]||(w[0]=S=>b.$emit("mouseenter",S)),onMouseleave:w[1]||(w[1]=S=>b.$emit("mouseleave",S))},[ie(b.$slots,"default")],38))}}));var wR=ge(yR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue"]]);const CR={LIGHT:"light",DARK:"dark"};Be({autoClose:{type:Number,default:0},cutoff:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}});function dr(e,t){const n=nt(),o=E(()=>en(n.props[t])?n.props[t]:n.props.teleported);return Na({scope:e,from:t,replacement:"teleported",version:"2.1.0",ref:"https://element-plus.org/en-US/component/tooltip.html#attributes"},E(()=>en(n.props[t]))),{compatTeleported:o}}const A1=ot(oR),$R=ee({name:"ElVisuallyHidden",props:{style:{type:[String,Object,Array]}},setup(e){return{computedStyle:E(()=>[e.style,{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}])}}});function kR(e,t,n,o,s,l){return C(),M("span",Et(e.$attrs,{style:e.computedStyle}),[ie(e.$slots,"default")],16)}var N1=ge($R,[["render",kR],["__file","/home/runner/work/element-plus/element-plus/packages/components/visual-hidden/src/visual-hidden.vue"]]);const Jt=Be(Te(ne(ne({},j8),T1),{appendTo:{type:$e([String,Object]),default:p1},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:$e(Boolean),default:null},transition:{type:String,default:"el-fade-in-linear"},teleported:{type:Boolean,default:!0},disabled:{type:Boolean}})),ia=Be(Te(ne({},_1),{disabled:Boolean,trigger:{type:$e([String,Array]),default:"hover"}})),SR=Be({openDelay:{type:Number},visibleArrow:{type:Boolean,default:void 0},hideAfter:{type:Number,default:200},showArrow:{type:Boolean,default:!0}}),Ku=Symbol("elTooltip"),ER=ee({name:"ElTooltipContent",components:{ElPopperContent:wR,ElVisuallyHidden:N1},inheritAttrs:!1,props:Jt,setup(e){const t=A(null),n=A(!1),o=A(!1),s=A(!1),l=A(!1),{controlled:r,id:a,open:i,trigger:u,onClose:c,onOpen:d,onShow:f,onHide:p,onBeforeShow:h,onBeforeHide:g}=Ne(Ku,void 0),m=E(()=>e.persistent);_t(()=>{l.value=!0});const v=E(()=>y(m)?!0:y(i)),b=E(()=>e.disabled?!1:y(i)),w=E(()=>{var R;return(R=e.style)!=null?R:{}}),S=E(()=>!y(i));z8(c);const $=()=>{p()},k=()=>{if(y(r))return!0},T=Pt(k,()=>{e.enterable&&y(u)==="hover"&&d()}),O=Pt(k,()=>{y(u)==="hover"&&c()}),L=()=>{var R,z;(z=(R=t.value)==null?void 0:R.updatePopper)==null||z.call(R),h==null||h()},V=()=>{g==null||g()},B=()=>{f()};let H;return pe(()=>y(i),R=>{R?H=Xi(E(()=>{var z;return(z=t.value)==null?void 0:z.popperContentRef}),()=>{if(y(r))return;y(u)!=="hover"&&c()}):H==null||H()},{flush:"post"}),{ariaHidden:S,entering:o,leaving:s,id:a,intermediateOpen:n,contentStyle:w,contentRef:t,destroyed:l,shouldRender:v,shouldShow:b,open:i,onAfterShow:B,onBeforeEnter:L,onBeforeLeave:V,onContentEnter:T,onContentLeave:O,onTransitionLeave:$}}});function _R(e,t,n,o,s,l){const r=le("el-visually-hidden"),a=le("el-popper-content");return C(),x(ka,{disabled:!e.teleported,to:e.appendTo},[Y(zt,{name:e.transition,onAfterLeave:e.onTransitionLeave,onBeforeEnter:e.onBeforeEnter,onAfterEnter:e.onAfterShow,onBeforeLeave:e.onBeforeLeave},{default:j(()=>[e.shouldRender?Ge((C(),x(a,Et({key:0,ref:"contentRef"},e.$attrs,{"aria-hidden":e.ariaHidden,"boundaries-padding":e.boundariesPadding,"fallback-placements":e.fallbackPlacements,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,placement:e.placement,"popper-options":e.popperOptions,strategy:e.strategy,effect:e.effect,enterable:e.enterable,pure:e.pure,"popper-class":e.popperClass,"popper-style":[e.popperStyle,e.contentStyle],"reference-el":e.referenceEl,visible:e.shouldShow,"z-index":e.zIndex,onMouseenter:e.onContentEnter,onMouseleave:e.onContentLeave}),{default:j(()=>[G(" Workaround bug #6378 "),e.destroyed?G("v-if",!0):(C(),M(Le,{key:0},[ie(e.$slots,"default"),Y(r,{id:e.id,role:"tooltip"},{default:j(()=>[at(he(e.ariaLabel),1)]),_:1},8,["id"])],64))]),_:3},16,["aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","visible","z-index","onMouseenter","onMouseleave"])),[[pt,e.shouldShow]]):G("v-if",!0)]),_:3},8,["name","onAfterLeave","onBeforeEnter","onAfterEnter","onBeforeLeave"])],8,["disabled","to"])}var TR=ge(ER,[["render",_R],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue"]]);const AR=(e,t)=>Xe(e)?e.includes(t):e===t,gl=(e,t,n)=>o=>{AR(y(e),t)&&n(o)},NR=ee({name:"ElTooltipTrigger",components:{ElPopperTrigger:dR},props:ia,setup(e){const t=we("tooltip"),{controlled:n,id:o,open:s,onOpen:l,onClose:r,onToggle:a}=Ne(Ku,void 0),i=A(null),u=()=>{if(y(n)||e.disabled)return!0},c=Yt(e,"trigger"),d=Pt(u,gl(c,"hover",l)),f=Pt(u,gl(c,"hover",r)),p=Pt(u,gl(c,"click",b=>{b.button===0&&a(b)})),h=Pt(u,gl(c,"focus",l)),g=Pt(u,gl(c,"focus",r)),m=Pt(u,gl(c,"contextmenu",b=>{b.preventDefault(),a(b)})),v=Pt(u,b=>{const{code:w}=b;(w===Ie.enter||w===Ie.space)&&a(b)});return{onBlur:g,onContextMenu:m,onFocus:h,onMouseenter:d,onMouseleave:f,onClick:p,onKeydown:v,open:s,id:o,triggerRef:i,ns:t}}});function MR(e,t,n,o,s,l){const r=le("el-popper-trigger");return C(),x(r,{id:e.id,"virtual-ref":e.virtualRef,open:e.open,"virtual-triggering":e.virtualTriggering,class:_(e.ns.e("trigger")),onBlur:e.onBlur,onClick:e.onClick,onContextmenu:e.onContextMenu,onFocus:e.onFocus,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onKeydown:e.onKeydown},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"])}var OR=ge(NR,[["render",MR],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue"]]);const{useModelToggleProps:IR,useModelToggle:PR,useModelToggleEmits:DR}=L8("visible"),LR=ee({name:"ElTooltip",components:{ElPopper:A1,ElPopperArrow:rR,ElTooltipContent:TR,ElTooltipTrigger:OR},props:ne(ne(ne(ne(ne({},IR),Jt),ia),S1),SR),emits:[...DR,"before-show","before-hide","show","hide"],setup(e,{emit:t}){W8();const n=E(()=>(Cn(e.openDelay),e.openDelay||e.showAfter)),o=E(()=>(Cn(e.visibleArrow),en(e.visibleArrow)?e.visibleArrow:e.showArrow)),s=ip(),l=A(null),r=()=>{var p;const h=y(l);h&&((p=h.popperInstanceRef)==null||p.update())},a=A(!1),{show:i,hide:u}=PR({indicator:a}),{onOpen:c,onClose:d}=Y8({showAfter:n,hideAfter:Yt(e,"hideAfter"),open:i,close:u}),f=E(()=>en(e.visible));return st(Ku,{controlled:f,id:s,open:wa(a),trigger:Yt(e,"trigger"),onOpen:c,onClose:d,onToggle:()=>{y(a)?d():c()},onShow:()=>{t("show")},onHide:()=>{t("hide")},onBeforeShow:()=>{t("before-show")},onBeforeHide:()=>{t("before-hide")},updatePopper:r}),pe(()=>e.disabled,p=>{p&&a.value&&(a.value=!1)}),{compatShowAfter:n,compatShowArrow:o,popperRef:l,open:a,hide:u,updatePopper:r,onOpen:c,onClose:d}}}),RR=["innerHTML"],VR={key:1};function BR(e,t,n,o,s,l){const r=le("el-tooltip-trigger"),a=le("el-popper-arrow"),i=le("el-tooltip-content"),u=le("el-popper");return C(),x(u,{ref:"popperRef"},{default:j(()=>[Y(r,{disabled:e.disabled,trigger:e.trigger,"virtual-ref":e.virtualRef,"virtual-triggering":e.virtualTriggering},{default:j(()=>[e.$slots.default?ie(e.$slots,"default",{key:0}):G("v-if",!0)]),_:3},8,["disabled","trigger","virtual-ref","virtual-triggering"]),Y(i,{"aria-label":e.ariaLabel,"boundaries-padding":e.boundariesPadding,content:e.content,disabled:e.disabled,effect:e.effect,enterable:e.enterable,"fallback-placements":e.fallbackPlacements,"hide-after":e.hideAfter,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,persistent:e.persistent,"popper-class":e.popperClass,"popper-style":e.popperStyle,placement:e.placement,"popper-options":e.popperOptions,pure:e.pure,"raw-content":e.rawContent,"reference-el":e.referenceEl,"show-after":e.compatShowAfter,strategy:e.strategy,teleported:e.teleported,transition:e.transition,"z-index":e.zIndex,"append-to":e.appendTo},{default:j(()=>[ie(e.$slots,"content",{},()=>[e.rawContent?(C(),M("span",{key:0,innerHTML:e.content},null,8,RR)):(C(),M("span",VR,he(e.content),1))]),e.compatShowArrow?(C(),x(a,{key:0,"arrow-offset":e.arrowOffset},null,8,["arrow-offset"])):G("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","show-after","strategy","teleported","transition","z-index","append-to"])]),_:3},512)}var FR=ge(LR,[["render",BR],["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue"]]);const mn=ot(FR),HR=Be({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:$e(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:$e([Function,Array]),default:wt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},popperAppendToBody:{type:Boolean,default:void 0},teleported:Jt.teleported,highlightFirstItem:{type:Boolean,default:!1}}),zR={[tt]:e=>Qe(e),input:e=>Qe(e),change:e=>Qe(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>dt(e)},KR=["aria-expanded","aria-owns"],WR={key:0},jR=["id","aria-selected","onClick"],YR={name:"ElAutocomplete",inheritAttrs:!1},UR=ee(Te(ne({},YR),{props:HR,emits:zR,setup(e,{expose:t,emit:n}){const o=e,s="ElAutocomplete",l=we("autocomplete"),{compatTeleported:r}=dr(s,"popperAppendToBody");let a=!1;const i=lp(),u=zy(),c=A([]),d=A(-1),f=A(""),p=A(!1),h=A(!1),g=A(!1),m=A(),v=A(),b=A(),w=A(),S=E(()=>l.b(String(Aa()))),$=E(()=>u.style),k=E(()=>(Xe(c.value)&&c.value.length>0||g.value)&&p.value),T=E(()=>!o.hideLoading&&g.value),O=()=>{ze(()=>{k.value&&(f.value=`${m.value.$el.offsetWidth}px`)})},V=hn(Q=>{if(h.value)return;g.value=!0;const Z=ae=>{g.value=!1,!h.value&&(Xe(ae)?(c.value=ae,d.value=o.highlightFirstItem?0:-1):Kt(s,"autocomplete suggestions must be an array"))};if(Xe(o.fetchSuggestions))Z(o.fetchSuggestions);else{const ae=o.fetchSuggestions(Q,Z);Xe(ae)?Z(ae):xs(ae)&&ae.then(Z)}},o.debounce),B=Q=>{const Z=Boolean(Q);if(n("input",Q),n(tt,Q),h.value=!1,p.value||(p.value=a&&Z),!o.triggerOnFocus&&!Q){h.value=!0,c.value=[];return}a&&Z&&(a=!1),V(Q)},H=Q=>{n("change",Q)},R=Q=>{p.value=!0,n("focus",Q),o.triggerOnFocus&&V(String(o.modelValue))},z=Q=>{n("blur",Q)},W=()=>{p.value=!1,a=!0,n(tt,""),n("clear")},P=()=>{k.value&&d.value>=0&&d.value{c.value=[],d.value=-1}))},N=()=>{p.value=!1},I=()=>{var Q;(Q=m.value)==null||Q.focus()},U=Q=>{n("input",Q[o.valueKey]),n(tt,Q[o.valueKey]),n("select",Q),ze(()=>{c.value=[],d.value=-1})},q=Q=>{if(!k.value||g.value)return;if(Q<0){d.value=-1;return}Q>=c.value.length&&(Q=c.value.length-1);const Z=v.value.querySelector(`.${l.be("suggestion","wrap")}`),Ee=Z.querySelectorAll(`.${l.be("suggestion","list")} li`)[Q],Me=Z.scrollTop,{offsetTop:J,scrollHeight:ve}=Ee;J+ve>Me+Z.clientHeight&&(Z.scrollTop+=ve),J{m.value.ref.setAttribute("role","textbox"),m.value.ref.setAttribute("aria-autocomplete","list"),m.value.ref.setAttribute("aria-controls","id"),m.value.ref.setAttribute("aria-activedescendant",`${S.value}-item-${d.value}`)}),t({highlightedIndex:d,activated:p,loading:g,inputRef:m,popperRef:b,suggestions:c,handleSelect:U,handleKeyEnter:P,focus:I,close:N,highlight:q}),(Q,Z)=>(C(),x(y(mn),{ref_key:"popperRef",ref:b,visible:y(k),"onUpdate:visible":Z[2]||(Z[2]=ae=>Lt(k)?k.value=ae:null),placement:Q.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[y(l).e("popper"),Q.popperClass],teleported:y(r),"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${y(l).namespace.value}-zoom-in-top`,persistent:"",onBeforeShow:O},{content:j(()=>[D("div",{ref_key:"regionRef",ref:v,class:_([y(l).b("suggestion"),y(l).is("loading",y(T))]),style:Pe({minWidth:f.value,outline:"none"}),role:"region"},[Y(y(Uo),{id:y(S),tag:"ul","wrap-class":y(l).be("suggestion","wrap"),"view-class":y(l).be("suggestion","list"),role:"listbox"},{default:j(()=>[y(T)?(C(),M("li",WR,[Y(y(je),{class:_(y(l).is("loading"))},{default:j(()=>[Y(y(gs))]),_:1},8,["class"])])):(C(!0),M(Le,{key:1},it(c.value,(ae,Ee)=>(C(),M("li",{id:`${y(S)}-item-${Ee}`,key:Ee,class:_({highlighted:d.value===Ee}),role:"option","aria-selected":d.value===Ee,onClick:Me=>U(ae)},[ie(Q.$slots,"default",{item:ae},()=>[at(he(ae[Q.valueKey]),1)])],10,jR))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:j(()=>[D("div",{ref_key:"listboxRef",ref:w,class:_([y(l).b(),Q.$attrs.class]),style:Pe(y($)),role:"combobox","aria-haspopup":"listbox","aria-expanded":y(k),"aria-owns":y(S)},[Y(y(Jn),Et({ref_key:"inputRef",ref:m},y(i),{"model-value":Q.modelValue,onInput:B,onChange:H,onFocus:R,onBlur:z,onClear:W,onKeydown:[Z[0]||(Z[0]=lt(Ke(ae=>q(d.value-1),["prevent"]),["up"])),Z[1]||(Z[1]=lt(Ke(ae=>q(d.value+1),["prevent"]),["down"])),lt(P,["enter"]),lt(N,["tab"])]}),fs({_:2},[Q.$slots.prepend?{name:"prepend",fn:j(()=>[ie(Q.$slots,"prepend")])}:void 0,Q.$slots.append?{name:"append",fn:j(()=>[ie(Q.$slots,"append")])}:void 0,Q.$slots.prefix?{name:"prefix",fn:j(()=>[ie(Q.$slots,"prefix")])}:void 0,Q.$slots.suffix?{name:"suffix",fn:j(()=>[ie(Q.$slots,"suffix")])}:void 0]),1040,["model-value","onKeydown"])],14,KR)]),_:3},8,["visible","placement","popper-class","teleported","transition"]))}}));var qR=ge(UR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/autocomplete/src/autocomplete.vue"]]);const GR=ot(qR),XR=Be({size:{type:[Number,String],values:Eo,default:"",validator:e=>typeof e=="number"},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:nn},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:$e(String),default:"cover"}}),ZR={error:e=>e instanceof Event},JR=["src","alt","srcset"],QR={name:"ElAvatar"},xR=ee(Te(ne({},QR),{props:XR,emits:ZR,setup(e,{emit:t}){const n=e,o=we("avatar"),s=A(!1),l=E(()=>{const{size:u,icon:c,shape:d}=n,f=[o.b()];return Qe(u)&&f.push(o.m(u)),c&&f.push(o.m("icon")),d&&f.push(o.m(d)),f}),r=E(()=>{const{size:u}=n;return ht(u)?{"--el-avatar-size":ro(u)}:void 0}),a=E(()=>({objectFit:n.fit}));pe(()=>n.src,()=>s.value=!1);function i(u){s.value=!0,t("error",u)}return(u,c)=>(C(),M("span",{class:_(y(l)),style:Pe(y(r))},[(u.src||u.srcSet)&&!s.value?(C(),M("img",{key:0,src:u.src,alt:u.alt,srcset:u.srcSet,style:Pe(y(a)),onError:i},null,44,JR)):u.icon?(C(),x(y(je),{key:1},{default:j(()=>[(C(),x(ft(u.icon)))]),_:1})):ie(u.$slots,"default",{key:2})],6))}}));var eV=ge(xR,[["__file","/home/runner/work/element-plus/element-plus/packages/components/avatar/src/avatar.vue"]]);const tV=ot(eV),nV={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},oV={click:e=>e instanceof MouseEvent},sV=["onClick"],lV={name:"ElBacktop"},rV=ee(Te(ne({},lV),{props:nV,emits:oV,setup(e,{emit:t}){const n=e,o="ElBacktop",s=we("backtop"),l=jt(),r=jt(),a=A(!1),i=E(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`})),u=()=>{if(!l.value)return;const p=Date.now(),h=l.value.scrollTop,g=()=>{if(!l.value)return;const m=(Date.now()-p)/500;m<1?(l.value.scrollTop=h*(1-k8(m)),requestAnimationFrame(g)):l.value.scrollTop=0};requestAnimationFrame(g)},c=()=>{l.value&&(a.value=l.value.scrollTop>=n.visibilityHeight)},d=p=>{u(),t("click",p)},f=I0(c,300);return xe(()=>{var p;r.value=document,l.value=document.documentElement,n.target&&(l.value=(p=document.querySelector(n.target))!=null?p:void 0,l.value||Kt(o,`target is not existed: ${n.target}`),r.value=l.value),Ht(r,"scroll",f)}),(p,h)=>(C(),x(zt,{name:`${y(s).namespace.value}-fade-in`},{default:j(()=>[a.value?(C(),M("div",{key:0,style:Pe(y(i)),class:_(y(s).b()),onClick:Ke(d,["stop"])},[ie(p.$slots,"default",{},()=>[Y(y(je),{class:_(y(s).e("icon"))},{default:j(()=>[Y(y(G4))]),_:1},8,["class"])])],14,sV)):G("v-if",!0)]),_:3},8,["name"]))}}));var aV=ge(rV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/backtop/src/backtop.vue"]]);const iV=ot(aV),uV=Be({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),cV=["textContent"],dV={name:"ElBadge"},fV=ee(Te(ne({},dV),{props:uV,setup(e,{expose:t}){const n=e,o=we("badge"),s=E(()=>n.isDot?"":ht(n.value)&&ht(n.max)?n.max(C(),M("div",{class:_(y(o).b())},[ie(l.$slots,"default"),Y(zt,{name:`${y(o).namespace.value}-zoom-in-center`},{default:j(()=>[Ge(D("sup",{class:_([y(o).e("content"),y(o).em("content",l.type),y(o).is("fixed",!!l.$slots.default),y(o).is("dot",l.isDot)]),textContent:he(y(s))},null,10,cV),[[pt,!l.hidden&&(y(s)||y(s)==="0"||l.isDot)]])]),_:1},8,["name"])],2))}}));var pV=ge(fV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/badge/src/badge.vue"]]);const M1=ot(pV),hV=Be({separator:{type:String,default:"/"},separatorIcon:{type:nn,default:""}}),mV={name:"ElBreadcrumb"},vV=ee(Te(ne({},mV),{props:hV,setup(e){const t=e,n=we("breadcrumb"),o=A();return st(q0,t),xe(()=>{const s=o.value.querySelectorAll(`.${n.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,l)=>(C(),M("div",{ref_key:"breadcrumb",ref:o,class:_(y(n).b()),"aria-label":"Breadcrumb",role:"navigation"},[ie(s.$slots,"default")],2))}}));var gV=ge(vV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb.vue"]]);const bV=Be({to:{type:$e([String,Object]),default:""},replace:{type:Boolean,default:!1}}),yV={name:"ElBreadcrumbItem"},wV=ee(Te(ne({},yV),{props:bV,setup(e){const t=e,o=nt().appContext.config.globalProperties.$router,s=Ne(q0,{}),l=we("breadcrumb"),{separator:r,separatorIcon:a}=s,i=A(),u=()=>{!t.to||!o||(t.replace?o.replace(t.to):o.push(t.to))};return(c,d)=>(C(),M("span",{class:_(y(l).e("item"))},[D("span",{ref_key:"link",ref:i,class:_([y(l).e("inner"),y(l).is("link",!!c.to)]),role:"link",onClick:u},[ie(c.$slots,"default")],2),y(a)?(C(),x(y(je),{key:0,class:_(y(l).e("separator"))},{default:j(()=>[(C(),x(ft(y(a))))]),_:1},8,["class"])):(C(),M("span",{key:1,class:_(y(l).e("separator")),role:"presentation"},he(y(r)),3))],2))}}));var O1=ge(wV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb-item.vue"]]);const CV=ot(gV,{BreadcrumbItem:O1}),$V=Rt(O1),gd=["default","primary","success","warning","info","danger","text",""],kV=["button","submit","reset"],bd=Be({size:Fu,disabled:Boolean,type:{type:String,values:gd,default:""},icon:{type:nn,default:""},nativeType:{type:String,values:kV,default:"button"},loading:Boolean,loadingIcon:{type:nn,default:()=>gs},plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0}}),SV={click:e=>e instanceof MouseEvent};function tn(e,t){EV(e)&&(e="100%");var n=_V(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function Ga(e){return Math.min(1,Math.max(0,e))}function EV(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function _V(e){return typeof e=="string"&&e.indexOf("%")!==-1}function I1(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Xa(e){return e<=1?Number(e)*100+"%":e}function Vs(e){return e.length===1?"0"+e:String(e)}function TV(e,t,n){return{r:tn(e,255)*255,g:tn(t,255)*255,b:tn(n,255)*255}}function Tv(e,t,n){e=tn(e,255),t=tn(t,255),n=tn(n,255);var o=Math.max(e,t,n),s=Math.min(e,t,n),l=0,r=0,a=(o+s)/2;if(o===s)r=0,l=0;else{var i=o-s;switch(r=a>.5?i/(2-o-s):i/(o+s),o){case e:l=(t-n)/i+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function AV(e,t,n){var o,s,l;if(e=tn(e,360),t=tn(t,100),n=tn(n,100),t===0)s=n,l=n,o=n;else{var r=n<.5?n*(1+t):n+t-n*t,a=2*n-r;o=vc(a,r,e+1/3),s=vc(a,r,e),l=vc(a,r,e-1/3)}return{r:o*255,g:s*255,b:l*255}}function Av(e,t,n){e=tn(e,255),t=tn(t,255),n=tn(n,255);var o=Math.max(e,t,n),s=Math.min(e,t,n),l=0,r=o,a=o-s,i=o===0?0:a/o;if(o===s)l=0;else{switch(o){case e:l=(t-n)/a+(t>16,g:(e&65280)>>8,b:e&255}}var yd={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function PV(e){var t={r:0,g:0,b:0},n=1,o=null,s=null,l=null,r=!1,a=!1;return typeof e=="string"&&(e=RV(e)),typeof e=="object"&&(Ao(e.r)&&Ao(e.g)&&Ao(e.b)?(t=TV(e.r,e.g,e.b),r=!0,a=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Ao(e.h)&&Ao(e.s)&&Ao(e.v)?(o=Xa(e.s),s=Xa(e.v),t=NV(e.h,o,s),r=!0,a="hsv"):Ao(e.h)&&Ao(e.s)&&Ao(e.l)&&(o=Xa(e.s),l=Xa(e.l),t=AV(e.h,o,l),r=!0,a="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=I1(n),{ok:r,format:e.format||a,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var DV="[-\\+]?\\d+%?",LV="[-\\+]?\\d*\\.\\d+%?",ss="(?:"+LV+")|(?:"+DV+")",gc="[\\s|\\(]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")\\s*\\)?",bc="[\\s|\\(]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")[,|\\s]+("+ss+")\\s*\\)?",xn={CSS_UNIT:new RegExp(ss),rgb:new RegExp("rgb"+gc),rgba:new RegExp("rgba"+bc),hsl:new RegExp("hsl"+gc),hsla:new RegExp("hsla"+bc),hsv:new RegExp("hsv"+gc),hsva:new RegExp("hsva"+bc),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function RV(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(yd[e])e=yd[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=xn.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=xn.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=xn.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=xn.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=xn.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=xn.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=xn.hex8.exec(e),n?{r:gn(n[1]),g:gn(n[2]),b:gn(n[3]),a:Mv(n[4]),format:t?"name":"hex8"}:(n=xn.hex6.exec(e),n?{r:gn(n[1]),g:gn(n[2]),b:gn(n[3]),format:t?"name":"hex"}:(n=xn.hex4.exec(e),n?{r:gn(n[1]+n[1]),g:gn(n[2]+n[2]),b:gn(n[3]+n[3]),a:Mv(n[4]+n[4]),format:t?"name":"hex8"}:(n=xn.hex3.exec(e),n?{r:gn(n[1]+n[1]),g:gn(n[2]+n[2]),b:gn(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function Ao(e){return Boolean(xn.CSS_UNIT.exec(String(e)))}var P1=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var o;if(t instanceof e)return t;typeof t=="number"&&(t=IV(t)),this.originalInput=t;var s=PV(t);this.originalInput=t,this.r=s.r,this.g=s.g,this.b=s.b,this.a=s.a,this.roundA=Math.round(100*this.a)/100,this.format=(o=n.format)!==null&&o!==void 0?o:s.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=s.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,o,s,l=t.r/255,r=t.g/255,a=t.b/255;return l<=.03928?n=l/12.92:n=Math.pow((l+.055)/1.055,2.4),r<=.03928?o=r/12.92:o=Math.pow((r+.055)/1.055,2.4),a<=.03928?s=a/12.92:s=Math.pow((a+.055)/1.055,2.4),.2126*n+.7152*o+.0722*s},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=I1(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.toHsv=function(){var t=Av(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=Av(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),s=Math.round(t.v*100);return this.a===1?"hsv("+n+", "+o+"%, "+s+"%)":"hsva("+n+", "+o+"%, "+s+"%, "+this.roundA+")"},e.prototype.toHsl=function(){var t=Tv(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=Tv(this.r,this.g,this.b),n=Math.round(t.h*360),o=Math.round(t.s*100),s=Math.round(t.l*100);return this.a===1?"hsl("+n+", "+o+"%, "+s+"%)":"hsla("+n+", "+o+"%, "+s+"%, "+this.roundA+")"},e.prototype.toHex=function(t){return t===void 0&&(t=!1),Nv(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),MV(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),o=Math.round(this.b);return this.a===1?"rgb("+t+", "+n+", "+o+")":"rgba("+t+", "+n+", "+o+", "+this.roundA+")"},e.prototype.toPercentageRgb=function(){var t=function(n){return Math.round(tn(n,255)*100)+"%"};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(tn(n,255)*100)};return this.a===1?"rgb("+t(this.r)+"%, "+t(this.g)+"%, "+t(this.b)+"%)":"rgba("+t(this.r)+"%, "+t(this.g)+"%, "+t(this.b)+"%, "+this.roundA+")"},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+Nv(this.r,this.g,this.b,!1),n=0,o=Object.entries(yd);n=0,l=!n&&s&&(t.startsWith("hex")||t==="name");return l?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(o=this.toRgbString()),t==="prgb"&&(o=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(o=this.toHexString()),t==="hex3"&&(o=this.toHexString(!0)),t==="hex4"&&(o=this.toHex8String(!0)),t==="hex8"&&(o=this.toHex8String()),t==="name"&&(o=this.toName()),t==="hsl"&&(o=this.toHslString()),t==="hsv"&&(o=this.toHsvString()),o||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=Ga(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=Ga(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=Ga(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=Ga(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),o=(n.h+t)%360;return n.h=o<0?360+o:o,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var o=this.toRgb(),s=new e(t).toRgb(),l=n/100,r={r:(s.r-o.r)*l+o.r,g:(s.g-o.g)*l+o.g,b:(s.b-o.b)*l+o.b,a:(s.a-o.a)*l+o.a};return new e(r)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var o=this.toHsl(),s=360/n,l=[this];for(o.h=(o.h-(s*t>>1)+720)%360;--t;)o.h=(o.h+s)%360,l.push(new e(o));return l},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),o=n.h,s=n.s,l=n.v,r=[],a=1/t;t--;)r.push(new e({h:o,s,v:l})),l=(l+a)%1;return r},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),o=new e(t).toRgb();return new e({r:o.r+(n.r-o.r)*n.a,g:o.g+(n.g-o.g)*n.a,b:o.b+(n.b-o.b)*n.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),o=n.h,s=[this],l=360/t,r=1;r{let n={};const o=e.color;if(o){const s=new P1(o),l=e.dark?s.tint(20).toString():Jo(s,20);if(e.plain)n={"--el-button-bg-color":e.dark?Jo(s,90):s.tint(90).toString(),"--el-button-text-color":o,"--el-button-border-color":e.dark?Jo(s,50):s.tint(50).toString(),"--el-button-hover-text-color":"var(--el-color-white)","--el-button-hover-bg-color":o,"--el-button-hover-border-color":o,"--el-button-active-bg-color":l,"--el-button-active-text-color":"var(--el-color-white)","--el-button-active-border-color":l},t.value&&(n["--el-button-disabled-bg-color"]=e.dark?Jo(s,90):s.tint(90).toString(),n["--el-button-disabled-text-color"]=e.dark?Jo(s,50):s.tint(50).toString(),n["--el-button-disabled-border-color"]=e.dark?Jo(s,80):s.tint(80).toString());else{const r=e.dark?Jo(s,30):s.tint(30).toString(),a=s.isDark()?"var(--el-color-white)":"var(--el-color-black)";if(n={"--el-button-bg-color":o,"--el-button-text-color":a,"--el-button-border-color":o,"--el-button-hover-bg-color":r,"--el-button-hover-text-color":a,"--el-button-hover-border-color":r,"--el-button-active-bg-color":l,"--el-button-active-border-color":l},t.value){const i=e.dark?Jo(s,50):s.tint(50).toString();n["--el-button-disabled-bg-color"]=i,n["--el-button-disabled-text-color"]=e.dark?"rgba(255, 255, 255, 0.5)":"var(--el-color-white)",n["--el-button-disabled-border-color"]=i}}}return n})}const BV=["disabled","autofocus","type"],FV={name:"ElButton"},HV=ee(Te(ne({},FV),{props:bd,emits:SV,setup(e,{expose:t,emit:n}){const o=e,s=Ea(),l=Ne(G0,void 0),r=ur("button"),a=we("button"),{form:i}=cr(),u=Wt(E(()=>l==null?void 0:l.size)),c=pl(),d=A(),f=E(()=>o.type||(l==null?void 0:l.type)||""),p=E(()=>{var v,b,w;return(w=(b=o.autoInsertSpace)!=null?b:(v=r.value)==null?void 0:v.autoInsertSpace)!=null?w:!1}),h=E(()=>{var v;const b=(v=s.default)==null?void 0:v.call(s);if(p.value&&(b==null?void 0:b.length)===1){const w=b[0];if((w==null?void 0:w.type)===Sa){const S=w.children;return/^\p{Unified_Ideograph}{2}$/u.test(S.trim())}}return!1}),g=VV(o),m=v=>{o.nativeType==="reset"&&(i==null||i.resetFields()),n("click",v)};return t({ref:d,size:u,type:f,disabled:c,shouldAddSpace:h}),(v,b)=>(C(),M("button",{ref_key:"_ref",ref:d,class:_([y(a).b(),y(a).m(y(f)),y(a).m(y(u)),y(a).is("disabled",y(c)),y(a).is("loading",v.loading),y(a).is("plain",v.plain),y(a).is("round",v.round),y(a).is("circle",v.circle)]),disabled:y(c)||v.loading,autofocus:v.autofocus,type:v.nativeType,style:Pe(y(g)),onClick:m},[v.loading?(C(),M(Le,{key:0},[v.$slots.loading?ie(v.$slots,"loading",{key:0}):(C(),x(y(je),{key:1,class:_(y(a).is("loading"))},{default:j(()=>[(C(),x(ft(v.loadingIcon)))]),_:1},8,["class"]))],2112)):v.icon||v.$slots.icon?(C(),x(y(je),{key:1},{default:j(()=>[v.icon?(C(),x(ft(v.icon),{key:0})):ie(v.$slots,"icon",{key:1})]),_:3})):G("v-if",!0),v.$slots.default?(C(),M("span",{key:2,class:_({[y(a).em("text","expand")]:y(h)})},[ie(v.$slots,"default")],2)):G("v-if",!0)],14,BV))}}));var zV=ge(HV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue"]]);const KV={size:bd.size,type:bd.type},WV={name:"ElButtonGroup"},jV=ee(Te(ne({},WV),{props:KV,setup(e){const t=e;st(G0,yt({size:Yt(t,"size"),type:Yt(t,"type")}));const n=we("button");return(o,s)=>(C(),M("div",{class:_(`${y(n).b("group")}`)},[ie(o.$slots,"default")],2))}}));var D1=ge(jV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue"]]);const Kn=ot(zV,{ButtonGroup:D1}),L1=Rt(D1);var qo=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function YV(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var R1={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){var n=1e3,o=6e4,s=36e5,l="millisecond",r="second",a="minute",i="hour",u="day",c="week",d="month",f="quarter",p="year",h="date",g="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|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,b={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("_")},w=function(R,z,W){var P=String(R);return!P||P.length>=z?R:""+Array(z+1-P.length).join(W)+R},S={s:w,z:function(R){var z=-R.utcOffset(),W=Math.abs(z),P=Math.floor(W/60),N=W%60;return(z<=0?"+":"-")+w(P,2,"0")+":"+w(N,2,"0")},m:function R(z,W){if(z.date()1)return R(U[0])}else{var q=z.name;k[q]=z,N=q}return!P&&N&&($=N),N||!P&&$},L=function(R,z){if(T(R))return R.clone();var W=typeof z=="object"?z:{};return W.date=R,W.args=arguments,new B(W)},V=S;V.l=O,V.i=T,V.w=function(R,z){return L(R,{locale:z.$L,utc:z.$u,x:z.$x,$offset:z.$offset})};var B=function(){function R(W){this.$L=O(W.locale,null,!0),this.parse(W)}var z=R.prototype;return z.parse=function(W){this.$d=function(P){var N=P.date,I=P.utc;if(N===null)return new Date(NaN);if(V.u(N))return new Date;if(N instanceof Date)return new Date(N);if(typeof N=="string"&&!/Z$/i.test(N)){var U=N.match(m);if(U){var q=U[2]-1||0,Q=(U[7]||"0").substring(0,3);return I?new Date(Date.UTC(U[1],q,U[3]||1,U[4]||0,U[5]||0,U[6]||0,Q)):new Date(U[1],q,U[3]||1,U[4]||0,U[5]||0,U[6]||0,Q)}}return new Date(N)}(W),this.$x=W.x||{},this.init()},z.init=function(){var W=this.$d;this.$y=W.getFullYear(),this.$M=W.getMonth(),this.$D=W.getDate(),this.$W=W.getDay(),this.$H=W.getHours(),this.$m=W.getMinutes(),this.$s=W.getSeconds(),this.$ms=W.getMilliseconds()},z.$utils=function(){return V},z.isValid=function(){return this.$d.toString()!==g},z.isSame=function(W,P){var N=L(W);return this.startOf(P)<=N&&N<=this.endOf(P)},z.isAfter=function(W,P){return L(W)68?1900:2e3)},u=function(g){return function(m){this[g]=+m}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(m){if(!m||m==="Z")return 0;var v=m.match(/([+-]|\d\d)/g),b=60*v[1]+(+v[2]||0);return b===0?0:v[0]==="+"?-b:b}(g)}],d=function(g){var m=a[g];return m&&(m.indexOf?m:m.s.concat(m.f))},f=function(g,m){var v,b=a.meridiem;if(b){for(var w=1;w<=24;w+=1)if(g.indexOf(b(w,0,m))>-1){v=w>12;break}}else v=g===(m?"pm":"PM");return v},p={A:[r,function(g){this.afternoon=f(g,!1)}],a:[r,function(g){this.afternoon=f(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[s,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[l,u("seconds")],ss:[l,u("seconds")],m:[l,u("minutes")],mm:[l,u("minutes")],H:[l,u("hours")],h:[l,u("hours")],HH:[l,u("hours")],hh:[l,u("hours")],D:[l,u("day")],DD:[s,u("day")],Do:[r,function(g){var m=a.ordinal,v=g.match(/\d+/);if(this.day=v[0],m)for(var b=1;b<=31;b+=1)m(b).replace(/\[|\]/g,"")===g&&(this.day=b)}],M:[l,u("month")],MM:[s,u("month")],MMM:[r,function(g){var m=d("months"),v=(d("monthsShort")||m.map(function(b){return b.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[r,function(g){var m=d("months").indexOf(g)+1;if(m<1)throw new Error;this.month=m%12||m}],Y:[/[+-]?\d+/,u("year")],YY:[s,function(g){this.year=i(g)}],YYYY:[/\d{4}/,u("year")],Z:c,ZZ:c};function h(g){var m,v;m=g,v=a&&a.formats;for(var b=(g=m.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(L,V,B){var H=B&&B.toUpperCase();return V||v[B]||n[B]||v[H].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,z,W){return z||W.slice(1)})})).match(o),w=b.length,S=0;S-1)return new Date((N==="X"?1e3:1)*P);var U=h(N)(P),q=U.year,Q=U.month,Z=U.day,ae=U.hours,Ee=U.minutes,Me=U.seconds,J=U.milliseconds,ve=U.zone,Ce=new Date,ke=Z||(q||Q?1:Ce.getDate()),Oe=q||Ce.getFullYear(),We=0;q&&!Q||(We=Q>0?Q-1:Ce.getMonth());var qe=ae||0,K=Ee||0,X=Me||0,fe=J||0;return ve?new Date(Date.UTC(Oe,We,ke,qe,K,X,fe+60*ve.offset*1e3)):I?new Date(Date.UTC(Oe,We,ke,qe,K,X,fe)):new Date(Oe,We,ke,qe,K,X,fe)}catch{return new Date("")}}($,O,k),this.init(),H&&H!==!0&&(this.$L=this.locale(H).$L),B&&$!=this.format(O)&&(this.$d=new Date("")),a={}}else if(O instanceof Array)for(var R=O.length,z=1;z<=R;z+=1){T[1]=O[z-1];var W=v.apply(this,T);if(W.isValid()){this.$d=W.$d,this.$L=W.$L,this.init();break}z===R&&(this.$d=new Date(""))}else w.call(this,S)}}})})(F1);var fp=F1.exports;const wd="HH:mm:ss",Nr="YYYY-MM-DD",UV={date:Nr,week:"gggg[w]ww",year:"YYYY",month:"YYYY-MM",datetime:`${Nr} ${wd}`,monthrange:"YYYY-MM",daterange:Nr,datetimerange:`${Nr} ${wd}`},pp={id:{type:[Array,String]},name:{type:[Array,String],default:""},popperClass:{type:String,default:""},format:{type:String},valueFormat:{type:String},type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Fo},editable:{type:Boolean,default:!0},prefixIcon:{type:[String,Object],default:""},size:{type:String,validator:On},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},modelValue:{type:[Date,Array,String,Number],default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:[Date,Array]},defaultTime:{type:[Date,Array]},isRange:{type:Boolean,default:!1},disabledHours:{type:Function},disabledMinutes:{type:Function},disabledSeconds:{type:Function},disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:{type:Boolean,default:!1},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean},Ov=function(e,t){const n=e instanceof Date,o=t instanceof Date;return n&&o?e.getTime()===t.getTime():!n&&!o?e===t:!1},Iv=function(e,t){const n=Array.isArray(e),o=Array.isArray(t);return n&&o?e.length!==t.length?!1:e.every((s,l)=>Ov(s,t[l])):!n&&!o?Ov(e,t):!1},Pv=function(e,t,n){const o=ra(t)||t==="x"?Ze(e).locale(n):Ze(e,t).locale(n);return o.isValid()?o:void 0},Dv=function(e,t,n){return ra(t)?e:t==="x"?+e:Ze(e).locale(n).format(t)},qV=ee({name:"Picker",components:{ElInput:Jn,ElTooltip:mn,ElIcon:je},props:pp,emits:["update:modelValue","change","focus","blur","calendar-change","panel-change","visible-change"],setup(e,t){const{lang:n}=kt(),o=we("date"),s=we("input"),l=we("range"),r=Ne(Pn,{}),a=Ne(Un,{}),i=Ne("ElPopperOptions",{}),u=A(),c=A(),d=A(!1),f=A(!1),p=A(null);pe(d,F=>{var de;F?p.value=e.modelValue:(Ce.value=null,ze(()=>{h(e.modelValue)}),t.emit("blur"),Oe(),e.validateEvent&&((de=a.validate)==null||de.call(a,"blur").catch(Fe=>void 0)))});const h=(F,de)=>{var Fe;(de||!Iv(F,p.value))&&(t.emit("change",F),e.validateEvent&&((Fe=a.validate)==null||Fe.call(a,"change").catch(Je=>void 0)))},g=F=>{if(!Iv(e.modelValue,F)){let de;Array.isArray(F)?de=F.map(Fe=>Dv(Fe,e.valueFormat,n.value)):F&&(de=Dv(F,e.valueFormat,n.value)),t.emit("update:modelValue",F&&de,n.value)}},m=E(()=>{if(c.value){const F=ae.value?c.value:c.value.$el;return Array.from(F.querySelectorAll("input"))}return[]}),v=E(()=>m==null?void 0:m.value[0]),b=E(()=>m==null?void 0:m.value[1]),w=(F,de,Fe)=>{const Je=m.value;!Je.length||(!Fe||Fe==="min"?(Je[0].setSelectionRange(F,de),Je[0].focus()):Fe==="max"&&(Je[1].setSelectionRange(F,de),Je[1].focus()))},S=(F="",de=!1)=>{d.value=de;let Fe;Array.isArray(F)?Fe=F.map(Je=>Je.toDate()):Fe=F&&F.toDate(),Ce.value=null,g(Fe)},$=()=>{f.value=!0},k=()=>{t.emit("visible-change",!0)},T=()=>{f.value=!1,t.emit("visible-change",!1)},O=(F=!0)=>{let de=v.value;!F&&ae.value&&(de=b.value),de&&de.focus()},L=F=>{e.readonly||B.value||d.value||(d.value=!0,t.emit("focus",F))},V=()=>{var F;(F=u.value)==null||F.onClose(),Oe()},B=E(()=>e.disabled||r.disabled),H=E(()=>{let F;if(q.value?se.value.getDefaultValue&&(F=se.value.getDefaultValue()):Array.isArray(e.modelValue)?F=e.modelValue.map(de=>Pv(de,e.valueFormat,n.value)):F=Pv(e.modelValue,e.valueFormat,n.value),se.value.getRangeAvailableTime){const de=se.value.getRangeAvailableTime(F);_n(de,F)||(F=de,g(Array.isArray(F)?F.map(Fe=>Fe.toDate()):F.toDate()))}return Array.isArray(F)&&F.some(de=>!de)&&(F=[]),F}),R=E(()=>{if(!se.value.panelReady)return;const F=qe(H.value);if(Array.isArray(Ce.value))return[Ce.value[0]||F&&F[0]||"",Ce.value[1]||F&&F[1]||""];if(Ce.value!==null)return Ce.value;if(!(!W.value&&q.value)&&!(!d.value&&q.value))return F?P.value?F.join(", "):F:""}),z=E(()=>e.type.includes("time")),W=E(()=>e.type.startsWith("time")),P=E(()=>e.type==="dates"),N=E(()=>e.prefixIcon||(z.value?R0:V4)),I=A(!1),U=F=>{e.readonly||B.value||I.value&&(F.stopPropagation(),g(null),h(null,!0),I.value=!1,d.value=!1,se.value.handleClear&&se.value.handleClear())},q=E(()=>!e.modelValue||Array.isArray(e.modelValue)&&!e.modelValue.length),Q=()=>{e.readonly||B.value||!q.value&&e.clearable&&(I.value=!0)},Z=()=>{I.value=!1},ae=E(()=>e.type.includes("range")),Ee=Wt(),Me=E(()=>{var F,de;return(de=(F=u.value)==null?void 0:F.popperRef)==null?void 0:de.contentRef}),J=E(()=>{var F,de;return(de=(F=y(u))==null?void 0:F.popperRef)==null?void 0:de.contentRef}),ve=E(()=>{var F;return y(ae)?y(c):(F=y(c))==null?void 0:F.$el});Xi(ve,F=>{const de=y(J),Fe=y(ve);de&&(F.target===de||F.composedPath().includes(de))||F.target===Fe||F.composedPath().includes(Fe)||(d.value=!1)});const Ce=A(null),ke=()=>{if(Ce.value){const F=We(R.value);F&&K(F)&&(g(Array.isArray(F)?F.map(de=>de.toDate()):F.toDate()),Ce.value=null)}Ce.value===""&&(g(null),h(null),Ce.value=null)},Oe=()=>{m.value.forEach(F=>F.blur())},We=F=>F?se.value.parseUserInput(F):null,qe=F=>F?se.value.formatToString(F):null,K=F=>se.value.isValidValue(F),X=F=>{const de=F.code;if(de===Ie.esc){d.value=!1,F.stopPropagation();return}if(de===Ie.tab){ae.value?setTimeout(()=>{m.value.includes(document.activeElement)||(d.value=!1,Oe())},0):(ke(),d.value=!1,F.stopPropagation());return}if(de===Ie.enter||de===Ie.numpadEnter){(Ce.value===null||Ce.value===""||K(We(R.value)))&&(ke(),d.value=!1),F.stopPropagation();return}if(Ce.value){F.stopPropagation();return}se.value.handleKeydown&&se.value.handleKeydown(F)},fe=F=>{Ce.value=F},ye=F=>{Ce.value?Ce.value=[F.target.value,Ce.value[1]]:Ce.value=[F.target.value,null]},be=F=>{Ce.value?Ce.value=[Ce.value[0],F.target.value]:Ce.value=[null,F.target.value]},_e=()=>{const F=We(Ce.value&&Ce.value[0]);if(F&&F.isValid()){Ce.value=[qe(F),R.value[1]];const de=[F,H.value&&H.value[1]];K(de)&&(g(de),Ce.value=null)}},re=()=>{const F=We(Ce.value&&Ce.value[1]);if(F&&F.isValid()){Ce.value=[R.value[0],qe(F)];const de=[H.value&&H.value[0],F];K(de)&&(g(de),Ce.value=null)}},se=A({}),te=F=>{se.value[F[0]]=F[1],se.value.panelReady=!0},ue=F=>{t.emit("calendar-change",F)},Re=(F,de,Fe)=>{t.emit("panel-change",F,de,Fe)};return st("EP_PICKER_BASE",{props:e}),{nsDate:o,nsInput:s,nsRange:l,elPopperOptions:i,isDatesPicker:P,handleEndChange:re,handleStartChange:_e,handleStartInput:ye,handleEndInput:be,onUserInput:fe,handleChange:ke,handleKeydown:X,popperPaneRef:Me,onClickOutside:Xi,pickerSize:Ee,isRangeInput:ae,onMouseLeave:Z,onMouseEnter:Q,onClearIconClick:U,showClose:I,triggerIcon:N,onPick:S,handleFocus:L,handleBlur:V,pickerVisible:d,pickerActualVisible:f,displayValue:R,parsedValue:H,setSelectionRange:w,refPopper:u,inputRef:c,pickerDisabled:B,onSetPickerOption:te,onCalendarChange:ue,onPanelChange:Re,focus:O,onShow:k,onBeforeShow:$,onHide:T}}}),GV=["id","name","placeholder","value","disabled","readonly"],XV=["id","name","placeholder","value","disabled","readonly"];function ZV(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-input"),i=le("el-tooltip");return C(),x(i,Et({ref:"refPopper",visible:e.pickerVisible,"onUpdate:visible":t[17]||(t[17]=u=>e.pickerVisible=u),effect:"light",pure:"",trigger:"click"},e.$attrs,{"append-to-body":"",transition:`${e.nsDate.namespace.value}-zoom-in-top`,"popper-class":[`${e.nsDate.namespace.value}-picker__popper`,e.popperClass],"popper-options":e.elPopperOptions,"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:e.onBeforeShow,onShow:e.onShow,onHide:e.onHide}),{default:j(()=>[e.isRangeInput?(C(),M("div",{key:1,ref:"inputRef",class:_([e.nsDate.b("editor"),e.nsDate.bm("editor",e.type),e.nsInput.e("inner"),e.nsDate.is("disabled",e.pickerDisabled),e.nsDate.is("active",e.pickerVisible),e.nsRange.b("editor"),e.pickerSize?e.nsRange.bm("editor",e.pickerSize):"",e.$attrs.class]),style:Pe(e.$attrs.style),onClick:t[7]||(t[7]=(...u)=>e.handleFocus&&e.handleFocus(...u)),onMouseenter:t[8]||(t[8]=(...u)=>e.onMouseEnter&&e.onMouseEnter(...u)),onMouseleave:t[9]||(t[9]=(...u)=>e.onMouseLeave&&e.onMouseLeave(...u)),onKeydown:t[10]||(t[10]=(...u)=>e.handleKeydown&&e.handleKeydown(...u))},[e.triggerIcon?(C(),x(r,{key:0,class:_([e.nsInput.e("icon"),e.nsRange.e("icon")]),onClick:e.handleFocus},{default:j(()=>[(C(),x(ft(e.triggerIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0),D("input",{id:e.id&&e.id[0],autocomplete:"off",name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:e.displayValue&&e.displayValue[0],disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,class:_(e.nsRange.b("input")),onInput:t[1]||(t[1]=(...u)=>e.handleStartInput&&e.handleStartInput(...u)),onChange:t[2]||(t[2]=(...u)=>e.handleStartChange&&e.handleStartChange(...u)),onFocus:t[3]||(t[3]=(...u)=>e.handleFocus&&e.handleFocus(...u))},null,42,GV),ie(e.$slots,"range-separator",{},()=>[D("span",{class:_(e.nsRange.b("separator"))},he(e.rangeSeparator),3)]),D("input",{id:e.id&&e.id[1],autocomplete:"off",name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:e.displayValue&&e.displayValue[1],disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,class:_(e.nsRange.b("input")),onFocus:t[4]||(t[4]=(...u)=>e.handleFocus&&e.handleFocus(...u)),onInput:t[5]||(t[5]=(...u)=>e.handleEndInput&&e.handleEndInput(...u)),onChange:t[6]||(t[6]=(...u)=>e.handleEndChange&&e.handleEndChange(...u))},null,42,XV),e.clearIcon?(C(),x(r,{key:1,class:_([e.nsInput.e("icon"),e.nsRange.e("close-icon"),{[e.nsRange.e("close-icon--hidden")]:!e.showClose}]),onClick:e.onClearIconClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)],38)):(C(),x(a,{key:0,id:e.id,ref:"inputRef","model-value":e.displayValue,name:e.name,size:e.pickerSize,disabled:e.pickerDisabled,placeholder:e.placeholder,class:_([e.nsDate.b("editor"),e.nsDate.bm("editor",e.type),e.$attrs.class]),style:Pe(e.$attrs.style),readonly:!e.editable||e.readonly||e.isDatesPicker||e.type==="week",onInput:e.onUserInput,onFocus:e.handleFocus,onKeydown:e.handleKeydown,onChange:e.handleChange,onMouseenter:e.onMouseEnter,onMouseleave:e.onMouseLeave,onClick:t[0]||(t[0]=Ke(()=>{},["stop"]))},{prefix:j(()=>[e.triggerIcon?(C(),x(r,{key:0,class:_(e.nsInput.e("icon")),onClick:e.handleFocus},{default:j(()=>[(C(),x(ft(e.triggerIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),suffix:j(()=>[e.showClose&&e.clearIcon?(C(),x(r,{key:0,class:_(`${e.nsInput.e("icon")} clear-icon`),onClick:e.onClearIconClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","onInput","onFocus","onKeydown","onChange","onMouseenter","onMouseleave"]))]),content:j(()=>[ie(e.$slots,"default",{visible:e.pickerVisible,actualVisible:e.pickerActualVisible,parsedValue:e.parsedValue,format:e.format,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,onPick:t[11]||(t[11]=(...u)=>e.onPick&&e.onPick(...u)),onSelectRange:t[12]||(t[12]=(...u)=>e.setSelectionRange&&e.setSelectionRange(...u)),onSetPickerOption:t[13]||(t[13]=(...u)=>e.onSetPickerOption&&e.onSetPickerOption(...u)),onCalendarChange:t[14]||(t[14]=(...u)=>e.onCalendarChange&&e.onCalendarChange(...u)),onPanelChange:t[15]||(t[15]=(...u)=>e.onPanelChange&&e.onPanelChange(...u)),onMousedown:t[16]||(t[16]=Ke(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-options","onBeforeShow","onShow","onHide"])}var H1=ge(qV,[["render",ZV],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue"]]);const xo=new Map;let Lv;ct&&(document.addEventListener("mousedown",e=>Lv=e),document.addEventListener("mouseup",e=>{for(const t of xo.values())for(const{documentHandler:n}of t)n(e,Lv)}));function Rv(e,t){let n=[];return Array.isArray(t.arg)?n=t.arg:ol(t.arg)&&n.push(t.arg),function(o,s){const l=t.instance.popperRef,r=o.target,a=s==null?void 0:s.target,i=!t||!t.instance,u=!r||!a,c=e.contains(r)||e.contains(a),d=e===r,f=n.length&&n.some(h=>h==null?void 0:h.contains(r))||n.length&&n.includes(a),p=l&&(l.contains(r)||l.contains(a));i||u||c||d||f||p||t.value(o,s)}}const hl={beforeMount(e,t){xo.has(e)||xo.set(e,[]),xo.get(e).push({documentHandler:Rv(e,t),bindingFn:t.value})},updated(e,t){xo.has(e)||xo.set(e,[]);const n=xo.get(e),o=n.findIndex(l=>l.bindingFn===t.oldValue),s={documentHandler:Rv(e,t),bindingFn:t.value};o>=0?n.splice(o,1,s):n.push(s)},unmounted(e){xo.delete(e)}};var z1={beforeMount(e,t){let n=null,o;const s=()=>t.value&&t.value(),l=()=>{Date.now()-o<100&&s(),clearInterval(n),n=null};Tt(e,"mousedown",r=>{r.button===0&&(o=Date.now(),M3(document,"mouseup",l),clearInterval(n),n=setInterval(s,100))})}};const Cd="_trap-focus-children",Bs=[],Vv=e=>{if(Bs.length===0)return;const t=Bs[Bs.length-1][Cd];if(t.length>0&&e.code===Ie.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}const n=e.shiftKey,o=e.target===t[0],s=e.target===t[t.length-1];o&&n&&(e.preventDefault(),t[t.length-1].focus()),s&&!n&&(e.preventDefault(),t[0].focus())}},K1={beforeMount(e){e[Cd]=tv(e),Bs.push(e),Bs.length<=1&&Tt(document,"keydown",Vv)},updated(e){ze(()=>{e[Cd]=tv(e)})},unmounted(){Bs.shift(),Bs.length===0&&Bt(document,"keydown",Vv)}};var Bv=!1,Ls,$d,kd,fi,pi,W1,hi,Sd,Ed,_d,j1,Td,Ad,Y1,U1;function un(){if(!Bv){Bv=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Td=/\b(iPhone|iP[ao]d)/.exec(e),Ad=/\b(iP[ao]d)/.exec(e),_d=/Android/i.exec(e),Y1=/FBAN\/\w+;/i.exec(e),U1=/Mobile/i.exec(e),j1=!!/Win64/.exec(e),t){Ls=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,Ls&&document&&document.documentMode&&(Ls=document.documentMode);var o=/(?:Trident\/(\d+.\d+))/.exec(e);W1=o?parseFloat(o[1])+4:Ls,$d=t[2]?parseFloat(t[2]):NaN,kd=t[3]?parseFloat(t[3]):NaN,fi=t[4]?parseFloat(t[4]):NaN,fi?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),pi=t&&t[1]?parseFloat(t[1]):NaN):pi=NaN}else Ls=$d=kd=pi=fi=NaN;if(n){if(n[1]){var s=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);hi=s?parseFloat(s[1].replace("_",".")):!0}else hi=!1;Sd=!!n[2],Ed=!!n[3]}else hi=Sd=Ed=!1}}var Nd={ie:function(){return un()||Ls},ieCompatibilityMode:function(){return un()||W1>Ls},ie64:function(){return Nd.ie()&&j1},firefox:function(){return un()||$d},opera:function(){return un()||kd},webkit:function(){return un()||fi},safari:function(){return Nd.webkit()},chrome:function(){return un()||pi},windows:function(){return un()||Sd},osx:function(){return un()||hi},linux:function(){return un()||Ed},iphone:function(){return un()||Td},mobile:function(){return un()||Td||Ad||_d||U1},nativeApp:function(){return un()||Y1},android:function(){return un()||_d},ipad:function(){return un()||Ad}},JV=Nd,Za=!!(typeof window<"u"&&window.document&&window.document.createElement),QV={canUseDOM:Za,canUseWorkers:typeof Worker<"u",canUseEventListeners:Za&&!!(window.addEventListener||window.attachEvent),canUseViewport:Za&&!!window.screen,isInWorker:!Za},q1=QV,G1;q1.canUseDOM&&(G1=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function xV(e,t){if(!q1.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var s=document.createElement("div");s.setAttribute(n,"return;"),o=typeof s[n]=="function"}return!o&&G1&&e==="wheel"&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}var eB=xV,Fv=10,Hv=40,zv=800;function X1(e){var t=0,n=0,o=0,s=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),o=t*Fv,s=n*Fv,"deltaY"in e&&(s=e.deltaY),"deltaX"in e&&(o=e.deltaX),(o||s)&&e.deltaMode&&(e.deltaMode==1?(o*=Hv,s*=Hv):(o*=zv,s*=zv)),o&&!t&&(t=o<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:o,pixelY:s}}X1.getEventType=function(){return JV.firefox()?"DOMMouseScroll":eB("wheel")?"wheel":"mousewheel"};var tB=X1;/** * Checks if an event is supported in the current execution environment. * * NOTE: This will not work correctly for non-generic events such as `change`, @@ -26,21 +26,21 @@ var qC=Object.defineProperty,GC=Object.defineProperties;var XC=Object.getOwnProp * @return {boolean} True if the event is supported. * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT -*/const xB=function(e,t){if(e&&e.addEventListener){const n=function(o){const s=QB(o);t&&Reflect.apply(t,this,[o,s])};lp()?e.addEventListener("DOMMouseScroll",n):e.onmousewheel=n}},eV={beforeMount(e,t){xB(e,t.value)}},tV={beforeMount(e,t){e._handleResize=()=>{var n;e&&((n=t.value)==null||n.call(t,e))},ir(e,e._handleResize)},beforeUnmount(e){ur(e,e._handleResize)}},wc=(e,t,n)=>{const o=[],s=t&&n();for(let l=0;le.map((t,n)=>t||n).filter(t=>t!==!0),G1=(e,t,n)=>({getHoursList:(r,a)=>wc(24,e,()=>e(r,a)),getMinutesList:(r,a,i)=>wc(60,t,()=>t(r,a,i)),getSecondsList:(r,a,i,u)=>wc(60,n,()=>n(r,a,i,u))}),X1=(e,t,n)=>{const{getHoursList:o,getMinutesList:s,getSecondsList:l}=G1(e,t,n);return{getAvailableHours:(u,c)=>Cc(o(u,c)),getAvailableMinutes:(u,c,d)=>Cc(s(u,c,d)),getAvailableSeconds:(u,c,d,f)=>Cc(l(u,c,d,f))}},J1=e=>{const t=A(e.parsedValue);return pe(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},nV=te({directives:{repeatClick:F1},components:{ElScrollbar:Uo,ElIcon:je,ArrowUp:Aa,ArrowDown:fl},props:{role:{type:String,required:!0},spinnerDate:{type:Object,required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""},disabledHours:{type:Function},disabledMinutes:{type:Function},disabledSeconds:{type:Function}},emits:["change","select-range","set-option"],setup(e,t){const n=we("time");let o=!1;const s=hn(Z=>{o=!1,L(Z)},200),l=A(null),r=A(null),a=A(null),i=A(null),u={hours:r,minutes:a,seconds:i},c=E(()=>{const Z=["hours","minutes","seconds"];return e.showSeconds?Z:Z.slice(0,2)}),d=E(()=>e.spinnerDate.hour()),f=E(()=>e.spinnerDate.minute()),p=E(()=>e.spinnerDate.second()),h=E(()=>({hours:d,minutes:f,seconds:p})),g=E(()=>ae(e.role)),m=E(()=>Ee(d.value,e.role)),v=E(()=>Me(d.value,f.value,e.role)),y=E(()=>({hours:g,minutes:m,seconds:v})),w=E(()=>{const Z=d.value;return[Z>0?Z-1:void 0,Z,Z<23?Z+1:void 0]}),S=E(()=>{const Z=f.value;return[Z>0?Z-1:void 0,Z,Z<59?Z+1:void 0]}),$=E(()=>{const Z=p.value;return[Z>0?Z-1:void 0,Z,Z<59?Z+1:void 0]}),k=E(()=>({hours:w,minutes:S,seconds:$})),T=Z=>{if(!!!e.amPmMode)return"";const Ce=e.amPmMode==="A";let ke=Z<12?" am":" pm";return Ce&&(ke=ke.toUpperCase()),ke},O=Z=>{Z==="hours"?t.emit("select-range",0,2):Z==="minutes"?t.emit("select-range",3,5):Z==="seconds"&&t.emit("select-range",6,8),l.value=Z},L=Z=>{H(Z,h.value[Z].value)},B=()=>{L("hours"),L("minutes"),L("seconds")},V=Z=>Z.querySelector(`.${n.namespace.value}-scrollbar__wrap`),H=(Z,ve)=>{if(e.arrowControl)return;const Ce=u[Z];Ce&&Ce.$el&&(V(Ce.$el).scrollTop=Math.max(0,ve*R(Z)))},R=Z=>u[Z].$el.querySelector("li").offsetHeight,z=()=>{P(1)},W=()=>{P(-1)},P=Z=>{l.value||O("hours");const ve=l.value;let Ce=h.value[ve].value;const ke=l.value==="hours"?24:60;Ce=(Ce+Z+ke)%ke,N(ve,Ce),H(ve,Ce),ze(()=>O(l.value))},N=(Z,ve)=>{if(!y.value[Z].value[ve])switch(Z){case"hours":t.emit("change",e.spinnerDate.hour(ve).minute(f.value).second(p.value));break;case"minutes":t.emit("change",e.spinnerDate.hour(d.value).minute(ve).second(p.value));break;case"seconds":t.emit("change",e.spinnerDate.hour(d.value).minute(f.value).second(ve));break}},I=(Z,{value:ve,disabled:Ce})=>{Ce||(N(Z,ve),O(Z),H(Z,ve))},U=Z=>{o=!0,s(Z);const ve=Math.min(Math.round((V(u[Z].$el).scrollTop-(q(Z)*.5-10)/R(Z)+3)/R(Z)),Z==="hours"?23:59);N(Z,ve)},q=Z=>u[Z].$el.offsetHeight,Q=()=>{const Z=ve=>{u[ve]&&u[ve].$el&&(V(u[ve].$el).onscroll=()=>{U(ve)})};Z("hours"),Z("minutes"),Z("seconds")};xe(()=>{ze(()=>{!e.arrowControl&&Q(),B(),e.role==="start"&&O("hours")})});const J=(Z,ve)=>{u[ve]=Z};t.emit("set-option",[`${e.role}_scrollDown`,P]),t.emit("set-option",[`${e.role}_emitSelectRange`,O]);const{getHoursList:ae,getMinutesList:Ee,getSecondsList:Me}=G1(e.disabledHours,e.disabledMinutes,e.disabledSeconds);return pe(()=>e.spinnerDate,()=>{o||B()}),{ns:n,setRef:J,spinnerItems:c,currentScrollbar:l,hours:d,minutes:f,seconds:p,hoursList:g,minutesList:m,arrowHourList:w,arrowMinuteList:S,arrowSecondList:$,getAmPmFlag:T,emitSelectRange:O,adjustCurrentSpinner:L,typeItemHeight:R,listHoursRef:r,listMinutesRef:a,listSecondsRef:i,onIncreaseClick:z,onDecreaseClick:W,handleClick:I,secondsList:v,timePartsMap:h,arrowListMap:k,listMap:y}}}),oV=["onClick"],sV=["onMouseenter"];function lV(e,t,n,o,s,l){const r=le("el-scrollbar"),a=le("arrow-up"),i=le("el-icon"),u=le("arrow-down"),c=Mn("repeat-click");return C(),M("div",{class:_([e.ns.b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?G("v-if",!0):(C(!0),M(Le,{key:0},rt(e.spinnerItems,d=>(C(),x(r,{key:d,ref_for:!0,ref:f=>e.setRef(f,d),class:_(e.ns.be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":e.ns.be("spinner","list"),noresize:"",tag:"ul",onMouseenter:f=>e.emitSelectRange(d),onMousemove:f=>e.adjustCurrentSpinner(d)},{default:j(()=>[(C(!0),M(Le,null,rt(e.listMap[d].value,(f,p)=>(C(),M("li",{key:p,class:_([e.ns.be("spinner","item"),e.ns.is("active",p===e.timePartsMap[d].value),e.ns.is("disabled",f)]),onClick:h=>e.handleClick(d,{value:p,disabled:f})},[d==="hours"?(C(),M(Le,{key:0},[it(he(("0"+(e.amPmMode?p%12||12:p)).slice(-2))+he(e.getAmPmFlag(p)),1)],2112)):(C(),M(Le,{key:1},[it(he(("0"+p).slice(-2)),1)],2112))],10,oV))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),e.arrowControl?(C(!0),M(Le,{key:1},rt(e.spinnerItems,d=>(C(),M("div",{key:d,class:_([e.ns.be("spinner","wrapper"),e.ns.is("arrow")]),onMouseenter:f=>e.emitSelectRange(d)},[Ge((C(),x(i,{class:_(["arrow-up",e.ns.be("spinner","arrow")])},{default:j(()=>[Y(a)]),_:1},8,["class"])),[[c,e.onDecreaseClick]]),Ge((C(),x(i,{class:_(["arrow-down",e.ns.be("spinner","arrow")])},{default:j(()=>[Y(u)]),_:1},8,["class"])),[[c,e.onIncreaseClick]]),D("ul",{class:_(e.ns.be("spinner","list"))},[(C(!0),M(Le,null,rt(e.arrowListMap[d].value,(f,p)=>(C(),M("li",{key:p,class:_([e.ns.be("spinner","item"),e.ns.is("active",f===e.timePartsMap[d].value),e.ns.is("disabled",e.listMap[d].value[f])])},[typeof f=="number"?(C(),M(Le,{key:0},[d==="hours"?(C(),M(Le,{key:0},[it(he(("0"+(e.amPmMode?f%12||12:f)).slice(-2))+he(e.getAmPmFlag(f)),1)],2112)):(C(),M(Le,{key:1},[it(he(("0"+f).slice(-2)),1)],2112))],2112)):G("v-if",!0)],2))),128))],2)],42,sV))),128)):G("v-if",!0)],2)}var Z1=ge(nV,[["render",lV],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"]]);const rV=te({components:{TimeSpinner:Z1},props:{visible:Boolean,actualVisible:{type:Boolean,default:void 0},datetimeRole:{type:String},parsedValue:{type:[Object,String]},format:{type:String,default:""}},emits:["pick","select-range","set-picker-option"],setup(e,t){const n=we("time"),{t:o,lang:s}=kt(),l=A([0,2]),r=J1(e),a=E(()=>Cn(e.actualVisible)?`${n.namespace.value}-zoom-in-top`:""),i=E(()=>e.format.includes("ss")),u=E(()=>e.format.includes("A")?"A":e.format.includes("a")?"a":""),c=P=>{const N=Je(P).locale(s.value),I=v(N);return N.isSame(I)},d=()=>{t.emit("pick",r.value,!1)},f=(P=!1,N=!1)=>{N||t.emit("pick",e.parsedValue,P)},p=P=>{if(!e.visible)return;const N=v(P).millisecond(0);t.emit("pick",N,!0)},h=(P,N)=>{t.emit("select-range",P,N),l.value=[P,N]},g=P=>{const N=[0,3].concat(i.value?[6]:[]),I=["hours","minutes"].concat(i.value?["seconds"]:[]),q=(N.indexOf(l.value[0])+P+N.length)%N.length;$.start_emitSelectRange(I[q])},m=P=>{const N=P.code;if(N===Ie.left||N===Ie.right){const I=N===Ie.left?-1:1;g(I),P.preventDefault();return}if(N===Ie.up||N===Ie.down){const I=N===Ie.up?-1:1;$.start_scrollDown(I),P.preventDefault();return}},v=P=>{const N={hour:R,minute:z,second:W};let I=P;return["hour","minute","second"].forEach(U=>{if(N[U]){let q;const Q=N[U];U==="minute"?q=Q(I.hour(),e.datetimeRole):U==="second"?q=Q(I.hour(),I.minute(),e.datetimeRole):q=Q(e.datetimeRole),q&&q.length&&!q.includes(I[U]())&&(I=I[U](q[0]))}}),I},y=P=>P?Je(P,e.format).locale(s.value):null,w=P=>P?P.format(e.format):null,S=()=>Je(H).locale(s.value);t.emit("set-picker-option",["isValidValue",c]),t.emit("set-picker-option",["formatToString",w]),t.emit("set-picker-option",["parseUserInput",y]),t.emit("set-picker-option",["handleKeydown",m]),t.emit("set-picker-option",["getRangeAvailableTime",v]),t.emit("set-picker-option",["getDefaultValue",S]);const $={},k=P=>{$[P[0]]=P[1]},T=Ne("EP_PICKER_BASE"),{arrowControl:O,disabledHours:L,disabledMinutes:B,disabledSeconds:V,defaultValue:H}=T.props,{getAvailableHours:R,getAvailableMinutes:z,getAvailableSeconds:W}=X1(L,B,V);return{ns:n,transitionName:a,arrowControl:O,onSetOption:k,t:o,handleConfirm:f,handleChange:p,setSelectionRange:h,amPmMode:u,showSeconds:i,handleCancel:d,disabledHours:L,disabledMinutes:B,disabledSeconds:V}}});function aV(e,t,n,o,s,l){const r=le("time-spinner");return C(),x(zt,{name:e.transitionName},{default:j(()=>[e.actualVisible||e.visible?(C(),M("div",{key:0,class:_(e.ns.b("panel"))},[D("div",{class:_([e.ns.be("panel","content"),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":e.arrowControl,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"spinner-date":e.parsedValue,"disabled-hours":e.disabledHours,"disabled-minutes":e.disabledMinutes,"disabled-seconds":e.disabledSeconds,onChange:e.handleChange,onSetOption:e.onSetOption,onSelectRange:e.setSelectionRange},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2),D("div",{class:_(e.ns.be("panel","footer"))},[D("button",{type:"button",class:_([e.ns.be("panel","btn"),"cancel"]),onClick:t[0]||(t[0]=(...a)=>e.handleCancel&&e.handleCancel(...a))},he(e.t("el.datepicker.cancel")),3),D("button",{type:"button",class:_([e.ns.be("panel","btn"),"confirm"]),onClick:t[1]||(t[1]=a=>e.handleConfirm())},he(e.t("el.datepicker.confirm")),3)],2)],2)):G("v-if",!0)]),_:1},8,["name"])}var mp=ge(rV,[["render",aV],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"]]);const yl=(e,t)=>{const n=[];for(let o=e;o<=t;o++)n.push(o);return n},iV=te({components:{TimeSpinner:Z1},props:{visible:Boolean,actualVisible:Boolean,parsedValue:{type:[Array]},format:{type:String,default:""}},emits:["pick","select-range","set-picker-option"],setup(e,t){const{t:n,lang:o}=kt(),s=we("time"),l=we("picker"),r=E(()=>e.parsedValue[0]),a=E(()=>e.parsedValue[1]),i=J1(e),u=()=>{t.emit("pick",i.value,!1)},c=E(()=>e.format.includes("ss")),d=E(()=>e.format.includes("A")?"A":e.format.includes("a")?"a":""),f=A([]),p=A([]),h=(ke=!1)=>{t.emit("pick",[r.value,a.value],ke)},g=ke=>{y(ke.millisecond(0),a.value)},m=ke=>{y(r.value,ke.millisecond(0))},v=ke=>{const Oe=ke.map(qe=>Je(qe).locale(o.value)),We=R(Oe);return Oe[0].isSame(We[0])&&Oe[1].isSame(We[1])},y=(ke,Oe)=>{t.emit("pick",[ke,Oe],!0)},w=E(()=>r.value>a.value),S=A([0,2]),$=(ke,Oe)=>{t.emit("select-range",ke,Oe,"min"),S.value=[ke,Oe]},k=E(()=>c.value?11:8),T=(ke,Oe)=>{t.emit("select-range",ke,Oe,"max"),S.value=[ke+k.value,Oe+k.value]},O=ke=>{const Oe=c.value?[0,3,6,11,14,17]:[0,3,8,11],We=["hours","minutes"].concat(c.value?["seconds"]:[]),K=(Oe.indexOf(S.value[0])+ke+Oe.length)%Oe.length,X=Oe.length/2;K{const Oe=ke.code;if(Oe===Ie.left||Oe===Ie.right){const We=Oe===Ie.left?-1:1;O(We),ke.preventDefault();return}if(Oe===Ie.up||Oe===Ie.down){const We=Oe===Ie.up?-1:1,qe=S.value[0]{const We=Me?Me(ke):[],qe=ke==="start",X=(Oe||(qe?a.value:r.value)).hour(),fe=qe?yl(X+1,23):yl(0,X-1);return fc(We,fe)},V=(ke,Oe,We)=>{const qe=Z?Z(ke,Oe):[],K=Oe==="start",X=We||(K?a.value:r.value),fe=X.hour();if(ke!==fe)return qe;const ye=X.minute(),be=K?yl(ye+1,59):yl(0,ye-1);return fc(qe,be)},H=(ke,Oe,We,qe)=>{const K=ve?ve(ke,Oe,We):[],X=We==="start",fe=qe||(X?a.value:r.value),ye=fe.hour(),be=fe.minute();if(ke!==ye||Oe!==be)return K;const _e=fe.second(),re=X?yl(_e+1,59):yl(0,_e-1);return fc(K,re)},R=ke=>ke.map((Oe,We)=>N(ke[0],ke[1],We===0?"start":"end")),{getAvailableHours:z,getAvailableMinutes:W,getAvailableSeconds:P}=X1(B,V,H),N=(ke,Oe,We)=>{const qe={hour:z,minute:W,second:P},K=We==="start";let X=K?ke:Oe;const fe=K?Oe:ke;return["hour","minute","second"].forEach(ye=>{if(qe[ye]){let be;const _e=qe[ye];if(ye==="minute"?be=_e(X.hour(),We,fe):ye==="second"?be=_e(X.hour(),X.minute(),We,fe):be=_e(We,fe),be&&be.length&&!be.includes(X[ye]())){const re=K?0:be.length-1;X=X[ye](be[re])}}}),X},I=ke=>ke?Array.isArray(ke)?ke.map(Oe=>Je(Oe,e.format).locale(o.value)):Je(ke,e.format).locale(o.value):null,U=ke=>ke?Array.isArray(ke)?ke.map(Oe=>Oe.format(e.format)):ke.format(e.format):null,q=()=>{if(Array.isArray(Ce))return Ce.map(Oe=>Je(Oe).locale(o.value));const ke=Je(Ce).locale(o.value);return[ke,ke.add(60,"m")]};t.emit("set-picker-option",["formatToString",U]),t.emit("set-picker-option",["parseUserInput",I]),t.emit("set-picker-option",["isValidValue",v]),t.emit("set-picker-option",["handleKeydown",L]),t.emit("set-picker-option",["getDefaultValue",q]),t.emit("set-picker-option",["getRangeAvailableTime",R]);const Q={},J=ke=>{Q[ke[0]]=ke[1]},ae=Ne("EP_PICKER_BASE"),{arrowControl:Ee,disabledHours:Me,disabledMinutes:Z,disabledSeconds:ve,defaultValue:Ce}=ae.props;return{nsTime:s,nsPicker:l,arrowControl:Ee,onSetOption:J,setMaxSelectionRange:T,setMinSelectionRange:$,btnConfirmDisabled:w,handleCancel:u,handleConfirm:h,t:n,showSeconds:c,minDate:r,maxDate:a,amPmMode:d,handleMinChange:g,handleMaxChange:m,minSelectableRange:f,maxSelectableRange:p,disabledHours_:B,disabledMinutes_:V,disabledSeconds_:H}}}),uV=["disabled"];function cV(e,t,n,o,s,l){const r=le("time-spinner");return e.actualVisible?(C(),M("div",{key:0,class:_([e.nsTime.b("range-picker"),e.nsPicker.b("panel")])},[D("div",{class:_(e.nsTime.be("range-picker","content"))},[D("div",{class:_(e.nsTime.be("range-picker","cell"))},[D("div",{class:_(e.nsTime.be("range-picker","header"))},he(e.t("el.datepicker.startTime")),3),D("div",{class:_([e.nsTime.be("range-picker","body"),e.nsTime.be("panel","content"),e.nsTime.is("arrow",e.arrowControl),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"minSpinner",role:"start","show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,"spinner-date":e.minDate,"disabled-hours":e.disabledHours_,"disabled-minutes":e.disabledMinutes_,"disabled-seconds":e.disabledSeconds_,onChange:e.handleMinChange,onSetOption:e.onSetOption,onSelectRange:e.setMinSelectionRange},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2)],2),D("div",{class:_(e.nsTime.be("range-picker","cell"))},[D("div",{class:_(e.nsTime.be("range-picker","header"))},he(e.t("el.datepicker.endTime")),3),D("div",{class:_([e.nsTime.be("range-picker","body"),e.nsTime.be("panel","content"),e.nsTime.is("arrow",e.arrowControl),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"maxSpinner",role:"end","show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,"spinner-date":e.maxDate,"disabled-hours":e.disabledHours_,"disabled-minutes":e.disabledMinutes_,"disabled-seconds":e.disabledSeconds_,onChange:e.handleMaxChange,onSetOption:e.onSetOption,onSelectRange:e.setMaxSelectionRange},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2)],2)],2),D("div",{class:_(e.nsTime.be("panel","footer"))},[D("button",{type:"button",class:_([e.nsTime.be("panel","btn"),"cancel"]),onClick:t[0]||(t[0]=a=>e.handleCancel())},he(e.t("el.datepicker.cancel")),3),D("button",{type:"button",class:_([e.nsTime.be("panel","btn"),"confirm"]),disabled:e.btnConfirmDisabled,onClick:t[1]||(t[1]=a=>e.handleConfirm())},he(e.t("el.datepicker.confirm")),11,uV)],2)],2)):G("v-if",!0)}var dV=ge(iV,[["render",cV],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-range.vue"]]);Je.extend(pp);var fV=te({name:"ElTimePicker",install:null,props:Te(ne({},hp),{isRange:{type:Boolean,default:!1}}),emits:["update:modelValue"],setup(e,t){const n=A(null),o=e.isRange?"timerange":"time",s=e.isRange?dV:mp,l=Te(ne({},e),{focus:()=>{var r;(r=n.value)==null||r.handleFocus()},blur:()=>{var r;(r=n.value)==null||r.handleBlur()}});return st("ElPopperOptions",e.popperOptions),t.expose(l),()=>{var r;const a=(r=e.format)!=null?r:Cd;return Pe(V1,Te(ne({},e),{format:a,type:o,ref:n,"onUpdate:modelValue":i=>t.emit("update:modelValue",i)}),{default:i=>Pe(s,i)})}}});const as=e=>Array.from(Array.from({length:e}).keys()),Q1=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),x1=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),vi=fV;vi.install=e=>{e.component(vi.name,vi)};const pV=vi,hV=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return as(t).map((o,s)=>n-(t-s-1))},mV=e=>{const t=e.daysInMonth();return as(t).map((n,o)=>o+1)},vV=e=>as(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),gV=Ve({selectedDay:{type:$e(Object)},range:{type:$e(Array)},date:{type:$e(Object),required:!0},hideHeader:{type:Boolean}}),bV={pick:e=>dt(e)},yV={key:0},wV=["onClick"],CV={name:"DateTable"},$V=te(Te(ne({},CV),{props:gV,emits:bV,setup(e,{expose:t,emit:n}){const o=e;Je.extend(R1);const{t:s,lang:l}=kt(),r=we("calendar-table"),a=we("calendar-day"),i=Je().locale(l.value),u=i.$locale().weekStart||0,c=E(()=>!!o.range&&!!o.range.length),d=E(()=>{let v=[];if(c.value){const[y,w]=o.range,S=as(w.date()-y.date()+1).map(T=>({text:y.date()+T,type:"current"}));let $=S.length%7;$=$===0?0:7-$;const k=as($).map((T,O)=>({text:O+1,type:"next"}));v=S.concat(k)}else{const y=o.date.startOf("month").day()||7,w=hV(o.date,y-u).map(k=>({text:k,type:"prev"})),S=mV(o.date).map(k=>({text:k,type:"current"}));v=[...w,...S];const $=as(42-v.length).map((k,T)=>({text:T+1,type:"next"}));v=v.concat($)}return vV(v)}),f=E(()=>{const v=u;return v===0?hc.map(y=>s(`el.datepicker.weeks.${y}`)):hc.slice(v).concat(hc.slice(0,v)).map(y=>s(`el.datepicker.weeks.${y}`))}),p=(v,y)=>{switch(y){case"prev":return o.date.startOf("month").subtract(1,"month").date(v);case"next":return o.date.startOf("month").add(1,"month").date(v);case"current":return o.date.date(v)}},h=({text:v,type:y})=>{const w=[y];if(y==="current"){const S=p(v,y);S.isSame(o.selectedDay,"day")&&w.push(a.is("selected")),S.isSame(i,"day")&&w.push(a.is("today"))}return w},g=({text:v,type:y})=>{const w=p(v,y);n("pick",w)},m=({text:v,type:y})=>{const w=p(v,y);return{isSelected:w.isSame(o.selectedDay),type:`${y}-month`,day:w.format("YYYY-MM-DD"),date:w.toDate()}};return t({getFormattedDate:p}),(v,y)=>(C(),M("table",{class:_([b(r).b(),b(r).is("range",b(c))]),cellspacing:"0",cellpadding:"0"},[v.hideHeader?G("v-if",!0):(C(),M("thead",yV,[(C(!0),M(Le,null,rt(b(f),w=>(C(),M("th",{key:w},he(w),1))),128))])),D("tbody",null,[(C(!0),M(Le,null,rt(b(d),(w,S)=>(C(),M("tr",{key:S,class:_({[b(r).e("row")]:!0,[b(r).em("row","hide-border")]:S===0&&v.hideHeader})},[(C(!0),M(Le,null,rt(w,($,k)=>(C(),M("td",{key:k,class:_(h($)),onClick:T=>g($)},[D("div",{class:_(b(a).b())},[ie(v.$slots,"dateCell",{data:m($)},()=>[D("span",null,he($.text),1)])],2)],10,wV))),128))],2))),128))])],2))}}));var zv=ge($V,[["__file","/home/runner/work/element-plus/element-plus/packages/components/calendar/src/date-table.vue"]]);const kV=Ve({modelValue:{type:Date},range:{type:$e(Array),validator:e=>Array.isArray(e)&&e.length===2&&e.every(t=>t instanceof Date)}}),SV={[tt]:e=>e instanceof Date,input:e=>e instanceof Date},EV={name:"ElCalendar"},_V=te(Te(ne({},EV),{props:kV,emits:SV,setup(e,{expose:t,emit:n}){const o=e,s=we("calendar"),{t:l,lang:r}=kt(),a=A(),i=Je().locale(r.value),u=E(()=>g.value.subtract(1,"month").date(1)),c=E(()=>g.value.add(1,"month").date(1)),d=E(()=>g.value.subtract(1,"year").date(1)),f=E(()=>g.value.add(1,"year").date(1)),p=E(()=>{const S=`el.datepicker.month${g.value.format("M")}`;return`${g.value.year()} ${l("el.datepicker.year")} ${l(S)}`}),h=E({get(){return o.modelValue?g.value:a.value},set(S){if(!S)return;a.value=S;const $=S.toDate();n("input",$),n("update:modelValue",$)}}),g=E(()=>o.modelValue?Je(o.modelValue).locale(r.value):h.value?h.value:v.value.length?v.value[0][0]:i),m=(S,$)=>{const k=S.startOf("week"),T=$.endOf("week"),O=k.get("month"),L=T.get("month");if(O===L)return[[k,T]];if(O+1===L){const B=k.endOf("month"),V=T.startOf("month"),R=B.isSame(V,"week")?V.add(1,"week"):V;return[[k,B],[R.startOf("week"),T]]}else if(O+2===L){const B=k.endOf("month"),V=k.add(1,"month").startOf("month"),H=B.isSame(V,"week")?V.add(1,"week"):V,R=H.endOf("month"),z=T.startOf("month"),W=R.isSame(z,"week")?z.add(1,"week"):z;return[[k,B],[H.startOf("week"),R],[W.startOf("week"),T]]}else return[]},v=E(()=>{if(!o.range)return[];const S=o.range.map(T=>Je(T).locale(r.value)),[$,k]=S;return $.isAfter(k)?[]:$.isSame(k,"month")?m($,k):$.add(1,"month").month()!==k.month()?[]:m($,k)}),y=S=>{h.value=S},w=S=>{let $;S==="prev-month"?$=u.value:S==="next-month"?$=c.value:S==="prev-year"?$=d.value:S==="next-year"?$=f.value:$=i,!$.isSame(g.value,"day")&&y($)};return t({selectedDay:h,pickDay:y,selectDate:w,calculateValidatedDateRange:m}),(S,$)=>(C(),M("div",{class:_(b(s).b())},[D("div",{class:_(b(s).e("header"))},[ie(S.$slots,"header",{date:b(p)},()=>[D("div",{class:_(b(s).e("title"))},he(b(p)),3),b(v).length===0?(C(),M("div",{key:0,class:_(b(s).e("button-group"))},[Y(b(D1),null,{default:j(()=>[Y(b(Kn),{size:"small",onClick:$[0]||($[0]=k=>w("prev-month"))},{default:j(()=>[it(he(b(l)("el.datepicker.prevMonth")),1)]),_:1}),Y(b(Kn),{size:"small",onClick:$[1]||($[1]=k=>w("today"))},{default:j(()=>[it(he(b(l)("el.datepicker.today")),1)]),_:1}),Y(b(Kn),{size:"small",onClick:$[2]||($[2]=k=>w("next-month"))},{default:j(()=>[it(he(b(l)("el.datepicker.nextMonth")),1)]),_:1})]),_:1})],2)):G("v-if",!0)])],2),b(v).length===0?(C(),M("div",{key:0,class:_(b(s).e("body"))},[Y(zv,{date:b(g),"selected-day":b(h),onPick:y},fs({_:2},[S.$slots.dateCell?{name:"dateCell",fn:j(k=>[ie(S.$slots,"dateCell",to(ds(k)))])}:void 0]),1032,["date","selected-day"])],2)):(C(),M("div",{key:1,class:_(b(s).e("body"))},[(C(!0),M(Le,null,rt(b(v),(k,T)=>(C(),x(zv,{key:T,date:k[0],"selected-day":b(h),range:k,"hide-header":T!==0,onPick:y},fs({_:2},[S.$slots.dateCell?{name:"dateCell",fn:j(O=>[ie(S.$slots,"dateCell",to(ds(O)))])}:void 0]),1032,["date","selected-day","range","hide-header"]))),128))],2))],2))}}));var TV=ge(_V,[["__file","/home/runner/work/element-plus/element-plus/packages/components/calendar/src/calendar.vue"]]);const AV=ot(TV),NV=Ve({header:{type:String,default:""},bodyStyle:{type:$e([String,Object,Array]),default:""},shadow:{type:String,default:"always"}}),MV={name:"ElCard"},OV=te(Te(ne({},MV),{props:NV,setup(e){const t=we("card");return(n,o)=>(C(),M("div",{class:_([b(t).b(),b(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(C(),M("div",{key:0,class:_(b(t).e("header"))},[ie(n.$slots,"header",{},()=>[it(he(n.header),1)])],2)):G("v-if",!0),D("div",{class:_(b(t).e("body")),style:De(n.bodyStyle)},[ie(n.$slots,"default")],6)],2))}}));var IV=ge(OV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const DV=ot(IV),PV=Ve({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,default:""},indicator:{type:Boolean,default:!0},arrow:{type:String,default:"hover"},type:{type:String,default:""},loop:{type:Boolean,default:!0},direction:{type:String,default:"horizontal",validator(e){return["horizontal","vertical"].includes(e)}},pauseOnHover:{type:Boolean,default:!0}}),LV={change:(e,t)=>[e,t].every(ht)},RV=["onMouseenter","onMouseleave"],BV=["onMouseenter","onClick"],VV={key:0},FV={name:"ElCarousel"},HV=te(Te(ne({},FV),{props:PV,emits:LV,setup(e,{expose:t,emit:n}){const o=e,s=we("carousel"),l=300,r=A(-1),a=A(null),i=A(!1),u=A(),c=A([]),d=E(()=>o.arrow!=="never"&&!b(m)),f=E(()=>c.value.some(q=>q.props.label.toString().length>0)),p=E(()=>{const q=[s.b(),s.m(o.direction)];return b(g)&&q.push(s.m("card")),q}),h=E(()=>{const q=[s.e("indicators"),s.em("indicators",o.direction)];return f.value&&q.push(s.em("indicators","labels")),(o.indicatorPosition==="outside"||b(g))&&q.push(s.em("indicators","outside")),q}),g=E(()=>o.type==="card"),m=E(()=>o.direction==="vertical"),v=qs(q=>{k(q)},l,{trailing:!0}),y=qs(q=>{P(q)},l);function w(){a.value&&(clearInterval(a.value),a.value=null)}function S(){o.interval<=0||!o.autoplay||a.value||(a.value=setInterval(()=>$(),o.interval))}const $=()=>{r.valueEe.props.name===q);ae.length>0&&(q=c.value.indexOf(ae[0]))}if(q=Number(q),Number.isNaN(q)||q!==Math.floor(q))return;const Q=c.value.length,J=r.value;q<0?r.value=o.loop?Q-1:0:q>=Q?r.value=o.loop?0:Q-1:r.value=q,J===r.value&&T(J)}function T(q){c.value.forEach((Q,J)=>{Q.translateItem(J,r.value,q)})}function O(q){c.value.push(q)}function L(q){const Q=c.value.findIndex(J=>J.uid===q);Q!==-1&&(c.value.splice(Q,1),r.value===Q&&I())}function B(q,Q){var J,ae,Ee,Me;const Z=b(c),ve=Z.length;if(ve===0||!q.states.inStage)return!1;const Ce=Q+1,ke=Q-1,Oe=ve-1,We=Z[Oe].states.active,qe=Z[0].states.active,K=(ae=(J=Z[Ce])==null?void 0:J.states)==null?void 0:ae.active,X=(Me=(Ee=Z[ke])==null?void 0:Ee.states)==null?void 0:Me.active;return Q===Oe&&qe||K?"left":Q===0&&We||X?"right":!1}function V(){i.value=!0,o.pauseOnHover&&w()}function H(){i.value=!1,S()}function R(q){b(m)||c.value.forEach((Q,J)=>{q===B(Q,J)&&(Q.states.hover=!0)})}function z(){b(m)||c.value.forEach(q=>{q.states.hover=!1})}function W(q){r.value=q}function P(q){o.trigger==="hover"&&q!==r.value&&(r.value=q)}function N(){k(r.value-1)}function I(){k(r.value+1)}pe(()=>r.value,(q,Q)=>{T(Q),Q>-1&&n("change",q,Q)}),pe(()=>o.autoplay,q=>{q?S():w()}),pe(()=>o.loop,()=>{k(r.value)});const U=jt();return xe(async()=>{await ze(),U.value=ar(u.value,()=>{T()}),o.initialIndex=0&&(r.value=o.initialIndex),S()}),_t(()=>{w(),u.value&&U.value&&U.value.stop()}),st(q0,{root:u,isCardType:g,isVertical:m,items:c,loop:o.loop,addItem:O,removeItem:L,setActiveItem:k}),t({setActiveItem:k,prev:N,next:I}),(q,Q)=>(C(),M("div",{ref_key:"root",ref:u,class:_(b(p)),onMouseenter:Ke(V,["stop"]),onMouseleave:Ke(H,["stop"])},[D("div",{class:_(b(s).e("container")),style:De({height:q.height})},[b(d)?(C(),x(zt,{key:0,name:"carousel-arrow-left"},{default:j(()=>[Ge(D("button",{type:"button",class:_([b(s).e("arrow"),b(s).em("arrow","left")]),onMouseenter:Q[0]||(Q[0]=J=>R("left")),onMouseleave:z,onClick:Q[1]||(Q[1]=Ke(J=>b(v)(r.value-1),["stop"]))},[Y(b(je),null,{default:j(()=>[Y(b(pl))]),_:1})],34),[[pt,(q.arrow==="always"||i.value)&&(o.loop||r.value>0)]])]),_:1})):G("v-if",!0),b(d)?(C(),x(zt,{key:1,name:"carousel-arrow-right"},{default:j(()=>[Ge(D("button",{type:"button",class:_([b(s).e("arrow"),b(s).em("arrow","right")]),onMouseenter:Q[2]||(Q[2]=J=>R("right")),onMouseleave:z,onClick:Q[3]||(Q[3]=Ke(J=>b(v)(r.value+1),["stop"]))},[Y(b(je),null,{default:j(()=>[Y(b(Jn))]),_:1})],34),[[pt,(q.arrow==="always"||i.value)&&(o.loop||r.value(C(),M("li",{key:ae,class:_([b(s).e("indicator"),b(s).em("indicator",q.direction),b(s).is("active",ae===r.value)]),onMouseenter:Ee=>b(y)(ae),onClick:Ke(Ee=>W(ae),["stop"])},[D("button",{class:_(b(s).e("button"))},[b(f)?(C(),M("span",VV,he(J.props.label),1)):G("v-if",!0)],2)],42,BV))),128))],2)):G("v-if",!0)],42,RV))}}));var zV=ge(HV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel.vue"]]);const KV=Ve({name:{type:String,default:""},label:{type:[String,Number],default:""}}),WV={name:"ElCarouselItem"},jV=te(Te(ne({},WV),{props:KV,setup(e){const t=e,n=we("carousel"),o=Ne(q0),s=nt(),l=.83,r=A(!1),a=A(0),i=A(1),u=A(!1),c=A(!1),d=A(!1),f=A(!1),{isCardType:p,isVertical:h}=o,g=E(()=>{const k=`${`translate${b(h)?"Y":"X"}`}(${b(a)}px)`,T=`scale(${b(i)})`;return{transform:[k,T].join(" ")}});function m($,k,T){const O=T-1,L=k-1,B=k+1,V=T/2;return k===0&&$===O?-1:k===O&&$===0?T:$=V?T+1:$>B&&$-k>=V?-2:$}function v($,k){var T;const O=((T=o.root.value)==null?void 0:T.offsetWidth)||0;return d.value?O*((2-l)*($-k)+1)/4:${var O;const L=b(p),B=(O=o.items.value.length)!=null?O:Number.NaN,V=$===k;!L&&!Cn(T)&&(f.value=V||$===T),!V&&B>2&&o.loop&&($=m($,k,B));const H=b(h);u.value=V,L?(d.value=Math.round(Math.abs($-k))<=1,a.value=v($,k),i.value=b(u)?1:l):a.value=y($,k,H),c.value=!0};function S(){if(o&&b(p)){const $=o.items.value.findIndex(({uid:k})=>k===s.uid);o.setActiveItem($)}}return xe(()=>{o.addItem({props:t,states:yt({hover:r,translate:a,scale:i,active:u,ready:c,inStage:d,animating:f}),uid:s.uid,translateItem:w})}),ka(()=>{o.removeItem(s.uid)}),($,k)=>Ge((C(),M("div",{class:_([b(n).e("item"),b(n).is("active",u.value),b(n).is("in-stage",d.value),b(n).is("hover",r.value),b(n).is("animating",f.value),{[b(n).em("item","card")]:b(p)}]),style:De(b(g)),onClick:S},[b(p)?Ge((C(),M("div",{key:0,class:_(b(n).e("mask"))},null,2)),[[pt,!u.value]]):G("v-if",!0),ie($.$slots,"default")],6)),[[pt,c.value]])}}));var ew=ge(jV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel-item.vue"]]);const YV=ot(zV,{CarouselItem:ew}),UV=Rt(ew),qV={modelValue:{type:[Boolean,Number,String],default:()=>{}},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},tabindex:[String,Number],size:String},pr=()=>{const e=Ne(Dn,{}),t=Ne(Un,{}),n=Ne("CheckboxGroup",{}),o=E(()=>n&&(n==null?void 0:n.name)==="ElCheckboxGroup"),s=E(()=>t.size);return{isGroup:o,checkboxGroup:n,elForm:e,elFormItemSize:s,elFormItem:t}},GV=e=>{const t=A(!1),{emit:n}=nt(),{isGroup:o,checkboxGroup:s}=pr(),l=A(!1);return{model:E({get(){var a,i;return o.value?(a=s.modelValue)==null?void 0:a.value:(i=e.modelValue)!=null?i:t.value},set(a){var i;o.value&&Array.isArray(a)?(l.value=s.max!==void 0&&a.length>s.max.value,l.value===!1&&((i=s==null?void 0:s.changeEvent)==null||i.call(s,a))):(n(tt,a),t.value=a)}}),isLimitExceeded:l}},XV=(e,{model:t})=>{const{isGroup:n,checkboxGroup:o}=pr(),s=A(!1),l=Wt(o==null?void 0:o.checkboxGroupSize,{prop:!0}),r=E(()=>{const i=t.value;return wa(i)==="[object Boolean]"?i:Array.isArray(i)?i.includes(e.label):i!=null?i===e.trueLabel:!!i}),a=Wt(E(()=>{var i;return n.value?(i=o==null?void 0:o.checkboxGroupSize)==null?void 0:i.value:void 0}));return{isChecked:r,focus:s,size:l,checkboxSize:a}},JV=(e,{model:t,isChecked:n})=>{const{elForm:o,isGroup:s,checkboxGroup:l}=pr(),r=E(()=>{var i,u;const c=(i=l.max)==null?void 0:i.value,d=(u=l.min)==null?void 0:u.value;return!!(c||d)&&t.value.length>=c&&!n.value||t.value.length<=d&&n.value});return{isDisabled:E(()=>{var i,u;const c=e.disabled||o.disabled;return(u=s.value?((i=l.disabled)==null?void 0:i.value)||c||r.value:e.disabled||o.disabled)!=null?u:!1}),isLimitDisabled:r}},ZV=(e,{model:t})=>{function n(){Array.isArray(t.value)&&!t.value.includes(e.label)?t.value.push(e.label):t.value=e.trueLabel||!0}e.checked&&n()},QV=(e,{isLimitExceeded:t})=>{const{elFormItem:n}=pr(),{emit:o}=nt();function s(l){var r,a;if(t.value)return;const u=l.target.checked?(r=e.trueLabel)!=null?r:!0:(a=e.falseLabel)!=null?a:!1;o("change",u,l)}return pe(()=>e.modelValue,()=>{var l;(l=n.validate)==null||l.call(n,"change").catch(r=>void 0)}),{handleChange:s}},tw=e=>{const{model:t,isLimitExceeded:n}=GV(e),{focus:o,size:s,isChecked:l,checkboxSize:r}=XV(e,{model:t}),{isDisabled:a}=JV(e,{model:t,isChecked:l}),{handleChange:i}=QV(e,{isLimitExceeded:n});return ZV(e,{model:t}),{isChecked:l,isDisabled:a,checkboxSize:r,model:t,handleChange:i,focus:o,size:s}},xV=te({name:"ElCheckbox",props:{modelValue:{type:[Number,String,Boolean],default:()=>{}},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:{type:String,validator:On},tabindex:[String,Number]},emits:[tt,"change"],setup(e){const t=we("checkbox");return ne({ns:t},tw(e))}}),e5=["id","aria-controls"],t5=["tabindex","role","aria-checked"],n5=["aria-hidden","name","tabindex","disabled","true-value","false-value"],o5=["aria-hidden","disabled","value","name","tabindex"];function s5(e,t,n,o,s,l){return C(),M("label",{id:e.id,class:_([e.ns.b(),e.ns.m(e.checkboxSize),e.ns.is("disabled",e.isDisabled),e.ns.is("bordered",e.border),e.ns.is("checked",e.isChecked)]),"aria-controls":e.indeterminate?e.controls:null},[D("span",{class:_([e.ns.e("input"),e.ns.is("disabled",e.isDisabled),e.ns.is("checked",e.isChecked),e.ns.is("indeterminate",e.indeterminate),e.ns.is("focus",e.focus)]),tabindex:e.indeterminate?0:void 0,role:e.indeterminate?"checkbox":void 0,"aria-checked":e.indeterminate?"mixed":!1},[D("span",{class:_(e.ns.e("inner"))},null,2),e.trueLabel||e.falseLabel?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[0]||(t[0]=r=>e.model=r),class:_(e.ns.e("original")),type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel,onChange:t[1]||(t[1]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[2]||(t[2]=r=>e.focus=!0),onBlur:t[3]||(t[3]=r=>e.focus=!1)},null,42,n5)),[[Ui,e.model]]):Ge((C(),M("input",{key:1,"onUpdate:modelValue":t[4]||(t[4]=r=>e.model=r),class:_(e.ns.e("original")),type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,value:e.label,name:e.name,tabindex:e.tabindex,onChange:t[5]||(t[5]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[6]||(t[6]=r=>e.focus=!0),onBlur:t[7]||(t[7]=r=>e.focus=!1)},null,42,o5)),[[Ui,e.model]])],10,t5),e.$slots.default||e.label?(C(),M("span",{key:0,class:_(e.ns.e("label"))},[ie(e.$slots,"default"),e.$slots.default?G("v-if",!0):(C(),M(Le,{key:0},[it(he(e.label),1)],2112))],2)):G("v-if",!0)],10,e5)}var l5=ge(xV,[["render",s5],["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox.vue"]]);const r5=te({name:"ElCheckboxButton",props:qV,emits:[tt,"change"],setup(e){const{focus:t,isChecked:n,isDisabled:o,size:s,model:l,handleChange:r}=tw(e),{checkboxGroup:a}=pr(),i=we("checkbox"),u=E(()=>{var c,d,f,p;const h=(d=(c=a==null?void 0:a.fill)==null?void 0:c.value)!=null?d:"";return{backgroundColor:h,borderColor:h,color:(p=(f=a==null?void 0:a.textColor)==null?void 0:f.value)!=null?p:"",boxShadow:h?`-1px 0 0 0 ${h}`:null}});return{focus:t,isChecked:n,isDisabled:o,model:l,handleChange:r,activeStyle:u,size:s,ns:i}}}),a5=["aria-checked","aria-disabled"],i5=["name","tabindex","disabled","true-value","false-value"],u5=["name","tabindex","disabled","value"];function c5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b("button"),e.ns.bm("button",e.size),e.ns.is("disabled",e.isDisabled),e.ns.is("checked",e.isChecked),e.ns.is("focus",e.focus)]),role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled},[e.trueLabel||e.falseLabel?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[0]||(t[0]=r=>e.model=r),class:_(e.ns.be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel,onChange:t[1]||(t[1]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[2]||(t[2]=r=>e.focus=!0),onBlur:t[3]||(t[3]=r=>e.focus=!1)},null,42,i5)),[[Ui,e.model]]):Ge((C(),M("input",{key:1,"onUpdate:modelValue":t[4]||(t[4]=r=>e.model=r),class:_(e.ns.be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,value:e.label,onChange:t[5]||(t[5]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[6]||(t[6]=r=>e.focus=!0),onBlur:t[7]||(t[7]=r=>e.focus=!1)},null,42,u5)),[[Ui,e.model]]),e.$slots.default||e.label?(C(),M("span",{key:2,class:_(e.ns.be("button","inner")),style:De(e.isChecked?e.activeStyle:null)},[ie(e.$slots,"default",{},()=>[it(he(e.label),1)])],6)):G("v-if",!0)],10,a5)}var nw=ge(r5,[["render",c5],["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-button.vue"]]);const d5=te({name:"ElCheckboxGroup",props:{modelValue:{type:Array,default:()=>[]},disabled:Boolean,min:{type:Number,default:void 0},max:{type:Number,default:void 0},size:{type:String,validator:On},fill:{type:String,default:void 0},textColor:{type:String,default:void 0},tag:{type:String,default:"div"}},emits:[tt,"change"],setup(e,{emit:t,slots:n}){const{elFormItem:o}=pr(),s=Wt(),l=we("checkbox"),r=i=>{t(tt,i),ze(()=>{t("change",i)})},a=E({get(){return e.modelValue},set(i){r(i)}});return st("CheckboxGroup",Te(ne({name:"ElCheckboxGroup",modelValue:a},Ut(e)),{checkboxGroupSize:s,changeEvent:r})),pe(()=>e.modelValue,()=>{var i;(i=o.validate)==null||i.call(o,"change").catch(u=>void 0)}),()=>Pe(e.tag,{class:l.b("group"),role:"group","aria-label":"checkbox-group"},[ie(n,"default")])}});var ow=ge(d5,[["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-group.vue"]]);const ao=ot(l5,{CheckboxButton:nw,CheckboxGroup:ow}),f5=Rt(nw),sw=Rt(ow),lw=Ve({size:Hu,disabled:Boolean,label:{type:[String,Number,Boolean],default:""}}),p5=Ve(Te(ne({},lw),{modelValue:{type:[String,Number,Boolean],default:""},name:{type:String,default:""},border:Boolean})),rw={[tt]:e=>Qe(e)||ht(e)||en(e),change:e=>Qe(e)||ht(e)||en(e)},aw=(e,t)=>{const n=A(),o=Ne(Q0,void 0),s=E(()=>!!o),l=E({get(){return s.value?o.modelValue:e.modelValue},set(c){s.value?o.changeEvent(c):t(tt,c),n.value.checked=e.modelValue===e.label}}),r=Wt(E(()=>o==null?void 0:o.size)),a=hl(E(()=>o==null?void 0:o.disabled)),i=A(!1),u=E(()=>a.value||s.value&&l.value!==e.label?-1:0);return{radioRef:n,isGroup:s,radioGroup:o,focus:i,size:r,disabled:a,tabIndex:u,modelValue:l}},h5=te({name:"ElRadio",props:p5,emits:rw,setup(e,{emit:t}){const n=we("radio"),{radioRef:o,isGroup:s,focus:l,size:r,disabled:a,tabIndex:i,modelValue:u}=aw(e,t);function c(){ze(()=>t("change",u.value))}return{ns:n,focus:l,isGroup:s,modelValue:u,tabIndex:i,size:r,disabled:a,radioRef:o,handleChange:c}}}),m5=["aria-checked","aria-disabled","tabindex"],v5=["value","name","disabled"];function g5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b(),e.ns.is("disabled",e.disabled),e.ns.is("focus",e.focus),e.ns.is("bordered",e.border),e.ns.is("checked",e.modelValue===e.label),e.ns.m(e.size)]),role:"radio","aria-checked":e.modelValue===e.label,"aria-disabled":e.disabled,tabindex:e.tabIndex,onKeydown:t[5]||(t[5]=lt(Ke(r=>e.modelValue=e.disabled?e.modelValue:e.label,["stop","prevent"]),["space"]))},[D("span",{class:_([e.ns.e("input"),e.ns.is("disabled",e.disabled),e.ns.is("checked",e.modelValue===e.label)])},[D("span",{class:_(e.ns.e("inner"))},null,2),Ge(D("input",{ref:"radioRef","onUpdate:modelValue":t[0]||(t[0]=r=>e.modelValue=r),class:_(e.ns.e("original")),value:e.label,type:"radio","aria-hidden":"true",name:e.name,disabled:e.disabled,tabindex:"-1",onFocus:t[1]||(t[1]=r=>e.focus=!0),onBlur:t[2]||(t[2]=r=>e.focus=!1),onChange:t[3]||(t[3]=(...r)=>e.handleChange&&e.handleChange(...r))},null,42,v5),[[Gy,e.modelValue]])],2),D("span",{class:_(e.ns.e("label")),onKeydown:t[4]||(t[4]=Ke(()=>{},["stop"]))},[ie(e.$slots,"default",{},()=>[it(he(e.label),1)])],34)],42,m5)}var b5=ge(h5,[["render",g5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);const y5=Ve(Te(ne({},lw),{name:{type:String,default:""}})),w5=te({name:"ElRadioButton",props:y5,setup(e,{emit:t}){const n=we("radio"),{radioRef:o,isGroup:s,focus:l,size:r,disabled:a,tabIndex:i,modelValue:u,radioGroup:c}=aw(e,t),d=E(()=>({backgroundColor:(c==null?void 0:c.fill)||"",borderColor:(c==null?void 0:c.fill)||"",boxShadow:c!=null&&c.fill?`-1px 0 0 0 ${c.fill}`:"",color:(c==null?void 0:c.textColor)||""}));return{ns:n,isGroup:s,size:r,disabled:a,tabIndex:i,modelValue:u,focus:l,activeStyle:d,radioRef:o}}}),C5=["aria-checked","aria-disabled","tabindex"],$5=["value","name","disabled"];function k5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b("button"),e.ns.is("active",e.modelValue===e.label),e.ns.is("disabled",e.disabled),e.ns.is("focus",e.focus),e.ns.bm("button",e.size)]),role:"radio","aria-checked":e.modelValue===e.label,"aria-disabled":e.disabled,tabindex:e.tabIndex,onKeydown:t[4]||(t[4]=lt(Ke(r=>e.modelValue=e.disabled?e.modelValue:e.label,["stop","prevent"]),["space"]))},[Ge(D("input",{ref:"radioRef","onUpdate:modelValue":t[0]||(t[0]=r=>e.modelValue=r),class:_(e.ns.be("button","original-radio")),value:e.label,type:"radio",name:e.name,disabled:e.disabled,tabindex:"-1",onFocus:t[1]||(t[1]=r=>e.focus=!0),onBlur:t[2]||(t[2]=r=>e.focus=!1)},null,42,$5),[[Gy,e.modelValue]]),D("span",{class:_(e.ns.be("button","inner")),style:De(e.modelValue===e.label?e.activeStyle:{}),onKeydown:t[3]||(t[3]=Ke(()=>{},["stop"]))},[ie(e.$slots,"default",{},()=>[it(he(e.label),1)])],38)],42,C5)}var iw=ge(w5,[["render",k5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);const S5=Ve({size:Hu,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:""},fill:{type:String,default:""},textColor:{type:String,default:""}}),E5=rw,_5=te({name:"ElRadioGroup",props:S5,emits:E5,setup(e,t){const n=we("radio"),o=A(),{formItem:s}=dr(),l=a=>{t.emit(tt,a),ze(()=>t.emit("change",a))},r=a=>{if(!o.value)return;const i=a.target,u=i.nodeName==="INPUT"?"[type=radio]":"[role=radio]",c=o.value.querySelectorAll(u),d=c.length,f=Array.from(c).indexOf(i),p=o.value.querySelectorAll("[role=radio]");let h=null;switch(a.code){case Ie.left:case Ie.up:a.stopPropagation(),a.preventDefault(),h=f===0?d-1:f-1;break;case Ie.right:case Ie.down:a.stopPropagation(),a.preventDefault(),h=f===d-1?0:f+1;break}h!==null&&(p[h].click(),p[h].focus())};return xe(()=>{const a=o.value.querySelectorAll("[type=radio]"),i=a[0];!Array.from(a).some(u=>u.checked)&&i&&(i.tabIndex=0)}),st(Q0,yt(Te(ne({},Ut(e)),{changeEvent:l}))),pe(()=>e.modelValue,()=>s==null?void 0:s.validate("change").catch(a=>void 0)),{ns:n,radioGroupRef:o,handleKeydown:r}}});function T5(e,t,n,o,s,l){return C(),M("div",{ref:"radioGroupRef",class:_(e.ns.b("group")),role:"radiogroup",onKeydown:t[0]||(t[0]=(...r)=>e.handleKeydown&&e.handleKeydown(...r))},[ie(e.$slots,"default")],34)}var uw=ge(_5,[["render",T5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);const cw=ot(b5,{RadioButton:iw,RadioGroup:uw}),A5=Rt(uw),N5=Rt(iw);var M5=te({name:"NodeContent",setup(){return{ns:we("cascader-node")}},render(){const{ns:e}=this,{node:t,panel:n}=this.$parent,{data:o,label:s}=t,{renderLabelFn:l}=n;return Pe("span",{class:e.e("label")},l?l({node:t,data:o}):s)}});const vp=Symbol(),O5=te({name:"ElCascaderNode",components:{ElCheckbox:ao,ElRadio:cw,NodeContent:M5,ElIcon:je,Check:Jl,Loading:gs,ArrowRight:Jn},props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=Ne(vp),o=we("cascader-node"),s=E(()=>n.isHoverMenu),l=E(()=>n.config.multiple),r=E(()=>n.config.checkStrictly),a=E(()=>{var k;return(k=n.checkedNodes[0])==null?void 0:k.uid}),i=E(()=>e.node.isDisabled),u=E(()=>e.node.isLeaf),c=E(()=>r.value&&!u.value||!i.value),d=E(()=>p(n.expandingNode)),f=E(()=>r.value&&n.checkedNodes.some(p)),p=k=>{var T;const{level:O,uid:L}=e.node;return((T=k==null?void 0:k.pathNodes[O-1])==null?void 0:T.uid)===L},h=()=>{d.value||n.expandNode(e.node)},g=k=>{const{node:T}=e;k!==T.checked&&n.handleCheckChange(T,k)},m=()=>{n.lazyLoad(e.node,()=>{u.value||h()})},v=k=>{!s.value||(y(),!u.value&&t("expand",k))},y=()=>{const{node:k}=e;!c.value||k.loading||(k.loaded?h():m())},w=()=>{s.value&&!u.value||(u.value&&!i.value&&!r.value&&!l.value?$(!0):y())},S=k=>{r.value?(g(k),e.node.loaded&&h()):$(k)},$=k=>{e.node.loaded?(g(k),!r.value&&h()):m()};return{panel:n,isHoverMenu:s,multiple:l,checkStrictly:r,checkedNodeId:a,isDisabled:i,isLeaf:u,expandable:c,inExpandingPath:d,inCheckedPath:f,ns:o,handleHoverExpand:v,handleExpand:y,handleClick:w,handleCheck:$,handleSelectCheck:S}}}),I5=["id","aria-haspopup","aria-owns","aria-expanded","tabindex"],D5=D("span",null,null,-1);function P5(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-radio"),i=le("check"),u=le("el-icon"),c=le("node-content"),d=le("loading"),f=le("arrow-right");return C(),M("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!e.isLeaf,"aria-owns":e.isLeaf?null:e.menuId,"aria-expanded":e.inExpandingPath,tabindex:e.expandable?-1:void 0,class:_([e.ns.b(),e.ns.is("selectable",e.checkStrictly),e.ns.is("active",e.node.checked),e.ns.is("disabled",!e.expandable),e.inExpandingPath&&"in-active-path",e.inCheckedPath&&"in-checked-path"]),onMouseenter:t[2]||(t[2]=(...p)=>e.handleHoverExpand&&e.handleHoverExpand(...p)),onFocus:t[3]||(t[3]=(...p)=>e.handleHoverExpand&&e.handleHoverExpand(...p)),onClick:t[4]||(t[4]=(...p)=>e.handleClick&&e.handleClick(...p))},[G(" prefix "),e.multiple?(C(),x(r,{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:e.isDisabled,onClick:t[0]||(t[0]=Ke(()=>{},["stop"])),"onUpdate:modelValue":e.handleSelectCheck},null,8,["model-value","indeterminate","disabled","onUpdate:modelValue"])):e.checkStrictly?(C(),x(a,{key:1,"model-value":e.checkedNodeId,label:e.node.uid,disabled:e.isDisabled,"onUpdate:modelValue":e.handleSelectCheck,onClick:t[1]||(t[1]=Ke(()=>{},["stop"]))},{default:j(()=>[G(` +*/const nB=function(e,t){if(e&&e.addEventListener){const n=function(o){const s=tB(o);t&&Reflect.apply(t,this,[o,s])};sp()?e.addEventListener("DOMMouseScroll",n):e.onmousewheel=n}},oB={beforeMount(e,t){nB(e,t.value)}},sB={beforeMount(e,t){e._handleResize=()=>{var n;e&&((n=t.value)==null||n.call(t,e))},ar(e,e._handleResize)},beforeUnmount(e){ir(e,e._handleResize)}},yc=(e,t,n)=>{const o=[],s=t&&n();for(let l=0;le.map((t,n)=>t||n).filter(t=>t!==!0),Z1=(e,t,n)=>({getHoursList:(r,a)=>yc(24,e,()=>e(r,a)),getMinutesList:(r,a,i)=>yc(60,t,()=>t(r,a,i)),getSecondsList:(r,a,i,u)=>yc(60,n,()=>n(r,a,i,u))}),J1=(e,t,n)=>{const{getHoursList:o,getMinutesList:s,getSecondsList:l}=Z1(e,t,n);return{getAvailableHours:(u,c)=>wc(o(u,c)),getAvailableMinutes:(u,c,d)=>wc(s(u,c,d)),getAvailableSeconds:(u,c,d,f)=>wc(l(u,c,d,f))}},Q1=e=>{const t=A(e.parsedValue);return pe(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},lB=ee({directives:{repeatClick:z1},components:{ElScrollbar:Uo,ElIcon:je,ArrowUp:Ta,ArrowDown:dl},props:{role:{type:String,required:!0},spinnerDate:{type:Object,required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""},disabledHours:{type:Function},disabledMinutes:{type:Function},disabledSeconds:{type:Function}},emits:["change","select-range","set-option"],setup(e,t){const n=we("time");let o=!1;const s=hn(J=>{o=!1,L(J)},200),l=A(null),r=A(null),a=A(null),i=A(null),u={hours:r,minutes:a,seconds:i},c=E(()=>{const J=["hours","minutes","seconds"];return e.showSeconds?J:J.slice(0,2)}),d=E(()=>e.spinnerDate.hour()),f=E(()=>e.spinnerDate.minute()),p=E(()=>e.spinnerDate.second()),h=E(()=>({hours:d,minutes:f,seconds:p})),g=E(()=>ae(e.role)),m=E(()=>Ee(d.value,e.role)),v=E(()=>Me(d.value,f.value,e.role)),b=E(()=>({hours:g,minutes:m,seconds:v})),w=E(()=>{const J=d.value;return[J>0?J-1:void 0,J,J<23?J+1:void 0]}),S=E(()=>{const J=f.value;return[J>0?J-1:void 0,J,J<59?J+1:void 0]}),$=E(()=>{const J=p.value;return[J>0?J-1:void 0,J,J<59?J+1:void 0]}),k=E(()=>({hours:w,minutes:S,seconds:$})),T=J=>{if(!!!e.amPmMode)return"";const Ce=e.amPmMode==="A";let ke=J<12?" am":" pm";return Ce&&(ke=ke.toUpperCase()),ke},O=J=>{J==="hours"?t.emit("select-range",0,2):J==="minutes"?t.emit("select-range",3,5):J==="seconds"&&t.emit("select-range",6,8),l.value=J},L=J=>{H(J,h.value[J].value)},V=()=>{L("hours"),L("minutes"),L("seconds")},B=J=>J.querySelector(`.${n.namespace.value}-scrollbar__wrap`),H=(J,ve)=>{if(e.arrowControl)return;const Ce=u[J];Ce&&Ce.$el&&(B(Ce.$el).scrollTop=Math.max(0,ve*R(J)))},R=J=>u[J].$el.querySelector("li").offsetHeight,z=()=>{P(1)},W=()=>{P(-1)},P=J=>{l.value||O("hours");const ve=l.value;let Ce=h.value[ve].value;const ke=l.value==="hours"?24:60;Ce=(Ce+J+ke)%ke,N(ve,Ce),H(ve,Ce),ze(()=>O(l.value))},N=(J,ve)=>{if(!b.value[J].value[ve])switch(J){case"hours":t.emit("change",e.spinnerDate.hour(ve).minute(f.value).second(p.value));break;case"minutes":t.emit("change",e.spinnerDate.hour(d.value).minute(ve).second(p.value));break;case"seconds":t.emit("change",e.spinnerDate.hour(d.value).minute(f.value).second(ve));break}},I=(J,{value:ve,disabled:Ce})=>{Ce||(N(J,ve),O(J),H(J,ve))},U=J=>{o=!0,s(J);const ve=Math.min(Math.round((B(u[J].$el).scrollTop-(q(J)*.5-10)/R(J)+3)/R(J)),J==="hours"?23:59);N(J,ve)},q=J=>u[J].$el.offsetHeight,Q=()=>{const J=ve=>{u[ve]&&u[ve].$el&&(B(u[ve].$el).onscroll=()=>{U(ve)})};J("hours"),J("minutes"),J("seconds")};xe(()=>{ze(()=>{!e.arrowControl&&Q(),V(),e.role==="start"&&O("hours")})});const Z=(J,ve)=>{u[ve]=J};t.emit("set-option",[`${e.role}_scrollDown`,P]),t.emit("set-option",[`${e.role}_emitSelectRange`,O]);const{getHoursList:ae,getMinutesList:Ee,getSecondsList:Me}=Z1(e.disabledHours,e.disabledMinutes,e.disabledSeconds);return pe(()=>e.spinnerDate,()=>{o||V()}),{ns:n,setRef:Z,spinnerItems:c,currentScrollbar:l,hours:d,minutes:f,seconds:p,hoursList:g,minutesList:m,arrowHourList:w,arrowMinuteList:S,arrowSecondList:$,getAmPmFlag:T,emitSelectRange:O,adjustCurrentSpinner:L,typeItemHeight:R,listHoursRef:r,listMinutesRef:a,listSecondsRef:i,onIncreaseClick:z,onDecreaseClick:W,handleClick:I,secondsList:v,timePartsMap:h,arrowListMap:k,listMap:b}}}),rB=["onClick"],aB=["onMouseenter"];function iB(e,t,n,o,s,l){const r=le("el-scrollbar"),a=le("arrow-up"),i=le("el-icon"),u=le("arrow-down"),c=Mn("repeat-click");return C(),M("div",{class:_([e.ns.b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?G("v-if",!0):(C(!0),M(Le,{key:0},it(e.spinnerItems,d=>(C(),x(r,{key:d,ref_for:!0,ref:f=>e.setRef(f,d),class:_(e.ns.be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":e.ns.be("spinner","list"),noresize:"",tag:"ul",onMouseenter:f=>e.emitSelectRange(d),onMousemove:f=>e.adjustCurrentSpinner(d)},{default:j(()=>[(C(!0),M(Le,null,it(e.listMap[d].value,(f,p)=>(C(),M("li",{key:p,class:_([e.ns.be("spinner","item"),e.ns.is("active",p===e.timePartsMap[d].value),e.ns.is("disabled",f)]),onClick:h=>e.handleClick(d,{value:p,disabled:f})},[d==="hours"?(C(),M(Le,{key:0},[at(he(("0"+(e.amPmMode?p%12||12:p)).slice(-2))+he(e.getAmPmFlag(p)),1)],2112)):(C(),M(Le,{key:1},[at(he(("0"+p).slice(-2)),1)],2112))],10,rB))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),e.arrowControl?(C(!0),M(Le,{key:1},it(e.spinnerItems,d=>(C(),M("div",{key:d,class:_([e.ns.be("spinner","wrapper"),e.ns.is("arrow")]),onMouseenter:f=>e.emitSelectRange(d)},[Ge((C(),x(i,{class:_(["arrow-up",e.ns.be("spinner","arrow")])},{default:j(()=>[Y(a)]),_:1},8,["class"])),[[c,e.onDecreaseClick]]),Ge((C(),x(i,{class:_(["arrow-down",e.ns.be("spinner","arrow")])},{default:j(()=>[Y(u)]),_:1},8,["class"])),[[c,e.onIncreaseClick]]),D("ul",{class:_(e.ns.be("spinner","list"))},[(C(!0),M(Le,null,it(e.arrowListMap[d].value,(f,p)=>(C(),M("li",{key:p,class:_([e.ns.be("spinner","item"),e.ns.is("active",f===e.timePartsMap[d].value),e.ns.is("disabled",e.listMap[d].value[f])])},[typeof f=="number"?(C(),M(Le,{key:0},[d==="hours"?(C(),M(Le,{key:0},[at(he(("0"+(e.amPmMode?f%12||12:f)).slice(-2))+he(e.getAmPmFlag(f)),1)],2112)):(C(),M(Le,{key:1},[at(he(("0"+f).slice(-2)),1)],2112))],2112)):G("v-if",!0)],2))),128))],2)],42,aB))),128)):G("v-if",!0)],2)}var x1=ge(lB,[["render",iB],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"]]);const uB=ee({components:{TimeSpinner:x1},props:{visible:Boolean,actualVisible:{type:Boolean,default:void 0},datetimeRole:{type:String},parsedValue:{type:[Object,String]},format:{type:String,default:""}},emits:["pick","select-range","set-picker-option"],setup(e,t){const n=we("time"),{t:o,lang:s}=kt(),l=A([0,2]),r=Q1(e),a=E(()=>Cn(e.actualVisible)?`${n.namespace.value}-zoom-in-top`:""),i=E(()=>e.format.includes("ss")),u=E(()=>e.format.includes("A")?"A":e.format.includes("a")?"a":""),c=P=>{const N=Ze(P).locale(s.value),I=v(N);return N.isSame(I)},d=()=>{t.emit("pick",r.value,!1)},f=(P=!1,N=!1)=>{N||t.emit("pick",e.parsedValue,P)},p=P=>{if(!e.visible)return;const N=v(P).millisecond(0);t.emit("pick",N,!0)},h=(P,N)=>{t.emit("select-range",P,N),l.value=[P,N]},g=P=>{const N=[0,3].concat(i.value?[6]:[]),I=["hours","minutes"].concat(i.value?["seconds"]:[]),q=(N.indexOf(l.value[0])+P+N.length)%N.length;$.start_emitSelectRange(I[q])},m=P=>{const N=P.code;if(N===Ie.left||N===Ie.right){const I=N===Ie.left?-1:1;g(I),P.preventDefault();return}if(N===Ie.up||N===Ie.down){const I=N===Ie.up?-1:1;$.start_scrollDown(I),P.preventDefault();return}},v=P=>{const N={hour:R,minute:z,second:W};let I=P;return["hour","minute","second"].forEach(U=>{if(N[U]){let q;const Q=N[U];U==="minute"?q=Q(I.hour(),e.datetimeRole):U==="second"?q=Q(I.hour(),I.minute(),e.datetimeRole):q=Q(e.datetimeRole),q&&q.length&&!q.includes(I[U]())&&(I=I[U](q[0]))}}),I},b=P=>P?Ze(P,e.format).locale(s.value):null,w=P=>P?P.format(e.format):null,S=()=>Ze(H).locale(s.value);t.emit("set-picker-option",["isValidValue",c]),t.emit("set-picker-option",["formatToString",w]),t.emit("set-picker-option",["parseUserInput",b]),t.emit("set-picker-option",["handleKeydown",m]),t.emit("set-picker-option",["getRangeAvailableTime",v]),t.emit("set-picker-option",["getDefaultValue",S]);const $={},k=P=>{$[P[0]]=P[1]},T=Ne("EP_PICKER_BASE"),{arrowControl:O,disabledHours:L,disabledMinutes:V,disabledSeconds:B,defaultValue:H}=T.props,{getAvailableHours:R,getAvailableMinutes:z,getAvailableSeconds:W}=J1(L,V,B);return{ns:n,transitionName:a,arrowControl:O,onSetOption:k,t:o,handleConfirm:f,handleChange:p,setSelectionRange:h,amPmMode:u,showSeconds:i,handleCancel:d,disabledHours:L,disabledMinutes:V,disabledSeconds:B}}});function cB(e,t,n,o,s,l){const r=le("time-spinner");return C(),x(zt,{name:e.transitionName},{default:j(()=>[e.actualVisible||e.visible?(C(),M("div",{key:0,class:_(e.ns.b("panel"))},[D("div",{class:_([e.ns.be("panel","content"),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":e.arrowControl,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"spinner-date":e.parsedValue,"disabled-hours":e.disabledHours,"disabled-minutes":e.disabledMinutes,"disabled-seconds":e.disabledSeconds,onChange:e.handleChange,onSetOption:e.onSetOption,onSelectRange:e.setSelectionRange},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2),D("div",{class:_(e.ns.be("panel","footer"))},[D("button",{type:"button",class:_([e.ns.be("panel","btn"),"cancel"]),onClick:t[0]||(t[0]=(...a)=>e.handleCancel&&e.handleCancel(...a))},he(e.t("el.datepicker.cancel")),3),D("button",{type:"button",class:_([e.ns.be("panel","btn"),"confirm"]),onClick:t[1]||(t[1]=a=>e.handleConfirm())},he(e.t("el.datepicker.confirm")),3)],2)],2)):G("v-if",!0)]),_:1},8,["name"])}var hp=ge(uB,[["render",cB],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"]]);const bl=(e,t)=>{const n=[];for(let o=e;o<=t;o++)n.push(o);return n},dB=ee({components:{TimeSpinner:x1},props:{visible:Boolean,actualVisible:Boolean,parsedValue:{type:[Array]},format:{type:String,default:""}},emits:["pick","select-range","set-picker-option"],setup(e,t){const{t:n,lang:o}=kt(),s=we("time"),l=we("picker"),r=E(()=>e.parsedValue[0]),a=E(()=>e.parsedValue[1]),i=Q1(e),u=()=>{t.emit("pick",i.value,!1)},c=E(()=>e.format.includes("ss")),d=E(()=>e.format.includes("A")?"A":e.format.includes("a")?"a":""),f=A([]),p=A([]),h=(ke=!1)=>{t.emit("pick",[r.value,a.value],ke)},g=ke=>{b(ke.millisecond(0),a.value)},m=ke=>{b(r.value,ke.millisecond(0))},v=ke=>{const Oe=ke.map(qe=>Ze(qe).locale(o.value)),We=R(Oe);return Oe[0].isSame(We[0])&&Oe[1].isSame(We[1])},b=(ke,Oe)=>{t.emit("pick",[ke,Oe],!0)},w=E(()=>r.value>a.value),S=A([0,2]),$=(ke,Oe)=>{t.emit("select-range",ke,Oe,"min"),S.value=[ke,Oe]},k=E(()=>c.value?11:8),T=(ke,Oe)=>{t.emit("select-range",ke,Oe,"max"),S.value=[ke+k.value,Oe+k.value]},O=ke=>{const Oe=c.value?[0,3,6,11,14,17]:[0,3,8,11],We=["hours","minutes"].concat(c.value?["seconds"]:[]),K=(Oe.indexOf(S.value[0])+ke+Oe.length)%Oe.length,X=Oe.length/2;K{const Oe=ke.code;if(Oe===Ie.left||Oe===Ie.right){const We=Oe===Ie.left?-1:1;O(We),ke.preventDefault();return}if(Oe===Ie.up||Oe===Ie.down){const We=Oe===Ie.up?-1:1,qe=S.value[0]{const We=Me?Me(ke):[],qe=ke==="start",X=(Oe||(qe?a.value:r.value)).hour(),fe=qe?bl(X+1,23):bl(0,X-1);return dc(We,fe)},B=(ke,Oe,We)=>{const qe=J?J(ke,Oe):[],K=Oe==="start",X=We||(K?a.value:r.value),fe=X.hour();if(ke!==fe)return qe;const ye=X.minute(),be=K?bl(ye+1,59):bl(0,ye-1);return dc(qe,be)},H=(ke,Oe,We,qe)=>{const K=ve?ve(ke,Oe,We):[],X=We==="start",fe=qe||(X?a.value:r.value),ye=fe.hour(),be=fe.minute();if(ke!==ye||Oe!==be)return K;const _e=fe.second(),re=X?bl(_e+1,59):bl(0,_e-1);return dc(K,re)},R=ke=>ke.map((Oe,We)=>N(ke[0],ke[1],We===0?"start":"end")),{getAvailableHours:z,getAvailableMinutes:W,getAvailableSeconds:P}=J1(V,B,H),N=(ke,Oe,We)=>{const qe={hour:z,minute:W,second:P},K=We==="start";let X=K?ke:Oe;const fe=K?Oe:ke;return["hour","minute","second"].forEach(ye=>{if(qe[ye]){let be;const _e=qe[ye];if(ye==="minute"?be=_e(X.hour(),We,fe):ye==="second"?be=_e(X.hour(),X.minute(),We,fe):be=_e(We,fe),be&&be.length&&!be.includes(X[ye]())){const re=K?0:be.length-1;X=X[ye](be[re])}}}),X},I=ke=>ke?Array.isArray(ke)?ke.map(Oe=>Ze(Oe,e.format).locale(o.value)):Ze(ke,e.format).locale(o.value):null,U=ke=>ke?Array.isArray(ke)?ke.map(Oe=>Oe.format(e.format)):ke.format(e.format):null,q=()=>{if(Array.isArray(Ce))return Ce.map(Oe=>Ze(Oe).locale(o.value));const ke=Ze(Ce).locale(o.value);return[ke,ke.add(60,"m")]};t.emit("set-picker-option",["formatToString",U]),t.emit("set-picker-option",["parseUserInput",I]),t.emit("set-picker-option",["isValidValue",v]),t.emit("set-picker-option",["handleKeydown",L]),t.emit("set-picker-option",["getDefaultValue",q]),t.emit("set-picker-option",["getRangeAvailableTime",R]);const Q={},Z=ke=>{Q[ke[0]]=ke[1]},ae=Ne("EP_PICKER_BASE"),{arrowControl:Ee,disabledHours:Me,disabledMinutes:J,disabledSeconds:ve,defaultValue:Ce}=ae.props;return{nsTime:s,nsPicker:l,arrowControl:Ee,onSetOption:Z,setMaxSelectionRange:T,setMinSelectionRange:$,btnConfirmDisabled:w,handleCancel:u,handleConfirm:h,t:n,showSeconds:c,minDate:r,maxDate:a,amPmMode:d,handleMinChange:g,handleMaxChange:m,minSelectableRange:f,maxSelectableRange:p,disabledHours_:V,disabledMinutes_:B,disabledSeconds_:H}}}),fB=["disabled"];function pB(e,t,n,o,s,l){const r=le("time-spinner");return e.actualVisible?(C(),M("div",{key:0,class:_([e.nsTime.b("range-picker"),e.nsPicker.b("panel")])},[D("div",{class:_(e.nsTime.be("range-picker","content"))},[D("div",{class:_(e.nsTime.be("range-picker","cell"))},[D("div",{class:_(e.nsTime.be("range-picker","header"))},he(e.t("el.datepicker.startTime")),3),D("div",{class:_([e.nsTime.be("range-picker","body"),e.nsTime.be("panel","content"),e.nsTime.is("arrow",e.arrowControl),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"minSpinner",role:"start","show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,"spinner-date":e.minDate,"disabled-hours":e.disabledHours_,"disabled-minutes":e.disabledMinutes_,"disabled-seconds":e.disabledSeconds_,onChange:e.handleMinChange,onSetOption:e.onSetOption,onSelectRange:e.setMinSelectionRange},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2)],2),D("div",{class:_(e.nsTime.be("range-picker","cell"))},[D("div",{class:_(e.nsTime.be("range-picker","header"))},he(e.t("el.datepicker.endTime")),3),D("div",{class:_([e.nsTime.be("range-picker","body"),e.nsTime.be("panel","content"),e.nsTime.is("arrow",e.arrowControl),{"has-seconds":e.showSeconds}])},[Y(r,{ref:"maxSpinner",role:"end","show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,"spinner-date":e.maxDate,"disabled-hours":e.disabledHours_,"disabled-minutes":e.disabledMinutes_,"disabled-seconds":e.disabledSeconds_,onChange:e.handleMaxChange,onSetOption:e.onSetOption,onSelectRange:e.setMaxSelectionRange},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onChange","onSetOption","onSelectRange"])],2)],2)],2),D("div",{class:_(e.nsTime.be("panel","footer"))},[D("button",{type:"button",class:_([e.nsTime.be("panel","btn"),"cancel"]),onClick:t[0]||(t[0]=a=>e.handleCancel())},he(e.t("el.datepicker.cancel")),3),D("button",{type:"button",class:_([e.nsTime.be("panel","btn"),"confirm"]),disabled:e.btnConfirmDisabled,onClick:t[1]||(t[1]=a=>e.handleConfirm())},he(e.t("el.datepicker.confirm")),11,fB)],2)],2)):G("v-if",!0)}var hB=ge(dB,[["render",pB],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-range.vue"]]);Ze.extend(fp);var mB=ee({name:"ElTimePicker",install:null,props:Te(ne({},pp),{isRange:{type:Boolean,default:!1}}),emits:["update:modelValue"],setup(e,t){const n=A(null),o=e.isRange?"timerange":"time",s=e.isRange?hB:hp,l=Te(ne({},e),{focus:()=>{var r;(r=n.value)==null||r.handleFocus()},blur:()=>{var r;(r=n.value)==null||r.handleBlur()}});return st("ElPopperOptions",e.popperOptions),t.expose(l),()=>{var r;const a=(r=e.format)!=null?r:wd;return De(H1,Te(ne({},e),{format:a,type:o,ref:n,"onUpdate:modelValue":i=>t.emit("update:modelValue",i)}),{default:i=>De(s,i)})}}});const as=e=>Array.from(Array.from({length:e}).keys()),ew=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),tw=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),mi=mB;mi.install=e=>{e.component(mi.name,mi)};const vB=mi,gB=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return as(t).map((o,s)=>n-(t-s-1))},bB=e=>{const t=e.daysInMonth();return as(t).map((n,o)=>o+1)},yB=e=>as(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),wB=Be({selectedDay:{type:$e(Object)},range:{type:$e(Array)},date:{type:$e(Object),required:!0},hideHeader:{type:Boolean}}),CB={pick:e=>dt(e)},$B={key:0},kB=["onClick"],SB={name:"DateTable"},EB=ee(Te(ne({},SB),{props:wB,emits:CB,setup(e,{expose:t,emit:n}){const o=e;Ze.extend(B1);const{t:s,lang:l}=kt(),r=we("calendar-table"),a=we("calendar-day"),i=Ze().locale(l.value),u=i.$locale().weekStart||0,c=E(()=>!!o.range&&!!o.range.length),d=E(()=>{let v=[];if(c.value){const[b,w]=o.range,S=as(w.date()-b.date()+1).map(T=>({text:b.date()+T,type:"current"}));let $=S.length%7;$=$===0?0:7-$;const k=as($).map((T,O)=>({text:O+1,type:"next"}));v=S.concat(k)}else{const b=o.date.startOf("month").day()||7,w=gB(o.date,b-u).map(k=>({text:k,type:"prev"})),S=bB(o.date).map(k=>({text:k,type:"current"}));v=[...w,...S];const $=as(42-v.length).map((k,T)=>({text:T+1,type:"next"}));v=v.concat($)}return yB(v)}),f=E(()=>{const v=u;return v===0?pc.map(b=>s(`el.datepicker.weeks.${b}`)):pc.slice(v).concat(pc.slice(0,v)).map(b=>s(`el.datepicker.weeks.${b}`))}),p=(v,b)=>{switch(b){case"prev":return o.date.startOf("month").subtract(1,"month").date(v);case"next":return o.date.startOf("month").add(1,"month").date(v);case"current":return o.date.date(v)}},h=({text:v,type:b})=>{const w=[b];if(b==="current"){const S=p(v,b);S.isSame(o.selectedDay,"day")&&w.push(a.is("selected")),S.isSame(i,"day")&&w.push(a.is("today"))}return w},g=({text:v,type:b})=>{const w=p(v,b);n("pick",w)},m=({text:v,type:b})=>{const w=p(v,b);return{isSelected:w.isSame(o.selectedDay),type:`${b}-month`,day:w.format("YYYY-MM-DD"),date:w.toDate()}};return t({getFormattedDate:p}),(v,b)=>(C(),M("table",{class:_([y(r).b(),y(r).is("range",y(c))]),cellspacing:"0",cellpadding:"0"},[v.hideHeader?G("v-if",!0):(C(),M("thead",$B,[(C(!0),M(Le,null,it(y(f),w=>(C(),M("th",{key:w},he(w),1))),128))])),D("tbody",null,[(C(!0),M(Le,null,it(y(d),(w,S)=>(C(),M("tr",{key:S,class:_({[y(r).e("row")]:!0,[y(r).em("row","hide-border")]:S===0&&v.hideHeader})},[(C(!0),M(Le,null,it(w,($,k)=>(C(),M("td",{key:k,class:_(h($)),onClick:T=>g($)},[D("div",{class:_(y(a).b())},[ie(v.$slots,"dateCell",{data:m($)},()=>[D("span",null,he($.text),1)])],2)],10,kB))),128))],2))),128))])],2))}}));var Kv=ge(EB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/calendar/src/date-table.vue"]]);const _B=Be({modelValue:{type:Date},range:{type:$e(Array),validator:e=>Array.isArray(e)&&e.length===2&&e.every(t=>t instanceof Date)}}),TB={[tt]:e=>e instanceof Date,input:e=>e instanceof Date},AB={name:"ElCalendar"},NB=ee(Te(ne({},AB),{props:_B,emits:TB,setup(e,{expose:t,emit:n}){const o=e,s=we("calendar"),{t:l,lang:r}=kt(),a=A(),i=Ze().locale(r.value),u=E(()=>g.value.subtract(1,"month").date(1)),c=E(()=>g.value.add(1,"month").date(1)),d=E(()=>g.value.subtract(1,"year").date(1)),f=E(()=>g.value.add(1,"year").date(1)),p=E(()=>{const S=`el.datepicker.month${g.value.format("M")}`;return`${g.value.year()} ${l("el.datepicker.year")} ${l(S)}`}),h=E({get(){return o.modelValue?g.value:a.value},set(S){if(!S)return;a.value=S;const $=S.toDate();n("input",$),n("update:modelValue",$)}}),g=E(()=>o.modelValue?Ze(o.modelValue).locale(r.value):h.value?h.value:v.value.length?v.value[0][0]:i),m=(S,$)=>{const k=S.startOf("week"),T=$.endOf("week"),O=k.get("month"),L=T.get("month");if(O===L)return[[k,T]];if(O+1===L){const V=k.endOf("month"),B=T.startOf("month"),R=V.isSame(B,"week")?B.add(1,"week"):B;return[[k,V],[R.startOf("week"),T]]}else if(O+2===L){const V=k.endOf("month"),B=k.add(1,"month").startOf("month"),H=V.isSame(B,"week")?B.add(1,"week"):B,R=H.endOf("month"),z=T.startOf("month"),W=R.isSame(z,"week")?z.add(1,"week"):z;return[[k,V],[H.startOf("week"),R],[W.startOf("week"),T]]}else return[]},v=E(()=>{if(!o.range)return[];const S=o.range.map(T=>Ze(T).locale(r.value)),[$,k]=S;return $.isAfter(k)?[]:$.isSame(k,"month")?m($,k):$.add(1,"month").month()!==k.month()?[]:m($,k)}),b=S=>{h.value=S},w=S=>{let $;S==="prev-month"?$=u.value:S==="next-month"?$=c.value:S==="prev-year"?$=d.value:S==="next-year"?$=f.value:$=i,!$.isSame(g.value,"day")&&b($)};return t({selectedDay:h,pickDay:b,selectDate:w,calculateValidatedDateRange:m}),(S,$)=>(C(),M("div",{class:_(y(s).b())},[D("div",{class:_(y(s).e("header"))},[ie(S.$slots,"header",{date:y(p)},()=>[D("div",{class:_(y(s).e("title"))},he(y(p)),3),y(v).length===0?(C(),M("div",{key:0,class:_(y(s).e("button-group"))},[Y(y(L1),null,{default:j(()=>[Y(y(Kn),{size:"small",onClick:$[0]||($[0]=k=>w("prev-month"))},{default:j(()=>[at(he(y(l)("el.datepicker.prevMonth")),1)]),_:1}),Y(y(Kn),{size:"small",onClick:$[1]||($[1]=k=>w("today"))},{default:j(()=>[at(he(y(l)("el.datepicker.today")),1)]),_:1}),Y(y(Kn),{size:"small",onClick:$[2]||($[2]=k=>w("next-month"))},{default:j(()=>[at(he(y(l)("el.datepicker.nextMonth")),1)]),_:1})]),_:1})],2)):G("v-if",!0)])],2),y(v).length===0?(C(),M("div",{key:0,class:_(y(s).e("body"))},[Y(Kv,{date:y(g),"selected-day":y(h),onPick:b},fs({_:2},[S.$slots.dateCell?{name:"dateCell",fn:j(k=>[ie(S.$slots,"dateCell",to(ds(k)))])}:void 0]),1032,["date","selected-day"])],2)):(C(),M("div",{key:1,class:_(y(s).e("body"))},[(C(!0),M(Le,null,it(y(v),(k,T)=>(C(),x(Kv,{key:T,date:k[0],"selected-day":y(h),range:k,"hide-header":T!==0,onPick:b},fs({_:2},[S.$slots.dateCell?{name:"dateCell",fn:j(O=>[ie(S.$slots,"dateCell",to(ds(O)))])}:void 0]),1032,["date","selected-day","range","hide-header"]))),128))],2))],2))}}));var MB=ge(NB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/calendar/src/calendar.vue"]]);const OB=ot(MB),IB=Be({header:{type:String,default:""},bodyStyle:{type:$e([String,Object,Array]),default:""},shadow:{type:String,default:"always"}}),PB={name:"ElCard"},DB=ee(Te(ne({},PB),{props:IB,setup(e){const t=we("card");return(n,o)=>(C(),M("div",{class:_([y(t).b(),y(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(C(),M("div",{key:0,class:_(y(t).e("header"))},[ie(n.$slots,"header",{},()=>[at(he(n.header),1)])],2)):G("v-if",!0),D("div",{class:_(y(t).e("body")),style:Pe(n.bodyStyle)},[ie(n.$slots,"default")],6)],2))}}));var LB=ge(DB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const RB=ot(LB),VB=Be({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,default:""},indicator:{type:Boolean,default:!0},arrow:{type:String,default:"hover"},type:{type:String,default:""},loop:{type:Boolean,default:!0},direction:{type:String,default:"horizontal",validator(e){return["horizontal","vertical"].includes(e)}},pauseOnHover:{type:Boolean,default:!0}}),BB={change:(e,t)=>[e,t].every(ht)},FB=["onMouseenter","onMouseleave"],HB=["onMouseenter","onClick"],zB={key:0},KB={name:"ElCarousel"},WB=ee(Te(ne({},KB),{props:VB,emits:BB,setup(e,{expose:t,emit:n}){const o=e,s=we("carousel"),l=300,r=A(-1),a=A(null),i=A(!1),u=A(),c=A([]),d=E(()=>o.arrow!=="never"&&!y(m)),f=E(()=>c.value.some(q=>q.props.label.toString().length>0)),p=E(()=>{const q=[s.b(),s.m(o.direction)];return y(g)&&q.push(s.m("card")),q}),h=E(()=>{const q=[s.e("indicators"),s.em("indicators",o.direction)];return f.value&&q.push(s.em("indicators","labels")),(o.indicatorPosition==="outside"||y(g))&&q.push(s.em("indicators","outside")),q}),g=E(()=>o.type==="card"),m=E(()=>o.direction==="vertical"),v=Us(q=>{k(q)},l,{trailing:!0}),b=Us(q=>{P(q)},l);function w(){a.value&&(clearInterval(a.value),a.value=null)}function S(){o.interval<=0||!o.autoplay||a.value||(a.value=setInterval(()=>$(),o.interval))}const $=()=>{r.valueEe.props.name===q);ae.length>0&&(q=c.value.indexOf(ae[0]))}if(q=Number(q),Number.isNaN(q)||q!==Math.floor(q))return;const Q=c.value.length,Z=r.value;q<0?r.value=o.loop?Q-1:0:q>=Q?r.value=o.loop?0:Q-1:r.value=q,Z===r.value&&T(Z)}function T(q){c.value.forEach((Q,Z)=>{Q.translateItem(Z,r.value,q)})}function O(q){c.value.push(q)}function L(q){const Q=c.value.findIndex(Z=>Z.uid===q);Q!==-1&&(c.value.splice(Q,1),r.value===Q&&I())}function V(q,Q){var Z,ae,Ee,Me;const J=y(c),ve=J.length;if(ve===0||!q.states.inStage)return!1;const Ce=Q+1,ke=Q-1,Oe=ve-1,We=J[Oe].states.active,qe=J[0].states.active,K=(ae=(Z=J[Ce])==null?void 0:Z.states)==null?void 0:ae.active,X=(Me=(Ee=J[ke])==null?void 0:Ee.states)==null?void 0:Me.active;return Q===Oe&&qe||K?"left":Q===0&&We||X?"right":!1}function B(){i.value=!0,o.pauseOnHover&&w()}function H(){i.value=!1,S()}function R(q){y(m)||c.value.forEach((Q,Z)=>{q===V(Q,Z)&&(Q.states.hover=!0)})}function z(){y(m)||c.value.forEach(q=>{q.states.hover=!1})}function W(q){r.value=q}function P(q){o.trigger==="hover"&&q!==r.value&&(r.value=q)}function N(){k(r.value-1)}function I(){k(r.value+1)}pe(()=>r.value,(q,Q)=>{T(Q),Q>-1&&n("change",q,Q)}),pe(()=>o.autoplay,q=>{q?S():w()}),pe(()=>o.loop,()=>{k(r.value)});const U=jt();return xe(async()=>{await ze(),U.value=rr(u.value,()=>{T()}),o.initialIndex=0&&(r.value=o.initialIndex),S()}),_t(()=>{w(),u.value&&U.value&&U.value.stop()}),st(X0,{root:u,isCardType:g,isVertical:m,items:c,loop:o.loop,addItem:O,removeItem:L,setActiveItem:k}),t({setActiveItem:k,prev:N,next:I}),(q,Q)=>(C(),M("div",{ref_key:"root",ref:u,class:_(y(p)),onMouseenter:Ke(B,["stop"]),onMouseleave:Ke(H,["stop"])},[D("div",{class:_(y(s).e("container")),style:Pe({height:q.height})},[y(d)?(C(),x(zt,{key:0,name:"carousel-arrow-left"},{default:j(()=>[Ge(D("button",{type:"button",class:_([y(s).e("arrow"),y(s).em("arrow","left")]),onMouseenter:Q[0]||(Q[0]=Z=>R("left")),onMouseleave:z,onClick:Q[1]||(Q[1]=Ke(Z=>y(v)(r.value-1),["stop"]))},[Y(y(je),null,{default:j(()=>[Y(y(fl))]),_:1})],34),[[pt,(q.arrow==="always"||i.value)&&(o.loop||r.value>0)]])]),_:1})):G("v-if",!0),y(d)?(C(),x(zt,{key:1,name:"carousel-arrow-right"},{default:j(()=>[Ge(D("button",{type:"button",class:_([y(s).e("arrow"),y(s).em("arrow","right")]),onMouseenter:Q[2]||(Q[2]=Z=>R("right")),onMouseleave:z,onClick:Q[3]||(Q[3]=Ke(Z=>y(v)(r.value+1),["stop"]))},[Y(y(je),null,{default:j(()=>[Y(y(Zn))]),_:1})],34),[[pt,(q.arrow==="always"||i.value)&&(o.loop||r.value(C(),M("li",{key:ae,class:_([y(s).e("indicator"),y(s).em("indicator",q.direction),y(s).is("active",ae===r.value)]),onMouseenter:Ee=>y(b)(ae),onClick:Ke(Ee=>W(ae),["stop"])},[D("button",{class:_(y(s).e("button"))},[y(f)?(C(),M("span",zB,he(Z.props.label),1)):G("v-if",!0)],2)],42,HB))),128))],2)):G("v-if",!0)],42,FB))}}));var jB=ge(WB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel.vue"]]);const YB=Be({name:{type:String,default:""},label:{type:[String,Number],default:""}}),UB={name:"ElCarouselItem"},qB=ee(Te(ne({},UB),{props:YB,setup(e){const t=e,n=we("carousel"),o=Ne(X0),s=nt(),l=.83,r=A(!1),a=A(0),i=A(1),u=A(!1),c=A(!1),d=A(!1),f=A(!1),{isCardType:p,isVertical:h}=o,g=E(()=>{const k=`${`translate${y(h)?"Y":"X"}`}(${y(a)}px)`,T=`scale(${y(i)})`;return{transform:[k,T].join(" ")}});function m($,k,T){const O=T-1,L=k-1,V=k+1,B=T/2;return k===0&&$===O?-1:k===O&&$===0?T:$=B?T+1:$>V&&$-k>=B?-2:$}function v($,k){var T;const O=((T=o.root.value)==null?void 0:T.offsetWidth)||0;return d.value?O*((2-l)*($-k)+1)/4:${var O;const L=y(p),V=(O=o.items.value.length)!=null?O:Number.NaN,B=$===k;!L&&!Cn(T)&&(f.value=B||$===T),!B&&V>2&&o.loop&&($=m($,k,V));const H=y(h);u.value=B,L?(d.value=Math.round(Math.abs($-k))<=1,a.value=v($,k),i.value=y(u)?1:l):a.value=b($,k,H),c.value=!0};function S(){if(o&&y(p)){const $=o.items.value.findIndex(({uid:k})=>k===s.uid);o.setActiveItem($)}}return xe(()=>{o.addItem({props:t,states:yt({hover:r,translate:a,scale:i,active:u,ready:c,inStage:d,animating:f}),uid:s.uid,translateItem:w})}),$a(()=>{o.removeItem(s.uid)}),($,k)=>Ge((C(),M("div",{class:_([y(n).e("item"),y(n).is("active",u.value),y(n).is("in-stage",d.value),y(n).is("hover",r.value),y(n).is("animating",f.value),{[y(n).em("item","card")]:y(p)}]),style:Pe(y(g)),onClick:S},[y(p)?Ge((C(),M("div",{key:0,class:_(y(n).e("mask"))},null,2)),[[pt,!u.value]]):G("v-if",!0),ie($.$slots,"default")],6)),[[pt,c.value]])}}));var nw=ge(qB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel-item.vue"]]);const GB=ot(jB,{CarouselItem:nw}),XB=Rt(nw),ZB={modelValue:{type:[Boolean,Number,String],default:()=>{}},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},tabindex:[String,Number],size:String},fr=()=>{const e=Ne(Pn,{}),t=Ne(Un,{}),n=Ne("CheckboxGroup",{}),o=E(()=>n&&(n==null?void 0:n.name)==="ElCheckboxGroup"),s=E(()=>t.size);return{isGroup:o,checkboxGroup:n,elForm:e,elFormItemSize:s,elFormItem:t}},JB=e=>{const t=A(!1),{emit:n}=nt(),{isGroup:o,checkboxGroup:s}=fr(),l=A(!1);return{model:E({get(){var a,i;return o.value?(a=s.modelValue)==null?void 0:a.value:(i=e.modelValue)!=null?i:t.value},set(a){var i;o.value&&Array.isArray(a)?(l.value=s.max!==void 0&&a.length>s.max.value,l.value===!1&&((i=s==null?void 0:s.changeEvent)==null||i.call(s,a))):(n(tt,a),t.value=a)}}),isLimitExceeded:l}},QB=(e,{model:t})=>{const{isGroup:n,checkboxGroup:o}=fr(),s=A(!1),l=Wt(o==null?void 0:o.checkboxGroupSize,{prop:!0}),r=E(()=>{const i=t.value;return ya(i)==="[object Boolean]"?i:Array.isArray(i)?i.includes(e.label):i!=null?i===e.trueLabel:!!i}),a=Wt(E(()=>{var i;return n.value?(i=o==null?void 0:o.checkboxGroupSize)==null?void 0:i.value:void 0}));return{isChecked:r,focus:s,size:l,checkboxSize:a}},xB=(e,{model:t,isChecked:n})=>{const{elForm:o,isGroup:s,checkboxGroup:l}=fr(),r=E(()=>{var i,u;const c=(i=l.max)==null?void 0:i.value,d=(u=l.min)==null?void 0:u.value;return!!(c||d)&&t.value.length>=c&&!n.value||t.value.length<=d&&n.value});return{isDisabled:E(()=>{var i,u;const c=e.disabled||o.disabled;return(u=s.value?((i=l.disabled)==null?void 0:i.value)||c||r.value:e.disabled||o.disabled)!=null?u:!1}),isLimitDisabled:r}},e5=(e,{model:t})=>{function n(){Array.isArray(t.value)&&!t.value.includes(e.label)?t.value.push(e.label):t.value=e.trueLabel||!0}e.checked&&n()},t5=(e,{isLimitExceeded:t})=>{const{elFormItem:n}=fr(),{emit:o}=nt();function s(l){var r,a;if(t.value)return;const u=l.target.checked?(r=e.trueLabel)!=null?r:!0:(a=e.falseLabel)!=null?a:!1;o("change",u,l)}return pe(()=>e.modelValue,()=>{var l;(l=n.validate)==null||l.call(n,"change").catch(r=>void 0)}),{handleChange:s}},ow=e=>{const{model:t,isLimitExceeded:n}=JB(e),{focus:o,size:s,isChecked:l,checkboxSize:r}=QB(e,{model:t}),{isDisabled:a}=xB(e,{model:t,isChecked:l}),{handleChange:i}=t5(e,{isLimitExceeded:n});return e5(e,{model:t}),{isChecked:l,isDisabled:a,checkboxSize:r,model:t,handleChange:i,focus:o,size:s}},n5=ee({name:"ElCheckbox",props:{modelValue:{type:[Number,String,Boolean],default:()=>{}},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:{type:String,validator:On},tabindex:[String,Number]},emits:[tt,"change"],setup(e){const t=we("checkbox");return ne({ns:t},ow(e))}}),o5=["id","aria-controls"],s5=["tabindex","role","aria-checked"],l5=["aria-hidden","name","tabindex","disabled","true-value","false-value"],r5=["aria-hidden","disabled","value","name","tabindex"];function a5(e,t,n,o,s,l){return C(),M("label",{id:e.id,class:_([e.ns.b(),e.ns.m(e.checkboxSize),e.ns.is("disabled",e.isDisabled),e.ns.is("bordered",e.border),e.ns.is("checked",e.isChecked)]),"aria-controls":e.indeterminate?e.controls:null},[D("span",{class:_([e.ns.e("input"),e.ns.is("disabled",e.isDisabled),e.ns.is("checked",e.isChecked),e.ns.is("indeterminate",e.indeterminate),e.ns.is("focus",e.focus)]),tabindex:e.indeterminate?0:void 0,role:e.indeterminate?"checkbox":void 0,"aria-checked":e.indeterminate?"mixed":!1},[D("span",{class:_(e.ns.e("inner"))},null,2),e.trueLabel||e.falseLabel?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[0]||(t[0]=r=>e.model=r),class:_(e.ns.e("original")),type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel,onChange:t[1]||(t[1]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[2]||(t[2]=r=>e.focus=!0),onBlur:t[3]||(t[3]=r=>e.focus=!1)},null,42,l5)),[[Yi,e.model]]):Ge((C(),M("input",{key:1,"onUpdate:modelValue":t[4]||(t[4]=r=>e.model=r),class:_(e.ns.e("original")),type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,value:e.label,name:e.name,tabindex:e.tabindex,onChange:t[5]||(t[5]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[6]||(t[6]=r=>e.focus=!0),onBlur:t[7]||(t[7]=r=>e.focus=!1)},null,42,r5)),[[Yi,e.model]])],10,s5),e.$slots.default||e.label?(C(),M("span",{key:0,class:_(e.ns.e("label"))},[ie(e.$slots,"default"),e.$slots.default?G("v-if",!0):(C(),M(Le,{key:0},[at(he(e.label),1)],2112))],2)):G("v-if",!0)],10,o5)}var i5=ge(n5,[["render",a5],["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox.vue"]]);const u5=ee({name:"ElCheckboxButton",props:ZB,emits:[tt,"change"],setup(e){const{focus:t,isChecked:n,isDisabled:o,size:s,model:l,handleChange:r}=ow(e),{checkboxGroup:a}=fr(),i=we("checkbox"),u=E(()=>{var c,d,f,p;const h=(d=(c=a==null?void 0:a.fill)==null?void 0:c.value)!=null?d:"";return{backgroundColor:h,borderColor:h,color:(p=(f=a==null?void 0:a.textColor)==null?void 0:f.value)!=null?p:"",boxShadow:h?`-1px 0 0 0 ${h}`:null}});return{focus:t,isChecked:n,isDisabled:o,model:l,handleChange:r,activeStyle:u,size:s,ns:i}}}),c5=["aria-checked","aria-disabled"],d5=["name","tabindex","disabled","true-value","false-value"],f5=["name","tabindex","disabled","value"];function p5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b("button"),e.ns.bm("button",e.size),e.ns.is("disabled",e.isDisabled),e.ns.is("checked",e.isChecked),e.ns.is("focus",e.focus)]),role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled},[e.trueLabel||e.falseLabel?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[0]||(t[0]=r=>e.model=r),class:_(e.ns.be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel,onChange:t[1]||(t[1]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[2]||(t[2]=r=>e.focus=!0),onBlur:t[3]||(t[3]=r=>e.focus=!1)},null,42,d5)),[[Yi,e.model]]):Ge((C(),M("input",{key:1,"onUpdate:modelValue":t[4]||(t[4]=r=>e.model=r),class:_(e.ns.be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:e.isDisabled,value:e.label,onChange:t[5]||(t[5]=(...r)=>e.handleChange&&e.handleChange(...r)),onFocus:t[6]||(t[6]=r=>e.focus=!0),onBlur:t[7]||(t[7]=r=>e.focus=!1)},null,42,f5)),[[Yi,e.model]]),e.$slots.default||e.label?(C(),M("span",{key:2,class:_(e.ns.be("button","inner")),style:Pe(e.isChecked?e.activeStyle:null)},[ie(e.$slots,"default",{},()=>[at(he(e.label),1)])],6)):G("v-if",!0)],10,c5)}var sw=ge(u5,[["render",p5],["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-button.vue"]]);const h5=ee({name:"ElCheckboxGroup",props:{modelValue:{type:Array,default:()=>[]},disabled:Boolean,min:{type:Number,default:void 0},max:{type:Number,default:void 0},size:{type:String,validator:On},fill:{type:String,default:void 0},textColor:{type:String,default:void 0},tag:{type:String,default:"div"}},emits:[tt,"change"],setup(e,{emit:t,slots:n}){const{elFormItem:o}=fr(),s=Wt(),l=we("checkbox"),r=i=>{t(tt,i),ze(()=>{t("change",i)})},a=E({get(){return e.modelValue},set(i){r(i)}});return st("CheckboxGroup",Te(ne({name:"ElCheckboxGroup",modelValue:a},Ut(e)),{checkboxGroupSize:s,changeEvent:r})),pe(()=>e.modelValue,()=>{var i;(i=o.validate)==null||i.call(o,"change").catch(u=>void 0)}),()=>De(e.tag,{class:l.b("group"),role:"group","aria-label":"checkbox-group"},[ie(n,"default")])}});var lw=ge(h5,[["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-group.vue"]]);const ao=ot(i5,{CheckboxButton:sw,CheckboxGroup:lw}),m5=Rt(sw),rw=Rt(lw),aw=Be({size:Fu,disabled:Boolean,label:{type:[String,Number,Boolean],default:""}}),v5=Be(Te(ne({},aw),{modelValue:{type:[String,Number,Boolean],default:""},name:{type:String,default:""},border:Boolean})),iw={[tt]:e=>Qe(e)||ht(e)||en(e),change:e=>Qe(e)||ht(e)||en(e)},uw=(e,t)=>{const n=A(),o=Ne(e1,void 0),s=E(()=>!!o),l=E({get(){return s.value?o.modelValue:e.modelValue},set(c){s.value?o.changeEvent(c):t(tt,c),n.value.checked=e.modelValue===e.label}}),r=Wt(E(()=>o==null?void 0:o.size)),a=pl(E(()=>o==null?void 0:o.disabled)),i=A(!1),u=E(()=>a.value||s.value&&l.value!==e.label?-1:0);return{radioRef:n,isGroup:s,radioGroup:o,focus:i,size:r,disabled:a,tabIndex:u,modelValue:l}},g5=ee({name:"ElRadio",props:v5,emits:iw,setup(e,{emit:t}){const n=we("radio"),{radioRef:o,isGroup:s,focus:l,size:r,disabled:a,tabIndex:i,modelValue:u}=uw(e,t);function c(){ze(()=>t("change",u.value))}return{ns:n,focus:l,isGroup:s,modelValue:u,tabIndex:i,size:r,disabled:a,radioRef:o,handleChange:c}}}),b5=["aria-checked","aria-disabled","tabindex"],y5=["value","name","disabled"];function w5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b(),e.ns.is("disabled",e.disabled),e.ns.is("focus",e.focus),e.ns.is("bordered",e.border),e.ns.is("checked",e.modelValue===e.label),e.ns.m(e.size)]),role:"radio","aria-checked":e.modelValue===e.label,"aria-disabled":e.disabled,tabindex:e.tabIndex,onKeydown:t[5]||(t[5]=lt(Ke(r=>e.modelValue=e.disabled?e.modelValue:e.label,["stop","prevent"]),["space"]))},[D("span",{class:_([e.ns.e("input"),e.ns.is("disabled",e.disabled),e.ns.is("checked",e.modelValue===e.label)])},[D("span",{class:_(e.ns.e("inner"))},null,2),Ge(D("input",{ref:"radioRef","onUpdate:modelValue":t[0]||(t[0]=r=>e.modelValue=r),class:_(e.ns.e("original")),value:e.label,type:"radio","aria-hidden":"true",name:e.name,disabled:e.disabled,tabindex:"-1",onFocus:t[1]||(t[1]=r=>e.focus=!0),onBlur:t[2]||(t[2]=r=>e.focus=!1),onChange:t[3]||(t[3]=(...r)=>e.handleChange&&e.handleChange(...r))},null,42,y5),[[Zy,e.modelValue]])],2),D("span",{class:_(e.ns.e("label")),onKeydown:t[4]||(t[4]=Ke(()=>{},["stop"]))},[ie(e.$slots,"default",{},()=>[at(he(e.label),1)])],34)],42,b5)}var C5=ge(g5,[["render",w5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);const $5=Be(Te(ne({},aw),{name:{type:String,default:""}})),k5=ee({name:"ElRadioButton",props:$5,setup(e,{emit:t}){const n=we("radio"),{radioRef:o,isGroup:s,focus:l,size:r,disabled:a,tabIndex:i,modelValue:u,radioGroup:c}=uw(e,t),d=E(()=>({backgroundColor:(c==null?void 0:c.fill)||"",borderColor:(c==null?void 0:c.fill)||"",boxShadow:c!=null&&c.fill?`-1px 0 0 0 ${c.fill}`:"",color:(c==null?void 0:c.textColor)||""}));return{ns:n,isGroup:s,size:r,disabled:a,tabIndex:i,modelValue:u,focus:l,activeStyle:d,radioRef:o}}}),S5=["aria-checked","aria-disabled","tabindex"],E5=["value","name","disabled"];function _5(e,t,n,o,s,l){return C(),M("label",{class:_([e.ns.b("button"),e.ns.is("active",e.modelValue===e.label),e.ns.is("disabled",e.disabled),e.ns.is("focus",e.focus),e.ns.bm("button",e.size)]),role:"radio","aria-checked":e.modelValue===e.label,"aria-disabled":e.disabled,tabindex:e.tabIndex,onKeydown:t[4]||(t[4]=lt(Ke(r=>e.modelValue=e.disabled?e.modelValue:e.label,["stop","prevent"]),["space"]))},[Ge(D("input",{ref:"radioRef","onUpdate:modelValue":t[0]||(t[0]=r=>e.modelValue=r),class:_(e.ns.be("button","original-radio")),value:e.label,type:"radio",name:e.name,disabled:e.disabled,tabindex:"-1",onFocus:t[1]||(t[1]=r=>e.focus=!0),onBlur:t[2]||(t[2]=r=>e.focus=!1)},null,42,E5),[[Zy,e.modelValue]]),D("span",{class:_(e.ns.be("button","inner")),style:Pe(e.modelValue===e.label?e.activeStyle:{}),onKeydown:t[3]||(t[3]=Ke(()=>{},["stop"]))},[ie(e.$slots,"default",{},()=>[at(he(e.label),1)])],38)],42,S5)}var cw=ge(k5,[["render",_5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);const T5=Be({size:Fu,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:""},fill:{type:String,default:""},textColor:{type:String,default:""}}),A5=iw,N5=ee({name:"ElRadioGroup",props:T5,emits:A5,setup(e,t){const n=we("radio"),o=A(),{formItem:s}=cr(),l=a=>{t.emit(tt,a),ze(()=>t.emit("change",a))},r=a=>{if(!o.value)return;const i=a.target,u=i.nodeName==="INPUT"?"[type=radio]":"[role=radio]",c=o.value.querySelectorAll(u),d=c.length,f=Array.from(c).indexOf(i),p=o.value.querySelectorAll("[role=radio]");let h=null;switch(a.code){case Ie.left:case Ie.up:a.stopPropagation(),a.preventDefault(),h=f===0?d-1:f-1;break;case Ie.right:case Ie.down:a.stopPropagation(),a.preventDefault(),h=f===d-1?0:f+1;break}h!==null&&(p[h].click(),p[h].focus())};return xe(()=>{const a=o.value.querySelectorAll("[type=radio]"),i=a[0];!Array.from(a).some(u=>u.checked)&&i&&(i.tabIndex=0)}),st(e1,yt(Te(ne({},Ut(e)),{changeEvent:l}))),pe(()=>e.modelValue,()=>s==null?void 0:s.validate("change").catch(a=>void 0)),{ns:n,radioGroupRef:o,handleKeydown:r}}});function M5(e,t,n,o,s,l){return C(),M("div",{ref:"radioGroupRef",class:_(e.ns.b("group")),role:"radiogroup",onKeydown:t[0]||(t[0]=(...r)=>e.handleKeydown&&e.handleKeydown(...r))},[ie(e.$slots,"default")],34)}var dw=ge(N5,[["render",M5],["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);const fw=ot(C5,{RadioButton:cw,RadioGroup:dw}),O5=Rt(dw),I5=Rt(cw);var P5=ee({name:"NodeContent",setup(){return{ns:we("cascader-node")}},render(){const{ns:e}=this,{node:t,panel:n}=this.$parent,{data:o,label:s}=t,{renderLabelFn:l}=n;return De("span",{class:e.e("label")},l?l({node:t,data:o}):s)}});const mp=Symbol(),D5=ee({name:"ElCascaderNode",components:{ElCheckbox:ao,ElRadio:fw,NodeContent:P5,ElIcon:je,Check:Xl,Loading:gs,ArrowRight:Zn},props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=Ne(mp),o=we("cascader-node"),s=E(()=>n.isHoverMenu),l=E(()=>n.config.multiple),r=E(()=>n.config.checkStrictly),a=E(()=>{var k;return(k=n.checkedNodes[0])==null?void 0:k.uid}),i=E(()=>e.node.isDisabled),u=E(()=>e.node.isLeaf),c=E(()=>r.value&&!u.value||!i.value),d=E(()=>p(n.expandingNode)),f=E(()=>r.value&&n.checkedNodes.some(p)),p=k=>{var T;const{level:O,uid:L}=e.node;return((T=k==null?void 0:k.pathNodes[O-1])==null?void 0:T.uid)===L},h=()=>{d.value||n.expandNode(e.node)},g=k=>{const{node:T}=e;k!==T.checked&&n.handleCheckChange(T,k)},m=()=>{n.lazyLoad(e.node,()=>{u.value||h()})},v=k=>{!s.value||(b(),!u.value&&t("expand",k))},b=()=>{const{node:k}=e;!c.value||k.loading||(k.loaded?h():m())},w=()=>{s.value&&!u.value||(u.value&&!i.value&&!r.value&&!l.value?$(!0):b())},S=k=>{r.value?(g(k),e.node.loaded&&h()):$(k)},$=k=>{e.node.loaded?(g(k),!r.value&&h()):m()};return{panel:n,isHoverMenu:s,multiple:l,checkStrictly:r,checkedNodeId:a,isDisabled:i,isLeaf:u,expandable:c,inExpandingPath:d,inCheckedPath:f,ns:o,handleHoverExpand:v,handleExpand:b,handleClick:w,handleCheck:$,handleSelectCheck:S}}}),L5=["id","aria-haspopup","aria-owns","aria-expanded","tabindex"],R5=D("span",null,null,-1);function V5(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-radio"),i=le("check"),u=le("el-icon"),c=le("node-content"),d=le("loading"),f=le("arrow-right");return C(),M("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!e.isLeaf,"aria-owns":e.isLeaf?null:e.menuId,"aria-expanded":e.inExpandingPath,tabindex:e.expandable?-1:void 0,class:_([e.ns.b(),e.ns.is("selectable",e.checkStrictly),e.ns.is("active",e.node.checked),e.ns.is("disabled",!e.expandable),e.inExpandingPath&&"in-active-path",e.inCheckedPath&&"in-checked-path"]),onMouseenter:t[2]||(t[2]=(...p)=>e.handleHoverExpand&&e.handleHoverExpand(...p)),onFocus:t[3]||(t[3]=(...p)=>e.handleHoverExpand&&e.handleHoverExpand(...p)),onClick:t[4]||(t[4]=(...p)=>e.handleClick&&e.handleClick(...p))},[G(" prefix "),e.multiple?(C(),x(r,{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:e.isDisabled,onClick:t[0]||(t[0]=Ke(()=>{},["stop"])),"onUpdate:modelValue":e.handleSelectCheck},null,8,["model-value","indeterminate","disabled","onUpdate:modelValue"])):e.checkStrictly?(C(),x(a,{key:1,"model-value":e.checkedNodeId,label:e.node.uid,disabled:e.isDisabled,"onUpdate:modelValue":e.handleSelectCheck,onClick:t[1]||(t[1]=Ke(()=>{},["stop"]))},{default:j(()=>[G(` Add an empty element to avoid render label, do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 - `),D5]),_:1},8,["model-value","label","disabled","onUpdate:modelValue"])):e.isLeaf&&e.node.checked?(C(),x(u,{key:2,class:_(e.ns.e("prefix"))},{default:j(()=>[Y(i)]),_:1},8,["class"])):G("v-if",!0),G(" content "),Y(c),G(" postfix "),e.isLeaf?G("v-if",!0):(C(),M(Le,{key:3},[e.node.loading?(C(),x(u,{key:0,class:_([e.ns.is("loading"),e.ns.e("postfix")])},{default:j(()=>[Y(d)]),_:1},8,["class"])):(C(),x(u,{key:1,class:_(["arrow-right",e.ns.e("postfix")])},{default:j(()=>[Y(f)]),_:1},8,["class"]))],2112))],42,I5)}var L5=ge(O5,[["render",P5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/node.vue"]]);const R5=te({name:"ElCascaderMenu",components:{Loading:gs,ElIcon:je,ElScrollbar:Uo,ElCascaderNode:L5},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=nt(),n=we("cascader-menu"),{t:o}=kt(),s=Na();let l=null,r=null;const a=Ne(vp),i=A(null),u=E(()=>!e.nodes.length),c=E(()=>!a.initialLoaded),d=E(()=>`cascader-menu-${s}-${e.index}`),f=m=>{l=m.target},p=m=>{if(!(!a.isHoverMenu||!l||!i.value))if(l.contains(m.target)){h();const v=t.vnode.el,{left:y}=v.getBoundingClientRect(),{offsetWidth:w,offsetHeight:S}=v,$=m.clientX-y,k=l.offsetTop,T=k+l.offsetHeight;i.value.innerHTML=` + `),R5]),_:1},8,["model-value","label","disabled","onUpdate:modelValue"])):e.isLeaf&&e.node.checked?(C(),x(u,{key:2,class:_(e.ns.e("prefix"))},{default:j(()=>[Y(i)]),_:1},8,["class"])):G("v-if",!0),G(" content "),Y(c),G(" postfix "),e.isLeaf?G("v-if",!0):(C(),M(Le,{key:3},[e.node.loading?(C(),x(u,{key:0,class:_([e.ns.is("loading"),e.ns.e("postfix")])},{default:j(()=>[Y(d)]),_:1},8,["class"])):(C(),x(u,{key:1,class:_(["arrow-right",e.ns.e("postfix")])},{default:j(()=>[Y(f)]),_:1},8,["class"]))],2112))],42,L5)}var B5=ge(D5,[["render",V5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/node.vue"]]);const F5=ee({name:"ElCascaderMenu",components:{Loading:gs,ElIcon:je,ElScrollbar:Uo,ElCascaderNode:B5},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=nt(),n=we("cascader-menu"),{t:o}=kt(),s=Aa();let l=null,r=null;const a=Ne(mp),i=A(null),u=E(()=>!e.nodes.length),c=E(()=>!a.initialLoaded),d=E(()=>`cascader-menu-${s}-${e.index}`),f=m=>{l=m.target},p=m=>{if(!(!a.isHoverMenu||!l||!i.value))if(l.contains(m.target)){h();const v=t.vnode.el,{left:b}=v.getBoundingClientRect(),{offsetWidth:w,offsetHeight:S}=v,$=m.clientX-b,k=l.offsetTop,T=k+l.offsetHeight;i.value.innerHTML=` - `}else r||(r=window.setTimeout(g,a.config.hoverThreshold))},h=()=>{!r||(clearTimeout(r),r=null)},g=()=>{!i.value||(i.value.innerHTML="",h())};return{ns:n,panel:a,hoverZone:i,isEmpty:u,isLoading:c,menuId:d,t:o,handleExpand:f,handleMouseMove:p,clearHoverZone:g}}});function B5(e,t,n,o,s,l){const r=le("el-cascader-node"),a=le("loading"),i=le("el-icon"),u=le("el-scrollbar");return C(),x(u,{key:e.menuId,tag:"ul",role:"menu",class:_(e.ns.b()),"wrap-class":e.ns.e("wrap"),"view-class":[e.ns.e("list"),e.ns.is("empty",e.isEmpty)],onMousemove:e.handleMouseMove,onMouseleave:e.clearHoverZone},{default:j(()=>{var c;return[(C(!0),M(Le,null,rt(e.nodes,d=>(C(),x(r,{key:d.uid,node:d,"menu-id":e.menuId,onExpand:e.handleExpand},null,8,["node","menu-id","onExpand"]))),128)),e.isLoading?(C(),M("div",{key:0,class:_(e.ns.e("empty-text"))},[Y(i,{size:"14",class:_(e.ns.is("loading"))},{default:j(()=>[Y(a)]),_:1},8,["class"]),it(" "+he(e.t("el.cascader.loading")),1)],2)):e.isEmpty?(C(),M("div",{key:1,class:_(e.ns.e("empty-text"))},he(e.t("el.cascader.noData")),3)):(c=e.panel)!=null&&c.isHoverMenu?(C(),M("svg",{key:2,ref:"hoverZone",class:_(e.ns.e("hover-zone"))},null,2)):G("v-if",!0)]}),_:1},8,["class","wrap-class","view-class","onMousemove","onMouseleave"])}var V5=ge(R5,[["render",B5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/menu.vue"]]),gp=(e=>(e.CLICK="click",e.HOVER="hover",e))(gp||{});let F5=0;const H5=e=>{const t=[e];let{parent:n}=e;for(;n;)t.unshift(n),n=n.parent;return t};class Ql{constructor(t,n,o,s=!1){this.data=t,this.config=n,this.parent=o,this.root=s,this.uid=F5++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:l,label:r,children:a}=n,i=t[a],u=H5(this);this.level=s?0:o?o.level+1:1,this.value=t[l],this.label=t[r],this.pathNodes=u,this.pathValues=u.map(c=>c.value),this.pathLabels=u.map(c=>c.label),this.childrenData=i,this.children=(i||[]).map(c=>new Ql(c,n,this)),this.loaded=!n.lazy||this.isLeaf||!aa(i)}get isDisabled(){const{data:t,parent:n,config:o}=this,{disabled:s,checkStrictly:l}=o;return(et(s)?s(t,this):!!t[s])||!l&&(n==null?void 0:n.isDisabled)}get isLeaf(){const{data:t,config:n,childrenData:o,loaded:s}=this,{lazy:l,leaf:r}=n,a=et(r)?r(t,this):t[r];return Cn(a)?l&&!s?!1:!(Array.isArray(o)&&o.length):!!a}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(t){const{childrenData:n,children:o}=this,s=new Ql(t,this.config,this);return Array.isArray(n)?n.push(t):this.childrenData=[t],o.push(s),s}calcText(t,n){const o=t?this.pathLabels.join(n):this.label;return this.text=o,o}broadcast(t,...n){const o=`onParent${yn(t)}`;this.children.forEach(s=>{s&&(s.broadcast(t,...n),s[o]&&s[o](...n))})}emit(t,...n){const{parent:o}=this,s=`onChild${yn(t)}`;o&&(o[s]&&o[s](...n),o.emit(t,...n))}onParentCheck(t){this.isDisabled||this.setCheckState(t)}onChildCheck(){const{children:t}=this,n=t.filter(s=>!s.isDisabled),o=n.length?n.every(s=>s.checked):!1;this.setCheckState(o)}setCheckState(t){const n=this.children.length,o=this.children.reduce((s,l)=>{const r=l.checked?1:l.indeterminate?.5:0;return s+r},0);this.checked=this.loaded&&this.children.every(s=>s.loaded&&s.checked)&&t,this.indeterminate=this.loaded&&o!==n&&o>0}doCheck(t){if(this.checked===t)return;const{checkStrictly:n,multiple:o}=this.config;n||!o?this.checked=t:(this.broadcast("check",t),this.setCheckState(t),this.emit("check"))}}const Od=(e,t)=>e.reduce((n,o)=>(o.isLeaf?n.push(o):(!t&&n.push(o),n=n.concat(Od(o.children,t))),n),[]);class Kv{constructor(t,n){this.config=n;const o=(t||[]).map(s=>new Ql(s,this.config));this.nodes=o,this.allNodes=Od(o,!1),this.leafNodes=Od(o,!0)}getNodes(){return this.nodes}getFlattedNodes(t){return t?this.leafNodes:this.allNodes}appendNode(t,n){const o=n?n.appendChild(t):new Ql(t,this.config);n||this.nodes.push(o),this.allNodes.push(o),o.isLeaf&&this.leafNodes.push(o)}appendNodes(t,n){t.forEach(o=>this.appendNode(o,n))}getNodeByValue(t,n=!1){return!t&&t!==0?null:this.getFlattedNodes(n).find(s=>_n(s.value,t)||_n(s.pathValues,t))||null}getSameNode(t){return t&&this.getFlattedNodes(!1).find(({value:o,level:s})=>_n(t.value,o)&&t.level===s)||null}}const dw={modelValue:[Number,String,Array],options:{type:Array,default:()=>[]},props:{type:Object,default:()=>({})}},z5={expandTrigger:gp.CLICK,multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:wt,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},K5=e=>E(()=>ne(ne({},z5),e.props)),Wv=e=>{if(!e)return 0;const t=e.id.split("-");return Number(t[t.length-2])},W5=e=>{if(!e)return;const t=e.querySelector("input");t?t.click():T0(e)&&e.click()},j5=(e,t)=>{const n=t.slice(0),o=n.map(l=>l.uid),s=e.reduce((l,r)=>{const a=o.indexOf(r.uid);return a>-1&&(l.push(r),n.splice(a,1),o.splice(a,1)),l},[]);return s.push(...n),s},Y5=te({name:"ElCascaderPanel",components:{ElCascaderMenu:V5},props:Te(ne({},dw),{border:{type:Boolean,default:!0},renderLabel:Function}),emits:[tt,qt,"close","expand-change"],setup(e,{emit:t,slots:n}){let o=!1;const s=we("cascader"),l=K5(e);let r=null;const a=A(!0),i=A([]),u=A(null),c=A([]),d=A(null),f=A([]),p=E(()=>l.value.expandTrigger===gp.HOVER),h=E(()=>e.renderLabel||n.default),g=()=>{const{options:H}=e,R=l.value;o=!1,r=new Kv(H,R),c.value=[r.getNodes()],R.lazy&&aa(e.options)?(a.value=!1,m(void 0,z=>{z&&(r=new Kv(z,R),c.value=[r.getNodes()]),a.value=!0,O(!1,!0)})):O(!1,!0)},m=(H,R)=>{const z=l.value;H=H||new Ql({},z,void 0,!0),H.loading=!0;const W=P=>{const N=H,I=N.root?null:N;P&&(r==null||r.appendNodes(P,I)),N.loading=!1,N.loaded=!0,N.childrenData=N.childrenData||[],R&&R(P)};z.lazyLoad(H,W)},v=(H,R)=>{var z;const{level:W}=H,P=c.value.slice(0,W);let N;H.isLeaf?N=H.pathNodes[W-2]:(N=H,P.push(H.children)),((z=d.value)==null?void 0:z.uid)!==(N==null?void 0:N.uid)&&(d.value=H,c.value=P,!R&&t("expand-change",(H==null?void 0:H.pathValues)||[]))},y=(H,R,z=!0)=>{const{checkStrictly:W,multiple:P}=l.value,N=f.value[0];o=!0,!P&&(N==null||N.doCheck(!1)),H.doCheck(R),T(),z&&!P&&!W&&t("close"),!z&&!P&&!W&&w(H)},w=H=>{!H||(H=H.parent,w(H),H&&v(H))},S=H=>r==null?void 0:r.getFlattedNodes(H),$=H=>{var R;return(R=S(H))==null?void 0:R.filter(z=>z.checked!==!1)},k=()=>{f.value.forEach(H=>H.doCheck(!1)),T()},T=()=>{var H;const{checkStrictly:R,multiple:z}=l.value,W=f.value,P=$(!R),N=j5(W,P),I=N.map(U=>U.valueByOption);f.value=N,u.value=z?I:(H=I[0])!=null?H:null},O=(H=!1,R=!1)=>{const{modelValue:z}=e,{lazy:W,multiple:P,checkStrictly:N}=l.value,I=!N;if(!(!a.value||o||!R&&_n(z,u.value)))if(W&&!H){const q=fv(fI(Gs(z))).map(Q=>r==null?void 0:r.getNodeByValue(Q)).filter(Q=>!!Q&&!Q.loaded&&!Q.loading);q.length?q.forEach(Q=>{m(Q,()=>O(!1,R))}):O(!0,R)}else{const U=P?Gs(z):[z],q=fv(U.map(Q=>r==null?void 0:r.getNodeByValue(Q,I)));L(q,!1),u.value=z}},L=(H,R=!0)=>{const{checkStrictly:z}=l.value,W=f.value,P=H.filter(U=>!!U&&(z||U.isLeaf)),N=r==null?void 0:r.getSameNode(d.value),I=R&&N||P[0];I?I.pathNodes.forEach(U=>v(U,!0)):d.value=null,W.forEach(U=>U.doCheck(!1)),P.forEach(U=>U.doCheck(!0)),f.value=P,ze(B)},B=()=>{!ct||i.value.forEach(H=>{const R=H==null?void 0:H.$el;if(R){const z=R.querySelector(`.${s.namespace.value}-scrollbar__wrap`),W=R.querySelector(`.${s.b("node")}.${s.is("active")}`)||R.querySelector(`.${s.b("node")}.in-active-path`);I0(z,W)}})},V=H=>{const R=H.target,{code:z}=H;switch(z){case Ie.up:case Ie.down:{H.preventDefault();const W=z===Ie.up?-1:1;di(A0(R,W,`.${s.b("node")}[tabindex="-1"]`));break}case Ie.left:{H.preventDefault();const W=i.value[Wv(R)-1],P=W==null?void 0:W.$el.querySelector(`.${s.b("node")}[aria-expanded="true"]`);di(P);break}case Ie.right:{H.preventDefault();const W=i.value[Wv(R)+1],P=W==null?void 0:W.$el.querySelector(`.${s.b("node")}[tabindex="-1"]`);di(P);break}case Ie.enter:W5(R);break;case Ie.esc:case Ie.tab:t("close");break}};return st(vp,yt({config:l,expandingNode:d,checkedNodes:f,isHoverMenu:p,initialLoaded:a,renderLabelFn:h,lazyLoad:m,expandNode:v,handleCheckChange:y})),pe([l,()=>e.options],g,{deep:!0,immediate:!0}),pe(()=>e.modelValue,()=>{o=!1,O()}),pe(u,H=>{_n(H,e.modelValue)||(t(tt,H),t(qt,H))}),Cy(()=>i.value=[]),xe(()=>!aa(e.modelValue)&&O()),{ns:s,menuList:i,menus:c,checkedNodes:f,handleKeyDown:V,handleCheckChange:y,getFlattedNodes:S,getCheckedNodes:$,clearCheckedNodes:k,calculateCheckedValue:T,scrollToExpandingNode:B}}});function U5(e,t,n,o,s,l){const r=le("el-cascader-menu");return C(),M("div",{class:_([e.ns.b("panel"),e.ns.is("bordered",e.border)]),onKeydown:t[0]||(t[0]=(...a)=>e.handleKeyDown&&e.handleKeyDown(...a))},[(C(!0),M(Le,null,rt(e.menus,(a,i)=>(C(),x(r,{key:i,ref_for:!0,ref:u=>e.menuList[i]=u,index:i,nodes:[...a]},null,8,["index","nodes"]))),128))],34)}var gi=ge(Y5,[["render",U5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/index.vue"]]);gi.install=e=>{e.component(gi.name,gi)};const fw=gi,q5=fw,bp=Ve({closable:Boolean,type:{type:String,values:["success","info","warning","danger",""],default:""},hit:Boolean,disableTransitions:Boolean,color:{type:String,default:""},size:{type:String,values:Eo,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),G5={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},X5={name:"ElTag"},J5=te(Te(ne({},X5),{props:bp,emits:G5,setup(e,{emit:t}){const n=e,o=Wt(),s=we("tag"),l=E(()=>{const{type:i,hit:u,effect:c,closable:d,round:f}=n;return[s.b(),s.is("closable",d),s.m(i),s.m(o.value),s.m(c),s.is("hit",u),s.is("round",f)]}),r=i=>{i.stopPropagation(),t("close",i)},a=i=>{t("click",i)};return(i,u)=>i.disableTransitions?(C(),x(zt,{key:1,name:`${b(s).namespace.value}-zoom-in-center`},{default:j(()=>[D("span",{class:_(b(l)),style:De({backgroundColor:i.color}),onClick:a},[D("span",{class:_(b(s).e("content"))},[ie(i.$slots,"default")],2),i.closable?(C(),x(b(je),{key:0,class:_(b(s).e("close")),onClick:r},{default:j(()=>[Y(b(Yn))]),_:1},8,["class"])):G("v-if",!0)],6)]),_:3},8,["name"])):(C(),M("span",{key:0,class:_(b(l)),style:De({backgroundColor:i.color}),onClick:a},[D("span",{class:_(b(s).e("content"))},[ie(i.$slots,"default")],2),i.closable?(C(),x(b(je),{key:0,class:_(b(s).e("close")),onClick:r},{default:j(()=>[Y(b(Yn))]),_:1},8,["class"])):G("v-if",!0)],6))}}));var Z5=ge(J5,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue"]]);const ju=ot(Z5),Q5=40,x5={large:36,default:32,small:28},eF={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:e})=>{const{modifiersData:t,placement:n}=e;["right","left","bottom","top"].includes(n)||(t.arrow.x=35)},requires:["arrow"]}]},jv="ElCascader",tF=te({name:jv,components:{ElCascaderPanel:fw,ElInput:Zn,ElTooltip:mn,ElScrollbar:Uo,ElTag:ju,ElIcon:je,CircleClose:Fo,Check:Jl,ArrowDown:fl},directives:{Clickoutside:ml},props:Te(ne({},dw),{size:{type:String,validator:On},placeholder:{type:String},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:Function,default:(e,t)=>e.text.includes(t)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},debounce:{type:Number,default:300},beforeFilter:{type:Function,default:()=>!0},popperClass:{type:String,default:""},popperAppendToBody:{type:Boolean,default:void 0},teleported:Zt.teleported,tagType:Te(ne({},bp.type),{default:"info"})}),emits:[tt,qt,"focus","blur","visible-change","expand-change","remove-tag"],setup(e,{emit:t}){let n=0,o=0;const{compatTeleported:s}=fr(jv,"popperAppendToBody"),l=we("cascader"),r=we("input"),{t:a}=kt(),i=Ne(Dn,{}),u=Ne(Un,{}),c=A(null),d=A(null),f=A(null),p=A(null),h=A(null),g=A(!1),m=A(!1),v=A(!1),y=A(""),w=A(""),S=A([]),$=A([]),k=A([]),T=A(!1),O=E(()=>e.disabled||i.disabled),L=E(()=>e.placeholder||a("el.cascader.placeholder")),B=Wt(),V=E(()=>["small"].includes(B.value)?"small":"default"),H=E(()=>!!e.props.multiple),R=E(()=>!e.filterable||H.value),z=E(()=>H.value?w.value:y.value),W=E(()=>{var re;return((re=p.value)==null?void 0:re.checkedNodes)||[]}),P=E(()=>!e.clearable||O.value||v.value||!m.value?!1:!!W.value.length),N=E(()=>{const{showAllLevels:re,separator:se}=e,ee=W.value;return ee.length?H.value?" ":ee[0].calcText(re,se):""}),I=E({get(){return e.modelValue},set(re){var se;t(tt,re),t(qt,re),(se=u.validate)==null||se.call(u,"change").catch(ee=>void 0)}}),U=E(()=>{var re,se;return(se=(re=c.value)==null?void 0:re.popperRef)==null?void 0:se.contentRef}),q=re=>{var se,ee,ue;if(!O.value&&(re=re!=null?re:!g.value,re!==g.value)){if(g.value=re,(ee=(se=d.value)==null?void 0:se.input)==null||ee.setAttribute("aria-expanded",`${re}`),re)Q(),ze((ue=p.value)==null?void 0:ue.scrollToExpandingNode);else if(e.filterable){const{value:Re}=N;y.value=Re,w.value=Re}t("visible-change",re)}},Q=()=>{ze(()=>{var re;(re=c.value)==null||re.updatePopper()})},J=()=>{v.value=!1},ae=re=>{const{showAllLevels:se,separator:ee}=e;return{node:re,key:re.uid,text:re.calcText(se,ee),hitState:!1,closable:!O.value&&!re.isDisabled,isCollapseTag:!1}},Ee=re=>{var se;const ee=re.node;ee.doCheck(!1),(se=p.value)==null||se.calculateCheckedValue(),t("remove-tag",ee.valueByOption)},Me=()=>{if(!H.value)return;const re=W.value,se=[],ee=[];if(re.forEach(ue=>ee.push(ae(ue))),$.value=ee,re.length){const[ue,...Re]=re,F=Re.length;se.push(ae(ue)),F&&(e.collapseTags?se.push({key:-1,text:`+ ${F}`,closable:!1,isCollapseTag:!0}):Re.forEach(de=>se.push(ae(de))))}S.value=se},Z=()=>{var re,se;const{filterMethod:ee,showAllLevels:ue,separator:Re}=e,F=(se=(re=p.value)==null?void 0:re.getFlattedNodes(!e.props.checkStrictly))==null?void 0:se.filter(de=>de.isDisabled?!1:(de.calcText(ue,Re),ee(de,z.value)));H.value&&(S.value.forEach(de=>{de.hitState=!1}),$.value.forEach(de=>{de.hitState=!1})),v.value=!0,k.value=F,Q()},ve=()=>{var re;let se;v.value&&h.value?se=h.value.$el.querySelector(`.${l.e("suggestion-item")}`):se=(re=p.value)==null?void 0:re.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`),se&&(se.focus(),!v.value&&se.click())},Ce=()=>{var re,se;const ee=(re=d.value)==null?void 0:re.input,ue=f.value,Re=(se=h.value)==null?void 0:se.$el;if(!(!ct||!ee)){if(Re){const F=Re.querySelector(`.${l.e("suggestion-list")}`);F.style.minWidth=`${ee.offsetWidth}px`}if(ue){const{offsetHeight:F}=ue,de=S.value.length>0?`${Math.max(F+6,n)}px`:`${n}px`;ee.style.height=de,Q()}}},ke=re=>{var se;return(se=p.value)==null?void 0:se.getCheckedNodes(re)},Oe=re=>{Q(),t("expand-change",re)},We=re=>{var se;const ee=(se=re.target)==null?void 0:se.value;if(re.type==="compositionend")T.value=!1,ze(()=>_e(ee));else{const ue=ee[ee.length-1]||"";T.value=!Bu(ue)}},qe=re=>{if(!T.value)switch(re.code){case Ie.enter:q();break;case Ie.down:q(!0),ze(ve),re.preventDefault();break;case Ie.esc:case Ie.tab:q(!1);break}},K=()=>{var re;(re=p.value)==null||re.clearCheckedNodes(),q(!1)},X=re=>{var se,ee;const{checked:ue}=re;H.value?(se=p.value)==null||se.handleCheckChange(re,!ue,!1):(!ue&&((ee=p.value)==null||ee.handleCheckChange(re,!0,!1)),q(!1))},fe=re=>{const se=re.target,{code:ee}=re;switch(ee){case Ie.up:case Ie.down:{const ue=ee===Ie.up?-1:1;di(A0(se,ue,`.${l.e("suggestion-item")}[tabindex="-1"]`));break}case Ie.enter:se.click();break;case Ie.esc:case Ie.tab:q(!1);break}},ye=()=>{const re=S.value,se=re[re.length-1];o=w.value?0:o+1,!(!se||!o)&&(se.hitState?Ee(se):se.hitState=!0)},be=hn(()=>{const{value:re}=z;if(!re)return;const se=e.beforeFilter(re);el(se)?se.then(Z).catch(()=>{}):se!==!1?Z():J()},e.debounce),_e=(re,se)=>{!g.value&&q(!0),!(se!=null&&se.isComposing)&&(re?be():J())};return pe(v,Q),pe([W,O],Me),pe(S,()=>{ze(()=>Ce())}),pe(N,re=>y.value=re,{immediate:!0}),xe(()=>{var re;const se=(re=d.value)==null?void 0:re.$el;n=(se==null?void 0:se.offsetHeight)||x5[B.value]||Q5,ir(se,Ce)}),_t(()=>{var re;ur((re=d.value)==null?void 0:re.$el,Ce)}),{popperOptions:eF,tooltipRef:c,popperPaneRef:U,input:d,tagWrapper:f,panel:p,suggestionPanel:h,popperVisible:g,inputHover:m,inputPlaceholder:L,filtering:v,presentText:N,checkedValue:I,inputValue:y,searchInputValue:w,presentTags:S,allPresentTags:$,suggestions:k,isDisabled:O,isOnComposition:T,realSize:B,tagSize:V,multiple:H,readonly:R,clearBtnVisible:P,compatTeleported:s,nsCascader:l,nsInput:r,t:a,togglePopperVisible:q,hideSuggestionPanel:J,deleteTag:Ee,focusFirstNode:ve,getCheckedNodes:ke,handleExpandChange:Oe,handleKeyDown:qe,handleComposition:We,handleClear:K,handleSuggestionClick:X,handleSuggestionKeyDown:fe,handleDelete:ye,handleInput:_e}}}),nF={key:0},oF={class:"el-cascader__collapse-tags"},sF=["placeholder"],lF=["onClick"];function rF(e,t,n,o,s,l){const r=le("circle-close"),a=le("el-icon"),i=le("arrow-down"),u=le("el-input"),c=le("el-tag"),d=le("el-tooltip"),f=le("el-cascader-panel"),p=le("check"),h=le("el-scrollbar"),g=Mn("clickoutside");return C(),x(d,{ref:"tooltipRef",visible:e.popperVisible,"onUpdate:visible":t[17]||(t[17]=m=>e.popperVisible=m),teleported:e.compatTeleported,"popper-class":[e.nsCascader.e("dropdown"),e.popperClass],"popper-options":e.popperOptions,"fallback-placements":["bottom-start","bottom","top-start","top","right","left"],"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:"bottom-start",transition:`${e.nsCascader.namespace.value}-zoom-in-top`,effect:"light",pure:"",persistent:"",onHide:e.hideSuggestionPanel},{default:j(()=>[Ge((C(),M("div",{class:_([e.nsCascader.b(),e.nsCascader.m(e.realSize),e.nsCascader.is("disabled",e.isDisabled),e.$attrs.class]),style:De(e.$attrs.style),onClick:t[11]||(t[11]=()=>e.togglePopperVisible(e.readonly?void 0:!0)),onKeydown:t[12]||(t[12]=(...m)=>e.handleKeyDown&&e.handleKeyDown(...m)),onMouseenter:t[13]||(t[13]=m=>e.inputHover=!0),onMouseleave:t[14]||(t[14]=m=>e.inputHover=!1)},[Y(u,{ref:"input",modelValue:e.inputValue,"onUpdate:modelValue":t[1]||(t[1]=m=>e.inputValue=m),placeholder:e.inputPlaceholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1,size:e.realSize,class:_(e.nsCascader.is("focus",e.popperVisible)),onCompositionstart:e.handleComposition,onCompositionupdate:e.handleComposition,onCompositionend:e.handleComposition,onFocus:t[2]||(t[2]=m=>e.$emit("focus",m)),onBlur:t[3]||(t[3]=m=>e.$emit("blur",m)),onInput:e.handleInput},{suffix:j(()=>[e.clearBtnVisible?(C(),x(a,{key:"clear",class:_([e.nsInput.e("icon"),"icon-circle-close"]),onClick:Ke(e.handleClear,["stop"])},{default:j(()=>[Y(r)]),_:1},8,["class","onClick"])):(C(),x(a,{key:"arrow-down",class:_([e.nsInput.e("icon"),"icon-arrow-down",e.nsCascader.is("reverse",e.popperVisible)]),onClick:t[0]||(t[0]=Ke(m=>e.togglePopperVisible(),["stop"]))},{default:j(()=>[Y(i)]),_:1},8,["class"]))]),_:1},8,["modelValue","placeholder","readonly","disabled","size","class","onCompositionstart","onCompositionupdate","onCompositionend","onInput"]),e.multiple?(C(),M("div",{key:0,ref:"tagWrapper",class:_(e.nsCascader.e("tags"))},[(C(!0),M(Le,null,rt(e.presentTags,m=>(C(),x(c,{key:m.key,type:e.tagType,size:e.tagSize,hit:m.hitState,closable:m.closable,"disable-transitions":"",onClose:v=>e.deleteTag(m)},{default:j(()=>[m.isCollapseTag===!1?(C(),M("span",nF,he(m.text),1)):(C(),x(d,{key:1,teleported:!1,disabled:e.popperVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom",effect:"light"},{default:j(()=>[D("span",null,he(m.text),1)]),content:j(()=>[D("div",oF,[(C(!0),M(Le,null,rt(e.allPresentTags,(v,y)=>(C(),M("div",{key:y,class:"el-cascader__collapse-tag"},[(C(),x(c,{key:v.key,class:"in-tooltip",type:e.tagType,size:e.tagSize,hit:v.hitState,closable:v.closable,"disable-transitions":"",onClose:w=>e.deleteTag(v)},{default:j(()=>[D("span",null,he(v.text),1)]),_:2},1032,["type","size","hit","closable","onClose"]))]))),128))])]),_:2},1032,["disabled"]))]),_:2},1032,["type","size","hit","closable","onClose"]))),128)),e.filterable&&!e.isDisabled?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[4]||(t[4]=m=>e.searchInputValue=m),type:"text",class:_(e.nsCascader.e("search-input")),placeholder:e.presentText?"":e.inputPlaceholder,onInput:t[5]||(t[5]=m=>e.handleInput(e.searchInputValue,m)),onClick:t[6]||(t[6]=Ke(m=>e.togglePopperVisible(!0),["stop"])),onKeydown:t[7]||(t[7]=lt((...m)=>e.handleDelete&&e.handleDelete(...m),["delete"])),onCompositionstart:t[8]||(t[8]=(...m)=>e.handleComposition&&e.handleComposition(...m)),onCompositionupdate:t[9]||(t[9]=(...m)=>e.handleComposition&&e.handleComposition(...m)),onCompositionend:t[10]||(t[10]=(...m)=>e.handleComposition&&e.handleComposition(...m))},null,42,sF)),[[Bf,e.searchInputValue]]):G("v-if",!0)],2)):G("v-if",!0)],38)),[[g,()=>e.togglePopperVisible(!1),e.popperPaneRef]])]),content:j(()=>[Ge(Y(f,{ref:"panel",modelValue:e.checkedValue,"onUpdate:modelValue":t[15]||(t[15]=m=>e.checkedValue=m),options:e.options,props:e.props,border:!1,"render-label":e.$slots.default,onExpandChange:e.handleExpandChange,onClose:t[16]||(t[16]=m=>e.$nextTick(()=>e.togglePopperVisible(!1)))},null,8,["modelValue","options","props","render-label","onExpandChange"]),[[pt,!e.filtering]]),e.filterable?Ge((C(),x(h,{key:0,ref:"suggestionPanel",tag:"ul",class:_(e.nsCascader.e("suggestion-panel")),"view-class":e.nsCascader.e("suggestion-list"),onKeydown:e.handleSuggestionKeyDown},{default:j(()=>[e.suggestions.length?(C(!0),M(Le,{key:0},rt(e.suggestions,m=>(C(),M("li",{key:m.uid,class:_([e.nsCascader.e("suggestion-item"),e.nsCascader.is("checked",m.checked)]),tabindex:-1,onClick:v=>e.handleSuggestionClick(m)},[D("span",null,he(m.text),1),m.checked?(C(),x(a,{key:0},{default:j(()=>[Y(p)]),_:1})):G("v-if",!0)],10,lF))),128)):ie(e.$slots,"empty",{key:1},()=>[D("li",{class:_(e.nsCascader.e("empty-text"))},he(e.t("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class","onKeydown"])),[[pt,e.filtering]]):G("v-if",!0)]),_:3},8,["visible","teleported","popper-class","popper-options","transition","onHide"])}var bi=ge(tF,[["render",rF],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader/src/index.vue"]]);bi.install=e=>{e.component(bi.name,bi)};const aF=bi,iF=aF,uF=Ve({checked:{type:Boolean,default:!1}}),cF={"update:checked":e=>en(e),change:e=>en(e)},dF={name:"ElCheckTag"},fF=te(Te(ne({},dF),{props:uF,emits:cF,setup(e,{emit:t}){const n=e,o=we("check-tag"),s=()=>{const l=!n.checked;t("change",l),t("update:checked",l)};return(l,r)=>(C(),M("span",{class:_([b(o).b(),b(o).is("checked",l.checked)]),onClick:s},[ie(l.$slots,"default")],2))}}));var pF=ge(fF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/check-tag/src/check-tag.vue"]]);const hF=ot(pF),mF=Ve({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:$e([Number,Object]),default:()=>Pt({})},sm:{type:$e([Number,Object]),default:()=>Pt({})},md:{type:$e([Number,Object]),default:()=>Pt({})},lg:{type:$e([Number,Object]),default:()=>Pt({})},xl:{type:$e([Number,Object]),default:()=>Pt({})}});var vF=te({name:"ElCol",props:mF,setup(e,{slots:t}){const{gutter:n}=Ne(x0,{gutter:E(()=>0)}),o=we("col"),s=E(()=>n.value?{paddingLeft:`${n.value/2}px`,paddingRight:`${n.value/2}px`}:{}),l=E(()=>{const r=[];return["span","offset","pull","push"].forEach(u=>{const c=e[u];typeof c=="number"&&(u==="span"?r.push(o.b(`${e[u]}`)):c>0&&r.push(o.b(`${u}-${e[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{if(typeof e[u]=="number")r.push(o.b(`${u}-${e[u]}`));else if(typeof e[u]=="object"){const c=e[u];Object.keys(c).forEach(d=>{r.push(d!=="span"?o.b(`${u}-${d}-${c[d]}`):o.b(`${u}-${c[d]}`))})}}),n.value&&r.push(o.is("guttered")),r});return()=>Y(e.tag,{class:[o.b(),l.value],style:s.value},t)}});const gF=ot(vF),Yv=e=>typeof ht(e),bF=Ve({accordion:Boolean,modelValue:{type:$e([Array,String,Number]),default:()=>Pt([])}}),yF={[tt]:Yv,[qt]:Yv},wF={name:"ElCollapse"},CF=te(Te(ne({},wF),{props:bF,emits:yF,setup(e,{expose:t,emit:n}){const o=e,s=we("collapse"),l=A(sa(o.modelValue)),r=i=>{l.value=i;const u=o.accordion?l.value[0]:l.value;n(tt,u),n(qt,u)},a=i=>{if(o.accordion)r([(l.value[0]||l.value[0]===0)&&l.value[0]===i?"":i]);else{const u=[...l.value],c=u.indexOf(i);c>-1?u.splice(c,1):u.push(i),r(u)}};return pe(()=>o.modelValue,()=>l.value=sa(o.modelValue),{deep:!0}),st(G0,{activeNames:l,handleItemClick:a}),t({activeNames:l,setActiveNames:r}),(i,u)=>(C(),M("div",{class:_(b(s).b()),role:"tablist","aria-multiselectable":"true"},[ie(i.$slots,"default")],2))}}));var $F=ge(CF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse.vue"]]);const kF=te({name:"ElCollapseTransition",setup(){return{ns:we("collapse-transition"),on:{beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){t.dataset.oldOverflow=t.style.overflow,t.scrollHeight!==0?(t.style.maxHeight=`${t.scrollHeight}px`,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom):(t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom),t.style.overflow="hidden"},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight=`${t.scrollHeight}px`,t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom}}}}});function SF(e,t,n,o,s,l){return C(),x(zt,Et({name:e.ns.b()},eT(e.on)),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["name"])}var yi=ge(kF,[["render",SF],["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);yi.install=e=>{e.component(yi.name,yi)};const Yu=yi,EF=Yu,_F=Ve({title:{type:String,default:""},name:{type:$e([String,Number]),default:()=>Na()},disabled:Boolean}),TF=["aria-expanded","aria-controls","aria-describedby"],AF=["id","tabindex","onKeypress"],NF=["id","aria-hidden","aria-labelledby"],MF={name:"ElCollapseItem"},OF=te(Te(ne({},MF),{props:_F,setup(e,{expose:t}){const n=e,o=Ne(G0),s=we("collapse"),l=A(!1),r=A(!1),a=A(Na()),i=E(()=>o==null?void 0:o.activeNames.value.includes(n.name)),u=()=>{setTimeout(()=>{r.value?r.value=!1:l.value=!0},50)},c=()=>{n.disabled||(o==null||o.handleItemClick(n.name),l.value=!1,r.value=!0)},d=()=>{o==null||o.handleItemClick(n.name)};return t({isActive:i}),(f,p)=>(C(),M("div",{class:_([b(s).b("item"),b(s).is("active",b(i)),b(s).is("disabled",f.disabled)])},[D("div",{role:"tab","aria-expanded":b(i),"aria-controls":b(s).b(`content-${a.value}`),"aria-describedby":b(s).b(`content-${a.value}`)},[D("div",{id:b(s).b(`head-${a.value}`),class:_([b(s).be("item","header"),b(s).is("active",b(i)),{focusing:l.value}]),role:"button",tabindex:f.disabled?-1:0,onClick:c,onKeypress:lt(Ke(d,["stop","prevent"]),["space","enter"]),onFocus:u,onBlur:p[0]||(p[0]=h=>l.value=!1)},[ie(f.$slots,"title",{},()=>[it(he(f.title),1)]),Y(b(je),{class:_([b(s).be("item","arrow"),b(s).is("active",b(i))])},{default:j(()=>[Y(b(Jn))]),_:1},8,["class"])],42,AF)],8,TF),Y(b(Yu),null,{default:j(()=>[Ge(D("div",{id:b(s).b(`content-${a.value}`),class:_(b(s).be("item","wrap")),role:"tabpanel","aria-hidden":!b(i),"aria-labelledby":b(s).b(`head-${a.value}`)},[D("div",{class:_(b(s).be("item","content"))},[ie(f.$slots,"default")],2)],10,NF),[[pt,b(i)]])]),_:3})],2))}}));var pw=ge(OF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse-item.vue"]]);const IF=ot($F,{CollapseItem:pw}),DF=Rt(pw);let $c=!1;function ca(e,t){if(!ct)return;const n=function(l){var r;(r=t.drag)==null||r.call(t,l)},o=function(l){var r;Vt(document,"mousemove",n),Vt(document,"mouseup",o),Vt(document,"touchmove",n),Vt(document,"touchend",o),document.onselectstart=null,document.ondragstart=null,$c=!1,(r=t.end)==null||r.call(t,l)},s=function(l){var r;$c||(l.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,Tt(document,"mousemove",n),Tt(document,"mouseup",o),Tt(document,"touchmove",n),Tt(document,"touchend",o),$c=!0,(r=t.start)==null||r.call(t,l))};Tt(e,"mousedown",s),Tt(e,"touchstart",s)}const PF=te({name:"ElColorAlphaSlider",props:{color:{type:Object,required:!0},vertical:{type:Boolean,default:!1}},setup(e){const t=nt(),n=jt(null),o=jt(null),s=A(0),l=A(0),r=A(null);pe(()=>e.color.get("alpha"),()=>{f()}),pe(()=>e.color.value,()=>{f()});function a(){if(e.vertical)return 0;const p=t.vnode.el,h=e.color.get("alpha");return p?Math.round(h*(p.offsetWidth-n.value.offsetWidth/2)/100):0}function i(){const p=t.vnode.el;if(!e.vertical)return 0;const h=e.color.get("alpha");return p?Math.round(h*(p.offsetHeight-n.value.offsetHeight/2)/100):0}function u(){if(e.color&&e.color.value){const{r:p,g:h,b:g}=e.color.toRgb();return`linear-gradient(to right, rgba(${p}, ${h}, ${g}, 0) 0%, rgba(${p}, ${h}, ${g}, 1) 100%)`}return null}function c(p){p.target!==n.value&&d(p)}function d(p){const g=t.vnode.el.getBoundingClientRect(),{clientX:m,clientY:v}=ep(p);if(e.vertical){let y=v-g.top;y=Math.max(n.value.offsetHeight/2,y),y=Math.min(y,g.height-n.value.offsetHeight/2),e.color.set("alpha",Math.round((y-n.value.offsetHeight/2)/(g.height-n.value.offsetHeight)*100))}else{let y=m-g.left;y=Math.max(n.value.offsetWidth/2,y),y=Math.min(y,g.width-n.value.offsetWidth/2),e.color.set("alpha",Math.round((y-n.value.offsetWidth/2)/(g.width-n.value.offsetWidth)*100))}}function f(){s.value=a(),l.value=i(),r.value=u()}return xe(()=>{const p={drag:h=>{d(h)},end:h=>{d(h)}};ca(o.value,p),ca(n.value,p),f()}),{thumb:n,bar:o,thumbLeft:s,thumbTop:l,background:r,handleClick:c,update:f}}});function LF(e,t,n,o,s,l){return C(),M("div",{class:_(["el-color-alpha-slider",{"is-vertical":e.vertical}])},[D("div",{ref:"bar",class:"el-color-alpha-slider__bar",style:De({background:e.background}),onClick:t[0]||(t[0]=(...r)=>e.handleClick&&e.handleClick(...r))},null,4),D("div",{ref:"thumb",class:"el-color-alpha-slider__thumb",style:De({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,4)],2)}var RF=ge(PF,[["render",LF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/alpha-slider.vue"]]);const BF=te({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(e){const t=nt(),n=A(null),o=A(null),s=A(0),l=A(0),r=E(()=>e.color.get("hue"));pe(()=>r.value,()=>{d()});function a(f){f.target!==n.value&&i(f)}function i(f){const h=t.vnode.el.getBoundingClientRect(),{clientX:g,clientY:m}=ep(f);let v;if(e.vertical){let y=m-h.top;y=Math.min(y,h.height-n.value.offsetHeight/2),y=Math.max(n.value.offsetHeight/2,y),v=Math.round((y-n.value.offsetHeight/2)/(h.height-n.value.offsetHeight)*360)}else{let y=g-h.left;y=Math.min(y,h.width-n.value.offsetWidth/2),y=Math.max(n.value.offsetWidth/2,y),v=Math.round((y-n.value.offsetWidth/2)/(h.width-n.value.offsetWidth)*360)}e.color.set("hue",v)}function u(){const f=t.vnode.el;if(e.vertical)return 0;const p=e.color.get("hue");return f?Math.round(p*(f.offsetWidth-n.value.offsetWidth/2)/360):0}function c(){const f=t.vnode.el;if(!e.vertical)return 0;const p=e.color.get("hue");return f?Math.round(p*(f.offsetHeight-n.value.offsetHeight/2)/360):0}function d(){s.value=u(),l.value=c()}return xe(()=>{const f={drag:p=>{i(p)},end:p=>{i(p)}};ca(o.value,f),ca(n.value,f),d()}),{bar:o,thumb:n,thumbLeft:s,thumbTop:l,hueValue:r,handleClick:a,update:d}}});function VF(e,t,n,o,s,l){return C(),M("div",{class:_(["el-color-hue-slider",{"is-vertical":e.vertical}])},[D("div",{ref:"bar",class:"el-color-hue-slider__bar",onClick:t[0]||(t[0]=(...r)=>e.handleClick&&e.handleClick(...r))},null,512),D("div",{ref:"thumb",class:"el-color-hue-slider__thumb",style:De({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,4)],2)}var FF=ge(BF,[["render",VF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/hue-slider.vue"]]);const hw=Symbol(),HF=()=>Ne(hw),Uv=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},zF=function(e){return typeof e=="string"&&e.includes(".")&&Number.parseFloat(e)===1},KF=function(e){return typeof e=="string"&&e.includes("%")},Rl=function(e,t){zF(e)&&(e="100%");const n=KF(e);return e=Math.min(t,Math.max(0,Number.parseFloat(`${e}`))),n&&(e=Number.parseInt(`${e*t}`,10)/100),Math.abs(e-t)<1e-6?1:e%t/Number.parseFloat(t)},qv={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},wi=function(e){e=Math.min(Math.round(e),255);const t=Math.floor(e/16),n=e%16;return`${qv[t]||t}${qv[n]||n}`},Gv=function({r:e,g:t,b:n}){return Number.isNaN(+e)||Number.isNaN(+t)||Number.isNaN(+n)?"":`#${wi(e)}${wi(t)}${wi(n)}`},kc={A:10,B:11,C:12,D:13,E:14,F:15},Ts=function(e){return e.length===2?(kc[e[0].toUpperCase()]||+e[0])*16+(kc[e[1].toUpperCase()]||+e[1]):kc[e[1].toUpperCase()]||+e[1]},WF=function(e,t,n){t=t/100,n=n/100;let o=t;const s=Math.max(n,.01);n*=2,t*=n<=1?n:2-n,o*=s<=1?s:2-s;const l=(n+t)/2,r=n===0?2*o/(s+o):2*t/(n+t);return{h:e,s:r*100,v:l*100}},Xv=function(e,t,n){e=Rl(e,255),t=Rl(t,255),n=Rl(n,255);const o=Math.max(e,t,n),s=Math.min(e,t,n);let l;const r=o,a=o-s,i=o===0?0:a/o;if(o===s)l=0;else{switch(o){case e:{l=(t-n)/a+(t{this._hue=Math.max(0,Math.min(360,o)),this._saturation=Math.max(0,Math.min(100,s)),this._value=Math.max(0,Math.min(100,l)),this.doOnChange()};if(t.includes("hsl")){const o=t.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));if(o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3){const{h:s,s:l,v:r}=WF(o[0],o[1],o[2]);n(s,l,r)}}else if(t.includes("hsv")){const o=t.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3&&n(o[0],o[1],o[2])}else if(t.includes("rgb")){const o=t.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));if(o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3){const{h:s,s:l,v:r}=Xv(o[0],o[1],o[2]);n(s,l,r)}}else if(t.includes("#")){const o=t.replace("#","").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(o))return;let s,l,r;o.length===3?(s=Ts(o[0]+o[0]),l=Ts(o[1]+o[1]),r=Ts(o[2]+o[2])):(o.length===6||o.length===8)&&(s=Ts(o.slice(0,2)),l=Ts(o.slice(2,4)),r=Ts(o.slice(4,6))),o.length===8?this._alpha=Ts(o.slice(6))/255*100:(o.length===3||o.length===6)&&(this._alpha=100);const{h:a,s:i,v:u}=Xv(s,l,r);n(a,i,u)}}compare(t){return Math.abs(t._hue-this._hue)<2&&Math.abs(t._saturation-this._saturation)<1&&Math.abs(t._value-this._value)<1&&Math.abs(t._alpha-this._alpha)<1}doOnChange(){const{_hue:t,_saturation:n,_value:o,_alpha:s,format:l}=this;if(this.enableAlpha)switch(l){case"hsl":{const r=Uv(t,n/100,o/100);this.value=`hsla(${t}, ${Math.round(r[1]*100)}%, ${Math.round(r[2]*100)}%, ${this.get("alpha")/100})`;break}case"hsv":{this.value=`hsva(${t}, ${Math.round(n)}%, ${Math.round(o)}%, ${this.get("alpha")/100})`;break}case"hex":{this.value=`${Gv(Er(t,n,o))}${wi(s*255/100)}`;break}default:{const{r,g:a,b:i}=Er(t,n,o);this.value=`rgba(${r}, ${a}, ${i}, ${this.get("alpha")/100})`}}else switch(l){case"hsl":{const r=Uv(t,n/100,o/100);this.value=`hsl(${t}, ${Math.round(r[1]*100)}%, ${Math.round(r[2]*100)}%)`;break}case"hsv":{this.value=`hsv(${t}, ${Math.round(n)}%, ${Math.round(o)}%)`;break}case"rgb":{const{r,g:a,b:i}=Er(t,n,o);this.value=`rgb(${r}, ${a}, ${i})`;break}default:this.value=Gv(Er(t,n,o))}}}const jF=te({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0}},setup(e){const{currentColor:t}=HF(),n=A(s(e.colors,e.color));pe(()=>t.value,l=>{const r=new jr;r.fromString(l),n.value.forEach(a=>{a.selected=r.compare(a)})}),zn(()=>{n.value=s(e.colors,e.color)});function o(l){e.color.fromString(e.colors[l])}function s(l,r){return l.map(a=>{const i=new jr;return i.enableAlpha=!0,i.format="rgba",i.fromString(a),i.selected=i.value===r.value,i})}return{rgbaColors:n,handleSelect:o}}}),YF={class:"el-color-predefine"},UF={class:"el-color-predefine__colors"},qF=["onClick"];function GF(e,t,n,o,s,l){return C(),M("div",YF,[D("div",UF,[(C(!0),M(Le,null,rt(e.rgbaColors,(r,a)=>(C(),M("div",{key:e.colors[a],class:_(["el-color-predefine__color-selector",{selected:r.selected,"is-alpha":r._alpha<100}]),onClick:i=>e.handleSelect(a)},[D("div",{style:De({backgroundColor:r.value})},null,4)],10,qF))),128))])])}var XF=ge(jF,[["render",GF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/predefine.vue"]]);const JF=te({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(e){const t=nt(),n=A(0),o=A(0),s=A("hsl(0, 100%, 50%)"),l=E(()=>{const i=e.color.get("hue"),u=e.color.get("value");return{hue:i,value:u}});function r(){const i=e.color.get("saturation"),u=e.color.get("value"),c=t.vnode.el,{clientWidth:d,clientHeight:f}=c;o.value=i*d/100,n.value=(100-u)*f/100,s.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}function a(i){const c=t.vnode.el.getBoundingClientRect(),{clientX:d,clientY:f}=ep(i);let p=d-c.left,h=f-c.top;p=Math.max(0,p),p=Math.min(p,c.width),h=Math.max(0,h),h=Math.min(h,c.height),o.value=p,n.value=h,e.color.set({saturation:p/c.width*100,value:100-h/c.height*100})}return pe(()=>l.value,()=>{r()}),xe(()=>{ca(t.vnode.el,{drag:i=>{a(i)},end:i=>{a(i)}}),r()}),{cursorTop:n,cursorLeft:o,background:s,colorValue:l,handleDrag:a,update:r}}}),ZF=D("div",{class:"el-color-svpanel__white"},null,-1),QF=D("div",{class:"el-color-svpanel__black"},null,-1),xF=D("div",null,null,-1),eH=[xF];function tH(e,t,n,o,s,l){return C(),M("div",{class:"el-color-svpanel",style:De({backgroundColor:e.background})},[ZF,QF,D("div",{class:"el-color-svpanel__cursor",style:De({top:e.cursorTop+"px",left:e.cursorLeft+"px"})},eH,4)],4)}var nH=ge(JF,[["render",tH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/sv-panel.vue"]]);const oH=te({name:"ElColorPicker",components:{ElButton:Kn,ElTooltip:mn,ElInput:Zn,ElIcon:je,Close:Yn,ArrowDown:fl,SvPanel:nH,HueSlider:FF,AlphaSlider:RF,Predefine:XF},directives:{ClickOutside:ml},props:{modelValue:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:{type:String,validator:On},popperClass:String,predefine:Array},emits:["change","active-change",tt],setup(e,{emit:t}){const{t:n}=kt(),o=we("color"),s=Ne(Dn,{}),l=Ne(Un,{}),r=A(null),a=A(null),i=A(null),u=A(null),c=yt(new jr({enableAlpha:e.showAlpha,format:e.colorFormat,value:e.modelValue})),d=A(!1),f=A(!1),p=A(""),h=E(()=>!e.modelValue&&!f.value?"transparent":y(c,e.showAlpha)),g=Wt(),m=E(()=>!!(e.disabled||s.disabled)),v=E(()=>!e.modelValue&&!f.value?"":c.value);pe(()=>e.modelValue,V=>{V?V&&V!==c.value&&c.fromString(V):f.value=!1}),pe(()=>v.value,V=>{p.value=V,t("active-change",V)}),pe(()=>c.value,()=>{!e.modelValue&&!f.value&&(f.value=!0)});function y(V,H){if(!(V instanceof jr))throw new TypeError("color should be instance of _color Class");const{r:R,g:z,b:W}=V.toRgb();return H?`rgba(${R}, ${z}, ${W}, ${V.get("alpha")/100})`:`rgb(${R}, ${z}, ${W})`}function w(V){d.value=V}const S=hn(w,100);function $(){S(!1),k()}function k(){ze(()=>{e.modelValue?c.fromString(e.modelValue):f.value=!1})}function T(){m.value||S(!d.value)}function O(){c.fromString(p.value)}function L(){var V;const H=c.value;t(tt,H),t("change",H),(V=l.validate)==null||V.call(l,"change").catch(R=>void 0),S(!1),ze(()=>{const R=new jr({enableAlpha:e.showAlpha,format:e.colorFormat,value:e.modelValue});c.compare(R)||k()})}function B(){var V;S(!1),t(tt,null),t("change",null),e.modelValue!==null&&((V=l.validate)==null||V.call(l,"change").catch(H=>void 0)),k()}return xe(()=>{e.modelValue&&(p.value=v.value)}),pe(()=>d.value,()=>{ze(()=>{var V,H,R;(V=r.value)==null||V.update(),(H=a.value)==null||H.update(),(R=i.value)==null||R.update()})}),st(hw,{currentColor:v}),{color:c,colorDisabled:m,colorSize:g,displayedColor:h,showPanelColor:f,showPicker:d,customInput:p,handleConfirm:O,hide:$,handleTrigger:T,clear:B,confirmValue:L,t:n,ns:o,hue:r,svPanel:a,alpha:i,popper:u}}});function sH(e,t,n,o,s,l){const r=le("hue-slider"),a=le("sv-panel"),i=le("alpha-slider"),u=le("predefine"),c=le("el-input"),d=le("el-button"),f=le("arrow-down"),p=le("el-icon"),h=le("close"),g=le("el-tooltip"),m=Mn("click-outside");return C(),x(g,{ref:"popper",visible:e.showPicker,"onUpdate:visible":t[2]||(t[2]=v=>e.showPicker=v),"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[e.ns.be("picker","panel"),e.ns.b("dropdown"),e.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",transition:"el-zoom-in-top",persistent:""},{content:j(()=>[Ge((C(),M("div",null,[D("div",{class:_(e.ns.be("dropdown","main-wrapper"))},[Y(r,{ref:"hue",class:"hue-slider",color:e.color,vertical:""},null,8,["color"]),Y(a,{ref:"svPanel",color:e.color},null,8,["color"])],2),e.showAlpha?(C(),x(i,{key:0,ref:"alpha",color:e.color},null,8,["color"])):G("v-if",!0),e.predefine?(C(),x(u,{key:1,ref:"predefine",color:e.color,colors:e.predefine},null,8,["color","colors"])):G("v-if",!0),D("div",{class:_(e.ns.be("dropdown","btns"))},[D("span",{class:_(e.ns.be("dropdown","value"))},[Y(c,{modelValue:e.customInput,"onUpdate:modelValue":t[0]||(t[0]=v=>e.customInput=v),"validate-event":!1,size:"small",onKeyup:lt(e.handleConfirm,["enter"]),onBlur:e.handleConfirm},null,8,["modelValue","onKeyup","onBlur"])],2),Y(d,{size:"small",type:"text",class:_(e.ns.be("dropdown","link-btn")),onClick:e.clear},{default:j(()=>[it(he(e.t("el.colorpicker.clear")),1)]),_:1},8,["class","onClick"]),Y(d,{plain:"",size:"small",class:_(e.ns.be("dropdown","btn")),onClick:e.confirmValue},{default:j(()=>[it(he(e.t("el.colorpicker.confirm")),1)]),_:1},8,["class","onClick"])],2)])),[[m,e.hide]])]),default:j(()=>[D("div",{class:_([e.ns.b("picker"),e.ns.is("disabled",e.colorDisabled),e.ns.bm("picker",e.colorSize)])},[e.colorDisabled?(C(),M("div",{key:0,class:_(e.ns.be("picker","mask"))},null,2)):G("v-if",!0),D("div",{class:_(e.ns.be("picker","trigger")),onClick:t[1]||(t[1]=(...v)=>e.handleTrigger&&e.handleTrigger(...v))},[D("span",{class:_([e.ns.be("picker","color"),e.ns.is("alpha",e.showAlpha)])},[D("span",{class:_(e.ns.be("picker","color-inner")),style:De({backgroundColor:e.displayedColor})},[Ge(Y(p,{class:_([e.ns.be("picker","icon"),e.ns.is("icon-arrow-down")])},{default:j(()=>[Y(f)]),_:1},8,["class"]),[[pt,e.modelValue||e.showPanelColor]]),!e.modelValue&&!e.showPanelColor?(C(),x(p,{key:0,class:_([e.ns.be("picker","empty"),e.ns.is("icon-close")])},{default:j(()=>[Y(h)]),_:1},8,["class"])):G("v-if",!0)],6)],2)],2)],2)]),_:1},8,["visible","popper-class"])}var Ci=ge(oH,[["render",sH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/index.vue"]]);Ci.install=e=>{e.component(Ci.name,Ci)};const lH=Ci,rH=lH,Id={},aH=Ve({a11y:{type:Boolean,default:!0},locale:{type:$e(Object)},size:{type:String,values:Eo,default:""},button:{type:$e(Object)},experimentalFeatures:{type:$e(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:$e(Object)},zIndex:{type:Number},namespace:{type:String,default:"el"}});var iH=te({name:"ElConfigProvider",props:aH,setup(e,{slots:t}){pe(()=>e.message,o=>{Object.assign(Id,o!=null?o:{})},{immediate:!0,deep:!0});const n=l1(e);return()=>ie(t,"default",{config:n==null?void 0:n.value})}});const uH=ot(iH),cH=te({name:"ElContainer",props:{direction:{type:String,default:""}},setup(e,{slots:t}){const n=we("container");return{isVertical:E(()=>e.direction==="vertical"?!0:e.direction==="horizontal"?!1:t&&t.default?t.default().some(l=>{const r=l.type.name;return r==="ElHeader"||r==="ElFooter"}):!1),ns:n}}});function dH(e,t,n,o,s,l){return C(),M("section",{class:_([e.ns.b(),e.ns.is("vertical",e.isVertical)])},[ie(e.$slots,"default")],2)}var fH=ge(cH,[["render",dH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/container.vue"]]);const pH=te({name:"ElAside",props:{width:{type:String,default:null}},setup(e){const t=we("aside");return{style:E(()=>e.width?{"--el-aside-width":e.width}:{}),ns:t}}});function hH(e,t,n,o,s,l){return C(),M("aside",{class:_(e.ns.b()),style:De(e.style)},[ie(e.$slots,"default")],6)}var mw=ge(pH,[["render",hH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/aside.vue"]]);const mH=te({name:"ElFooter",props:{height:{type:String,default:null}},setup(e){const t=we("footer");return{style:E(()=>e.height?{"--el-footer-height":e.height}:{}),ns:t}}});function vH(e,t,n,o,s,l){return C(),M("footer",{class:_(e.ns.b()),style:De(e.style)},[ie(e.$slots,"default")],6)}var vw=ge(mH,[["render",vH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/footer.vue"]]);const gH=te({name:"ElHeader",props:{height:{type:String,default:null}},setup(e){const t=we("header");return{style:E(()=>e.height?{"--el-header-height":e.height}:{}),ns:t}}});function bH(e,t,n,o,s,l){return C(),M("header",{class:_(e.ns.b()),style:De(e.style)},[ie(e.$slots,"default")],6)}var gw=ge(gH,[["render",bH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/header.vue"]]);const yH=te({name:"ElMain",setup(){return{ns:we("main")}}});function wH(e,t,n,o,s,l){return C(),M("main",{class:_(e.ns.b())},[ie(e.$slots,"default")],2)}var bw=ge(yH,[["render",wH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/main.vue"]]);const CH=ot(fH,{Aside:mw,Footer:vw,Header:gw,Main:bw}),$H=Rt(mw),kH=Rt(vw),SH=Rt(gw),EH=Rt(bw);var yw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o,s){var l=o.prototype,r=l.format;s.en.ordinal=function(a){var i=["th","st","nd","rd"],u=a%100;return"["+a+(i[(u-20)%10]||i[u]||i[0])+"]"},l.format=function(a){var i=this,u=this.$locale();if(!this.isValid())return r.bind(this)(a);var c=this.$utils(),d=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(f){switch(f){case"Q":return Math.ceil((i.$M+1)/3);case"Do":return u.ordinal(i.$D);case"gggg":return i.weekYear();case"GGGG":return i.isoWeekYear();case"wo":return u.ordinal(i.week(),"W");case"w":case"ww":return c.s(i.week(),f==="w"?1:2,"0");case"W":case"WW":return c.s(i.isoWeek(),f==="W"?1:2,"0");case"k":case"kk":return c.s(String(i.$H===0?24:i.$H),f==="k"?1:2,"0");case"X":return Math.floor(i.$d.getTime()/1e3);case"x":return i.$d.getTime();case"z":return"["+i.offsetName()+"]";case"zzz":return"["+i.offsetName("long")+"]";default:return f}});return r.bind(this)(d)}}})})(yw);var _H=yw.exports,ww={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){var n="week",o="year";return function(s,l,r){var a=l.prototype;a.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=r(this).startOf(o).add(1,o).date(u),d=r(this).endOf(n);if(c.isBefore(d))return 1}var f=r(this).startOf(o).date(u).startOf(n).subtract(1,"millisecond"),p=this.diff(f,n,!0);return p<0?r(this).startOf("week").week():Math.ceil(p)},a.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(ww);var TH=ww.exports,Cw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.weekYear=function(){var s=this.month(),l=this.week(),r=this.year();return l===1&&s===11?r+1:s===0&&l>=52?r-1:r}}})})(Cw);var AH=Cw.exports,$w={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o,s){o.prototype.dayOfYear=function(l){var r=Math.round((s(this).startOf("day")-s(this).startOf("year"))/864e5)+1;return l==null?r:this.add(l-r,"day")}}})})($w);var NH=$w.exports,kw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.isSameOrAfter=function(s,l){return this.isSame(s,l)||this.isAfter(s,l)}}})})(kw);var MH=kw.exports,Sw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.isSameOrBefore=function(s,l){return this.isSame(s,l)||this.isBefore(s,l)}}})})(Sw);var OH=Sw.exports;const Ew=Symbol();var IH=te({name:"ElDatePickerCell",props:Ve({cell:{type:$e(Object)}}),setup(e){const t=Ne(Ew);return()=>{const n=e.cell;if(t!=null&&t.ctx.slots.default){const o=t.ctx.slots.default(n).filter(s=>s.patchFlag!==-2&&s.type.toString()!=="Symbol(Comment)");if(o.length)return o}return Pe("div",{class:"el-date-table-cell"},[Pe("span",{class:"el-date-table-cell__text"},[n==null?void 0:n.text])])}}});const DH=te({components:{ElDatePickerCell:IH},props:{date:{type:Object},minDate:{type:Object},maxDate:{type:Object},parsedValue:{type:[Object,Array]},selectionMode:{type:String,default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{type:Function},cellClassName:{type:Function},rangeState:{type:Object,default:()=>({endDate:null,selecting:!1})}},emits:["changerange","pick","select"],setup(e,t){const{t:n,lang:o}=kt(),s=A(null),l=A(null),r=A([[],[],[],[],[],[]]),a=e.date.$locale().weekStart||7,i=e.date.locale("en").localeData().weekdaysShort().map(S=>S.toLowerCase()),u=E(()=>a>3?7-a:-a),c=E(()=>{const S=e.date.startOf("month");return S.subtract(S.day()||7,"day")}),d=E(()=>i.concat(i).slice(a,a+7)),f=E(()=>{var S;const $=e.date.startOf("month"),k=$.day()||7,T=$.daysInMonth(),O=$.subtract(1,"month").daysInMonth(),L=u.value,B=r.value;let V=1;const H=e.selectionMode==="dates"?Gs(e.parsedValue):[],R=Je().locale(o.value).startOf("day");for(let z=0;z<6;z++){const W=B[z];e.showWeekNumber&&(W[0]||(W[0]={type:"week",text:c.value.add(z*7+1,"day").week()}));for(let P=0;P<7;P++){let N=W[e.showWeekNumber?P+1:P];N||(N={row:z,column:P,type:"normal",inRange:!1,start:!1,end:!1});const I=z*7+P,U=c.value.add(I-L,"day");N.dayjs=U,N.date=U.toDate(),N.timestamp=U.valueOf(),N.type="normal";const q=e.rangeState.endDate||e.maxDate||e.rangeState.selecting&&e.minDate;if(N.inRange=e.minDate&&U.isSameOrAfter(e.minDate,"day")&&q&&U.isSameOrBefore(q,"day")||e.minDate&&U.isSameOrBefore(e.minDate,"day")&&q&&U.isSameOrAfter(q,"day"),(S=e.minDate)!=null&&S.isSameOrAfter(q)?(N.start=q&&U.isSame(q,"day"),N.end=e.minDate&&U.isSame(e.minDate,"day")):(N.start=e.minDate&&U.isSame(e.minDate,"day"),N.end=q&&U.isSame(q,"day")),U.isSame(R,"day")&&(N.type="today"),z>=0&&z<=1){const ae=k+L<0?7+k+L:k+L;P+z*7>=ae?N.text=V++:(N.text=O-(ae-P%7)+1+z*7,N.type="prev-month")}else V<=T?N.text=V++:(N.text=V++-T,N.type="next-month");const J=U.toDate();N.selected=H.find(ae=>ae.valueOf()===U.valueOf()),N.isSelected=!!N.selected,N.isCurrent=p(N),N.disabled=e.disabledDate&&e.disabledDate(J),N.customClass=e.cellClassName&&e.cellClassName(J),W[e.showWeekNumber?P+1:P]=N}if(e.selectionMode==="week"){const P=e.showWeekNumber?1:0,N=e.showWeekNumber?7:6,I=w(W[P+1]);W[P].inRange=I,W[P].start=I,W[N].inRange=I,W[N].end=I}}return B}),p=S=>e.selectionMode==="day"&&(S.type==="normal"||S.type==="today")&&h(S,e.parsedValue),h=(S,$)=>$?Je($).locale(o.value).isSame(e.date.date(Number(S.text)),"day"):!1,g=S=>{const $=[];return(S.type==="normal"||S.type==="today")&&!S.disabled?($.push("available"),S.type==="today"&&$.push("today")):$.push(S.type),p(S)&&$.push("current"),S.inRange&&(S.type==="normal"||S.type==="today"||e.selectionMode==="week")&&($.push("in-range"),S.start&&$.push("start-date"),S.end&&$.push("end-date")),S.disabled&&$.push("disabled"),S.selected&&$.push("selected"),S.customClass&&$.push(S.customClass),$.join(" ")},m=(S,$)=>{const k=S*7+($-(e.showWeekNumber?1:0))-u.value;return c.value.add(k,"day")},v=S=>{if(!e.rangeState.selecting)return;let $=S.target;if($.tagName==="SPAN"&&($=$.parentNode.parentNode),$.tagName==="DIV"&&($=$.parentNode),$.tagName!=="TD")return;const k=$.parentNode.rowIndex-1,T=$.cellIndex;f.value[k][T].disabled||(k!==s.value||T!==l.value)&&(s.value=k,l.value=T,t.emit("changerange",{selecting:!0,endDate:m(k,T)}))},y=S=>{let $=S.target;for(;$&&$.tagName!=="TD";)$=$.parentNode;if(!$||$.tagName!=="TD")return;const k=$.parentNode.rowIndex-1,T=$.cellIndex,O=f.value[k][T];if(O.disabled||O.type==="week")return;const L=m(k,T);if(e.selectionMode==="range")e.rangeState.selecting?(L>=e.minDate?t.emit("pick",{minDate:e.minDate,maxDate:L}):t.emit("pick",{minDate:L,maxDate:e.minDate}),t.emit("select",!1)):(t.emit("pick",{minDate:L,maxDate:null}),t.emit("select",!0));else if(e.selectionMode==="day")t.emit("pick",L);else if(e.selectionMode==="week"){const B=L.week(),V=`${L.year()}w${B}`;t.emit("pick",{year:L.year(),week:B,value:V,date:L.startOf("week")})}else if(e.selectionMode==="dates"){const B=O.selected?Gs(e.parsedValue).filter(V=>V.valueOf()!==L.valueOf()):Gs(e.parsedValue).concat([L]);t.emit("pick",B)}},w=S=>{if(e.selectionMode!=="week")return!1;let $=e.date.startOf("day");if(S.type==="prev-month"&&($=$.subtract(1,"month")),S.type==="next-month"&&($=$.add(1,"month")),$=$.date(Number.parseInt(S.text,10)),e.parsedValue&&!Array.isArray(e.parsedValue)){const k=(e.parsedValue.day()-a+7)%7-1;return e.parsedValue.subtract(k,"day").isSame($,"day")}return!1};return{handleMouseMove:v,t:n,rows:f,isWeekActive:w,getCellClasses:g,WEEKS:d,handleClick:y}}}),PH={key:0};function LH(e,t,n,o,s,l){const r=le("el-date-picker-cell");return C(),M("table",{cellspacing:"0",cellpadding:"0",class:_(["el-date-table",{"is-week-mode":e.selectionMode==="week"}]),onClick:t[0]||(t[0]=(...a)=>e.handleClick&&e.handleClick(...a)),onMousemove:t[1]||(t[1]=(...a)=>e.handleMouseMove&&e.handleMouseMove(...a))},[D("tbody",null,[D("tr",null,[e.showWeekNumber?(C(),M("th",PH,he(e.t("el.datepicker.week")),1)):G("v-if",!0),(C(!0),M(Le,null,rt(e.WEEKS,(a,i)=>(C(),M("th",{key:i},he(e.t("el.datepicker.weeks."+a)),1))),128))]),(C(!0),M(Le,null,rt(e.rows,(a,i)=>(C(),M("tr",{key:i,class:_(["el-date-table__row",{current:e.isWeekActive(a[1])}])},[(C(!0),M(Le,null,rt(a,(u,c)=>(C(),M("td",{key:c,class:_(e.getCellClasses(u))},[Y(r,{cell:u},null,8,["cell"])],2))),128))],2))),128))])],34)}var _w=ge(DH,[["render",LH],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue"]]);const RH=(e,t,n)=>{const o=Je().locale(n).startOf("month").month(t).year(e),s=o.daysInMonth();return as(s).map(l=>o.add(l,"day").toDate())},BH=te({props:{disabledDate:{type:Function},selectionMode:{type:String,default:"month"},minDate:{type:Object},maxDate:{type:Object},date:{type:Object},parsedValue:{type:Object},rangeState:{type:Object,default:()=>({endDate:null,selecting:!1})}},emits:["changerange","pick","select"],setup(e,t){const{t:n,lang:o}=kt(),s=A(e.date.locale("en").localeData().monthsShort().map(f=>f.toLowerCase())),l=A([[],[],[]]),r=A(null),a=A(null),i=E(()=>{var f;const p=l.value,h=Je().locale(o.value).startOf("month");for(let g=0;g<3;g++){const m=p[g];for(let v=0;v<4;v++){let y=m[v];y||(y={row:g,column:v,type:"normal",inRange:!1,start:!1,end:!1}),y.type="normal";const w=g*4+v,S=e.date.startOf("year").month(w),$=e.rangeState.endDate||e.maxDate||e.rangeState.selecting&&e.minDate;y.inRange=e.minDate&&S.isSameOrAfter(e.minDate,"month")&&$&&S.isSameOrBefore($,"month")||e.minDate&&S.isSameOrBefore(e.minDate,"month")&&$&&S.isSameOrAfter($,"month"),(f=e.minDate)!=null&&f.isSameOrAfter($)?(y.start=$&&S.isSame($,"month"),y.end=e.minDate&&S.isSame(e.minDate,"month")):(y.start=e.minDate&&S.isSame(e.minDate,"month"),y.end=$&&S.isSame($,"month")),h.isSame(S)&&(y.type="today"),y.text=w;const T=S.toDate();y.disabled=e.disabledDate&&e.disabledDate(T),m[v]=y}}return p});return{handleMouseMove:f=>{if(!e.rangeState.selecting)return;let p=f.target;if(p.tagName==="A"&&(p=p.parentNode.parentNode),p.tagName==="DIV"&&(p=p.parentNode),p.tagName!=="TD")return;const h=p.parentNode.rowIndex,g=p.cellIndex;i.value[h][g].disabled||(h!==r.value||g!==a.value)&&(r.value=h,a.value=g,t.emit("changerange",{selecting:!0,endDate:e.date.startOf("year").month(h*4+g)}))},handleMonthTableClick:f=>{let p=f.target;if(p.tagName==="A"&&(p=p.parentNode.parentNode),p.tagName==="DIV"&&(p=p.parentNode),p.tagName!=="TD"||oo(p,"disabled"))return;const h=p.cellIndex,m=p.parentNode.rowIndex*4+h,v=e.date.startOf("year").month(m);e.selectionMode==="range"?e.rangeState.selecting?(v>=e.minDate?t.emit("pick",{minDate:e.minDate,maxDate:v}):t.emit("pick",{minDate:v,maxDate:e.minDate}),t.emit("select",!1)):(t.emit("pick",{minDate:v,maxDate:null}),t.emit("select",!0)):t.emit("pick",m)},rows:i,getCellStyle:f=>{const p={},h=e.date.year(),g=new Date,m=f.text;return p.disabled=e.disabledDate?RH(h,m,o.value).every(e.disabledDate):!1,p.current=Gs(e.parsedValue).findIndex(v=>v.year()===h&&v.month()===m)>=0,p.today=g.getFullYear()===h&&g.getMonth()===m,f.inRange&&(p["in-range"]=!0,f.start&&(p["start-date"]=!0),f.end&&(p["end-date"]=!0)),p},t:n,months:s}}}),VH={class:"cell"};function FH(e,t,n,o,s,l){return C(),M("table",{class:"el-month-table",onClick:t[0]||(t[0]=(...r)=>e.handleMonthTableClick&&e.handleMonthTableClick(...r)),onMousemove:t[1]||(t[1]=(...r)=>e.handleMouseMove&&e.handleMouseMove(...r))},[D("tbody",null,[(C(!0),M(Le,null,rt(e.rows,(r,a)=>(C(),M("tr",{key:a},[(C(!0),M(Le,null,rt(r,(i,u)=>(C(),M("td",{key:u,class:_(e.getCellStyle(i))},[D("div",null,[D("a",VH,he(e.t("el.datepicker.months."+e.months[i.text])),1)])],2))),128))]))),128))])],32)}var Tw=ge(BH,[["render",FH],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue"]]);const HH=(e,t)=>{const n=Je(String(e)).locale(t).startOf("year"),s=n.endOf("year").dayOfYear();return as(s).map(l=>n.add(l,"day").toDate())},zH=te({props:{disabledDate:{type:Function},parsedValue:{type:Object},date:{type:Object}},emits:["pick"],setup(e,t){const{lang:n}=kt();return{startYear:E(()=>Math.floor(e.date.year()/10)*10),getCellStyle:r=>{const a={},i=Je().locale(n.value);return a.disabled=e.disabledDate?HH(r,n.value).every(e.disabledDate):!1,a.current=Gs(e.parsedValue).findIndex(u=>u.year()===r)>=0,a.today=i.year()===r,a},handleYearTableClick:r=>{const a=r.target;if(a.tagName==="A"){if(oo(a.parentNode,"disabled"))return;const i=a.textContent||a.innerText;t.emit("pick",Number(i))}}}}}),KH={class:"cell"},WH={class:"cell"},jH={class:"cell"},YH={class:"cell"},UH={class:"cell"},qH={class:"cell"},GH={class:"cell"},XH={class:"cell"},JH={class:"cell"},ZH={class:"cell"},QH=D("td",null,null,-1),xH=D("td",null,null,-1);function ez(e,t,n,o,s,l){return C(),M("table",{class:"el-year-table",onClick:t[0]||(t[0]=(...r)=>e.handleYearTableClick&&e.handleYearTableClick(...r))},[D("tbody",null,[D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+0)])},[D("a",KH,he(e.startYear),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+1)])},[D("a",WH,he(e.startYear+1),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+2)])},[D("a",jH,he(e.startYear+2),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+3)])},[D("a",YH,he(e.startYear+3),1)],2)]),D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+4)])},[D("a",UH,he(e.startYear+4),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+5)])},[D("a",qH,he(e.startYear+5),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+6)])},[D("a",GH,he(e.startYear+6),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+7)])},[D("a",XH,he(e.startYear+7),1)],2)]),D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+8)])},[D("a",JH,he(e.startYear+8),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+9)])},[D("a",ZH,he(e.startYear+9),1)],2),QH,xH])])])}var tz=ge(zH,[["render",ez],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue"]]);const nz=(e,t,n)=>!0,oz=te({components:{DateTable:_w,ElInput:Zn,ElButton:Kn,ElIcon:je,TimePickPanel:mp,MonthTable:Tw,YearTable:tz,DArrowLeft:Pu,ArrowLeft:pl,DArrowRight:Lu,ArrowRight:Jn},directives:{clickoutside:ml},props:{visible:{type:Boolean,default:!1},parsedValue:{type:[Object,Array]},format:{type:String,default:""},type:{type:String,required:!0,validator:z0}},emits:["pick","set-picker-option","panel-change"],setup(e,t){const{t:n,lang:o}=kt(),s=Ne("EP_PICKER_BASE"),l=Ne(Wu),{shortcuts:r,disabledDate:a,cellClassName:i,defaultTime:u,arrowControl:c}=s.props,d=Yt(s.props,"defaultValue"),f=A(Je().locale(o.value)),p=E(()=>Je(u).locale(o.value)),h=E(()=>f.value.month()),g=E(()=>f.value.year()),m=A([]),v=A(null),y=A(null),w=ee=>m.value.length>0?nz(ee,m.value,e.format||"HH:mm:ss"):!0,S=ee=>u&&!Z.value?p.value.year(ee.year()).month(ee.month()).date(ee.date()):q.value?ee.millisecond(0):ee.startOf("day"),$=(ee,...ue)=>{if(!ee)t.emit("pick",ee,...ue);else if(Array.isArray(ee)){const Re=ee.map(S);t.emit("pick",Re,...ue)}else t.emit("pick",S(ee),...ue);v.value=null,y.value=null},k=ee=>{if(z.value==="day"){let ue=e.parsedValue?e.parsedValue.year(ee.year()).month(ee.month()).date(ee.date()):ee;w(ue)||(ue=m.value[0][0].year(ee.year()).month(ee.month()).date(ee.date())),f.value=ue,$(ue,q.value)}else z.value==="week"?$(ee.date):z.value==="dates"&&$(ee,!0)},T=()=>{f.value=f.value.subtract(1,"month"),se("month")},O=()=>{f.value=f.value.add(1,"month"),se("month")},L=()=>{V.value==="year"?f.value=f.value.subtract(10,"year"):f.value=f.value.subtract(1,"year"),se("year")},B=()=>{V.value==="year"?f.value=f.value.add(10,"year"):f.value=f.value.add(1,"year"),se("year")},V=A("date"),H=E(()=>{const ee=n("el.datepicker.year");if(V.value==="year"){const ue=Math.floor(g.value/10)*10;return ee?`${ue} ${ee} - ${ue+9} ${ee}`:`${ue} - ${ue+9}`}return`${g.value} ${ee}`}),R=ee=>{const ue=typeof ee.value=="function"?ee.value():ee.value;if(ue){$(Je(ue).locale(o.value));return}ee.onClick&&ee.onClick(t)},z=E(()=>["week","month","year","dates"].includes(e.type)?e.type:"day");pe(()=>z.value,ee=>{if(["month","year"].includes(ee)){V.value=ee;return}V.value="date"},{immediate:!0}),pe(()=>V.value,()=>{l==null||l.updatePopper()});const W=E(()=>!!r.length),P=ee=>{f.value=f.value.startOf("month").month(ee),z.value==="month"?$(f.value):V.value="date",se("month")},N=ee=>{z.value==="year"?(f.value=f.value.startOf("year").year(ee),$(f.value)):(f.value=f.value.year(ee),V.value="month"),se("year")},I=()=>{V.value="month"},U=()=>{V.value="year"},q=E(()=>e.type==="datetime"||e.type==="datetimerange"),Q=E(()=>q.value||z.value==="dates"),J=()=>{if(z.value==="dates")$(e.parsedValue);else{let ee=e.parsedValue;if(!ee){const ue=Je(u).locale(o.value),Re=be();ee=ue.year(Re.year()).month(Re.month()).date(Re.date())}f.value=ee,$(ee)}},ae=()=>{const ue=Je().locale(o.value).toDate();(!a||!a(ue))&&w(ue)&&(f.value=Je().locale(o.value),$(f.value))},Ee=E(()=>x1(e.format)),Me=E(()=>Q1(e.format)),Z=E(()=>{if(y.value)return y.value;if(!(!e.parsedValue&&!d.value))return(e.parsedValue||f.value).format(Ee.value)}),ve=E(()=>{if(v.value)return v.value;if(!(!e.parsedValue&&!d.value))return(e.parsedValue||f.value).format(Me.value)}),Ce=A(!1),ke=()=>{Ce.value=!0},Oe=()=>{Ce.value=!1},We=(ee,ue,Re)=>{const F=e.parsedValue?e.parsedValue.hour(ee.hour()).minute(ee.minute()).second(ee.second()):ee;f.value=F,$(f.value,!0),Re||(Ce.value=ue)},qe=ee=>{const ue=Je(ee,Ee.value).locale(o.value);ue.isValid()&&w(ue)&&(f.value=ue.year(f.value.year()).month(f.value.month()).date(f.value.date()),y.value=null,Ce.value=!1,$(f.value,!0))},K=ee=>{const ue=Je(ee,Me.value).locale(o.value);if(ue.isValid()){if(a&&a(ue.toDate()))return;f.value=ue.hour(f.value.hour()).minute(f.value.minute()).second(f.value.second()),v.value=null,$(f.value,!0)}},X=ee=>Je.isDayjs(ee)&&ee.isValid()&&(a?!a(ee.toDate()):!0),fe=ee=>z.value==="dates"?ee.map(ue=>ue.format(e.format)):ee.format(e.format),ye=ee=>Je(ee,e.format).locale(o.value),be=()=>{const ee=Je(d.value).locale(o.value);if(!d.value){const ue=p.value;return Je().hour(ue.hour()).minute(ue.minute()).second(ue.second()).locale(o.value)}return ee},_e=ee=>{const{code:ue,keyCode:Re}=ee,F=[Ie.up,Ie.down,Ie.left,Ie.right];e.visible&&!Ce.value&&(F.includes(ue)&&(re(Re),ee.stopPropagation(),ee.preventDefault()),ue===Ie.enter&&v.value===null&&y.value===null&&$(f,!1))},re=ee=>{const ue={year:{38:-4,40:4,37:-1,39:1,offset:(F,de)=>F.setFullYear(F.getFullYear()+de)},month:{38:-4,40:4,37:-1,39:1,offset:(F,de)=>F.setMonth(F.getMonth()+de)},week:{38:-1,40:1,37:-1,39:1,offset:(F,de)=>F.setDate(F.getDate()+de*7)},day:{38:-7,40:7,37:-1,39:1,offset:(F,de)=>F.setDate(F.getDate()+de)}},Re=f.value.toDate();for(;Math.abs(f.value.diff(Re,"year",!0))<1;){const F=ue[z.value];if(F.offset(Re,F[ee]),a&&a(Re))continue;const de=Je(Re).locale(o.value);f.value=de,t.emit("pick",de,!0);break}},se=ee=>{t.emit("panel-change",f.value.toDate(),ee,V.value)};return t.emit("set-picker-option",["isValidValue",X]),t.emit("set-picker-option",["formatToString",fe]),t.emit("set-picker-option",["parseUserInput",ye]),t.emit("set-picker-option",["handleKeydown",_e]),pe(()=>d.value,ee=>{ee&&(f.value=be())},{immediate:!0}),pe(()=>e.parsedValue,ee=>{if(ee){if(z.value==="dates"||Array.isArray(ee))return;f.value=ee}else f.value=be()},{immediate:!0}),{handleTimePick:We,handleTimePickClose:Oe,onTimePickerInputFocus:ke,timePickerVisible:Ce,visibleTime:Z,visibleDate:ve,showTime:q,changeToNow:ae,onConfirm:J,footerVisible:Q,handleYearPick:N,showMonthPicker:I,showYearPicker:U,handleMonthPick:P,hasShortcuts:W,shortcuts:r,arrowControl:c,disabledDate:a,cellClassName:i,selectionMode:z,handleShortcutClick:R,prevYear_:L,nextYear_:B,prevMonth_:T,nextMonth_:O,innerDate:f,t:n,yearLabel:H,currentView:V,month:h,handleDatePick:k,handleVisibleTimeChange:qe,handleVisibleDateChange:K,timeFormat:Ee,userInputTime:y,userInputDate:v}}}),sz={class:"el-picker-panel__body-wrapper"},lz={key:0,class:"el-picker-panel__sidebar"},rz=["onClick"],az={class:"el-picker-panel__body"},iz={key:0,class:"el-date-picker__time-header"},uz={class:"el-date-picker__editor-wrap"},cz={class:"el-date-picker__editor-wrap"},dz=["aria-label"],fz=["aria-label"],pz=["aria-label"],hz=["aria-label"],mz={class:"el-picker-panel__content"},vz={class:"el-picker-panel__footer"};function gz(e,t,n,o,s,l){const r=le("el-input"),a=le("time-pick-panel"),i=le("d-arrow-left"),u=le("el-icon"),c=le("arrow-left"),d=le("d-arrow-right"),f=le("arrow-right"),p=le("date-table"),h=le("year-table"),g=le("month-table"),m=le("el-button"),v=Mn("clickoutside");return C(),M("div",{class:_(["el-picker-panel el-date-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts,"has-time":e.showTime}]])},[D("div",sz,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",lz,[(C(!0),M(Le,null,rt(e.shortcuts,(y,w)=>(C(),M("button",{key:w,type:"button",class:"el-picker-panel__shortcut",onClick:S=>e.handleShortcutClick(y)},he(y.text),9,rz))),128))])):G("v-if",!0),D("div",az,[e.showTime?(C(),M("div",iz,[D("span",uz,[Y(r,{placeholder:e.t("el.datepicker.selectDate"),"model-value":e.visibleDate,size:"small",onInput:t[0]||(t[0]=y=>e.userInputDate=y),onChange:e.handleVisibleDateChange},null,8,["placeholder","model-value","onChange"])]),Ge((C(),M("span",cz,[Y(r,{placeholder:e.t("el.datepicker.selectTime"),"model-value":e.visibleTime,size:"small",onFocus:e.onTimePickerInputFocus,onInput:t[1]||(t[1]=y=>e.userInputTime=y),onChange:e.handleVisibleTimeChange},null,8,["placeholder","model-value","onFocus","onChange"]),Y(a,{visible:e.timePickerVisible,format:e.timeFormat,"time-arrow-control":e.arrowControl,"parsed-value":e.innerDate,onPick:e.handleTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[v,e.handleTimePickClose]])])):G("v-if",!0),Ge(D("div",{class:_(["el-date-picker__header",{"el-date-picker__header--bordered":e.currentView==="year"||e.currentView==="month"}])},[D("button",{type:"button","aria-label":e.t("el.datepicker.prevYear"),class:"el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left",onClick:t[2]||(t[2]=(...y)=>e.prevYear_&&e.prevYear_(...y))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})],8,dz),Ge(D("button",{type:"button","aria-label":e.t("el.datepicker.prevMonth"),class:"el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left",onClick:t[3]||(t[3]=(...y)=>e.prevMonth_&&e.prevMonth_(...y))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})],8,fz),[[pt,e.currentView==="date"]]),D("span",{role:"button",class:"el-date-picker__header-label",onClick:t[4]||(t[4]=(...y)=>e.showYearPicker&&e.showYearPicker(...y))},he(e.yearLabel),1),Ge(D("span",{role:"button",class:_(["el-date-picker__header-label",{active:e.currentView==="month"}]),onClick:t[5]||(t[5]=(...y)=>e.showMonthPicker&&e.showMonthPicker(...y))},he(e.t(`el.datepicker.month${e.month+1}`)),3),[[pt,e.currentView==="date"]]),D("button",{type:"button","aria-label":e.t("el.datepicker.nextYear"),class:"el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right",onClick:t[6]||(t[6]=(...y)=>e.nextYear_&&e.nextYear_(...y))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})],8,pz),Ge(D("button",{type:"button","aria-label":e.t("el.datepicker.nextMonth"),class:"el-picker-panel__icon-btn el-date-picker__next-btn arrow-right",onClick:t[7]||(t[7]=(...y)=>e.nextMonth_&&e.nextMonth_(...y))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})],8,hz),[[pt,e.currentView==="date"]])],2),[[pt,e.currentView!=="time"]]),D("div",mz,[e.currentView==="date"?(C(),x(p,{key:0,"selection-mode":e.selectionMode,date:e.innerDate,"parsed-value":e.parsedValue,"disabled-date":e.disabledDate,onPick:e.handleDatePick},null,8,["selection-mode","date","parsed-value","disabled-date","onPick"])):G("v-if",!0),e.currentView==="year"?(C(),x(h,{key:1,date:e.innerDate,"disabled-date":e.disabledDate,"parsed-value":e.parsedValue,onPick:e.handleYearPick},null,8,["date","disabled-date","parsed-value","onPick"])):G("v-if",!0),e.currentView==="month"?(C(),x(g,{key:2,date:e.innerDate,"parsed-value":e.parsedValue,"disabled-date":e.disabledDate,onPick:e.handleMonthPick},null,8,["date","parsed-value","disabled-date","onPick"])):G("v-if",!0)])])]),Ge(D("div",vz,[Ge(Y(m,{size:"small",type:"text",class:"el-picker-panel__link-btn",onClick:e.changeToNow},{default:j(()=>[it(he(e.t("el.datepicker.now")),1)]),_:1},8,["onClick"]),[[pt,e.selectionMode!=="dates"]]),Y(m,{plain:"",size:"small",class:"el-picker-panel__link-btn",onClick:e.onConfirm},{default:j(()=>[it(he(e.t("el.datepicker.confirm")),1)]),_:1},8,["onClick"])],512),[[pt,e.footerVisible&&e.currentView==="date"]])],2)}var bz=ge(oz,[["render",gz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"]]);const yz=te({directives:{clickoutside:ml},components:{TimePickPanel:mp,DateTable:_w,ElInput:Zn,ElButton:Kn,ElIcon:je,DArrowLeft:Pu,ArrowLeft:pl,DArrowRight:Lu,ArrowRight:Jn},props:{unlinkPanels:Boolean,parsedValue:{type:Array},type:{type:String,required:!0,validator:z0}},emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,t){const{t:n,lang:o}=kt(),s=A(Je().locale(o.value)),l=A(Je().locale(o.value).add(1,"month")),r=A(null),a=A(null),i=A({min:null,max:null}),u=A({min:null,max:null}),c=E(()=>`${s.value.year()} ${n("el.datepicker.year")} ${n(`el.datepicker.month${s.value.month()+1}`)}`),d=E(()=>`${l.value.year()} ${n("el.datepicker.year")} ${n(`el.datepicker.month${l.value.month()+1}`)}`),f=E(()=>s.value.year()),p=E(()=>s.value.month()),h=E(()=>l.value.year()),g=E(()=>l.value.month()),m=E(()=>!!Re.length),v=E(()=>i.value.min!==null?i.value.min:r.value?r.value.format(k.value):""),y=E(()=>i.value.max!==null?i.value.max:a.value||r.value?(a.value||r.value).format(k.value):""),w=E(()=>u.value.min!==null?u.value.min:r.value?r.value.format($.value):""),S=E(()=>u.value.max!==null?u.value.max:a.value||r.value?(a.value||r.value).format($.value):""),$=E(()=>x1(Fe)),k=E(()=>Q1(Fe)),T=()=>{s.value=s.value.subtract(1,"year"),e.unlinkPanels||(l.value=s.value.add(1,"month")),W("year")},O=()=>{s.value=s.value.subtract(1,"month"),e.unlinkPanels||(l.value=s.value.add(1,"month")),W("month")},L=()=>{e.unlinkPanels?l.value=l.value.add(1,"year"):(s.value=s.value.add(1,"year"),l.value=s.value.add(1,"month")),W("year")},B=()=>{e.unlinkPanels?l.value=l.value.add(1,"month"):(s.value=s.value.add(1,"month"),l.value=s.value.add(1,"month")),W("month")},V=()=>{s.value=s.value.add(1,"year"),W("year")},H=()=>{s.value=s.value.add(1,"month"),W("month")},R=()=>{l.value=l.value.subtract(1,"year"),W("year")},z=()=>{l.value=l.value.subtract(1,"month"),W("month")},W=ce=>{t.emit("panel-change",[s.value.toDate(),l.value.toDate()],ce)},P=E(()=>{const ce=(p.value+1)%12,Ae=p.value+1>=12?1:0;return e.unlinkPanels&&new Date(f.value+Ae,ce)e.unlinkPanels&&h.value*12+g.value-(f.value*12+p.value+1)>=12),I=ce=>Array.isArray(ce)&&ce[0]&&ce[1]&&ce[0].valueOf()<=ce[1].valueOf(),U=A({endDate:null,selecting:!1}),q=E(()=>!(r.value&&a.value&&!U.value.selecting&&I([r.value,a.value]))),Q=ce=>{U.value=ce},J=ce=>{U.value.selecting=ce,ce||(U.value.endDate=null)},ae=E(()=>e.type==="datetime"||e.type==="datetimerange"),Ee=(ce=!1)=>{I([r.value,a.value])&&t.emit("pick",[r.value,a.value],ce)},Me=(ce,Ae)=>{if(!!ce)return Ze?Je(Ze[Ae]||Ze).locale(o.value).year(ce.year()).month(ce.month()).date(ce.date()):ce},Z=(ce,Ae=!0)=>{const Ue=ce.minDate,mt=ce.maxDate,St=Me(Ue,0),bt=Me(mt,1);a.value===bt&&r.value===St||(t.emit("calendar-change",[Ue.toDate(),mt&&mt.toDate()]),a.value=bt,r.value=St,!(!Ae||ae.value)&&Ee())},ve=ce=>{const Ae=typeof ce.value=="function"?ce.value():ce.value;if(Ae){t.emit("pick",[Je(Ae[0]).locale(o.value),Je(Ae[1]).locale(o.value)]);return}ce.onClick&&ce.onClick(t)},Ce=A(!1),ke=A(!1),Oe=()=>{Ce.value=!1},We=()=>{ke.value=!1},qe=(ce,Ae)=>{i.value[Ae]=ce;const Ue=Je(ce,k.value).locale(o.value);if(Ue.isValid()){if(F&&F(Ue.toDate()))return;Ae==="min"?(s.value=Ue,r.value=(r.value||s.value).year(Ue.year()).month(Ue.month()).date(Ue.date()),e.unlinkPanels||(l.value=Ue.add(1,"month"),a.value=r.value.add(1,"month"))):(l.value=Ue,a.value=(a.value||l.value).year(Ue.year()).month(Ue.month()).date(Ue.date()),e.unlinkPanels||(s.value=Ue.subtract(1,"month"),r.value=a.value.subtract(1,"month")))}},K=(ce,Ae)=>{i.value[Ae]=null},X=(ce,Ae)=>{u.value[Ae]=ce;const Ue=Je(ce,$.value).locale(o.value);Ue.isValid()&&(Ae==="min"?(Ce.value=!0,r.value=(r.value||s.value).hour(Ue.hour()).minute(Ue.minute()).second(Ue.second()),(!a.value||a.value.isBefore(r.value))&&(a.value=r.value)):(ke.value=!0,a.value=(a.value||l.value).hour(Ue.hour()).minute(Ue.minute()).second(Ue.second()),l.value=a.value,a.value&&a.value.isBefore(r.value)&&(r.value=a.value)))},fe=(ce,Ae)=>{u.value[Ae]=null,Ae==="min"?(s.value=r.value,Ce.value=!1):(l.value=a.value,ke.value=!1)},ye=(ce,Ae,Ue)=>{u.value.min||(ce&&(s.value=ce,r.value=(r.value||s.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),Ue||(Ce.value=Ae),(!a.value||a.value.isBefore(r.value))&&(a.value=r.value,l.value=ce))},be=(ce,Ae,Ue)=>{u.value.max||(ce&&(l.value=ce,a.value=(a.value||l.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),Ue||(ke.value=Ae),a.value&&a.value.isBefore(r.value)&&(r.value=a.value))},_e=()=>{s.value=ee()[0],l.value=s.value.add(1,"month"),t.emit("pick",null)},re=ce=>Array.isArray(ce)?ce.map(Ae=>Ae.format(Fe)):ce.format(Fe),se=ce=>Array.isArray(ce)?ce.map(Ae=>Je(Ae,Fe).locale(o.value)):Je(ce,Fe).locale(o.value),ee=()=>{let ce;if(Array.isArray(me.value)){const Ae=Je(me.value[0]);let Ue=Je(me.value[1]);return e.unlinkPanels||(Ue=Ae.add(1,"month")),[Ae,Ue]}else me.value?ce=Je(me.value):ce=Je();return ce=ce.locale(o.value),[ce,ce.add(1,"month")]};t.emit("set-picker-option",["isValidValue",I]),t.emit("set-picker-option",["parseUserInput",se]),t.emit("set-picker-option",["formatToString",re]),t.emit("set-picker-option",["handleClear",_e]);const ue=Ne("EP_PICKER_BASE"),{shortcuts:Re,disabledDate:F,cellClassName:de,format:Fe,defaultTime:Ze,arrowControl:He,clearable:oe}=ue.props,me=Yt(ue.props,"defaultValue");return pe(()=>me.value,ce=>{if(ce){const Ae=ee();r.value=null,a.value=null,s.value=Ae[0],l.value=Ae[1]}},{immediate:!0}),pe(()=>e.parsedValue,ce=>{if(ce&&ce.length===2)if(r.value=ce[0],a.value=ce[1],s.value=r.value,e.unlinkPanels&&a.value){const Ae=r.value.year(),Ue=r.value.month(),mt=a.value.year(),St=a.value.month();l.value=Ae===mt&&Ue===St?a.value.add(1,"month"):a.value}else l.value=s.value.add(1,"month"),a.value&&(l.value=l.value.hour(a.value.hour()).minute(a.value.minute()).second(a.value.second()));else{const Ae=ee();r.value=null,a.value=null,s.value=Ae[0],l.value=Ae[1]}},{immediate:!0}),{shortcuts:Re,disabledDate:F,cellClassName:de,minTimePickerVisible:Ce,maxTimePickerVisible:ke,handleMinTimeClose:Oe,handleMaxTimeClose:We,handleShortcutClick:ve,rangeState:U,minDate:r,maxDate:a,handleRangePick:Z,onSelect:J,handleChangeRange:Q,btnDisabled:q,enableYearArrow:N,enableMonthArrow:P,rightPrevMonth:z,rightPrevYear:R,rightNextMonth:B,rightNextYear:L,leftPrevMonth:O,leftPrevYear:T,leftNextMonth:H,leftNextYear:V,hasShortcuts:m,leftLabel:c,rightLabel:d,leftDate:s,rightDate:l,showTime:ae,t:n,minVisibleDate:v,maxVisibleDate:y,minVisibleTime:w,maxVisibleTime:S,arrowControl:He,handleDateInput:qe,handleDateChange:K,handleTimeInput:X,handleTimeChange:fe,handleMinTimePick:ye,handleMaxTimePick:be,handleClear:_e,handleConfirm:Ee,timeFormat:$,clearable:oe}}}),wz={class:"el-picker-panel__body-wrapper"},Cz={key:0,class:"el-picker-panel__sidebar"},$z=["onClick"],kz={class:"el-picker-panel__body"},Sz={key:0,class:"el-date-range-picker__time-header"},Ez={class:"el-date-range-picker__editors-wrap"},_z={class:"el-date-range-picker__time-picker-wrap"},Tz={class:"el-date-range-picker__time-picker-wrap"},Az={class:"el-date-range-picker__editors-wrap is-right"},Nz={class:"el-date-range-picker__time-picker-wrap"},Mz={class:"el-date-range-picker__time-picker-wrap"},Oz={class:"el-picker-panel__content el-date-range-picker__content is-left"},Iz={class:"el-date-range-picker__header"},Dz=["disabled"],Pz=["disabled"],Lz={class:"el-picker-panel__content el-date-range-picker__content is-right"},Rz={class:"el-date-range-picker__header"},Bz=["disabled"],Vz=["disabled"],Fz={key:0,class:"el-picker-panel__footer"};function Hz(e,t,n,o,s,l){const r=le("el-input"),a=le("time-pick-panel"),i=le("arrow-right"),u=le("el-icon"),c=le("d-arrow-left"),d=le("arrow-left"),f=le("d-arrow-right"),p=le("date-table"),h=le("el-button"),g=Mn("clickoutside");return C(),M("div",{class:_(["el-picker-panel el-date-range-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts,"has-time":e.showTime}]])},[D("div",wz,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",Cz,[(C(!0),M(Le,null,rt(e.shortcuts,(m,v)=>(C(),M("button",{key:v,type:"button",class:"el-picker-panel__shortcut",onClick:y=>e.handleShortcutClick(m)},he(m.text),9,$z))),128))])):G("v-if",!0),D("div",kz,[e.showTime?(C(),M("div",Sz,[D("span",Ez,[D("span",_z,[Y(r,{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),class:"el-date-range-picker__editor","model-value":e.minVisibleDate,onInput:t[0]||(t[0]=m=>e.handleDateInput(m,"min")),onChange:t[1]||(t[1]=m=>e.handleDateChange(m,"min"))},null,8,["disabled","placeholder","model-value"])]),Ge((C(),M("span",Tz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),"model-value":e.minVisibleTime,onFocus:t[2]||(t[2]=m=>e.minTimePickerVisible=!0),onInput:t[3]||(t[3]=m=>e.handleTimeInput(m,"min")),onChange:t[4]||(t[4]=m=>e.handleTimeChange(m,"min"))},null,8,["disabled","placeholder","model-value"]),Y(a,{visible:e.minTimePickerVisible,format:e.timeFormat,"datetime-role":"start","time-arrow-control":e.arrowControl,"parsed-value":e.leftDate,onPick:e.handleMinTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[g,e.handleMinTimeClose]])]),D("span",null,[Y(u,null,{default:j(()=>[Y(i)]),_:1})]),D("span",Az,[D("span",Nz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),"model-value":e.maxVisibleDate,readonly:!e.minDate,onInput:t[5]||(t[5]=m=>e.handleDateInput(m,"max")),onChange:t[6]||(t[6]=m=>e.handleDateChange(m,"max"))},null,8,["disabled","placeholder","model-value","readonly"])]),Ge((C(),M("span",Mz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),"model-value":e.maxVisibleTime,readonly:!e.minDate,onFocus:t[7]||(t[7]=m=>e.minDate&&(e.maxTimePickerVisible=!0)),onInput:t[8]||(t[8]=m=>e.handleTimeInput(m,"max")),onChange:t[9]||(t[9]=m=>e.handleTimeChange(m,"max"))},null,8,["disabled","placeholder","model-value","readonly"]),Y(a,{"datetime-role":"end",visible:e.maxTimePickerVisible,format:e.timeFormat,"time-arrow-control":e.arrowControl,"parsed-value":e.rightDate,onPick:e.handleMaxTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[g,e.handleMaxTimeClose]])])])):G("v-if",!0),D("div",Oz,[D("div",Iz,[D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-left",onClick:t[10]||(t[10]=(...m)=>e.leftPrevYear&&e.leftPrevYear(...m))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})]),D("button",{type:"button",class:"el-picker-panel__icon-btn arrow-left",onClick:t[11]||(t[11]=(...m)=>e.leftPrevMonth&&e.leftPrevMonth(...m))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})]),e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-right"]),onClick:t[12]||(t[12]=(...m)=>e.leftNextYear&&e.leftNextYear(...m))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})],10,Dz)):G("v-if",!0),e.unlinkPanels?(C(),M("button",{key:1,type:"button",disabled:!e.enableMonthArrow,class:_([{"is-disabled":!e.enableMonthArrow},"el-picker-panel__icon-btn arrow-right"]),onClick:t[13]||(t[13]=(...m)=>e.leftNextMonth&&e.leftNextMonth(...m))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})],10,Pz)):G("v-if",!0),D("div",null,he(e.leftLabel),1)]),Y(p,{"selection-mode":"range",date:e.leftDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onPick","onSelect"])]),D("div",Lz,[D("div",Rz,[e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-left"]),onClick:t[14]||(t[14]=(...m)=>e.rightPrevYear&&e.rightPrevYear(...m))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})],10,Bz)):G("v-if",!0),e.unlinkPanels?(C(),M("button",{key:1,type:"button",disabled:!e.enableMonthArrow,class:_([{"is-disabled":!e.enableMonthArrow},"el-picker-panel__icon-btn arrow-left"]),onClick:t[15]||(t[15]=(...m)=>e.rightPrevMonth&&e.rightPrevMonth(...m))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})],10,Vz)):G("v-if",!0),D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-right",onClick:t[16]||(t[16]=(...m)=>e.rightNextYear&&e.rightNextYear(...m))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})]),D("button",{type:"button",class:"el-picker-panel__icon-btn arrow-right",onClick:t[17]||(t[17]=(...m)=>e.rightNextMonth&&e.rightNextMonth(...m))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})]),D("div",null,he(e.rightLabel),1)]),Y(p,{"selection-mode":"range",date:e.rightDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onPick","onSelect"])])])]),e.showTime?(C(),M("div",Fz,[e.clearable?(C(),x(h,{key:0,size:"small",type:"text",class:"el-picker-panel__link-btn",onClick:e.handleClear},{default:j(()=>[it(he(e.t("el.datepicker.clear")),1)]),_:1},8,["onClick"])):G("v-if",!0),Y(h,{plain:"",size:"small",class:"el-picker-panel__link-btn",disabled:e.btnDisabled,onClick:t[18]||(t[18]=m=>e.handleConfirm(!1))},{default:j(()=>[it(he(e.t("el.datepicker.confirm")),1)]),_:1},8,["disabled"])])):G("v-if",!0)],2)}var zz=ge(yz,[["render",Hz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue"]]);const Kz=te({components:{MonthTable:Tw,ElIcon:je,DArrowLeft:Pu,DArrowRight:Lu},props:{unlinkPanels:Boolean,parsedValue:{type:Array}},emits:["pick","set-picker-option"],setup(e,t){const{t:n,lang:o}=kt(),s=A(Je().locale(o.value)),l=A(Je().locale(o.value).add(1,"year")),r=E(()=>!!H.length),a=P=>{const N=typeof P.value=="function"?P.value():P.value;if(N){t.emit("pick",[Je(N[0]).locale(o.value),Je(N[1]).locale(o.value)]);return}P.onClick&&P.onClick(t)},i=()=>{s.value=s.value.subtract(1,"year"),e.unlinkPanels||(l.value=l.value.subtract(1,"year"))},u=()=>{e.unlinkPanels||(s.value=s.value.add(1,"year")),l.value=l.value.add(1,"year")},c=()=>{s.value=s.value.add(1,"year")},d=()=>{l.value=l.value.subtract(1,"year")},f=E(()=>`${s.value.year()} ${n("el.datepicker.year")}`),p=E(()=>`${l.value.year()} ${n("el.datepicker.year")}`),h=E(()=>s.value.year()),g=E(()=>l.value.year()===s.value.year()?s.value.year()+1:l.value.year()),m=E(()=>e.unlinkPanels&&g.value>h.value+1),v=A(null),y=A(null),w=A({endDate:null,selecting:!1}),S=P=>{w.value=P},$=(P,N=!0)=>{const I=P.minDate,U=P.maxDate;y.value===U&&v.value===I||(y.value=U,v.value=I,N&&T())},k=P=>Array.isArray(P)&&P&&P[0]&&P[1]&&P[0].valueOf()<=P[1].valueOf(),T=(P=!1)=>{k([v.value,y.value])&&t.emit("pick",[v.value,y.value],P)},O=P=>{w.value.selecting=P,P||(w.value.endDate=null)},L=P=>P.map(N=>N.format(z)),B=()=>{let P;if(Array.isArray(W.value)){const N=Je(W.value[0]);let I=Je(W.value[1]);return e.unlinkPanels||(I=N.add(1,"year")),[N,I]}else W.value?P=Je(W.value):P=Je();return P=P.locale(o.value),[P,P.add(1,"year")]};t.emit("set-picker-option",["formatToString",L]);const V=Ne("EP_PICKER_BASE"),{shortcuts:H,disabledDate:R,format:z}=V.props,W=Yt(V.props,"defaultValue");return pe(()=>W.value,P=>{if(P){const N=B();s.value=N[0],l.value=N[1]}},{immediate:!0}),pe(()=>e.parsedValue,P=>{if(P&&P.length===2)if(v.value=P[0],y.value=P[1],s.value=v.value,e.unlinkPanels&&y.value){const N=v.value.year(),I=y.value.year();l.value=N===I?y.value.add(1,"year"):y.value}else l.value=s.value.add(1,"year");else{const N=B();v.value=null,y.value=null,s.value=N[0],l.value=N[1]}},{immediate:!0}),{shortcuts:H,disabledDate:R,onSelect:O,handleRangePick:$,rangeState:w,handleChangeRange:S,minDate:v,maxDate:y,enableYearArrow:m,leftLabel:f,rightLabel:p,leftNextYear:c,leftPrevYear:i,rightNextYear:u,rightPrevYear:d,t:n,leftDate:s,rightDate:l,hasShortcuts:r,handleShortcutClick:a}}}),Wz={class:"el-picker-panel__body-wrapper"},jz={key:0,class:"el-picker-panel__sidebar"},Yz=["onClick"],Uz={class:"el-picker-panel__body"},qz={class:"el-picker-panel__content el-date-range-picker__content is-left"},Gz={class:"el-date-range-picker__header"},Xz=["disabled"],Jz={class:"el-picker-panel__content el-date-range-picker__content is-right"},Zz={class:"el-date-range-picker__header"},Qz=["disabled"];function xz(e,t,n,o,s,l){const r=le("d-arrow-left"),a=le("el-icon"),i=le("d-arrow-right"),u=le("month-table");return C(),M("div",{class:_(["el-picker-panel el-date-range-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts}]])},[D("div",Wz,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",jz,[(C(!0),M(Le,null,rt(e.shortcuts,(c,d)=>(C(),M("button",{key:d,type:"button",class:"el-picker-panel__shortcut",onClick:f=>e.handleShortcutClick(c)},he(c.text),9,Yz))),128))])):G("v-if",!0),D("div",Uz,[D("div",qz,[D("div",Gz,[D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-left",onClick:t[0]||(t[0]=(...c)=>e.leftPrevYear&&e.leftPrevYear(...c))},[Y(a,null,{default:j(()=>[Y(r)]),_:1})]),e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-right"]),onClick:t[1]||(t[1]=(...c)=>e.leftNextYear&&e.leftNextYear(...c))},[Y(a,null,{default:j(()=>[Y(i)]),_:1})],10,Xz)):G("v-if",!0),D("div",null,he(e.leftLabel),1)]),Y(u,{"selection-mode":"range",date:e.leftDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onPick","onSelect"])]),D("div",Jz,[D("div",Zz,[e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-left"]),onClick:t[2]||(t[2]=(...c)=>e.rightPrevYear&&e.rightPrevYear(...c))},[Y(a,null,{default:j(()=>[Y(r)]),_:1})],10,Qz)):G("v-if",!0),D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-right",onClick:t[3]||(t[3]=(...c)=>e.rightNextYear&&e.rightNextYear(...c))},[Y(a,null,{default:j(()=>[Y(i)]),_:1})]),D("div",null,he(e.rightLabel),1)]),Y(u,{"selection-mode":"range",date:e.rightDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onPick","onSelect"])])])])],2)}var e9=ge(Kz,[["render",xz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue"]]);Je.extend(R1);Je.extend(_H);Je.extend(pp);Je.extend(TH);Je.extend(AH);Je.extend(NH);Je.extend(MH);Je.extend(OH);const t9=function(e){return e==="daterange"||e==="datetimerange"?zz:e==="monthrange"?e9:bz};var n9=te({name:"ElDatePicker",install:null,props:Te(ne({},hp),{type:{type:String,default:"date"}}),emits:["update:modelValue"],setup(e,t){st("ElPopperOptions",e.popperOptions),st(Ew,{ctx:t});const n=A(null),o=Te(ne({},e),{focus:(s=!0)=>{var l;(l=n.value)==null||l.focus(s)}});return t.expose(o),()=>{var s;const l=(s=e.format)!=null?s:WB[e.type]||Mr;return Pe(V1,Te(ne({},e),{format:l,type:e.type,ref:n,"onUpdate:modelValue":r=>t.emit("update:modelValue",r)}),{default:r=>Pe(t9(e.type),r),"range-separator":()=>ie(t.slots,"range-separator")})}}});const $i=n9;$i.install=e=>{e.component($i.name,$i)};const o9=$i,yp="elDescriptions";var Jv=te({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String},type:{type:String}},setup(){return{descriptions:Ne(yp,{})}},render(){var e,t,n,o,s,l;const r=b8(this.cell),{border:a,direction:i}=this.descriptions,u=i==="vertical",c=((n=(t=(e=this.cell)==null?void 0:e.children)==null?void 0:t.label)==null?void 0:n.call(t))||r.label,d=(l=(s=(o=this.cell)==null?void 0:o.children)==null?void 0:s.default)==null?void 0:l.call(s),f=r.span,p=r.align?`is-${r.align}`:"",h=r.labelAlign?`is-${r.labelAlign}`:p,g=r.className,m=r.labelClassName,v={width:ro(r.width),minWidth:ro(r.minWidth)},y=we("descriptions");switch(this.type){case"label":return Pe(this.tag,{style:v,class:[y.e("cell"),y.e("label"),y.is("bordered-label",a),y.is("vertical-label",u),h,m],colSpan:u?f:1},c);case"content":return Pe(this.tag,{style:v,class:[y.e("cell"),y.e("content"),y.is("bordered-content",a),y.is("vertical-content",u),p,g],colSpan:u?f:f*2-1},d);default:return Pe("td",{style:v,class:[y.e("cell"),p],colSpan:f},[Pe("span",{class:[y.e("label"),m]},c),Pe("span",{class:[y.e("content"),g]},d)])}}});const s9=te({name:"ElDescriptionsRow",components:{[Jv.name]:Jv},props:{row:{type:Array}},setup(){return{descriptions:Ne(yp,{})}}}),l9={key:1};function r9(e,t,n,o,s,l){const r=le("el-descriptions-cell");return e.descriptions.direction==="vertical"?(C(),M(Le,{key:0},[D("tr",null,[(C(!0),M(Le,null,rt(e.row,(a,i)=>(C(),x(r,{key:`tr1-${i}`,cell:a,tag:"th",type:"label"},null,8,["cell"]))),128))]),D("tr",null,[(C(!0),M(Le,null,rt(e.row,(a,i)=>(C(),x(r,{key:`tr2-${i}`,cell:a,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(C(),M("tr",l9,[(C(!0),M(Le,null,rt(e.row,(a,i)=>(C(),M(Le,{key:`tr3-${i}`},[e.descriptions.border?(C(),M(Le,{key:0},[Y(r,{cell:a,tag:"td",type:"label"},null,8,["cell"]),Y(r,{cell:a,tag:"td",type:"content"},null,8,["cell"])],64)):(C(),x(r,{key:1,cell:a,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}var Zv=ge(s9,[["render",r9],["__file","/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/descriptions-row.vue"]]);const a9=te({name:"ElDescriptions",components:{[Zv.name]:Zv},props:{border:{type:Boolean,default:!1},column:{type:Number,default:3},direction:{type:String,default:"horizontal"},size:{type:String,validator:On},title:{type:String,default:""},extra:{type:String,default:""}},setup(e,{slots:t}){st(yp,e);const n=Wt(),o=we("descriptions"),s=E(()=>[o.b(),o.is(o.m(n.value),!!n.value)]),l=i=>{const u=Array.isArray(i)?i:[i],c=[];return u.forEach(d=>{Array.isArray(d.children)?c.push(...l(d.children)):c.push(d)}),c},r=(i,u,c,d=!1)=>(i.props||(i.props={}),u>c&&(i.props.span=c),d&&(i.props.span=u),i);return{descriptionKls:s,getRows:()=>{var i;const u=l((i=t.default)==null?void 0:i.call(t)).filter(h=>{var g;return((g=h==null?void 0:h.type)==null?void 0:g.name)==="ElDescriptionsItem"}),c=[];let d=[],f=e.column,p=0;return u.forEach((h,g)=>{var m;const v=((m=h.props)==null?void 0:m.span)||1;if(gf?f:v),g===u.length-1){const y=e.column-p%e.column;d.push(r(h,y,f,!0)),c.push(d);return}v[it(he(e.title),1)])],2),D("div",{class:_(e.ns.e("extra"))},[ie(e.$slots,"extra",{},()=>[it(he(e.extra),1)])],2)],2)):G("v-if",!0),D("div",{class:_(e.ns.e("body"))},[D("table",{class:_([e.ns.e("table"),e.ns.is("bordered",e.border)])},[D("tbody",null,[(C(!0),M(Le,null,rt(e.getRows(),(a,i)=>(C(),x(r,{key:i,row:a},null,8,["row"]))),128))])],2)],2)],2)}var u9=ge(a9,[["render",i9],["__file","/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/index.vue"]]),Aw=te({name:"ElDescriptionsItem",props:{label:{type:String,default:""},span:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},align:{type:String,default:"left"},labelAlign:{type:String,default:""},className:{type:String,default:""},labelClassName:{type:String,default:""}}});const c9=ot(u9,{DescriptionsItem:Aw}),d9=Rt(Aw),f9=Ve({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:$e([String,Array,Object])},zIndex:{type:$e([String,Number])}}),p9={click:e=>e instanceof MouseEvent};var h9=te({name:"ElOverlay",props:f9,emits:p9,setup(e,{slots:t,emit:n}){const o=we("overlay"),s=i=>{n("click",i)},{onClick:l,onMousedown:r,onMouseup:a}=ip(e.customMaskEvent?void 0:s);return()=>e.mask?Y("div",{class:[o.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:l,onMousedown:r,onMouseup:a},[ie(t,"default")],Bn.STYLE|Bn.CLASS|Bn.PROPS,["onClick","onMouseup","onMousedown"]):Pe("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[ie(t,"default")])}});const wp=h9,Nw=Ve({center:{type:Boolean,default:!1},closeIcon:{type:nn,default:""},customClass:{type:String,default:""},draggable:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},title:{type:String,default:""}}),m9={close:()=>!0},v9=["aria-label"],g9={name:"ElDialogContent"},b9=te(Te(ne({},g9),{props:Nw,emits:m9,setup(e){const{Close:t}=f8,{dialogRef:n,headerRef:o,ns:s,style:l}=Ne(J0);return(r,a)=>(C(),M("div",{ref_key:"dialogRef",ref:n,class:_([b(s).b(),b(s).is("fullscreen",r.fullscreen),b(s).is("draggable",r.draggable),{[b(s).m("center")]:r.center},r.customClass]),"aria-modal":"true",role:"dialog","aria-label":r.title||"dialog",style:De(b(l)),onClick:a[1]||(a[1]=Ke(()=>{},["stop"]))},[D("div",{ref_key:"headerRef",ref:o,class:_(b(s).e("header"))},[ie(r.$slots,"title",{},()=>[D("span",{class:_(b(s).e("title"))},he(r.title),3)])],2),D("div",{class:_(b(s).e("body"))},[ie(r.$slots,"default")],2),r.$slots.footer?(C(),M("div",{key:0,class:_(b(s).e("footer"))},[ie(r.$slots,"footer")],2)):G("v-if",!0),r.showClose?(C(),M("button",{key:1,"aria-label":"close",class:_(b(s).e("headerbtn")),type:"button",onClick:a[0]||(a[0]=i=>r.$emit("close"))},[Y(b(je),{class:_(b(s).e("close"))},{default:j(()=>[(C(),x(ft(r.closeIcon||b(t))))]),_:1},8,["class"])],2)):G("v-if",!0)],14,v9))}}));var y9=ge(b9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue"]]);const Mw=Ve(Te(ne({},Nw),{appendToBody:{type:Boolean,default:!1},beforeClose:{type:$e(Function)},destroyOnClose:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:{type:Boolean,required:!0},modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1}})),Ow={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[tt]:e=>en(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Iw=(e,t)=>{const o=nt().emit,{nextZIndex:s}=jo();let l="";const r=A(!1),a=A(!1),i=A(!1),u=A(e.zIndex||s());let c,d;const f=E(()=>ht(e.width)?`${e.width}px`:e.width),p=E(()=>{const T={},O="--el-dialog";return e.fullscreen||(e.top&&(T[`${O}-margin-top`]=e.top),e.width&&(T[`${O}-width`]=f.value)),T});function h(){o("opened")}function g(){o("closed"),o(tt,!1),e.destroyOnClose&&(i.value=!1)}function m(){o("close")}function v(){d==null||d(),c==null||c(),e.openDelay&&e.openDelay>0?{stop:c}=ol(()=>$(),e.openDelay):$()}function y(){c==null||c(),d==null||d(),e.closeDelay&&e.closeDelay>0?{stop:d}=ol(()=>k(),e.closeDelay):k()}function w(){function T(O){O||(a.value=!0,r.value=!1)}e.beforeClose?e.beforeClose(T):y()}function S(){e.closeOnClickModal&&w()}function $(){!ct||(r.value=!0)}function k(){r.value=!1}return e.lockScroll&&a1(r),e.closeOnPressEscape&&i1({handleClose:w},r),u1(r),pe(()=>e.modelValue,T=>{T?(a.value=!1,v(),i.value=!0,o("open"),u.value=e.zIndex?u.value++:s(),ze(()=>{t.value&&(t.value.scrollTop=0)})):r.value&&y()}),pe(()=>e.fullscreen,T=>{!t.value||(T?(l=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=l)}),xe(()=>{e.modelValue&&(r.value=!0,i.value=!0,v())}),{afterEnter:h,afterLeave:g,beforeLeave:m,handleClose:w,onModalClick:S,close:y,doClose:k,closed:a,style:p,rendered:i,visible:r,zIndex:u}},w9={name:"ElDialog"},C9=te(Te(ne({},w9),{props:Mw,emits:Ow,setup(e,{expose:t}){const n=e,o=we("dialog"),s=A(),l=A(),{visible:r,style:a,rendered:i,zIndex:u,afterEnter:c,afterLeave:d,beforeLeave:f,handleClose:p,onModalClick:h}=Iw(n,s);st(J0,{dialogRef:s,headerRef:l,ns:o,rendered:i,style:a});const g=ip(h),m=E(()=>n.draggable&&!n.fullscreen);return r1(s,l,m),t({visible:r}),(v,y)=>(C(),x(Sa,{to:"body",disabled:!v.appendToBody},[Y(zt,{name:"dialog-fade",onAfterEnter:b(c),onAfterLeave:b(d),onBeforeLeave:b(f)},{default:j(()=>[Ge(Y(b(wp),{"custom-mask-event":"",mask:v.modal,"overlay-class":v.modalClass,"z-index":b(u)},{default:j(()=>[D("div",{class:_(`${b(o).namespace.value}-overlay-dialog`),onClick:y[0]||(y[0]=(...w)=>b(g).onClick&&b(g).onClick(...w)),onMousedown:y[1]||(y[1]=(...w)=>b(g).onMousedown&&b(g).onMousedown(...w)),onMouseup:y[2]||(y[2]=(...w)=>b(g).onMouseup&&b(g).onMouseup(...w))},[b(i)?(C(),x(y9,{key:0,"custom-class":v.customClass,center:v.center,"close-icon":v.closeIcon,draggable:b(m),fullscreen:v.fullscreen,"show-close":v.showClose,style:De(b(a)),title:v.title,onClose:b(p)},fs({title:j(()=>[ie(v.$slots,"title")]),default:j(()=>[ie(v.$slots,"default")]),_:2},[v.$slots.footer?{name:"footer",fn:j(()=>[ie(v.$slots,"footer")])}:void 0]),1032,["custom-class","center","close-icon","draggable","fullscreen","show-close","style","title","onClose"])):G("v-if",!0)],34)]),_:3},8,["mask","overlay-class","z-index"]),[[pt,b(r)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"]))}}));var $9=ge(C9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue"]]);const k9=ot($9),S9=Ve({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:$e(String),default:"solid"}}),E9={name:"ElDivider"},_9=te(Te(ne({},E9),{props:S9,setup(e){const t=e,n=we("divider"),o=E(()=>({"--el-border-style":t.borderStyle}));return(s,l)=>(C(),M("div",{class:_([b(n).b(),b(n).m(s.direction)]),style:De(b(o))},[s.$slots.default&&s.direction!=="vertical"?(C(),M("div",{key:0,class:_([b(n).e("text"),b(n).is(s.contentPosition)])},[ie(s.$slots,"default")],2)):G("v-if",!0)],6))}}));var T9=ge(_9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/divider/src/divider.vue"]]);const A9=ot(T9),N9=Ve(Te(ne({},Mw),{direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0}})),M9=Ow,O9=te({name:"ElDrawer",components:{ElOverlay:wp,ElIcon:je,Close:Yn},directives:{TrapFocus:H1},props:N9,emits:M9,setup(e,t){const n=A(),o=we("drawer"),s=E(()=>e.direction==="rtl"||e.direction==="ltr"),l=E(()=>typeof e.size=="number"?`${e.size}px`:e.size);return Te(ne({},Iw(e,t,n)),{drawerRef:n,isHorizontal:s,drawerSize:l,ns:o})}}),I9=["aria-labelledby","aria-label"],D9=["id"],P9=["title"],L9=["aria-label"];function R9(e,t,n,o,s,l){const r=le("close"),a=le("el-icon"),i=le("el-overlay"),u=Mn("trap-focus");return C(),x(Sa,{to:"body",disabled:!e.appendToBody},[Y(zt,{name:e.ns.b("fade"),onAfterEnter:e.afterEnter,onAfterLeave:e.afterLeave,onBeforeLeave:e.beforeLeave},{default:j(()=>[Ge(Y(i,{mask:e.modal,"overlay-class":e.modalClass,"z-index":e.zIndex,onClick:e.onModalClick},{default:j(()=>[Ge((C(),M("div",{ref:"drawerRef","aria-modal":"true","aria-labelledby":e.ns.e("title"),"aria-label":e.title,class:_([e.ns.b(),e.direction,e.visible&&"open",e.customClass]),style:De(e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize),role:"dialog",onClick:t[1]||(t[1]=Ke(()=>{},["stop"]))},[e.withHeader?(C(),M("header",{key:0,id:e.ns.e("title"),class:_(e.ns.e("header"))},[ie(e.$slots,"title",{},()=>[D("span",{role:"heading",title:e.title},he(e.title),9,P9)]),e.showClose?(C(),M("button",{key:0,"aria-label":"close "+(e.title||"drawer"),class:_(e.ns.e("close-btn")),type:"button",onClick:t[0]||(t[0]=(...c)=>e.handleClose&&e.handleClose(...c))},[Y(a,{class:_(e.ns.e("close"))},{default:j(()=>[Y(r)]),_:1},8,["class"])],10,L9)):G("v-if",!0)],10,D9)):G("v-if",!0),e.rendered?(C(),M("section",{key:1,class:_(e.ns.e("body"))},[ie(e.$slots,"default")],2)):G("v-if",!0),e.$slots.footer?(C(),M("div",{key:2,class:_(e.ns.e("footer"))},[ie(e.$slots,"footer")],2)):G("v-if",!0)],14,I9)),[[u]])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[pt,e.visible]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"])}var B9=ge(O9,[["render",R9],["__file","/home/runner/work/element-plus/element-plus/packages/components/drawer/src/drawer.vue"]]);const V9=ot(B9),Dw=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const s=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||s?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Qv=(e,t)=>{for(const n of e)if(!F9(n,t))return n},F9=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},H9=e=>{const t=Dw(e),n=Qv(t,e),o=Qv(t.reverse(),e);return[n,o]},z9=e=>e instanceof HTMLInputElement&&"select"in e,Is=(e,t)=>{if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&z9(e)&&t&&e.select()}};function xv(e,t){const n=[...e],o=e.indexOf(t);return o!==-1&&n.splice(o,1),n}const K9=()=>{let e=[];return{push:o=>{const s=e[0];s&&o!==s&&s.pause(),e=xv(e,o),e.unshift(o)},remove:o=>{var s,l;e=xv(e,o),(l=(s=e[0])==null?void 0:s.resume)==null||l.call(s)}}},W9=(e,t=!1)=>{const n=document.activeElement;for(const o of e)if(Is(o,t),document.activeElement!==n)return},eg=K9(),Sc="focus-trap.focus-on-mount",Ec="focus-trap.focus-on-unmount",tg={cancelable:!0,bubbles:!1},ng="mountOnFocus",og="unmountOnFocus",Pw=Symbol("elFocusTrap"),j9=te({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean},emits:[ng,og],setup(e,{emit:t}){const n=A(),o=A(null);let s,l;const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},a=p=>{if(!e.loop&&!e.trapped||r.paused)return;const{key:h,altKey:g,ctrlKey:m,metaKey:v,currentTarget:y,shiftKey:w}=p,{loop:S}=e,$=h===Ie.tab&&!g&&!m&&!v,k=document.activeElement;if($&&k){const T=y,[O,L]=H9(T);O&&L?!w&&k===L?(p.preventDefault(),S&&Is(O,!0)):w&&k===O&&(p.preventDefault(),S&&Is(L,!0)):k===T&&p.preventDefault()}};st(Pw,{focusTrapRef:o,onKeydown:a});const i=p=>{t(ng,p)},u=p=>t(og,p),c=p=>{const h=b(o);if(r.paused||!h)return;const g=p.target;g&&h.contains(g)?l=g:Is(l,!0)},d=p=>{const h=b(o);r.paused||!h||h.contains(p.relatedTarget)||Is(l,!0)},f=()=>{document.removeEventListener("focusin",c),document.removeEventListener("focusout",d)};return xe(()=>{const p=b(o);if(p){eg.push(r);const h=document.activeElement;if(s=h,!p.contains(h)){const m=new Event(Sc,tg);p.addEventListener(Sc,i),p.dispatchEvent(m),m.defaultPrevented||ze(()=>{W9(Dw(p),!0),document.activeElement===h&&Is(p)})}}pe(()=>e.trapped,h=>{h?(document.addEventListener("focusin",c),document.addEventListener("focusout",d)):f()},{immediate:!0})}),_t(()=>{f();const p=b(o);if(p){p.removeEventListener(Sc,i);const h=new Event(Ec,tg);p.addEventListener(Ec,u),p.dispatchEvent(h),h.defaultPrevented||Is(s!=null?s:document.body,!0),p.removeEventListener(Ec,i),eg.remove(r)}}),{focusTrapRef:n,forwardRef:o,onKeydown:a}}});function Y9(e,t,n,o,s,l){return ie(e.$slots,"default")}var U9=ge(j9,[["render",Y9],["__file","/home/runner/work/element-plus/element-plus/packages/components/focus-trap/src/focus-trap.vue"]]);const q9=te({inheritAttrs:!1});function G9(e,t,n,o,s,l){return ie(e.$slots,"default")}var X9=ge(q9,[["render",G9],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection.vue"]]);const J9=te({name:"ElCollectionItem",inheritAttrs:!1});function Z9(e,t,n,o,s,l){return ie(e.$slots,"default")}var Q9=ge(J9,[["render",Z9],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection-item.vue"]]);const Lw="data-el-collection-item",Rw=e=>{const t=`El${e}Collection`,n=`${t}Item`,o=Symbol(t),s=Symbol(n),l=Te(ne({},X9),{name:t,setup(){const a=A(null),i=new Map;st(o,{itemMap:i,getItems:()=>{const c=b(a);if(!c)return[];const d=Array.from(c.querySelectorAll(`[${Lw}]`));return[...i.values()].sort((h,g)=>d.indexOf(h.ref)-d.indexOf(g.ref))},collectionRef:a})}}),r=Te(ne({},Q9),{name:n,setup(a,{attrs:i}){const u=A(null),c=Ne(o,void 0);st(s,{collectionItemRef:u}),xe(()=>{const d=b(u);d&&c.itemMap.set(d,ne({ref:d},i))}),_t(()=>{const d=b(u);c.itemMap.delete(d)})}});return{COLLECTION_INJECTION_KEY:o,COLLECTION_ITEM_INJECTION_KEY:s,ElCollection:l,ElCollectionItem:r}},x9=Ve({style:{type:$e([String,Array,Object])},currentTabId:{type:$e(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:$e(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:eK,ElCollectionItem:tK,COLLECTION_INJECTION_KEY:Cp,COLLECTION_ITEM_INJECTION_KEY:nK}=Rw("RovingFocusGroup"),$p=Symbol("elRovingFocusGroup"),Bw=Symbol("elRovingFocusGroupItem"),oK={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},sK=(e,t)=>{if(t!=="rtl")return e;switch(e){case Ie.right:return Ie.left;case Ie.left:return Ie.right;default:return e}},lK=(e,t,n)=>{const o=sK(e.key,n);if(!(t==="vertical"&&[Ie.left,Ie.right].includes(o))&&!(t==="horizontal"&&[Ie.up,Ie.down].includes(o)))return oK[o]},rK=(e,t)=>e.map((n,o)=>e[(o+t)%e.length]),kp=e=>{const{activeElement:t}=document;for(const n of e)if(n===t||(n.focus(),t!==document.activeElement))return},sg="currentTabIdChange",_c="rovingFocusGroup.entryFocus",aK={bubbles:!1,cancelable:!0},iK=te({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:x9,emits:[sg,"entryFocus"],setup(e,{emit:t}){var n;const o=A((n=e.currentTabId||e.defaultCurrentTabId)!=null?n:null),s=A(!1),l=A(!1),r=A(null),{getItems:a}=Ne(Cp,void 0),i=E(()=>[{outline:"none"},e.style]),u=g=>{t(sg,g)},c=()=>{s.value=!0},d=Dt(g=>{var m;(m=e.onMousedown)==null||m.call(e,g)},()=>{l.value=!0}),f=Dt(g=>{var m;(m=e.onFocus)==null||m.call(e,g)},g=>{const m=!b(l),{target:v,currentTarget:y}=g;if(v===y&&m&&!b(s)){const w=new Event(_c,aK);if(y==null||y.dispatchEvent(w),!w.defaultPrevented){const S=a().filter(L=>L.focusable),$=S.find(L=>L.active),k=S.find(L=>L.id===b(o)),O=[$,k,...S].filter(Boolean).map(L=>L.ref);kp(O)}}l.value=!1}),p=Dt(g=>{var m;(m=e.onBlur)==null||m.call(e,g)},()=>{s.value=!1}),h=(...g)=>{t("entryFocus",...g)};st($p,{currentTabbedId:Ca(o),loop:Yt(e,"loop"),tabIndex:E(()=>b(s)?-1:0),rovingFocusGroupRef:r,rovingFocusGroupRootStyle:i,orientation:Yt(e,"orientation"),dir:Yt(e,"dir"),onItemFocus:u,onItemShiftTab:c,onBlur:p,onFocus:f,onMousedown:d}),pe(()=>e.currentTabId,g=>{o.value=g!=null?g:null}),xe(()=>{const g=b(r);Tt(g,_c,h)}),_t(()=>{const g=b(r);Vt(g,_c,h)})}});function uK(e,t,n,o,s,l){return ie(e.$slots,"default")}var cK=ge(iK,[["render",uK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group-impl.vue"]]);const dK=te({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:eK,ElRovingFocusGroupImpl:cK}});function fK(e,t,n,o,s,l){const r=le("el-roving-focus-group-impl"),a=le("el-focus-group-collection");return C(),x(a,null,{default:j(()=>[Y(r,to(ds(e.$attrs)),{default:j(()=>[ie(e.$slots,"default")]),_:3},16)]),_:3})}var pK=ge(dK,[["render",fK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group.vue"]]);const hK=te({components:{ElRovingFocusCollectionItem:tK},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(e,{emit:t}){const{currentTabbedId:n,loop:o,onItemFocus:s,onItemShiftTab:l}=Ne($p,void 0),{getItems:r}=Ne(Cp,void 0),a=up(),i=A(null),u=Dt(p=>{t("mousedown",p)},p=>{e.focusable?s(b(a)):p.preventDefault()}),c=Dt(p=>{t("focus",p)},()=>{s(b(a))}),d=Dt(p=>{t("keydown",p)},p=>{const{key:h,shiftKey:g,target:m,currentTarget:v}=p;if(h===Ie.tab&&g){l();return}if(m!==v)return;const y=lK(p);if(y){p.preventDefault();let S=r().filter($=>$.focusable).map($=>$.ref);switch(y){case"last":{S.reverse();break}case"prev":case"next":{y==="prev"&&S.reverse();const $=S.indexOf(v);S=o.value?rK(S,$+1):S.slice($+1);break}}ze(()=>{kp(S)})}}),f=E(()=>n.value===b(a));return st(Bw,{rovingFocusGroupItemRef:i,tabIndex:E(()=>b(f)?0:-1),handleMousedown:u,handleFocus:c,handleKeydown:d}),{id:a,handleKeydown:d,handleFocus:c,handleMousedown:u}}});function mK(e,t,n,o,s,l){const r=le("el-roving-focus-collection-item");return C(),x(r,{id:e.id,focusable:e.focusable,active:e.active},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["id","focusable","active"])}var vK=ge(hK,[["render",mK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-item.vue"]]);const ki=Ve({trigger:ua.trigger,effect:Te(ne({},Zt.effect),{default:"light"}),type:{type:$e(String)},placement:{type:$e(String),default:"bottom"},popperOptions:{type:$e(Object),default:()=>({})},size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:$e([Number,String]),default:0},maxHeight:{type:$e([Number,String]),default:""},popperClass:{type:String,default:""},disabled:{type:Boolean,default:!1},buttonProps:{type:$e(Object)}}),Vw=Ve({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:nn}}),gK=Ve({onKeydown:{type:$e(Function)}}),bK=[Ie.down,Ie.pageDown,Ie.home],Fw=[Ie.up,Ie.pageUp,Ie.end],yK=[...bK,...Fw],{ElCollection:wK,ElCollectionItem:CK,COLLECTION_INJECTION_KEY:$K,COLLECTION_ITEM_INJECTION_KEY:kK}=Rw("Dropdown"),Sp=Symbol("elDropdown"),{ButtonGroup:SK}=Kn,EK=te({name:"ElDropdown",components:{ElButton:Kn,ElFocusTrap:U9,ElButtonGroup:SK,ElScrollbar:Uo,ElDropdownCollection:wK,ElTooltip:mn,ElRovingFocusGroup:pK,ElIcon:je,ArrowDown:fl},props:ki,emits:["visible-change","click","command"],setup(e,{emit:t}){const n=nt(),o=we("dropdown"),s=A(),l=A(),r=A(null),a=A(null),i=A(null),u=A(null),c=A(!1),d=E(()=>({maxHeight:ro(e.maxHeight)})),f=E(()=>[o.m(m.value)]);function p(){h()}function h(){var O;(O=r.value)==null||O.onClose()}function g(){var O;(O=r.value)==null||O.onOpen()}const m=Wt();function v(...O){t("command",...O)}function y(){}function w(){const O=b(a);O==null||O.focus(),u.value=null}function S(O){u.value=O}function $(O){c.value||(O.preventDefault(),O.stopImmediatePropagation())}return st(Sp,{contentRef:a,isUsingKeyboard:c,onItemEnter:y,onItemLeave:w}),st("elDropdown",{instance:n,dropdownSize:m,handleClick:p,commandHandler:v,trigger:Yt(e,"trigger"),hideOnClick:Yt(e,"hideOnClick")}),{ns:o,scrollbar:i,wrapStyle:d,dropdownTriggerKls:f,dropdownSize:m,currentTabId:u,handleCurrentTabIdChange:S,handlerMainButtonClick:O=>{t("click",O)},handleEntryFocus:$,handleClose:h,handleOpen:g,onMountOnFocus:O=>{var L,B;O.preventDefault(),(B=(L=a.value)==null?void 0:L.focus)==null||B.call(L,{preventScroll:!0})},popperRef:r,triggeringElementRef:s,referenceElementRef:l}}});function _K(e,t,n,o,s,l){var r;const a=le("el-dropdown-collection"),i=le("el-roving-focus-group"),u=le("el-focus-trap"),c=le("el-scrollbar"),d=le("el-tooltip"),f=le("el-button"),p=le("arrow-down"),h=le("el-icon"),g=le("el-button-group");return C(),M("div",{class:_([e.ns.b(),e.ns.is("disabled",e.disabled)])},[Y(d,{ref:"popperRef",effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,"hide-after":e.trigger==="hover"?e.hideTimeout:0,"manual-mode":!0,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"reference-element":(r=e.referenceElementRef)==null?void 0:r.$el,trigger:e.trigger,"show-after":e.trigger==="hover"?e.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":e.triggeringElementRef,"virtual-triggering":e.splitButton,disabled:e.disabled,"append-to-body":"",pure:"",transition:`${e.ns.namespace.value}-zoom-in-top`,persistent:"",onShow:t[0]||(t[0]=m=>e.$emit("visible-change",!0)),onHide:t[1]||(t[1]=m=>e.$emit("visible-change",!1))},fs({content:j(()=>[Y(c,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:j(()=>[Y(u,{trapped:"",onMountOnFocus:e.onMountOnFocus},{default:j(()=>[Y(i,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:j(()=>[Y(a,null,{default:j(()=>[ie(e.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["onMountOnFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[e.splitButton?void 0:{name:"default",fn:j(()=>[D("div",{class:_(e.dropdownTriggerKls)},[ie(e.$slots,"default")],2)])}]),1032,["effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","show-after","virtual-ref","virtual-triggering","disabled","transition"]),e.splitButton?(C(),x(g,{key:0},{default:j(()=>[Y(f,Et({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,onClick:e.handlerMainButtonClick}),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["size","type","disabled","onClick"]),Y(f,Et({ref:"triggeringElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled}),{default:j(()=>[Y(h,{class:_(e.ns.e("icon"))},{default:j(()=>[Y(p)]),_:1},8,["class"])]),_:1},16,["size","type","class","disabled"])]),_:3})):G("v-if",!0)],2)}var TK=ge(EK,[["render",_K],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown.vue"]]);const AK=te({name:"DropdownItemImpl",components:{ElIcon:je},props:Vw,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:t}){const n=we("dropdown"),{collectionItemRef:o}=Ne(kK,void 0),{collectionItemRef:s}=Ne(nK,void 0),{rovingFocusGroupItemRef:l,tabIndex:r,handleFocus:a,handleKeydown:i,handleMousedown:u}=Ne(Bw,void 0),c=sp(o,s,l),d=Dt(f=>{const{code:p}=f;if(p===Ie.enter||p===Ie.space)return f.preventDefault(),f.stopImmediatePropagation(),t("clickimpl",f),!0},i);return{ns:n,itemRef:c,dataset:{[Lw]:""},tabIndex:r,handleFocus:a,handleKeydown:d,handleMousedown:u}}}),NK=["aria-disabled","tabindex"];function MK(e,t,n,o,s,l){const r=le("el-icon");return C(),M(Le,null,[e.divided?(C(),M("li",Et({key:0,class:e.ns.bem("menu","item","divided")},e.$attrs),null,16)):G("v-if",!0),D("li",Et({ref:e.itemRef},ne(ne({},e.dataset),e.$attrs),{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:"menuitem",onClick:t[0]||(t[0]=a=>e.$emit("clickimpl",a)),onFocus:t[1]||(t[1]=(...a)=>e.handleFocus&&e.handleFocus(...a)),onKeydown:t[2]||(t[2]=(...a)=>e.handleKeydown&&e.handleKeydown(...a)),onMousedown:t[3]||(t[3]=(...a)=>e.handleMousedown&&e.handleMousedown(...a)),onPointermove:t[4]||(t[4]=a=>e.$emit("pointermove",a)),onPointerleave:t[5]||(t[5]=a=>e.$emit("pointerleave",a))}),[e.icon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1})):G("v-if",!0),ie(e.$slots,"default")],16,NK)],64)}var OK=ge(AK,[["render",MK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item-impl.vue"]]);const Hw=()=>{const e=Ne("elDropdown",{}),t=E(()=>e==null?void 0:e.dropdownSize);return{elDropdown:e,_elDropdownSize:t}},IK=te({name:"ElDropdownItem",components:{ElDropdownCollectionItem:CK,ElRovingFocusItem:vK,ElDropdownItemImpl:OK},inheritAttrs:!1,props:Vw,emits:["pointermove","pointerleave","click"],setup(e,{emit:t,attrs:n}){const{elDropdown:o}=Hw(),s=nt(),l=A(null),r=E(()=>{var p,h;return(h=(p=b(l))==null?void 0:p.textContent)!=null?h:""}),{onItemEnter:a,onItemLeave:i}=Ne(Sp,void 0),u=Dt(p=>(t("pointermove",p),p.defaultPrevented),tv(p=>{var h;e.disabled?i(p):(a(p),p.defaultPrevented||(h=p.currentTarget)==null||h.focus())})),c=Dt(p=>(t("pointerleave",p),p.defaultPrevented),tv(p=>{i(p)})),d=Dt(p=>(t("click",p),p.defaultPrevented),p=>{var h,g,m;if(e.disabled){p.stopImmediatePropagation();return}(h=o==null?void 0:o.hideOnClick)!=null&&h.value&&((g=o.handleClick)==null||g.call(o)),(m=o.commandHandler)==null||m.call(o,e.command,s,p)}),f=E(()=>ne(ne({},e),n));return{handleClick:d,handlePointerMove:u,handlePointerLeave:c,textContent:r,propsAndAttrs:f}}});function DK(e,t,n,o,s,l){var r;const a=le("el-dropdown-item-impl"),i=le("el-roving-focus-item"),u=le("el-dropdown-collection-item");return C(),x(u,{disabled:e.disabled,"text-value":(r=e.textValue)!=null?r:e.textContent},{default:j(()=>[Y(i,{focusable:!e.disabled},{default:j(()=>[Y(a,Et(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var zw=ge(IK,[["render",DK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item.vue"]]);const PK=te({name:"ElDropdownMenu",props:gK,setup(e){const t=we("dropdown"),{_elDropdownSize:n}=Hw(),o=n.value,{focusTrapRef:s,onKeydown:l}=Ne(Pw,void 0),{contentRef:r}=Ne(Sp,void 0),{collectionRef:a,getItems:i}=Ne($K,void 0),{rovingFocusGroupRef:u,rovingFocusGroupRootStyle:c,tabIndex:d,onBlur:f,onFocus:p,onMousedown:h}=Ne($p,void 0),{collectionRef:g}=Ne(Cp,void 0),m=E(()=>[t.b("menu"),t.bm("menu",o==null?void 0:o.value)]),v=sp(r,a,s,u,g),y=Dt(S=>{var $;($=e.onKeydown)==null||$.call(e,S)},S=>{const{currentTarget:$,code:k,target:T}=S;if($.contains(T),Ie.tab===k&&S.stopImmediatePropagation(),S.preventDefault(),T!==b(r)||!yK.includes(k))return;const L=i().filter(B=>!B.disabled).map(B=>B.ref);Fw.includes(k)&&L.reverse(),kp(L)});return{size:o,rovingFocusGroupRootStyle:c,tabIndex:d,dropdownKls:m,dropdownListWrapperRef:v,handleKeydown:S=>{y(S),l(S)},onBlur:f,onFocus:p,onMousedown:h}}});function LK(e,t,n,o,s,l){return C(),M("ul",{ref:e.dropdownListWrapperRef,class:_(e.dropdownKls),style:De(e.rovingFocusGroupRootStyle),tabindex:-1,role:"menu",onBlur:t[0]||(t[0]=(...r)=>e.onBlur&&e.onBlur(...r)),onFocus:t[1]||(t[1]=(...r)=>e.onFocus&&e.onFocus(...r)),onKeydown:t[2]||(t[2]=(...r)=>e.handleKeydown&&e.handleKeydown(...r)),onMousedown:t[3]||(t[3]=(...r)=>e.onMousedown&&e.onMousedown(...r))},[ie(e.$slots,"default")],38)}var Kw=ge(PK,[["render",LK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-menu.vue"]]);const RK=ot(TK,{DropdownItem:zw,DropdownMenu:Kw}),BK=Rt(zw),VK=Rt(Kw);let FK=0;const HK=te({name:"ImgEmpty",setup(){return{id:++FK}}}),zK={viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},KK=["id"],WK=D("stop",{"stop-color":"var(--el-empty-fill-color-1)",offset:"0%"},null,-1),jK=D("stop",{"stop-color":"var(--el-empty-fill-color-4)",offset:"100%"},null,-1),YK=[WK,jK],UK=["id"],qK=D("stop",{"stop-color":"var(--el-empty-fill-color-1)",offset:"0%"},null,-1),GK=D("stop",{"stop-color":"var(--el-empty-fill-color-6)",offset:"100%"},null,-1),XK=[qK,GK],JK=["id"],ZK={id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},QK={id:"B-type",transform:"translate(-1268.000000, -535.000000)"},xK={id:"Group-2",transform:"translate(1268.000000, 535.000000)"},e7=D("path",{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:"var(--el-empty-fill-color-3)"},null,-1),t7=D("polygon",{id:"Rectangle-Copy-14",fill:"var(--el-empty-fill-color-7)",transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,-1),n7={id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},o7=D("polygon",{id:"Rectangle-Copy-10",fill:"var(--el-empty-fill-color-7)",transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,-1),s7=D("polygon",{id:"Rectangle-Copy-11",fill:"var(--el-empty-fill-color-5)",points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,-1),l7=["fill"],r7=D("polygon",{id:"Rectangle-Copy-13",fill:"var(--el-empty-fill-color-2)",transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,-1),a7=["fill"],i7={id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"},u7=["id"],c7=["xlink:href"],d7=["xlink:href"],f7=["mask"],p7=D("polygon",{id:"Rectangle-Copy-18",fill:"var(--el-empty-fill-color-2)",transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,-1);function h7(e,t,n,o,s,l){return C(),M("svg",zK,[D("defs",null,[D("linearGradient",{id:`linearGradient-1-${e.id}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},YK,8,KK),D("linearGradient",{id:`linearGradient-2-${e.id}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},XK,8,UK),D("rect",{id:`path-3-${e.id}`,x:"0",y:"0",width:"17",height:"36"},null,8,JK)]),D("g",ZK,[D("g",QK,[D("g",xK,[e7,t7,D("g",n7,[o7,s7,D("rect",{id:"Rectangle-Copy-12",fill:`url(#linearGradient-1-${e.id})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,l7),r7]),D("rect",{id:"Rectangle-Copy-15",fill:`url(#linearGradient-2-${e.id})`,x:"13",y:"45",width:"40",height:"36"},null,8,a7),D("g",i7,[D("mask",{id:`mask-4-${e.id}`,fill:"var(--el-empty-fill-color-0)"},[D("use",{"xlink:href":`#path-3-${e.id}`},null,8,c7)],8,u7),D("use",{id:"Mask",fill:"var(--el-empty-fill-color-8)",transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${e.id}`},null,8,d7),D("polygon",{id:"Rectangle-Copy",fill:"var(--el-empty-fill-color-9)",mask:`url(#mask-4-${e.id})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 -1.70530257e-13 16"},null,8,f7)]),p7])])])])}var m7=ge(HK,[["render",h7],["__file","/home/runner/work/element-plus/element-plus/packages/components/empty/src/img-empty.vue"]]);const v7={image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}},g7=["src"],b7={key:1},y7={name:"ElEmpty"},w7=te(Te(ne({},y7),{props:v7,setup(e){const t=e,{t:n}=kt(),o=we("empty"),s=E(()=>t.description||n("el.table.emptyText")),l=E(()=>({width:t.imageSize?`${t.imageSize}px`:""}));return(r,a)=>(C(),M("div",{class:_(b(o).b())},[D("div",{class:_(b(o).e("image")),style:De(b(l))},[r.image?(C(),M("img",{key:0,src:r.image,ondragstart:"return false"},null,8,g7)):ie(r.$slots,"image",{key:1},()=>[Y(m7)])],6),D("div",{class:_(b(o).e("description"))},[r.$slots.description?ie(r.$slots,"description",{key:0}):(C(),M("p",b7,he(b(s)),1))],2),r.$slots.default?(C(),M("div",{key:0,class:_(b(o).e("bottom"))},[ie(r.$slots,"default")],2)):G("v-if",!0)],2))}}));var C7=ge(w7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/empty/src/empty.vue"]]);const $7=ot(C7),k7=Ve({model:Object,rules:{type:$e(Object)},labelPosition:String,labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:{type:String,values:Eo},disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1},scrollToError:Boolean}),S7={validate:(e,t,n)=>(Xe(e)||Qe(e))&&en(t)&&Qe(n)};function E7(){const e=A([]),t=E(()=>{if(!e.value.length)return"0";const l=Math.max(...e.value);return l?`${l}px`:""});function n(l){return e.value.indexOf(l)}function o(l,r){if(l&&r){const a=n(r);e.value.splice(a,1,l)}else l&&e.value.push(l)}function s(l){const r=n(l);r>-1&&e.value.splice(r,1)}return{autoLabelWidth:t,registerLabelWidth:o,deregisterLabelWidth:s}}const Qa=(e,t)=>{const n=sa(t);return n.length>0?e.filter(o=>o.prop&&n.includes(o.prop)):e},_7={name:"ElForm"},T7=te(Te(ne({},_7),{props:k7,emits:S7,setup(e,{expose:t,emit:n}){const o=e,s=[],l=Wt(),r=we("form"),a=E(()=>{const{labelPosition:y,inline:w}=o;return[r.b(),r.m(l.value||"default"),{[r.m(`label-${y}`)]:y,[r.m("inline")]:w}]}),i=y=>{s.push(y)},u=y=>{y.prop&&s.splice(s.indexOf(y),1)},c=(y=[])=>{!o.model||Qa(s,y).forEach(w=>w.resetField())},d=(y=[])=>{Qa(s,y).forEach(w=>w.clearValidate())},f=E(()=>!!o.model),p=y=>{if(s.length===0)return[];const w=Qa(s,y);return w.length?w:[]},h=async y=>m(void 0,y),g=async(y=[])=>{if(!f.value)return!1;const w=p(y);if(w.length===0)return!0;let S={};for(const $ of w)try{await $.validate("")}catch(k){S=ne(ne({},S),k)}return Object.keys(S).length===0?!0:Promise.reject(S)},m=async(y=[],w)=>{const S=!et(w);try{const $=await g(y);return $===!0&&(w==null||w($)),$}catch($){const k=$;return o.scrollToError&&v(Object.keys(k)[0]),w==null||w(!1,k),S&&Promise.reject(k)}},v=y=>{var w;const S=Qa(s,y)[0];S&&((w=S.$el)==null||w.scrollIntoView())};return pe(()=>o.rules,()=>{o.validateOnRuleChange&&h()},{deep:!0}),st(Dn,yt(ne(Te(ne({},Ut(o)),{emit:n,resetFields:c,clearValidate:d,validateField:m,addField:i,removeField:u}),E7()))),t({validate:h,validateField:m,resetFields:c,clearValidate:d,scrollToField:v}),(y,w)=>(C(),M("form",{class:_(b(a))},[ie(y.$slots,"default")],2))}}));var A7=ge(T7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form.vue"]]);function Hs(){return Hs=Object.assign||function(e){for(var t=1;t1?t-1:0),o=1;o=l)return a;switch(a){case"%s":return String(n[s++]);case"%d":return Number(n[s++]);case"%j":try{return JSON.stringify(n[s++])}catch{return"[Circular]"}break;default:return a}});return r}return e}function P7(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Gt(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||P7(t)&&typeof e=="string"&&!e)}function L7(e,t,n){var o=[],s=0,l=e.length;function r(a){o.push.apply(o,a||[]),s++,s===l&&n(o)}e.forEach(function(a){t(a,r)})}function lg(e,t,n){var o=0,s=e.length;function l(r){if(r&&r.length){n(r);return}var a=o;o=o+1,a()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Or={integer:function(t){return Or.number(t)&&parseInt(t,10)===t},float:function(t){return Or.number(t)&&!Or.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!Or.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(Tc.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(Tc.url)},hex:function(t){return typeof t=="string"&&!!t.match(Tc.hex)}},z7=function(t,n,o,s,l){if(t.required&&n===void 0){Ww(t,n,o,s,l);return}var r=["integer","float","array","regexp","object","method","email","number","date","url","hex"],a=t.type;r.indexOf(a)>-1?Or[a](n)||s.push(kn(l.messages.types[a],t.fullField,t.type)):a&&typeof n!==t.type&&s.push(kn(l.messages.types[a],t.fullField,t.type))},K7=function(t,n,o,s,l){var r=typeof t.len=="number",a=typeof t.min=="number",i=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=n,d=null,f=typeof n=="number",p=typeof n=="string",h=Array.isArray(n);if(f?d="number":p?d="string":h&&(d="array"),!d)return!1;h&&(c=n.length),p&&(c=n.replace(u,"_").length),r?c!==t.len&&s.push(kn(l.messages[d].len,t.fullField,t.len)):a&&!i&&ct.max?s.push(kn(l.messages[d].max,t.fullField,t.max)):a&&i&&(ct.max)&&s.push(kn(l.messages[d].range,t.fullField,t.min,t.max))},wl="enum",W7=function(t,n,o,s,l){t[wl]=Array.isArray(t[wl])?t[wl]:[],t[wl].indexOf(n)===-1&&s.push(kn(l.messages[wl],t.fullField,t[wl].join(", ")))},j7=function(t,n,o,s,l){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||s.push(kn(l.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var r=new RegExp(t.pattern);r.test(n)||s.push(kn(l.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},Ct={required:Ww,whitespace:H7,type:z7,range:K7,enum:W7,pattern:j7},Y7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"string")&&!t.required)return o();Ct.required(t,n,s,r,l,"string"),Gt(n,"string")||(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l),Ct.pattern(t,n,s,r,l),t.whitespace===!0&&Ct.whitespace(t,n,s,r,l))}o(r)},U7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},q7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(n===""&&(n=void 0),Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},G7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},X7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),Gt(n)||Ct.type(t,n,s,r,l)}o(r)},J7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},Z7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},Q7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(n==null&&!t.required)return o();Ct.required(t,n,s,r,l,"array"),n!=null&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},x7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},eW="enum",tW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct[eW](t,n,s,r,l)}o(r)},nW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"string")&&!t.required)return o();Ct.required(t,n,s,r,l),Gt(n,"string")||Ct.pattern(t,n,s,r,l)}o(r)},oW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"date")&&!t.required)return o();if(Ct.required(t,n,s,r,l),!Gt(n,"date")){var i;n instanceof Date?i=n:i=new Date(n),Ct.type(t,i,s,r,l),i&&Ct.range(t,i.getTime(),s,r,l)}}o(r)},sW=function(t,n,o,s,l){var r=[],a=Array.isArray(n)?"array":typeof n;Ct.required(t,n,s,r,l,a),o(r)},Ac=function(t,n,o,s,l){var r=t.type,a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(Gt(n,r)&&!t.required)return o();Ct.required(t,n,s,a,l,r),Gt(n,r)||Ct.type(t,n,s,a,l)}o(a)},lW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l)}o(r)},Yr={string:Y7,method:U7,number:q7,boolean:G7,regexp:X7,integer:J7,float:Z7,array:Q7,object:x7,enum:tW,pattern:nW,date:oW,url:Ac,hex:Ac,email:Ac,required:sW,any:lW};function Rd(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var Bd=Rd(),Ia=function(){function e(n){this.rules=null,this._messages=Bd,this.define(n)}var t=e.prototype;return t.define=function(o){var s=this;if(!o)throw new Error("Cannot configure a schema with no rules");if(typeof o!="object"||Array.isArray(o))throw new Error("Rules must be an object");this.rules={},Object.keys(o).forEach(function(l){var r=o[l];s.rules[l]=Array.isArray(r)?r:[r]})},t.messages=function(o){return o&&(this._messages=ig(Rd(),o)),this._messages},t.validate=function(o,s,l){var r=this;s===void 0&&(s={}),l===void 0&&(l=function(){});var a=o,i=s,u=l;if(typeof i=="function"&&(u=i,i={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,a),Promise.resolve(a);function c(g){var m=[],v={};function y(S){if(Array.isArray(S)){var $;m=($=m).concat.apply($,S)}else m.push(S)}for(var w=0;w");const s=we("form"),l=A(),r=A(0),a=()=>{var c;if((c=l.value)!=null&&c.firstElementChild){const d=window.getComputedStyle(l.value.firstElementChild).width;return Math.ceil(Number.parseFloat(d))}else return 0},i=(c="update")=>{ze(()=>{t.default&&e.isAutoWidth&&(c==="update"?r.value=a():c==="remove"&&n.deregisterLabelWidth(r.value))})},u=()=>i("update");return xe(()=>{u()}),_t(()=>{i("remove")}),Xn(()=>u()),pe(r,(c,d)=>{e.updateAll&&n.registerLabelWidth(c,d)}),ar(E(()=>{var c,d;return(d=(c=l.value)==null?void 0:c.firstElementChild)!=null?d:null}),u),()=>{var c,d;if(!t)return null;const{isAutoWidth:f}=e;if(f){const p=n.autoLabelWidth,h={};if(p&&p!=="auto"){const g=Math.max(0,Number.parseInt(p,10)-r.value),m=n.labelPosition==="left"?"marginRight":"marginLeft";g&&(h[m]=`${g}px`)}return Y("div",{ref:l,class:[s.be("item","label-wrap")],style:h},[(c=t.default)==null?void 0:c.call(t)])}else return Y(Le,{ref:l},[(d=t.default)==null?void 0:d.call(t)])}}});const uW=["for"],cW={name:"ElFormItem"},dW=te(Te(ne({},cW),{props:aW,setup(e,{expose:t}){const n=e,o="ElFormItem",s=_a(),l=Ne(Dn);l||Kt(o,"usage: ");const r=Ne(Un,void 0),a=Wt(void 0,{formItem:!1}),i=we("form-item"),u=A(""),c=FI(u,100),d=A(""),f=A();let p,h=!1;const g=E(()=>{if(l.labelPosition==="top")return{};const J=ro(n.labelWidth||l.labelWidth||"");return J?{width:J}:{}}),m=E(()=>{if(l.labelPosition==="top"||l.inline)return{};if(!n.label&&!n.labelWidth&&k)return{};const J=ro(n.labelWidth||l.labelWidth||"");return!n.label&&!s.label?{marginLeft:J}:{}}),v=E(()=>[i.b(),i.m(a.value),i.is("error",u.value==="error"),i.is("validating",u.value==="validating"),i.is("success",u.value==="success"),i.is("required",V.value||n.required),i.is("no-asterisk",l.hideRequiredAsterisk),{[i.m("feedback")]:l.statusIcon}]),y=E(()=>en(n.inlineMessage)?n.inlineMessage:l.inlineMessage||!1),w=E(()=>[i.e("error"),{[i.em("error","inline")]:y.value}]),S=E(()=>n.prop?Qe(n.prop)?n.prop:n.prop.join("."):""),$=E(()=>n.for||S.value),k=!!r,T=E(()=>{const J=l.model;if(!(!J||!n.prop))return fi(J,n.prop).value}),O=E(()=>{const J=n.rules?sa(n.rules):[],ae=l.rules;if(ae&&n.prop){const Ee=fi(ae,n.prop).value;Ee&&J.push(...sa(Ee))}return n.required!==void 0&&J.push({required:!!n.required}),J}),L=E(()=>O.value.length>0),B=J=>O.value.filter(Ee=>!Ee.trigger||!J?!0:Array.isArray(Ee.trigger)?Ee.trigger.includes(J):Ee.trigger===J).map(Z=>{var ve=Z,{trigger:Ee}=ve,Me=Kp(ve,["trigger"]);return Me}),V=E(()=>O.value.some(J=>J.required===!0)),H=E(()=>c.value==="error"&&n.showMessage&&l.showMessage),R=E(()=>`${n.label||""}${l.labelSuffix||""}`),z=J=>{u.value=J},W=J=>{var ae,Ee;const{errors:Me,fields:Z}=J;(!Me||!Z)&&console.error(J),z("error"),d.value=Me?(Ee=(ae=Me==null?void 0:Me[0])==null?void 0:ae.message)!=null?Ee:`${n.prop} is required`:"",l.emit("validate",n.prop,!1,d.value)},P=()=>{z("success"),l.emit("validate",n.prop,!0,"")},N=async J=>{const ae=S.value;return new Ia({[ae]:J}).validate({[ae]:T.value},{firstFields:!0}).then(()=>(P(),!0)).catch(Me=>(W(Me),Promise.reject(Me)))},I=async(J,ae)=>{if(h)return h=!1,!1;const Ee=et(ae);if(!L.value)return ae==null||ae(!1),!1;const Me=B(J);return Me.length===0?(ae==null||ae(!0),!0):(z("validating"),N(Me).then(()=>(ae==null||ae(!0),!0)).catch(Z=>{const{fields:ve}=Z;return ae==null||ae(!1,ve),Ee?!1:Promise.reject(ve)}))},U=()=>{z(""),d.value=""},q=async()=>{const J=l.model;if(!J||!n.prop)return;const ae=fi(J,n.prop);_n(ae.value,p)||(h=!0),ae.value=p,await ze(),U()};pe(()=>n.error,J=>{d.value=J||"",z(J?"error":"")},{immediate:!0}),pe(()=>n.validateStatus,J=>z(J||""));const Q=yt(Te(ne({},Ut(n)),{$el:f,size:a,validateState:u,resetField:q,clearValidate:U,validate:I}));return st(Un,Q),xe(()=>{n.prop&&(l.addField(Q),p=T3(T.value))}),_t(()=>{l.removeField(Q)}),t({size:a,validateMessage:d,validateState:u,validate:I,clearValidate:U,resetField:q}),(J,ae)=>(C(),M("div",{ref_key:"formItemRef",ref:f,class:_(b(v))},[Y(b(iW),{"is-auto-width":b(g).width==="auto","update-all":b(l).labelWidth==="auto"},{default:j(()=>[J.label||J.$slots.label?(C(),M("label",{key:0,for:b($),class:_(b(i).e("label")),style:De(b(g))},[ie(J.$slots,"label",{label:b(R)},()=>[it(he(b(R)),1)])],14,uW)):G("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),D("div",{class:_(b(i).e("content")),style:De(b(m))},[ie(J.$slots,"default"),Y(zt,{name:`${b(i).namespace.value}-zoom-in-top`},{default:j(()=>[b(H)?ie(J.$slots,"error",{key:0,error:d.value},()=>[D("div",{class:_(b(w))},he(d.value),3)]):G("v-if",!0)]),_:3},8,["name"])],6)],2))}}));var jw=ge(dW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form-item.vue"]]);const fW=ot(A7,{FormItem:jw}),pW=Rt(jw),hW=Ve({urlList:{type:$e(Array),default:()=>Pt([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:{type:Boolean,default:!1},teleported:{type:Boolean,default:!1}}),mW={close:()=>!0,switch:e=>typeof e=="number"},vW=["src"],gW={name:"ElImageViewer"},bW=te(Te(ne({},gW),{props:hW,emits:mW,setup(e,{emit:t}){const n=e,o={CONTAIN:{name:"contain",icon:Jr(lP)},ORIGINAL:{name:"original",icon:Jr(CL)}},s=lp()?"DOMMouseScroll":"mousewheel",{t:l}=kt(),r=we("image-viewer"),{nextZIndex:a}=jo(),i=A(),u=A([]),c=TE(),d=A(!0),f=A(n.initialIndex),p=A(o.CONTAIN),h=A({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),g=E(()=>{const{urlList:P}=n;return P.length<=1}),m=E(()=>f.value===0),v=E(()=>f.value===n.urlList.length-1),y=E(()=>n.urlList[f.value]),w=E(()=>{const{scale:P,deg:N,offsetX:I,offsetY:U,enableTransition:q}=h.value;let Q=I/P,J=U/P;switch(N%360){case 90:case-270:[Q,J]=[J,-Q];break;case 180:case-180:[Q,J]=[-Q,-J];break;case 270:case-90:[Q,J]=[-J,Q];break}const ae={transform:`scale(${P}) rotate(${N}deg) translate(${Q}px, ${J}px)`,transition:q?"transform .3s":""};return p.value.name===o.CONTAIN.name&&(ae.maxWidth=ae.maxHeight="100%"),ae}),S=E(()=>ht(n.zIndex)?n.zIndex:a());function $(){T(),t("close")}function k(){const P=qs(I=>{switch(I.code){case Ie.esc:$();break;case Ie.space:H();break;case Ie.left:R();break;case Ie.up:W("zoomIn");break;case Ie.right:z();break;case Ie.down:W("zoomOut");break}}),N=qs(I=>{(I.wheelDelta?I.wheelDelta:-I.detail)>0?W("zoomIn",{zoomRate:1.2,enableTransition:!1}):W("zoomOut",{zoomRate:1.2,enableTransition:!1})});c.run(()=>{Ht(document,"keydown",P),Ht(document,s,N)})}function T(){c.stop()}function O(){d.value=!1}function L(P){d.value=!1,P.target.alt=l("el.image.error")}function B(P){if(d.value||P.button!==0||!i.value)return;h.value.enableTransition=!1;const{offsetX:N,offsetY:I}=h.value,U=P.pageX,q=P.pageY,Q=qs(ae=>{h.value=Te(ne({},h.value),{offsetX:N+ae.pageX-U,offsetY:I+ae.pageY-q})}),J=Ht(document,"mousemove",Q);Ht(document,"mouseup",()=>{J()}),P.preventDefault()}function V(){h.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function H(){if(d.value)return;const P=Object.keys(o),N=Object.values(o),I=p.value.name,q=(N.findIndex(Q=>Q.name===I)+1)%P.length;p.value=o[P[q]],V()}function R(){if(m.value&&!n.infinite)return;const P=n.urlList.length;f.value=(f.value-1+P)%P}function z(){if(v.value&&!n.infinite)return;const P=n.urlList.length;f.value=(f.value+1)%P}function W(P,N={}){if(d.value)return;const{zoomRate:I,rotateDeg:U,enableTransition:q}=ne({zoomRate:1.4,rotateDeg:90,enableTransition:!0},N);switch(P){case"zoomOut":h.value.scale>.2&&(h.value.scale=Number.parseFloat((h.value.scale/I).toFixed(3)));break;case"zoomIn":h.value.scale<7&&(h.value.scale=Number.parseFloat((h.value.scale*I).toFixed(3)));break;case"clockwise":h.value.deg+=U;break;case"anticlockwise":h.value.deg-=U;break}h.value.enableTransition=q}return pe(y,()=>{ze(()=>{const P=u.value[0];P!=null&&P.complete||(d.value=!0)})}),pe(f,P=>{V(),t("switch",P)}),xe(()=>{var P,N;k(),(N=(P=i.value)==null?void 0:P.focus)==null||N.call(P)}),(P,N)=>(C(),x(Sa,{to:"body",disabled:!P.teleported},[Y(zt,{name:"viewer-fade",appear:""},{default:j(()=>[D("div",{ref_key:"wrapper",ref:i,tabindex:-1,class:_(b(r).e("wrapper")),style:De({zIndex:b(S)})},[D("div",{class:_(b(r).e("mask")),onClick:N[0]||(N[0]=Ke(I=>P.hideOnClickModal&&$(),["self"]))},null,2),G(" CLOSE "),D("span",{class:_([b(r).e("btn"),b(r).e("close")]),onClick:$},[Y(b(je),null,{default:j(()=>[Y(b(Yn))]),_:1})],2),G(" ARROW "),b(g)?G("v-if",!0):(C(),M(Le,{key:0},[D("span",{class:_([b(r).e("btn"),b(r).e("prev"),b(r).is("disabled",!P.infinite&&b(m))]),onClick:R},[Y(b(je),null,{default:j(()=>[Y(b(pl))]),_:1})],2),D("span",{class:_([b(r).e("btn"),b(r).e("next"),b(r).is("disabled",!P.infinite&&b(v))]),onClick:z},[Y(b(je),null,{default:j(()=>[Y(b(Jn))]),_:1})],2)],64)),G(" ACTIONS "),D("div",{class:_([b(r).e("btn"),b(r).e("actions")])},[D("div",{class:_(b(r).e("actions__inner"))},[Y(b(je),{onClick:N[1]||(N[1]=I=>W("zoomOut"))},{default:j(()=>[Y(b(d8))]),_:1}),Y(b(je),{onClick:N[2]||(N[2]=I=>W("zoomIn"))},{default:j(()=>[Y(b(B0))]),_:1}),D("i",{class:_(b(r).e("actions__divider"))},null,2),Y(b(je),{onClick:H},{default:j(()=>[(C(),x(ft(p.value.icon)))]),_:1}),D("i",{class:_(b(r).e("actions__divider"))},null,2),Y(b(je),{onClick:N[3]||(N[3]=I=>W("anticlockwise"))},{default:j(()=>[Y(b(uL))]),_:1}),Y(b(je),{onClick:N[4]||(N[4]=I=>W("clockwise"))},{default:j(()=>[Y(b(mL))]),_:1})],2)],2),G(" CANVAS "),D("div",{class:_(b(r).e("canvas"))},[(C(!0),M(Le,null,rt(P.urlList,(I,U)=>Ge((C(),M("img",{ref_for:!0,ref:q=>u.value[U]=q,key:I,src:I,style:De(b(w)),class:_(b(r).e("img")),onLoad:O,onError:L,onMousedown:B},null,46,vW)),[[pt,U===f.value]])),128))],2),ie(P.$slots,"default")],6)]),_:3})],8,["disabled"]))}}));var yW=ge(bW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue"]]);const Yw=ot(yW),wW=Ve({appendToBody:{type:Boolean,default:void 0},hideOnClickModal:{type:Boolean,default:!1},src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},lazy:{type:Boolean,default:!1},scrollContainer:{type:$e([String,Object])},previewSrcList:{type:$e(Array),default:()=>Pt([])},previewTeleported:{type:Boolean,default:!1},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0}}),CW={error:e=>e instanceof Event,switch:e=>ht(e),close:()=>!0},$W=["src"],kW={key:0},SW={name:"ElImage"},EW=te(Te(ne({},SW),{props:wW,emits:CW,setup(e,{emit:t}){const n=e;let o="";Ma({scope:"el-image",from:"append-to-body",replacement:"preview-teleported",version:"2.2.0",ref:"https://element-plus.org/en-US/component/image.html#image-attributess"},E(()=>en(n.appendToBody)));const{t:s}=kt(),l=we("image"),r=rp(),a=A(!1),i=A(!0),u=A(0),c=A(0),d=A(!1),f=A(),p=A();let h,g;const m=E(()=>r.value.style),v=E(()=>{const{fit:P}=n;return ct&&P?{objectFit:P}:{}}),y=E(()=>{const{previewSrcList:P}=n;return Array.isArray(P)&&P.length>0}),w=E(()=>n.appendToBody||n.previewTeleported),S=E(()=>{const{previewSrcList:P,initialIndex:N}=n;let I=N;return N>P.length-1&&(I=0),I}),$=()=>{if(!ct)return;i.value=!0,a.value=!1;const P=new Image,N=n.src;P.addEventListener("load",I=>{N===n.src&&k(I,P)}),P.addEventListener("error",I=>{N===n.src&&T(I)}),Object.entries(r.value).forEach(([I,U])=>{I.toLowerCase()!=="onload"&&P.setAttribute(I,U)}),P.src=N};function k(P,N){u.value=N.width,c.value=N.height,i.value=!1,a.value=!1}function T(P){i.value=!1,a.value=!0,t("error",P)}function O(){GI(f.value,p.value)&&($(),V())}const L=M0(O,200);async function B(){var P;if(!ct)return;await ze();const{scrollContainer:N}=n;sl(N)?p.value=N:Qe(N)&&N!==""?p.value=(P=document.querySelector(N))!=null?P:void 0:f.value&&(p.value=tp(f.value)),p.value&&(h=Ht(p,"scroll",L),setTimeout(()=>O(),100))}function V(){!ct||!p.value||!L||(h(),p.value=void 0)}function H(P){if(!!P.ctrlKey){if(P.deltaY<0)return P.preventDefault(),!1;if(P.deltaY>0)return P.preventDefault(),!1}}function R(){!y.value||(g=Ht("wheel",H,{passive:!1}),o=document.body.style.overflow,document.body.style.overflow="hidden",d.value=!0)}function z(){g==null||g(),document.body.style.overflow=o,d.value=!1,t("close")}function W(P){t("switch",P)}return pe(()=>n.src,()=>{n.lazy?(i.value=!0,a.value=!1,V(),B()):$()}),xe(()=>{n.lazy?B():$()}),(P,N)=>(C(),M("div",{ref_key:"container",ref:f,class:_([b(l).b(),P.$attrs.class]),style:De(b(m))},[i.value?ie(P.$slots,"placeholder",{key:0},()=>[D("div",{class:_(b(l).e("placeholder"))},null,2)]):a.value?ie(P.$slots,"error",{key:1},()=>[D("div",{class:_(b(l).e("error"))},he(b(s)("el.image.error")),3)]):(C(),M("img",Et({key:2},b(r),{src:P.src,style:b(v),class:[b(l).e("inner"),b(y)?b(l).e("preview"):""],onClick:R}),null,16,$W)),b(y)?(C(),M(Le,{key:3},[d.value?(C(),x(b(Yw),{key:0,"z-index":P.zIndex,"initial-index":b(S),infinite:P.infinite,"url-list":P.previewSrcList,"hide-on-click-modal":P.hideOnClickModal,teleported:b(w),onClose:z,onSwitch:W},{default:j(()=>[P.$slots.viewer?(C(),M("div",kW,[ie(P.$slots,"viewer")])):G("v-if",!0)]),_:3},8,["z-index","initial-index","infinite","url-list","hide-on-click-modal","teleported"])):G("v-if",!0)],2112)):G("v-if",!0)],6))}}));var _W=ge(EW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image/src/image.vue"]]);const TW=ot(_W),AW=Ve({step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:{type:Number},disabled:{type:Boolean,default:!1},size:{type:String,values:Eo},controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},name:String,label:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)}}),NW={change:(e,t)=>e!==t,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,input:e=>ht(e),"update:modelValue":e=>ht(e)||e===void 0},MW=te({name:"ElInputNumber",components:{ElInput:Zn,ElIcon:je,ArrowUp:Aa,ArrowDown:fl,Plus:L0,Minus:AP},directives:{RepeatClick:F1},props:AW,emits:NW,setup(e,{emit:t}){const n=A(),o=yt({currentValue:e.modelValue,userInput:null}),{formItem:s}=dr(),l=we("input-number"),r=E(()=>g(e.modelValue,-1)g(e.modelValue)>e.max),i=E(()=>{const B=h(e.step);return Cn(e.precision)?Math.max(h(e.modelValue),B):(B>e.precision,e.precision)}),u=E(()=>e.controls&&e.controlsPosition==="right"),c=Wt(),d=hl(),f=E(()=>{if(o.userInput!==null)return o.userInput;let B=o.currentValue;if(ht(B)){if(Number.isNaN(B))return"";Cn(e.precision)||(B=B.toFixed(e.precision))}return B}),p=(B,V)=>(Cn(V)&&(V=i.value),Number.parseFloat(`${Math.round(B*10**V)/10**V}`)),h=B=>{if(Cn(B))return 0;const V=B.toString(),H=V.indexOf(".");let R=0;return H!==-1&&(R=V.length-H-1),R},g=(B,V=1)=>ht(B)?(B=ht(B)?B:Number.NaN,p(B+e.step*V)):o.currentValue,m=()=>{if(d.value||a.value)return;const B=e.modelValue||0,V=g(B);w(V)},v=()=>{if(d.value||r.value)return;const B=e.modelValue||0,V=g(B,-1);w(V)},y=(B,V)=>{const{max:H,min:R,step:z,precision:W,stepStrictly:P}=e;let N=Number(B);return B===null&&(N=Number.NaN),Number.isNaN(N)||(P&&(N=Math.round(N/z)*z),Cn(W)||(N=p(N,W)),(N>H||NH?H:R,V&&t("update:modelValue",N))),N},w=B=>{var V;const H=o.currentValue;let R=y(B);H!==R&&(Number.isNaN(R)&&(R=void 0),o.userInput=null,t("update:modelValue",R),t("input",R),t("change",R,H),(V=s==null?void 0:s.validate)==null||V.call(s,"change").catch(z=>void 0),o.currentValue=R)},S=B=>o.userInput=B,$=B=>{const V=B!==""?Number(B):"";(ht(V)&&!Number.isNaN(V)||B==="")&&w(V),o.userInput=null},k=()=>{var B,V;(V=(B=n.value)==null?void 0:B.focus)==null||V.call(B)},T=()=>{var B,V;(V=(B=n.value)==null?void 0:B.blur)==null||V.call(B)},O=B=>{t("focus",B)},L=B=>{var V;t("blur",B),(V=s==null?void 0:s.validate)==null||V.call(s,"blur").catch(H=>void 0)};return pe(()=>e.modelValue,B=>{const V=y(B,!0);o.currentValue=V,o.userInput=null},{immediate:!0}),xe(()=>{var B;const V=(B=n.value)==null?void 0:B.input;if(V.setAttribute("role","spinbutton"),V.setAttribute("aria-valuemax",String(e.max)),V.setAttribute("aria-valuemin",String(e.min)),V.setAttribute("aria-valuenow",String(o.currentValue)),V.setAttribute("aria-disabled",String(d.value)),!ht(e.modelValue)){let H=Number(e.modelValue);Number.isNaN(H)&&(H=void 0),t("update:modelValue",H)}}),Xn(()=>{var B;const V=(B=n.value)==null?void 0:B.input;V==null||V.setAttribute("aria-valuenow",o.currentValue)}),{input:n,displayValue:f,handleInput:S,handleInputChange:$,controlsAtRight:u,decrease:v,increase:m,inputNumberSize:c,inputNumberDisabled:d,maxDisabled:a,minDisabled:r,focus:k,blur:T,handleFocus:O,handleBlur:L,ns:l}}});function OW(e,t,n,o,s,l){const r=le("arrow-down"),a=le("minus"),i=le("el-icon"),u=le("arrow-up"),c=le("plus"),d=le("el-input"),f=Mn("repeat-click");return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.inputNumberSize),e.ns.is("disabled",e.inputNumberDisabled),e.ns.is("without-controls",!e.controls),e.ns.is("controls-right",e.controlsAtRight)]),onDragstart:t[2]||(t[2]=Ke(()=>{},["prevent"]))},[e.controls?Ge((C(),M("span",{key:0,role:"button",class:_([e.ns.e("decrease"),e.ns.is("disabled",e.minDisabled)]),onKeydown:t[0]||(t[0]=lt((...p)=>e.decrease&&e.decrease(...p),["enter"]))},[Y(i,null,{default:j(()=>[e.controlsAtRight?(C(),x(r,{key:0})):(C(),x(a,{key:1}))]),_:1})],34)),[[f,e.decrease]]):G("v-if",!0),e.controls?Ge((C(),M("span",{key:1,role:"button",class:_([e.ns.e("increase"),e.ns.is("disabled",e.maxDisabled)]),onKeydown:t[1]||(t[1]=lt((...p)=>e.increase&&e.increase(...p),["enter"]))},[Y(i,null,{default:j(()=>[e.controlsAtRight?(C(),x(u,{key:0})):(C(),x(c,{key:1}))]),_:1})],34)),[[f,e.increase]]):G("v-if",!0),Y(d,{ref:"input",type:"number",step:e.step,"model-value":e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label,"validate-event":!1,onKeydown:[lt(Ke(e.increase,["prevent"]),["up"]),lt(Ke(e.decrease,["prevent"]),["down"])],onBlur:e.handleBlur,onFocus:e.handleFocus,onInput:e.handleInput,onChange:e.handleInputChange},null,8,["step","model-value","placeholder","disabled","size","max","min","name","label","onKeydown","onBlur","onFocus","onInput","onChange"])],34)}var IW=ge(MW,[["render",OW],["__file","/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);const Uw=ot(IW),DW=Ve({type:{type:String,values:["primary","success","warning","info","danger","default"],default:"default"},underline:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},href:{type:String,default:""},icon:{type:nn,default:""}}),PW={click:e=>e instanceof MouseEvent},LW=["href"],RW={name:"ElLink"},BW=te(Te(ne({},RW),{props:DW,emits:PW,setup(e,{emit:t}){const n=e,o=we("link");function s(l){n.disabled||t("click",l)}return(l,r)=>(C(),M("a",{class:_([b(o).b(),b(o).m(l.type),b(o).is("disabled",l.disabled),b(o).is("underline",l.underline&&!l.disabled)]),href:l.disabled||!l.href?void 0:l.href,onClick:s},[l.icon?(C(),x(b(je),{key:0},{default:j(()=>[(C(),x(ft(l.icon)))]),_:1})):G("v-if",!0),l.$slots.default?(C(),M("span",{key:1,class:_(b(o).e("inner"))},[ie(l.$slots,"default")],2)):G("v-if",!0),l.$slots.icon?ie(l.$slots,"icon",{key:2}):G("v-if",!0)],10,LW))}}));var VW=ge(BW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/link/src/link.vue"]]);const FW=ot(VW);class HW{constructor(t,n){this.parent=t,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",o=>{let s=!1;switch(o.code){case Ie.down:{this.gotoSubIndex(this.subIndex+1),s=!0;break}case Ie.up:{this.gotoSubIndex(this.subIndex-1),s=!0;break}case Ie.tab:{ci(t,"mouseleave");break}case Ie.enter:case Ie.space:{s=!0,o.currentTarget.click();break}}return s&&(o.preventDefault(),o.stopPropagation()),!1})})}}class zW{constructor(t){this.domNode=t,this.submenu=null,this.submenu=null,this.init()}init(){this.domNode.setAttribute("tabindex","0");const t=this.domNode.querySelector(".el-menu");t&&(this.submenu=new HW(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{let n=!1;switch(t.code){case Ie.down:{ci(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case Ie.up:{ci(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case Ie.tab:{ci(t.currentTarget,"mouseleave");break}case Ie.enter:case Ie.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}}class KW{constructor(t){this.domNode=t,this.init()}init(){const t=this.domNode.childNodes;Array.from(t).forEach(n=>{n.nodeType===1&&new zW(n)})}}const WW=te({name:"ElMenuCollapseTransition",setup(){return{listeners:{onBeforeEnter:t=>t.style.opacity="0.2",onEnter(t,n){wo(t,"el-opacity-transition"),t.style.opacity="1",n()},onAfterEnter(t){fn(t,"el-opacity-transition"),t.style.opacity=""},onBeforeLeave(t){t.dataset||(t.dataset={}),oo(t,"el-menu--collapse")?(fn(t,"el-menu--collapse"),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),wo(t,"el-menu--collapse")):(wo(t,"el-menu--collapse"),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),fn(t,"el-menu--collapse")),t.style.width=`${t.scrollWidth}px`,t.style.overflow="hidden"},onLeave(t){wo(t,"horizontal-collapse-transition"),t.style.width=`${t.dataset.scrollWidth}px`}}}}});function jW(e,t,n,o,s,l){return C(),x(zt,Et({mode:"out-in"},e.listeners),{default:j(()=>[ie(e.$slots,"default")]),_:3},16)}var YW=ge(WW,[["render",jW],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);function qw(e,t){const n=Ne("rootMenu");n||Kt("useMenu","can not inject root menu");const o=E(()=>{let r=e.parent;const a=[t.value];for(;r.type.name!=="ElMenu";)r.props.index&&a.unshift(r.props.index),r=r.parent;return a}),s=E(()=>{let r=e.parent;for(;r&&!["ElMenu","ElSubMenu"].includes(r.type.name);)r=r.parent;return r}),l=E(()=>{let r=e.parent;if(n.props.mode!=="vertical")return{};let a=20;if(n.props.collapse)a=20;else for(;r&&r.type.name!=="ElMenu";)r.type.name==="ElSubMenu"&&(a+=20),r=r.parent;return{paddingLeft:`${a}px`}});return{parentMenu:s,paddingStyle:l,indexPath:o}}function UW(e){return E(()=>{const n=e.backgroundColor;return n?new O1(n).shade(20).toString():""})}const Gw=e=>E(()=>({"--el-menu-text-color":e.textColor||"","--el-menu-hover-text-color":e.textColor||"","--el-menu-bg-color":e.backgroundColor||"","--el-menu-hover-bg-color":UW(e).value||"","--el-menu-active-color":e.activeTextColor||""})),qW=Ve({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),Nc="ElSubMenu";var Ep=te({name:Nc,props:qW,setup(e,{slots:t,expose:n}){const o=nt(),{paddingStyle:s,indexPath:l,parentMenu:r}=qw(o,E(()=>e.index)),a=Ne("rootMenu");a||Kt(Nc,"can not inject root menu");const i=Ne(`subMenu:${r.value.uid}`);i||Kt(Nc,"can not inject sub menu");const u=A({}),c=A({});let d;const f=A(!1),p=A(),h=A(null),g=E(()=>B.value==="horizontal"&&v.value?"bottom-start":"right-start"),m=E(()=>B.value==="horizontal"&&v.value||B.value==="vertical"&&!a.props.collapse?fl:Jn),v=E(()=>{let I=!0,U=o.parent;for(;U&&U.type.name!=="ElMenu";)if(["ElSubMenu","ElMenuItemGroup"].includes(U.type.name)){I=!1;break}else U=U.parent;return I}),y=E(()=>e.popperAppendToBody===void 0?v.value:Boolean(e.popperAppendToBody)),w=E(()=>a.props.collapse?"el-zoom-in-left":"el-zoom-in-top"),S=E(()=>B.value==="horizontal"&&v.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),$=E(()=>a.openedMenus.includes(e.index)),k=E(()=>{let I=!1;return Object.values(u.value).forEach(U=>{U.active&&(I=!0)}),Object.values(c.value).forEach(U=>{U.active&&(I=!0)}),I}),T=E(()=>a.props.backgroundColor||""),O=E(()=>a.props.activeTextColor||""),L=E(()=>a.props.textColor||""),B=E(()=>a.props.mode),V=yt({index:e.index,indexPath:l,active:k}),H=E(()=>B.value!=="horizontal"?{color:L.value}:{borderBottomColor:k.value?a.props.activeTextColor?O.value:"":"transparent",color:k.value?O.value:L.value}),R=()=>{var I,U,q;return(q=(U=(I=h.value)==null?void 0:I.popperRef)==null?void 0:U.popperInstanceRef)==null?void 0:q.destroy()},z=I=>{I||R()},W=()=>{a.props.menuTrigger==="hover"&&a.props.mode==="horizontal"||a.props.collapse&&a.props.mode==="vertical"||e.disabled||a.handleSubMenuClick({index:e.index,indexPath:l.value,active:k.value})},P=(I,U=e.showTimeout)=>{var q;I.type==="focus"&&!I.relatedTarget||a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||e.disabled||(i.mouseInChild.value=!0,d==null||d(),{stop:d}=ol(()=>{a.openMenu(e.index,l.value)},U),y.value&&((q=r.value.vnode.el)==null||q.dispatchEvent(new MouseEvent("mouseenter"))))},N=(I=!1)=>{var U,q;a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||(d==null||d(),i.mouseInChild.value=!1,{stop:d}=ol(()=>!f.value&&a.closeMenu(e.index,l.value),e.hideTimeout),y.value&&I&&((U=o.parent)==null?void 0:U.type.name)==="ElSubMenu"&&((q=i.handleMouseleave)==null||q.call(i,!0)))};pe(()=>a.props.collapse,I=>z(Boolean(I)));{const I=q=>{c.value[q.index]=q},U=q=>{delete c.value[q.index]};st(`subMenu:${o.uid}`,{addSubMenu:I,removeSubMenu:U,handleMouseleave:N,mouseInChild:f})}return n({opened:$}),xe(()=>{a.addSubMenu(V),i.addSubMenu(V)}),_t(()=>{i.removeSubMenu(V),a.removeSubMenu(V)}),()=>{var I;const U=[(I=t.title)==null?void 0:I.call(t),Pe(je,{class:["el-sub-menu__icon-arrow"]},{default:()=>Pe(m.value)})],q=Gw(a.props),Q=a.isMenuPopup?Pe(mn,{ref:h,visible:$.value,effect:"light",pure:!0,offset:e.popperOffset,showArrow:!1,persistent:!0,popperClass:e.popperClass,placement:g.value,teleported:y.value,fallbackPlacements:S.value,transition:w.value,gpuAcceleration:!1},{content:()=>{var J;return Pe("div",{class:[`el-menu--${B.value}`,e.popperClass],onMouseenter:ae=>P(ae,100),onMouseleave:()=>N(!0),onFocus:ae=>P(ae,100)},[Pe("ul",{class:["el-menu el-menu--popup",`el-menu--popup-${g.value}`],style:q.value},[(J=t.default)==null?void 0:J.call(t)])])},default:()=>Pe("div",{class:"el-sub-menu__title",style:[s.value,H.value,{backgroundColor:T.value}],onClick:W},U)}):Pe(Le,{},[Pe("div",{class:"el-sub-menu__title",style:[s.value,H.value,{backgroundColor:T.value}],ref:p,onClick:W},U),Pe(Yu,{},{default:()=>{var J;return Ge(Pe("ul",{role:"menu",class:"el-menu el-menu--inline",style:q.value},[(J=t.default)==null?void 0:J.call(t)]),[[pt,$.value]])}})]);return Pe("li",{class:["el-sub-menu",{"is-active":k.value,"is-opened":$.value,"is-disabled":e.disabled}],role:"menuitem",ariaHaspopup:!0,ariaExpanded:$.value,onMouseenter:P,onMouseleave:()=>N(!0),onFocus:P},[Q])}}});const GW=Ve({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:$e(Array),default:()=>Pt([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),Mc=e=>Array.isArray(e)&&e.every(t=>Qe(t)),XW={close:(e,t)=>Qe(e)&&Mc(t),open:(e,t)=>Qe(e)&&Mc(t),select:(e,t,n,o)=>Qe(e)&&Mc(t)&&dt(n)&&(o===void 0||o instanceof Promise)};var JW=te({name:"ElMenu",props:GW,emits:XW,setup(e,{emit:t,slots:n,expose:o}){const s=nt(),l=s.appContext.config.globalProperties.$router,r=A(),a=A(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),i=A(e.defaultActive),u=A({}),c=A({}),d=E(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),f=()=>{const $=i.value&&u.value[i.value];if(!$||e.mode==="horizontal"||e.collapse)return;$.indexPath.forEach(T=>{const O=c.value[T];O&&p(T,O.indexPath)})},p=($,k)=>{a.value.includes($)||(e.uniqueOpened&&(a.value=a.value.filter(T=>k.includes(T))),a.value.push($),t("open",$,k))},h=($,k)=>{const T=a.value.indexOf($);T!==-1&&a.value.splice(T,1),t("close",$,k)},g=({index:$,indexPath:k})=>{a.value.includes($)?h($,k):p($,k)},m=$=>{(e.mode==="horizontal"||e.collapse)&&(a.value=[]);const{index:k,indexPath:T}=$;if(!(k===void 0||T===void 0))if(e.router&&l){const O=$.route||k,L=l.push(O).then(B=>(B||(i.value=k),B));t("select",k,T,{index:k,indexPath:T,route:O},L)}else i.value=k,t("select",k,T,{index:k,indexPath:T})},v=$=>{const k=u.value,T=k[$]||i.value&&k[i.value]||k[e.defaultActive];T?(i.value=T.index,f()):i.value=$},y=()=>{ze(()=>s.proxy.$forceUpdate())};pe(()=>e.defaultActive,$=>{u.value[$]||(i.value=""),v($)}),pe(u.value,()=>f()),pe(()=>e.collapse,$=>{$&&(a.value=[])});{const $=L=>{c.value[L.index]=L},k=L=>{delete c.value[L.index]};st("rootMenu",yt({props:e,openedMenus:a,items:u,subMenus:c,activeIndex:i,isMenuPopup:d,addMenuItem:L=>{u.value[L.index]=L},removeMenuItem:L=>{delete u.value[L.index]},addSubMenu:$,removeSubMenu:k,openMenu:p,closeMenu:h,handleMenuItemClick:m,handleSubMenuClick:g})),st(`subMenu:${s.uid}`,{addSubMenu:$,removeSubMenu:k,mouseInChild:A(!1)})}xe(()=>{f(),e.mode==="horizontal"&&new KW(s.vnode.el)}),o({open:k=>{const{indexPath:T}=c.value[k];T.forEach(O=>p(O,T))},close:h,handleResize:y});const w=$=>{const k=Array.isArray($)?$:[$],T=[];return k.forEach(O=>{Array.isArray(O.children)?T.push(...w(O.children)):T.push(O)}),T},S=$=>e.mode==="horizontal"?Ge($,[[tV,y]]):$;return()=>{var $,k,T,O;let L=(k=($=n.default)==null?void 0:$.call(n))!=null?k:[];const B=[];if(e.mode==="horizontal"&&r.value){const z=Array.from((O=(T=r.value)==null?void 0:T.childNodes)!=null?O:[]).filter(Ee=>Ee.nodeName!=="#text"||Ee.nodeValue),W=w(L),P=64,N=Number.parseInt(getComputedStyle(r.value).paddingLeft,10),I=Number.parseInt(getComputedStyle(r.value).paddingRight,10),U=r.value.clientWidth-N-I;let q=0,Q=0;z.forEach((Ee,Me)=>{q+=Ee.offsetWidth||0,q<=U-P&&(Q=Me+1)});const J=W.slice(0,Q),ae=W.slice(Q);(ae==null?void 0:ae.length)&&e.ellipsis&&(L=J,B.push(Pe(Ep,{index:"sub-menu-more",class:"el-sub-menu__hide-arrow"},{title:()=>Pe(je,{class:["el-sub-menu__icon-more"]},{default:()=>Pe(HP)}),default:()=>ae})))}const V=Gw(e),R=(z=>e.ellipsis?S(z):z)(Pe("ul",{key:String(e.collapse),role:"menubar",ref:r,style:V.value,class:{"el-menu":!0,"el-menu--horizontal":e.mode==="horizontal","el-menu--collapse":e.collapse}},[...L,...B]));return e.collapseTransition&&e.mode==="vertical"?Pe(YW,()=>R):R}}});const ZW=Ve({index:{type:$e([String,null]),default:null},route:{type:$e([String,Object])},disabled:Boolean}),QW={click:e=>Qe(e.index)&&Array.isArray(e.indexPath)},Oc="ElMenuItem",xW=te({name:Oc,components:{ElTooltip:mn},props:ZW,emits:QW,setup(e,{emit:t}){const n=nt(),o=Ne("rootMenu");o||Kt(Oc,"can not inject root menu");const{parentMenu:s,paddingStyle:l,indexPath:r}=qw(n,Yt(e,"index")),a=Ne(`subMenu:${s.value.uid}`);a||Kt(Oc,"can not inject sub menu");const i=E(()=>e.index===o.activeIndex),u=yt({index:e.index,indexPath:r,active:i}),c=()=>{e.disabled||(o.handleMenuItemClick({index:e.index,indexPath:r.value,route:e.route}),t("click",u))};return xe(()=>{a.addSubMenu(u),o.addMenuItem(u)}),_t(()=>{a.removeSubMenu(u),o.removeMenuItem(u)}),{Effect:bR,parentMenu:s,rootMenu:o,paddingStyle:l,active:i,handleClick:c}}}),ej={class:"el-menu-tooltip__trigger"};function tj(e,t,n,o,s,l){const r=le("el-tooltip");return C(),M("li",{class:_(["el-menu-item",{"is-active":e.active,"is-disabled":e.disabled}]),role:"menuitem",tabindex:"-1",style:De(e.paddingStyle),onClick:t[0]||(t[0]=(...a)=>e.handleClick&&e.handleClick(...a))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(C(),x(r,{key:0,effect:e.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:j(()=>[ie(e.$slots,"title")]),default:j(()=>[D("div",ej,[ie(e.$slots,"default")])]),_:3},8,["effect"])):(C(),M(Le,{key:1},[ie(e.$slots,"default"),ie(e.$slots,"title")],64))],6)}var Xw=ge(xW,[["render",tj],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);const nj={title:String},cg="ElMenuItemGroup",oj=te({name:cg,props:nj,setup(){const e=nt(),t=Ne("rootMenu");return t||Kt(cg,"can not inject root menu"),{levelPadding:E(()=>{if(t.props.collapse)return 20;let o=20,s=e.parent;for(;s&&s.type.name!=="ElMenu";)s.type.name==="ElSubMenu"&&(o+=20),s=s.parent;return o})}}}),sj={class:"el-menu-item-group"};function lj(e,t,n,o,s,l){return C(),M("li",sj,[D("div",{class:"el-menu-item-group__title",style:De({paddingLeft:`${e.levelPadding}px`})},[e.$slots.title?ie(e.$slots,"title",{key:1}):(C(),M(Le,{key:0},[it(he(e.title),1)],2112))],4),D("ul",null,[ie(e.$slots,"default")])])}var Jw=ge(oj,[["render",lj],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);const rj=ot(JW,{MenuItem:Xw,MenuItemGroup:Jw,SubMenu:Ep}),aj=Rt(Xw),ij=Rt(Jw);Rt(Ep);const uj=Ve({icon:{type:nn,default:()=>A4},title:String,content:{type:String,default:""}}),cj={back:()=>!0},dj={name:"ElPageHeader"},fj=te(Te(ne({},dj),{props:uj,emits:cj,setup(e,{emit:t}){const{t:n}=kt(),o=we("page-header");function s(){t("back")}return(l,r)=>(C(),M("div",{class:_(b(o).b())},[D("div",{class:_(b(o).e("left")),onClick:s},[l.icon||l.$slots.icon?(C(),M("div",{key:0,class:_(b(o).e("icon"))},[ie(l.$slots,"icon",{},()=>[l.icon?(C(),x(b(je),{key:0},{default:j(()=>[(C(),x(ft(l.icon)))]),_:1})):G("v-if",!0)])],2)):G("v-if",!0),D("div",{class:_(b(o).e("title"))},[ie(l.$slots,"title",{},()=>[it(he(l.title||b(n)("el.pageHeader.title")),1)])],2)],2),D("div",{class:_(b(o).e("content"))},[ie(l.$slots,"content",{},()=>[it(he(l.content),1)])],2)],2))}}));var pj=ge(fj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/page-header/src/page-header.vue"]]);const hj=ot(pj),mj={disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String,default:""}},vj=te({name:"ElPaginationPrev",components:{ElIcon:je,ArrowLeft:pl},props:mj,emits:["click"],setup(e){return{internalDisabled:E(()=>e.disabled||e.currentPage<=1)}}}),gj=["disabled","aria-disabled"],bj={key:0};function yj(e,t,n,o,s,l){const r=le("arrow-left"),a=le("el-icon");return C(),M("button",{type:"button",class:"btn-prev",disabled:e.internalDisabled,"aria-disabled":e.internalDisabled,onClick:t[0]||(t[0]=i=>e.$emit("click",i))},[e.prevText?(C(),M("span",bj,he(e.prevText),1)):(C(),x(a,{key:1},{default:j(()=>[Y(r)]),_:1}))],8,gj)}var wj=ge(vj,[["render",yj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/prev.vue"]]);const Cj={disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String,default:""}},$j=te({name:"ElPaginationNext",components:{ElIcon:je,ArrowRight:Jn},props:Cj,emits:["click"],setup(e){return{internalDisabled:E(()=>e.disabled||e.currentPage===e.pageCount||e.pageCount===0)}}}),kj=["disabled","aria-disabled"],Sj={key:0};function Ej(e,t,n,o,s,l){const r=le("arrow-right"),a=le("el-icon");return C(),M("button",{type:"button",class:"btn-next",disabled:e.internalDisabled,"aria-disabled":e.internalDisabled,onClick:t[0]||(t[0]=i=>e.$emit("click",i))},[e.nextText?(C(),M("span",Sj,he(e.nextText),1)):(C(),x(a,{key:1},{default:j(()=>[Y(r)]),_:1}))],8,kj)}var _j=ge($j,[["render",Ej],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/next.vue"]]);const Zw="ElSelectGroup",Uu="ElSelect";function Tj(e,t){const n=Ne(Uu),o=Ne(Zw,{disabled:!1}),s=E(()=>Object.prototype.toString.call(e.value).toLowerCase()==="[object object]"),l=E(()=>n.props.multiple?d(n.props.modelValue,e.value):f(e.value,n.props.modelValue)),r=E(()=>{if(n.props.multiple){const g=n.props.modelValue||[];return!l.value&&g.length>=n.props.multipleLimit&&n.props.multipleLimit>0}else return!1}),a=E(()=>e.label||(s.value?"":e.value)),i=E(()=>e.value||e.label||""),u=E(()=>e.disabled||t.groupDisabled||r.value),c=nt(),d=(g=[],m)=>{if(s.value){const v=n.props.valueKey;return g&&g.some(y=>It(y,v)===It(m,v))}else return g&&g.includes(m)},f=(g,m)=>{if(s.value){const{valueKey:v}=n.props;return It(g,v)===It(m,v)}else return g===m},p=()=>{!e.disabled&&!o.disabled&&(n.hoverIndex=n.optionsArray.indexOf(c.proxy))};pe(()=>a.value,()=>{!e.created&&!n.props.remote&&n.setSelected()}),pe(()=>e.value,(g,m)=>{const{remote:v,valueKey:y}=n.props;if(!e.created&&!v){if(y&&typeof g=="object"&&typeof m=="object"&&g[y]===m[y])return;n.setSelected()}}),pe(()=>o.disabled,()=>{t.groupDisabled=o.disabled},{immediate:!0});const{queryChange:h}=$t(n);return pe(h,g=>{const{query:m}=b(g),v=new RegExp(QI(m),"i");t.visible=v.test(a.value)||e.created,t.visible||n.filteredOptionsCount--}),{select:n,currentLabel:a,currentValue:i,itemSelected:l,isDisabled:u,hoverItem:p}}const Aj=te({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},setup(e){const t=we("select"),n=yt({index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}),{currentLabel:o,itemSelected:s,isDisabled:l,select:r,hoverItem:a}=Tj(e,n),{visible:i,hover:u}=Ut(n),c=nt().proxy,d=c.value;r.onOptionCreate(c),_t(()=>{const{selected:p}=r,g=(r.props.multiple?p:[p]).some(m=>m.value===c.value);r.cachedOptions.get(d)===c&&!g&&ze(()=>{r.cachedOptions.delete(d)}),r.onOptionDestroy(d,c)});function f(){e.disabled!==!0&&n.groupDisabled!==!0&&r.handleOptionSelect(c,!0)}return{ns:t,currentLabel:o,itemSelected:s,isDisabled:l,select:r,hoverItem:a,visible:i,hover:u,selectOptionClick:f,states:n}}});function Nj(e,t,n,o,s,l){return Ge((C(),M("li",{class:_([e.ns.be("dropdown","item"),e.ns.is("disabled",e.isDisabled),{selected:e.itemSelected,hover:e.hover}]),onMouseenter:t[0]||(t[0]=(...r)=>e.hoverItem&&e.hoverItem(...r)),onClick:t[1]||(t[1]=Ke((...r)=>e.selectOptionClick&&e.selectOptionClick(...r),["stop"]))},[ie(e.$slots,"default",{},()=>[D("span",null,he(e.currentLabel),1)])],34)),[[pt,e.visible]])}var _p=ge(Aj,[["render",Nj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option.vue"]]);const Mj=te({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=Ne(Uu),t=we("select"),n=E(()=>e.props.popperClass),o=E(()=>e.props.multiple),s=E(()=>e.props.fitInputWidth),l=A("");function r(){var a;l.value=`${(a=e.selectWrapper)==null?void 0:a.getBoundingClientRect().width}px`}return xe(()=>{r(),ir(e.selectWrapper,r)}),_t(()=>{ur(e.selectWrapper,r)}),{ns:t,minWidth:l,popperClass:n,isMultiple:o,isFitInputWidth:s}}});function Oj(e,t,n,o,s,l){return C(),M("div",{class:_([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:De({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[ie(e.$slots,"default")],6)}var Ij=ge(Mj,[["render",Oj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select-dropdown.vue"]]);function Dj(e){const{t}=kt();return yt({options:new Map,cachedOptions:new Map,createdLabel:null,createdSelected:!1,selected:e.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,cachedPlaceHolder:"",currentPlaceholder:t("el.select.placeholder"),menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1,prefixWidth:11,tagInMultiLine:!1})}const Pj=(e,t,n)=>{const{t:o}=kt(),s=we("select"),l=A(null),r=A(null),a=A(null),i=A(null),u=A(null),c=A(null),d=A(-1),f=jt({query:""}),p=jt(""),h=Ne(Dn,{}),g=Ne(Un,{}),m=E(()=>!e.filterable||e.multiple||!t.visible),v=E(()=>e.disabled||h.disabled),y=E(()=>{const oe=e.multiple?Array.isArray(e.modelValue)&&e.modelValue.length>0:e.modelValue!==void 0&&e.modelValue!==null&&e.modelValue!=="";return e.clearable&&!v.value&&t.inputHovering&&oe}),w=E(()=>e.remote&&e.filterable?"":e.suffixIcon),S=E(()=>s.is("reverse",w.value&&t.visible)),$=E(()=>e.remote?300:0),k=E(()=>e.loading?e.loadingText||o("el.select.loading"):e.remote&&t.query===""&&t.options.size===0?!1:e.filterable&&t.query&&t.options.size>0&&t.filteredOptionsCount===0?e.noMatchText||o("el.select.noMatch"):t.options.size===0?e.noDataText||o("el.select.noData"):null),T=E(()=>Array.from(t.options.values())),O=E(()=>Array.from(t.cachedOptions.values())),L=E(()=>{const oe=T.value.filter(me=>!me.created).some(me=>me.currentLabel===t.query);return e.filterable&&e.allowCreate&&t.query!==""&&!oe}),B=Wt(),V=E(()=>["small"].includes(B.value)?"small":"default"),H=E({get(){return t.visible&&k.value!==!1},set(oe){t.visible=oe}});pe(()=>v.value,()=>{ze(()=>{R()})}),pe(()=>e.placeholder,oe=>{t.cachedPlaceHolder=t.currentPlaceholder=oe}),pe(()=>e.modelValue,(oe,me)=>{var ce;e.multiple&&(R(),oe&&oe.length>0||r.value&&t.query!==""?t.currentPlaceholder="":t.currentPlaceholder=t.cachedPlaceHolder,e.filterable&&!e.reserveKeyword&&(t.query="",z(t.query))),N(),e.filterable&&!e.multiple&&(t.inputLength=20),_n(oe,me)||(ce=g.validate)==null||ce.call(g,"change").catch(Ae=>void 0)},{flush:"post",deep:!0}),pe(()=>t.visible,oe=>{var me,ce,Ae;oe?((ce=(me=a.value)==null?void 0:me.updatePopper)==null||ce.call(me),e.filterable&&(t.filteredOptionsCount=t.optionsCount,t.query=e.remote?"":t.selectedLabel,e.multiple?(Ae=r.value)==null||Ae.focus():t.selectedLabel&&(t.currentPlaceholder=`${t.selectedLabel}`,t.selectedLabel=""),z(t.query),!e.multiple&&!e.remote&&(f.value.query="",Cr(f),Cr(p)))):(r.value&&r.value.blur(),t.query="",t.previousQuery=null,t.selectedLabel="",t.inputLength=20,t.menuVisibleOnFocus=!1,U(),ze(()=>{r.value&&r.value.value===""&&t.selected.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)}),e.multiple||(t.selected&&(e.filterable&&e.allowCreate&&t.createdSelected&&t.createdLabel?t.selectedLabel=t.createdLabel:t.selectedLabel=t.selected.currentLabel,e.filterable&&(t.query=t.selectedLabel)),e.filterable&&(t.currentPlaceholder=t.cachedPlaceHolder))),n.emit("visible-change",oe)}),pe(()=>t.options.entries(),()=>{var oe,me,ce;if(!ct)return;(me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe),e.multiple&&R();const Ae=((ce=u.value)==null?void 0:ce.querySelectorAll("input"))||[];Array.from(Ae).includes(document.activeElement)||N(),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&P()},{flush:"post"}),pe(()=>t.hoverIndex,oe=>{typeof oe=="number"&&oe>-1&&(d.value=T.value[oe]||{}),T.value.forEach(me=>{me.hover=d.value===me})});const R=()=>{e.collapseTags&&!e.filterable||ze(()=>{var oe,me;if(!l.value)return;const ce=l.value.$el.childNodes,Ae=Array.from(ce).find(St=>St.tagName==="INPUT"),Ue=i.value,mt=t.initialInputHeight||H0(B.value||h.size);Ae.style.height=t.selected.length===0?`${mt}px`:`${Math.max(Ue?Ue.clientHeight+(Ue.clientHeight>mt?6:0):0,mt)}px`,t.tagInMultiLine=Number.parseFloat(Ae.style.height)>=mt,t.visible&&k.value!==!1&&((me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe))})},z=oe=>{if(!(t.previousQuery===oe||t.isOnComposition)){if(t.previousQuery===null&&(typeof e.filterMethod=="function"||typeof e.remoteMethod=="function")){t.previousQuery=oe;return}t.previousQuery=oe,ze(()=>{var me,ce;t.visible&&((ce=(me=a.value)==null?void 0:me.updatePopper)==null||ce.call(me))}),t.hoverIndex=-1,e.multiple&&e.filterable&&ze(()=>{const me=r.value.value.length*15+20;t.inputLength=e.collapseTags?Math.min(50,me):me,W(),R()}),e.remote&&typeof e.remoteMethod=="function"?(t.hoverIndex=-1,e.remoteMethod(oe)):typeof e.filterMethod=="function"?(e.filterMethod(oe),Cr(p)):(t.filteredOptionsCount=t.optionsCount,f.value.query=oe,Cr(f),Cr(p)),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&P()}},W=()=>{t.currentPlaceholder!==""&&(t.currentPlaceholder=r.value.value?"":t.cachedPlaceHolder)},P=()=>{const oe=T.value.filter(Ae=>Ae.visible&&!Ae.disabled&&!Ae.states.groupDisabled),me=oe.find(Ae=>Ae.created),ce=oe[0];t.hoverIndex=Oe(T.value,me||ce)},N=()=>{var oe;if(e.multiple)t.selectedLabel="";else{const ce=I(e.modelValue);(oe=ce.props)!=null&&oe.created?(t.createdLabel=ce.props.value,t.createdSelected=!0):t.createdSelected=!1,t.selectedLabel=ce.currentLabel,t.selected=ce,e.filterable&&(t.query=t.selectedLabel);return}const me=[];Array.isArray(e.modelValue)&&e.modelValue.forEach(ce=>{me.push(I(ce))}),t.selected=me,ze(()=>{R()})},I=oe=>{let me;const ce=si(oe).toLowerCase()==="object",Ae=si(oe).toLowerCase()==="null",Ue=si(oe).toLowerCase()==="undefined";for(let bt=t.cachedOptions.size-1;bt>=0;bt--){const At=O.value[bt];if(ce?It(At,e.valueKey)===It(oe,e.valueKey):At.value===oe){me={value:oe,currentLabel:At.currentLabel,isDisabled:At.isDisabled};break}}if(me)return me;const mt=ce?oe.label:!Ae&&!Ue?oe:"",St={value:oe,currentLabel:mt};return e.multiple&&(St.hitState=!1),St},U=()=>{setTimeout(()=>{const oe=e.valueKey;e.multiple?t.selected.length>0?t.hoverIndex=Math.min.apply(null,t.selected.map(me=>T.value.findIndex(ce=>It(ce,oe)===It(me,oe)))):t.hoverIndex=-1:t.hoverIndex=T.value.findIndex(me=>Fe(me)===Fe(t.selected))},300)},q=()=>{var oe,me;Q(),(me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe),e.multiple&&!e.filterable&&R()},Q=()=>{var oe;t.inputWidth=(oe=l.value)==null?void 0:oe.$el.getBoundingClientRect().width},J=()=>{e.filterable&&t.query!==t.selectedLabel&&(t.query=t.selectedLabel,z(t.query))},ae=hn(()=>{J()},$.value),Ee=hn(oe=>{z(oe.target.value)},$.value),Me=oe=>{_n(e.modelValue,oe)||n.emit(qt,oe)},Z=oe=>{if(oe.target.value.length<=0&&!ye()){const me=e.modelValue.slice();me.pop(),n.emit(tt,me),Me(me)}oe.target.value.length===1&&e.modelValue.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)},ve=(oe,me)=>{const ce=t.selected.indexOf(me);if(ce>-1&&!v.value){const Ae=e.modelValue.slice();Ae.splice(ce,1),n.emit(tt,Ae),Me(Ae),n.emit("remove-tag",me.value)}oe.stopPropagation()},Ce=oe=>{oe.stopPropagation();const me=e.multiple?[]:"";if(typeof me!="string")for(const ce of t.selected)ce.isDisabled&&me.push(ce.value);n.emit(tt,me),Me(me),t.visible=!1,n.emit("clear")},ke=(oe,me)=>{var ce;if(e.multiple){const Ae=(e.modelValue||[]).slice(),Ue=Oe(Ae,oe.value);Ue>-1?Ae.splice(Ue,1):(e.multipleLimit<=0||Ae.length{qe(oe)})},Oe=(oe=[],me)=>{if(!dt(me))return oe.indexOf(me);const ce=e.valueKey;let Ae=-1;return oe.some((Ue,mt)=>It(Ue,ce)===It(me,ce)?(Ae=mt,!0):!1),Ae},We=()=>{t.softFocus=!0;const oe=r.value||l.value;oe&&(oe==null||oe.focus())},qe=oe=>{var me,ce,Ae,Ue,mt;const St=Array.isArray(oe)?oe[0]:oe;let bt=null;if(St!=null&&St.value){const At=T.value.filter(Pn=>Pn.value===St.value);At.length>0&&(bt=At[0].$el)}if(a.value&&bt){const At=(Ue=(Ae=(ce=(me=a.value)==null?void 0:me.popperRef)==null?void 0:ce.contentRef)==null?void 0:Ae.querySelector)==null?void 0:Ue.call(Ae,`.${s.be("dropdown","wrap")}`);At&&I0(At,bt)}(mt=c.value)==null||mt.handleScroll()},K=oe=>{t.optionsCount++,t.filteredOptionsCount++,t.options.set(oe.value,oe),t.cachedOptions.set(oe.value,oe)},X=(oe,me)=>{t.options.get(oe)===me&&(t.optionsCount--,t.filteredOptionsCount--,t.options.delete(oe))},fe=oe=>{oe.code!==Ie.backspace&&ye(!1),t.inputLength=r.value.value.length*15+20,R()},ye=oe=>{if(!Array.isArray(t.selected))return;const me=t.selected[t.selected.length-1];if(!!me)return oe===!0||oe===!1?(me.hitState=oe,oe):(me.hitState=!me.hitState,me.hitState)},be=oe=>{const me=oe.target.value;if(oe.type==="compositionend")t.isOnComposition=!1,ze(()=>z(me));else{const ce=me[me.length-1]||"";t.isOnComposition=!Bu(ce)}},_e=()=>{ze(()=>qe(t.selected))},re=oe=>{t.softFocus?t.softFocus=!1:((e.automaticDropdown||e.filterable)&&(e.filterable&&!t.visible&&(t.menuVisibleOnFocus=!0),t.visible=!0),n.emit("focus",oe))},se=()=>{var oe;t.visible=!1,(oe=l.value)==null||oe.blur()},ee=oe=>{ze(()=>{t.isSilentBlur?t.isSilentBlur=!1:n.emit("blur",oe)}),t.softFocus=!1},ue=oe=>{Ce(oe)},Re=()=>{t.visible=!1},F=()=>{var oe;e.automaticDropdown||v.value||(t.menuVisibleOnFocus?t.menuVisibleOnFocus=!1:t.visible=!t.visible,t.visible&&((oe=r.value||l.value)==null||oe.focus()))},de=()=>{t.visible?T.value[t.hoverIndex]&&ke(T.value[t.hoverIndex],void 0):F()},Fe=oe=>dt(oe.value)?It(oe.value,e.valueKey):oe.value,Ze=E(()=>T.value.filter(oe=>oe.visible).every(oe=>oe.disabled)),He=oe=>{if(!t.visible){t.visible=!0;return}if(!(t.options.size===0||t.filteredOptionsCount===0)&&!t.isOnComposition&&!Ze.value){oe==="next"?(t.hoverIndex++,t.hoverIndex===t.options.size&&(t.hoverIndex=0)):oe==="prev"&&(t.hoverIndex--,t.hoverIndex<0&&(t.hoverIndex=t.options.size-1));const me=T.value[t.hoverIndex];(me.disabled===!0||me.states.groupDisabled===!0||!me.visible)&&He(oe),ze(()=>qe(d.value))}};return{optionsArray:T,selectSize:B,handleResize:q,debouncedOnInputChange:ae,debouncedQueryChange:Ee,deletePrevTag:Z,deleteTag:ve,deleteSelected:Ce,handleOptionSelect:ke,scrollToOption:qe,readonly:m,resetInputHeight:R,showClose:y,iconComponent:w,iconReverse:S,showNewOption:L,collapseTagSize:V,setSelected:N,managePlaceholder:W,selectDisabled:v,emptyText:k,toggleLastOptionHitState:ye,resetInputState:fe,handleComposition:be,onOptionCreate:K,onOptionDestroy:X,handleMenuEnter:_e,handleFocus:re,blur:se,handleBlur:ee,handleClearClick:ue,handleClose:Re,toggleMenu:F,selectOption:de,getValueKey:Fe,navigateOptions:He,dropMenuVisible:H,queryChange:f,groupQueryChange:p,reference:l,input:r,tooltipRef:a,tags:i,selectWrapper:u,scrollbar:c}},Ic="ElSelect",Lj=te({name:Ic,componentName:Ic,components:{ElInput:Zn,ElSelectMenu:Ij,ElOption:_p,ElTag:ju,ElScrollbar:Uo,ElTooltip:mn,ElIcon:je},directives:{ClickOutside:ml},props:{name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:{type:String,validator:On},effect:{type:String,default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},popperAppendToBody:{type:Boolean,default:void 0},teleported:Zt.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Fo},fitInputWidth:{type:Boolean,default:!1},suffixIcon:{type:[String,Object],default:Aa},tagType:Te(ne({},bp.type),{default:"info"})},emits:[tt,qt,"remove-tag","clear","visible-change","focus","blur"],setup(e,t){const n=we("select"),o=we("input"),{t:s}=kt(),l=Dj(e),{optionsArray:r,selectSize:a,readonly:i,handleResize:u,collapseTagSize:c,debouncedOnInputChange:d,debouncedQueryChange:f,deletePrevTag:p,deleteTag:h,deleteSelected:g,handleOptionSelect:m,scrollToOption:v,setSelected:y,resetInputHeight:w,managePlaceholder:S,showClose:$,selectDisabled:k,iconComponent:T,iconReverse:O,showNewOption:L,emptyText:B,toggleLastOptionHitState:V,resetInputState:H,handleComposition:R,onOptionCreate:z,onOptionDestroy:W,handleMenuEnter:P,handleFocus:N,blur:I,handleBlur:U,handleClearClick:q,handleClose:Q,toggleMenu:J,selectOption:ae,getValueKey:Ee,navigateOptions:Me,dropMenuVisible:Z,reference:ve,input:Ce,tooltipRef:ke,tags:Oe,selectWrapper:We,scrollbar:qe,queryChange:K,groupQueryChange:X}=Pj(e,l,t),{focus:fe}=S8(ve),{inputWidth:ye,selected:be,inputLength:_e,filteredOptionsCount:re,visible:se,softFocus:ee,selectedLabel:ue,hoverIndex:Re,query:F,inputHovering:de,currentPlaceholder:Fe,menuVisibleOnFocus:Ze,isOnComposition:He,isSilentBlur:oe,options:me,cachedOptions:ce,optionsCount:Ae,prefixWidth:Ue,tagInMultiLine:mt}=Ut(l),St=E(()=>{const an=[n.b()],vn=b(a);return vn&&an.push(n.m(vn)),e.disabled&&an.push(n.m("disabled")),an}),bt=E(()=>({maxWidth:`${b(ye)-32}px`,width:"100%"}));st(Uu,yt({props:e,options:me,optionsArray:r,cachedOptions:ce,optionsCount:Ae,filteredOptionsCount:re,hoverIndex:Re,handleOptionSelect:m,onOptionCreate:z,onOptionDestroy:W,selectWrapper:We,selected:be,setSelected:y,queryChange:K,groupQueryChange:X})),xe(()=>{if(l.cachedPlaceHolder=Fe.value=e.placeholder||s("el.select.placeholder"),e.multiple&&Array.isArray(e.modelValue)&&e.modelValue.length>0&&(Fe.value=""),ir(We.value,u),ve.value&&ve.value.$el){const an=ve.value.input;l.initialInputHeight=an.getBoundingClientRect().height||H0(a.value)}e.remote&&e.multiple&&w(),ze(()=>{if(!!ve.value&&(ve.value.$el&&(ye.value=ve.value.$el.getBoundingClientRect().width),t.slots.prefix)){const an=ve.value.$el.childNodes,vn=Array.from(an).find(mr=>mr.tagName==="INPUT"),bs=ve.value.$el.querySelector(`.${o.e("prefix")}`);Ue.value=Math.max(bs.getBoundingClientRect().width+5,30),l.prefixWidth&&(vn.style.paddingLeft=`${Math.max(l.prefixWidth,30)}px`)}}),y()}),_t(()=>{ur(We.value,u)}),e.multiple&&!Array.isArray(e.modelValue)&&t.emit(tt,[]),!e.multiple&&Array.isArray(e.modelValue)&&t.emit(tt,"");const At=E(()=>{var an,vn;return(vn=(an=ke.value)==null?void 0:an.popperRef)==null?void 0:vn.contentRef}),{compatTeleported:Pn}=fr(Ic,"popperAppendToBody");return{tagInMultiLine:mt,prefixWidth:Ue,selectSize:a,readonly:i,handleResize:u,collapseTagSize:c,debouncedOnInputChange:d,debouncedQueryChange:f,deletePrevTag:p,deleteTag:h,deleteSelected:g,handleOptionSelect:m,scrollToOption:v,inputWidth:ye,selected:be,inputLength:_e,filteredOptionsCount:re,visible:se,softFocus:ee,selectedLabel:ue,hoverIndex:Re,query:F,inputHovering:de,currentPlaceholder:Fe,menuVisibleOnFocus:Ze,isOnComposition:He,isSilentBlur:oe,options:me,resetInputHeight:w,managePlaceholder:S,showClose:$,selectDisabled:k,iconComponent:T,iconReverse:O,showNewOption:L,emptyText:B,toggleLastOptionHitState:V,resetInputState:H,handleComposition:R,handleMenuEnter:P,handleFocus:N,blur:I,handleBlur:U,handleClearClick:q,handleClose:Q,toggleMenu:J,selectOption:ae,getValueKey:Ee,navigateOptions:Me,dropMenuVisible:Z,focus:fe,reference:ve,input:Ce,tooltipRef:ke,popperPaneRef:At,tags:Oe,selectWrapper:We,scrollbar:qe,wrapperKls:St,selectTagsStyle:bt,compatTeleported:Pn,nsSelect:n}}}),Rj={class:"select-trigger"},Bj=["disabled","autocomplete"],Vj={style:{height:"100%",display:"flex","justify-content":"center","align-items":"center"}};function Fj(e,t,n,o,s,l){const r=le("el-tag"),a=le("el-tooltip"),i=le("el-icon"),u=le("el-input"),c=le("el-option"),d=le("el-scrollbar"),f=le("el-select-menu"),p=Mn("click-outside");return Ge((C(),M("div",{ref:"selectWrapper",class:_(e.wrapperKls),onClick:t[24]||(t[24]=Ke((...h)=>e.toggleMenu&&e.toggleMenu(...h),["stop"]))},[Y(a,{ref:"tooltipRef",visible:e.dropMenuVisible,"onUpdate:visible":t[23]||(t[23]=h=>e.dropMenuVisible=h),placement:"bottom-start",teleported:e.compatTeleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"fallback-placements":["bottom-start","top-start","right","left"],effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,onShow:e.handleMenuEnter},{default:j(()=>[D("div",Rj,[e.multiple?(C(),M("div",{key:0,ref:"tags",class:_(e.nsSelect.e("tags")),style:De(e.selectTagsStyle)},[e.collapseTags&&e.selected.length?(C(),M("span",{key:0,class:_([e.nsSelect.b("tags-wrapper"),{"has-prefix":e.prefixWidth&&e.selected.length}])},[Y(r,{closable:!e.selectDisabled&&!e.selected[0].isDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:e.tagType,"disable-transitions":"",onClose:t[0]||(t[0]=h=>e.deleteTag(h,e.selected[0]))},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:De({maxWidth:e.inputWidth-123+"px"})},he(e.selected[0].currentLabel),7)]),_:1},8,["closable","size","hit","type"]),e.selected.length>1?(C(),x(r,{key:0,closable:!1,size:e.collapseTagSize,type:e.tagType,"disable-transitions":""},{default:j(()=>[e.collapseTagsTooltip?(C(),x(a,{key:0,disabled:e.dropMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:!1},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text"))},"+ "+he(e.selected.length-1),3)]),content:j(()=>[D("div",{class:_(e.nsSelect.e("collapse-tags"))},[(C(!0),M(Le,null,rt(e.selected,(h,g)=>(C(),M("div",{key:g,class:_(e.nsSelect.e("collapse-tag"))},[(C(),x(r,{key:e.getValueKey(h),class:"in-tooltip",closable:!e.selectDisabled&&!h.isDisabled,size:e.collapseTagSize,hit:h.hitState,type:e.tagType,"disable-transitions":"",style:{margin:"2px"},onClose:m=>e.deleteTag(m,h)},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:De({maxWidth:e.inputWidth-75+"px"})},he(h.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect"])):(C(),M("span",{key:1,class:_(e.nsSelect.e("tags-text"))},"+ "+he(e.selected.length-1),3))]),_:1},8,["size","type"])):G("v-if",!0)],2)):G("v-if",!0),G("
    "),e.collapseTags?G("v-if",!0):(C(),x(zt,{key:1,onAfterLeave:e.resetInputHeight},{default:j(()=>[D("span",{class:_([e.nsSelect.b("tags-wrapper"),{"has-prefix":e.prefixWidth&&e.selected.length}])},[(C(!0),M(Le,null,rt(e.selected,h=>(C(),x(r,{key:e.getValueKey(h),closable:!e.selectDisabled&&!h.isDisabled,size:e.collapseTagSize,hit:h.hitState,type:e.tagType,"disable-transitions":"",onClose:g=>e.deleteTag(g,h)},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:De({maxWidth:e.inputWidth-75+"px"})},he(h.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))),128))],2)]),_:1},8,["onAfterLeave"])),G("
    "),e.filterable?Ge((C(),M("input",{key:2,ref:"input","onUpdate:modelValue":t[1]||(t[1]=h=>e.query=h),type:"text",class:_([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:De({marginLeft:e.prefixWidth&&!e.selected.length||e.tagInMultiLine?`${e.prefixWidth}px`:"",flexGrow:1,width:`${e.inputLength/(e.inputWidth-32)}%`,maxWidth:`${e.inputWidth-42}px`}),onFocus:t[2]||(t[2]=(...h)=>e.handleFocus&&e.handleFocus(...h)),onBlur:t[3]||(t[3]=(...h)=>e.handleBlur&&e.handleBlur(...h)),onKeyup:t[4]||(t[4]=(...h)=>e.managePlaceholder&&e.managePlaceholder(...h)),onKeydown:[t[5]||(t[5]=(...h)=>e.resetInputState&&e.resetInputState(...h)),t[6]||(t[6]=lt(Ke(h=>e.navigateOptions("next"),["prevent"]),["down"])),t[7]||(t[7]=lt(Ke(h=>e.navigateOptions("prev"),["prevent"]),["up"])),t[8]||(t[8]=lt(Ke(h=>e.visible=!1,["stop","prevent"]),["esc"])),t[9]||(t[9]=lt(Ke((...h)=>e.selectOption&&e.selectOption(...h),["stop","prevent"]),["enter"])),t[10]||(t[10]=lt((...h)=>e.deletePrevTag&&e.deletePrevTag(...h),["delete"])),t[11]||(t[11]=lt(h=>e.visible=!1,["tab"]))],onCompositionstart:t[12]||(t[12]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onCompositionupdate:t[13]||(t[13]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onCompositionend:t[14]||(t[14]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onInput:t[15]||(t[15]=(...h)=>e.debouncedQueryChange&&e.debouncedQueryChange(...h))},null,46,Bj)),[[Bf,e.query]]):G("v-if",!0)],6)):G("v-if",!0),Y(u,{id:e.id,ref:"reference",modelValue:e.selectedLabel,"onUpdate:modelValue":t[16]||(t[16]=h=>e.selectedLabel=h),type:"text",placeholder:e.currentPlaceholder,name:e.name,autocomplete:e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,class:_([e.nsSelect.is("focus",e.visible)]),tabindex:e.multiple&&e.filterable?-1:void 0,onFocus:e.handleFocus,onBlur:e.handleBlur,onInput:e.debouncedOnInputChange,onPaste:e.debouncedOnInputChange,onCompositionstart:e.handleComposition,onCompositionupdate:e.handleComposition,onCompositionend:e.handleComposition,onKeydown:[t[17]||(t[17]=lt(Ke(h=>e.navigateOptions("next"),["stop","prevent"]),["down"])),t[18]||(t[18]=lt(Ke(h=>e.navigateOptions("prev"),["stop","prevent"]),["up"])),lt(Ke(e.selectOption,["stop","prevent"]),["enter"]),t[19]||(t[19]=lt(Ke(h=>e.visible=!1,["stop","prevent"]),["esc"])),t[20]||(t[20]=lt(h=>e.visible=!1,["tab"]))],onMouseenter:t[21]||(t[21]=h=>e.inputHovering=!0),onMouseleave:t[22]||(t[22]=h=>e.inputHovering=!1)},fs({suffix:j(()=>[e.iconComponent?Ge((C(),x(i,{key:0,class:_([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])),[[pt,!e.showClose]]):G("v-if",!0),e.showClose&&e.clearIcon?(C(),x(i,{key:1,class:_([e.nsSelect.e("caret"),e.nsSelect.e("icon")]),onClick:e.handleClearClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),_:2},[e.$slots.prefix?{name:"prefix",fn:j(()=>[D("div",Vj,[ie(e.$slots,"prefix")])])}:void 0]),1032,["id","modelValue","placeholder","name","autocomplete","size","disabled","readonly","class","tabindex","onFocus","onBlur","onInput","onPaste","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown"])])]),content:j(()=>[Y(f,null,{default:j(()=>[Ge(Y(d,{ref:"scrollbar",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:_([e.nsSelect.is("empty",!e.allowCreate&&Boolean(e.query)&&e.filteredOptionsCount===0)])},{default:j(()=>[e.showNewOption?(C(),x(c,{key:0,value:e.query,created:!0},null,8,["value"])):G("v-if",!0),ie(e.$slots,"default")]),_:3},8,["wrap-class","view-class","class"]),[[pt,e.options.size>0&&!e.loading]]),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&e.options.size===0)?(C(),M(Le,{key:0},[e.$slots.empty?ie(e.$slots,"empty",{key:0}):(C(),M("p",{key:1,class:_(e.nsSelect.be("dropdown","empty"))},he(e.emptyText),3))],2112)):G("v-if",!0)]),_:3})]),_:3},8,["visible","teleported","popper-class","effect","transition","persistent","onShow"])],2)),[[p,e.handleClose,e.popperPaneRef]])}var Hj=ge(Lj,[["render",Fj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select.vue"]]);const zj=te({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},setup(e){const t=we("select"),n=A(!0),o=nt(),s=A([]);st(Zw,yt(ne({},Ut(e))));const l=Ne(Uu);xe(()=>{s.value=r(o.subTree)});const r=i=>{const u=[];return Array.isArray(i.children)&&i.children.forEach(c=>{var d;c.type&&c.type.name==="ElOption"&&c.component&&c.component.proxy?u.push(c.component.proxy):(d=c.children)!=null&&d.length&&u.push(...r(c))}),u},{groupQueryChange:a}=$t(l);return pe(a,()=>{n.value=s.value.some(i=>i.visible===!0)}),{visible:n,ns:t}}});function Kj(e,t,n,o,s,l){return Ge((C(),M("ul",{class:_(e.ns.be("group","wrap"))},[D("li",{class:_(e.ns.be("group","title"))},he(e.label),3),D("li",null,[D("ul",{class:_(e.ns.b("group"))},[ie(e.$slots,"default")],2)])],2)),[[pt,e.visible]])}var Qw=ge(zj,[["render",Kj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option-group.vue"]]);const ll=ot(Hj,{Option:_p,OptionGroup:Qw}),eu=Rt(_p),Wj=Rt(Qw),Tp=()=>Ne(Z0,{}),jj=Ve({pageSize:{type:Number,required:!0},pageSizes:{type:$e(Array),default:()=>Pt([10,20,30,40,50,100])},popperClass:{type:String,default:""},disabled:Boolean,size:{type:String,default:"default"}}),Yj=te({name:"ElPaginationSizes",components:{ElSelect:ll,ElOption:eu},props:jj,emits:["page-size-change"],setup(e,{emit:t}){const{t:n}=kt(),o=we("pagination"),s=Tp(),l=A(e.pageSize);pe(()=>e.pageSizes,(i,u)=>{if(!_n(i,u)&&Array.isArray(i)){const c=i.includes(e.pageSize)?e.pageSize:e.pageSizes[0];t("page-size-change",c)}}),pe(()=>e.pageSize,i=>{l.value=i});const r=E(()=>e.pageSizes);function a(i){var u;i!==l.value&&(l.value=i,(u=s.handleSizeChange)==null||u.call(s,Number(i)))}return{ns:o,innerPagesizes:r,innerPageSize:l,t:n,handleChange:a}}});function Uj(e,t,n,o,s,l){const r=le("el-option"),a=le("el-select");return C(),M("span",{class:_(e.ns.e("sizes"))},[Y(a,{"model-value":e.innerPageSize,disabled:e.disabled,"popper-class":e.popperClass,size:e.size,onChange:e.handleChange},{default:j(()=>[(C(!0),M(Le,null,rt(e.innerPagesizes,i=>(C(),x(r,{key:i,value:i,label:i+e.t("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size","onChange"])],2)}var qj=ge(Yj,[["render",Uj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/sizes.vue"]]);const Gj=te({name:"ElPaginationJumper",components:{ElInput:Zn},setup(){const{t:e}=kt(),t=we("pagination"),{pageCount:n,disabled:o,currentPage:s,changeEvent:l}=Tp(),r=A(),a=E(()=>{var c;return(c=r.value)!=null?c:s==null?void 0:s.value});function i(c){r.value=+c}function u(c){c=Math.trunc(+c),l==null||l(+c),r.value=void 0}return{ns:t,pageCount:n,disabled:o,innerValue:a,t:e,handleInput:i,handleChange:u}}}),Xj=["disabled"];function Jj(e,t,n,o,s,l){const r=le("el-input");return C(),M("span",{class:_(e.ns.e("jump")),disabled:e.disabled},[it(he(e.t("el.pagination.goto"))+" ",1),Y(r,{size:"small",class:_([e.ns.e("editor"),e.ns.is("in-pagination")]),min:1,max:e.pageCount,disabled:e.disabled,"model-value":e.innerValue,type:"number","onUpdate:modelValue":e.handleInput,onChange:e.handleChange},null,8,["class","max","disabled","model-value","onUpdate:modelValue","onChange"]),it(" "+he(e.t("el.pagination.pageClassifier")),1)],10,Xj)}var Zj=ge(Gj,[["render",Jj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/jumper.vue"]]);const Qj={total:{type:Number,default:1e3}},xj=te({name:"ElPaginationTotal",props:Qj,setup(){const{t:e}=kt(),t=we("pagination"),{disabled:n}=Tp();return{t:e,ns:t,disabled:n}}}),eY=["disabled"];function tY(e,t,n,o,s,l){return C(),M("span",{class:_(e.ns.e("total")),disabled:e.disabled},he(e.t("el.pagination.total",{total:e.total})),11,eY)}var nY=ge(xj,[["render",tY],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/total.vue"]]);const oY={currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean},sY=te({name:"ElPaginationPager",components:{DArrowLeft:Pu,DArrowRight:Lu,MoreFilled:PP},props:oY,emits:["change"],setup(e,{emit:t}){const n=we("pager"),o=we("icon"),s=A(!1),l=A(!1),r=A(!1),a=A(!1),i=E(()=>{const f=e.pagerCount,p=(f-1)/2,h=Number(e.currentPage),g=Number(e.pageCount);let m=!1,v=!1;g>f&&(h>f-p&&(m=!0),h{const f=(e.pagerCount-1)/2;s.value=!1,l.value=!1,e.pageCount>e.pagerCount&&(e.currentPage>e.pagerCount-f&&(s.value=!0),e.currentPageg&&(h=g)),h!==m&&t("change",h)}return{showPrevMore:s,showNextMore:l,quickPrevHover:r,quickNextHover:a,pagers:i,nsPager:n,nsIcon:o,onMouseenter:u,onPagerClick:d,onEnter:c}}}),lY=["aria-current"],rY=["aria-current"],aY=["aria-current"];function iY(e,t,n,o,s,l){const r=le("d-arrow-left"),a=le("more-filled"),i=le("d-arrow-right");return C(),M("ul",{class:_(e.nsPager.b()),onClick:t[4]||(t[4]=(...u)=>e.onPagerClick&&e.onPagerClick(...u)),onKeyup:t[5]||(t[5]=lt((...u)=>e.onEnter&&e.onEnter(...u),["enter"]))},[e.pageCount>0?(C(),M("li",{key:0,class:_([[e.nsPager.is("active",e.currentPage===1),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===1,tabindex:"0"}," 1 ",10,lY)):G("v-if",!0),e.showPrevMore?(C(),M("li",{key:1,class:_(["more","btn-quickprev",e.nsIcon.b(),e.nsPager.is("disabled",e.disabled)]),onMouseenter:t[0]||(t[0]=u=>e.onMouseenter("left")),onMouseleave:t[1]||(t[1]=u=>e.quickPrevHover=!1)},[e.quickPrevHover?(C(),x(r,{key:0})):(C(),x(a,{key:1}))],34)):G("v-if",!0),(C(!0),M(Le,null,rt(e.pagers,u=>(C(),M("li",{key:u,class:_([[e.nsPager.is("active",e.currentPage===u),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===u,tabindex:"0"},he(u),11,rY))),128)),e.showNextMore?(C(),M("li",{key:2,class:_(["more","btn-quicknext",e.nsIcon.b(),e.nsPager.is("disabled",e.disabled)]),onMouseenter:t[2]||(t[2]=u=>e.onMouseenter("right")),onMouseleave:t[3]||(t[3]=u=>e.quickNextHover=!1)},[e.quickNextHover?(C(),x(i,{key:0})):(C(),x(a,{key:1}))],34)):G("v-if",!0),e.pageCount>1?(C(),M("li",{key:3,class:_([[e.nsPager.is("active",e.currentPage===e.pageCount),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===e.pageCount,tabindex:"0"},he(e.pageCount),11,aY)):G("v-if",!0)],34)}var uY=ge(sY,[["render",iY],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/pager.vue"]]);const on=e=>typeof e!="number",cY=Ve({total:Number,pageSize:Number,defaultPageSize:Number,currentPage:Number,defaultCurrentPage:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>typeof e=="number"&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:$e(Array),default:()=>Pt([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},nextText:{type:String,default:""},small:Boolean,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),dY={"update:current-page":e=>typeof e=="number","update:page-size":e=>typeof e=="number","size-change":e=>typeof e=="number","current-change":e=>typeof e=="number","prev-click":e=>typeof e=="number","next-click":e=>typeof e=="number"},dg="ElPagination";var fY=te({name:dg,props:cY,emits:dY,setup(e,{emit:t,slots:n}){const{t:o}=kt(),s=we("pagination"),l=nt().vnode.props||{},r="onUpdate:currentPage"in l||"onUpdate:current-page"in l||"onCurrentChange"in l,a="onUpdate:pageSize"in l||"onUpdate:page-size"in l||"onSizeChange"in l,i=E(()=>{if(on(e.total)&&on(e.pageCount)||!on(e.currentPage)&&!r)return!1;if(e.layout.includes("sizes")){if(on(e.pageCount)){if(!on(e.total)&&!on(e.pageSize)&&!a)return!1}else if(!a)return!1}return!0}),u=A(on(e.defaultPageSize)?10:e.defaultPageSize),c=A(on(e.defaultCurrentPage)?1:e.defaultCurrentPage),d=E({get(){return on(e.pageSize)?u.value:e.pageSize},set(w){on(e.pageSize)&&(u.value=w),a&&(t("update:page-size",w),t("size-change",w))}}),f=E(()=>{let w=0;return on(e.pageCount)?on(e.total)||(w=Math.max(1,Math.ceil(e.total/d.value))):w=e.pageCount,w}),p=E({get(){return on(e.currentPage)?c.value:e.currentPage},set(w){let S=w;w<1?S=1:w>f.value&&(S=f.value),on(e.currentPage)&&(c.value=S),r&&(t("update:current-page",S),t("current-change",S))}});pe(f,w=>{p.value>w&&(p.value=w)});function h(w){p.value=w}function g(w){d.value=w;const S=f.value;p.value>S&&(p.value=S)}function m(){e.disabled||(p.value-=1,t("prev-click",p.value))}function v(){e.disabled||(p.value+=1,t("next-click",p.value))}function y(w,S){w&&(w.props||(w.props={}),w.props.class=[w.props.class,S].join(" "))}return st(Z0,{pageCount:f,disabled:E(()=>e.disabled),currentPage:p,changeEvent:h,handleSizeChange:g}),()=>{var w,S;if(!i.value)return o("el.pagination.deprecationWarning"),null;if(!e.layout||e.hideOnSinglePage&&f.value<=1)return null;const $=[],k=[],T=Pe("div",{class:s.e("rightwrapper")},k),O={prev:Pe(wj,{disabled:e.disabled,currentPage:p.value,prevText:e.prevText,onClick:m}),jumper:Pe(Zj),pager:Pe(uY,{currentPage:p.value,pageCount:f.value,pagerCount:e.pagerCount,onChange:h,disabled:e.disabled}),next:Pe(_j,{disabled:e.disabled,currentPage:p.value,pageCount:f.value,nextText:e.nextText,onClick:v}),sizes:Pe(qj,{pageSize:d.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,size:e.small?"small":"default"}),slot:(S=(w=n==null?void 0:n.default)==null?void 0:w.call(n))!=null?S:null,total:Pe(nY,{total:on(e.total)?0:e.total})},L=e.layout.split(",").map(V=>V.trim());let B=!1;return L.forEach(V=>{if(V==="->"){B=!0;return}B?k.push(O[V]):$.push(O[V])}),y($[0],s.is("first")),y($[$.length-1],s.is("last")),B&&k.length>0&&(y(k[0],s.is("first")),y(k[k.length-1],s.is("last")),$.push(T)),Pe("div",{role:"pagination","aria-label":"pagination",class:[s.b(),s.is("background",e.background),{[s.m("small")]:e.small}]},$)}}});const pY=ot(fY),hY=Ve({title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,values:bd,default:"primary"},cancelButtonType:{type:String,values:bd,default:"text"},icon:{type:nn,default:oL},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},onConfirm:{type:$e(Function)},onCancel:{type:$e(Function)},teleported:Zt.teleported,persistent:Zt.persistent}),fg="ElPopconfirm",mY=te({name:fg,components:{ElButton:Kn,ElTooltip:mn,ElIcon:je},props:hY,setup(e){const{compatTeleported:t}=fr(fg,"appendToBody"),{t:n}=kt(),o=we("popconfirm"),s=A(),l=()=>{var d,f;(f=(d=b(s))==null?void 0:d.onClose)==null||f.call(d)},r=()=>{l()},a=d=>{var f;(f=e.onConfirm)==null||f.call(e,d),r()},i=d=>{var f;(f=e.onCancel)==null||f.call(e,d),r()},u=E(()=>e.confirmButtonText||n("el.popconfirm.confirmButtonText")),c=E(()=>e.cancelButtonText||n("el.popconfirm.cancelButtonText"));return{finalConfirmButtonText:u,finalCancelButtonText:c,tooltipRef:s,ns:o,compatTeleported:t,confirm:a,cancel:i}}});function vY(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-button"),i=le("el-tooltip");return C(),x(i,Et({ref:"tooltipRef"},e.$attrs,{trigger:"click",effect:"light","popper-class":`${e.ns.namespace.value}-popover`,teleported:e.compatTeleported,"fallback-placements":["bottom","top","right","left"],"hide-after":e.hideAfter,persistent:e.persistent}),{content:j(()=>[D("div",{class:_(e.ns.b())},[D("div",{class:_(e.ns.e("main"))},[!e.hideIcon&&e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon")),style:De({color:e.iconColor})},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class","style"])):G("v-if",!0),it(" "+he(e.title),1)],2),D("div",{class:_(e.ns.e("action"))},[Y(a,{size:"small",type:e.cancelButtonType,onClick:e.cancel},{default:j(()=>[it(he(e.finalCancelButtonText),1)]),_:1},8,["type","onClick"]),Y(a,{size:"small",type:e.confirmButtonType,onClick:e.confirm},{default:j(()=>[it(he(e.finalConfirmButtonText),1)]),_:1},8,["type","onClick"])],2)],2)]),default:j(()=>[e.$slots.reference?ie(e.$slots,"reference",{key:0}):G("v-if",!0)]),_:3},16,["popper-class","teleported","hide-after","persistent"])}var gY=ge(mY,[["render",vY],["__file","/home/runner/work/element-plus/element-plus/packages/components/popconfirm/src/popconfirm.vue"]]);const bY=ot(gY),yY=Ve({trigger:ua.trigger,placement:ki.placement,disabled:ua.disabled,visible:Zt.visible,transition:Zt.transition,popperOptions:ki.popperOptions,tabindex:ki.tabindex,appendToBody:{type:Boolean,default:void 0},content:Zt.content,popperStyle:Zt.popperStyle,popperClass:Zt.popperClass,enterable:Te(ne({},Zt.enterable),{default:!0}),effect:Te(ne({},Zt.effect),{default:"light"}),teleported:Zt.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0}}),wY=["update:visible","before-enter","before-leave","after-enter","after-leave"],pg="ElPopover",CY=te({name:pg,components:{ElTooltip:mn},props:yY,emits:wY,setup(e,{emit:t}){const n=we("popover"),o=A(null),s=E(()=>{var g;return(g=b(o))==null?void 0:g.popperRef}),l=E(()=>Qe(e.width)?e.width:`${e.width}px`),r=E(()=>[{width:l.value},e.popperStyle]),a=E(()=>[n.b(),e.popperClass,{[n.m("plain")]:!!e.content}]),i=E(()=>e.transition==="el-fade-in-linear"),{compatTeleported:u}=fr(pg,"appendToBody");return{compatTeleported:u,ns:n,kls:a,gpuAcceleration:i,style:r,tooltipRef:o,popperRef:s,hide:()=>{var g;(g=o.value)==null||g.hide()},beforeEnter:()=>{t("before-enter")},beforeLeave:()=>{t("before-leave")},afterEnter:()=>{t("after-enter")},afterLeave:()=>{t("update:visible",!1),t("after-leave")}}}});function $Y(e,t,n,o,s,l){const r=le("el-tooltip");return C(),x(r,Et({ref:"tooltipRef"},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,"append-to-body":e.appendToBody,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":e.kls,"popper-style":e.style,teleported:e.compatTeleported,persistent:e.persistent,"gpu-acceleration":e.gpuAcceleration,onBeforeShow:e.beforeEnter,onBeforeHide:e.beforeLeave,onShow:e.afterEnter,onHide:e.afterLeave}),{content:j(()=>[e.title?(C(),M("div",{key:0,class:_(e.ns.e("title")),role:"title"},he(e.title),3)):G("v-if",!0),ie(e.$slots,"default",{},()=>[it(he(e.content),1)])]),default:j(()=>[e.$slots.reference?ie(e.$slots,"reference",{key:0}):G("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","append-to-body","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onBeforeShow","onBeforeHide","onShow","onHide"])}var Ur=ge(CY,[["render",$Y],["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/index.vue"]]);const hg=(e,t)=>{const n=t.arg||t.value,o=n==null?void 0:n.popperRef;o&&(o.triggerRef=e)};var Vd={mounted(e,t){hg(e,t)},updated(e,t){hg(e,t)}};const kY="popover";Ur.install=e=>{e.component(Ur.name,Ur)};Vd.install=e=>{e.directive(kY,Vd)};const xw=Vd;Ur.directive=xw;const SY=Ur,EY=SY,_Y=xw,TY=Ve({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:{type:Boolean,default:!1},duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:$e(String),default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:$e([String,Array,Function]),default:""},format:{type:$e(Function),default:e=>`${e}%`}}),AY=te({name:"ElProgress",components:{ElIcon:je,CircleCheck:Zi,CircleClose:Fo,Check:Jl,Close:Yn,WarningFilled:ia},props:TY,setup(e){const t=we("progress"),n=E(()=>({width:`${e.percentage}%`,animationDuration:`${e.duration}s`,backgroundColor:g(e.percentage)})),o=E(()=>(e.strokeWidth/e.width*100).toFixed(1)),s=E(()=>e.type==="circle"||e.type==="dashboard"?Number.parseInt(`${50-Number.parseFloat(o.value)/2}`,10):0),l=E(()=>{const v=s.value,y=e.type==="dashboard";return` + `}else r||(r=window.setTimeout(g,a.config.hoverThreshold))},h=()=>{!r||(clearTimeout(r),r=null)},g=()=>{!i.value||(i.value.innerHTML="",h())};return{ns:n,panel:a,hoverZone:i,isEmpty:u,isLoading:c,menuId:d,t:o,handleExpand:f,handleMouseMove:p,clearHoverZone:g}}});function H5(e,t,n,o,s,l){const r=le("el-cascader-node"),a=le("loading"),i=le("el-icon"),u=le("el-scrollbar");return C(),x(u,{key:e.menuId,tag:"ul",role:"menu",class:_(e.ns.b()),"wrap-class":e.ns.e("wrap"),"view-class":[e.ns.e("list"),e.ns.is("empty",e.isEmpty)],onMousemove:e.handleMouseMove,onMouseleave:e.clearHoverZone},{default:j(()=>{var c;return[(C(!0),M(Le,null,it(e.nodes,d=>(C(),x(r,{key:d.uid,node:d,"menu-id":e.menuId,onExpand:e.handleExpand},null,8,["node","menu-id","onExpand"]))),128)),e.isLoading?(C(),M("div",{key:0,class:_(e.ns.e("empty-text"))},[Y(i,{size:"14",class:_(e.ns.is("loading"))},{default:j(()=>[Y(a)]),_:1},8,["class"]),at(" "+he(e.t("el.cascader.loading")),1)],2)):e.isEmpty?(C(),M("div",{key:1,class:_(e.ns.e("empty-text"))},he(e.t("el.cascader.noData")),3)):(c=e.panel)!=null&&c.isHoverMenu?(C(),M("svg",{key:2,ref:"hoverZone",class:_(e.ns.e("hover-zone"))},null,2)):G("v-if",!0)]}),_:1},8,["class","wrap-class","view-class","onMousemove","onMouseleave"])}var z5=ge(F5,[["render",H5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/menu.vue"]]),vp=(e=>(e.CLICK="click",e.HOVER="hover",e))(vp||{});let K5=0;const W5=e=>{const t=[e];let{parent:n}=e;for(;n;)t.unshift(n),n=n.parent;return t};class Jl{constructor(t,n,o,s=!1){this.data=t,this.config=n,this.parent=o,this.root=s,this.uid=K5++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:l,label:r,children:a}=n,i=t[a],u=W5(this);this.level=s?0:o?o.level+1:1,this.value=t[l],this.label=t[r],this.pathNodes=u,this.pathValues=u.map(c=>c.value),this.pathLabels=u.map(c=>c.label),this.childrenData=i,this.children=(i||[]).map(c=>new Jl(c,n,this)),this.loaded=!n.lazy||this.isLeaf||!ra(i)}get isDisabled(){const{data:t,parent:n,config:o}=this,{disabled:s,checkStrictly:l}=o;return(et(s)?s(t,this):!!t[s])||!l&&(n==null?void 0:n.isDisabled)}get isLeaf(){const{data:t,config:n,childrenData:o,loaded:s}=this,{lazy:l,leaf:r}=n,a=et(r)?r(t,this):t[r];return Cn(a)?l&&!s?!1:!(Array.isArray(o)&&o.length):!!a}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(t){const{childrenData:n,children:o}=this,s=new Jl(t,this.config,this);return Array.isArray(n)?n.push(t):this.childrenData=[t],o.push(s),s}calcText(t,n){const o=t?this.pathLabels.join(n):this.label;return this.text=o,o}broadcast(t,...n){const o=`onParent${yn(t)}`;this.children.forEach(s=>{s&&(s.broadcast(t,...n),s[o]&&s[o](...n))})}emit(t,...n){const{parent:o}=this,s=`onChild${yn(t)}`;o&&(o[s]&&o[s](...n),o.emit(t,...n))}onParentCheck(t){this.isDisabled||this.setCheckState(t)}onChildCheck(){const{children:t}=this,n=t.filter(s=>!s.isDisabled),o=n.length?n.every(s=>s.checked):!1;this.setCheckState(o)}setCheckState(t){const n=this.children.length,o=this.children.reduce((s,l)=>{const r=l.checked?1:l.indeterminate?.5:0;return s+r},0);this.checked=this.loaded&&this.children.every(s=>s.loaded&&s.checked)&&t,this.indeterminate=this.loaded&&o!==n&&o>0}doCheck(t){if(this.checked===t)return;const{checkStrictly:n,multiple:o}=this.config;n||!o?this.checked=t:(this.broadcast("check",t),this.setCheckState(t),this.emit("check"))}}const Md=(e,t)=>e.reduce((n,o)=>(o.isLeaf?n.push(o):(!t&&n.push(o),n=n.concat(Md(o.children,t))),n),[]);class Wv{constructor(t,n){this.config=n;const o=(t||[]).map(s=>new Jl(s,this.config));this.nodes=o,this.allNodes=Md(o,!1),this.leafNodes=Md(o,!0)}getNodes(){return this.nodes}getFlattedNodes(t){return t?this.leafNodes:this.allNodes}appendNode(t,n){const o=n?n.appendChild(t):new Jl(t,this.config);n||this.nodes.push(o),this.allNodes.push(o),o.isLeaf&&this.leafNodes.push(o)}appendNodes(t,n){t.forEach(o=>this.appendNode(o,n))}getNodeByValue(t,n=!1){return!t&&t!==0?null:this.getFlattedNodes(n).find(s=>_n(s.value,t)||_n(s.pathValues,t))||null}getSameNode(t){return t&&this.getFlattedNodes(!1).find(({value:o,level:s})=>_n(t.value,o)&&t.level===s)||null}}const pw={modelValue:[Number,String,Array],options:{type:Array,default:()=>[]},props:{type:Object,default:()=>({})}},j5={expandTrigger:vp.CLICK,multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:wt,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},Y5=e=>E(()=>ne(ne({},j5),e.props)),jv=e=>{if(!e)return 0;const t=e.id.split("-");return Number(t[t.length-2])},U5=e=>{if(!e)return;const t=e.querySelector("input");t?t.click():N0(e)&&e.click()},q5=(e,t)=>{const n=t.slice(0),o=n.map(l=>l.uid),s=e.reduce((l,r)=>{const a=o.indexOf(r.uid);return a>-1&&(l.push(r),n.splice(a,1),o.splice(a,1)),l},[]);return s.push(...n),s},G5=ee({name:"ElCascaderPanel",components:{ElCascaderMenu:z5},props:Te(ne({},pw),{border:{type:Boolean,default:!0},renderLabel:Function}),emits:[tt,qt,"close","expand-change"],setup(e,{emit:t,slots:n}){let o=!1;const s=we("cascader"),l=Y5(e);let r=null;const a=A(!0),i=A([]),u=A(null),c=A([]),d=A(null),f=A([]),p=E(()=>l.value.expandTrigger===vp.HOVER),h=E(()=>e.renderLabel||n.default),g=()=>{const{options:H}=e,R=l.value;o=!1,r=new Wv(H,R),c.value=[r.getNodes()],R.lazy&&ra(e.options)?(a.value=!1,m(void 0,z=>{z&&(r=new Wv(z,R),c.value=[r.getNodes()]),a.value=!0,O(!1,!0)})):O(!1,!0)},m=(H,R)=>{const z=l.value;H=H||new Jl({},z,void 0,!0),H.loading=!0;const W=P=>{const N=H,I=N.root?null:N;P&&(r==null||r.appendNodes(P,I)),N.loading=!1,N.loaded=!0,N.childrenData=N.childrenData||[],R&&R(P)};z.lazyLoad(H,W)},v=(H,R)=>{var z;const{level:W}=H,P=c.value.slice(0,W);let N;H.isLeaf?N=H.pathNodes[W-2]:(N=H,P.push(H.children)),((z=d.value)==null?void 0:z.uid)!==(N==null?void 0:N.uid)&&(d.value=H,c.value=P,!R&&t("expand-change",(H==null?void 0:H.pathValues)||[]))},b=(H,R,z=!0)=>{const{checkStrictly:W,multiple:P}=l.value,N=f.value[0];o=!0,!P&&(N==null||N.doCheck(!1)),H.doCheck(R),T(),z&&!P&&!W&&t("close"),!z&&!P&&!W&&w(H)},w=H=>{!H||(H=H.parent,w(H),H&&v(H))},S=H=>r==null?void 0:r.getFlattedNodes(H),$=H=>{var R;return(R=S(H))==null?void 0:R.filter(z=>z.checked!==!1)},k=()=>{f.value.forEach(H=>H.doCheck(!1)),T()},T=()=>{var H;const{checkStrictly:R,multiple:z}=l.value,W=f.value,P=$(!R),N=q5(W,P),I=N.map(U=>U.valueByOption);f.value=N,u.value=z?I:(H=I[0])!=null?H:null},O=(H=!1,R=!1)=>{const{modelValue:z}=e,{lazy:W,multiple:P,checkStrictly:N}=l.value,I=!N;if(!(!a.value||o||!R&&_n(z,u.value)))if(W&&!H){const q=pv(m3(qs(z))).map(Q=>r==null?void 0:r.getNodeByValue(Q)).filter(Q=>!!Q&&!Q.loaded&&!Q.loading);q.length?q.forEach(Q=>{m(Q,()=>O(!1,R))}):O(!0,R)}else{const U=P?qs(z):[z],q=pv(U.map(Q=>r==null?void 0:r.getNodeByValue(Q,I)));L(q,!1),u.value=z}},L=(H,R=!0)=>{const{checkStrictly:z}=l.value,W=f.value,P=H.filter(U=>!!U&&(z||U.isLeaf)),N=r==null?void 0:r.getSameNode(d.value),I=R&&N||P[0];I?I.pathNodes.forEach(U=>v(U,!0)):d.value=null,W.forEach(U=>U.doCheck(!1)),P.forEach(U=>U.doCheck(!0)),f.value=P,ze(V)},V=()=>{!ct||i.value.forEach(H=>{const R=H==null?void 0:H.$el;if(R){const z=R.querySelector(`.${s.namespace.value}-scrollbar__wrap`),W=R.querySelector(`.${s.b("node")}.${s.is("active")}`)||R.querySelector(`.${s.b("node")}.in-active-path`);D0(z,W)}})},B=H=>{const R=H.target,{code:z}=H;switch(z){case Ie.up:case Ie.down:{H.preventDefault();const W=z===Ie.up?-1:1;ci(M0(R,W,`.${s.b("node")}[tabindex="-1"]`));break}case Ie.left:{H.preventDefault();const W=i.value[jv(R)-1],P=W==null?void 0:W.$el.querySelector(`.${s.b("node")}[aria-expanded="true"]`);ci(P);break}case Ie.right:{H.preventDefault();const W=i.value[jv(R)+1],P=W==null?void 0:W.$el.querySelector(`.${s.b("node")}[tabindex="-1"]`);ci(P);break}case Ie.enter:U5(R);break;case Ie.esc:case Ie.tab:t("close");break}};return st(mp,yt({config:l,expandingNode:d,checkedNodes:f,isHoverMenu:p,initialLoaded:a,renderLabelFn:h,lazyLoad:m,expandNode:v,handleCheckChange:b})),pe([l,()=>e.options],g,{deep:!0,immediate:!0}),pe(()=>e.modelValue,()=>{o=!1,O()}),pe(u,H=>{_n(H,e.modelValue)||(t(tt,H),t(qt,H))}),ky(()=>i.value=[]),xe(()=>!ra(e.modelValue)&&O()),{ns:s,menuList:i,menus:c,checkedNodes:f,handleKeyDown:B,handleCheckChange:b,getFlattedNodes:S,getCheckedNodes:$,clearCheckedNodes:k,calculateCheckedValue:T,scrollToExpandingNode:V}}});function X5(e,t,n,o,s,l){const r=le("el-cascader-menu");return C(),M("div",{class:_([e.ns.b("panel"),e.ns.is("bordered",e.border)]),onKeydown:t[0]||(t[0]=(...a)=>e.handleKeyDown&&e.handleKeyDown(...a))},[(C(!0),M(Le,null,it(e.menus,(a,i)=>(C(),x(r,{key:i,ref_for:!0,ref:u=>e.menuList[i]=u,index:i,nodes:[...a]},null,8,["index","nodes"]))),128))],34)}var vi=ge(G5,[["render",X5],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/index.vue"]]);vi.install=e=>{e.component(vi.name,vi)};const hw=vi,Z5=hw,gp=Be({closable:Boolean,type:{type:String,values:["success","info","warning","danger",""],default:""},hit:Boolean,disableTransitions:Boolean,color:{type:String,default:""},size:{type:String,values:Eo,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),J5={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},Q5={name:"ElTag"},x5=ee(Te(ne({},Q5),{props:gp,emits:J5,setup(e,{emit:t}){const n=e,o=Wt(),s=we("tag"),l=E(()=>{const{type:i,hit:u,effect:c,closable:d,round:f}=n;return[s.b(),s.is("closable",d),s.m(i),s.m(o.value),s.m(c),s.is("hit",u),s.is("round",f)]}),r=i=>{i.stopPropagation(),t("close",i)},a=i=>{t("click",i)};return(i,u)=>i.disableTransitions?(C(),x(zt,{key:1,name:`${y(s).namespace.value}-zoom-in-center`},{default:j(()=>[D("span",{class:_(y(l)),style:Pe({backgroundColor:i.color}),onClick:a},[D("span",{class:_(y(s).e("content"))},[ie(i.$slots,"default")],2),i.closable?(C(),x(y(je),{key:0,class:_(y(s).e("close")),onClick:r},{default:j(()=>[Y(y(Yn))]),_:1},8,["class"])):G("v-if",!0)],6)]),_:3},8,["name"])):(C(),M("span",{key:0,class:_(y(l)),style:Pe({backgroundColor:i.color}),onClick:a},[D("span",{class:_(y(s).e("content"))},[ie(i.$slots,"default")],2),i.closable?(C(),x(y(je),{key:0,class:_(y(s).e("close")),onClick:r},{default:j(()=>[Y(y(Yn))]),_:1},8,["class"])):G("v-if",!0)],6))}}));var eF=ge(x5,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue"]]);const Wu=ot(eF),tF=40,nF={large:36,default:32,small:28},oF={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:e})=>{const{modifiersData:t,placement:n}=e;["right","left","bottom","top"].includes(n)||(t.arrow.x=35)},requires:["arrow"]}]},Yv="ElCascader",sF=ee({name:Yv,components:{ElCascaderPanel:hw,ElInput:Jn,ElTooltip:mn,ElScrollbar:Uo,ElTag:Wu,ElIcon:je,CircleClose:Fo,Check:Xl,ArrowDown:dl},directives:{Clickoutside:hl},props:Te(ne({},pw),{size:{type:String,validator:On},placeholder:{type:String},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:Function,default:(e,t)=>e.text.includes(t)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},debounce:{type:Number,default:300},beforeFilter:{type:Function,default:()=>!0},popperClass:{type:String,default:""},popperAppendToBody:{type:Boolean,default:void 0},teleported:Jt.teleported,tagType:Te(ne({},gp.type),{default:"info"})}),emits:[tt,qt,"focus","blur","visible-change","expand-change","remove-tag"],setup(e,{emit:t}){let n=0,o=0;const{compatTeleported:s}=dr(Yv,"popperAppendToBody"),l=we("cascader"),r=we("input"),{t:a}=kt(),i=Ne(Pn,{}),u=Ne(Un,{}),c=A(null),d=A(null),f=A(null),p=A(null),h=A(null),g=A(!1),m=A(!1),v=A(!1),b=A(""),w=A(""),S=A([]),$=A([]),k=A([]),T=A(!1),O=E(()=>e.disabled||i.disabled),L=E(()=>e.placeholder||a("el.cascader.placeholder")),V=Wt(),B=E(()=>["small"].includes(V.value)?"small":"default"),H=E(()=>!!e.props.multiple),R=E(()=>!e.filterable||H.value),z=E(()=>H.value?w.value:b.value),W=E(()=>{var re;return((re=p.value)==null?void 0:re.checkedNodes)||[]}),P=E(()=>!e.clearable||O.value||v.value||!m.value?!1:!!W.value.length),N=E(()=>{const{showAllLevels:re,separator:se}=e,te=W.value;return te.length?H.value?" ":te[0].calcText(re,se):""}),I=E({get(){return e.modelValue},set(re){var se;t(tt,re),t(qt,re),(se=u.validate)==null||se.call(u,"change").catch(te=>void 0)}}),U=E(()=>{var re,se;return(se=(re=c.value)==null?void 0:re.popperRef)==null?void 0:se.contentRef}),q=re=>{var se,te,ue;if(!O.value&&(re=re!=null?re:!g.value,re!==g.value)){if(g.value=re,(te=(se=d.value)==null?void 0:se.input)==null||te.setAttribute("aria-expanded",`${re}`),re)Q(),ze((ue=p.value)==null?void 0:ue.scrollToExpandingNode);else if(e.filterable){const{value:Re}=N;b.value=Re,w.value=Re}t("visible-change",re)}},Q=()=>{ze(()=>{var re;(re=c.value)==null||re.updatePopper()})},Z=()=>{v.value=!1},ae=re=>{const{showAllLevels:se,separator:te}=e;return{node:re,key:re.uid,text:re.calcText(se,te),hitState:!1,closable:!O.value&&!re.isDisabled,isCollapseTag:!1}},Ee=re=>{var se;const te=re.node;te.doCheck(!1),(se=p.value)==null||se.calculateCheckedValue(),t("remove-tag",te.valueByOption)},Me=()=>{if(!H.value)return;const re=W.value,se=[],te=[];if(re.forEach(ue=>te.push(ae(ue))),$.value=te,re.length){const[ue,...Re]=re,F=Re.length;se.push(ae(ue)),F&&(e.collapseTags?se.push({key:-1,text:`+ ${F}`,closable:!1,isCollapseTag:!0}):Re.forEach(de=>se.push(ae(de))))}S.value=se},J=()=>{var re,se;const{filterMethod:te,showAllLevels:ue,separator:Re}=e,F=(se=(re=p.value)==null?void 0:re.getFlattedNodes(!e.props.checkStrictly))==null?void 0:se.filter(de=>de.isDisabled?!1:(de.calcText(ue,Re),te(de,z.value)));H.value&&(S.value.forEach(de=>{de.hitState=!1}),$.value.forEach(de=>{de.hitState=!1})),v.value=!0,k.value=F,Q()},ve=()=>{var re;let se;v.value&&h.value?se=h.value.$el.querySelector(`.${l.e("suggestion-item")}`):se=(re=p.value)==null?void 0:re.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`),se&&(se.focus(),!v.value&&se.click())},Ce=()=>{var re,se;const te=(re=d.value)==null?void 0:re.input,ue=f.value,Re=(se=h.value)==null?void 0:se.$el;if(!(!ct||!te)){if(Re){const F=Re.querySelector(`.${l.e("suggestion-list")}`);F.style.minWidth=`${te.offsetWidth}px`}if(ue){const{offsetHeight:F}=ue,de=S.value.length>0?`${Math.max(F+6,n)}px`:`${n}px`;te.style.height=de,Q()}}},ke=re=>{var se;return(se=p.value)==null?void 0:se.getCheckedNodes(re)},Oe=re=>{Q(),t("expand-change",re)},We=re=>{var se;const te=(se=re.target)==null?void 0:se.value;if(re.type==="compositionend")T.value=!1,ze(()=>_e(te));else{const ue=te[te.length-1]||"";T.value=!Ru(ue)}},qe=re=>{if(!T.value)switch(re.code){case Ie.enter:q();break;case Ie.down:q(!0),ze(ve),re.preventDefault();break;case Ie.esc:case Ie.tab:q(!1);break}},K=()=>{var re;(re=p.value)==null||re.clearCheckedNodes(),q(!1)},X=re=>{var se,te;const{checked:ue}=re;H.value?(se=p.value)==null||se.handleCheckChange(re,!ue,!1):(!ue&&((te=p.value)==null||te.handleCheckChange(re,!0,!1)),q(!1))},fe=re=>{const se=re.target,{code:te}=re;switch(te){case Ie.up:case Ie.down:{const ue=te===Ie.up?-1:1;ci(M0(se,ue,`.${l.e("suggestion-item")}[tabindex="-1"]`));break}case Ie.enter:se.click();break;case Ie.esc:case Ie.tab:q(!1);break}},ye=()=>{const re=S.value,se=re[re.length-1];o=w.value?0:o+1,!(!se||!o)&&(se.hitState?Ee(se):se.hitState=!0)},be=hn(()=>{const{value:re}=z;if(!re)return;const se=e.beforeFilter(re);xs(se)?se.then(J).catch(()=>{}):se!==!1?J():Z()},e.debounce),_e=(re,se)=>{!g.value&&q(!0),!(se!=null&&se.isComposing)&&(re?be():Z())};return pe(v,Q),pe([W,O],Me),pe(S,()=>{ze(()=>Ce())}),pe(N,re=>b.value=re,{immediate:!0}),xe(()=>{var re;const se=(re=d.value)==null?void 0:re.$el;n=(se==null?void 0:se.offsetHeight)||nF[V.value]||tF,ar(se,Ce)}),_t(()=>{var re;ir((re=d.value)==null?void 0:re.$el,Ce)}),{popperOptions:oF,tooltipRef:c,popperPaneRef:U,input:d,tagWrapper:f,panel:p,suggestionPanel:h,popperVisible:g,inputHover:m,inputPlaceholder:L,filtering:v,presentText:N,checkedValue:I,inputValue:b,searchInputValue:w,presentTags:S,allPresentTags:$,suggestions:k,isDisabled:O,isOnComposition:T,realSize:V,tagSize:B,multiple:H,readonly:R,clearBtnVisible:P,compatTeleported:s,nsCascader:l,nsInput:r,t:a,togglePopperVisible:q,hideSuggestionPanel:Z,deleteTag:Ee,focusFirstNode:ve,getCheckedNodes:ke,handleExpandChange:Oe,handleKeyDown:qe,handleComposition:We,handleClear:K,handleSuggestionClick:X,handleSuggestionKeyDown:fe,handleDelete:ye,handleInput:_e}}}),lF={key:0},rF={class:"el-cascader__collapse-tags"},aF=["placeholder"],iF=["onClick"];function uF(e,t,n,o,s,l){const r=le("circle-close"),a=le("el-icon"),i=le("arrow-down"),u=le("el-input"),c=le("el-tag"),d=le("el-tooltip"),f=le("el-cascader-panel"),p=le("check"),h=le("el-scrollbar"),g=Mn("clickoutside");return C(),x(d,{ref:"tooltipRef",visible:e.popperVisible,"onUpdate:visible":t[17]||(t[17]=m=>e.popperVisible=m),teleported:e.compatTeleported,"popper-class":[e.nsCascader.e("dropdown"),e.popperClass],"popper-options":e.popperOptions,"fallback-placements":["bottom-start","bottom","top-start","top","right","left"],"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:"bottom-start",transition:`${e.nsCascader.namespace.value}-zoom-in-top`,effect:"light",pure:"",persistent:"",onHide:e.hideSuggestionPanel},{default:j(()=>[Ge((C(),M("div",{class:_([e.nsCascader.b(),e.nsCascader.m(e.realSize),e.nsCascader.is("disabled",e.isDisabled),e.$attrs.class]),style:Pe(e.$attrs.style),onClick:t[11]||(t[11]=()=>e.togglePopperVisible(e.readonly?void 0:!0)),onKeydown:t[12]||(t[12]=(...m)=>e.handleKeyDown&&e.handleKeyDown(...m)),onMouseenter:t[13]||(t[13]=m=>e.inputHover=!0),onMouseleave:t[14]||(t[14]=m=>e.inputHover=!1)},[Y(u,{ref:"input",modelValue:e.inputValue,"onUpdate:modelValue":t[1]||(t[1]=m=>e.inputValue=m),placeholder:e.inputPlaceholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1,size:e.realSize,class:_(e.nsCascader.is("focus",e.popperVisible)),onCompositionstart:e.handleComposition,onCompositionupdate:e.handleComposition,onCompositionend:e.handleComposition,onFocus:t[2]||(t[2]=m=>e.$emit("focus",m)),onBlur:t[3]||(t[3]=m=>e.$emit("blur",m)),onInput:e.handleInput},{suffix:j(()=>[e.clearBtnVisible?(C(),x(a,{key:"clear",class:_([e.nsInput.e("icon"),"icon-circle-close"]),onClick:Ke(e.handleClear,["stop"])},{default:j(()=>[Y(r)]),_:1},8,["class","onClick"])):(C(),x(a,{key:"arrow-down",class:_([e.nsInput.e("icon"),"icon-arrow-down",e.nsCascader.is("reverse",e.popperVisible)]),onClick:t[0]||(t[0]=Ke(m=>e.togglePopperVisible(),["stop"]))},{default:j(()=>[Y(i)]),_:1},8,["class"]))]),_:1},8,["modelValue","placeholder","readonly","disabled","size","class","onCompositionstart","onCompositionupdate","onCompositionend","onInput"]),e.multiple?(C(),M("div",{key:0,ref:"tagWrapper",class:_(e.nsCascader.e("tags"))},[(C(!0),M(Le,null,it(e.presentTags,m=>(C(),x(c,{key:m.key,type:e.tagType,size:e.tagSize,hit:m.hitState,closable:m.closable,"disable-transitions":"",onClose:v=>e.deleteTag(m)},{default:j(()=>[m.isCollapseTag===!1?(C(),M("span",lF,he(m.text),1)):(C(),x(d,{key:1,teleported:!1,disabled:e.popperVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom",effect:"light"},{default:j(()=>[D("span",null,he(m.text),1)]),content:j(()=>[D("div",rF,[(C(!0),M(Le,null,it(e.allPresentTags,(v,b)=>(C(),M("div",{key:b,class:"el-cascader__collapse-tag"},[(C(),x(c,{key:v.key,class:"in-tooltip",type:e.tagType,size:e.tagSize,hit:v.hitState,closable:v.closable,"disable-transitions":"",onClose:w=>e.deleteTag(v)},{default:j(()=>[D("span",null,he(v.text),1)]),_:2},1032,["type","size","hit","closable","onClose"]))]))),128))])]),_:2},1032,["disabled"]))]),_:2},1032,["type","size","hit","closable","onClose"]))),128)),e.filterable&&!e.isDisabled?Ge((C(),M("input",{key:0,"onUpdate:modelValue":t[4]||(t[4]=m=>e.searchInputValue=m),type:"text",class:_(e.nsCascader.e("search-input")),placeholder:e.presentText?"":e.inputPlaceholder,onInput:t[5]||(t[5]=m=>e.handleInput(e.searchInputValue,m)),onClick:t[6]||(t[6]=Ke(m=>e.togglePopperVisible(!0),["stop"])),onKeydown:t[7]||(t[7]=lt((...m)=>e.handleDelete&&e.handleDelete(...m),["delete"])),onCompositionstart:t[8]||(t[8]=(...m)=>e.handleComposition&&e.handleComposition(...m)),onCompositionupdate:t[9]||(t[9]=(...m)=>e.handleComposition&&e.handleComposition(...m)),onCompositionend:t[10]||(t[10]=(...m)=>e.handleComposition&&e.handleComposition(...m))},null,42,aF)),[[Rf,e.searchInputValue]]):G("v-if",!0)],2)):G("v-if",!0)],38)),[[g,()=>e.togglePopperVisible(!1),e.popperPaneRef]])]),content:j(()=>[Ge(Y(f,{ref:"panel",modelValue:e.checkedValue,"onUpdate:modelValue":t[15]||(t[15]=m=>e.checkedValue=m),options:e.options,props:e.props,border:!1,"render-label":e.$slots.default,onExpandChange:e.handleExpandChange,onClose:t[16]||(t[16]=m=>e.$nextTick(()=>e.togglePopperVisible(!1)))},null,8,["modelValue","options","props","render-label","onExpandChange"]),[[pt,!e.filtering]]),e.filterable?Ge((C(),x(h,{key:0,ref:"suggestionPanel",tag:"ul",class:_(e.nsCascader.e("suggestion-panel")),"view-class":e.nsCascader.e("suggestion-list"),onKeydown:e.handleSuggestionKeyDown},{default:j(()=>[e.suggestions.length?(C(!0),M(Le,{key:0},it(e.suggestions,m=>(C(),M("li",{key:m.uid,class:_([e.nsCascader.e("suggestion-item"),e.nsCascader.is("checked",m.checked)]),tabindex:-1,onClick:v=>e.handleSuggestionClick(m)},[D("span",null,he(m.text),1),m.checked?(C(),x(a,{key:0},{default:j(()=>[Y(p)]),_:1})):G("v-if",!0)],10,iF))),128)):ie(e.$slots,"empty",{key:1},()=>[D("li",{class:_(e.nsCascader.e("empty-text"))},he(e.t("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class","onKeydown"])),[[pt,e.filtering]]):G("v-if",!0)]),_:3},8,["visible","teleported","popper-class","popper-options","transition","onHide"])}var gi=ge(sF,[["render",uF],["__file","/home/runner/work/element-plus/element-plus/packages/components/cascader/src/index.vue"]]);gi.install=e=>{e.component(gi.name,gi)};const cF=gi,dF=cF,fF=Be({checked:{type:Boolean,default:!1}}),pF={"update:checked":e=>en(e),change:e=>en(e)},hF={name:"ElCheckTag"},mF=ee(Te(ne({},hF),{props:fF,emits:pF,setup(e,{emit:t}){const n=e,o=we("check-tag"),s=()=>{const l=!n.checked;t("change",l),t("update:checked",l)};return(l,r)=>(C(),M("span",{class:_([y(o).b(),y(o).is("checked",l.checked)]),onClick:s},[ie(l.$slots,"default")],2))}}));var vF=ge(mF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/check-tag/src/check-tag.vue"]]);const gF=ot(vF),bF=Be({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:$e([Number,Object]),default:()=>Dt({})},sm:{type:$e([Number,Object]),default:()=>Dt({})},md:{type:$e([Number,Object]),default:()=>Dt({})},lg:{type:$e([Number,Object]),default:()=>Dt({})},xl:{type:$e([Number,Object]),default:()=>Dt({})}});var yF=ee({name:"ElCol",props:bF,setup(e,{slots:t}){const{gutter:n}=Ne(t1,{gutter:E(()=>0)}),o=we("col"),s=E(()=>n.value?{paddingLeft:`${n.value/2}px`,paddingRight:`${n.value/2}px`}:{}),l=E(()=>{const r=[];return["span","offset","pull","push"].forEach(u=>{const c=e[u];typeof c=="number"&&(u==="span"?r.push(o.b(`${e[u]}`)):c>0&&r.push(o.b(`${u}-${e[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{if(typeof e[u]=="number")r.push(o.b(`${u}-${e[u]}`));else if(typeof e[u]=="object"){const c=e[u];Object.keys(c).forEach(d=>{r.push(d!=="span"?o.b(`${u}-${d}-${c[d]}`):o.b(`${u}-${c[d]}`))})}}),n.value&&r.push(o.is("guttered")),r});return()=>Y(e.tag,{class:[o.b(),l.value],style:s.value},t)}});const wF=ot(yF),Uv=e=>typeof ht(e),CF=Be({accordion:Boolean,modelValue:{type:$e([Array,String,Number]),default:()=>Dt([])}}),$F={[tt]:Uv,[qt]:Uv},kF={name:"ElCollapse"},SF=ee(Te(ne({},kF),{props:CF,emits:$F,setup(e,{expose:t,emit:n}){const o=e,s=we("collapse"),l=A(oa(o.modelValue)),r=i=>{l.value=i;const u=o.accordion?l.value[0]:l.value;n(tt,u),n(qt,u)},a=i=>{if(o.accordion)r([(l.value[0]||l.value[0]===0)&&l.value[0]===i?"":i]);else{const u=[...l.value],c=u.indexOf(i);c>-1?u.splice(c,1):u.push(i),r(u)}};return pe(()=>o.modelValue,()=>l.value=oa(o.modelValue),{deep:!0}),st(Z0,{activeNames:l,handleItemClick:a}),t({activeNames:l,setActiveNames:r}),(i,u)=>(C(),M("div",{class:_(y(s).b()),role:"tablist","aria-multiselectable":"true"},[ie(i.$slots,"default")],2))}}));var EF=ge(SF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse.vue"]]);const _F=ee({name:"ElCollapseTransition",setup(){return{ns:we("collapse-transition"),on:{beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){t.dataset.oldOverflow=t.style.overflow,t.scrollHeight!==0?(t.style.maxHeight=`${t.scrollHeight}px`,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom):(t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom),t.style.overflow="hidden"},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight=`${t.scrollHeight}px`,t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom}}}}});function TF(e,t,n,o,s,l){return C(),x(zt,Et({name:e.ns.b()},oT(e.on)),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["name"])}var bi=ge(_F,[["render",TF],["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);bi.install=e=>{e.component(bi.name,bi)};const ju=bi,AF=ju,NF=Be({title:{type:String,default:""},name:{type:$e([String,Number]),default:()=>Aa()},disabled:Boolean}),MF=["aria-expanded","aria-controls","aria-describedby"],OF=["id","tabindex","onKeypress"],IF=["id","aria-hidden","aria-labelledby"],PF={name:"ElCollapseItem"},DF=ee(Te(ne({},PF),{props:NF,setup(e,{expose:t}){const n=e,o=Ne(Z0),s=we("collapse"),l=A(!1),r=A(!1),a=A(Aa()),i=E(()=>o==null?void 0:o.activeNames.value.includes(n.name)),u=()=>{setTimeout(()=>{r.value?r.value=!1:l.value=!0},50)},c=()=>{n.disabled||(o==null||o.handleItemClick(n.name),l.value=!1,r.value=!0)},d=()=>{o==null||o.handleItemClick(n.name)};return t({isActive:i}),(f,p)=>(C(),M("div",{class:_([y(s).b("item"),y(s).is("active",y(i)),y(s).is("disabled",f.disabled)])},[D("div",{role:"tab","aria-expanded":y(i),"aria-controls":y(s).b(`content-${a.value}`),"aria-describedby":y(s).b(`content-${a.value}`)},[D("div",{id:y(s).b(`head-${a.value}`),class:_([y(s).be("item","header"),y(s).is("active",y(i)),{focusing:l.value}]),role:"button",tabindex:f.disabled?-1:0,onClick:c,onKeypress:lt(Ke(d,["stop","prevent"]),["space","enter"]),onFocus:u,onBlur:p[0]||(p[0]=h=>l.value=!1)},[ie(f.$slots,"title",{},()=>[at(he(f.title),1)]),Y(y(je),{class:_([y(s).be("item","arrow"),y(s).is("active",y(i))])},{default:j(()=>[Y(y(Zn))]),_:1},8,["class"])],42,OF)],8,MF),Y(y(ju),null,{default:j(()=>[Ge(D("div",{id:y(s).b(`content-${a.value}`),class:_(y(s).be("item","wrap")),role:"tabpanel","aria-hidden":!y(i),"aria-labelledby":y(s).b(`head-${a.value}`)},[D("div",{class:_(y(s).be("item","content"))},[ie(f.$slots,"default")],2)],10,IF),[[pt,y(i)]])]),_:3})],2))}}));var mw=ge(DF,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse-item.vue"]]);const LF=ot(EF,{CollapseItem:mw}),RF=Rt(mw);let Cc=!1;function ua(e,t){if(!ct)return;const n=function(l){var r;(r=t.drag)==null||r.call(t,l)},o=function(l){var r;Bt(document,"mousemove",n),Bt(document,"mouseup",o),Bt(document,"touchmove",n),Bt(document,"touchend",o),document.onselectstart=null,document.ondragstart=null,Cc=!1,(r=t.end)==null||r.call(t,l)},s=function(l){var r;Cc||(l.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,Tt(document,"mousemove",n),Tt(document,"mouseup",o),Tt(document,"touchmove",n),Tt(document,"touchend",o),Cc=!0,(r=t.start)==null||r.call(t,l))};Tt(e,"mousedown",s),Tt(e,"touchstart",s)}const VF=ee({name:"ElColorAlphaSlider",props:{color:{type:Object,required:!0},vertical:{type:Boolean,default:!1}},setup(e){const t=nt(),n=jt(null),o=jt(null),s=A(0),l=A(0),r=A(null);pe(()=>e.color.get("alpha"),()=>{f()}),pe(()=>e.color.value,()=>{f()});function a(){if(e.vertical)return 0;const p=t.vnode.el,h=e.color.get("alpha");return p?Math.round(h*(p.offsetWidth-n.value.offsetWidth/2)/100):0}function i(){const p=t.vnode.el;if(!e.vertical)return 0;const h=e.color.get("alpha");return p?Math.round(h*(p.offsetHeight-n.value.offsetHeight/2)/100):0}function u(){if(e.color&&e.color.value){const{r:p,g:h,b:g}=e.color.toRgb();return`linear-gradient(to right, rgba(${p}, ${h}, ${g}, 0) 0%, rgba(${p}, ${h}, ${g}, 1) 100%)`}return null}function c(p){p.target!==n.value&&d(p)}function d(p){const g=t.vnode.el.getBoundingClientRect(),{clientX:m,clientY:v}=xf(p);if(e.vertical){let b=v-g.top;b=Math.max(n.value.offsetHeight/2,b),b=Math.min(b,g.height-n.value.offsetHeight/2),e.color.set("alpha",Math.round((b-n.value.offsetHeight/2)/(g.height-n.value.offsetHeight)*100))}else{let b=m-g.left;b=Math.max(n.value.offsetWidth/2,b),b=Math.min(b,g.width-n.value.offsetWidth/2),e.color.set("alpha",Math.round((b-n.value.offsetWidth/2)/(g.width-n.value.offsetWidth)*100))}}function f(){s.value=a(),l.value=i(),r.value=u()}return xe(()=>{const p={drag:h=>{d(h)},end:h=>{d(h)}};ua(o.value,p),ua(n.value,p),f()}),{thumb:n,bar:o,thumbLeft:s,thumbTop:l,background:r,handleClick:c,update:f}}});function BF(e,t,n,o,s,l){return C(),M("div",{class:_(["el-color-alpha-slider",{"is-vertical":e.vertical}])},[D("div",{ref:"bar",class:"el-color-alpha-slider__bar",style:Pe({background:e.background}),onClick:t[0]||(t[0]=(...r)=>e.handleClick&&e.handleClick(...r))},null,4),D("div",{ref:"thumb",class:"el-color-alpha-slider__thumb",style:Pe({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,4)],2)}var FF=ge(VF,[["render",BF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/alpha-slider.vue"]]);const HF=ee({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(e){const t=nt(),n=A(null),o=A(null),s=A(0),l=A(0),r=E(()=>e.color.get("hue"));pe(()=>r.value,()=>{d()});function a(f){f.target!==n.value&&i(f)}function i(f){const h=t.vnode.el.getBoundingClientRect(),{clientX:g,clientY:m}=xf(f);let v;if(e.vertical){let b=m-h.top;b=Math.min(b,h.height-n.value.offsetHeight/2),b=Math.max(n.value.offsetHeight/2,b),v=Math.round((b-n.value.offsetHeight/2)/(h.height-n.value.offsetHeight)*360)}else{let b=g-h.left;b=Math.min(b,h.width-n.value.offsetWidth/2),b=Math.max(n.value.offsetWidth/2,b),v=Math.round((b-n.value.offsetWidth/2)/(h.width-n.value.offsetWidth)*360)}e.color.set("hue",v)}function u(){const f=t.vnode.el;if(e.vertical)return 0;const p=e.color.get("hue");return f?Math.round(p*(f.offsetWidth-n.value.offsetWidth/2)/360):0}function c(){const f=t.vnode.el;if(!e.vertical)return 0;const p=e.color.get("hue");return f?Math.round(p*(f.offsetHeight-n.value.offsetHeight/2)/360):0}function d(){s.value=u(),l.value=c()}return xe(()=>{const f={drag:p=>{i(p)},end:p=>{i(p)}};ua(o.value,f),ua(n.value,f),d()}),{bar:o,thumb:n,thumbLeft:s,thumbTop:l,hueValue:r,handleClick:a,update:d}}});function zF(e,t,n,o,s,l){return C(),M("div",{class:_(["el-color-hue-slider",{"is-vertical":e.vertical}])},[D("div",{ref:"bar",class:"el-color-hue-slider__bar",onClick:t[0]||(t[0]=(...r)=>e.handleClick&&e.handleClick(...r))},null,512),D("div",{ref:"thumb",class:"el-color-hue-slider__thumb",style:Pe({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,4)],2)}var KF=ge(HF,[["render",zF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/hue-slider.vue"]]);const vw=Symbol(),WF=()=>Ne(vw),qv=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},jF=function(e){return typeof e=="string"&&e.includes(".")&&Number.parseFloat(e)===1},YF=function(e){return typeof e=="string"&&e.includes("%")},Ll=function(e,t){jF(e)&&(e="100%");const n=YF(e);return e=Math.min(t,Math.max(0,Number.parseFloat(`${e}`))),n&&(e=Number.parseInt(`${e*t}`,10)/100),Math.abs(e-t)<1e-6?1:e%t/Number.parseFloat(t)},Gv={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},yi=function(e){e=Math.min(Math.round(e),255);const t=Math.floor(e/16),n=e%16;return`${Gv[t]||t}${Gv[n]||n}`},Xv=function({r:e,g:t,b:n}){return Number.isNaN(+e)||Number.isNaN(+t)||Number.isNaN(+n)?"":`#${yi(e)}${yi(t)}${yi(n)}`},$c={A:10,B:11,C:12,D:13,E:14,F:15},_s=function(e){return e.length===2?($c[e[0].toUpperCase()]||+e[0])*16+($c[e[1].toUpperCase()]||+e[1]):$c[e[1].toUpperCase()]||+e[1]},UF=function(e,t,n){t=t/100,n=n/100;let o=t;const s=Math.max(n,.01);n*=2,t*=n<=1?n:2-n,o*=s<=1?s:2-s;const l=(n+t)/2,r=n===0?2*o/(s+o):2*t/(n+t);return{h:e,s:r*100,v:l*100}},Zv=function(e,t,n){e=Ll(e,255),t=Ll(t,255),n=Ll(n,255);const o=Math.max(e,t,n),s=Math.min(e,t,n);let l;const r=o,a=o-s,i=o===0?0:a/o;if(o===s)l=0;else{switch(o){case e:{l=(t-n)/a+(t{this._hue=Math.max(0,Math.min(360,o)),this._saturation=Math.max(0,Math.min(100,s)),this._value=Math.max(0,Math.min(100,l)),this.doOnChange()};if(t.includes("hsl")){const o=t.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));if(o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3){const{h:s,s:l,v:r}=UF(o[0],o[1],o[2]);n(s,l,r)}}else if(t.includes("hsv")){const o=t.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3&&n(o[0],o[1],o[2])}else if(t.includes("rgb")){const o=t.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(s=>s!=="").map((s,l)=>l>2?Number.parseFloat(s):Number.parseInt(s,10));if(o.length===4?this._alpha=Number.parseFloat(o[3])*100:o.length===3&&(this._alpha=100),o.length>=3){const{h:s,s:l,v:r}=Zv(o[0],o[1],o[2]);n(s,l,r)}}else if(t.includes("#")){const o=t.replace("#","").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(o))return;let s,l,r;o.length===3?(s=_s(o[0]+o[0]),l=_s(o[1]+o[1]),r=_s(o[2]+o[2])):(o.length===6||o.length===8)&&(s=_s(o.slice(0,2)),l=_s(o.slice(2,4)),r=_s(o.slice(4,6))),o.length===8?this._alpha=_s(o.slice(6))/255*100:(o.length===3||o.length===6)&&(this._alpha=100);const{h:a,s:i,v:u}=Zv(s,l,r);n(a,i,u)}}compare(t){return Math.abs(t._hue-this._hue)<2&&Math.abs(t._saturation-this._saturation)<1&&Math.abs(t._value-this._value)<1&&Math.abs(t._alpha-this._alpha)<1}doOnChange(){const{_hue:t,_saturation:n,_value:o,_alpha:s,format:l}=this;if(this.enableAlpha)switch(l){case"hsl":{const r=qv(t,n/100,o/100);this.value=`hsla(${t}, ${Math.round(r[1]*100)}%, ${Math.round(r[2]*100)}%, ${this.get("alpha")/100})`;break}case"hsv":{this.value=`hsva(${t}, ${Math.round(n)}%, ${Math.round(o)}%, ${this.get("alpha")/100})`;break}case"hex":{this.value=`${Xv(Sr(t,n,o))}${yi(s*255/100)}`;break}default:{const{r,g:a,b:i}=Sr(t,n,o);this.value=`rgba(${r}, ${a}, ${i}, ${this.get("alpha")/100})`}}else switch(l){case"hsl":{const r=qv(t,n/100,o/100);this.value=`hsl(${t}, ${Math.round(r[1]*100)}%, ${Math.round(r[2]*100)}%)`;break}case"hsv":{this.value=`hsv(${t}, ${Math.round(n)}%, ${Math.round(o)}%)`;break}case"rgb":{const{r,g:a,b:i}=Sr(t,n,o);this.value=`rgb(${r}, ${a}, ${i})`;break}default:this.value=Xv(Sr(t,n,o))}}}const qF=ee({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0}},setup(e){const{currentColor:t}=WF(),n=A(s(e.colors,e.color));pe(()=>t.value,l=>{const r=new Wr;r.fromString(l),n.value.forEach(a=>{a.selected=r.compare(a)})}),zn(()=>{n.value=s(e.colors,e.color)});function o(l){e.color.fromString(e.colors[l])}function s(l,r){return l.map(a=>{const i=new Wr;return i.enableAlpha=!0,i.format="rgba",i.fromString(a),i.selected=i.value===r.value,i})}return{rgbaColors:n,handleSelect:o}}}),GF={class:"el-color-predefine"},XF={class:"el-color-predefine__colors"},ZF=["onClick"];function JF(e,t,n,o,s,l){return C(),M("div",GF,[D("div",XF,[(C(!0),M(Le,null,it(e.rgbaColors,(r,a)=>(C(),M("div",{key:e.colors[a],class:_(["el-color-predefine__color-selector",{selected:r.selected,"is-alpha":r._alpha<100}]),onClick:i=>e.handleSelect(a)},[D("div",{style:Pe({backgroundColor:r.value})},null,4)],10,ZF))),128))])])}var QF=ge(qF,[["render",JF],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/predefine.vue"]]);const xF=ee({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(e){const t=nt(),n=A(0),o=A(0),s=A("hsl(0, 100%, 50%)"),l=E(()=>{const i=e.color.get("hue"),u=e.color.get("value");return{hue:i,value:u}});function r(){const i=e.color.get("saturation"),u=e.color.get("value"),c=t.vnode.el,{clientWidth:d,clientHeight:f}=c;o.value=i*d/100,n.value=(100-u)*f/100,s.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}function a(i){const c=t.vnode.el.getBoundingClientRect(),{clientX:d,clientY:f}=xf(i);let p=d-c.left,h=f-c.top;p=Math.max(0,p),p=Math.min(p,c.width),h=Math.max(0,h),h=Math.min(h,c.height),o.value=p,n.value=h,e.color.set({saturation:p/c.width*100,value:100-h/c.height*100})}return pe(()=>l.value,()=>{r()}),xe(()=>{ua(t.vnode.el,{drag:i=>{a(i)},end:i=>{a(i)}}),r()}),{cursorTop:n,cursorLeft:o,background:s,colorValue:l,handleDrag:a,update:r}}}),eH=D("div",{class:"el-color-svpanel__white"},null,-1),tH=D("div",{class:"el-color-svpanel__black"},null,-1),nH=D("div",null,null,-1),oH=[nH];function sH(e,t,n,o,s,l){return C(),M("div",{class:"el-color-svpanel",style:Pe({backgroundColor:e.background})},[eH,tH,D("div",{class:"el-color-svpanel__cursor",style:Pe({top:e.cursorTop+"px",left:e.cursorLeft+"px"})},oH,4)],4)}var lH=ge(xF,[["render",sH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/sv-panel.vue"]]);const rH=ee({name:"ElColorPicker",components:{ElButton:Kn,ElTooltip:mn,ElInput:Jn,ElIcon:je,Close:Yn,ArrowDown:dl,SvPanel:lH,HueSlider:KF,AlphaSlider:FF,Predefine:QF},directives:{ClickOutside:hl},props:{modelValue:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:{type:String,validator:On},popperClass:String,predefine:Array},emits:["change","active-change",tt],setup(e,{emit:t}){const{t:n}=kt(),o=we("color"),s=Ne(Pn,{}),l=Ne(Un,{}),r=A(null),a=A(null),i=A(null),u=A(null),c=yt(new Wr({enableAlpha:e.showAlpha,format:e.colorFormat,value:e.modelValue})),d=A(!1),f=A(!1),p=A(""),h=E(()=>!e.modelValue&&!f.value?"transparent":b(c,e.showAlpha)),g=Wt(),m=E(()=>!!(e.disabled||s.disabled)),v=E(()=>!e.modelValue&&!f.value?"":c.value);pe(()=>e.modelValue,B=>{B?B&&B!==c.value&&c.fromString(B):f.value=!1}),pe(()=>v.value,B=>{p.value=B,t("active-change",B)}),pe(()=>c.value,()=>{!e.modelValue&&!f.value&&(f.value=!0)});function b(B,H){if(!(B instanceof Wr))throw new TypeError("color should be instance of _color Class");const{r:R,g:z,b:W}=B.toRgb();return H?`rgba(${R}, ${z}, ${W}, ${B.get("alpha")/100})`:`rgb(${R}, ${z}, ${W})`}function w(B){d.value=B}const S=hn(w,100);function $(){S(!1),k()}function k(){ze(()=>{e.modelValue?c.fromString(e.modelValue):f.value=!1})}function T(){m.value||S(!d.value)}function O(){c.fromString(p.value)}function L(){var B;const H=c.value;t(tt,H),t("change",H),(B=l.validate)==null||B.call(l,"change").catch(R=>void 0),S(!1),ze(()=>{const R=new Wr({enableAlpha:e.showAlpha,format:e.colorFormat,value:e.modelValue});c.compare(R)||k()})}function V(){var B;S(!1),t(tt,null),t("change",null),e.modelValue!==null&&((B=l.validate)==null||B.call(l,"change").catch(H=>void 0)),k()}return xe(()=>{e.modelValue&&(p.value=v.value)}),pe(()=>d.value,()=>{ze(()=>{var B,H,R;(B=r.value)==null||B.update(),(H=a.value)==null||H.update(),(R=i.value)==null||R.update()})}),st(vw,{currentColor:v}),{color:c,colorDisabled:m,colorSize:g,displayedColor:h,showPanelColor:f,showPicker:d,customInput:p,handleConfirm:O,hide:$,handleTrigger:T,clear:V,confirmValue:L,t:n,ns:o,hue:r,svPanel:a,alpha:i,popper:u}}});function aH(e,t,n,o,s,l){const r=le("hue-slider"),a=le("sv-panel"),i=le("alpha-slider"),u=le("predefine"),c=le("el-input"),d=le("el-button"),f=le("arrow-down"),p=le("el-icon"),h=le("close"),g=le("el-tooltip"),m=Mn("click-outside");return C(),x(g,{ref:"popper",visible:e.showPicker,"onUpdate:visible":t[2]||(t[2]=v=>e.showPicker=v),"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[e.ns.be("picker","panel"),e.ns.b("dropdown"),e.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",transition:"el-zoom-in-top",persistent:""},{content:j(()=>[Ge((C(),M("div",null,[D("div",{class:_(e.ns.be("dropdown","main-wrapper"))},[Y(r,{ref:"hue",class:"hue-slider",color:e.color,vertical:""},null,8,["color"]),Y(a,{ref:"svPanel",color:e.color},null,8,["color"])],2),e.showAlpha?(C(),x(i,{key:0,ref:"alpha",color:e.color},null,8,["color"])):G("v-if",!0),e.predefine?(C(),x(u,{key:1,ref:"predefine",color:e.color,colors:e.predefine},null,8,["color","colors"])):G("v-if",!0),D("div",{class:_(e.ns.be("dropdown","btns"))},[D("span",{class:_(e.ns.be("dropdown","value"))},[Y(c,{modelValue:e.customInput,"onUpdate:modelValue":t[0]||(t[0]=v=>e.customInput=v),"validate-event":!1,size:"small",onKeyup:lt(e.handleConfirm,["enter"]),onBlur:e.handleConfirm},null,8,["modelValue","onKeyup","onBlur"])],2),Y(d,{size:"small",type:"text",class:_(e.ns.be("dropdown","link-btn")),onClick:e.clear},{default:j(()=>[at(he(e.t("el.colorpicker.clear")),1)]),_:1},8,["class","onClick"]),Y(d,{plain:"",size:"small",class:_(e.ns.be("dropdown","btn")),onClick:e.confirmValue},{default:j(()=>[at(he(e.t("el.colorpicker.confirm")),1)]),_:1},8,["class","onClick"])],2)])),[[m,e.hide]])]),default:j(()=>[D("div",{class:_([e.ns.b("picker"),e.ns.is("disabled",e.colorDisabled),e.ns.bm("picker",e.colorSize)])},[e.colorDisabled?(C(),M("div",{key:0,class:_(e.ns.be("picker","mask"))},null,2)):G("v-if",!0),D("div",{class:_(e.ns.be("picker","trigger")),onClick:t[1]||(t[1]=(...v)=>e.handleTrigger&&e.handleTrigger(...v))},[D("span",{class:_([e.ns.be("picker","color"),e.ns.is("alpha",e.showAlpha)])},[D("span",{class:_(e.ns.be("picker","color-inner")),style:Pe({backgroundColor:e.displayedColor})},[Ge(Y(p,{class:_([e.ns.be("picker","icon"),e.ns.is("icon-arrow-down")])},{default:j(()=>[Y(f)]),_:1},8,["class"]),[[pt,e.modelValue||e.showPanelColor]]),!e.modelValue&&!e.showPanelColor?(C(),x(p,{key:0,class:_([e.ns.be("picker","empty"),e.ns.is("icon-close")])},{default:j(()=>[Y(h)]),_:1},8,["class"])):G("v-if",!0)],6)],2)],2)],2)]),_:1},8,["visible","popper-class"])}var wi=ge(rH,[["render",aH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/index.vue"]]);wi.install=e=>{e.component(wi.name,wi)};const iH=wi,uH=iH,Od={},cH=Be({a11y:{type:Boolean,default:!0},locale:{type:$e(Object)},size:{type:String,values:Eo,default:""},button:{type:$e(Object)},experimentalFeatures:{type:$e(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:$e(Object)},zIndex:{type:Number},namespace:{type:String,default:"el"}});var dH=ee({name:"ElConfigProvider",props:cH,setup(e,{slots:t}){pe(()=>e.message,o=>{Object.assign(Od,o!=null?o:{})},{immediate:!0,deep:!0});const n=a1(e);return()=>ie(t,"default",{config:n==null?void 0:n.value})}});const fH=ot(dH),pH=ee({name:"ElContainer",props:{direction:{type:String,default:""}},setup(e,{slots:t}){const n=we("container");return{isVertical:E(()=>e.direction==="vertical"?!0:e.direction==="horizontal"?!1:t&&t.default?t.default().some(l=>{const r=l.type.name;return r==="ElHeader"||r==="ElFooter"}):!1),ns:n}}});function hH(e,t,n,o,s,l){return C(),M("section",{class:_([e.ns.b(),e.ns.is("vertical",e.isVertical)])},[ie(e.$slots,"default")],2)}var mH=ge(pH,[["render",hH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/container.vue"]]);const vH=ee({name:"ElAside",props:{width:{type:String,default:null}},setup(e){const t=we("aside");return{style:E(()=>e.width?{"--el-aside-width":e.width}:{}),ns:t}}});function gH(e,t,n,o,s,l){return C(),M("aside",{class:_(e.ns.b()),style:Pe(e.style)},[ie(e.$slots,"default")],6)}var gw=ge(vH,[["render",gH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/aside.vue"]]);const bH=ee({name:"ElFooter",props:{height:{type:String,default:null}},setup(e){const t=we("footer");return{style:E(()=>e.height?{"--el-footer-height":e.height}:{}),ns:t}}});function yH(e,t,n,o,s,l){return C(),M("footer",{class:_(e.ns.b()),style:Pe(e.style)},[ie(e.$slots,"default")],6)}var bw=ge(bH,[["render",yH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/footer.vue"]]);const wH=ee({name:"ElHeader",props:{height:{type:String,default:null}},setup(e){const t=we("header");return{style:E(()=>e.height?{"--el-header-height":e.height}:{}),ns:t}}});function CH(e,t,n,o,s,l){return C(),M("header",{class:_(e.ns.b()),style:Pe(e.style)},[ie(e.$slots,"default")],6)}var yw=ge(wH,[["render",CH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/header.vue"]]);const $H=ee({name:"ElMain",setup(){return{ns:we("main")}}});function kH(e,t,n,o,s,l){return C(),M("main",{class:_(e.ns.b())},[ie(e.$slots,"default")],2)}var ww=ge($H,[["render",kH],["__file","/home/runner/work/element-plus/element-plus/packages/components/container/src/main.vue"]]);const SH=ot(mH,{Aside:gw,Footer:bw,Header:yw,Main:ww}),EH=Rt(gw),_H=Rt(bw),TH=Rt(yw),AH=Rt(ww);var Cw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o,s){var l=o.prototype,r=l.format;s.en.ordinal=function(a){var i=["th","st","nd","rd"],u=a%100;return"["+a+(i[(u-20)%10]||i[u]||i[0])+"]"},l.format=function(a){var i=this,u=this.$locale();if(!this.isValid())return r.bind(this)(a);var c=this.$utils(),d=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(f){switch(f){case"Q":return Math.ceil((i.$M+1)/3);case"Do":return u.ordinal(i.$D);case"gggg":return i.weekYear();case"GGGG":return i.isoWeekYear();case"wo":return u.ordinal(i.week(),"W");case"w":case"ww":return c.s(i.week(),f==="w"?1:2,"0");case"W":case"WW":return c.s(i.isoWeek(),f==="W"?1:2,"0");case"k":case"kk":return c.s(String(i.$H===0?24:i.$H),f==="k"?1:2,"0");case"X":return Math.floor(i.$d.getTime()/1e3);case"x":return i.$d.getTime();case"z":return"["+i.offsetName()+"]";case"zzz":return"["+i.offsetName("long")+"]";default:return f}});return r.bind(this)(d)}}})})(Cw);var NH=Cw.exports,$w={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){var n="week",o="year";return function(s,l,r){var a=l.prototype;a.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=r(this).startOf(o).add(1,o).date(u),d=r(this).endOf(n);if(c.isBefore(d))return 1}var f=r(this).startOf(o).date(u).startOf(n).subtract(1,"millisecond"),p=this.diff(f,n,!0);return p<0?r(this).startOf("week").week():Math.ceil(p)},a.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})($w);var MH=$w.exports,kw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.weekYear=function(){var s=this.month(),l=this.week(),r=this.year();return l===1&&s===11?r+1:s===0&&l>=52?r-1:r}}})})(kw);var OH=kw.exports,Sw={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o,s){o.prototype.dayOfYear=function(l){var r=Math.round((s(this).startOf("day")-s(this).startOf("year"))/864e5)+1;return l==null?r:this.add(l-r,"day")}}})})(Sw);var IH=Sw.exports,Ew={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.isSameOrAfter=function(s,l){return this.isSame(s,l)||this.isAfter(s,l)}}})})(Ew);var PH=Ew.exports,_w={exports:{}};(function(e,t){(function(n,o){e.exports=o()})(qo,function(){return function(n,o){o.prototype.isSameOrBefore=function(s,l){return this.isSame(s,l)||this.isBefore(s,l)}}})})(_w);var DH=_w.exports;const Tw=Symbol();var LH=ee({name:"ElDatePickerCell",props:Be({cell:{type:$e(Object)}}),setup(e){const t=Ne(Tw);return()=>{const n=e.cell;if(t!=null&&t.ctx.slots.default){const o=t.ctx.slots.default(n).filter(s=>s.patchFlag!==-2&&s.type.toString()!=="Symbol(Comment)");if(o.length)return o}return De("div",{class:"el-date-table-cell"},[De("span",{class:"el-date-table-cell__text"},[n==null?void 0:n.text])])}}});const RH=ee({components:{ElDatePickerCell:LH},props:{date:{type:Object},minDate:{type:Object},maxDate:{type:Object},parsedValue:{type:[Object,Array]},selectionMode:{type:String,default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{type:Function},cellClassName:{type:Function},rangeState:{type:Object,default:()=>({endDate:null,selecting:!1})}},emits:["changerange","pick","select"],setup(e,t){const{t:n,lang:o}=kt(),s=A(null),l=A(null),r=A([[],[],[],[],[],[]]),a=e.date.$locale().weekStart||7,i=e.date.locale("en").localeData().weekdaysShort().map(S=>S.toLowerCase()),u=E(()=>a>3?7-a:-a),c=E(()=>{const S=e.date.startOf("month");return S.subtract(S.day()||7,"day")}),d=E(()=>i.concat(i).slice(a,a+7)),f=E(()=>{var S;const $=e.date.startOf("month"),k=$.day()||7,T=$.daysInMonth(),O=$.subtract(1,"month").daysInMonth(),L=u.value,V=r.value;let B=1;const H=e.selectionMode==="dates"?qs(e.parsedValue):[],R=Ze().locale(o.value).startOf("day");for(let z=0;z<6;z++){const W=V[z];e.showWeekNumber&&(W[0]||(W[0]={type:"week",text:c.value.add(z*7+1,"day").week()}));for(let P=0;P<7;P++){let N=W[e.showWeekNumber?P+1:P];N||(N={row:z,column:P,type:"normal",inRange:!1,start:!1,end:!1});const I=z*7+P,U=c.value.add(I-L,"day");N.dayjs=U,N.date=U.toDate(),N.timestamp=U.valueOf(),N.type="normal";const q=e.rangeState.endDate||e.maxDate||e.rangeState.selecting&&e.minDate;if(N.inRange=e.minDate&&U.isSameOrAfter(e.minDate,"day")&&q&&U.isSameOrBefore(q,"day")||e.minDate&&U.isSameOrBefore(e.minDate,"day")&&q&&U.isSameOrAfter(q,"day"),(S=e.minDate)!=null&&S.isSameOrAfter(q)?(N.start=q&&U.isSame(q,"day"),N.end=e.minDate&&U.isSame(e.minDate,"day")):(N.start=e.minDate&&U.isSame(e.minDate,"day"),N.end=q&&U.isSame(q,"day")),U.isSame(R,"day")&&(N.type="today"),z>=0&&z<=1){const ae=k+L<0?7+k+L:k+L;P+z*7>=ae?N.text=B++:(N.text=O-(ae-P%7)+1+z*7,N.type="prev-month")}else B<=T?N.text=B++:(N.text=B++-T,N.type="next-month");const Z=U.toDate();N.selected=H.find(ae=>ae.valueOf()===U.valueOf()),N.isSelected=!!N.selected,N.isCurrent=p(N),N.disabled=e.disabledDate&&e.disabledDate(Z),N.customClass=e.cellClassName&&e.cellClassName(Z),W[e.showWeekNumber?P+1:P]=N}if(e.selectionMode==="week"){const P=e.showWeekNumber?1:0,N=e.showWeekNumber?7:6,I=w(W[P+1]);W[P].inRange=I,W[P].start=I,W[N].inRange=I,W[N].end=I}}return V}),p=S=>e.selectionMode==="day"&&(S.type==="normal"||S.type==="today")&&h(S,e.parsedValue),h=(S,$)=>$?Ze($).locale(o.value).isSame(e.date.date(Number(S.text)),"day"):!1,g=S=>{const $=[];return(S.type==="normal"||S.type==="today")&&!S.disabled?($.push("available"),S.type==="today"&&$.push("today")):$.push(S.type),p(S)&&$.push("current"),S.inRange&&(S.type==="normal"||S.type==="today"||e.selectionMode==="week")&&($.push("in-range"),S.start&&$.push("start-date"),S.end&&$.push("end-date")),S.disabled&&$.push("disabled"),S.selected&&$.push("selected"),S.customClass&&$.push(S.customClass),$.join(" ")},m=(S,$)=>{const k=S*7+($-(e.showWeekNumber?1:0))-u.value;return c.value.add(k,"day")},v=S=>{if(!e.rangeState.selecting)return;let $=S.target;if($.tagName==="SPAN"&&($=$.parentNode.parentNode),$.tagName==="DIV"&&($=$.parentNode),$.tagName!=="TD")return;const k=$.parentNode.rowIndex-1,T=$.cellIndex;f.value[k][T].disabled||(k!==s.value||T!==l.value)&&(s.value=k,l.value=T,t.emit("changerange",{selecting:!0,endDate:m(k,T)}))},b=S=>{let $=S.target;for(;$&&$.tagName!=="TD";)$=$.parentNode;if(!$||$.tagName!=="TD")return;const k=$.parentNode.rowIndex-1,T=$.cellIndex,O=f.value[k][T];if(O.disabled||O.type==="week")return;const L=m(k,T);if(e.selectionMode==="range")e.rangeState.selecting?(L>=e.minDate?t.emit("pick",{minDate:e.minDate,maxDate:L}):t.emit("pick",{minDate:L,maxDate:e.minDate}),t.emit("select",!1)):(t.emit("pick",{minDate:L,maxDate:null}),t.emit("select",!0));else if(e.selectionMode==="day")t.emit("pick",L);else if(e.selectionMode==="week"){const V=L.week(),B=`${L.year()}w${V}`;t.emit("pick",{year:L.year(),week:V,value:B,date:L.startOf("week")})}else if(e.selectionMode==="dates"){const V=O.selected?qs(e.parsedValue).filter(B=>B.valueOf()!==L.valueOf()):qs(e.parsedValue).concat([L]);t.emit("pick",V)}},w=S=>{if(e.selectionMode!=="week")return!1;let $=e.date.startOf("day");if(S.type==="prev-month"&&($=$.subtract(1,"month")),S.type==="next-month"&&($=$.add(1,"month")),$=$.date(Number.parseInt(S.text,10)),e.parsedValue&&!Array.isArray(e.parsedValue)){const k=(e.parsedValue.day()-a+7)%7-1;return e.parsedValue.subtract(k,"day").isSame($,"day")}return!1};return{handleMouseMove:v,t:n,rows:f,isWeekActive:w,getCellClasses:g,WEEKS:d,handleClick:b}}}),VH={key:0};function BH(e,t,n,o,s,l){const r=le("el-date-picker-cell");return C(),M("table",{cellspacing:"0",cellpadding:"0",class:_(["el-date-table",{"is-week-mode":e.selectionMode==="week"}]),onClick:t[0]||(t[0]=(...a)=>e.handleClick&&e.handleClick(...a)),onMousemove:t[1]||(t[1]=(...a)=>e.handleMouseMove&&e.handleMouseMove(...a))},[D("tbody",null,[D("tr",null,[e.showWeekNumber?(C(),M("th",VH,he(e.t("el.datepicker.week")),1)):G("v-if",!0),(C(!0),M(Le,null,it(e.WEEKS,(a,i)=>(C(),M("th",{key:i},he(e.t("el.datepicker.weeks."+a)),1))),128))]),(C(!0),M(Le,null,it(e.rows,(a,i)=>(C(),M("tr",{key:i,class:_(["el-date-table__row",{current:e.isWeekActive(a[1])}])},[(C(!0),M(Le,null,it(a,(u,c)=>(C(),M("td",{key:c,class:_(e.getCellClasses(u))},[Y(r,{cell:u},null,8,["cell"])],2))),128))],2))),128))])],34)}var Aw=ge(RH,[["render",BH],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue"]]);const FH=(e,t,n)=>{const o=Ze().locale(n).startOf("month").month(t).year(e),s=o.daysInMonth();return as(s).map(l=>o.add(l,"day").toDate())},HH=ee({props:{disabledDate:{type:Function},selectionMode:{type:String,default:"month"},minDate:{type:Object},maxDate:{type:Object},date:{type:Object},parsedValue:{type:Object},rangeState:{type:Object,default:()=>({endDate:null,selecting:!1})}},emits:["changerange","pick","select"],setup(e,t){const{t:n,lang:o}=kt(),s=A(e.date.locale("en").localeData().monthsShort().map(f=>f.toLowerCase())),l=A([[],[],[]]),r=A(null),a=A(null),i=E(()=>{var f;const p=l.value,h=Ze().locale(o.value).startOf("month");for(let g=0;g<3;g++){const m=p[g];for(let v=0;v<4;v++){let b=m[v];b||(b={row:g,column:v,type:"normal",inRange:!1,start:!1,end:!1}),b.type="normal";const w=g*4+v,S=e.date.startOf("year").month(w),$=e.rangeState.endDate||e.maxDate||e.rangeState.selecting&&e.minDate;b.inRange=e.minDate&&S.isSameOrAfter(e.minDate,"month")&&$&&S.isSameOrBefore($,"month")||e.minDate&&S.isSameOrBefore(e.minDate,"month")&&$&&S.isSameOrAfter($,"month"),(f=e.minDate)!=null&&f.isSameOrAfter($)?(b.start=$&&S.isSame($,"month"),b.end=e.minDate&&S.isSame(e.minDate,"month")):(b.start=e.minDate&&S.isSame(e.minDate,"month"),b.end=$&&S.isSame($,"month")),h.isSame(S)&&(b.type="today"),b.text=w;const T=S.toDate();b.disabled=e.disabledDate&&e.disabledDate(T),m[v]=b}}return p});return{handleMouseMove:f=>{if(!e.rangeState.selecting)return;let p=f.target;if(p.tagName==="A"&&(p=p.parentNode.parentNode),p.tagName==="DIV"&&(p=p.parentNode),p.tagName!=="TD")return;const h=p.parentNode.rowIndex,g=p.cellIndex;i.value[h][g].disabled||(h!==r.value||g!==a.value)&&(r.value=h,a.value=g,t.emit("changerange",{selecting:!0,endDate:e.date.startOf("year").month(h*4+g)}))},handleMonthTableClick:f=>{let p=f.target;if(p.tagName==="A"&&(p=p.parentNode.parentNode),p.tagName==="DIV"&&(p=p.parentNode),p.tagName!=="TD"||oo(p,"disabled"))return;const h=p.cellIndex,m=p.parentNode.rowIndex*4+h,v=e.date.startOf("year").month(m);e.selectionMode==="range"?e.rangeState.selecting?(v>=e.minDate?t.emit("pick",{minDate:e.minDate,maxDate:v}):t.emit("pick",{minDate:v,maxDate:e.minDate}),t.emit("select",!1)):(t.emit("pick",{minDate:v,maxDate:null}),t.emit("select",!0)):t.emit("pick",m)},rows:i,getCellStyle:f=>{const p={},h=e.date.year(),g=new Date,m=f.text;return p.disabled=e.disabledDate?FH(h,m,o.value).every(e.disabledDate):!1,p.current=qs(e.parsedValue).findIndex(v=>v.year()===h&&v.month()===m)>=0,p.today=g.getFullYear()===h&&g.getMonth()===m,f.inRange&&(p["in-range"]=!0,f.start&&(p["start-date"]=!0),f.end&&(p["end-date"]=!0)),p},t:n,months:s}}}),zH={class:"cell"};function KH(e,t,n,o,s,l){return C(),M("table",{class:"el-month-table",onClick:t[0]||(t[0]=(...r)=>e.handleMonthTableClick&&e.handleMonthTableClick(...r)),onMousemove:t[1]||(t[1]=(...r)=>e.handleMouseMove&&e.handleMouseMove(...r))},[D("tbody",null,[(C(!0),M(Le,null,it(e.rows,(r,a)=>(C(),M("tr",{key:a},[(C(!0),M(Le,null,it(r,(i,u)=>(C(),M("td",{key:u,class:_(e.getCellStyle(i))},[D("div",null,[D("a",zH,he(e.t("el.datepicker.months."+e.months[i.text])),1)])],2))),128))]))),128))])],32)}var Nw=ge(HH,[["render",KH],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue"]]);const WH=(e,t)=>{const n=Ze(String(e)).locale(t).startOf("year"),s=n.endOf("year").dayOfYear();return as(s).map(l=>n.add(l,"day").toDate())},jH=ee({props:{disabledDate:{type:Function},parsedValue:{type:Object},date:{type:Object}},emits:["pick"],setup(e,t){const{lang:n}=kt();return{startYear:E(()=>Math.floor(e.date.year()/10)*10),getCellStyle:r=>{const a={},i=Ze().locale(n.value);return a.disabled=e.disabledDate?WH(r,n.value).every(e.disabledDate):!1,a.current=qs(e.parsedValue).findIndex(u=>u.year()===r)>=0,a.today=i.year()===r,a},handleYearTableClick:r=>{const a=r.target;if(a.tagName==="A"){if(oo(a.parentNode,"disabled"))return;const i=a.textContent||a.innerText;t.emit("pick",Number(i))}}}}}),YH={class:"cell"},UH={class:"cell"},qH={class:"cell"},GH={class:"cell"},XH={class:"cell"},ZH={class:"cell"},JH={class:"cell"},QH={class:"cell"},xH={class:"cell"},ez={class:"cell"},tz=D("td",null,null,-1),nz=D("td",null,null,-1);function oz(e,t,n,o,s,l){return C(),M("table",{class:"el-year-table",onClick:t[0]||(t[0]=(...r)=>e.handleYearTableClick&&e.handleYearTableClick(...r))},[D("tbody",null,[D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+0)])},[D("a",YH,he(e.startYear),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+1)])},[D("a",UH,he(e.startYear+1),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+2)])},[D("a",qH,he(e.startYear+2),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+3)])},[D("a",GH,he(e.startYear+3),1)],2)]),D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+4)])},[D("a",XH,he(e.startYear+4),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+5)])},[D("a",ZH,he(e.startYear+5),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+6)])},[D("a",JH,he(e.startYear+6),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+7)])},[D("a",QH,he(e.startYear+7),1)],2)]),D("tr",null,[D("td",{class:_(["available",e.getCellStyle(e.startYear+8)])},[D("a",xH,he(e.startYear+8),1)],2),D("td",{class:_(["available",e.getCellStyle(e.startYear+9)])},[D("a",ez,he(e.startYear+9),1)],2),tz,nz])])])}var sz=ge(jH,[["render",oz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue"]]);const lz=(e,t,n)=>!0,rz=ee({components:{DateTable:Aw,ElInput:Jn,ElButton:Kn,ElIcon:je,TimePickPanel:hp,MonthTable:Nw,YearTable:sz,DArrowLeft:Pu,ArrowLeft:fl,DArrowRight:Du,ArrowRight:Zn},directives:{clickoutside:hl},props:{visible:{type:Boolean,default:!1},parsedValue:{type:[Object,Array]},format:{type:String,default:""},type:{type:String,required:!0,validator:W0}},emits:["pick","set-picker-option","panel-change"],setup(e,t){const{t:n,lang:o}=kt(),s=Ne("EP_PICKER_BASE"),l=Ne(Ku),{shortcuts:r,disabledDate:a,cellClassName:i,defaultTime:u,arrowControl:c}=s.props,d=Yt(s.props,"defaultValue"),f=A(Ze().locale(o.value)),p=E(()=>Ze(u).locale(o.value)),h=E(()=>f.value.month()),g=E(()=>f.value.year()),m=A([]),v=A(null),b=A(null),w=te=>m.value.length>0?lz(te,m.value,e.format||"HH:mm:ss"):!0,S=te=>u&&!J.value?p.value.year(te.year()).month(te.month()).date(te.date()):q.value?te.millisecond(0):te.startOf("day"),$=(te,...ue)=>{if(!te)t.emit("pick",te,...ue);else if(Array.isArray(te)){const Re=te.map(S);t.emit("pick",Re,...ue)}else t.emit("pick",S(te),...ue);v.value=null,b.value=null},k=te=>{if(z.value==="day"){let ue=e.parsedValue?e.parsedValue.year(te.year()).month(te.month()).date(te.date()):te;w(ue)||(ue=m.value[0][0].year(te.year()).month(te.month()).date(te.date())),f.value=ue,$(ue,q.value)}else z.value==="week"?$(te.date):z.value==="dates"&&$(te,!0)},T=()=>{f.value=f.value.subtract(1,"month"),se("month")},O=()=>{f.value=f.value.add(1,"month"),se("month")},L=()=>{B.value==="year"?f.value=f.value.subtract(10,"year"):f.value=f.value.subtract(1,"year"),se("year")},V=()=>{B.value==="year"?f.value=f.value.add(10,"year"):f.value=f.value.add(1,"year"),se("year")},B=A("date"),H=E(()=>{const te=n("el.datepicker.year");if(B.value==="year"){const ue=Math.floor(g.value/10)*10;return te?`${ue} ${te} - ${ue+9} ${te}`:`${ue} - ${ue+9}`}return`${g.value} ${te}`}),R=te=>{const ue=typeof te.value=="function"?te.value():te.value;if(ue){$(Ze(ue).locale(o.value));return}te.onClick&&te.onClick(t)},z=E(()=>["week","month","year","dates"].includes(e.type)?e.type:"day");pe(()=>z.value,te=>{if(["month","year"].includes(te)){B.value=te;return}B.value="date"},{immediate:!0}),pe(()=>B.value,()=>{l==null||l.updatePopper()});const W=E(()=>!!r.length),P=te=>{f.value=f.value.startOf("month").month(te),z.value==="month"?$(f.value):B.value="date",se("month")},N=te=>{z.value==="year"?(f.value=f.value.startOf("year").year(te),$(f.value)):(f.value=f.value.year(te),B.value="month"),se("year")},I=()=>{B.value="month"},U=()=>{B.value="year"},q=E(()=>e.type==="datetime"||e.type==="datetimerange"),Q=E(()=>q.value||z.value==="dates"),Z=()=>{if(z.value==="dates")$(e.parsedValue);else{let te=e.parsedValue;if(!te){const ue=Ze(u).locale(o.value),Re=be();te=ue.year(Re.year()).month(Re.month()).date(Re.date())}f.value=te,$(te)}},ae=()=>{const ue=Ze().locale(o.value).toDate();(!a||!a(ue))&&w(ue)&&(f.value=Ze().locale(o.value),$(f.value))},Ee=E(()=>tw(e.format)),Me=E(()=>ew(e.format)),J=E(()=>{if(b.value)return b.value;if(!(!e.parsedValue&&!d.value))return(e.parsedValue||f.value).format(Ee.value)}),ve=E(()=>{if(v.value)return v.value;if(!(!e.parsedValue&&!d.value))return(e.parsedValue||f.value).format(Me.value)}),Ce=A(!1),ke=()=>{Ce.value=!0},Oe=()=>{Ce.value=!1},We=(te,ue,Re)=>{const F=e.parsedValue?e.parsedValue.hour(te.hour()).minute(te.minute()).second(te.second()):te;f.value=F,$(f.value,!0),Re||(Ce.value=ue)},qe=te=>{const ue=Ze(te,Ee.value).locale(o.value);ue.isValid()&&w(ue)&&(f.value=ue.year(f.value.year()).month(f.value.month()).date(f.value.date()),b.value=null,Ce.value=!1,$(f.value,!0))},K=te=>{const ue=Ze(te,Me.value).locale(o.value);if(ue.isValid()){if(a&&a(ue.toDate()))return;f.value=ue.hour(f.value.hour()).minute(f.value.minute()).second(f.value.second()),v.value=null,$(f.value,!0)}},X=te=>Ze.isDayjs(te)&&te.isValid()&&(a?!a(te.toDate()):!0),fe=te=>z.value==="dates"?te.map(ue=>ue.format(e.format)):te.format(e.format),ye=te=>Ze(te,e.format).locale(o.value),be=()=>{const te=Ze(d.value).locale(o.value);if(!d.value){const ue=p.value;return Ze().hour(ue.hour()).minute(ue.minute()).second(ue.second()).locale(o.value)}return te},_e=te=>{const{code:ue,keyCode:Re}=te,F=[Ie.up,Ie.down,Ie.left,Ie.right];e.visible&&!Ce.value&&(F.includes(ue)&&(re(Re),te.stopPropagation(),te.preventDefault()),ue===Ie.enter&&v.value===null&&b.value===null&&$(f,!1))},re=te=>{const ue={year:{38:-4,40:4,37:-1,39:1,offset:(F,de)=>F.setFullYear(F.getFullYear()+de)},month:{38:-4,40:4,37:-1,39:1,offset:(F,de)=>F.setMonth(F.getMonth()+de)},week:{38:-1,40:1,37:-1,39:1,offset:(F,de)=>F.setDate(F.getDate()+de*7)},day:{38:-7,40:7,37:-1,39:1,offset:(F,de)=>F.setDate(F.getDate()+de)}},Re=f.value.toDate();for(;Math.abs(f.value.diff(Re,"year",!0))<1;){const F=ue[z.value];if(F.offset(Re,F[te]),a&&a(Re))continue;const de=Ze(Re).locale(o.value);f.value=de,t.emit("pick",de,!0);break}},se=te=>{t.emit("panel-change",f.value.toDate(),te,B.value)};return t.emit("set-picker-option",["isValidValue",X]),t.emit("set-picker-option",["formatToString",fe]),t.emit("set-picker-option",["parseUserInput",ye]),t.emit("set-picker-option",["handleKeydown",_e]),pe(()=>d.value,te=>{te&&(f.value=be())},{immediate:!0}),pe(()=>e.parsedValue,te=>{if(te){if(z.value==="dates"||Array.isArray(te))return;f.value=te}else f.value=be()},{immediate:!0}),{handleTimePick:We,handleTimePickClose:Oe,onTimePickerInputFocus:ke,timePickerVisible:Ce,visibleTime:J,visibleDate:ve,showTime:q,changeToNow:ae,onConfirm:Z,footerVisible:Q,handleYearPick:N,showMonthPicker:I,showYearPicker:U,handleMonthPick:P,hasShortcuts:W,shortcuts:r,arrowControl:c,disabledDate:a,cellClassName:i,selectionMode:z,handleShortcutClick:R,prevYear_:L,nextYear_:V,prevMonth_:T,nextMonth_:O,innerDate:f,t:n,yearLabel:H,currentView:B,month:h,handleDatePick:k,handleVisibleTimeChange:qe,handleVisibleDateChange:K,timeFormat:Ee,userInputTime:b,userInputDate:v}}}),az={class:"el-picker-panel__body-wrapper"},iz={key:0,class:"el-picker-panel__sidebar"},uz=["onClick"],cz={class:"el-picker-panel__body"},dz={key:0,class:"el-date-picker__time-header"},fz={class:"el-date-picker__editor-wrap"},pz={class:"el-date-picker__editor-wrap"},hz=["aria-label"],mz=["aria-label"],vz=["aria-label"],gz=["aria-label"],bz={class:"el-picker-panel__content"},yz={class:"el-picker-panel__footer"};function wz(e,t,n,o,s,l){const r=le("el-input"),a=le("time-pick-panel"),i=le("d-arrow-left"),u=le("el-icon"),c=le("arrow-left"),d=le("d-arrow-right"),f=le("arrow-right"),p=le("date-table"),h=le("year-table"),g=le("month-table"),m=le("el-button"),v=Mn("clickoutside");return C(),M("div",{class:_(["el-picker-panel el-date-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts,"has-time":e.showTime}]])},[D("div",az,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",iz,[(C(!0),M(Le,null,it(e.shortcuts,(b,w)=>(C(),M("button",{key:w,type:"button",class:"el-picker-panel__shortcut",onClick:S=>e.handleShortcutClick(b)},he(b.text),9,uz))),128))])):G("v-if",!0),D("div",cz,[e.showTime?(C(),M("div",dz,[D("span",fz,[Y(r,{placeholder:e.t("el.datepicker.selectDate"),"model-value":e.visibleDate,size:"small",onInput:t[0]||(t[0]=b=>e.userInputDate=b),onChange:e.handleVisibleDateChange},null,8,["placeholder","model-value","onChange"])]),Ge((C(),M("span",pz,[Y(r,{placeholder:e.t("el.datepicker.selectTime"),"model-value":e.visibleTime,size:"small",onFocus:e.onTimePickerInputFocus,onInput:t[1]||(t[1]=b=>e.userInputTime=b),onChange:e.handleVisibleTimeChange},null,8,["placeholder","model-value","onFocus","onChange"]),Y(a,{visible:e.timePickerVisible,format:e.timeFormat,"time-arrow-control":e.arrowControl,"parsed-value":e.innerDate,onPick:e.handleTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[v,e.handleTimePickClose]])])):G("v-if",!0),Ge(D("div",{class:_(["el-date-picker__header",{"el-date-picker__header--bordered":e.currentView==="year"||e.currentView==="month"}])},[D("button",{type:"button","aria-label":e.t("el.datepicker.prevYear"),class:"el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left",onClick:t[2]||(t[2]=(...b)=>e.prevYear_&&e.prevYear_(...b))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})],8,hz),Ge(D("button",{type:"button","aria-label":e.t("el.datepicker.prevMonth"),class:"el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left",onClick:t[3]||(t[3]=(...b)=>e.prevMonth_&&e.prevMonth_(...b))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})],8,mz),[[pt,e.currentView==="date"]]),D("span",{role:"button",class:"el-date-picker__header-label",onClick:t[4]||(t[4]=(...b)=>e.showYearPicker&&e.showYearPicker(...b))},he(e.yearLabel),1),Ge(D("span",{role:"button",class:_(["el-date-picker__header-label",{active:e.currentView==="month"}]),onClick:t[5]||(t[5]=(...b)=>e.showMonthPicker&&e.showMonthPicker(...b))},he(e.t(`el.datepicker.month${e.month+1}`)),3),[[pt,e.currentView==="date"]]),D("button",{type:"button","aria-label":e.t("el.datepicker.nextYear"),class:"el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right",onClick:t[6]||(t[6]=(...b)=>e.nextYear_&&e.nextYear_(...b))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})],8,vz),Ge(D("button",{type:"button","aria-label":e.t("el.datepicker.nextMonth"),class:"el-picker-panel__icon-btn el-date-picker__next-btn arrow-right",onClick:t[7]||(t[7]=(...b)=>e.nextMonth_&&e.nextMonth_(...b))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})],8,gz),[[pt,e.currentView==="date"]])],2),[[pt,e.currentView!=="time"]]),D("div",bz,[e.currentView==="date"?(C(),x(p,{key:0,"selection-mode":e.selectionMode,date:e.innerDate,"parsed-value":e.parsedValue,"disabled-date":e.disabledDate,onPick:e.handleDatePick},null,8,["selection-mode","date","parsed-value","disabled-date","onPick"])):G("v-if",!0),e.currentView==="year"?(C(),x(h,{key:1,date:e.innerDate,"disabled-date":e.disabledDate,"parsed-value":e.parsedValue,onPick:e.handleYearPick},null,8,["date","disabled-date","parsed-value","onPick"])):G("v-if",!0),e.currentView==="month"?(C(),x(g,{key:2,date:e.innerDate,"parsed-value":e.parsedValue,"disabled-date":e.disabledDate,onPick:e.handleMonthPick},null,8,["date","parsed-value","disabled-date","onPick"])):G("v-if",!0)])])]),Ge(D("div",yz,[Ge(Y(m,{size:"small",type:"text",class:"el-picker-panel__link-btn",onClick:e.changeToNow},{default:j(()=>[at(he(e.t("el.datepicker.now")),1)]),_:1},8,["onClick"]),[[pt,e.selectionMode!=="dates"]]),Y(m,{plain:"",size:"small",class:"el-picker-panel__link-btn",onClick:e.onConfirm},{default:j(()=>[at(he(e.t("el.datepicker.confirm")),1)]),_:1},8,["onClick"])],512),[[pt,e.footerVisible&&e.currentView==="date"]])],2)}var Cz=ge(rz,[["render",wz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"]]);const $z=ee({directives:{clickoutside:hl},components:{TimePickPanel:hp,DateTable:Aw,ElInput:Jn,ElButton:Kn,ElIcon:je,DArrowLeft:Pu,ArrowLeft:fl,DArrowRight:Du,ArrowRight:Zn},props:{unlinkPanels:Boolean,parsedValue:{type:Array},type:{type:String,required:!0,validator:W0}},emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,t){const{t:n,lang:o}=kt(),s=A(Ze().locale(o.value)),l=A(Ze().locale(o.value).add(1,"month")),r=A(null),a=A(null),i=A({min:null,max:null}),u=A({min:null,max:null}),c=E(()=>`${s.value.year()} ${n("el.datepicker.year")} ${n(`el.datepicker.month${s.value.month()+1}`)}`),d=E(()=>`${l.value.year()} ${n("el.datepicker.year")} ${n(`el.datepicker.month${l.value.month()+1}`)}`),f=E(()=>s.value.year()),p=E(()=>s.value.month()),h=E(()=>l.value.year()),g=E(()=>l.value.month()),m=E(()=>!!Re.length),v=E(()=>i.value.min!==null?i.value.min:r.value?r.value.format(k.value):""),b=E(()=>i.value.max!==null?i.value.max:a.value||r.value?(a.value||r.value).format(k.value):""),w=E(()=>u.value.min!==null?u.value.min:r.value?r.value.format($.value):""),S=E(()=>u.value.max!==null?u.value.max:a.value||r.value?(a.value||r.value).format($.value):""),$=E(()=>tw(Fe)),k=E(()=>ew(Fe)),T=()=>{s.value=s.value.subtract(1,"year"),e.unlinkPanels||(l.value=s.value.add(1,"month")),W("year")},O=()=>{s.value=s.value.subtract(1,"month"),e.unlinkPanels||(l.value=s.value.add(1,"month")),W("month")},L=()=>{e.unlinkPanels?l.value=l.value.add(1,"year"):(s.value=s.value.add(1,"year"),l.value=s.value.add(1,"month")),W("year")},V=()=>{e.unlinkPanels?l.value=l.value.add(1,"month"):(s.value=s.value.add(1,"month"),l.value=s.value.add(1,"month")),W("month")},B=()=>{s.value=s.value.add(1,"year"),W("year")},H=()=>{s.value=s.value.add(1,"month"),W("month")},R=()=>{l.value=l.value.subtract(1,"year"),W("year")},z=()=>{l.value=l.value.subtract(1,"month"),W("month")},W=ce=>{t.emit("panel-change",[s.value.toDate(),l.value.toDate()],ce)},P=E(()=>{const ce=(p.value+1)%12,Ae=p.value+1>=12?1:0;return e.unlinkPanels&&new Date(f.value+Ae,ce)e.unlinkPanels&&h.value*12+g.value-(f.value*12+p.value+1)>=12),I=ce=>Array.isArray(ce)&&ce[0]&&ce[1]&&ce[0].valueOf()<=ce[1].valueOf(),U=A({endDate:null,selecting:!1}),q=E(()=>!(r.value&&a.value&&!U.value.selecting&&I([r.value,a.value]))),Q=ce=>{U.value=ce},Z=ce=>{U.value.selecting=ce,ce||(U.value.endDate=null)},ae=E(()=>e.type==="datetime"||e.type==="datetimerange"),Ee=(ce=!1)=>{I([r.value,a.value])&&t.emit("pick",[r.value,a.value],ce)},Me=(ce,Ae)=>{if(!!ce)return Je?Ze(Je[Ae]||Je).locale(o.value).year(ce.year()).month(ce.month()).date(ce.date()):ce},J=(ce,Ae=!0)=>{const Ue=ce.minDate,mt=ce.maxDate,St=Me(Ue,0),bt=Me(mt,1);a.value===bt&&r.value===St||(t.emit("calendar-change",[Ue.toDate(),mt&&mt.toDate()]),a.value=bt,r.value=St,!(!Ae||ae.value)&&Ee())},ve=ce=>{const Ae=typeof ce.value=="function"?ce.value():ce.value;if(Ae){t.emit("pick",[Ze(Ae[0]).locale(o.value),Ze(Ae[1]).locale(o.value)]);return}ce.onClick&&ce.onClick(t)},Ce=A(!1),ke=A(!1),Oe=()=>{Ce.value=!1},We=()=>{ke.value=!1},qe=(ce,Ae)=>{i.value[Ae]=ce;const Ue=Ze(ce,k.value).locale(o.value);if(Ue.isValid()){if(F&&F(Ue.toDate()))return;Ae==="min"?(s.value=Ue,r.value=(r.value||s.value).year(Ue.year()).month(Ue.month()).date(Ue.date()),e.unlinkPanels||(l.value=Ue.add(1,"month"),a.value=r.value.add(1,"month"))):(l.value=Ue,a.value=(a.value||l.value).year(Ue.year()).month(Ue.month()).date(Ue.date()),e.unlinkPanels||(s.value=Ue.subtract(1,"month"),r.value=a.value.subtract(1,"month")))}},K=(ce,Ae)=>{i.value[Ae]=null},X=(ce,Ae)=>{u.value[Ae]=ce;const Ue=Ze(ce,$.value).locale(o.value);Ue.isValid()&&(Ae==="min"?(Ce.value=!0,r.value=(r.value||s.value).hour(Ue.hour()).minute(Ue.minute()).second(Ue.second()),(!a.value||a.value.isBefore(r.value))&&(a.value=r.value)):(ke.value=!0,a.value=(a.value||l.value).hour(Ue.hour()).minute(Ue.minute()).second(Ue.second()),l.value=a.value,a.value&&a.value.isBefore(r.value)&&(r.value=a.value)))},fe=(ce,Ae)=>{u.value[Ae]=null,Ae==="min"?(s.value=r.value,Ce.value=!1):(l.value=a.value,ke.value=!1)},ye=(ce,Ae,Ue)=>{u.value.min||(ce&&(s.value=ce,r.value=(r.value||s.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),Ue||(Ce.value=Ae),(!a.value||a.value.isBefore(r.value))&&(a.value=r.value,l.value=ce))},be=(ce,Ae,Ue)=>{u.value.max||(ce&&(l.value=ce,a.value=(a.value||l.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),Ue||(ke.value=Ae),a.value&&a.value.isBefore(r.value)&&(r.value=a.value))},_e=()=>{s.value=te()[0],l.value=s.value.add(1,"month"),t.emit("pick",null)},re=ce=>Array.isArray(ce)?ce.map(Ae=>Ae.format(Fe)):ce.format(Fe),se=ce=>Array.isArray(ce)?ce.map(Ae=>Ze(Ae,Fe).locale(o.value)):Ze(ce,Fe).locale(o.value),te=()=>{let ce;if(Array.isArray(me.value)){const Ae=Ze(me.value[0]);let Ue=Ze(me.value[1]);return e.unlinkPanels||(Ue=Ae.add(1,"month")),[Ae,Ue]}else me.value?ce=Ze(me.value):ce=Ze();return ce=ce.locale(o.value),[ce,ce.add(1,"month")]};t.emit("set-picker-option",["isValidValue",I]),t.emit("set-picker-option",["parseUserInput",se]),t.emit("set-picker-option",["formatToString",re]),t.emit("set-picker-option",["handleClear",_e]);const ue=Ne("EP_PICKER_BASE"),{shortcuts:Re,disabledDate:F,cellClassName:de,format:Fe,defaultTime:Je,arrowControl:He,clearable:oe}=ue.props,me=Yt(ue.props,"defaultValue");return pe(()=>me.value,ce=>{if(ce){const Ae=te();r.value=null,a.value=null,s.value=Ae[0],l.value=Ae[1]}},{immediate:!0}),pe(()=>e.parsedValue,ce=>{if(ce&&ce.length===2)if(r.value=ce[0],a.value=ce[1],s.value=r.value,e.unlinkPanels&&a.value){const Ae=r.value.year(),Ue=r.value.month(),mt=a.value.year(),St=a.value.month();l.value=Ae===mt&&Ue===St?a.value.add(1,"month"):a.value}else l.value=s.value.add(1,"month"),a.value&&(l.value=l.value.hour(a.value.hour()).minute(a.value.minute()).second(a.value.second()));else{const Ae=te();r.value=null,a.value=null,s.value=Ae[0],l.value=Ae[1]}},{immediate:!0}),{shortcuts:Re,disabledDate:F,cellClassName:de,minTimePickerVisible:Ce,maxTimePickerVisible:ke,handleMinTimeClose:Oe,handleMaxTimeClose:We,handleShortcutClick:ve,rangeState:U,minDate:r,maxDate:a,handleRangePick:J,onSelect:Z,handleChangeRange:Q,btnDisabled:q,enableYearArrow:N,enableMonthArrow:P,rightPrevMonth:z,rightPrevYear:R,rightNextMonth:V,rightNextYear:L,leftPrevMonth:O,leftPrevYear:T,leftNextMonth:H,leftNextYear:B,hasShortcuts:m,leftLabel:c,rightLabel:d,leftDate:s,rightDate:l,showTime:ae,t:n,minVisibleDate:v,maxVisibleDate:b,minVisibleTime:w,maxVisibleTime:S,arrowControl:He,handleDateInput:qe,handleDateChange:K,handleTimeInput:X,handleTimeChange:fe,handleMinTimePick:ye,handleMaxTimePick:be,handleClear:_e,handleConfirm:Ee,timeFormat:$,clearable:oe}}}),kz={class:"el-picker-panel__body-wrapper"},Sz={key:0,class:"el-picker-panel__sidebar"},Ez=["onClick"],_z={class:"el-picker-panel__body"},Tz={key:0,class:"el-date-range-picker__time-header"},Az={class:"el-date-range-picker__editors-wrap"},Nz={class:"el-date-range-picker__time-picker-wrap"},Mz={class:"el-date-range-picker__time-picker-wrap"},Oz={class:"el-date-range-picker__editors-wrap is-right"},Iz={class:"el-date-range-picker__time-picker-wrap"},Pz={class:"el-date-range-picker__time-picker-wrap"},Dz={class:"el-picker-panel__content el-date-range-picker__content is-left"},Lz={class:"el-date-range-picker__header"},Rz=["disabled"],Vz=["disabled"],Bz={class:"el-picker-panel__content el-date-range-picker__content is-right"},Fz={class:"el-date-range-picker__header"},Hz=["disabled"],zz=["disabled"],Kz={key:0,class:"el-picker-panel__footer"};function Wz(e,t,n,o,s,l){const r=le("el-input"),a=le("time-pick-panel"),i=le("arrow-right"),u=le("el-icon"),c=le("d-arrow-left"),d=le("arrow-left"),f=le("d-arrow-right"),p=le("date-table"),h=le("el-button"),g=Mn("clickoutside");return C(),M("div",{class:_(["el-picker-panel el-date-range-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts,"has-time":e.showTime}]])},[D("div",kz,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",Sz,[(C(!0),M(Le,null,it(e.shortcuts,(m,v)=>(C(),M("button",{key:v,type:"button",class:"el-picker-panel__shortcut",onClick:b=>e.handleShortcutClick(m)},he(m.text),9,Ez))),128))])):G("v-if",!0),D("div",_z,[e.showTime?(C(),M("div",Tz,[D("span",Az,[D("span",Nz,[Y(r,{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),class:"el-date-range-picker__editor","model-value":e.minVisibleDate,onInput:t[0]||(t[0]=m=>e.handleDateInput(m,"min")),onChange:t[1]||(t[1]=m=>e.handleDateChange(m,"min"))},null,8,["disabled","placeholder","model-value"])]),Ge((C(),M("span",Mz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),"model-value":e.minVisibleTime,onFocus:t[2]||(t[2]=m=>e.minTimePickerVisible=!0),onInput:t[3]||(t[3]=m=>e.handleTimeInput(m,"min")),onChange:t[4]||(t[4]=m=>e.handleTimeChange(m,"min"))},null,8,["disabled","placeholder","model-value"]),Y(a,{visible:e.minTimePickerVisible,format:e.timeFormat,"datetime-role":"start","time-arrow-control":e.arrowControl,"parsed-value":e.leftDate,onPick:e.handleMinTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[g,e.handleMinTimeClose]])]),D("span",null,[Y(u,null,{default:j(()=>[Y(i)]),_:1})]),D("span",Oz,[D("span",Iz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),"model-value":e.maxVisibleDate,readonly:!e.minDate,onInput:t[5]||(t[5]=m=>e.handleDateInput(m,"max")),onChange:t[6]||(t[6]=m=>e.handleDateChange(m,"max"))},null,8,["disabled","placeholder","model-value","readonly"])]),Ge((C(),M("span",Pz,[Y(r,{size:"small",class:"el-date-range-picker__editor",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),"model-value":e.maxVisibleTime,readonly:!e.minDate,onFocus:t[7]||(t[7]=m=>e.minDate&&(e.maxTimePickerVisible=!0)),onInput:t[8]||(t[8]=m=>e.handleTimeInput(m,"max")),onChange:t[9]||(t[9]=m=>e.handleTimeChange(m,"max"))},null,8,["disabled","placeholder","model-value","readonly"]),Y(a,{"datetime-role":"end",visible:e.maxTimePickerVisible,format:e.timeFormat,"time-arrow-control":e.arrowControl,"parsed-value":e.rightDate,onPick:e.handleMaxTimePick},null,8,["visible","format","time-arrow-control","parsed-value","onPick"])])),[[g,e.handleMaxTimeClose]])])])):G("v-if",!0),D("div",Dz,[D("div",Lz,[D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-left",onClick:t[10]||(t[10]=(...m)=>e.leftPrevYear&&e.leftPrevYear(...m))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})]),D("button",{type:"button",class:"el-picker-panel__icon-btn arrow-left",onClick:t[11]||(t[11]=(...m)=>e.leftPrevMonth&&e.leftPrevMonth(...m))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})]),e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-right"]),onClick:t[12]||(t[12]=(...m)=>e.leftNextYear&&e.leftNextYear(...m))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})],10,Rz)):G("v-if",!0),e.unlinkPanels?(C(),M("button",{key:1,type:"button",disabled:!e.enableMonthArrow,class:_([{"is-disabled":!e.enableMonthArrow},"el-picker-panel__icon-btn arrow-right"]),onClick:t[13]||(t[13]=(...m)=>e.leftNextMonth&&e.leftNextMonth(...m))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})],10,Vz)):G("v-if",!0),D("div",null,he(e.leftLabel),1)]),Y(p,{"selection-mode":"range",date:e.leftDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onPick","onSelect"])]),D("div",Bz,[D("div",Fz,[e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-left"]),onClick:t[14]||(t[14]=(...m)=>e.rightPrevYear&&e.rightPrevYear(...m))},[Y(u,null,{default:j(()=>[Y(c)]),_:1})],10,Hz)):G("v-if",!0),e.unlinkPanels?(C(),M("button",{key:1,type:"button",disabled:!e.enableMonthArrow,class:_([{"is-disabled":!e.enableMonthArrow},"el-picker-panel__icon-btn arrow-left"]),onClick:t[15]||(t[15]=(...m)=>e.rightPrevMonth&&e.rightPrevMonth(...m))},[Y(u,null,{default:j(()=>[Y(d)]),_:1})],10,zz)):G("v-if",!0),D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-right",onClick:t[16]||(t[16]=(...m)=>e.rightNextYear&&e.rightNextYear(...m))},[Y(u,null,{default:j(()=>[Y(f)]),_:1})]),D("button",{type:"button",class:"el-picker-panel__icon-btn arrow-right",onClick:t[17]||(t[17]=(...m)=>e.rightNextMonth&&e.rightNextMonth(...m))},[Y(u,null,{default:j(()=>[Y(i)]),_:1})]),D("div",null,he(e.rightLabel),1)]),Y(p,{"selection-mode":"range",date:e.rightDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onPick","onSelect"])])])]),e.showTime?(C(),M("div",Kz,[e.clearable?(C(),x(h,{key:0,size:"small",type:"text",class:"el-picker-panel__link-btn",onClick:e.handleClear},{default:j(()=>[at(he(e.t("el.datepicker.clear")),1)]),_:1},8,["onClick"])):G("v-if",!0),Y(h,{plain:"",size:"small",class:"el-picker-panel__link-btn",disabled:e.btnDisabled,onClick:t[18]||(t[18]=m=>e.handleConfirm(!1))},{default:j(()=>[at(he(e.t("el.datepicker.confirm")),1)]),_:1},8,["disabled"])])):G("v-if",!0)],2)}var jz=ge($z,[["render",Wz],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue"]]);const Yz=ee({components:{MonthTable:Nw,ElIcon:je,DArrowLeft:Pu,DArrowRight:Du},props:{unlinkPanels:Boolean,parsedValue:{type:Array}},emits:["pick","set-picker-option"],setup(e,t){const{t:n,lang:o}=kt(),s=A(Ze().locale(o.value)),l=A(Ze().locale(o.value).add(1,"year")),r=E(()=>!!H.length),a=P=>{const N=typeof P.value=="function"?P.value():P.value;if(N){t.emit("pick",[Ze(N[0]).locale(o.value),Ze(N[1]).locale(o.value)]);return}P.onClick&&P.onClick(t)},i=()=>{s.value=s.value.subtract(1,"year"),e.unlinkPanels||(l.value=l.value.subtract(1,"year"))},u=()=>{e.unlinkPanels||(s.value=s.value.add(1,"year")),l.value=l.value.add(1,"year")},c=()=>{s.value=s.value.add(1,"year")},d=()=>{l.value=l.value.subtract(1,"year")},f=E(()=>`${s.value.year()} ${n("el.datepicker.year")}`),p=E(()=>`${l.value.year()} ${n("el.datepicker.year")}`),h=E(()=>s.value.year()),g=E(()=>l.value.year()===s.value.year()?s.value.year()+1:l.value.year()),m=E(()=>e.unlinkPanels&&g.value>h.value+1),v=A(null),b=A(null),w=A({endDate:null,selecting:!1}),S=P=>{w.value=P},$=(P,N=!0)=>{const I=P.minDate,U=P.maxDate;b.value===U&&v.value===I||(b.value=U,v.value=I,N&&T())},k=P=>Array.isArray(P)&&P&&P[0]&&P[1]&&P[0].valueOf()<=P[1].valueOf(),T=(P=!1)=>{k([v.value,b.value])&&t.emit("pick",[v.value,b.value],P)},O=P=>{w.value.selecting=P,P||(w.value.endDate=null)},L=P=>P.map(N=>N.format(z)),V=()=>{let P;if(Array.isArray(W.value)){const N=Ze(W.value[0]);let I=Ze(W.value[1]);return e.unlinkPanels||(I=N.add(1,"year")),[N,I]}else W.value?P=Ze(W.value):P=Ze();return P=P.locale(o.value),[P,P.add(1,"year")]};t.emit("set-picker-option",["formatToString",L]);const B=Ne("EP_PICKER_BASE"),{shortcuts:H,disabledDate:R,format:z}=B.props,W=Yt(B.props,"defaultValue");return pe(()=>W.value,P=>{if(P){const N=V();s.value=N[0],l.value=N[1]}},{immediate:!0}),pe(()=>e.parsedValue,P=>{if(P&&P.length===2)if(v.value=P[0],b.value=P[1],s.value=v.value,e.unlinkPanels&&b.value){const N=v.value.year(),I=b.value.year();l.value=N===I?b.value.add(1,"year"):b.value}else l.value=s.value.add(1,"year");else{const N=V();v.value=null,b.value=null,s.value=N[0],l.value=N[1]}},{immediate:!0}),{shortcuts:H,disabledDate:R,onSelect:O,handleRangePick:$,rangeState:w,handleChangeRange:S,minDate:v,maxDate:b,enableYearArrow:m,leftLabel:f,rightLabel:p,leftNextYear:c,leftPrevYear:i,rightNextYear:u,rightPrevYear:d,t:n,leftDate:s,rightDate:l,hasShortcuts:r,handleShortcutClick:a}}}),Uz={class:"el-picker-panel__body-wrapper"},qz={key:0,class:"el-picker-panel__sidebar"},Gz=["onClick"],Xz={class:"el-picker-panel__body"},Zz={class:"el-picker-panel__content el-date-range-picker__content is-left"},Jz={class:"el-date-range-picker__header"},Qz=["disabled"],xz={class:"el-picker-panel__content el-date-range-picker__content is-right"},e9={class:"el-date-range-picker__header"},t9=["disabled"];function n9(e,t,n,o,s,l){const r=le("d-arrow-left"),a=le("el-icon"),i=le("d-arrow-right"),u=le("month-table");return C(),M("div",{class:_(["el-picker-panel el-date-range-picker",[{"has-sidebar":e.$slots.sidebar||e.hasShortcuts}]])},[D("div",Uz,[ie(e.$slots,"sidebar",{class:"el-picker-panel__sidebar"}),e.hasShortcuts?(C(),M("div",qz,[(C(!0),M(Le,null,it(e.shortcuts,(c,d)=>(C(),M("button",{key:d,type:"button",class:"el-picker-panel__shortcut",onClick:f=>e.handleShortcutClick(c)},he(c.text),9,Gz))),128))])):G("v-if",!0),D("div",Xz,[D("div",Zz,[D("div",Jz,[D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-left",onClick:t[0]||(t[0]=(...c)=>e.leftPrevYear&&e.leftPrevYear(...c))},[Y(a,null,{default:j(()=>[Y(r)]),_:1})]),e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-right"]),onClick:t[1]||(t[1]=(...c)=>e.leftNextYear&&e.leftNextYear(...c))},[Y(a,null,{default:j(()=>[Y(i)]),_:1})],10,Qz)):G("v-if",!0),D("div",null,he(e.leftLabel),1)]),Y(u,{"selection-mode":"range",date:e.leftDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onPick","onSelect"])]),D("div",xz,[D("div",e9,[e.unlinkPanels?(C(),M("button",{key:0,type:"button",disabled:!e.enableYearArrow,class:_([{"is-disabled":!e.enableYearArrow},"el-picker-panel__icon-btn d-arrow-left"]),onClick:t[2]||(t[2]=(...c)=>e.rightPrevYear&&e.rightPrevYear(...c))},[Y(a,null,{default:j(()=>[Y(r)]),_:1})],10,t9)):G("v-if",!0),D("button",{type:"button",class:"el-picker-panel__icon-btn d-arrow-right",onClick:t[3]||(t[3]=(...c)=>e.rightNextYear&&e.rightNextYear(...c))},[Y(a,null,{default:j(()=>[Y(i)]),_:1})]),D("div",null,he(e.rightLabel),1)]),Y(u,{"selection-mode":"range",date:e.rightDate,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,onChangerange:e.handleChangeRange,onPick:e.handleRangePick,onSelect:e.onSelect},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onPick","onSelect"])])])])],2)}var o9=ge(Yz,[["render",n9],["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue"]]);Ze.extend(B1);Ze.extend(NH);Ze.extend(fp);Ze.extend(MH);Ze.extend(OH);Ze.extend(IH);Ze.extend(PH);Ze.extend(DH);const s9=function(e){return e==="daterange"||e==="datetimerange"?jz:e==="monthrange"?o9:Cz};var l9=ee({name:"ElDatePicker",install:null,props:Te(ne({},pp),{type:{type:String,default:"date"}}),emits:["update:modelValue"],setup(e,t){st("ElPopperOptions",e.popperOptions),st(Tw,{ctx:t});const n=A(null),o=Te(ne({},e),{focus:(s=!0)=>{var l;(l=n.value)==null||l.focus(s)}});return t.expose(o),()=>{var s;const l=(s=e.format)!=null?s:UV[e.type]||Nr;return De(H1,Te(ne({},e),{format:l,type:e.type,ref:n,"onUpdate:modelValue":r=>t.emit("update:modelValue",r)}),{default:r=>De(s9(e.type),r),"range-separator":()=>ie(t.slots,"range-separator")})}}});const Ci=l9;Ci.install=e=>{e.component(Ci.name,Ci)};const r9=Ci,bp="elDescriptions";var Jv=ee({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String},type:{type:String}},setup(){return{descriptions:Ne(bp,{})}},render(){var e,t,n,o,s,l;const r=C8(this.cell),{border:a,direction:i}=this.descriptions,u=i==="vertical",c=((n=(t=(e=this.cell)==null?void 0:e.children)==null?void 0:t.label)==null?void 0:n.call(t))||r.label,d=(l=(s=(o=this.cell)==null?void 0:o.children)==null?void 0:s.default)==null?void 0:l.call(s),f=r.span,p=r.align?`is-${r.align}`:"",h=r.labelAlign?`is-${r.labelAlign}`:p,g=r.className,m=r.labelClassName,v={width:ro(r.width),minWidth:ro(r.minWidth)},b=we("descriptions");switch(this.type){case"label":return De(this.tag,{style:v,class:[b.e("cell"),b.e("label"),b.is("bordered-label",a),b.is("vertical-label",u),h,m],colSpan:u?f:1},c);case"content":return De(this.tag,{style:v,class:[b.e("cell"),b.e("content"),b.is("bordered-content",a),b.is("vertical-content",u),p,g],colSpan:u?f:f*2-1},d);default:return De("td",{style:v,class:[b.e("cell"),p],colSpan:f},[De("span",{class:[b.e("label"),m]},c),De("span",{class:[b.e("content"),g]},d)])}}});const a9=ee({name:"ElDescriptionsRow",components:{[Jv.name]:Jv},props:{row:{type:Array}},setup(){return{descriptions:Ne(bp,{})}}}),i9={key:1};function u9(e,t,n,o,s,l){const r=le("el-descriptions-cell");return e.descriptions.direction==="vertical"?(C(),M(Le,{key:0},[D("tr",null,[(C(!0),M(Le,null,it(e.row,(a,i)=>(C(),x(r,{key:`tr1-${i}`,cell:a,tag:"th",type:"label"},null,8,["cell"]))),128))]),D("tr",null,[(C(!0),M(Le,null,it(e.row,(a,i)=>(C(),x(r,{key:`tr2-${i}`,cell:a,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(C(),M("tr",i9,[(C(!0),M(Le,null,it(e.row,(a,i)=>(C(),M(Le,{key:`tr3-${i}`},[e.descriptions.border?(C(),M(Le,{key:0},[Y(r,{cell:a,tag:"td",type:"label"},null,8,["cell"]),Y(r,{cell:a,tag:"td",type:"content"},null,8,["cell"])],64)):(C(),x(r,{key:1,cell:a,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}var Qv=ge(a9,[["render",u9],["__file","/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/descriptions-row.vue"]]);const c9=ee({name:"ElDescriptions",components:{[Qv.name]:Qv},props:{border:{type:Boolean,default:!1},column:{type:Number,default:3},direction:{type:String,default:"horizontal"},size:{type:String,validator:On},title:{type:String,default:""},extra:{type:String,default:""}},setup(e,{slots:t}){st(bp,e);const n=Wt(),o=we("descriptions"),s=E(()=>[o.b(),o.is(o.m(n.value),!!n.value)]),l=i=>{const u=Array.isArray(i)?i:[i],c=[];return u.forEach(d=>{Array.isArray(d.children)?c.push(...l(d.children)):c.push(d)}),c},r=(i,u,c,d=!1)=>(i.props||(i.props={}),u>c&&(i.props.span=c),d&&(i.props.span=u),i);return{descriptionKls:s,getRows:()=>{var i;const u=l((i=t.default)==null?void 0:i.call(t)).filter(h=>{var g;return((g=h==null?void 0:h.type)==null?void 0:g.name)==="ElDescriptionsItem"}),c=[];let d=[],f=e.column,p=0;return u.forEach((h,g)=>{var m;const v=((m=h.props)==null?void 0:m.span)||1;if(gf?f:v),g===u.length-1){const b=e.column-p%e.column;d.push(r(h,b,f,!0)),c.push(d);return}v[at(he(e.title),1)])],2),D("div",{class:_(e.ns.e("extra"))},[ie(e.$slots,"extra",{},()=>[at(he(e.extra),1)])],2)],2)):G("v-if",!0),D("div",{class:_(e.ns.e("body"))},[D("table",{class:_([e.ns.e("table"),e.ns.is("bordered",e.border)])},[D("tbody",null,[(C(!0),M(Le,null,it(e.getRows(),(a,i)=>(C(),x(r,{key:i,row:a},null,8,["row"]))),128))])],2)],2)],2)}var f9=ge(c9,[["render",d9],["__file","/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/index.vue"]]),Mw=ee({name:"ElDescriptionsItem",props:{label:{type:String,default:""},span:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},align:{type:String,default:"left"},labelAlign:{type:String,default:""},className:{type:String,default:""},labelClassName:{type:String,default:""}}});const p9=ot(f9,{DescriptionsItem:Mw}),h9=Rt(Mw),m9=Be({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:$e([String,Array,Object])},zIndex:{type:$e([String,Number])}}),v9={click:e=>e instanceof MouseEvent};var g9=ee({name:"ElOverlay",props:m9,emits:v9,setup(e,{slots:t,emit:n}){const o=we("overlay"),s=i=>{n("click",i)},{onClick:l,onMousedown:r,onMouseup:a}=ap(e.customMaskEvent?void 0:s);return()=>e.mask?Y("div",{class:[o.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:l,onMousedown:r,onMouseup:a},[ie(t,"default")],Vn.STYLE|Vn.CLASS|Vn.PROPS,["onClick","onMouseup","onMousedown"]):De("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[ie(t,"default")])}});const yp=g9,Ow=Be({center:{type:Boolean,default:!1},closeIcon:{type:nn,default:""},customClass:{type:String,default:""},draggable:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},title:{type:String,default:""}}),b9={close:()=>!0},y9=["aria-label"],w9={name:"ElDialogContent"},C9=ee(Te(ne({},w9),{props:Ow,emits:b9,setup(e){const{Close:t}=m8,{dialogRef:n,headerRef:o,ns:s,style:l}=Ne(Q0);return(r,a)=>(C(),M("div",{ref_key:"dialogRef",ref:n,class:_([y(s).b(),y(s).is("fullscreen",r.fullscreen),y(s).is("draggable",r.draggable),{[y(s).m("center")]:r.center},r.customClass]),"aria-modal":"true",role:"dialog","aria-label":r.title||"dialog",style:Pe(y(l)),onClick:a[1]||(a[1]=Ke(()=>{},["stop"]))},[D("div",{ref_key:"headerRef",ref:o,class:_(y(s).e("header"))},[ie(r.$slots,"title",{},()=>[D("span",{class:_(y(s).e("title"))},he(r.title),3)])],2),D("div",{class:_(y(s).e("body"))},[ie(r.$slots,"default")],2),r.$slots.footer?(C(),M("div",{key:0,class:_(y(s).e("footer"))},[ie(r.$slots,"footer")],2)):G("v-if",!0),r.showClose?(C(),M("button",{key:1,"aria-label":"close",class:_(y(s).e("headerbtn")),type:"button",onClick:a[0]||(a[0]=i=>r.$emit("close"))},[Y(y(je),{class:_(y(s).e("close"))},{default:j(()=>[(C(),x(ft(r.closeIcon||y(t))))]),_:1},8,["class"])],2)):G("v-if",!0)],14,y9))}}));var $9=ge(C9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue"]]);const Iw=Be(Te(ne({},Ow),{appendToBody:{type:Boolean,default:!1},beforeClose:{type:$e(Function)},destroyOnClose:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:{type:Boolean,required:!0},modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1}})),Pw={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[tt]:e=>en(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Dw=(e,t)=>{const o=nt().emit,{nextZIndex:s}=jo();let l="";const r=A(!1),a=A(!1),i=A(!1),u=A(e.zIndex||s());let c,d;const f=E(()=>ht(e.width)?`${e.width}px`:e.width),p=E(()=>{const T={},O="--el-dialog";return e.fullscreen||(e.top&&(T[`${O}-margin-top`]=e.top),e.width&&(T[`${O}-width`]=f.value)),T});function h(){o("opened")}function g(){o("closed"),o(tt,!1),e.destroyOnClose&&(i.value=!1)}function m(){o("close")}function v(){d==null||d(),c==null||c(),e.openDelay&&e.openDelay>0?{stop:c}=nl(()=>$(),e.openDelay):$()}function b(){c==null||c(),d==null||d(),e.closeDelay&&e.closeDelay>0?{stop:d}=nl(()=>k(),e.closeDelay):k()}function w(){function T(O){O||(a.value=!0,r.value=!1)}e.beforeClose?e.beforeClose(T):b()}function S(){e.closeOnClickModal&&w()}function $(){!ct||(r.value=!0)}function k(){r.value=!1}return e.lockScroll&&u1(r),e.closeOnPressEscape&&c1({handleClose:w},r),d1(r),pe(()=>e.modelValue,T=>{T?(a.value=!1,v(),i.value=!0,o("open"),u.value=e.zIndex?u.value++:s(),ze(()=>{t.value&&(t.value.scrollTop=0)})):r.value&&b()}),pe(()=>e.fullscreen,T=>{!t.value||(T?(l=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=l)}),xe(()=>{e.modelValue&&(r.value=!0,i.value=!0,v())}),{afterEnter:h,afterLeave:g,beforeLeave:m,handleClose:w,onModalClick:S,close:b,doClose:k,closed:a,style:p,rendered:i,visible:r,zIndex:u}},k9={name:"ElDialog"},S9=ee(Te(ne({},k9),{props:Iw,emits:Pw,setup(e,{expose:t}){const n=e,o=we("dialog"),s=A(),l=A(),{visible:r,style:a,rendered:i,zIndex:u,afterEnter:c,afterLeave:d,beforeLeave:f,handleClose:p,onModalClick:h}=Dw(n,s);st(Q0,{dialogRef:s,headerRef:l,ns:o,rendered:i,style:a});const g=ap(h),m=E(()=>n.draggable&&!n.fullscreen);return i1(s,l,m),t({visible:r}),(v,b)=>(C(),x(ka,{to:"body",disabled:!v.appendToBody},[Y(zt,{name:"dialog-fade",onAfterEnter:y(c),onAfterLeave:y(d),onBeforeLeave:y(f)},{default:j(()=>[Ge(Y(y(yp),{"custom-mask-event":"",mask:v.modal,"overlay-class":v.modalClass,"z-index":y(u)},{default:j(()=>[D("div",{class:_(`${y(o).namespace.value}-overlay-dialog`),onClick:b[0]||(b[0]=(...w)=>y(g).onClick&&y(g).onClick(...w)),onMousedown:b[1]||(b[1]=(...w)=>y(g).onMousedown&&y(g).onMousedown(...w)),onMouseup:b[2]||(b[2]=(...w)=>y(g).onMouseup&&y(g).onMouseup(...w))},[y(i)?(C(),x($9,{key:0,"custom-class":v.customClass,center:v.center,"close-icon":v.closeIcon,draggable:y(m),fullscreen:v.fullscreen,"show-close":v.showClose,style:Pe(y(a)),title:v.title,onClose:y(p)},fs({title:j(()=>[ie(v.$slots,"title")]),default:j(()=>[ie(v.$slots,"default")]),_:2},[v.$slots.footer?{name:"footer",fn:j(()=>[ie(v.$slots,"footer")])}:void 0]),1032,["custom-class","center","close-icon","draggable","fullscreen","show-close","style","title","onClose"])):G("v-if",!0)],34)]),_:3},8,["mask","overlay-class","z-index"]),[[pt,y(r)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"]))}}));var E9=ge(S9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue"]]);const Lw=ot(E9),_9=Be({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:$e(String),default:"solid"}}),T9={name:"ElDivider"},A9=ee(Te(ne({},T9),{props:_9,setup(e){const t=e,n=we("divider"),o=E(()=>({"--el-border-style":t.borderStyle}));return(s,l)=>(C(),M("div",{class:_([y(n).b(),y(n).m(s.direction)]),style:Pe(y(o))},[s.$slots.default&&s.direction!=="vertical"?(C(),M("div",{key:0,class:_([y(n).e("text"),y(n).is(s.contentPosition)])},[ie(s.$slots,"default")],2)):G("v-if",!0)],6))}}));var N9=ge(A9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/divider/src/divider.vue"]]);const M9=ot(N9),O9=Be(Te(ne({},Iw),{direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0}})),I9=Pw,P9=ee({name:"ElDrawer",components:{ElOverlay:yp,ElIcon:je,Close:Yn},directives:{TrapFocus:K1},props:O9,emits:I9,setup(e,t){const n=A(),o=we("drawer"),s=E(()=>e.direction==="rtl"||e.direction==="ltr"),l=E(()=>typeof e.size=="number"?`${e.size}px`:e.size);return Te(ne({},Dw(e,t,n)),{drawerRef:n,isHorizontal:s,drawerSize:l,ns:o})}}),D9=["aria-labelledby","aria-label"],L9=["id"],R9=["title"],V9=["aria-label"];function B9(e,t,n,o,s,l){const r=le("close"),a=le("el-icon"),i=le("el-overlay"),u=Mn("trap-focus");return C(),x(ka,{to:"body",disabled:!e.appendToBody},[Y(zt,{name:e.ns.b("fade"),onAfterEnter:e.afterEnter,onAfterLeave:e.afterLeave,onBeforeLeave:e.beforeLeave},{default:j(()=>[Ge(Y(i,{mask:e.modal,"overlay-class":e.modalClass,"z-index":e.zIndex,onClick:e.onModalClick},{default:j(()=>[Ge((C(),M("div",{ref:"drawerRef","aria-modal":"true","aria-labelledby":e.ns.e("title"),"aria-label":e.title,class:_([e.ns.b(),e.direction,e.visible&&"open",e.customClass]),style:Pe(e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize),role:"dialog",onClick:t[1]||(t[1]=Ke(()=>{},["stop"]))},[e.withHeader?(C(),M("header",{key:0,id:e.ns.e("title"),class:_(e.ns.e("header"))},[ie(e.$slots,"title",{},()=>[D("span",{role:"heading",title:e.title},he(e.title),9,R9)]),e.showClose?(C(),M("button",{key:0,"aria-label":"close "+(e.title||"drawer"),class:_(e.ns.e("close-btn")),type:"button",onClick:t[0]||(t[0]=(...c)=>e.handleClose&&e.handleClose(...c))},[Y(a,{class:_(e.ns.e("close"))},{default:j(()=>[Y(r)]),_:1},8,["class"])],10,V9)):G("v-if",!0)],10,L9)):G("v-if",!0),e.rendered?(C(),M("section",{key:1,class:_(e.ns.e("body"))},[ie(e.$slots,"default")],2)):G("v-if",!0),e.$slots.footer?(C(),M("div",{key:2,class:_(e.ns.e("footer"))},[ie(e.$slots,"footer")],2)):G("v-if",!0)],14,D9)),[[u]])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[pt,e.visible]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"])}var F9=ge(P9,[["render",B9],["__file","/home/runner/work/element-plus/element-plus/packages/components/drawer/src/drawer.vue"]]);const H9=ot(F9),Rw=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const s=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||s?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},xv=(e,t)=>{for(const n of e)if(!z9(n,t))return n},z9=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},K9=e=>{const t=Rw(e),n=xv(t,e),o=xv(t.reverse(),e);return[n,o]},W9=e=>e instanceof HTMLInputElement&&"select"in e,Os=(e,t)=>{if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&W9(e)&&t&&e.select()}};function eg(e,t){const n=[...e],o=e.indexOf(t);return o!==-1&&n.splice(o,1),n}const j9=()=>{let e=[];return{push:o=>{const s=e[0];s&&o!==s&&s.pause(),e=eg(e,o),e.unshift(o)},remove:o=>{var s,l;e=eg(e,o),(l=(s=e[0])==null?void 0:s.resume)==null||l.call(s)}}},Y9=(e,t=!1)=>{const n=document.activeElement;for(const o of e)if(Os(o,t),document.activeElement!==n)return},tg=j9(),kc="focus-trap.focus-on-mount",Sc="focus-trap.focus-on-unmount",ng={cancelable:!0,bubbles:!1},og="mountOnFocus",sg="unmountOnFocus",Vw=Symbol("elFocusTrap"),U9=ee({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean},emits:[og,sg],setup(e,{emit:t}){const n=A(),o=A(null);let s,l;const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},a=p=>{if(!e.loop&&!e.trapped||r.paused)return;const{key:h,altKey:g,ctrlKey:m,metaKey:v,currentTarget:b,shiftKey:w}=p,{loop:S}=e,$=h===Ie.tab&&!g&&!m&&!v,k=document.activeElement;if($&&k){const T=b,[O,L]=K9(T);O&&L?!w&&k===L?(p.preventDefault(),S&&Os(O,!0)):w&&k===O&&(p.preventDefault(),S&&Os(L,!0)):k===T&&p.preventDefault()}};st(Vw,{focusTrapRef:o,onKeydown:a});const i=p=>{t(og,p)},u=p=>t(sg,p),c=p=>{const h=y(o);if(r.paused||!h)return;const g=p.target;g&&h.contains(g)?l=g:Os(l,!0)},d=p=>{const h=y(o);r.paused||!h||h.contains(p.relatedTarget)||Os(l,!0)},f=()=>{document.removeEventListener("focusin",c),document.removeEventListener("focusout",d)};return xe(()=>{const p=y(o);if(p){tg.push(r);const h=document.activeElement;if(s=h,!p.contains(h)){const m=new Event(kc,ng);p.addEventListener(kc,i),p.dispatchEvent(m),m.defaultPrevented||ze(()=>{Y9(Rw(p),!0),document.activeElement===h&&Os(p)})}}pe(()=>e.trapped,h=>{h?(document.addEventListener("focusin",c),document.addEventListener("focusout",d)):f()},{immediate:!0})}),_t(()=>{f();const p=y(o);if(p){p.removeEventListener(kc,i);const h=new Event(Sc,ng);p.addEventListener(Sc,u),p.dispatchEvent(h),h.defaultPrevented||Os(s!=null?s:document.body,!0),p.removeEventListener(Sc,i),tg.remove(r)}}),{focusTrapRef:n,forwardRef:o,onKeydown:a}}});function q9(e,t,n,o,s,l){return ie(e.$slots,"default")}var G9=ge(U9,[["render",q9],["__file","/home/runner/work/element-plus/element-plus/packages/components/focus-trap/src/focus-trap.vue"]]);const X9=ee({inheritAttrs:!1});function Z9(e,t,n,o,s,l){return ie(e.$slots,"default")}var J9=ge(X9,[["render",Z9],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection.vue"]]);const Q9=ee({name:"ElCollectionItem",inheritAttrs:!1});function x9(e,t,n,o,s,l){return ie(e.$slots,"default")}var eK=ge(Q9,[["render",x9],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection-item.vue"]]);const Bw="data-el-collection-item",Fw=e=>{const t=`El${e}Collection`,n=`${t}Item`,o=Symbol(t),s=Symbol(n),l=Te(ne({},J9),{name:t,setup(){const a=A(null),i=new Map;st(o,{itemMap:i,getItems:()=>{const c=y(a);if(!c)return[];const d=Array.from(c.querySelectorAll(`[${Bw}]`));return[...i.values()].sort((h,g)=>d.indexOf(h.ref)-d.indexOf(g.ref))},collectionRef:a})}}),r=Te(ne({},eK),{name:n,setup(a,{attrs:i}){const u=A(null),c=Ne(o,void 0);st(s,{collectionItemRef:u}),xe(()=>{const d=y(u);d&&c.itemMap.set(d,ne({ref:d},i))}),_t(()=>{const d=y(u);c.itemMap.delete(d)})}});return{COLLECTION_INJECTION_KEY:o,COLLECTION_ITEM_INJECTION_KEY:s,ElCollection:l,ElCollectionItem:r}},tK=Be({style:{type:$e([String,Array,Object])},currentTabId:{type:$e(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:$e(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:nK,ElCollectionItem:oK,COLLECTION_INJECTION_KEY:wp,COLLECTION_ITEM_INJECTION_KEY:sK}=Fw("RovingFocusGroup"),Cp=Symbol("elRovingFocusGroup"),Hw=Symbol("elRovingFocusGroupItem"),lK={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},rK=(e,t)=>{if(t!=="rtl")return e;switch(e){case Ie.right:return Ie.left;case Ie.left:return Ie.right;default:return e}},aK=(e,t,n)=>{const o=rK(e.key,n);if(!(t==="vertical"&&[Ie.left,Ie.right].includes(o))&&!(t==="horizontal"&&[Ie.up,Ie.down].includes(o)))return lK[o]},iK=(e,t)=>e.map((n,o)=>e[(o+t)%e.length]),$p=e=>{const{activeElement:t}=document;for(const n of e)if(n===t||(n.focus(),t!==document.activeElement))return},lg="currentTabIdChange",Ec="rovingFocusGroup.entryFocus",uK={bubbles:!1,cancelable:!0},cK=ee({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:tK,emits:[lg,"entryFocus"],setup(e,{emit:t}){var n;const o=A((n=e.currentTabId||e.defaultCurrentTabId)!=null?n:null),s=A(!1),l=A(!1),r=A(null),{getItems:a}=Ne(wp,void 0),i=E(()=>[{outline:"none"},e.style]),u=g=>{t(lg,g)},c=()=>{s.value=!0},d=Pt(g=>{var m;(m=e.onMousedown)==null||m.call(e,g)},()=>{l.value=!0}),f=Pt(g=>{var m;(m=e.onFocus)==null||m.call(e,g)},g=>{const m=!y(l),{target:v,currentTarget:b}=g;if(v===b&&m&&!y(s)){const w=new Event(Ec,uK);if(b==null||b.dispatchEvent(w),!w.defaultPrevented){const S=a().filter(L=>L.focusable),$=S.find(L=>L.active),k=S.find(L=>L.id===y(o)),O=[$,k,...S].filter(Boolean).map(L=>L.ref);$p(O)}}l.value=!1}),p=Pt(g=>{var m;(m=e.onBlur)==null||m.call(e,g)},()=>{s.value=!1}),h=(...g)=>{t("entryFocus",...g)};st(Cp,{currentTabbedId:wa(o),loop:Yt(e,"loop"),tabIndex:E(()=>y(s)?-1:0),rovingFocusGroupRef:r,rovingFocusGroupRootStyle:i,orientation:Yt(e,"orientation"),dir:Yt(e,"dir"),onItemFocus:u,onItemShiftTab:c,onBlur:p,onFocus:f,onMousedown:d}),pe(()=>e.currentTabId,g=>{o.value=g!=null?g:null}),xe(()=>{const g=y(r);Tt(g,Ec,h)}),_t(()=>{const g=y(r);Bt(g,Ec,h)})}});function dK(e,t,n,o,s,l){return ie(e.$slots,"default")}var fK=ge(cK,[["render",dK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group-impl.vue"]]);const pK=ee({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:nK,ElRovingFocusGroupImpl:fK}});function hK(e,t,n,o,s,l){const r=le("el-roving-focus-group-impl"),a=le("el-focus-group-collection");return C(),x(a,null,{default:j(()=>[Y(r,to(ds(e.$attrs)),{default:j(()=>[ie(e.$slots,"default")]),_:3},16)]),_:3})}var mK=ge(pK,[["render",hK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group.vue"]]);const vK=ee({components:{ElRovingFocusCollectionItem:oK},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(e,{emit:t}){const{currentTabbedId:n,loop:o,onItemFocus:s,onItemShiftTab:l}=Ne(Cp,void 0),{getItems:r}=Ne(wp,void 0),a=ip(),i=A(null),u=Pt(p=>{t("mousedown",p)},p=>{e.focusable?s(y(a)):p.preventDefault()}),c=Pt(p=>{t("focus",p)},()=>{s(y(a))}),d=Pt(p=>{t("keydown",p)},p=>{const{key:h,shiftKey:g,target:m,currentTarget:v}=p;if(h===Ie.tab&&g){l();return}if(m!==v)return;const b=aK(p);if(b){p.preventDefault();let S=r().filter($=>$.focusable).map($=>$.ref);switch(b){case"last":{S.reverse();break}case"prev":case"next":{b==="prev"&&S.reverse();const $=S.indexOf(v);S=o.value?iK(S,$+1):S.slice($+1);break}}ze(()=>{$p(S)})}}),f=E(()=>n.value===y(a));return st(Hw,{rovingFocusGroupItemRef:i,tabIndex:E(()=>y(f)?0:-1),handleMousedown:u,handleFocus:c,handleKeydown:d}),{id:a,handleKeydown:d,handleFocus:c,handleMousedown:u}}});function gK(e,t,n,o,s,l){const r=le("el-roving-focus-collection-item");return C(),x(r,{id:e.id,focusable:e.focusable,active:e.active},{default:j(()=>[ie(e.$slots,"default")]),_:3},8,["id","focusable","active"])}var bK=ge(vK,[["render",gK],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-item.vue"]]);const $i=Be({trigger:ia.trigger,effect:Te(ne({},Jt.effect),{default:"light"}),type:{type:$e(String)},placement:{type:$e(String),default:"bottom"},popperOptions:{type:$e(Object),default:()=>({})},size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:$e([Number,String]),default:0},maxHeight:{type:$e([Number,String]),default:""},popperClass:{type:String,default:""},disabled:{type:Boolean,default:!1},buttonProps:{type:$e(Object)}}),zw=Be({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:nn}}),yK=Be({onKeydown:{type:$e(Function)}}),wK=[Ie.down,Ie.pageDown,Ie.home],Kw=[Ie.up,Ie.pageUp,Ie.end],CK=[...wK,...Kw],{ElCollection:$K,ElCollectionItem:kK,COLLECTION_INJECTION_KEY:SK,COLLECTION_ITEM_INJECTION_KEY:EK}=Fw("Dropdown"),kp=Symbol("elDropdown"),{ButtonGroup:_K}=Kn,TK=ee({name:"ElDropdown",components:{ElButton:Kn,ElFocusTrap:G9,ElButtonGroup:_K,ElScrollbar:Uo,ElDropdownCollection:$K,ElTooltip:mn,ElRovingFocusGroup:mK,ElIcon:je,ArrowDown:dl},props:$i,emits:["visible-change","click","command"],setup(e,{emit:t}){const n=nt(),o=we("dropdown"),s=A(),l=A(),r=A(null),a=A(null),i=A(null),u=A(null),c=A(!1),d=E(()=>({maxHeight:ro(e.maxHeight)})),f=E(()=>[o.m(m.value)]);function p(){h()}function h(){var O;(O=r.value)==null||O.onClose()}function g(){var O;(O=r.value)==null||O.onOpen()}const m=Wt();function v(...O){t("command",...O)}function b(){}function w(){const O=y(a);O==null||O.focus(),u.value=null}function S(O){u.value=O}function $(O){c.value||(O.preventDefault(),O.stopImmediatePropagation())}return st(kp,{contentRef:a,isUsingKeyboard:c,onItemEnter:b,onItemLeave:w}),st("elDropdown",{instance:n,dropdownSize:m,handleClick:p,commandHandler:v,trigger:Yt(e,"trigger"),hideOnClick:Yt(e,"hideOnClick")}),{ns:o,scrollbar:i,wrapStyle:d,dropdownTriggerKls:f,dropdownSize:m,currentTabId:u,handleCurrentTabIdChange:S,handlerMainButtonClick:O=>{t("click",O)},handleEntryFocus:$,handleClose:h,handleOpen:g,onMountOnFocus:O=>{var L,V;O.preventDefault(),(V=(L=a.value)==null?void 0:L.focus)==null||V.call(L,{preventScroll:!0})},popperRef:r,triggeringElementRef:s,referenceElementRef:l}}});function AK(e,t,n,o,s,l){var r;const a=le("el-dropdown-collection"),i=le("el-roving-focus-group"),u=le("el-focus-trap"),c=le("el-scrollbar"),d=le("el-tooltip"),f=le("el-button"),p=le("arrow-down"),h=le("el-icon"),g=le("el-button-group");return C(),M("div",{class:_([e.ns.b(),e.ns.is("disabled",e.disabled)])},[Y(d,{ref:"popperRef",effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,"hide-after":e.trigger==="hover"?e.hideTimeout:0,"manual-mode":!0,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"reference-element":(r=e.referenceElementRef)==null?void 0:r.$el,trigger:e.trigger,"show-after":e.trigger==="hover"?e.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":e.triggeringElementRef,"virtual-triggering":e.splitButton,disabled:e.disabled,"append-to-body":"",pure:"",transition:`${e.ns.namespace.value}-zoom-in-top`,persistent:"",onShow:t[0]||(t[0]=m=>e.$emit("visible-change",!0)),onHide:t[1]||(t[1]=m=>e.$emit("visible-change",!1))},fs({content:j(()=>[Y(c,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:j(()=>[Y(u,{trapped:"",onMountOnFocus:e.onMountOnFocus},{default:j(()=>[Y(i,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:j(()=>[Y(a,null,{default:j(()=>[ie(e.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["onMountOnFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[e.splitButton?void 0:{name:"default",fn:j(()=>[D("div",{class:_(e.dropdownTriggerKls)},[ie(e.$slots,"default")],2)])}]),1032,["effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","show-after","virtual-ref","virtual-triggering","disabled","transition"]),e.splitButton?(C(),x(g,{key:0},{default:j(()=>[Y(f,Et({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,onClick:e.handlerMainButtonClick}),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["size","type","disabled","onClick"]),Y(f,Et({ref:"triggeringElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled}),{default:j(()=>[Y(h,{class:_(e.ns.e("icon"))},{default:j(()=>[Y(p)]),_:1},8,["class"])]),_:1},16,["size","type","class","disabled"])]),_:3})):G("v-if",!0)],2)}var NK=ge(TK,[["render",AK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown.vue"]]);const MK=ee({name:"DropdownItemImpl",components:{ElIcon:je},props:zw,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:t}){const n=we("dropdown"),{collectionItemRef:o}=Ne(EK,void 0),{collectionItemRef:s}=Ne(sK,void 0),{rovingFocusGroupItemRef:l,tabIndex:r,handleFocus:a,handleKeydown:i,handleMousedown:u}=Ne(Hw,void 0),c=op(o,s,l),d=Pt(f=>{const{code:p}=f;if(p===Ie.enter||p===Ie.space)return f.preventDefault(),f.stopImmediatePropagation(),t("clickimpl",f),!0},i);return{ns:n,itemRef:c,dataset:{[Bw]:""},tabIndex:r,handleFocus:a,handleKeydown:d,handleMousedown:u}}}),OK=["aria-disabled","tabindex"];function IK(e,t,n,o,s,l){const r=le("el-icon");return C(),M(Le,null,[e.divided?(C(),M("li",Et({key:0,class:e.ns.bem("menu","item","divided")},e.$attrs),null,16)):G("v-if",!0),D("li",Et({ref:e.itemRef},ne(ne({},e.dataset),e.$attrs),{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:"menuitem",onClick:t[0]||(t[0]=a=>e.$emit("clickimpl",a)),onFocus:t[1]||(t[1]=(...a)=>e.handleFocus&&e.handleFocus(...a)),onKeydown:t[2]||(t[2]=(...a)=>e.handleKeydown&&e.handleKeydown(...a)),onMousedown:t[3]||(t[3]=(...a)=>e.handleMousedown&&e.handleMousedown(...a)),onPointermove:t[4]||(t[4]=a=>e.$emit("pointermove",a)),onPointerleave:t[5]||(t[5]=a=>e.$emit("pointerleave",a))}),[e.icon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1})):G("v-if",!0),ie(e.$slots,"default")],16,OK)],64)}var PK=ge(MK,[["render",IK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item-impl.vue"]]);const Ww=()=>{const e=Ne("elDropdown",{}),t=E(()=>e==null?void 0:e.dropdownSize);return{elDropdown:e,_elDropdownSize:t}},DK=ee({name:"ElDropdownItem",components:{ElDropdownCollectionItem:kK,ElRovingFocusItem:bK,ElDropdownItemImpl:PK},inheritAttrs:!1,props:zw,emits:["pointermove","pointerleave","click"],setup(e,{emit:t,attrs:n}){const{elDropdown:o}=Ww(),s=nt(),l=A(null),r=E(()=>{var p,h;return(h=(p=y(l))==null?void 0:p.textContent)!=null?h:""}),{onItemEnter:a,onItemLeave:i}=Ne(kp,void 0),u=Pt(p=>(t("pointermove",p),p.defaultPrevented),nv(p=>{var h;e.disabled?i(p):(a(p),p.defaultPrevented||(h=p.currentTarget)==null||h.focus())})),c=Pt(p=>(t("pointerleave",p),p.defaultPrevented),nv(p=>{i(p)})),d=Pt(p=>(t("click",p),p.defaultPrevented),p=>{var h,g,m;if(e.disabled){p.stopImmediatePropagation();return}(h=o==null?void 0:o.hideOnClick)!=null&&h.value&&((g=o.handleClick)==null||g.call(o)),(m=o.commandHandler)==null||m.call(o,e.command,s,p)}),f=E(()=>ne(ne({},e),n));return{handleClick:d,handlePointerMove:u,handlePointerLeave:c,textContent:r,propsAndAttrs:f}}});function LK(e,t,n,o,s,l){var r;const a=le("el-dropdown-item-impl"),i=le("el-roving-focus-item"),u=le("el-dropdown-collection-item");return C(),x(u,{disabled:e.disabled,"text-value":(r=e.textValue)!=null?r:e.textContent},{default:j(()=>[Y(i,{focusable:!e.disabled},{default:j(()=>[Y(a,Et(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:j(()=>[ie(e.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var jw=ge(DK,[["render",LK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item.vue"]]);const RK=ee({name:"ElDropdownMenu",props:yK,setup(e){const t=we("dropdown"),{_elDropdownSize:n}=Ww(),o=n.value,{focusTrapRef:s,onKeydown:l}=Ne(Vw,void 0),{contentRef:r}=Ne(kp,void 0),{collectionRef:a,getItems:i}=Ne(SK,void 0),{rovingFocusGroupRef:u,rovingFocusGroupRootStyle:c,tabIndex:d,onBlur:f,onFocus:p,onMousedown:h}=Ne(Cp,void 0),{collectionRef:g}=Ne(wp,void 0),m=E(()=>[t.b("menu"),t.bm("menu",o==null?void 0:o.value)]),v=op(r,a,s,u,g),b=Pt(S=>{var $;($=e.onKeydown)==null||$.call(e,S)},S=>{const{currentTarget:$,code:k,target:T}=S;if($.contains(T),Ie.tab===k&&S.stopImmediatePropagation(),S.preventDefault(),T!==y(r)||!CK.includes(k))return;const L=i().filter(V=>!V.disabled).map(V=>V.ref);Kw.includes(k)&&L.reverse(),$p(L)});return{size:o,rovingFocusGroupRootStyle:c,tabIndex:d,dropdownKls:m,dropdownListWrapperRef:v,handleKeydown:S=>{b(S),l(S)},onBlur:f,onFocus:p,onMousedown:h}}});function VK(e,t,n,o,s,l){return C(),M("ul",{ref:e.dropdownListWrapperRef,class:_(e.dropdownKls),style:Pe(e.rovingFocusGroupRootStyle),tabindex:-1,role:"menu",onBlur:t[0]||(t[0]=(...r)=>e.onBlur&&e.onBlur(...r)),onFocus:t[1]||(t[1]=(...r)=>e.onFocus&&e.onFocus(...r)),onKeydown:t[2]||(t[2]=(...r)=>e.handleKeydown&&e.handleKeydown(...r)),onMousedown:t[3]||(t[3]=(...r)=>e.onMousedown&&e.onMousedown(...r))},[ie(e.$slots,"default")],38)}var Yw=ge(RK,[["render",VK],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-menu.vue"]]);const BK=ot(NK,{DropdownItem:jw,DropdownMenu:Yw}),FK=Rt(jw),HK=Rt(Yw);let zK=0;const KK=ee({name:"ImgEmpty",setup(){return{id:++zK}}}),WK={viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},jK=["id"],YK=D("stop",{"stop-color":"var(--el-empty-fill-color-1)",offset:"0%"},null,-1),UK=D("stop",{"stop-color":"var(--el-empty-fill-color-4)",offset:"100%"},null,-1),qK=[YK,UK],GK=["id"],XK=D("stop",{"stop-color":"var(--el-empty-fill-color-1)",offset:"0%"},null,-1),ZK=D("stop",{"stop-color":"var(--el-empty-fill-color-6)",offset:"100%"},null,-1),JK=[XK,ZK],QK=["id"],xK={id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},e7={id:"B-type",transform:"translate(-1268.000000, -535.000000)"},t7={id:"Group-2",transform:"translate(1268.000000, 535.000000)"},n7=D("path",{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:"var(--el-empty-fill-color-3)"},null,-1),o7=D("polygon",{id:"Rectangle-Copy-14",fill:"var(--el-empty-fill-color-7)",transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,-1),s7={id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},l7=D("polygon",{id:"Rectangle-Copy-10",fill:"var(--el-empty-fill-color-7)",transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,-1),r7=D("polygon",{id:"Rectangle-Copy-11",fill:"var(--el-empty-fill-color-5)",points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,-1),a7=["fill"],i7=D("polygon",{id:"Rectangle-Copy-13",fill:"var(--el-empty-fill-color-2)",transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,-1),u7=["fill"],c7={id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"},d7=["id"],f7=["xlink:href"],p7=["xlink:href"],h7=["mask"],m7=D("polygon",{id:"Rectangle-Copy-18",fill:"var(--el-empty-fill-color-2)",transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,-1);function v7(e,t,n,o,s,l){return C(),M("svg",WK,[D("defs",null,[D("linearGradient",{id:`linearGradient-1-${e.id}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},qK,8,jK),D("linearGradient",{id:`linearGradient-2-${e.id}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},JK,8,GK),D("rect",{id:`path-3-${e.id}`,x:"0",y:"0",width:"17",height:"36"},null,8,QK)]),D("g",xK,[D("g",e7,[D("g",t7,[n7,o7,D("g",s7,[l7,r7,D("rect",{id:"Rectangle-Copy-12",fill:`url(#linearGradient-1-${e.id})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,a7),i7]),D("rect",{id:"Rectangle-Copy-15",fill:`url(#linearGradient-2-${e.id})`,x:"13",y:"45",width:"40",height:"36"},null,8,u7),D("g",c7,[D("mask",{id:`mask-4-${e.id}`,fill:"var(--el-empty-fill-color-0)"},[D("use",{"xlink:href":`#path-3-${e.id}`},null,8,f7)],8,d7),D("use",{id:"Mask",fill:"var(--el-empty-fill-color-8)",transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${e.id}`},null,8,p7),D("polygon",{id:"Rectangle-Copy",fill:"var(--el-empty-fill-color-9)",mask:`url(#mask-4-${e.id})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 -1.70530257e-13 16"},null,8,h7)]),m7])])])])}var g7=ge(KK,[["render",v7],["__file","/home/runner/work/element-plus/element-plus/packages/components/empty/src/img-empty.vue"]]);const b7={image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}},y7=["src"],w7={key:1},C7={name:"ElEmpty"},$7=ee(Te(ne({},C7),{props:b7,setup(e){const t=e,{t:n}=kt(),o=we("empty"),s=E(()=>t.description||n("el.table.emptyText")),l=E(()=>({width:t.imageSize?`${t.imageSize}px`:""}));return(r,a)=>(C(),M("div",{class:_(y(o).b())},[D("div",{class:_(y(o).e("image")),style:Pe(y(l))},[r.image?(C(),M("img",{key:0,src:r.image,ondragstart:"return false"},null,8,y7)):ie(r.$slots,"image",{key:1},()=>[Y(g7)])],6),D("div",{class:_(y(o).e("description"))},[r.$slots.description?ie(r.$slots,"description",{key:0}):(C(),M("p",w7,he(y(s)),1))],2),r.$slots.default?(C(),M("div",{key:0,class:_(y(o).e("bottom"))},[ie(r.$slots,"default")],2)):G("v-if",!0)],2))}}));var k7=ge($7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/empty/src/empty.vue"]]);const S7=ot(k7),E7=Be({model:Object,rules:{type:$e(Object)},labelPosition:String,labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:{type:String,values:Eo},disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1},scrollToError:Boolean}),_7={validate:(e,t,n)=>(Xe(e)||Qe(e))&&en(t)&&Qe(n)};function T7(){const e=A([]),t=E(()=>{if(!e.value.length)return"0";const l=Math.max(...e.value);return l?`${l}px`:""});function n(l){return e.value.indexOf(l)}function o(l,r){if(l&&r){const a=n(r);e.value.splice(a,1,l)}else l&&e.value.push(l)}function s(l){const r=n(l);r>-1&&e.value.splice(r,1)}return{autoLabelWidth:t,registerLabelWidth:o,deregisterLabelWidth:s}}const Ja=(e,t)=>{const n=oa(t);return n.length>0?e.filter(o=>o.prop&&n.includes(o.prop)):e},A7={name:"ElForm"},N7=ee(Te(ne({},A7),{props:E7,emits:_7,setup(e,{expose:t,emit:n}){const o=e,s=[],l=Wt(),r=we("form"),a=E(()=>{const{labelPosition:b,inline:w}=o;return[r.b(),r.m(l.value||"default"),{[r.m(`label-${b}`)]:b,[r.m("inline")]:w}]}),i=b=>{s.push(b)},u=b=>{b.prop&&s.splice(s.indexOf(b),1)},c=(b=[])=>{!o.model||Ja(s,b).forEach(w=>w.resetField())},d=(b=[])=>{Ja(s,b).forEach(w=>w.clearValidate())},f=E(()=>!!o.model),p=b=>{if(s.length===0)return[];const w=Ja(s,b);return w.length?w:[]},h=async b=>m(void 0,b),g=async(b=[])=>{if(!f.value)return!1;const w=p(b);if(w.length===0)return!0;let S={};for(const $ of w)try{await $.validate("")}catch(k){S=ne(ne({},S),k)}return Object.keys(S).length===0?!0:Promise.reject(S)},m=async(b=[],w)=>{const S=!et(w);try{const $=await g(b);return $===!0&&(w==null||w($)),$}catch($){const k=$;return o.scrollToError&&v(Object.keys(k)[0]),w==null||w(!1,k),S&&Promise.reject(k)}},v=b=>{var w;const S=Ja(s,b)[0];S&&((w=S.$el)==null||w.scrollIntoView())};return pe(()=>o.rules,()=>{o.validateOnRuleChange&&h()},{deep:!0}),st(Pn,yt(ne(Te(ne({},Ut(o)),{emit:n,resetFields:c,clearValidate:d,validateField:m,addField:i,removeField:u}),T7()))),t({validate:h,validateField:m,resetFields:c,clearValidate:d,scrollToField:v}),(b,w)=>(C(),M("form",{class:_(y(a))},[ie(b.$slots,"default")],2))}}));var M7=ge(N7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form.vue"]]);function Fs(){return Fs=Object.assign||function(e){for(var t=1;t1?t-1:0),o=1;o=l)return a;switch(a){case"%s":return String(n[s++]);case"%d":return Number(n[s++]);case"%j":try{return JSON.stringify(n[s++])}catch{return"[Circular]"}break;default:return a}});return r}return e}function R7(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Gt(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||R7(t)&&typeof e=="string"&&!e)}function V7(e,t,n){var o=[],s=0,l=e.length;function r(a){o.push.apply(o,a||[]),s++,s===l&&n(o)}e.forEach(function(a){t(a,r)})}function rg(e,t,n){var o=0,s=e.length;function l(r){if(r&&r.length){n(r);return}var a=o;o=o+1,a()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Mr={integer:function(t){return Mr.number(t)&&parseInt(t,10)===t},float:function(t){return Mr.number(t)&&!Mr.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!Mr.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(_c.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(_c.url)},hex:function(t){return typeof t=="string"&&!!t.match(_c.hex)}},W7=function(t,n,o,s,l){if(t.required&&n===void 0){Uw(t,n,o,s,l);return}var r=["integer","float","array","regexp","object","method","email","number","date","url","hex"],a=t.type;r.indexOf(a)>-1?Mr[a](n)||s.push(kn(l.messages.types[a],t.fullField,t.type)):a&&typeof n!==t.type&&s.push(kn(l.messages.types[a],t.fullField,t.type))},j7=function(t,n,o,s,l){var r=typeof t.len=="number",a=typeof t.min=="number",i=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=n,d=null,f=typeof n=="number",p=typeof n=="string",h=Array.isArray(n);if(f?d="number":p?d="string":h&&(d="array"),!d)return!1;h&&(c=n.length),p&&(c=n.replace(u,"_").length),r?c!==t.len&&s.push(kn(l.messages[d].len,t.fullField,t.len)):a&&!i&&ct.max?s.push(kn(l.messages[d].max,t.fullField,t.max)):a&&i&&(ct.max)&&s.push(kn(l.messages[d].range,t.fullField,t.min,t.max))},yl="enum",Y7=function(t,n,o,s,l){t[yl]=Array.isArray(t[yl])?t[yl]:[],t[yl].indexOf(n)===-1&&s.push(kn(l.messages[yl],t.fullField,t[yl].join(", ")))},U7=function(t,n,o,s,l){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||s.push(kn(l.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var r=new RegExp(t.pattern);r.test(n)||s.push(kn(l.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},Ct={required:Uw,whitespace:K7,type:W7,range:j7,enum:Y7,pattern:U7},q7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"string")&&!t.required)return o();Ct.required(t,n,s,r,l,"string"),Gt(n,"string")||(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l),Ct.pattern(t,n,s,r,l),t.whitespace===!0&&Ct.whitespace(t,n,s,r,l))}o(r)},G7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},X7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(n===""&&(n=void 0),Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},Z7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},J7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),Gt(n)||Ct.type(t,n,s,r,l)}o(r)},Q7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},x7=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},eW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(n==null&&!t.required)return o();Ct.required(t,n,s,r,l,"array"),n!=null&&(Ct.type(t,n,s,r,l),Ct.range(t,n,s,r,l))}o(r)},tW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct.type(t,n,s,r,l)}o(r)},nW="enum",oW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l),n!==void 0&&Ct[nW](t,n,s,r,l)}o(r)},sW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"string")&&!t.required)return o();Ct.required(t,n,s,r,l),Gt(n,"string")||Ct.pattern(t,n,s,r,l)}o(r)},lW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n,"date")&&!t.required)return o();if(Ct.required(t,n,s,r,l),!Gt(n,"date")){var i;n instanceof Date?i=n:i=new Date(n),Ct.type(t,i,s,r,l),i&&Ct.range(t,i.getTime(),s,r,l)}}o(r)},rW=function(t,n,o,s,l){var r=[],a=Array.isArray(n)?"array":typeof n;Ct.required(t,n,s,r,l,a),o(r)},Tc=function(t,n,o,s,l){var r=t.type,a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(Gt(n,r)&&!t.required)return o();Ct.required(t,n,s,a,l,r),Gt(n,r)||Ct.type(t,n,s,a,l)}o(a)},aW=function(t,n,o,s,l){var r=[],a=t.required||!t.required&&s.hasOwnProperty(t.field);if(a){if(Gt(n)&&!t.required)return o();Ct.required(t,n,s,r,l)}o(r)},jr={string:q7,method:G7,number:X7,boolean:Z7,regexp:J7,integer:Q7,float:x7,array:eW,object:tW,enum:oW,pattern:sW,date:lW,url:Tc,hex:Tc,email:Tc,required:rW,any:aW};function Ld(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var Rd=Ld(),Oa=function(){function e(n){this.rules=null,this._messages=Rd,this.define(n)}var t=e.prototype;return t.define=function(o){var s=this;if(!o)throw new Error("Cannot configure a schema with no rules");if(typeof o!="object"||Array.isArray(o))throw new Error("Rules must be an object");this.rules={},Object.keys(o).forEach(function(l){var r=o[l];s.rules[l]=Array.isArray(r)?r:[r]})},t.messages=function(o){return o&&(this._messages=ug(Ld(),o)),this._messages},t.validate=function(o,s,l){var r=this;s===void 0&&(s={}),l===void 0&&(l=function(){});var a=o,i=s,u=l;if(typeof i=="function"&&(u=i,i={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,a),Promise.resolve(a);function c(g){var m=[],v={};function b(S){if(Array.isArray(S)){var $;m=($=m).concat.apply($,S)}else m.push(S)}for(var w=0;w");const s=we("form"),l=A(),r=A(0),a=()=>{var c;if((c=l.value)!=null&&c.firstElementChild){const d=window.getComputedStyle(l.value.firstElementChild).width;return Math.ceil(Number.parseFloat(d))}else return 0},i=(c="update")=>{ze(()=>{t.default&&e.isAutoWidth&&(c==="update"?r.value=a():c==="remove"&&n.deregisterLabelWidth(r.value))})},u=()=>i("update");return xe(()=>{u()}),_t(()=>{i("remove")}),Xn(()=>u()),pe(r,(c,d)=>{e.updateAll&&n.registerLabelWidth(c,d)}),rr(E(()=>{var c,d;return(d=(c=l.value)==null?void 0:c.firstElementChild)!=null?d:null}),u),()=>{var c,d;if(!t)return null;const{isAutoWidth:f}=e;if(f){const p=n.autoLabelWidth,h={};if(p&&p!=="auto"){const g=Math.max(0,Number.parseInt(p,10)-r.value),m=n.labelPosition==="left"?"marginRight":"marginLeft";g&&(h[m]=`${g}px`)}return Y("div",{ref:l,class:[s.be("item","label-wrap")],style:h},[(c=t.default)==null?void 0:c.call(t)])}else return Y(Le,{ref:l},[(d=t.default)==null?void 0:d.call(t)])}}});const dW=["for"],fW={name:"ElFormItem"},pW=ee(Te(ne({},fW),{props:uW,setup(e,{expose:t}){const n=e,o="ElFormItem",s=Ea(),l=Ne(Pn);l||Kt(o,"usage: ");const r=Ne(Un,void 0),a=Wt(void 0,{formItem:!1}),i=we("form-item"),u=A(""),c=K3(u,100),d=A(""),f=A();let p,h=!1;const g=E(()=>{if(l.labelPosition==="top")return{};const Z=ro(n.labelWidth||l.labelWidth||"");return Z?{width:Z}:{}}),m=E(()=>{if(l.labelPosition==="top"||l.inline)return{};if(!n.label&&!n.labelWidth&&k)return{};const Z=ro(n.labelWidth||l.labelWidth||"");return!n.label&&!s.label?{marginLeft:Z}:{}}),v=E(()=>[i.b(),i.m(a.value),i.is("error",u.value==="error"),i.is("validating",u.value==="validating"),i.is("success",u.value==="success"),i.is("required",B.value||n.required),i.is("no-asterisk",l.hideRequiredAsterisk),{[i.m("feedback")]:l.statusIcon}]),b=E(()=>en(n.inlineMessage)?n.inlineMessage:l.inlineMessage||!1),w=E(()=>[i.e("error"),{[i.em("error","inline")]:b.value}]),S=E(()=>n.prop?Qe(n.prop)?n.prop:n.prop.join("."):""),$=E(()=>n.for||S.value),k=!!r,T=E(()=>{const Z=l.model;if(!(!Z||!n.prop))return di(Z,n.prop).value}),O=E(()=>{const Z=n.rules?oa(n.rules):[],ae=l.rules;if(ae&&n.prop){const Ee=di(ae,n.prop).value;Ee&&Z.push(...oa(Ee))}return n.required!==void 0&&Z.push({required:!!n.required}),Z}),L=E(()=>O.value.length>0),V=Z=>O.value.filter(Ee=>!Ee.trigger||!Z?!0:Array.isArray(Ee.trigger)?Ee.trigger.includes(Z):Ee.trigger===Z).map(J=>{var ve=J,{trigger:Ee}=ve,Me=Wp(ve,["trigger"]);return Me}),B=E(()=>O.value.some(Z=>Z.required===!0)),H=E(()=>c.value==="error"&&n.showMessage&&l.showMessage),R=E(()=>`${n.label||""}${l.labelSuffix||""}`),z=Z=>{u.value=Z},W=Z=>{var ae,Ee;const{errors:Me,fields:J}=Z;(!Me||!J)&&console.error(Z),z("error"),d.value=Me?(Ee=(ae=Me==null?void 0:Me[0])==null?void 0:ae.message)!=null?Ee:`${n.prop} is required`:"",l.emit("validate",n.prop,!1,d.value)},P=()=>{z("success"),l.emit("validate",n.prop,!0,"")},N=async Z=>{const ae=S.value;return new Oa({[ae]:Z}).validate({[ae]:T.value},{firstFields:!0}).then(()=>(P(),!0)).catch(Me=>(W(Me),Promise.reject(Me)))},I=async(Z,ae)=>{if(h)return h=!1,!1;const Ee=et(ae);if(!L.value)return ae==null||ae(!1),!1;const Me=V(Z);return Me.length===0?(ae==null||ae(!0),!0):(z("validating"),N(Me).then(()=>(ae==null||ae(!0),!0)).catch(J=>{const{fields:ve}=J;return ae==null||ae(!1,ve),Ee?!1:Promise.reject(ve)}))},U=()=>{z(""),d.value=""},q=async()=>{const Z=l.model;if(!Z||!n.prop)return;const ae=di(Z,n.prop);_n(ae.value,p)||(h=!0),ae.value=p,await ze(),U()};pe(()=>n.error,Z=>{d.value=Z||"",z(Z?"error":"")},{immediate:!0}),pe(()=>n.validateStatus,Z=>z(Z||""));const Q=yt(Te(ne({},Ut(n)),{$el:f,size:a,validateState:u,resetField:q,clearValidate:U,validate:I}));return st(Un,Q),xe(()=>{n.prop&&(l.addField(Q),p=MI(T.value))}),_t(()=>{l.removeField(Q)}),t({size:a,validateMessage:d,validateState:u,validate:I,clearValidate:U,resetField:q}),(Z,ae)=>(C(),M("div",{ref_key:"formItemRef",ref:f,class:_(y(v))},[Y(y(cW),{"is-auto-width":y(g).width==="auto","update-all":y(l).labelWidth==="auto"},{default:j(()=>[Z.label||Z.$slots.label?(C(),M("label",{key:0,for:y($),class:_(y(i).e("label")),style:Pe(y(g))},[ie(Z.$slots,"label",{label:y(R)},()=>[at(he(y(R)),1)])],14,dW)):G("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),D("div",{class:_(y(i).e("content")),style:Pe(y(m))},[ie(Z.$slots,"default"),Y(zt,{name:`${y(i).namespace.value}-zoom-in-top`},{default:j(()=>[y(H)?ie(Z.$slots,"error",{key:0,error:d.value},()=>[D("div",{class:_(y(w))},he(d.value),3)]):G("v-if",!0)]),_:3},8,["name"])],6)],2))}}));var qw=ge(pW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form-item.vue"]]);const hW=ot(M7,{FormItem:qw}),mW=Rt(qw),vW=Be({urlList:{type:$e(Array),default:()=>Dt([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:{type:Boolean,default:!1},teleported:{type:Boolean,default:!1}}),gW={close:()=>!0,switch:e=>typeof e=="number"},bW=["src"],yW={name:"ElImageViewer"},wW=ee(Te(ne({},yW),{props:vW,emits:gW,setup(e,{emit:t}){const n=e,o={CONTAIN:{name:"contain",icon:Xr(iD)},ORIGINAL:{name:"original",icon:Xr(SL)}},s=sp()?"DOMMouseScroll":"mousewheel",{t:l}=kt(),r=we("image-viewer"),{nextZIndex:a}=jo(),i=A(),u=A([]),c=ME(),d=A(!0),f=A(n.initialIndex),p=A(o.CONTAIN),h=A({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),g=E(()=>{const{urlList:P}=n;return P.length<=1}),m=E(()=>f.value===0),v=E(()=>f.value===n.urlList.length-1),b=E(()=>n.urlList[f.value]),w=E(()=>{const{scale:P,deg:N,offsetX:I,offsetY:U,enableTransition:q}=h.value;let Q=I/P,Z=U/P;switch(N%360){case 90:case-270:[Q,Z]=[Z,-Q];break;case 180:case-180:[Q,Z]=[-Q,-Z];break;case 270:case-90:[Q,Z]=[-Z,Q];break}const ae={transform:`scale(${P}) rotate(${N}deg) translate(${Q}px, ${Z}px)`,transition:q?"transform .3s":""};return p.value.name===o.CONTAIN.name&&(ae.maxWidth=ae.maxHeight="100%"),ae}),S=E(()=>ht(n.zIndex)?n.zIndex:a());function $(){T(),t("close")}function k(){const P=Us(I=>{switch(I.code){case Ie.esc:$();break;case Ie.space:H();break;case Ie.left:R();break;case Ie.up:W("zoomIn");break;case Ie.right:z();break;case Ie.down:W("zoomOut");break}}),N=Us(I=>{(I.wheelDelta?I.wheelDelta:-I.detail)>0?W("zoomIn",{zoomRate:1.2,enableTransition:!1}):W("zoomOut",{zoomRate:1.2,enableTransition:!1})});c.run(()=>{Ht(document,"keydown",P),Ht(document,s,N)})}function T(){c.stop()}function O(){d.value=!1}function L(P){d.value=!1,P.target.alt=l("el.image.error")}function V(P){if(d.value||P.button!==0||!i.value)return;h.value.enableTransition=!1;const{offsetX:N,offsetY:I}=h.value,U=P.pageX,q=P.pageY,Q=Us(ae=>{h.value=Te(ne({},h.value),{offsetX:N+ae.pageX-U,offsetY:I+ae.pageY-q})}),Z=Ht(document,"mousemove",Q);Ht(document,"mouseup",()=>{Z()}),P.preventDefault()}function B(){h.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function H(){if(d.value)return;const P=Object.keys(o),N=Object.values(o),I=p.value.name,q=(N.findIndex(Q=>Q.name===I)+1)%P.length;p.value=o[P[q]],B()}function R(){if(m.value&&!n.infinite)return;const P=n.urlList.length;f.value=(f.value-1+P)%P}function z(){if(v.value&&!n.infinite)return;const P=n.urlList.length;f.value=(f.value+1)%P}function W(P,N={}){if(d.value)return;const{zoomRate:I,rotateDeg:U,enableTransition:q}=ne({zoomRate:1.4,rotateDeg:90,enableTransition:!0},N);switch(P){case"zoomOut":h.value.scale>.2&&(h.value.scale=Number.parseFloat((h.value.scale/I).toFixed(3)));break;case"zoomIn":h.value.scale<7&&(h.value.scale=Number.parseFloat((h.value.scale*I).toFixed(3)));break;case"clockwise":h.value.deg+=U;break;case"anticlockwise":h.value.deg-=U;break}h.value.enableTransition=q}return pe(b,()=>{ze(()=>{const P=u.value[0];P!=null&&P.complete||(d.value=!0)})}),pe(f,P=>{B(),t("switch",P)}),xe(()=>{var P,N;k(),(N=(P=i.value)==null?void 0:P.focus)==null||N.call(P)}),(P,N)=>(C(),x(ka,{to:"body",disabled:!P.teleported},[Y(zt,{name:"viewer-fade",appear:""},{default:j(()=>[D("div",{ref_key:"wrapper",ref:i,tabindex:-1,class:_(y(r).e("wrapper")),style:Pe({zIndex:y(S)})},[D("div",{class:_(y(r).e("mask")),onClick:N[0]||(N[0]=Ke(I=>P.hideOnClickModal&&$(),["self"]))},null,2),G(" CLOSE "),D("span",{class:_([y(r).e("btn"),y(r).e("close")]),onClick:$},[Y(y(je),null,{default:j(()=>[Y(y(Yn))]),_:1})],2),G(" ARROW "),y(g)?G("v-if",!0):(C(),M(Le,{key:0},[D("span",{class:_([y(r).e("btn"),y(r).e("prev"),y(r).is("disabled",!P.infinite&&y(m))]),onClick:R},[Y(y(je),null,{default:j(()=>[Y(y(fl))]),_:1})],2),D("span",{class:_([y(r).e("btn"),y(r).e("next"),y(r).is("disabled",!P.infinite&&y(v))]),onClick:z},[Y(y(je),null,{default:j(()=>[Y(y(Zn))]),_:1})],2)],64)),G(" ACTIONS "),D("div",{class:_([y(r).e("btn"),y(r).e("actions")])},[D("div",{class:_(y(r).e("actions__inner"))},[Y(y(je),{onClick:N[1]||(N[1]=I=>W("zoomOut"))},{default:j(()=>[Y(y(h8))]),_:1}),Y(y(je),{onClick:N[2]||(N[2]=I=>W("zoomIn"))},{default:j(()=>[Y(y(F0))]),_:1}),D("i",{class:_(y(r).e("actions__divider"))},null,2),Y(y(je),{onClick:H},{default:j(()=>[(C(),x(ft(p.value.icon)))]),_:1}),D("i",{class:_(y(r).e("actions__divider"))},null,2),Y(y(je),{onClick:N[3]||(N[3]=I=>W("anticlockwise"))},{default:j(()=>[Y(y(fL))]),_:1}),Y(y(je),{onClick:N[4]||(N[4]=I=>W("clockwise"))},{default:j(()=>[Y(y(bL))]),_:1})],2)],2),G(" CANVAS "),D("div",{class:_(y(r).e("canvas"))},[(C(!0),M(Le,null,it(P.urlList,(I,U)=>Ge((C(),M("img",{ref_for:!0,ref:q=>u.value[U]=q,key:I,src:I,style:Pe(y(w)),class:_(y(r).e("img")),onLoad:O,onError:L,onMousedown:V},null,46,bW)),[[pt,U===f.value]])),128))],2),ie(P.$slots,"default")],6)]),_:3})],8,["disabled"]))}}));var CW=ge(wW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue"]]);const Gw=ot(CW),$W=Be({appendToBody:{type:Boolean,default:void 0},hideOnClickModal:{type:Boolean,default:!1},src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},lazy:{type:Boolean,default:!1},scrollContainer:{type:$e([String,Object])},previewSrcList:{type:$e(Array),default:()=>Dt([])},previewTeleported:{type:Boolean,default:!1},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0}}),kW={error:e=>e instanceof Event,switch:e=>ht(e),close:()=>!0},SW=["src"],EW={key:0},_W={name:"ElImage"},TW=ee(Te(ne({},_W),{props:$W,emits:kW,setup(e,{emit:t}){const n=e;let o="";Na({scope:"el-image",from:"append-to-body",replacement:"preview-teleported",version:"2.2.0",ref:"https://element-plus.org/en-US/component/image.html#image-attributess"},E(()=>en(n.appendToBody)));const{t:s}=kt(),l=we("image"),r=lp(),a=A(!1),i=A(!0),u=A(0),c=A(0),d=A(!1),f=A(),p=A();let h,g;const m=E(()=>r.value.style),v=E(()=>{const{fit:P}=n;return ct&&P?{objectFit:P}:{}}),b=E(()=>{const{previewSrcList:P}=n;return Array.isArray(P)&&P.length>0}),w=E(()=>n.appendToBody||n.previewTeleported),S=E(()=>{const{previewSrcList:P,initialIndex:N}=n;let I=N;return N>P.length-1&&(I=0),I}),$=()=>{if(!ct)return;i.value=!0,a.value=!1;const P=new Image,N=n.src;P.addEventListener("load",I=>{N===n.src&&k(I,P)}),P.addEventListener("error",I=>{N===n.src&&T(I)}),Object.entries(r.value).forEach(([I,U])=>{I.toLowerCase()!=="onload"&&P.setAttribute(I,U)}),P.src=N};function k(P,N){u.value=N.width,c.value=N.height,i.value=!1,a.value=!1}function T(P){i.value=!1,a.value=!0,t("error",P)}function O(){J3(f.value,p.value)&&($(),B())}const L=I0(O,200);async function V(){var P;if(!ct)return;await ze();const{scrollContainer:N}=n;ol(N)?p.value=N:Qe(N)&&N!==""?p.value=(P=document.querySelector(N))!=null?P:void 0:f.value&&(p.value=ep(f.value)),p.value&&(h=Ht(p,"scroll",L),setTimeout(()=>O(),100))}function B(){!ct||!p.value||!L||(h(),p.value=void 0)}function H(P){if(!!P.ctrlKey){if(P.deltaY<0)return P.preventDefault(),!1;if(P.deltaY>0)return P.preventDefault(),!1}}function R(){!b.value||(g=Ht("wheel",H,{passive:!1}),o=document.body.style.overflow,document.body.style.overflow="hidden",d.value=!0)}function z(){g==null||g(),document.body.style.overflow=o,d.value=!1,t("close")}function W(P){t("switch",P)}return pe(()=>n.src,()=>{n.lazy?(i.value=!0,a.value=!1,B(),V()):$()}),xe(()=>{n.lazy?V():$()}),(P,N)=>(C(),M("div",{ref_key:"container",ref:f,class:_([y(l).b(),P.$attrs.class]),style:Pe(y(m))},[i.value?ie(P.$slots,"placeholder",{key:0},()=>[D("div",{class:_(y(l).e("placeholder"))},null,2)]):a.value?ie(P.$slots,"error",{key:1},()=>[D("div",{class:_(y(l).e("error"))},he(y(s)("el.image.error")),3)]):(C(),M("img",Et({key:2},y(r),{src:P.src,style:y(v),class:[y(l).e("inner"),y(b)?y(l).e("preview"):""],onClick:R}),null,16,SW)),y(b)?(C(),M(Le,{key:3},[d.value?(C(),x(y(Gw),{key:0,"z-index":P.zIndex,"initial-index":y(S),infinite:P.infinite,"url-list":P.previewSrcList,"hide-on-click-modal":P.hideOnClickModal,teleported:y(w),onClose:z,onSwitch:W},{default:j(()=>[P.$slots.viewer?(C(),M("div",EW,[ie(P.$slots,"viewer")])):G("v-if",!0)]),_:3},8,["z-index","initial-index","infinite","url-list","hide-on-click-modal","teleported"])):G("v-if",!0)],2112)):G("v-if",!0)],6))}}));var AW=ge(TW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image/src/image.vue"]]);const NW=ot(AW),MW=Be({step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:{type:Number},disabled:{type:Boolean,default:!1},size:{type:String,values:Eo},controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},name:String,label:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)}}),OW={change:(e,t)=>e!==t,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,input:e=>ht(e),"update:modelValue":e=>ht(e)||e===void 0},IW=ee({name:"ElInputNumber",components:{ElInput:Jn,ElIcon:je,ArrowUp:Ta,ArrowDown:dl,Plus:V0,Minus:OD},directives:{RepeatClick:z1},props:MW,emits:OW,setup(e,{emit:t}){const n=A(),o=yt({currentValue:e.modelValue,userInput:null}),{formItem:s}=cr(),l=we("input-number"),r=E(()=>g(e.modelValue,-1)g(e.modelValue)>e.max),i=E(()=>{const V=h(e.step);return Cn(e.precision)?Math.max(h(e.modelValue),V):(V>e.precision,e.precision)}),u=E(()=>e.controls&&e.controlsPosition==="right"),c=Wt(),d=pl(),f=E(()=>{if(o.userInput!==null)return o.userInput;let V=o.currentValue;if(ht(V)){if(Number.isNaN(V))return"";Cn(e.precision)||(V=V.toFixed(e.precision))}return V}),p=(V,B)=>(Cn(B)&&(B=i.value),Number.parseFloat(`${Math.round(V*10**B)/10**B}`)),h=V=>{if(Cn(V))return 0;const B=V.toString(),H=B.indexOf(".");let R=0;return H!==-1&&(R=B.length-H-1),R},g=(V,B=1)=>ht(V)?(V=ht(V)?V:Number.NaN,p(V+e.step*B)):o.currentValue,m=()=>{if(d.value||a.value)return;const V=e.modelValue||0,B=g(V);w(B)},v=()=>{if(d.value||r.value)return;const V=e.modelValue||0,B=g(V,-1);w(B)},b=(V,B)=>{const{max:H,min:R,step:z,precision:W,stepStrictly:P}=e;let N=Number(V);return V===null&&(N=Number.NaN),Number.isNaN(N)||(P&&(N=Math.round(N/z)*z),Cn(W)||(N=p(N,W)),(N>H||NH?H:R,B&&t("update:modelValue",N))),N},w=V=>{var B;const H=o.currentValue;let R=b(V);H!==R&&(Number.isNaN(R)&&(R=void 0),o.userInput=null,t("update:modelValue",R),t("input",R),t("change",R,H),(B=s==null?void 0:s.validate)==null||B.call(s,"change").catch(z=>void 0),o.currentValue=R)},S=V=>o.userInput=V,$=V=>{const B=V!==""?Number(V):"";(ht(B)&&!Number.isNaN(B)||V==="")&&w(B),o.userInput=null},k=()=>{var V,B;(B=(V=n.value)==null?void 0:V.focus)==null||B.call(V)},T=()=>{var V,B;(B=(V=n.value)==null?void 0:V.blur)==null||B.call(V)},O=V=>{t("focus",V)},L=V=>{var B;t("blur",V),(B=s==null?void 0:s.validate)==null||B.call(s,"blur").catch(H=>void 0)};return pe(()=>e.modelValue,V=>{const B=b(V,!0);o.currentValue=B,o.userInput=null},{immediate:!0}),xe(()=>{var V;const B=(V=n.value)==null?void 0:V.input;if(B.setAttribute("role","spinbutton"),B.setAttribute("aria-valuemax",String(e.max)),B.setAttribute("aria-valuemin",String(e.min)),B.setAttribute("aria-valuenow",String(o.currentValue)),B.setAttribute("aria-disabled",String(d.value)),!ht(e.modelValue)){let H=Number(e.modelValue);Number.isNaN(H)&&(H=void 0),t("update:modelValue",H)}}),Xn(()=>{var V;const B=(V=n.value)==null?void 0:V.input;B==null||B.setAttribute("aria-valuenow",o.currentValue)}),{input:n,displayValue:f,handleInput:S,handleInputChange:$,controlsAtRight:u,decrease:v,increase:m,inputNumberSize:c,inputNumberDisabled:d,maxDisabled:a,minDisabled:r,focus:k,blur:T,handleFocus:O,handleBlur:L,ns:l}}});function PW(e,t,n,o,s,l){const r=le("arrow-down"),a=le("minus"),i=le("el-icon"),u=le("arrow-up"),c=le("plus"),d=le("el-input"),f=Mn("repeat-click");return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.inputNumberSize),e.ns.is("disabled",e.inputNumberDisabled),e.ns.is("without-controls",!e.controls),e.ns.is("controls-right",e.controlsAtRight)]),onDragstart:t[2]||(t[2]=Ke(()=>{},["prevent"]))},[e.controls?Ge((C(),M("span",{key:0,role:"button",class:_([e.ns.e("decrease"),e.ns.is("disabled",e.minDisabled)]),onKeydown:t[0]||(t[0]=lt((...p)=>e.decrease&&e.decrease(...p),["enter"]))},[Y(i,null,{default:j(()=>[e.controlsAtRight?(C(),x(r,{key:0})):(C(),x(a,{key:1}))]),_:1})],34)),[[f,e.decrease]]):G("v-if",!0),e.controls?Ge((C(),M("span",{key:1,role:"button",class:_([e.ns.e("increase"),e.ns.is("disabled",e.maxDisabled)]),onKeydown:t[1]||(t[1]=lt((...p)=>e.increase&&e.increase(...p),["enter"]))},[Y(i,null,{default:j(()=>[e.controlsAtRight?(C(),x(u,{key:0})):(C(),x(c,{key:1}))]),_:1})],34)),[[f,e.increase]]):G("v-if",!0),Y(d,{ref:"input",type:"number",step:e.step,"model-value":e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label,"validate-event":!1,onKeydown:[lt(Ke(e.increase,["prevent"]),["up"]),lt(Ke(e.decrease,["prevent"]),["down"])],onBlur:e.handleBlur,onFocus:e.handleFocus,onInput:e.handleInput,onChange:e.handleInputChange},null,8,["step","model-value","placeholder","disabled","size","max","min","name","label","onKeydown","onBlur","onFocus","onInput","onChange"])],34)}var DW=ge(IW,[["render",PW],["__file","/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);const Xw=ot(DW),LW=Be({type:{type:String,values:["primary","success","warning","info","danger","default"],default:"default"},underline:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},href:{type:String,default:""},icon:{type:nn,default:""}}),RW={click:e=>e instanceof MouseEvent},VW=["href"],BW={name:"ElLink"},FW=ee(Te(ne({},BW),{props:LW,emits:RW,setup(e,{emit:t}){const n=e,o=we("link");function s(l){n.disabled||t("click",l)}return(l,r)=>(C(),M("a",{class:_([y(o).b(),y(o).m(l.type),y(o).is("disabled",l.disabled),y(o).is("underline",l.underline&&!l.disabled)]),href:l.disabled||!l.href?void 0:l.href,onClick:s},[l.icon?(C(),x(y(je),{key:0},{default:j(()=>[(C(),x(ft(l.icon)))]),_:1})):G("v-if",!0),l.$slots.default?(C(),M("span",{key:1,class:_(y(o).e("inner"))},[ie(l.$slots,"default")],2)):G("v-if",!0),l.$slots.icon?ie(l.$slots,"icon",{key:2}):G("v-if",!0)],10,VW))}}));var HW=ge(FW,[["__file","/home/runner/work/element-plus/element-plus/packages/components/link/src/link.vue"]]);const zW=ot(HW);class KW{constructor(t,n){this.parent=t,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",o=>{let s=!1;switch(o.code){case Ie.down:{this.gotoSubIndex(this.subIndex+1),s=!0;break}case Ie.up:{this.gotoSubIndex(this.subIndex-1),s=!0;break}case Ie.tab:{ui(t,"mouseleave");break}case Ie.enter:case Ie.space:{s=!0,o.currentTarget.click();break}}return s&&(o.preventDefault(),o.stopPropagation()),!1})})}}class WW{constructor(t){this.domNode=t,this.submenu=null,this.submenu=null,this.init()}init(){this.domNode.setAttribute("tabindex","0");const t=this.domNode.querySelector(".el-menu");t&&(this.submenu=new KW(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{let n=!1;switch(t.code){case Ie.down:{ui(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case Ie.up:{ui(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case Ie.tab:{ui(t.currentTarget,"mouseleave");break}case Ie.enter:case Ie.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}}class jW{constructor(t){this.domNode=t,this.init()}init(){const t=this.domNode.childNodes;Array.from(t).forEach(n=>{n.nodeType===1&&new WW(n)})}}const YW=ee({name:"ElMenuCollapseTransition",setup(){return{listeners:{onBeforeEnter:t=>t.style.opacity="0.2",onEnter(t,n){wo(t,"el-opacity-transition"),t.style.opacity="1",n()},onAfterEnter(t){fn(t,"el-opacity-transition"),t.style.opacity=""},onBeforeLeave(t){t.dataset||(t.dataset={}),oo(t,"el-menu--collapse")?(fn(t,"el-menu--collapse"),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),wo(t,"el-menu--collapse")):(wo(t,"el-menu--collapse"),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),fn(t,"el-menu--collapse")),t.style.width=`${t.scrollWidth}px`,t.style.overflow="hidden"},onLeave(t){wo(t,"horizontal-collapse-transition"),t.style.width=`${t.dataset.scrollWidth}px`}}}}});function UW(e,t,n,o,s,l){return C(),x(zt,Et({mode:"out-in"},e.listeners),{default:j(()=>[ie(e.$slots,"default")]),_:3},16)}var qW=ge(YW,[["render",UW],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);function Zw(e,t){const n=Ne("rootMenu");n||Kt("useMenu","can not inject root menu");const o=E(()=>{let r=e.parent;const a=[t.value];for(;r.type.name!=="ElMenu";)r.props.index&&a.unshift(r.props.index),r=r.parent;return a}),s=E(()=>{let r=e.parent;for(;r&&!["ElMenu","ElSubMenu"].includes(r.type.name);)r=r.parent;return r}),l=E(()=>{let r=e.parent;if(n.props.mode!=="vertical")return{};let a=20;if(n.props.collapse)a=20;else for(;r&&r.type.name!=="ElMenu";)r.type.name==="ElSubMenu"&&(a+=20),r=r.parent;return{paddingLeft:`${a}px`}});return{parentMenu:s,paddingStyle:l,indexPath:o}}function GW(e){return E(()=>{const n=e.backgroundColor;return n?new P1(n).shade(20).toString():""})}const Jw=e=>E(()=>({"--el-menu-text-color":e.textColor||"","--el-menu-hover-text-color":e.textColor||"","--el-menu-bg-color":e.backgroundColor||"","--el-menu-hover-bg-color":GW(e).value||"","--el-menu-active-color":e.activeTextColor||""})),XW=Be({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),Ac="ElSubMenu";var Sp=ee({name:Ac,props:XW,setup(e,{slots:t,expose:n}){const o=nt(),{paddingStyle:s,indexPath:l,parentMenu:r}=Zw(o,E(()=>e.index)),a=Ne("rootMenu");a||Kt(Ac,"can not inject root menu");const i=Ne(`subMenu:${r.value.uid}`);i||Kt(Ac,"can not inject sub menu");const u=A({}),c=A({});let d;const f=A(!1),p=A(),h=A(null),g=E(()=>V.value==="horizontal"&&v.value?"bottom-start":"right-start"),m=E(()=>V.value==="horizontal"&&v.value||V.value==="vertical"&&!a.props.collapse?dl:Zn),v=E(()=>{let I=!0,U=o.parent;for(;U&&U.type.name!=="ElMenu";)if(["ElSubMenu","ElMenuItemGroup"].includes(U.type.name)){I=!1;break}else U=U.parent;return I}),b=E(()=>e.popperAppendToBody===void 0?v.value:Boolean(e.popperAppendToBody)),w=E(()=>a.props.collapse?"el-zoom-in-left":"el-zoom-in-top"),S=E(()=>V.value==="horizontal"&&v.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),$=E(()=>a.openedMenus.includes(e.index)),k=E(()=>{let I=!1;return Object.values(u.value).forEach(U=>{U.active&&(I=!0)}),Object.values(c.value).forEach(U=>{U.active&&(I=!0)}),I}),T=E(()=>a.props.backgroundColor||""),O=E(()=>a.props.activeTextColor||""),L=E(()=>a.props.textColor||""),V=E(()=>a.props.mode),B=yt({index:e.index,indexPath:l,active:k}),H=E(()=>V.value!=="horizontal"?{color:L.value}:{borderBottomColor:k.value?a.props.activeTextColor?O.value:"":"transparent",color:k.value?O.value:L.value}),R=()=>{var I,U,q;return(q=(U=(I=h.value)==null?void 0:I.popperRef)==null?void 0:U.popperInstanceRef)==null?void 0:q.destroy()},z=I=>{I||R()},W=()=>{a.props.menuTrigger==="hover"&&a.props.mode==="horizontal"||a.props.collapse&&a.props.mode==="vertical"||e.disabled||a.handleSubMenuClick({index:e.index,indexPath:l.value,active:k.value})},P=(I,U=e.showTimeout)=>{var q;I.type==="focus"&&!I.relatedTarget||a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||e.disabled||(i.mouseInChild.value=!0,d==null||d(),{stop:d}=nl(()=>{a.openMenu(e.index,l.value)},U),b.value&&((q=r.value.vnode.el)==null||q.dispatchEvent(new MouseEvent("mouseenter"))))},N=(I=!1)=>{var U,q;a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||(d==null||d(),i.mouseInChild.value=!1,{stop:d}=nl(()=>!f.value&&a.closeMenu(e.index,l.value),e.hideTimeout),b.value&&I&&((U=o.parent)==null?void 0:U.type.name)==="ElSubMenu"&&((q=i.handleMouseleave)==null||q.call(i,!0)))};pe(()=>a.props.collapse,I=>z(Boolean(I)));{const I=q=>{c.value[q.index]=q},U=q=>{delete c.value[q.index]};st(`subMenu:${o.uid}`,{addSubMenu:I,removeSubMenu:U,handleMouseleave:N,mouseInChild:f})}return n({opened:$}),xe(()=>{a.addSubMenu(B),i.addSubMenu(B)}),_t(()=>{i.removeSubMenu(B),a.removeSubMenu(B)}),()=>{var I;const U=[(I=t.title)==null?void 0:I.call(t),De(je,{class:["el-sub-menu__icon-arrow"]},{default:()=>De(m.value)})],q=Jw(a.props),Q=a.isMenuPopup?De(mn,{ref:h,visible:$.value,effect:"light",pure:!0,offset:e.popperOffset,showArrow:!1,persistent:!0,popperClass:e.popperClass,placement:g.value,teleported:b.value,fallbackPlacements:S.value,transition:w.value,gpuAcceleration:!1},{content:()=>{var Z;return De("div",{class:[`el-menu--${V.value}`,e.popperClass],onMouseenter:ae=>P(ae,100),onMouseleave:()=>N(!0),onFocus:ae=>P(ae,100)},[De("ul",{class:["el-menu el-menu--popup",`el-menu--popup-${g.value}`],style:q.value},[(Z=t.default)==null?void 0:Z.call(t)])])},default:()=>De("div",{class:"el-sub-menu__title",style:[s.value,H.value,{backgroundColor:T.value}],onClick:W},U)}):De(Le,{},[De("div",{class:"el-sub-menu__title",style:[s.value,H.value,{backgroundColor:T.value}],ref:p,onClick:W},U),De(ju,{},{default:()=>{var Z;return Ge(De("ul",{role:"menu",class:"el-menu el-menu--inline",style:q.value},[(Z=t.default)==null?void 0:Z.call(t)]),[[pt,$.value]])}})]);return De("li",{class:["el-sub-menu",{"is-active":k.value,"is-opened":$.value,"is-disabled":e.disabled}],role:"menuitem",ariaHaspopup:!0,ariaExpanded:$.value,onMouseenter:P,onMouseleave:()=>N(!0),onFocus:P},[Q])}}});const ZW=Be({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:$e(Array),default:()=>Dt([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),Nc=e=>Array.isArray(e)&&e.every(t=>Qe(t)),JW={close:(e,t)=>Qe(e)&&Nc(t),open:(e,t)=>Qe(e)&&Nc(t),select:(e,t,n,o)=>Qe(e)&&Nc(t)&&dt(n)&&(o===void 0||o instanceof Promise)};var QW=ee({name:"ElMenu",props:ZW,emits:JW,setup(e,{emit:t,slots:n,expose:o}){const s=nt(),l=s.appContext.config.globalProperties.$router,r=A(),a=A(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),i=A(e.defaultActive),u=A({}),c=A({}),d=E(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),f=()=>{const $=i.value&&u.value[i.value];if(!$||e.mode==="horizontal"||e.collapse)return;$.indexPath.forEach(T=>{const O=c.value[T];O&&p(T,O.indexPath)})},p=($,k)=>{a.value.includes($)||(e.uniqueOpened&&(a.value=a.value.filter(T=>k.includes(T))),a.value.push($),t("open",$,k))},h=($,k)=>{const T=a.value.indexOf($);T!==-1&&a.value.splice(T,1),t("close",$,k)},g=({index:$,indexPath:k})=>{a.value.includes($)?h($,k):p($,k)},m=$=>{(e.mode==="horizontal"||e.collapse)&&(a.value=[]);const{index:k,indexPath:T}=$;if(!(k===void 0||T===void 0))if(e.router&&l){const O=$.route||k,L=l.push(O).then(V=>(V||(i.value=k),V));t("select",k,T,{index:k,indexPath:T,route:O},L)}else i.value=k,t("select",k,T,{index:k,indexPath:T})},v=$=>{const k=u.value,T=k[$]||i.value&&k[i.value]||k[e.defaultActive];T?(i.value=T.index,f()):i.value=$},b=()=>{ze(()=>s.proxy.$forceUpdate())};pe(()=>e.defaultActive,$=>{u.value[$]||(i.value=""),v($)}),pe(u.value,()=>f()),pe(()=>e.collapse,$=>{$&&(a.value=[])});{const $=L=>{c.value[L.index]=L},k=L=>{delete c.value[L.index]};st("rootMenu",yt({props:e,openedMenus:a,items:u,subMenus:c,activeIndex:i,isMenuPopup:d,addMenuItem:L=>{u.value[L.index]=L},removeMenuItem:L=>{delete u.value[L.index]},addSubMenu:$,removeSubMenu:k,openMenu:p,closeMenu:h,handleMenuItemClick:m,handleSubMenuClick:g})),st(`subMenu:${s.uid}`,{addSubMenu:$,removeSubMenu:k,mouseInChild:A(!1)})}xe(()=>{f(),e.mode==="horizontal"&&new jW(s.vnode.el)}),o({open:k=>{const{indexPath:T}=c.value[k];T.forEach(O=>p(O,T))},close:h,handleResize:b});const w=$=>{const k=Array.isArray($)?$:[$],T=[];return k.forEach(O=>{Array.isArray(O.children)?T.push(...w(O.children)):T.push(O)}),T},S=$=>e.mode==="horizontal"?Ge($,[[sB,b]]):$;return()=>{var $,k,T,O;let L=(k=($=n.default)==null?void 0:$.call(n))!=null?k:[];const V=[];if(e.mode==="horizontal"&&r.value){const z=Array.from((O=(T=r.value)==null?void 0:T.childNodes)!=null?O:[]).filter(Ee=>Ee.nodeName!=="#text"||Ee.nodeValue),W=w(L),P=64,N=Number.parseInt(getComputedStyle(r.value).paddingLeft,10),I=Number.parseInt(getComputedStyle(r.value).paddingRight,10),U=r.value.clientWidth-N-I;let q=0,Q=0;z.forEach((Ee,Me)=>{q+=Ee.offsetWidth||0,q<=U-P&&(Q=Me+1)});const Z=W.slice(0,Q),ae=W.slice(Q);(ae==null?void 0:ae.length)&&e.ellipsis&&(L=Z,V.push(De(Sp,{index:"sub-menu-more",class:"el-sub-menu__hide-arrow"},{title:()=>De(je,{class:["el-sub-menu__icon-more"]},{default:()=>De(WD)}),default:()=>ae})))}const B=Jw(e),R=(z=>e.ellipsis?S(z):z)(De("ul",{key:String(e.collapse),role:"menubar",ref:r,style:B.value,class:{"el-menu":!0,"el-menu--horizontal":e.mode==="horizontal","el-menu--collapse":e.collapse}},[...L,...V]));return e.collapseTransition&&e.mode==="vertical"?De(qW,()=>R):R}}});const xW=Be({index:{type:$e([String,null]),default:null},route:{type:$e([String,Object])},disabled:Boolean}),ej={click:e=>Qe(e.index)&&Array.isArray(e.indexPath)},Mc="ElMenuItem",tj=ee({name:Mc,components:{ElTooltip:mn},props:xW,emits:ej,setup(e,{emit:t}){const n=nt(),o=Ne("rootMenu");o||Kt(Mc,"can not inject root menu");const{parentMenu:s,paddingStyle:l,indexPath:r}=Zw(n,Yt(e,"index")),a=Ne(`subMenu:${s.value.uid}`);a||Kt(Mc,"can not inject sub menu");const i=E(()=>e.index===o.activeIndex),u=yt({index:e.index,indexPath:r,active:i}),c=()=>{e.disabled||(o.handleMenuItemClick({index:e.index,indexPath:r.value,route:e.route}),t("click",u))};return xe(()=>{a.addSubMenu(u),o.addMenuItem(u)}),_t(()=>{a.removeSubMenu(u),o.removeMenuItem(u)}),{Effect:CR,parentMenu:s,rootMenu:o,paddingStyle:l,active:i,handleClick:c}}}),nj={class:"el-menu-tooltip__trigger"};function oj(e,t,n,o,s,l){const r=le("el-tooltip");return C(),M("li",{class:_(["el-menu-item",{"is-active":e.active,"is-disabled":e.disabled}]),role:"menuitem",tabindex:"-1",style:Pe(e.paddingStyle),onClick:t[0]||(t[0]=(...a)=>e.handleClick&&e.handleClick(...a))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(C(),x(r,{key:0,effect:e.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:j(()=>[ie(e.$slots,"title")]),default:j(()=>[D("div",nj,[ie(e.$slots,"default")])]),_:3},8,["effect"])):(C(),M(Le,{key:1},[ie(e.$slots,"default"),ie(e.$slots,"title")],64))],6)}var Qw=ge(tj,[["render",oj],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);const sj={title:String},dg="ElMenuItemGroup",lj=ee({name:dg,props:sj,setup(){const e=nt(),t=Ne("rootMenu");return t||Kt(dg,"can not inject root menu"),{levelPadding:E(()=>{if(t.props.collapse)return 20;let o=20,s=e.parent;for(;s&&s.type.name!=="ElMenu";)s.type.name==="ElSubMenu"&&(o+=20),s=s.parent;return o})}}}),rj={class:"el-menu-item-group"};function aj(e,t,n,o,s,l){return C(),M("li",rj,[D("div",{class:"el-menu-item-group__title",style:Pe({paddingLeft:`${e.levelPadding}px`})},[e.$slots.title?ie(e.$slots,"title",{key:1}):(C(),M(Le,{key:0},[at(he(e.title),1)],2112))],4),D("ul",null,[ie(e.$slots,"default")])])}var xw=ge(lj,[["render",aj],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);const ij=ot(QW,{MenuItem:Qw,MenuItemGroup:xw,SubMenu:Sp}),uj=Rt(Qw),cj=Rt(xw);Rt(Sp);const dj=Be({icon:{type:nn,default:()=>O4},title:String,content:{type:String,default:""}}),fj={back:()=>!0},pj={name:"ElPageHeader"},hj=ee(Te(ne({},pj),{props:dj,emits:fj,setup(e,{emit:t}){const{t:n}=kt(),o=we("page-header");function s(){t("back")}return(l,r)=>(C(),M("div",{class:_(y(o).b())},[D("div",{class:_(y(o).e("left")),onClick:s},[l.icon||l.$slots.icon?(C(),M("div",{key:0,class:_(y(o).e("icon"))},[ie(l.$slots,"icon",{},()=>[l.icon?(C(),x(y(je),{key:0},{default:j(()=>[(C(),x(ft(l.icon)))]),_:1})):G("v-if",!0)])],2)):G("v-if",!0),D("div",{class:_(y(o).e("title"))},[ie(l.$slots,"title",{},()=>[at(he(l.title||y(n)("el.pageHeader.title")),1)])],2)],2),D("div",{class:_(y(o).e("content"))},[ie(l.$slots,"content",{},()=>[at(he(l.content),1)])],2)],2))}}));var mj=ge(hj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/page-header/src/page-header.vue"]]);const vj=ot(mj),gj={disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String,default:""}},bj=ee({name:"ElPaginationPrev",components:{ElIcon:je,ArrowLeft:fl},props:gj,emits:["click"],setup(e){return{internalDisabled:E(()=>e.disabled||e.currentPage<=1)}}}),yj=["disabled","aria-disabled"],wj={key:0};function Cj(e,t,n,o,s,l){const r=le("arrow-left"),a=le("el-icon");return C(),M("button",{type:"button",class:"btn-prev",disabled:e.internalDisabled,"aria-disabled":e.internalDisabled,onClick:t[0]||(t[0]=i=>e.$emit("click",i))},[e.prevText?(C(),M("span",wj,he(e.prevText),1)):(C(),x(a,{key:1},{default:j(()=>[Y(r)]),_:1}))],8,yj)}var $j=ge(bj,[["render",Cj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/prev.vue"]]);const kj={disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String,default:""}},Sj=ee({name:"ElPaginationNext",components:{ElIcon:je,ArrowRight:Zn},props:kj,emits:["click"],setup(e){return{internalDisabled:E(()=>e.disabled||e.currentPage===e.pageCount||e.pageCount===0)}}}),Ej=["disabled","aria-disabled"],_j={key:0};function Tj(e,t,n,o,s,l){const r=le("arrow-right"),a=le("el-icon");return C(),M("button",{type:"button",class:"btn-next",disabled:e.internalDisabled,"aria-disabled":e.internalDisabled,onClick:t[0]||(t[0]=i=>e.$emit("click",i))},[e.nextText?(C(),M("span",_j,he(e.nextText),1)):(C(),x(a,{key:1},{default:j(()=>[Y(r)]),_:1}))],8,Ej)}var Aj=ge(Sj,[["render",Tj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/next.vue"]]);const eC="ElSelectGroup",Yu="ElSelect";function Nj(e,t){const n=Ne(Yu),o=Ne(eC,{disabled:!1}),s=E(()=>Object.prototype.toString.call(e.value).toLowerCase()==="[object object]"),l=E(()=>n.props.multiple?d(n.props.modelValue,e.value):f(e.value,n.props.modelValue)),r=E(()=>{if(n.props.multiple){const g=n.props.modelValue||[];return!l.value&&g.length>=n.props.multipleLimit&&n.props.multipleLimit>0}else return!1}),a=E(()=>e.label||(s.value?"":e.value)),i=E(()=>e.value||e.label||""),u=E(()=>e.disabled||t.groupDisabled||r.value),c=nt(),d=(g=[],m)=>{if(s.value){const v=n.props.valueKey;return g&&g.some(b=>It(b,v)===It(m,v))}else return g&&g.includes(m)},f=(g,m)=>{if(s.value){const{valueKey:v}=n.props;return It(g,v)===It(m,v)}else return g===m},p=()=>{!e.disabled&&!o.disabled&&(n.hoverIndex=n.optionsArray.indexOf(c.proxy))};pe(()=>a.value,()=>{!e.created&&!n.props.remote&&n.setSelected()}),pe(()=>e.value,(g,m)=>{const{remote:v,valueKey:b}=n.props;if(!e.created&&!v){if(b&&typeof g=="object"&&typeof m=="object"&&g[b]===m[b])return;n.setSelected()}}),pe(()=>o.disabled,()=>{t.groupDisabled=o.disabled},{immediate:!0});const{queryChange:h}=$t(n);return pe(h,g=>{const{query:m}=y(g),v=new RegExp(t4(m),"i");t.visible=v.test(a.value)||e.created,t.visible||n.filteredOptionsCount--}),{select:n,currentLabel:a,currentValue:i,itemSelected:l,isDisabled:u,hoverItem:p}}const Mj=ee({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},setup(e){const t=we("select"),n=yt({index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}),{currentLabel:o,itemSelected:s,isDisabled:l,select:r,hoverItem:a}=Nj(e,n),{visible:i,hover:u}=Ut(n),c=nt().proxy,d=c.value;r.onOptionCreate(c),_t(()=>{const{selected:p}=r,g=(r.props.multiple?p:[p]).some(m=>m.value===c.value);r.cachedOptions.get(d)===c&&!g&&ze(()=>{r.cachedOptions.delete(d)}),r.onOptionDestroy(d,c)});function f(){e.disabled!==!0&&n.groupDisabled!==!0&&r.handleOptionSelect(c,!0)}return{ns:t,currentLabel:o,itemSelected:s,isDisabled:l,select:r,hoverItem:a,visible:i,hover:u,selectOptionClick:f,states:n}}});function Oj(e,t,n,o,s,l){return Ge((C(),M("li",{class:_([e.ns.be("dropdown","item"),e.ns.is("disabled",e.isDisabled),{selected:e.itemSelected,hover:e.hover}]),onMouseenter:t[0]||(t[0]=(...r)=>e.hoverItem&&e.hoverItem(...r)),onClick:t[1]||(t[1]=Ke((...r)=>e.selectOptionClick&&e.selectOptionClick(...r),["stop"]))},[ie(e.$slots,"default",{},()=>[D("span",null,he(e.currentLabel),1)])],34)),[[pt,e.visible]])}var Ep=ge(Mj,[["render",Oj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option.vue"]]);const Ij=ee({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=Ne(Yu),t=we("select"),n=E(()=>e.props.popperClass),o=E(()=>e.props.multiple),s=E(()=>e.props.fitInputWidth),l=A("");function r(){var a;l.value=`${(a=e.selectWrapper)==null?void 0:a.getBoundingClientRect().width}px`}return xe(()=>{r(),ar(e.selectWrapper,r)}),_t(()=>{ir(e.selectWrapper,r)}),{ns:t,minWidth:l,popperClass:n,isMultiple:o,isFitInputWidth:s}}});function Pj(e,t,n,o,s,l){return C(),M("div",{class:_([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Pe({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[ie(e.$slots,"default")],6)}var Dj=ge(Ij,[["render",Pj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select-dropdown.vue"]]);function Lj(e){const{t}=kt();return yt({options:new Map,cachedOptions:new Map,createdLabel:null,createdSelected:!1,selected:e.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,cachedPlaceHolder:"",currentPlaceholder:t("el.select.placeholder"),menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1,prefixWidth:11,tagInMultiLine:!1})}const Rj=(e,t,n)=>{const{t:o}=kt(),s=we("select"),l=A(null),r=A(null),a=A(null),i=A(null),u=A(null),c=A(null),d=A(-1),f=jt({query:""}),p=jt(""),h=Ne(Pn,{}),g=Ne(Un,{}),m=E(()=>!e.filterable||e.multiple||!t.visible),v=E(()=>e.disabled||h.disabled),b=E(()=>{const oe=e.multiple?Array.isArray(e.modelValue)&&e.modelValue.length>0:e.modelValue!==void 0&&e.modelValue!==null&&e.modelValue!=="";return e.clearable&&!v.value&&t.inputHovering&&oe}),w=E(()=>e.remote&&e.filterable?"":e.suffixIcon),S=E(()=>s.is("reverse",w.value&&t.visible)),$=E(()=>e.remote?300:0),k=E(()=>e.loading?e.loadingText||o("el.select.loading"):e.remote&&t.query===""&&t.options.size===0?!1:e.filterable&&t.query&&t.options.size>0&&t.filteredOptionsCount===0?e.noMatchText||o("el.select.noMatch"):t.options.size===0?e.noDataText||o("el.select.noData"):null),T=E(()=>Array.from(t.options.values())),O=E(()=>Array.from(t.cachedOptions.values())),L=E(()=>{const oe=T.value.filter(me=>!me.created).some(me=>me.currentLabel===t.query);return e.filterable&&e.allowCreate&&t.query!==""&&!oe}),V=Wt(),B=E(()=>["small"].includes(V.value)?"small":"default"),H=E({get(){return t.visible&&k.value!==!1},set(oe){t.visible=oe}});pe(()=>v.value,()=>{ze(()=>{R()})}),pe(()=>e.placeholder,oe=>{t.cachedPlaceHolder=t.currentPlaceholder=oe}),pe(()=>e.modelValue,(oe,me)=>{var ce;e.multiple&&(R(),oe&&oe.length>0||r.value&&t.query!==""?t.currentPlaceholder="":t.currentPlaceholder=t.cachedPlaceHolder,e.filterable&&!e.reserveKeyword&&(t.query="",z(t.query))),N(),e.filterable&&!e.multiple&&(t.inputLength=20),_n(oe,me)||(ce=g.validate)==null||ce.call(g,"change").catch(Ae=>void 0)},{flush:"post",deep:!0}),pe(()=>t.visible,oe=>{var me,ce,Ae;oe?((ce=(me=a.value)==null?void 0:me.updatePopper)==null||ce.call(me),e.filterable&&(t.filteredOptionsCount=t.optionsCount,t.query=e.remote?"":t.selectedLabel,e.multiple?(Ae=r.value)==null||Ae.focus():t.selectedLabel&&(t.currentPlaceholder=`${t.selectedLabel}`,t.selectedLabel=""),z(t.query),!e.multiple&&!e.remote&&(f.value.query="",wr(f),wr(p)))):(r.value&&r.value.blur(),t.query="",t.previousQuery=null,t.selectedLabel="",t.inputLength=20,t.menuVisibleOnFocus=!1,U(),ze(()=>{r.value&&r.value.value===""&&t.selected.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)}),e.multiple||(t.selected&&(e.filterable&&e.allowCreate&&t.createdSelected&&t.createdLabel?t.selectedLabel=t.createdLabel:t.selectedLabel=t.selected.currentLabel,e.filterable&&(t.query=t.selectedLabel)),e.filterable&&(t.currentPlaceholder=t.cachedPlaceHolder))),n.emit("visible-change",oe)}),pe(()=>t.options.entries(),()=>{var oe,me,ce;if(!ct)return;(me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe),e.multiple&&R();const Ae=((ce=u.value)==null?void 0:ce.querySelectorAll("input"))||[];Array.from(Ae).includes(document.activeElement)||N(),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&P()},{flush:"post"}),pe(()=>t.hoverIndex,oe=>{typeof oe=="number"&&oe>-1&&(d.value=T.value[oe]||{}),T.value.forEach(me=>{me.hover=d.value===me})});const R=()=>{e.collapseTags&&!e.filterable||ze(()=>{var oe,me;if(!l.value)return;const ce=l.value.$el.childNodes,Ae=Array.from(ce).find(St=>St.tagName==="INPUT"),Ue=i.value,mt=t.initialInputHeight||K0(V.value||h.size);Ae.style.height=t.selected.length===0?`${mt}px`:`${Math.max(Ue?Ue.clientHeight+(Ue.clientHeight>mt?6:0):0,mt)}px`,t.tagInMultiLine=Number.parseFloat(Ae.style.height)>=mt,t.visible&&k.value!==!1&&((me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe))})},z=oe=>{if(!(t.previousQuery===oe||t.isOnComposition)){if(t.previousQuery===null&&(typeof e.filterMethod=="function"||typeof e.remoteMethod=="function")){t.previousQuery=oe;return}t.previousQuery=oe,ze(()=>{var me,ce;t.visible&&((ce=(me=a.value)==null?void 0:me.updatePopper)==null||ce.call(me))}),t.hoverIndex=-1,e.multiple&&e.filterable&&ze(()=>{const me=r.value.value.length*15+20;t.inputLength=e.collapseTags?Math.min(50,me):me,W(),R()}),e.remote&&typeof e.remoteMethod=="function"?(t.hoverIndex=-1,e.remoteMethod(oe)):typeof e.filterMethod=="function"?(e.filterMethod(oe),wr(p)):(t.filteredOptionsCount=t.optionsCount,f.value.query=oe,wr(f),wr(p)),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&P()}},W=()=>{t.currentPlaceholder!==""&&(t.currentPlaceholder=r.value.value?"":t.cachedPlaceHolder)},P=()=>{const oe=T.value.filter(Ae=>Ae.visible&&!Ae.disabled&&!Ae.states.groupDisabled),me=oe.find(Ae=>Ae.created),ce=oe[0];t.hoverIndex=Oe(T.value,me||ce)},N=()=>{var oe;if(e.multiple)t.selectedLabel="";else{const ce=I(e.modelValue);(oe=ce.props)!=null&&oe.created?(t.createdLabel=ce.props.value,t.createdSelected=!0):t.createdSelected=!1,t.selectedLabel=ce.currentLabel,t.selected=ce,e.filterable&&(t.query=t.selectedLabel);return}const me=[];Array.isArray(e.modelValue)&&e.modelValue.forEach(ce=>{me.push(I(ce))}),t.selected=me,ze(()=>{R()})},I=oe=>{let me;const ce=oi(oe).toLowerCase()==="object",Ae=oi(oe).toLowerCase()==="null",Ue=oi(oe).toLowerCase()==="undefined";for(let bt=t.cachedOptions.size-1;bt>=0;bt--){const At=O.value[bt];if(ce?It(At,e.valueKey)===It(oe,e.valueKey):At.value===oe){me={value:oe,currentLabel:At.currentLabel,isDisabled:At.isDisabled};break}}if(me)return me;const mt=ce?oe.label:!Ae&&!Ue?oe:"",St={value:oe,currentLabel:mt};return e.multiple&&(St.hitState=!1),St},U=()=>{setTimeout(()=>{const oe=e.valueKey;e.multiple?t.selected.length>0?t.hoverIndex=Math.min.apply(null,t.selected.map(me=>T.value.findIndex(ce=>It(ce,oe)===It(me,oe)))):t.hoverIndex=-1:t.hoverIndex=T.value.findIndex(me=>Fe(me)===Fe(t.selected))},300)},q=()=>{var oe,me;Q(),(me=(oe=a.value)==null?void 0:oe.updatePopper)==null||me.call(oe),e.multiple&&!e.filterable&&R()},Q=()=>{var oe;t.inputWidth=(oe=l.value)==null?void 0:oe.$el.getBoundingClientRect().width},Z=()=>{e.filterable&&t.query!==t.selectedLabel&&(t.query=t.selectedLabel,z(t.query))},ae=hn(()=>{Z()},$.value),Ee=hn(oe=>{z(oe.target.value)},$.value),Me=oe=>{_n(e.modelValue,oe)||n.emit(qt,oe)},J=oe=>{if(oe.target.value.length<=0&&!ye()){const me=e.modelValue.slice();me.pop(),n.emit(tt,me),Me(me)}oe.target.value.length===1&&e.modelValue.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)},ve=(oe,me)=>{const ce=t.selected.indexOf(me);if(ce>-1&&!v.value){const Ae=e.modelValue.slice();Ae.splice(ce,1),n.emit(tt,Ae),Me(Ae),n.emit("remove-tag",me.value)}oe.stopPropagation()},Ce=oe=>{oe.stopPropagation();const me=e.multiple?[]:"";if(typeof me!="string")for(const ce of t.selected)ce.isDisabled&&me.push(ce.value);n.emit(tt,me),Me(me),t.visible=!1,n.emit("clear")},ke=(oe,me)=>{var ce;if(e.multiple){const Ae=(e.modelValue||[]).slice(),Ue=Oe(Ae,oe.value);Ue>-1?Ae.splice(Ue,1):(e.multipleLimit<=0||Ae.length{qe(oe)})},Oe=(oe=[],me)=>{if(!dt(me))return oe.indexOf(me);const ce=e.valueKey;let Ae=-1;return oe.some((Ue,mt)=>It(Ue,ce)===It(me,ce)?(Ae=mt,!0):!1),Ae},We=()=>{t.softFocus=!0;const oe=r.value||l.value;oe&&(oe==null||oe.focus())},qe=oe=>{var me,ce,Ae,Ue,mt;const St=Array.isArray(oe)?oe[0]:oe;let bt=null;if(St!=null&&St.value){const At=T.value.filter(Dn=>Dn.value===St.value);At.length>0&&(bt=At[0].$el)}if(a.value&&bt){const At=(Ue=(Ae=(ce=(me=a.value)==null?void 0:me.popperRef)==null?void 0:ce.contentRef)==null?void 0:Ae.querySelector)==null?void 0:Ue.call(Ae,`.${s.be("dropdown","wrap")}`);At&&D0(At,bt)}(mt=c.value)==null||mt.handleScroll()},K=oe=>{t.optionsCount++,t.filteredOptionsCount++,t.options.set(oe.value,oe),t.cachedOptions.set(oe.value,oe)},X=(oe,me)=>{t.options.get(oe)===me&&(t.optionsCount--,t.filteredOptionsCount--,t.options.delete(oe))},fe=oe=>{oe.code!==Ie.backspace&&ye(!1),t.inputLength=r.value.value.length*15+20,R()},ye=oe=>{if(!Array.isArray(t.selected))return;const me=t.selected[t.selected.length-1];if(!!me)return oe===!0||oe===!1?(me.hitState=oe,oe):(me.hitState=!me.hitState,me.hitState)},be=oe=>{const me=oe.target.value;if(oe.type==="compositionend")t.isOnComposition=!1,ze(()=>z(me));else{const ce=me[me.length-1]||"";t.isOnComposition=!Ru(ce)}},_e=()=>{ze(()=>qe(t.selected))},re=oe=>{t.softFocus?t.softFocus=!1:((e.automaticDropdown||e.filterable)&&(e.filterable&&!t.visible&&(t.menuVisibleOnFocus=!0),t.visible=!0),n.emit("focus",oe))},se=()=>{var oe;t.visible=!1,(oe=l.value)==null||oe.blur()},te=oe=>{ze(()=>{t.isSilentBlur?t.isSilentBlur=!1:n.emit("blur",oe)}),t.softFocus=!1},ue=oe=>{Ce(oe)},Re=()=>{t.visible=!1},F=()=>{var oe;e.automaticDropdown||v.value||(t.menuVisibleOnFocus?t.menuVisibleOnFocus=!1:t.visible=!t.visible,t.visible&&((oe=r.value||l.value)==null||oe.focus()))},de=()=>{t.visible?T.value[t.hoverIndex]&&ke(T.value[t.hoverIndex],void 0):F()},Fe=oe=>dt(oe.value)?It(oe.value,e.valueKey):oe.value,Je=E(()=>T.value.filter(oe=>oe.visible).every(oe=>oe.disabled)),He=oe=>{if(!t.visible){t.visible=!0;return}if(!(t.options.size===0||t.filteredOptionsCount===0)&&!t.isOnComposition&&!Je.value){oe==="next"?(t.hoverIndex++,t.hoverIndex===t.options.size&&(t.hoverIndex=0)):oe==="prev"&&(t.hoverIndex--,t.hoverIndex<0&&(t.hoverIndex=t.options.size-1));const me=T.value[t.hoverIndex];(me.disabled===!0||me.states.groupDisabled===!0||!me.visible)&&He(oe),ze(()=>qe(d.value))}};return{optionsArray:T,selectSize:V,handleResize:q,debouncedOnInputChange:ae,debouncedQueryChange:Ee,deletePrevTag:J,deleteTag:ve,deleteSelected:Ce,handleOptionSelect:ke,scrollToOption:qe,readonly:m,resetInputHeight:R,showClose:b,iconComponent:w,iconReverse:S,showNewOption:L,collapseTagSize:B,setSelected:N,managePlaceholder:W,selectDisabled:v,emptyText:k,toggleLastOptionHitState:ye,resetInputState:fe,handleComposition:be,onOptionCreate:K,onOptionDestroy:X,handleMenuEnter:_e,handleFocus:re,blur:se,handleBlur:te,handleClearClick:ue,handleClose:Re,toggleMenu:F,selectOption:de,getValueKey:Fe,navigateOptions:He,dropMenuVisible:H,queryChange:f,groupQueryChange:p,reference:l,input:r,tooltipRef:a,tags:i,selectWrapper:u,scrollbar:c}},Oc="ElSelect",Vj=ee({name:Oc,componentName:Oc,components:{ElInput:Jn,ElSelectMenu:Dj,ElOption:Ep,ElTag:Wu,ElScrollbar:Uo,ElTooltip:mn,ElIcon:je},directives:{ClickOutside:hl},props:{name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:{type:String,validator:On},effect:{type:String,default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},popperAppendToBody:{type:Boolean,default:void 0},teleported:Jt.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Fo},fitInputWidth:{type:Boolean,default:!1},suffixIcon:{type:[String,Object],default:Ta},tagType:Te(ne({},gp.type),{default:"info"})},emits:[tt,qt,"remove-tag","clear","visible-change","focus","blur"],setup(e,t){const n=we("select"),o=we("input"),{t:s}=kt(),l=Lj(e),{optionsArray:r,selectSize:a,readonly:i,handleResize:u,collapseTagSize:c,debouncedOnInputChange:d,debouncedQueryChange:f,deletePrevTag:p,deleteTag:h,deleteSelected:g,handleOptionSelect:m,scrollToOption:v,setSelected:b,resetInputHeight:w,managePlaceholder:S,showClose:$,selectDisabled:k,iconComponent:T,iconReverse:O,showNewOption:L,emptyText:V,toggleLastOptionHitState:B,resetInputState:H,handleComposition:R,onOptionCreate:z,onOptionDestroy:W,handleMenuEnter:P,handleFocus:N,blur:I,handleBlur:U,handleClearClick:q,handleClose:Q,toggleMenu:Z,selectOption:ae,getValueKey:Ee,navigateOptions:Me,dropMenuVisible:J,reference:ve,input:Ce,tooltipRef:ke,tags:Oe,selectWrapper:We,scrollbar:qe,queryChange:K,groupQueryChange:X}=Rj(e,l,t),{focus:fe}=T8(ve),{inputWidth:ye,selected:be,inputLength:_e,filteredOptionsCount:re,visible:se,softFocus:te,selectedLabel:ue,hoverIndex:Re,query:F,inputHovering:de,currentPlaceholder:Fe,menuVisibleOnFocus:Je,isOnComposition:He,isSilentBlur:oe,options:me,cachedOptions:ce,optionsCount:Ae,prefixWidth:Ue,tagInMultiLine:mt}=Ut(l),St=E(()=>{const an=[n.b()],vn=y(a);return vn&&an.push(n.m(vn)),e.disabled&&an.push(n.m("disabled")),an}),bt=E(()=>({maxWidth:`${y(ye)-32}px`,width:"100%"}));st(Yu,yt({props:e,options:me,optionsArray:r,cachedOptions:ce,optionsCount:Ae,filteredOptionsCount:re,hoverIndex:Re,handleOptionSelect:m,onOptionCreate:z,onOptionDestroy:W,selectWrapper:We,selected:be,setSelected:b,queryChange:K,groupQueryChange:X})),xe(()=>{if(l.cachedPlaceHolder=Fe.value=e.placeholder||s("el.select.placeholder"),e.multiple&&Array.isArray(e.modelValue)&&e.modelValue.length>0&&(Fe.value=""),ar(We.value,u),ve.value&&ve.value.$el){const an=ve.value.input;l.initialInputHeight=an.getBoundingClientRect().height||K0(a.value)}e.remote&&e.multiple&&w(),ze(()=>{if(!!ve.value&&(ve.value.$el&&(ye.value=ve.value.$el.getBoundingClientRect().width),t.slots.prefix)){const an=ve.value.$el.childNodes,vn=Array.from(an).find(hr=>hr.tagName==="INPUT"),bs=ve.value.$el.querySelector(`.${o.e("prefix")}`);Ue.value=Math.max(bs.getBoundingClientRect().width+5,30),l.prefixWidth&&(vn.style.paddingLeft=`${Math.max(l.prefixWidth,30)}px`)}}),b()}),_t(()=>{ir(We.value,u)}),e.multiple&&!Array.isArray(e.modelValue)&&t.emit(tt,[]),!e.multiple&&Array.isArray(e.modelValue)&&t.emit(tt,"");const At=E(()=>{var an,vn;return(vn=(an=ke.value)==null?void 0:an.popperRef)==null?void 0:vn.contentRef}),{compatTeleported:Dn}=dr(Oc,"popperAppendToBody");return{tagInMultiLine:mt,prefixWidth:Ue,selectSize:a,readonly:i,handleResize:u,collapseTagSize:c,debouncedOnInputChange:d,debouncedQueryChange:f,deletePrevTag:p,deleteTag:h,deleteSelected:g,handleOptionSelect:m,scrollToOption:v,inputWidth:ye,selected:be,inputLength:_e,filteredOptionsCount:re,visible:se,softFocus:te,selectedLabel:ue,hoverIndex:Re,query:F,inputHovering:de,currentPlaceholder:Fe,menuVisibleOnFocus:Je,isOnComposition:He,isSilentBlur:oe,options:me,resetInputHeight:w,managePlaceholder:S,showClose:$,selectDisabled:k,iconComponent:T,iconReverse:O,showNewOption:L,emptyText:V,toggleLastOptionHitState:B,resetInputState:H,handleComposition:R,handleMenuEnter:P,handleFocus:N,blur:I,handleBlur:U,handleClearClick:q,handleClose:Q,toggleMenu:Z,selectOption:ae,getValueKey:Ee,navigateOptions:Me,dropMenuVisible:J,focus:fe,reference:ve,input:Ce,tooltipRef:ke,popperPaneRef:At,tags:Oe,selectWrapper:We,scrollbar:qe,wrapperKls:St,selectTagsStyle:bt,compatTeleported:Dn,nsSelect:n}}}),Bj={class:"select-trigger"},Fj=["disabled","autocomplete"],Hj={style:{height:"100%",display:"flex","justify-content":"center","align-items":"center"}};function zj(e,t,n,o,s,l){const r=le("el-tag"),a=le("el-tooltip"),i=le("el-icon"),u=le("el-input"),c=le("el-option"),d=le("el-scrollbar"),f=le("el-select-menu"),p=Mn("click-outside");return Ge((C(),M("div",{ref:"selectWrapper",class:_(e.wrapperKls),onClick:t[24]||(t[24]=Ke((...h)=>e.toggleMenu&&e.toggleMenu(...h),["stop"]))},[Y(a,{ref:"tooltipRef",visible:e.dropMenuVisible,"onUpdate:visible":t[23]||(t[23]=h=>e.dropMenuVisible=h),placement:"bottom-start",teleported:e.compatTeleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"fallback-placements":["bottom-start","top-start","right","left"],effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,onShow:e.handleMenuEnter},{default:j(()=>[D("div",Bj,[e.multiple?(C(),M("div",{key:0,ref:"tags",class:_(e.nsSelect.e("tags")),style:Pe(e.selectTagsStyle)},[e.collapseTags&&e.selected.length?(C(),M("span",{key:0,class:_([e.nsSelect.b("tags-wrapper"),{"has-prefix":e.prefixWidth&&e.selected.length}])},[Y(r,{closable:!e.selectDisabled&&!e.selected[0].isDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:e.tagType,"disable-transitions":"",onClose:t[0]||(t[0]=h=>e.deleteTag(h,e.selected[0]))},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:Pe({maxWidth:e.inputWidth-123+"px"})},he(e.selected[0].currentLabel),7)]),_:1},8,["closable","size","hit","type"]),e.selected.length>1?(C(),x(r,{key:0,closable:!1,size:e.collapseTagSize,type:e.tagType,"disable-transitions":""},{default:j(()=>[e.collapseTagsTooltip?(C(),x(a,{key:0,disabled:e.dropMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:!1},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text"))},"+ "+he(e.selected.length-1),3)]),content:j(()=>[D("div",{class:_(e.nsSelect.e("collapse-tags"))},[(C(!0),M(Le,null,it(e.selected,(h,g)=>(C(),M("div",{key:g,class:_(e.nsSelect.e("collapse-tag"))},[(C(),x(r,{key:e.getValueKey(h),class:"in-tooltip",closable:!e.selectDisabled&&!h.isDisabled,size:e.collapseTagSize,hit:h.hitState,type:e.tagType,"disable-transitions":"",style:{margin:"2px"},onClose:m=>e.deleteTag(m,h)},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:Pe({maxWidth:e.inputWidth-75+"px"})},he(h.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect"])):(C(),M("span",{key:1,class:_(e.nsSelect.e("tags-text"))},"+ "+he(e.selected.length-1),3))]),_:1},8,["size","type"])):G("v-if",!0)],2)):G("v-if",!0),G("
    "),e.collapseTags?G("v-if",!0):(C(),x(zt,{key:1,onAfterLeave:e.resetInputHeight},{default:j(()=>[D("span",{class:_([e.nsSelect.b("tags-wrapper"),{"has-prefix":e.prefixWidth&&e.selected.length}])},[(C(!0),M(Le,null,it(e.selected,h=>(C(),x(r,{key:e.getValueKey(h),closable:!e.selectDisabled&&!h.isDisabled,size:e.collapseTagSize,hit:h.hitState,type:e.tagType,"disable-transitions":"",onClose:g=>e.deleteTag(g,h)},{default:j(()=>[D("span",{class:_(e.nsSelect.e("tags-text")),style:Pe({maxWidth:e.inputWidth-75+"px"})},he(h.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))),128))],2)]),_:1},8,["onAfterLeave"])),G("
    "),e.filterable?Ge((C(),M("input",{key:2,ref:"input","onUpdate:modelValue":t[1]||(t[1]=h=>e.query=h),type:"text",class:_([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Pe({marginLeft:e.prefixWidth&&!e.selected.length||e.tagInMultiLine?`${e.prefixWidth}px`:"",flexGrow:1,width:`${e.inputLength/(e.inputWidth-32)}%`,maxWidth:`${e.inputWidth-42}px`}),onFocus:t[2]||(t[2]=(...h)=>e.handleFocus&&e.handleFocus(...h)),onBlur:t[3]||(t[3]=(...h)=>e.handleBlur&&e.handleBlur(...h)),onKeyup:t[4]||(t[4]=(...h)=>e.managePlaceholder&&e.managePlaceholder(...h)),onKeydown:[t[5]||(t[5]=(...h)=>e.resetInputState&&e.resetInputState(...h)),t[6]||(t[6]=lt(Ke(h=>e.navigateOptions("next"),["prevent"]),["down"])),t[7]||(t[7]=lt(Ke(h=>e.navigateOptions("prev"),["prevent"]),["up"])),t[8]||(t[8]=lt(Ke(h=>e.visible=!1,["stop","prevent"]),["esc"])),t[9]||(t[9]=lt(Ke((...h)=>e.selectOption&&e.selectOption(...h),["stop","prevent"]),["enter"])),t[10]||(t[10]=lt((...h)=>e.deletePrevTag&&e.deletePrevTag(...h),["delete"])),t[11]||(t[11]=lt(h=>e.visible=!1,["tab"]))],onCompositionstart:t[12]||(t[12]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onCompositionupdate:t[13]||(t[13]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onCompositionend:t[14]||(t[14]=(...h)=>e.handleComposition&&e.handleComposition(...h)),onInput:t[15]||(t[15]=(...h)=>e.debouncedQueryChange&&e.debouncedQueryChange(...h))},null,46,Fj)),[[Rf,e.query]]):G("v-if",!0)],6)):G("v-if",!0),Y(u,{id:e.id,ref:"reference",modelValue:e.selectedLabel,"onUpdate:modelValue":t[16]||(t[16]=h=>e.selectedLabel=h),type:"text",placeholder:e.currentPlaceholder,name:e.name,autocomplete:e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,class:_([e.nsSelect.is("focus",e.visible)]),tabindex:e.multiple&&e.filterable?-1:void 0,onFocus:e.handleFocus,onBlur:e.handleBlur,onInput:e.debouncedOnInputChange,onPaste:e.debouncedOnInputChange,onCompositionstart:e.handleComposition,onCompositionupdate:e.handleComposition,onCompositionend:e.handleComposition,onKeydown:[t[17]||(t[17]=lt(Ke(h=>e.navigateOptions("next"),["stop","prevent"]),["down"])),t[18]||(t[18]=lt(Ke(h=>e.navigateOptions("prev"),["stop","prevent"]),["up"])),lt(Ke(e.selectOption,["stop","prevent"]),["enter"]),t[19]||(t[19]=lt(Ke(h=>e.visible=!1,["stop","prevent"]),["esc"])),t[20]||(t[20]=lt(h=>e.visible=!1,["tab"]))],onMouseenter:t[21]||(t[21]=h=>e.inputHovering=!0),onMouseleave:t[22]||(t[22]=h=>e.inputHovering=!1)},fs({suffix:j(()=>[e.iconComponent?Ge((C(),x(i,{key:0,class:_([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])),[[pt,!e.showClose]]):G("v-if",!0),e.showClose&&e.clearIcon?(C(),x(i,{key:1,class:_([e.nsSelect.e("caret"),e.nsSelect.e("icon")]),onClick:e.handleClearClick},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0)]),_:2},[e.$slots.prefix?{name:"prefix",fn:j(()=>[D("div",Hj,[ie(e.$slots,"prefix")])])}:void 0]),1032,["id","modelValue","placeholder","name","autocomplete","size","disabled","readonly","class","tabindex","onFocus","onBlur","onInput","onPaste","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown"])])]),content:j(()=>[Y(f,null,{default:j(()=>[Ge(Y(d,{ref:"scrollbar",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:_([e.nsSelect.is("empty",!e.allowCreate&&Boolean(e.query)&&e.filteredOptionsCount===0)])},{default:j(()=>[e.showNewOption?(C(),x(c,{key:0,value:e.query,created:!0},null,8,["value"])):G("v-if",!0),ie(e.$slots,"default")]),_:3},8,["wrap-class","view-class","class"]),[[pt,e.options.size>0&&!e.loading]]),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&e.options.size===0)?(C(),M(Le,{key:0},[e.$slots.empty?ie(e.$slots,"empty",{key:0}):(C(),M("p",{key:1,class:_(e.nsSelect.be("dropdown","empty"))},he(e.emptyText),3))],2112)):G("v-if",!0)]),_:3})]),_:3},8,["visible","teleported","popper-class","effect","transition","persistent","onShow"])],2)),[[p,e.handleClose,e.popperPaneRef]])}var Kj=ge(Vj,[["render",zj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select.vue"]]);const Wj=ee({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},setup(e){const t=we("select"),n=A(!0),o=nt(),s=A([]);st(eC,yt(ne({},Ut(e))));const l=Ne(Yu);xe(()=>{s.value=r(o.subTree)});const r=i=>{const u=[];return Array.isArray(i.children)&&i.children.forEach(c=>{var d;c.type&&c.type.name==="ElOption"&&c.component&&c.component.proxy?u.push(c.component.proxy):(d=c.children)!=null&&d.length&&u.push(...r(c))}),u},{groupQueryChange:a}=$t(l);return pe(a,()=>{n.value=s.value.some(i=>i.visible===!0)}),{visible:n,ns:t}}});function jj(e,t,n,o,s,l){return Ge((C(),M("ul",{class:_(e.ns.be("group","wrap"))},[D("li",{class:_(e.ns.be("group","title"))},he(e.label),3),D("li",null,[D("ul",{class:_(e.ns.b("group"))},[ie(e.$slots,"default")],2)])],2)),[[pt,e.visible]])}var tC=ge(Wj,[["render",jj],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option-group.vue"]]);const sl=ot(Kj,{Option:Ep,OptionGroup:tC}),xi=Rt(Ep),Yj=Rt(tC),_p=()=>Ne(x0,{}),Uj=Be({pageSize:{type:Number,required:!0},pageSizes:{type:$e(Array),default:()=>Dt([10,20,30,40,50,100])},popperClass:{type:String,default:""},disabled:Boolean,size:{type:String,default:"default"}}),qj=ee({name:"ElPaginationSizes",components:{ElSelect:sl,ElOption:xi},props:Uj,emits:["page-size-change"],setup(e,{emit:t}){const{t:n}=kt(),o=we("pagination"),s=_p(),l=A(e.pageSize);pe(()=>e.pageSizes,(i,u)=>{if(!_n(i,u)&&Array.isArray(i)){const c=i.includes(e.pageSize)?e.pageSize:e.pageSizes[0];t("page-size-change",c)}}),pe(()=>e.pageSize,i=>{l.value=i});const r=E(()=>e.pageSizes);function a(i){var u;i!==l.value&&(l.value=i,(u=s.handleSizeChange)==null||u.call(s,Number(i)))}return{ns:o,innerPagesizes:r,innerPageSize:l,t:n,handleChange:a}}});function Gj(e,t,n,o,s,l){const r=le("el-option"),a=le("el-select");return C(),M("span",{class:_(e.ns.e("sizes"))},[Y(a,{"model-value":e.innerPageSize,disabled:e.disabled,"popper-class":e.popperClass,size:e.size,onChange:e.handleChange},{default:j(()=>[(C(!0),M(Le,null,it(e.innerPagesizes,i=>(C(),x(r,{key:i,value:i,label:i+e.t("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size","onChange"])],2)}var Xj=ge(qj,[["render",Gj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/sizes.vue"]]);const Zj=ee({name:"ElPaginationJumper",components:{ElInput:Jn},setup(){const{t:e}=kt(),t=we("pagination"),{pageCount:n,disabled:o,currentPage:s,changeEvent:l}=_p(),r=A(),a=E(()=>{var c;return(c=r.value)!=null?c:s==null?void 0:s.value});function i(c){r.value=+c}function u(c){c=Math.trunc(+c),l==null||l(+c),r.value=void 0}return{ns:t,pageCount:n,disabled:o,innerValue:a,t:e,handleInput:i,handleChange:u}}}),Jj=["disabled"];function Qj(e,t,n,o,s,l){const r=le("el-input");return C(),M("span",{class:_(e.ns.e("jump")),disabled:e.disabled},[at(he(e.t("el.pagination.goto"))+" ",1),Y(r,{size:"small",class:_([e.ns.e("editor"),e.ns.is("in-pagination")]),min:1,max:e.pageCount,disabled:e.disabled,"model-value":e.innerValue,type:"number","onUpdate:modelValue":e.handleInput,onChange:e.handleChange},null,8,["class","max","disabled","model-value","onUpdate:modelValue","onChange"]),at(" "+he(e.t("el.pagination.pageClassifier")),1)],10,Jj)}var xj=ge(Zj,[["render",Qj],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/jumper.vue"]]);const eY={total:{type:Number,default:1e3}},tY=ee({name:"ElPaginationTotal",props:eY,setup(){const{t:e}=kt(),t=we("pagination"),{disabled:n}=_p();return{t:e,ns:t,disabled:n}}}),nY=["disabled"];function oY(e,t,n,o,s,l){return C(),M("span",{class:_(e.ns.e("total")),disabled:e.disabled},he(e.t("el.pagination.total",{total:e.total})),11,nY)}var sY=ge(tY,[["render",oY],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/total.vue"]]);const lY={currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean},rY=ee({name:"ElPaginationPager",components:{DArrowLeft:Pu,DArrowRight:Du,MoreFilled:VD},props:lY,emits:["change"],setup(e,{emit:t}){const n=we("pager"),o=we("icon"),s=A(!1),l=A(!1),r=A(!1),a=A(!1),i=E(()=>{const f=e.pagerCount,p=(f-1)/2,h=Number(e.currentPage),g=Number(e.pageCount);let m=!1,v=!1;g>f&&(h>f-p&&(m=!0),h{const f=(e.pagerCount-1)/2;s.value=!1,l.value=!1,e.pageCount>e.pagerCount&&(e.currentPage>e.pagerCount-f&&(s.value=!0),e.currentPageg&&(h=g)),h!==m&&t("change",h)}return{showPrevMore:s,showNextMore:l,quickPrevHover:r,quickNextHover:a,pagers:i,nsPager:n,nsIcon:o,onMouseenter:u,onPagerClick:d,onEnter:c}}}),aY=["aria-current"],iY=["aria-current"],uY=["aria-current"];function cY(e,t,n,o,s,l){const r=le("d-arrow-left"),a=le("more-filled"),i=le("d-arrow-right");return C(),M("ul",{class:_(e.nsPager.b()),onClick:t[4]||(t[4]=(...u)=>e.onPagerClick&&e.onPagerClick(...u)),onKeyup:t[5]||(t[5]=lt((...u)=>e.onEnter&&e.onEnter(...u),["enter"]))},[e.pageCount>0?(C(),M("li",{key:0,class:_([[e.nsPager.is("active",e.currentPage===1),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===1,tabindex:"0"}," 1 ",10,aY)):G("v-if",!0),e.showPrevMore?(C(),M("li",{key:1,class:_(["more","btn-quickprev",e.nsIcon.b(),e.nsPager.is("disabled",e.disabled)]),onMouseenter:t[0]||(t[0]=u=>e.onMouseenter("left")),onMouseleave:t[1]||(t[1]=u=>e.quickPrevHover=!1)},[e.quickPrevHover?(C(),x(r,{key:0})):(C(),x(a,{key:1}))],34)):G("v-if",!0),(C(!0),M(Le,null,it(e.pagers,u=>(C(),M("li",{key:u,class:_([[e.nsPager.is("active",e.currentPage===u),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===u,tabindex:"0"},he(u),11,iY))),128)),e.showNextMore?(C(),M("li",{key:2,class:_(["more","btn-quicknext",e.nsIcon.b(),e.nsPager.is("disabled",e.disabled)]),onMouseenter:t[2]||(t[2]=u=>e.onMouseenter("right")),onMouseleave:t[3]||(t[3]=u=>e.quickNextHover=!1)},[e.quickNextHover?(C(),x(i,{key:0})):(C(),x(a,{key:1}))],34)):G("v-if",!0),e.pageCount>1?(C(),M("li",{key:3,class:_([[e.nsPager.is("active",e.currentPage===e.pageCount),e.nsPager.is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===e.pageCount,tabindex:"0"},he(e.pageCount),11,uY)):G("v-if",!0)],34)}var dY=ge(rY,[["render",cY],["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/pager.vue"]]);const on=e=>typeof e!="number",fY=Be({total:Number,pageSize:Number,defaultPageSize:Number,currentPage:Number,defaultCurrentPage:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>typeof e=="number"&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:$e(Array),default:()=>Dt([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},nextText:{type:String,default:""},small:Boolean,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),pY={"update:current-page":e=>typeof e=="number","update:page-size":e=>typeof e=="number","size-change":e=>typeof e=="number","current-change":e=>typeof e=="number","prev-click":e=>typeof e=="number","next-click":e=>typeof e=="number"},fg="ElPagination";var hY=ee({name:fg,props:fY,emits:pY,setup(e,{emit:t,slots:n}){const{t:o}=kt(),s=we("pagination"),l=nt().vnode.props||{},r="onUpdate:currentPage"in l||"onUpdate:current-page"in l||"onCurrentChange"in l,a="onUpdate:pageSize"in l||"onUpdate:page-size"in l||"onSizeChange"in l,i=E(()=>{if(on(e.total)&&on(e.pageCount)||!on(e.currentPage)&&!r)return!1;if(e.layout.includes("sizes")){if(on(e.pageCount)){if(!on(e.total)&&!on(e.pageSize)&&!a)return!1}else if(!a)return!1}return!0}),u=A(on(e.defaultPageSize)?10:e.defaultPageSize),c=A(on(e.defaultCurrentPage)?1:e.defaultCurrentPage),d=E({get(){return on(e.pageSize)?u.value:e.pageSize},set(w){on(e.pageSize)&&(u.value=w),a&&(t("update:page-size",w),t("size-change",w))}}),f=E(()=>{let w=0;return on(e.pageCount)?on(e.total)||(w=Math.max(1,Math.ceil(e.total/d.value))):w=e.pageCount,w}),p=E({get(){return on(e.currentPage)?c.value:e.currentPage},set(w){let S=w;w<1?S=1:w>f.value&&(S=f.value),on(e.currentPage)&&(c.value=S),r&&(t("update:current-page",S),t("current-change",S))}});pe(f,w=>{p.value>w&&(p.value=w)});function h(w){p.value=w}function g(w){d.value=w;const S=f.value;p.value>S&&(p.value=S)}function m(){e.disabled||(p.value-=1,t("prev-click",p.value))}function v(){e.disabled||(p.value+=1,t("next-click",p.value))}function b(w,S){w&&(w.props||(w.props={}),w.props.class=[w.props.class,S].join(" "))}return st(x0,{pageCount:f,disabled:E(()=>e.disabled),currentPage:p,changeEvent:h,handleSizeChange:g}),()=>{var w,S;if(!i.value)return o("el.pagination.deprecationWarning"),null;if(!e.layout||e.hideOnSinglePage&&f.value<=1)return null;const $=[],k=[],T=De("div",{class:s.e("rightwrapper")},k),O={prev:De($j,{disabled:e.disabled,currentPage:p.value,prevText:e.prevText,onClick:m}),jumper:De(xj),pager:De(dY,{currentPage:p.value,pageCount:f.value,pagerCount:e.pagerCount,onChange:h,disabled:e.disabled}),next:De(Aj,{disabled:e.disabled,currentPage:p.value,pageCount:f.value,nextText:e.nextText,onClick:v}),sizes:De(Xj,{pageSize:d.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,size:e.small?"small":"default"}),slot:(S=(w=n==null?void 0:n.default)==null?void 0:w.call(n))!=null?S:null,total:De(sY,{total:on(e.total)?0:e.total})},L=e.layout.split(",").map(B=>B.trim());let V=!1;return L.forEach(B=>{if(B==="->"){V=!0;return}V?k.push(O[B]):$.push(O[B])}),b($[0],s.is("first")),b($[$.length-1],s.is("last")),V&&k.length>0&&(b(k[0],s.is("first")),b(k[k.length-1],s.is("last")),$.push(T)),De("div",{role:"pagination","aria-label":"pagination",class:[s.b(),s.is("background",e.background),{[s.m("small")]:e.small}]},$)}}});const mY=ot(hY),vY=Be({title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,values:gd,default:"primary"},cancelButtonType:{type:String,values:gd,default:"text"},icon:{type:nn,default:rL},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},onConfirm:{type:$e(Function)},onCancel:{type:$e(Function)},teleported:Jt.teleported,persistent:Jt.persistent}),pg="ElPopconfirm",gY=ee({name:pg,components:{ElButton:Kn,ElTooltip:mn,ElIcon:je},props:vY,setup(e){const{compatTeleported:t}=dr(pg,"appendToBody"),{t:n}=kt(),o=we("popconfirm"),s=A(),l=()=>{var d,f;(f=(d=y(s))==null?void 0:d.onClose)==null||f.call(d)},r=()=>{l()},a=d=>{var f;(f=e.onConfirm)==null||f.call(e,d),r()},i=d=>{var f;(f=e.onCancel)==null||f.call(e,d),r()},u=E(()=>e.confirmButtonText||n("el.popconfirm.confirmButtonText")),c=E(()=>e.cancelButtonText||n("el.popconfirm.cancelButtonText"));return{finalConfirmButtonText:u,finalCancelButtonText:c,tooltipRef:s,ns:o,compatTeleported:t,confirm:a,cancel:i}}});function bY(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-button"),i=le("el-tooltip");return C(),x(i,Et({ref:"tooltipRef"},e.$attrs,{trigger:"click",effect:"light","popper-class":`${e.ns.namespace.value}-popover`,teleported:e.compatTeleported,"fallback-placements":["bottom","top","right","left"],"hide-after":e.hideAfter,persistent:e.persistent}),{content:j(()=>[D("div",{class:_(e.ns.b())},[D("div",{class:_(e.ns.e("main"))},[!e.hideIcon&&e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon")),style:Pe({color:e.iconColor})},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class","style"])):G("v-if",!0),at(" "+he(e.title),1)],2),D("div",{class:_(e.ns.e("action"))},[Y(a,{size:"small",type:e.cancelButtonType,onClick:e.cancel},{default:j(()=>[at(he(e.finalCancelButtonText),1)]),_:1},8,["type","onClick"]),Y(a,{size:"small",type:e.confirmButtonType,onClick:e.confirm},{default:j(()=>[at(he(e.finalConfirmButtonText),1)]),_:1},8,["type","onClick"])],2)],2)]),default:j(()=>[e.$slots.reference?ie(e.$slots,"reference",{key:0}):G("v-if",!0)]),_:3},16,["popper-class","teleported","hide-after","persistent"])}var yY=ge(gY,[["render",bY],["__file","/home/runner/work/element-plus/element-plus/packages/components/popconfirm/src/popconfirm.vue"]]);const wY=ot(yY),CY=Be({trigger:ia.trigger,placement:$i.placement,disabled:ia.disabled,visible:Jt.visible,transition:Jt.transition,popperOptions:$i.popperOptions,tabindex:$i.tabindex,appendToBody:{type:Boolean,default:void 0},content:Jt.content,popperStyle:Jt.popperStyle,popperClass:Jt.popperClass,enterable:Te(ne({},Jt.enterable),{default:!0}),effect:Te(ne({},Jt.effect),{default:"light"}),teleported:Jt.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0}}),$Y=["update:visible","before-enter","before-leave","after-enter","after-leave"],hg="ElPopover",kY=ee({name:hg,components:{ElTooltip:mn},props:CY,emits:$Y,setup(e,{emit:t}){const n=we("popover"),o=A(null),s=E(()=>{var g;return(g=y(o))==null?void 0:g.popperRef}),l=E(()=>Qe(e.width)?e.width:`${e.width}px`),r=E(()=>[{width:l.value},e.popperStyle]),a=E(()=>[n.b(),e.popperClass,{[n.m("plain")]:!!e.content}]),i=E(()=>e.transition==="el-fade-in-linear"),{compatTeleported:u}=dr(hg,"appendToBody");return{compatTeleported:u,ns:n,kls:a,gpuAcceleration:i,style:r,tooltipRef:o,popperRef:s,hide:()=>{var g;(g=o.value)==null||g.hide()},beforeEnter:()=>{t("before-enter")},beforeLeave:()=>{t("before-leave")},afterEnter:()=>{t("after-enter")},afterLeave:()=>{t("update:visible",!1),t("after-leave")}}}});function SY(e,t,n,o,s,l){const r=le("el-tooltip");return C(),x(r,Et({ref:"tooltipRef"},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,"append-to-body":e.appendToBody,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":e.kls,"popper-style":e.style,teleported:e.compatTeleported,persistent:e.persistent,"gpu-acceleration":e.gpuAcceleration,onBeforeShow:e.beforeEnter,onBeforeHide:e.beforeLeave,onShow:e.afterEnter,onHide:e.afterLeave}),{content:j(()=>[e.title?(C(),M("div",{key:0,class:_(e.ns.e("title")),role:"title"},he(e.title),3)):G("v-if",!0),ie(e.$slots,"default",{},()=>[at(he(e.content),1)])]),default:j(()=>[e.$slots.reference?ie(e.$slots,"reference",{key:0}):G("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","append-to-body","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onBeforeShow","onBeforeHide","onShow","onHide"])}var Yr=ge(kY,[["render",SY],["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/index.vue"]]);const mg=(e,t)=>{const n=t.arg||t.value,o=n==null?void 0:n.popperRef;o&&(o.triggerRef=e)};var Vd={mounted(e,t){mg(e,t)},updated(e,t){mg(e,t)}};const EY="popover";Yr.install=e=>{e.component(Yr.name,Yr)};Vd.install=e=>{e.directive(EY,Vd)};const nC=Vd;Yr.directive=nC;const _Y=Yr,TY=_Y,AY=nC,NY=Be({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:{type:Boolean,default:!1},duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:$e(String),default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:$e([String,Array,Function]),default:""},format:{type:$e(Function),default:e=>`${e}%`}}),MY=ee({name:"ElProgress",components:{ElIcon:je,CircleCheck:Zi,CircleClose:Fo,Check:Xl,Close:Yn,WarningFilled:aa},props:NY,setup(e){const t=we("progress"),n=E(()=>({width:`${e.percentage}%`,animationDuration:`${e.duration}s`,backgroundColor:g(e.percentage)})),o=E(()=>(e.strokeWidth/e.width*100).toFixed(1)),s=E(()=>e.type==="circle"||e.type==="dashboard"?Number.parseInt(`${50-Number.parseFloat(o.value)/2}`,10):0),l=E(()=>{const v=s.value,b=e.type==="dashboard";return` M 50 50 - m 0 ${y?"":"-"}${v} - a ${v} ${v} 0 1 1 0 ${y?"-":""}${v*2} - a ${v} ${v} 0 1 1 0 ${y?"":"-"}${v*2} - `}),r=E(()=>2*Math.PI*s.value),a=E(()=>e.type==="dashboard"?.75:1),i=E(()=>`${-1*r.value*(1-a.value)/2}px`),u=E(()=>({strokeDasharray:`${r.value*a.value}px, ${r.value}px`,strokeDashoffset:i.value})),c=E(()=>({strokeDasharray:`${r.value*a.value*(e.percentage/100)}px, ${r.value}px`,strokeDashoffset:i.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"})),d=E(()=>{let v;if(e.color)v=g(e.percentage);else switch(e.status){case"success":v="#13ce66";break;case"exception":v="#ff4949";break;case"warning":v="#e6a23c";break;default:v="#20a0ff"}return v}),f=E(()=>e.status==="warning"?ia:e.type==="line"?e.status==="success"?Zi:Fo:e.status==="success"?Jl:Yn),p=E(()=>e.type==="line"?12+e.strokeWidth*.4:e.width*.111111+2),h=E(()=>e.format(e.percentage)),g=v=>{var y;const{color:w}=e;if(typeof w=="function")return w(v);if(typeof w=="string")return w;{const S=100/w.length,k=w.map((T,O)=>typeof T=="string"?{color:T,percentage:(O+1)*S}:T).sort((T,O)=>T.percentage-O.percentage);for(const T of k)if(T.percentage>v)return T.color;return(y=k[k.length-1])==null?void 0:y.color}},m=E(()=>({percentage:e.percentage}));return{ns:t,barStyle:n,relativeStrokeWidth:o,radius:s,trackPath:l,perimeter:r,rate:a,strokeDashoffset:i,trailPathStyle:u,circlePathStyle:c,stroke:d,statusIcon:f,progressTextSize:p,content:h,slotData:m}}}),NY=["aria-valuenow"],MY={viewBox:"0 0 100 100"},OY=["d","stroke-width"],IY=["d","stroke","stroke-linecap","stroke-width"],DY={key:0};function PY(e,t,n,o,s,l){const r=le("el-icon");return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.type),e.ns.is(e.status),{[e.ns.m("without-text")]:!e.showText,[e.ns.m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[e.type==="line"?(C(),M("div",{key:0,class:_(e.ns.b("bar"))},[D("div",{class:_(e.ns.be("bar","outer")),style:De({height:`${e.strokeWidth}px`})},[D("div",{class:_([e.ns.be("bar","inner"),{[e.ns.bem("bar","inner","indeterminate")]:e.indeterminate}]),style:De(e.barStyle)},[(e.showText||e.$slots.default)&&e.textInside?(C(),M("div",{key:0,class:_(e.ns.be("bar","innerText"))},[ie(e.$slots,"default",to(ds(e.slotData)),()=>[D("span",null,he(e.content),1)])],2)):G("v-if",!0)],6)],6)],2)):(C(),M("div",{key:1,class:_(e.ns.b("circle")),style:De({height:`${e.width}px`,width:`${e.width}px`})},[(C(),M("svg",MY,[D("path",{class:_(e.ns.be("circle","track")),d:e.trackPath,stroke:"var(--el-fill-color-light, #e5e9f2)","stroke-width":e.relativeStrokeWidth,fill:"none",style:De(e.trailPathStyle)},null,14,OY),D("path",{class:_(e.ns.be("circle","path")),d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0,style:De(e.circlePathStyle)},null,14,IY)]))],6)),(e.showText||e.$slots.default)&&!e.textInside?(C(),M("div",{key:2,class:_(e.ns.e("text")),style:De({fontSize:`${e.progressTextSize}px`})},[ie(e.$slots,"default",to(ds(e.slotData)),()=>[e.status?(C(),x(r,{key:1},{default:j(()=>[(C(),x(ft(e.statusIcon)))]),_:1})):(C(),M("span",DY,he(e.content),1))])],6)):G("v-if",!0)],10,NY)}var LY=ge(AY,[["render",PY],["__file","/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue"]]);const eC=ot(LY),RY=Ve({modelValue:{type:Number,default:0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:$e([Array,Object]),default:()=>Pt(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:$e([Array,Object]),default:()=>[Ga,Ga,Ga]},voidIcon:{type:nn,default:()=>VL},disabledVoidIcon:{type:nn,default:()=>Ga},disabled:{type:Boolean,default:!1},allowHalf:{type:Boolean,default:!1},showText:{type:Boolean,default:!1},showScore:{type:Boolean,default:!1},textColor:{type:String,default:""},texts:{type:$e(Array),default:()=>Pt(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:{type:String,validator:On}}),BY={change:e=>typeof e=="number",[tt]:e=>typeof e=="number"},VY=["aria-valuenow","aria-valuetext","aria-valuemax"],FY=["onMousemove","onClick"],HY={name:"ElRate"},zY=te(Te(ne({},HY),{props:RY,emits:BY,setup(e,{expose:t,emit:n}){const o=e;function s(R,z){const W=I=>dt(I),P=Object.keys(z).map(I=>+I).filter(I=>{const U=z[I];return(W(U)?U.excluded:!1)?RI-U),N=z[P[0]];return W(N)&&N.value||N}const l=Ne(Dn,void 0),r=Wt(),a=we("rate"),i=A(o.modelValue),u=A(-1),c=A(!0),d=E(()=>[a.b(),a.m(r.value)]),f=E(()=>o.disabled||(l==null?void 0:l.disabled)),p=E(()=>({"--el-rate-void-color":o.voidColor,"--el-rate-disabled-void-color":o.disabledVoidColor,"--el-rate-fill-color":v.value})),h=E(()=>{let R="";return o.showScore?R=o.scoreTemplate.replace(/\{\s*value\s*\}/,f.value?`${o.modelValue}`:`${i.value}`):o.showText&&(R=o.texts[Math.ceil(i.value)-1]),R}),g=E(()=>o.modelValue*100-Math.floor(o.modelValue)*100),m=E(()=>Xe(o.colors)?{[o.lowThreshold]:o.colors[0],[o.highThreshold]:{value:o.colors[1],excluded:!0},[o.max]:o.colors[2]}:o.colors),v=E(()=>{const R=s(i.value,m.value);return dt(R)?"":R}),y=E(()=>{let R="";return f.value?R=`${g.value}%`:o.allowHalf&&(R="50%"),{color:v.value,width:R}}),w=E(()=>Xe(o.icons)?{[o.lowThreshold]:o.icons[0],[o.highThreshold]:{value:o.icons[1],excluded:!0},[o.max]:o.icons[2]}:o.icons),S=E(()=>s(o.modelValue,w.value)),$=E(()=>f.value?o.disabledVoidIcon:o.voidIcon),k=E(()=>s(i.value,w.value)),T=E(()=>{const R=Array.from({length:o.max}),z=i.value;return R.fill(k.value,0,z),R.fill($.value,z,o.max),R});function O(R){const z=f.value&&g.value>0&&R-1o.modelValue,W=o.allowHalf&&c.value&&R-.5<=i.value&&R>i.value;return z||W}function L(R){f.value||(o.allowHalf&&c.value?(n(tt,i.value),o.modelValue!==i.value&&n("change",i.value)):(n(tt,R),o.modelValue!==R&&n("change",R)))}function B(R){if(f.value)return;let z=i.value;const W=R.code;return W===Ie.up||W===Ie.right?(o.allowHalf?z+=.5:z+=1,R.stopPropagation(),R.preventDefault()):(W===Ie.left||W===Ie.down)&&(o.allowHalf?z-=.5:z-=1,R.stopPropagation(),R.preventDefault()),z=z<0?0:z,z=z>o.max?o.max:z,n(tt,z),n("change",z),z}function V(R,z){if(!f.value){if(o.allowHalf){let W=z.target;oo(W,a.e("item"))&&(W=W.querySelector(`.${a.e("icon")}`)),(W.clientWidth===0||oo(W,a.e("decimal")))&&(W=W.parentNode),c.value=z.offsetX*2<=W.clientWidth,i.value=c.value?R-.5:R}else i.value=R;u.value=R}}function H(){f.value||(o.allowHalf&&(c.value=o.modelValue!==Math.floor(o.modelValue)),i.value=o.modelValue,u.value=-1)}return pe(()=>o.modelValue,R=>{i.value=R,c.value=o.modelValue!==Math.floor(o.modelValue)}),o.modelValue||n(tt,0),t({setCurrentValue:V,resetCurrentValue:H}),(R,z)=>(C(),M("div",{class:_([b(d),b(a).is("disabled",b(f))]),role:"slider","aria-valuenow":i.value,"aria-valuetext":b(h),"aria-valuemin":"0","aria-valuemax":R.max,tabindex:"0",style:De(b(p)),onKeydown:B},[(C(!0),M(Le,null,rt(R.max,(W,P)=>(C(),M("span",{key:P,class:_(b(a).e("item")),onMousemove:N=>V(W,N),onMouseleave:H,onClick:N=>L(W)},[Y(b(je),{class:_([b(a).e("icon"),{hover:u.value===W},b(a).is("active",W<=i.value)])},{default:j(()=>[O(W)?G("v-if",!0):(C(),x(ft(b(T)[W-1]),{key:0})),O(W)?(C(),x(b(je),{key:1,style:De(b(y)),class:_([b(a).e("icon"),b(a).e("decimal")])},{default:j(()=>[(C(),x(ft(b(S))))]),_:1},8,["style","class"])):G("v-if",!0)]),_:2},1032,["class"])],42,FY))),128)),R.showText||R.showScore?(C(),M("span",{key:0,class:_(b(a).e("text"))},he(b(h)),3)):G("v-if",!0)],46,VY))}}));var KY=ge(zY,[["__file","/home/runner/work/element-plus/element-plus/packages/components/rate/src/rate.vue"]]);const WY=ot(KY),Al={success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},mg={[Al.success]:nD,[Al.warning]:ia,[Al.error]:np,[Al.info]:op},jY=Ve({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{values:["success","warning","info","error"],default:"info"}}),vg="ElResult",YY=te({name:vg,props:jY,setup(e,{slots:t}){const n=we("result");Ma({scope:vg,type:"Slot",from:"subTitle",replacement:"sub-title",version:"2.1.3",ref:"https://github.com/element-plus/element-plus/pull/6636/"},E(()=>!!t.subTitle));const o=E(()=>{const s=e.icon,l=s&&Al[s]?Al[s]:"icon-info",r=mg[l]||mg["icon-info"];return{class:l,component:r}});return{ns:n,resultIcon:o}}});function UY(e,t,n,o,s,l){return C(),M("div",{class:_(e.ns.b())},[D("div",{class:_(e.ns.e("icon"))},[ie(e.$slots,"icon",{},()=>[e.resultIcon.component?(C(),x(ft(e.resultIcon.component),{key:0,class:_(e.resultIcon.class)},null,8,["class"])):G("v-if",!0)])],2),e.title||e.$slots.title?(C(),M("div",{key:0,class:_(e.ns.e("title"))},[ie(e.$slots,"title",{},()=>[D("p",null,he(e.title),1)])],2)):G("v-if",!0),e.subTitle||e.$slots["sub-title"]?(C(),M("div",{key:1,class:_(e.ns.e("subtitle"))},[ie(e.$slots,"sub-title",{},()=>[D("p",null,he(e.subTitle),1)])],2)):G("v-if",!0),e.$slots.extra?(C(),M("div",{key:2,class:_(e.ns.e("extra"))},[ie(e.$slots,"extra")],2)):G("v-if",!0)],2)}var qY=ge(YY,[["render",UY],["__file","/home/runner/work/element-plus/element-plus/packages/components/result/src/result.vue"]]);const GY=ot(qY),XY=Ve({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:["start","center","end","space-around","space-between","space-evenly"],default:"start"},align:{type:String,values:["top","middle","bottom"],default:"top"}}),JY=te({name:"ElRow",props:XY,setup(e,{slots:t}){const n=we("row"),o=E(()=>e.gutter);st(x0,{gutter:o});const s=E(()=>{const l={marginLeft:"",marginRight:""};return e.gutter&&(l.marginLeft=`-${e.gutter/2}px`,l.marginRight=l.marginLeft),l});return()=>Y(e.tag,{class:[n.b(),n.is(`justify-${e.justify}`,e.justify!=="start"),n.is(`align-${e.align}`,e.align!=="top")],style:s.value},{default:()=>{var l;return[(l=t.default)==null?void 0:l.call(t)]}})}}),ZY=ot(JY);var gg=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function QY(e,t){return!!(e===t||gg(e)&&gg(t))}function xY(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const t=nt().proxy.$props;return E(()=>{const n=(o,s,l)=>({});return t.perfMode?Mu(n):eU(n)})},nU=50,bg="item-rendered",yg="scroll",tC="forward",nC="backward",fa="auto",oC="smart",sC="start",tu="center",lC="end",xl="horizontal",Ap="vertical",oU="ltr",Ei="rtl",rC="negative",sU="positive-ascending",aC="positive-descending",lU={[xl]:"left",[Ap]:"top"},rU=20,aU={[xl]:"deltaX",[Ap]:"deltaY"},iU=({atEndEdge:e,atStartEdge:t,layout:n},o)=>{let s,l=0;const r=i=>i<0&&t.value||i>0&&e.value;return{hasReachedEdge:r,onWheel:i=>{j0(s);const u=i[aU[n.value]];r(l)&&r(l+u)||(l+=u,lp()||i.preventDefault(),s=W0(()=>{o(l),l=0}))}}},Fd=fo({type:$e([Number,Function]),required:!0}),Hd=fo({type:Number}),zd=fo({type:Number,default:2}),uU=fo({type:String,values:["ltr","rtl"],default:"ltr"}),Kd=fo({type:Number,default:0}),nu=fo({type:Number,required:!0}),iC=fo({type:String,values:["horizontal","vertical"],default:Ap}),uC=Ve({className:{type:String,default:""},containerElement:{type:$e([String,Object]),default:"div"},data:{type:$e(Array),default:()=>Pt([])},direction:uU,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:$e([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),cU=Ve(ne({cache:zd,estimatedItemSize:Hd,layout:iC,initScrollOffset:Kd,total:nu,itemSize:Fd},uC));Ve(ne({columnCache:zd,columnWidth:Fd,estimatedColumnWidth:Hd,estimatedRowHeight:Hd,initScrollLeft:Kd,initScrollTop:Kd,rowCache:zd,rowHeight:Fd,totalColumn:nu,totalRow:nu},uC));const dU=Ve({layout:iC,total:nu,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},visible:Boolean}),Dc=(e,t)=>ee===oU||e===Ei||e===xl;let Cl=null;function wg(e=!1){if(Cl===null||e){const t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";const o=document.createElement("div"),s=o.style;return s.width="100px",s.height="100px",t.appendChild(o),document.body.appendChild(t),t.scrollLeft>0?Cl=aC:(t.scrollLeft=1,t.scrollLeft===0?Cl=rC:Cl=sU),document.body.removeChild(t),Cl}return Cl}function fU({move:e,size:t,bar:n},o){const s={},l=`translate${n.axis}(${e}px)`;return s[n.size]=t,s.transform=l,s.msTransform=l,s.webkitTransform=l,o==="horizontal"?s.height="100%":s.width="100%",s}const pU=te({name:"ElVirtualScrollBar",props:dU,emits:["scroll","start-move","stop-move"],setup(e,{emit:t}){const o=A(),s=A();let l=null,r=null;const a=yt({isDragging:!1,traveled:0}),i=E(()=>C1[e.layout]),u=E(()=>e.clientSize-4),c=E(()=>({position:"absolute",width:xl===e.layout?`${u.value}px`:"6px",height:xl===e.layout?"6px":`${u.value}px`,[lU[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),d=E(()=>{const $=e.ratio,k=e.clientSize;if($>=100)return Number.POSITIVE_INFINITY;if($>=50)return $*k/100;const T=k/3;return Math.floor(Math.min(Math.max($*k,rU),T))}),f=E(()=>{if(!Number.isFinite(d.value))return{display:"none"};const $=`${d.value}px`;return fU({bar:i.value,size:$,move:a.traveled},e.layout)}),p=E(()=>Math.floor(e.clientSize-d.value-4)),h=()=>{Tt(window,"mousemove",y),Tt(window,"mouseup",v);const $=b(s);!$||(r=document.onselectstart,document.onselectstart=()=>!1,Tt($,"touchmove",y),Tt($,"touchend",v))},g=()=>{Vt(window,"mousemove",y),Vt(window,"mouseup",v),document.onselectstart=r,r=null;const $=b(s);!$||(Vt($,"touchmove",y),Vt($,"touchend",v))},m=$=>{$.stopImmediatePropagation(),!($.ctrlKey||[1,2].includes($.button))&&(a.isDragging=!0,a[i.value.axis]=$.currentTarget[i.value.offset]-($[i.value.client]-$.currentTarget.getBoundingClientRect()[i.value.direction]),t("start-move"),h())},v=()=>{a.isDragging=!1,a[i.value.axis]=0,t("stop-move"),g()},y=$=>{const{isDragging:k}=a;if(!k||!s.value||!o.value)return;const T=a[i.value.axis];if(!T)return;j0(l);const O=(o.value.getBoundingClientRect()[i.value.direction]-$[i.value.client])*-1,L=s.value[i.value.offset]-T,B=O-L;l=W0(()=>{a.traveled=Math.max(0,Math.min(B,p.value)),t("scroll",B,p.value)})},w=$=>{const k=Math.abs($.target.getBoundingClientRect()[i.value.direction]-$[i.value.client]),T=s.value[i.value.offset]/2,O=k-T;a.traveled=Math.max(0,Math.min(O,p.value)),t("scroll",O,p.value)},S=$=>$.preventDefault();return pe(()=>e.scrollFrom,$=>{a.isDragging||(a.traveled=Math.ceil($*p.value))}),xe(()=>{!ct||(Tt(o.value,"touchstart",S),Tt(s.value,"touchstart",m))}),_t(()=>{Vt(o.value,"touchstart",S),g()}),()=>Pe("div",{role:"presentation",ref:o,class:"el-virtual-scrollbar",style:c.value,onMousedown:Ke(w,["stop","prevent"])},Pe("div",{ref:s,class:"el-scrollbar__thumb",style:f.value,onMousedown:m},[]))}}),cC=({name:e,getOffset:t,getItemSize:n,getItemOffset:o,getEstimatedTotalSize:s,getStartIndexForOffset:l,getStopIndexForStartIndex:r,initCache:a,clearCache:i,validateProps:u})=>te({name:e!=null?e:"ElVirtualList",props:cU,emits:[bg,yg],setup(c,{emit:d,expose:f}){u(c);const p=nt(),h=A(a(c,p)),g=tU(),m=A(),v=A(),y=A(),w=A({isScrolling:!1,scrollDir:"forward",scrollOffset:ht(c.initScrollOffset)?c.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:c.scrollbarAlwaysOn}),S=E(()=>{const{total:J,cache:ae}=c,{isScrolling:Ee,scrollDir:Me,scrollOffset:Z}=b(w);if(J===0)return[0,0,0,0];const ve=l(c,Z,b(h)),Ce=r(c,ve,Z,b(h)),ke=!Ee||Me===nC?Math.max(1,ae):1,Oe=!Ee||Me===tC?Math.max(1,ae):1;return[Math.max(0,ve-ke),Math.max(0,Math.min(J-1,Ce+Oe)),ve,Ce]}),$=E(()=>s(c,b(h))),k=E(()=>pa(c.layout)),T=E(()=>[{position:"relative",[`overflow-${k.value?"x":"y"}`]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:c.direction,height:ht(c.height)?`${c.height}px`:c.height,width:ht(c.width)?`${c.width}px`:c.width},c.style]),O=E(()=>{const J=b($),ae=b(k);return{height:ae?"100%":`${J}px`,pointerEvents:b(w).isScrolling?"none":void 0,width:ae?`${J}px`:"100%"}}),L=E(()=>k.value?c.width:c.height),{onWheel:B}=iU({atStartEdge:E(()=>w.value.scrollOffset<=0),atEndEdge:E(()=>w.value.scrollOffset>=$.value),layout:E(()=>c.layout)},J=>{var ae,Ee;(Ee=(ae=y.value).onMouseUp)==null||Ee.call(ae),P(Math.min(w.value.scrollOffset+J,$.value-L.value))}),V=()=>{const{total:J}=c;if(J>0){const[Z,ve,Ce,ke]=b(S);d(bg,Z,ve,Ce,ke)}const{scrollDir:ae,scrollOffset:Ee,updateRequested:Me}=b(w);d(yg,ae,Ee,Me)},H=J=>{const{clientHeight:ae,scrollHeight:Ee,scrollTop:Me}=J.currentTarget,Z=b(w);if(Z.scrollOffset===Me)return;const ve=Math.max(0,Math.min(Me,Ee-ae));w.value=Te(ne({},Z),{isScrolling:!0,scrollDir:Dc(Z.scrollOffset,ve),scrollOffset:ve,updateRequested:!1}),ze(U)},R=J=>{const{clientWidth:ae,scrollLeft:Ee,scrollWidth:Me}=J.currentTarget,Z=b(w);if(Z.scrollOffset===Ee)return;const{direction:ve}=c;let Ce=Ee;if(ve===Ei)switch(wg()){case rC:{Ce=-Ee;break}case aC:{Ce=Me-ae-Ee;break}}Ce=Math.max(0,Math.min(Ce,Me-ae)),w.value=Te(ne({},Z),{isScrolling:!0,scrollDir:Dc(Z.scrollOffset,Ce),scrollOffset:Ce,updateRequested:!1}),ze(U)},z=J=>{b(k)?R(J):H(J),V()},W=(J,ae)=>{const Ee=($.value-L.value)/ae*J;P(Math.min($.value-L.value,Ee))},P=J=>{J=Math.max(J,0),J!==b(w).scrollOffset&&(w.value=Te(ne({},b(w)),{scrollOffset:J,scrollDir:Dc(b(w).scrollOffset,J),updateRequested:!0}),ze(U))},N=(J,ae=fa)=>{const{scrollOffset:Ee}=b(w);J=Math.max(0,Math.min(J,c.total-1)),P(t(c,J,ae,Ee,b(h)))},I=J=>{const{direction:ae,itemSize:Ee,layout:Me}=c,Z=g.value(i&&Ee,i&&Me,i&&ae);let ve;if(at(Z,String(J)))ve=Z[J];else{const Ce=o(c,J,b(h)),ke=n(c,J,b(h)),Oe=b(k),We=ae===Ei,qe=Oe?Ce:0;Z[J]=ve={position:"absolute",left:We?void 0:`${qe}px`,right:We?`${qe}px`:void 0,top:Oe?0:`${Ce}px`,height:Oe?"100%":`${ke}px`,width:Oe?`${ke}px`:"100%"}}return ve},U=()=>{w.value.isScrolling=!1,ze(()=>{g.value(-1,null,null)})},q=()=>{const J=m.value;J&&(J.scrollTop=0)};xe(()=>{if(!ct)return;const{initScrollOffset:J}=c,ae=b(m);ht(J)&&ae&&(b(k)?ae.scrollLeft=J:ae.scrollTop=J),V()}),Xn(()=>{const{direction:J,layout:ae}=c,{scrollOffset:Ee,updateRequested:Me}=b(w),Z=b(m);if(Me&&Z)if(ae===xl)if(J===Ei)switch(wg()){case"negative":{Z.scrollLeft=-Ee;break}case"positive-ascending":{Z.scrollLeft=Ee;break}default:{const{clientWidth:ve,scrollWidth:Ce}=Z;Z.scrollLeft=Ce-ve-Ee;break}}else Z.scrollLeft=Ee;else Z.scrollTop=Ee});const Q={clientSize:L,estimatedTotalSize:$,windowStyle:T,windowRef:m,innerRef:v,innerStyle:O,itemsToRender:S,scrollbarRef:y,states:w,getItemStyle:I,onScroll:z,onScrollbarScroll:W,onWheel:B,scrollTo:P,scrollToItem:N,resetScrollTop:q};return f({windowRef:m,innerRef:v,getItemStyleCache:g,scrollTo:P,scrollToItem:N,resetScrollTop:q,states:w}),Q},render(c){var d;const{$slots:f,className:p,clientSize:h,containerElement:g,data:m,getItemStyle:v,innerElement:y,itemsToRender:w,innerStyle:S,layout:$,total:k,onScroll:T,onScrollbarScroll:O,onWheel:L,states:B,useIsScrolling:V,windowStyle:H}=c,[R,z]=w,W=ft(g),P=ft(y),N=[];if(k>0)for(let Q=R;Q<=z;Q++)N.push((d=f.default)==null?void 0:d.call(f,{data:m,key:Q,index:Q,isScrolling:V?B.isScrolling:void 0,style:v(Q)}));const I=[Pe(P,{style:S,ref:"innerRef"},Qe(P)?N:{default:()=>N})],U=Pe(pU,{ref:"scrollbarRef",clientSize:h,layout:$,onScroll:O,ratio:h*100/this.estimatedTotalSize,scrollFrom:B.scrollOffset/(this.estimatedTotalSize-h),total:k}),q=Pe(W,{class:["el-vl__window",p],style:H,onScroll:T,onWheel:L,ref:"windowRef",key:0},Qe(W)?[I]:{default:()=>[I]});return Pe("div",{key:0,class:["el-vl__wrapper",B.scrollbarAlwaysOn?"always-on":""]},[q,U])}}),dC=cC({name:"ElFixedSizeList",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:o,width:s},l,r,a)=>{const i=pa(o)?s:e,u=Math.max(0,t*n-i),c=Math.min(u,l*n),d=Math.max(0,(l+1)*n-i);switch(r===oC&&(a>=d-i&&a<=c+i?r=fa:r=tu),r){case sC:return c;case lC:return d;case tu:{const f=Math.round(d+(c-d)/2);return fu+Math.floor(i/2)?u:f}case fa:default:return a>=d&&a<=c?a:aMath.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:o,width:s},l,r)=>{const a=l*n,i=pa(o)?s:e,u=Math.ceil((i+r-a)/n);return Math.max(0,Math.min(t-1,l+u-1))},initCache(){},clearCache:!0,validateProps(){}}),Nl=(e,t,n)=>{const{itemSize:o}=e,{items:s,lastVisitedIndex:l}=n;if(t>l){let r=0;if(l>=0){const a=s[l];r=a.offset+a.size}for(let a=l+1;a<=t;a++){const i=o(a);s[a]={offset:r,size:i},r+=i}n.lastVisitedIndex=t}return s[t]},hU=(e,t,n)=>{const{items:o,lastVisitedIndex:s}=t;return(s>0?o[s].offset:0)>=n?fC(e,t,0,s,n):mU(e,t,Math.max(0,s),n)},fC=(e,t,n,o,s)=>{for(;n<=o;){const l=n+Math.floor((o-n)/2),r=Nl(e,l,t).offset;if(r===s)return l;rs&&(o=l-1)}return Math.max(0,n-1)},mU=(e,t,n,o)=>{const{total:s}=e;let l=1;for(;n{let s=0;if(o>=e&&(o=e-1),o>=0){const a=t[o];s=a.offset+a.size}const r=(e-o-1)*n;return s+r},vU=cC({name:"ElDynamicSizeList",getItemOffset:(e,t,n)=>Nl(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:Cg,getOffset:(e,t,n,o,s)=>{const{height:l,layout:r,width:a}=e,i=pa(r)?a:l,u=Nl(e,t,s),c=Cg(e,s),d=Math.max(0,Math.min(c-i,u.offset)),f=Math.max(0,u.offset-i+u.size);switch(n===oC&&(o>=f-i&&o<=d+i?n=fa:n=tu),n){case sC:return d;case lC:return f;case tu:return Math.round(f+(d-f)/2);case fa:default:return o>=f&&o<=d?o:ohU(e,n,t),getStopIndexForStartIndex:(e,t,n,o)=>{const{height:s,total:l,layout:r,width:a}=e,i=pa(r)?a:s,u=Nl(e,t,o),c=n+i;let d=u.offset+u.size,f=t;for(;f{var l,r;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,o-1),(l=t.exposed)==null||l.getItemStyleCache(-1),s&&((r=t.proxy)==null||r.$forceUpdate())},n},clearCache:!1,validateProps:({itemSize:e})=>{}}),gU=te({props:{item:{type:Object,required:!0},style:Object,height:Number},setup(){return{ns:we("select")}}});function bU(e,t,n,o,s,l){return e.item.isTitle?(C(),M("div",{key:0,class:_(e.ns.be("group","title")),style:De([e.style,{lineHeight:`${e.height}px`}])},he(e.item.label),7)):(C(),M("div",{key:1,class:_(e.ns.be("group","split")),style:De(e.style)},[D("span",{class:_(e.ns.be("group","split-dash")),style:De({top:`${e.height/2}px`})},null,6)],6))}var yU=ge(gU,[["render",bU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/group-item.vue"]]);function wU(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}const CU={allowCreate:Boolean,autocomplete:{type:String,default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:[String,Object],default:Fo},effect:{type:String,default:"light"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:170},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,label:String,modelValue:[Array,String,Number,Boolean,Object],multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:Array,required:!0},placeholder:{type:String},popperAppendToBody:{type:Boolean,default:void 0},teleported:Zt.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},remote:Boolean,size:{type:String,validator:On},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:{type:Boolean,default:!1}},$U={data:Array,disabled:Boolean,hovering:Boolean,item:Object,index:Number,style:Object,selected:Boolean,created:Boolean},kU=te({props:$U,emits:["select","hover"],setup(e,{emit:t}){const n=we("select"),{hoverItem:o,selectOptionClick:s}=wU(e,{emit:t});return{ns:n,hoverItem:o,selectOptionClick:s}}}),SU=["aria-selected"];function EU(e,t,n,o,s,l){return C(),M("li",{"aria-selected":e.selected,style:De(e.style),class:_([e.ns.be("dropdown","option-item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),{hover:e.hovering}]),onMouseenter:t[0]||(t[0]=(...r)=>e.hoverItem&&e.hoverItem(...r)),onClick:t[1]||(t[1]=Ke((...r)=>e.selectOptionClick&&e.selectOptionClick(...r),["stop"]))},[ie(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[D("span",null,he(e.item.label),1)])],46,SU)}var _U=ge(kU,[["render",EU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/option-item.vue"]]);const pC="ElSelectV2Injection",TU=te({name:"ElSelectDropdown",props:{data:Array,hoveringIndex:Number,width:Number},setup(e){const t=Ne(pC),n=we("select"),o=A([]),s=A(null),l=E(()=>Cn(t.props.estimatedOptionHeight)),r=E(()=>l.value?{itemSize:t.props.itemHeight}:{estimatedSize:t.props.estimatedOptionHeight,itemSize:h=>o.value[h]}),a=(h=[],g)=>{const{props:{valueKey:m}}=t;return dt(g)?h&&h.some(v=>It(v,m)===It(g,m)):h.includes(g)},i=(h,g)=>{if(dt(g)){const{valueKey:m}=t.props;return It(h,m)===It(g,m)}else return h===g};return{ns:n,select:t,listProps:r,listRef:s,isSized:l,isItemDisabled:(h,g)=>{const{disabled:m,multiple:v,multipleLimit:y}=t.props;return m||!g&&(v?y>0&&h.length>=y:!1)},isItemHovering:h=>e.hoveringIndex===h,isItemSelected:(h,g)=>{const{valueKey:m}=t.props;return t.props.multiple?a(h,It(g,m)):i(h,It(g,m))},scrollToItem:h=>{const g=s.value;g&&g.scrollToItem(h)},resetScrollTop:()=>{const h=s.value;h&&h.resetScrollTop()}}},render(e,t){var n;const{$slots:o,data:s,listProps:l,select:r,isSized:a,width:i,ns:u,isItemDisabled:c,isItemHovering:d,isItemSelected:f}=e,p=a?dC:vU,{props:h,onSelect:g,onHover:m,onKeyboardNavigate:v,onKeyboardSelect:y}=r,{height:w,modelValue:S,multiple:$}=h;if(s.length===0)return Pe("div",{class:u.b("dropdown"),style:{width:`${i}px`}},(n=o.empty)==null?void 0:n.call(o));const k=j(O=>{const{index:L,data:B}=O,V=B[L];if(B[L].type==="Group")return Pe(yU,{item:V,style:O.style,height:a?l.itemSize:l.estimatedSize});const H=f(S,V),R=c(S,H);return Pe(_U,Te(ne({},O),{selected:H,disabled:V.disabled||R,created:!!V.created,hovering:d(L),item:V,onSelect:g,onHover:m}),{default:j(z=>ie(o,"default",z,()=>[Pe("span",V.label)]))})}),T=Pe(p,ne({ref:"listRef",className:u.be("dropdown","list"),data:s,height:w,width:i,total:s.length,scrollbarAlwaysOn:h.scrollbarAlwaysOn,onKeydown:[t[1]||(t[1]=lt(Ke(()=>v("forward"),["stop","prevent"]),["down"])),t[2]||(t[2]=lt(Ke(()=>v("backward"),["stop","prevent"]),["up"])),t[3]||(t[3]=lt(Ke(y,["stop","prevent"]),["enter"])),t[4]||(t[4]=lt(Ke(()=>r.expanded=!1,["stop","prevent"]),["esc"])),t[5]||(t[5]=lt(()=>r.expanded=!1,["tab"]))]},l),{default:k});return Pe("div",{class:[u.b("dropdown"),u.is("multiple",$)]},[T])}});var AU=ge(TU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select-dropdown.vue"]]);function NU(e,t){const n=A(0),o=A(null),s=E(()=>e.allowCreate&&e.filterable);function l(c){const d=f=>f.value===c;return e.options&&e.options.some(d)||t.createdOptions.some(d)}function r(c){!s.value||(e.multiple&&c.created?n.value++:o.value=c)}function a(c){if(s.value)if(c&&c.length>0&&!l(c)){const d={value:c,label:c,created:!0,disabled:!1};t.createdOptions.length>=n.value?t.createdOptions[n.value]=d:t.createdOptions.push(d)}else if(e.multiple)t.createdOptions.length=n.value;else{const d=o.value;t.createdOptions.length=0,d&&d.created&&t.createdOptions.push(d)}}function i(c){if(!s.value||!c||!c.created||c.created&&e.reserveKeyword&&t.inputValue===c.label)return;const d=t.createdOptions.findIndex(f=>f.value===c.value);~d&&(t.createdOptions.splice(d,1),n.value--)}function u(){s.value&&(t.createdOptions.length=0,n.value=0)}return{createNewOption:a,removeNewOption:i,selectNewOption:r,clearAllNewOption:u}}const MU=e=>{const t=[];return e.forEach(n=>{Xe(n.options)?(t.push({label:n.label,isTitle:!0,type:"Group"}),n.options.forEach(o=>{t.push(o)}),t.push({type:"Group"})):t.push(n)}),t};function OU(e){const t=A(!1);return{handleCompositionStart:()=>{t.value=!0},handleCompositionUpdate:l=>{const r=l.target.value,a=r[r.length-1]||"";t.value=!Bu(a)},handleCompositionEnd:l=>{t.value&&(t.value=!1,et(e)&&e(l))}}}const $g="",kg=11,IU={larget:51,default:42,small:33},DU="ElSelectV2",PU=(e,t)=>{const{t:n}=kt(),o=we("select-v2"),s=we("input"),{form:l,formItem:r}=dr(),{compatTeleported:a}=fr(DU,"popperAppendToBody"),i=yt({inputValue:$g,displayInputValue:$g,calculatedWidth:0,cachedPlaceholder:"",cachedOptions:[],createdOptions:[],createdLabel:"",createdSelected:!1,currentPlaceholder:"",hoveringIndex:-1,comboBoxHovering:!1,isOnComposition:!1,isSilentBlur:!1,isComposing:!1,inputLength:20,selectWidth:200,initialInputHeight:0,previousQuery:null,previousValue:"",query:"",selectedLabel:"",softFocus:!1,tagInMultiLine:!1}),u=A(-1),c=A(-1),d=A(null),f=A(null),p=A(null),h=A(null),g=A(null),m=A(null),v=A(null),y=A(!1),w=E(()=>e.disabled||(l==null?void 0:l.disabled)),S=E(()=>{const Se=R.value.length*34;return Se>e.height?e.height:Se}),$=E(()=>e.modelValue!==void 0&&e.modelValue!==null&&e.modelValue!==""),k=E(()=>{const Se=e.multiple?Array.isArray(e.modelValue)&&e.modelValue.length>0:$.value;return e.clearable&&!w.value&&i.comboBoxHovering&&Se}),T=E(()=>e.remote&&e.filterable?"":Aa),O=E(()=>T.value&&o.is("reverse",y.value)),L=E(()=>(r==null?void 0:r.validateState)||""),B=E(()=>V0[L.value]),V=E(()=>e.remote?300:0),H=E(()=>{const Se=R.value;return e.loading?e.loadingText||n("el.select.loading"):e.remote&&i.inputValue===""&&Se.length===0?!1:e.filterable&&i.inputValue&&Se.length>0?e.noMatchText||n("el.select.noMatch"):Se.length===0?e.noDataText||n("el.select.noData"):null}),R=E(()=>{const Se=Ye=>{const vt=i.inputValue;return vt?Ye.label.includes(vt):!0};return e.loading?[]:MU(e.options.concat(i.createdOptions).map(Ye=>{if(Xe(Ye.options)){const vt=Ye.options.filter(Se);if(vt.length>0)return Te(ne({},Ye),{options:vt})}else if(e.remote||Se(Ye))return Ye;return null}).filter(Ye=>Ye!==null))}),z=E(()=>R.value.every(Se=>Se.disabled)),W=Wt(),P=E(()=>W.value==="small"?"small":"default"),N=E(()=>{const Se=m.value,Ye=P.value||"default",vt=Se?Number.parseInt(getComputedStyle(Se).paddingLeft):0,Nt=Se?Number.parseInt(getComputedStyle(Se).paddingRight):0;return i.selectWidth-Nt-vt-IU[Ye]}),I=()=>{var Se,Ye,vt;c.value=((vt=(Ye=(Se=g.value)==null?void 0:Se.getBoundingClientRect)==null?void 0:Ye.call(Se))==null?void 0:vt.width)||200},U=E(()=>({width:`${i.calculatedWidth===0?kg:Math.ceil(i.calculatedWidth)+kg}px`})),q=E(()=>Xe(e.modelValue)?e.modelValue.length===0&&!i.displayInputValue:e.filterable?i.displayInputValue.length===0:!0),Q=E(()=>{const Se=e.placeholder||n("el.select.placeholder");return e.multiple?Se:i.selectedLabel||Se}),J=E(()=>{var Se,Ye;return(Ye=(Se=h.value)==null?void 0:Se.popperRef)==null?void 0:Ye.contentRef}),ae=E(()=>{if(e.multiple){const Se=e.modelValue.length;if(e.modelValue.length>0)return R.value.findIndex(Ye=>Ye.value===e.modelValue[Se-1])}else if(e.modelValue)return R.value.findIndex(Se=>Se.value===e.modelValue);return-1}),Ee=E(()=>y.value&&H.value!==!1),{createNewOption:Me,removeNewOption:Z,selectNewOption:ve,clearAllNewOption:Ce}=NU(e,i),{handleCompositionStart:ke,handleCompositionUpdate:Oe,handleCompositionEnd:We}=OU(Se=>Pn(Se)),qe=()=>{var Se,Ye,vt;(Ye=(Se=f.value).focus)==null||Ye.call(Se),(vt=h.value)==null||vt.updatePopper()},K=()=>{if(!e.automaticDropdown&&!w.value)return i.isComposing&&(i.softFocus=!0),ze(()=>{var Se,Ye;y.value=!y.value,(Ye=(Se=f.value)==null?void 0:Se.focus)==null||Ye.call(Se)})},X=()=>(e.filterable&&i.inputValue!==i.selectedLabel&&(i.query=i.selectedLabel),ye(i.inputValue),ze(()=>{Me(i.inputValue)})),fe=hn(X,V.value),ye=Se=>{i.previousQuery!==Se&&(i.previousQuery=Se,e.filterable&&et(e.filterMethod)?e.filterMethod(Se):e.filterable&&e.remote&&et(e.remoteMethod)&&e.remoteMethod(Se))},be=Se=>{_n(e.modelValue,Se)||t(qt,Se)},_e=Se=>{t(tt,Se),be(Se),i.previousValue=Se.toString()},re=(Se=[],Ye)=>{if(!dt(Ye))return Se.indexOf(Ye);const vt=e.valueKey;let Nt=-1;return Se.some((To,po)=>It(To,vt)===It(Ye,vt)?(Nt=po,!0):!1),Nt},se=Se=>dt(Se)?It(Se,e.valueKey):Se,ee=Se=>dt(Se)?Se.label:Se,ue=()=>{if(!(e.collapseTags&&!e.filterable))return ze(()=>{var Se,Ye;if(!f.value)return;const vt=m.value;g.value.height=vt.offsetHeight,y.value&&H.value!==!1&&((Ye=(Se=h.value)==null?void 0:Se.updatePopper)==null||Ye.call(Se))})},Re=()=>{var Se,Ye;if(F(),I(),(Ye=(Se=h.value)==null?void 0:Se.updatePopper)==null||Ye.call(Se),e.multiple)return ue()},F=()=>{const Se=m.value;Se&&(i.selectWidth=Se.getBoundingClientRect().width)},de=(Se,Ye,vt=!0)=>{var Nt,To;if(e.multiple){let po=e.modelValue.slice();const Da=re(po,se(Se));Da>-1?(po=[...po.slice(0,Da),...po.slice(Da+1)],i.cachedOptions.splice(Da,1),Z(Se)):(e.multipleLimit<=0||po.length{const{valueKey:vt}=e,Nt=e.modelValue.indexOf(It(Ye,vt));if(Nt>-1&&!w.value){const To=[...e.modelValue.slice(0,Nt),...e.modelValue.slice(Nt+1)];return i.cachedOptions.splice(Nt,1),_e(To),t("remove-tag",It(Ye,vt)),i.softFocus=!0,Z(Ye),ze(qe)}Se.stopPropagation()},Ze=Se=>{const Ye=i.isComposing;i.isComposing=!0,i.softFocus?i.softFocus=!1:Ye||t("focus",Se)},He=()=>(i.softFocus=!1,ze(()=>{var Se,Ye;(Ye=(Se=f.value)==null?void 0:Se.blur)==null||Ye.call(Se),v.value&&(i.calculatedWidth=v.value.getBoundingClientRect().width),i.isSilentBlur?i.isSilentBlur=!1:i.isComposing&&t("blur"),i.isComposing=!1})),oe=()=>{i.displayInputValue.length>0?Ae(""):y.value=!1},me=Se=>{if(i.displayInputValue.length===0){Se.preventDefault();const Ye=e.modelValue.slice();Ye.pop(),Z(i.cachedOptions.pop()),_e(Ye)}},ce=()=>{let Se;return Xe(e.modelValue)?Se=[]:Se="",i.softFocus=!0,e.multiple?i.cachedOptions=[]:i.selectedLabel="",y.value=!1,_e(Se),t("clear"),Ce(),ze(qe)},Ae=Se=>{i.displayInputValue=Se,i.inputValue=Se},Ue=(Se,Ye=void 0)=>{const vt=R.value;if(!["forward","backward"].includes(Se)||w.value||vt.length<=0||z.value)return;if(!y.value)return K();Ye===void 0&&(Ye=i.hoveringIndex);let Nt=-1;Se==="forward"?(Nt=Ye+1,Nt>=vt.length&&(Nt=0)):Se==="backward"&&(Nt=Ye-1,Nt<0&&(Nt=vt.length-1));const To=vt[Nt];if(To.disabled||To.type==="Group")return Ue(Se,Nt);St(Nt),bs(Nt)},mt=()=>{if(y.value)~i.hoveringIndex&&R.value[i.hoveringIndex]&&de(R.value[i.hoveringIndex],i.hoveringIndex,!1);else return K()},St=Se=>{i.hoveringIndex=Se},bt=()=>{i.hoveringIndex=-1},At=()=>{var Se;const Ye=f.value;Ye&&((Se=Ye.focus)==null||Se.call(Ye))},Pn=Se=>{const Ye=Se.target.value;if(Ae(Ye),i.displayInputValue.length>0&&!y.value&&(y.value=!0),i.calculatedWidth=v.value.getBoundingClientRect().width,e.multiple&&ue(),e.remote)fe();else return X()},an=()=>(y.value=!1,He()),vn=()=>(i.inputValue=i.displayInputValue,ze(()=>{~ae.value&&(St(ae.value),bs(i.hoveringIndex))})),bs=Se=>{p.value.scrollToItem(Se)},mr=()=>{if(bt(),e.multiple)if(e.modelValue.length>0){let Se=!1;i.cachedOptions.length=0,i.previousValue=e.modelValue.toString(),e.modelValue.forEach(Ye=>{const vt=R.value.findIndex(Nt=>se(Nt)===Ye);~vt&&(i.cachedOptions.push(R.value[vt]),Se||St(vt),Se=!0)})}else i.cachedOptions=[],i.previousValue="";else if($.value){i.previousValue=e.modelValue;const Se=R.value,Ye=Se.findIndex(vt=>se(vt)===se(e.modelValue));~Ye?(i.selectedLabel=Se[Ye].label,St(Ye)):i.selectedLabel=`${e.modelValue}`}else i.selectedLabel="",i.previousValue="";I()};return pe(y,Se=>{var Ye,vt;t("visible-change",Se),Se?(vt=(Ye=h.value).update)==null||vt.call(Ye):(i.displayInputValue="",Me(""))}),pe(()=>e.modelValue,(Se,Ye)=>{var vt;(!Se||Se.toString()!==i.previousValue)&&mr(),_n(Se,Ye)||(vt=r==null?void 0:r.validate)==null||vt.call(r,"change").catch(Nt=>void 0)},{deep:!0}),pe(()=>e.options,()=>{const Se=f.value;(!Se||Se&&document.activeElement!==Se)&&mr()},{deep:!0}),pe(R,()=>ze(p.value.resetScrollTop)),xe(()=>{mr(),ir(g.value,Re)}),$a(()=>{ur(g.value,Re)}),{collapseTagSize:P,currentPlaceholder:Q,expanded:y,emptyText:H,popupHeight:S,debounce:V,filteredOptions:R,iconComponent:T,iconReverse:O,inputWrapperStyle:U,popperSize:c,dropdownMenuVisible:Ee,hasModelValue:$,shouldShowPlaceholder:q,selectDisabled:w,selectSize:W,showClearBtn:k,states:i,tagMaxWidth:N,nsSelectV2:o,nsInput:s,calculatorRef:v,controlRef:d,inputRef:f,menuRef:p,popper:h,selectRef:g,selectionRef:m,popperRef:J,validateState:L,validateIcon:B,compatTeleported:a,debouncedOnInputChange:fe,deleteTag:Fe,getLabel:ee,getValueKey:se,handleBlur:He,handleClear:ce,handleClickOutside:an,handleDel:me,handleEsc:oe,handleFocus:Ze,handleMenuEnter:vn,handleResize:Re,toggleMenu:K,scrollTo:bs,onInput:Pn,onKeyboardNavigate:Ue,onKeyboardSelect:mt,onSelect:de,onHover:St,onUpdateInputValue:Ae,handleCompositionStart:ke,handleCompositionEnd:We,handleCompositionUpdate:Oe}},LU=te({name:"ElSelectV2",components:{ElSelectMenu:AU,ElTag:ju,ElTooltip:mn,ElIcon:je},directives:{ClickOutside:ml,ModelText:Bf},props:CU,emits:[tt,qt,"remove-tag","clear","visible-change","focus","blur"],setup(e,{emit:t}){const n=PU(e,t);return st(pC,{props:yt(Te(ne({},Ut(e)),{height:n.popupHeight})),onSelect:n.onSelect,onHover:n.onHover,onKeyboardNavigate:n.onKeyboardNavigate,onKeyboardSelect:n.onKeyboardSelect}),n}}),RU={key:0},BU=["id","autocomplete","aria-expanded","aria-labelledby","disabled","readonly","name","unselectable"],VU=["textContent"],FU=["id","aria-labelledby","aria-expanded","autocomplete","disabled","name","readonly","unselectable"],HU=["textContent"];function zU(e,t,n,o,s,l){const r=le("el-tag"),a=le("el-tooltip"),i=le("el-icon"),u=le("el-select-menu"),c=Mn("model-text"),d=Mn("click-outside");return Ge((C(),M("div",{ref:"selectRef",class:_([e.nsSelectV2.b(),e.nsSelectV2.m(e.selectSize)]),onClick:t[24]||(t[24]=Ke((...f)=>e.toggleMenu&&e.toggleMenu(...f),["stop"])),onMouseenter:t[25]||(t[25]=f=>e.states.comboBoxHovering=!0),onMouseleave:t[26]||(t[26]=f=>e.states.comboBoxHovering=!1)},[Y(a,{ref:"popper",visible:e.dropdownMenuVisible,"onUpdate:visible":t[22]||(t[22]=f=>e.dropdownMenuVisible=f),teleported:e.compatTeleported,"popper-class":[e.nsSelectV2.e("popper"),e.popperClass],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:e.effect,placement:"bottom-start",pure:"",transition:`${e.nsSelectV2.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,onBeforeShow:e.handleMenuEnter,onHide:t[23]||(t[23]=f=>e.states.inputValue=e.states.displayInputValue)},{default:j(()=>{var f;return[D("div",{ref:"selectionRef",class:_([e.nsSelectV2.e("wrapper"),e.nsSelectV2.is("focused",e.states.isComposing),e.nsSelectV2.is("hovering",e.states.comboBoxHovering),e.nsSelectV2.is("filterable",e.filterable),e.nsSelectV2.is("disabled",e.selectDisabled)])},[e.$slots.prefix?(C(),M("div",RU,[ie(e.$slots,"prefix")])):G("v-if",!0),e.multiple?(C(),M("div",{key:1,class:_(e.nsSelectV2.e("selection"))},[e.collapseTags&&e.modelValue.length>0?(C(),M("div",{key:0,class:_(e.nsSelectV2.e("selected-item"))},[Y(r,{closable:!e.selectDisabled&&!((f=e.states.cachedOptions[0])!=null&&f.disable),size:e.collapseTagSize,type:"info","disable-transitions":"",onClose:t[0]||(t[0]=p=>e.deleteTag(p,e.states.cachedOptions[0]))},{default:j(()=>{var p;return[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:De({maxWidth:`${e.tagMaxWidth}px`})},he((p=e.states.cachedOptions[0])==null?void 0:p.label),7)]}),_:1},8,["closable","size"]),e.modelValue.length>1?(C(),x(r,{key:0,closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""},{default:j(()=>[e.collapseTagsTooltip?(C(),x(a,{key:0,disabled:e.dropdownMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:!1},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:De({maxWidth:`${e.tagMaxWidth}px`})},"+ "+he(e.modelValue.length-1),7)]),content:j(()=>[D("div",{class:_(e.nsSelectV2.e("selection"))},[(C(!0),M(Le,null,rt(e.states.cachedOptions,(p,h)=>(C(),M("div",{key:h,class:_(e.nsSelectV2.e("selected-item"))},[(C(),x(r,{key:e.getValueKey(p),closable:!e.selectDisabled&&!p.disabled,size:e.collapseTagSize,class:"in-tooltip",type:"info","disable-transitions":"",onClose:g=>e.deleteTag(g,p)},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:De({maxWidth:`${e.tagMaxWidth}px`})},he(e.getLabel(p)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect"])):(C(),M("span",{key:1,class:_(e.nsSelectV2.e("tags-text")),style:De({maxWidth:`${e.tagMaxWidth}px`})},"+ "+he(e.modelValue.length-1),7))]),_:1},8,["size"])):G("v-if",!0)],2)):(C(!0),M(Le,{key:1},rt(e.states.cachedOptions,(p,h)=>(C(),M("div",{key:h,class:_(e.nsSelectV2.e("selected-item"))},[(C(),x(r,{key:e.getValueKey(p),closable:!e.selectDisabled&&!p.disabled,size:e.collapseTagSize,type:"info","disable-transitions":"",onClose:g=>e.deleteTag(g,p)},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:De({maxWidth:`${e.tagMaxWidth}px`})},he(e.getLabel(p)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128)),D("div",{class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-wrapper")]),style:De(e.inputWrapperStyle)},[Ge(D("input",{id:e.id,ref:"inputRef",autocomplete:e.autocomplete,"aria-autocomplete":"list","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-labelledby":e.label,class:_([e.nsSelectV2.is(e.selectSize),e.nsSelectV2.e("combobox-input")]),disabled:e.disabled,role:"combobox",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,unselectable:e.expanded?"on":void 0,"onUpdate:modelValue":t[1]||(t[1]=(...p)=>e.onUpdateInputValue&&e.onUpdateInputValue(...p)),onFocus:t[2]||(t[2]=(...p)=>e.handleFocus&&e.handleFocus(...p)),onInput:t[3]||(t[3]=(...p)=>e.onInput&&e.onInput(...p)),onCompositionstart:t[4]||(t[4]=(...p)=>e.handleCompositionStart&&e.handleCompositionStart(...p)),onCompositionupdate:t[5]||(t[5]=(...p)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...p)),onCompositionend:t[6]||(t[6]=(...p)=>e.handleCompositionEnd&&e.handleCompositionEnd(...p)),onKeydown:[t[7]||(t[7]=lt(Ke(p=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),t[8]||(t[8]=lt(Ke(p=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),t[9]||(t[9]=lt(Ke((...p)=>e.onKeyboardSelect&&e.onKeyboardSelect(...p),["stop","prevent"]),["enter"])),t[10]||(t[10]=lt(Ke((...p)=>e.handleEsc&&e.handleEsc(...p),["stop","prevent"]),["esc"])),t[11]||(t[11]=lt(Ke((...p)=>e.handleDel&&e.handleDel(...p),["stop"]),["delete"]))]},null,42,BU),[[c,e.states.displayInputValue]]),e.filterable?(C(),M("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:_(e.nsSelectV2.e("input-calculator")),textContent:he(e.states.displayInputValue)},null,10,VU)):G("v-if",!0)],6)],2)):(C(),M(Le,{key:2},[D("div",{class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-wrapper")])},[Ge(D("input",{id:e.id,ref:"inputRef","aria-autocomplete":"list","aria-haspopup":"listbox","aria-labelledby":e.label,"aria-expanded":e.expanded,autocapitalize:"off",autocomplete:e.autocomplete,class:_(e.nsSelectV2.e("combobox-input")),disabled:e.disabled,name:e.name,role:"combobox",readonly:!e.filterable,spellcheck:"false",type:"text",unselectable:e.expanded?"on":void 0,onCompositionstart:t[12]||(t[12]=(...p)=>e.handleCompositionStart&&e.handleCompositionStart(...p)),onCompositionupdate:t[13]||(t[13]=(...p)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...p)),onCompositionend:t[14]||(t[14]=(...p)=>e.handleCompositionEnd&&e.handleCompositionEnd(...p)),onFocus:t[15]||(t[15]=(...p)=>e.handleFocus&&e.handleFocus(...p)),onInput:t[16]||(t[16]=(...p)=>e.onInput&&e.onInput(...p)),onKeydown:[t[17]||(t[17]=lt(Ke(p=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),t[18]||(t[18]=lt(Ke(p=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),t[19]||(t[19]=lt(Ke((...p)=>e.onKeyboardSelect&&e.onKeyboardSelect(...p),["stop","prevent"]),["enter"])),t[20]||(t[20]=lt(Ke((...p)=>e.handleEsc&&e.handleEsc(...p),["stop","prevent"]),["esc"]))],"onUpdate:modelValue":t[21]||(t[21]=(...p)=>e.onUpdateInputValue&&e.onUpdateInputValue(...p))},null,42,FU),[[c,e.states.displayInputValue]])],2),e.filterable?(C(),M("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-calculator")]),textContent:he(e.states.displayInputValue)},null,10,HU)):G("v-if",!0)],64)),e.shouldShowPlaceholder?(C(),M("span",{key:3,class:_([e.nsSelectV2.e("placeholder"),e.nsSelectV2.is("transparent",e.states.isComposing||(e.placeholder&&e.multiple?e.modelValue.length===0:!e.hasModelValue))])},he(e.currentPlaceholder),3)):G("v-if",!0),D("span",{class:_(e.nsSelectV2.e("suffix"))},[e.iconComponent?Ge((C(),x(i,{key:0,class:_([e.nsSelectV2.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])),[[pt,!e.showClearBtn]]):G("v-if",!0),e.showClearBtn&&e.clearIcon?(C(),x(i,{key:1,class:_([e.nsSelectV2.e("caret"),e.nsInput.e("icon")]),onClick:Ke(e.handleClear,["prevent","stop"])},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.validateState&&e.validateIcon?(C(),x(i,{key:2,class:_([e.nsInput.e("icon"),e.nsInput.e("validateIcon")])},{default:j(()=>[(C(),x(ft(e.validateIcon)))]),_:1},8,["class"])):G("v-if",!0)],2)],2)]}),content:j(()=>[Y(u,{ref:"menuRef",data:e.filteredOptions,width:e.popperSize,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn},{default:j(f=>[ie(e.$slots,"default",to(ds(f)))]),empty:j(()=>[ie(e.$slots,"empty",{},()=>[D("p",{class:_(e.nsSelectV2.e("empty"))},he(e.emptyText?e.emptyText:""),3)])]),_:3},8,["data","width","hovering-index","scrollbar-always-on"])]),_:3},8,["visible","teleported","popper-class","popper-options","effect","transition","persistent","onBeforeShow"])],34)),[[d,e.handleClickOutside,e.popperRef]])}var _i=ge(LU,[["render",zU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select.vue"]]);_i.install=e=>{e.component(_i.name,_i)};const KU=_i,WU=KU,jU=Ve({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:Number}}),YU=Ve({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),UU={name:"ElSkeletonItem"},qU=te(Te(ne({},UU),{props:YU,setup(e){const t=we("skeleton");return(n,o)=>(C(),M("div",{class:_([b(t).e("item"),b(t).e(n.variant)])},[n.variant==="image"?(C(),x(b(UP),{key:0})):G("v-if",!0)],2))}}));var ou=ge(qU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton-item.vue"]]);const GU={name:"ElSkeleton"},XU=te(Te(ne({},GU),{props:jU,setup(e,{expose:t}){const n=e,o=we("skeleton"),s=P8(Yt(n,"loading"),n.throttle);return t({uiLoading:s}),(l,r)=>b(s)?(C(),M("div",Et({key:0,class:[b(o).b(),b(o).is("animated",l.animated)]},l.$attrs),[(C(!0),M(Le,null,rt(l.count,a=>(C(),M(Le,{key:a},[l.loading?ie(l.$slots,"template",{key:a},()=>[Y(ou,{class:_(b(o).is("first")),variant:"p"},null,8,["class"]),(C(!0),M(Le,null,rt(l.rows,i=>(C(),x(ou,{key:i,class:_([b(o).e("paragraph"),b(o).is("last",i===l.rows&&l.rows>1)]),variant:"p"},null,8,["class"]))),128))]):G("v-if",!0)],64))),128))],16)):ie(l.$slots,"default",to(Et({key:1},l.$attrs)))}}));var JU=ge(XU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton.vue"]]);const ZU=ot(JU,{SkeletonItem:ou}),QU=Rt(ou),xU=(e,t,n)=>{const o=A(null),s=A(!1),l=E(()=>t.value instanceof Function),r=E(()=>l.value&&t.value(e.modelValue)||e.modelValue),a=hn(()=>{n.value&&(s.value=!0)},50),i=hn(()=>{n.value&&(s.value=!1)},50);return{tooltip:o,tooltipVisible:s,formatValue:r,displayTooltip:a,hideTooltip:i}},eq=(e,t,n)=>{const{disabled:o,min:s,max:l,step:r,showTooltip:a,precision:i,sliderSize:u,formatTooltip:c,emitChange:d,resetSize:f,updateDragging:p}=Ne("SliderProvider"),{tooltip:h,tooltipVisible:g,formatValue:m,displayTooltip:v,hideTooltip:y}=xU(e,c,a),w=E(()=>`${(e.modelValue-s.value)/(l.value-s.value)*100}%`),S=E(()=>e.vertical?{bottom:w.value}:{left:w.value}),$=()=>{t.hovering=!0,v()},k=()=>{t.hovering=!1,t.dragging||y()},T=W=>{o.value||(W.preventDefault(),V(W),Tt(window,"mousemove",H),Tt(window,"touchmove",H),Tt(window,"mouseup",R),Tt(window,"touchend",R),Tt(window,"contextmenu",R))},O=()=>{o.value||(t.newPosition=Number.parseFloat(w.value)-r.value/(l.value-s.value)*100,z(t.newPosition),d())},L=()=>{o.value||(t.newPosition=Number.parseFloat(w.value)+r.value/(l.value-s.value)*100,z(t.newPosition),d())},B=W=>{let P,N;return W.type.startsWith("touch")?(N=W.touches[0].clientY,P=W.touches[0].clientX):(N=W.clientY,P=W.clientX),{clientX:P,clientY:N}},V=W=>{t.dragging=!0,t.isClick=!0;const{clientX:P,clientY:N}=B(W);e.vertical?t.startY=N:t.startX=P,t.startPosition=Number.parseFloat(w.value),t.newPosition=t.startPosition},H=W=>{if(t.dragging){t.isClick=!1,v(),f();let P;const{clientX:N,clientY:I}=B(W);e.vertical?(t.currentY=I,P=(t.startY-t.currentY)/u.value*100):(t.currentX=N,P=(t.currentX-t.startX)/u.value*100),t.newPosition=t.startPosition+P,z(t.newPosition)}},R=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||y(),t.isClick||(z(t.newPosition),d())},0),Vt(window,"mousemove",H),Vt(window,"touchmove",H),Vt(window,"mouseup",R),Vt(window,"touchend",R),Vt(window,"contextmenu",R))},z=async W=>{if(W===null||Number.isNaN(+W))return;W<0?W=0:W>100&&(W=100);const P=100/((l.value-s.value)/r.value);let I=Math.round(W/P)*P*(l.value-s.value)*.01+s.value;I=Number.parseFloat(I.toFixed(i.value)),n(tt,I),!t.dragging&&e.modelValue!==t.oldValue&&(t.oldValue=e.modelValue),await ze(),t.dragging&&v(),h.value.updatePopper()};return pe(()=>t.dragging,W=>{p(W)}),{tooltip:h,tooltipVisible:g,showTooltip:a,wrapperStyle:S,formatValue:m,handleMouseEnter:$,handleMouseLeave:k,onButtonDown:T,onLeftKeyDown:O,onRightKeyDown:L,setPosition:z}},tq=te({name:"ElSliderButton",components:{ElTooltip:mn},props:{modelValue:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:{type:String,default:""}},emits:[tt],setup(e,{emit:t}){const n=we("slider"),o=yt({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:e.modelValue}),{tooltip:s,showTooltip:l,tooltipVisible:r,wrapperStyle:a,formatValue:i,handleMouseEnter:u,handleMouseLeave:c,onButtonDown:d,onLeftKeyDown:f,onRightKeyDown:p,setPosition:h}=eq(e,o,t),{hovering:g,dragging:m}=Ut(o);return{ns:n,tooltip:s,tooltipVisible:r,showTooltip:l,wrapperStyle:a,formatValue:i,handleMouseEnter:u,handleMouseLeave:c,onButtonDown:d,onLeftKeyDown:f,onRightKeyDown:p,setPosition:h,hovering:g,dragging:m}}});function nq(e,t,n,o,s,l){const r=le("el-tooltip");return C(),M("div",{ref:"button",class:_([e.ns.e("button-wrapper"),{hover:e.hovering,dragging:e.dragging}]),style:De(e.wrapperStyle),tabindex:"0",onMouseenter:t[1]||(t[1]=(...a)=>e.handleMouseEnter&&e.handleMouseEnter(...a)),onMouseleave:t[2]||(t[2]=(...a)=>e.handleMouseLeave&&e.handleMouseLeave(...a)),onMousedown:t[3]||(t[3]=(...a)=>e.onButtonDown&&e.onButtonDown(...a)),onTouchstart:t[4]||(t[4]=(...a)=>e.onButtonDown&&e.onButtonDown(...a)),onFocus:t[5]||(t[5]=(...a)=>e.handleMouseEnter&&e.handleMouseEnter(...a)),onBlur:t[6]||(t[6]=(...a)=>e.handleMouseLeave&&e.handleMouseLeave(...a)),onKeydown:[t[7]||(t[7]=lt((...a)=>e.onLeftKeyDown&&e.onLeftKeyDown(...a),["left"])),t[8]||(t[8]=lt((...a)=>e.onRightKeyDown&&e.onRightKeyDown(...a),["right"])),t[9]||(t[9]=lt(Ke((...a)=>e.onLeftKeyDown&&e.onLeftKeyDown(...a),["prevent"]),["down"])),t[10]||(t[10]=lt(Ke((...a)=>e.onRightKeyDown&&e.onRightKeyDown(...a),["prevent"]),["up"]))]},[Y(r,{ref:"tooltip",visible:e.tooltipVisible,"onUpdate:visible":t[0]||(t[0]=a=>e.tooltipVisible=a),placement:"top","stop-popper-mouse-event":!1,"popper-class":e.tooltipClass,disabled:!e.showTooltip,persistent:""},{content:j(()=>[D("span",null,he(e.formatValue),1)]),default:j(()=>[D("div",{class:_([e.ns.e("button"),{hover:e.hovering,dragging:e.dragging}])},null,2)]),_:1},8,["visible","popper-class","disabled"])],38)}var oq=ge(tq,[["render",nq],["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/button.vue"]]);const sq=te({name:"ElMarker",props:{mark:{type:[String,Object],default:()=>{}}},setup(e){const t=we("slider"),n=E(()=>typeof e.mark=="string"?e.mark:e.mark.label);return{ns:t,label:n}},render(){var e;return Pe("div",{class:this.ns.e("marks-text"),style:(e=this.mark)==null?void 0:e.style},this.label)}});var lq=ge(sq,[["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/marker.vue"]]);const rq=e=>E(()=>e.marks?Object.keys(e.marks).map(parseFloat).sort((n,o)=>n-o).filter(n=>n<=e.max&&n>=e.min).map(n=>({point:n,position:(n-e.min)*100/(e.max-e.min),mark:e.marks[n]})):[]),aq=(e,t,n)=>{const o=Ne(Dn,{}),s=Ne(Un,{}),l=jt(null),r=A(null),a=A(null),i={firstButton:r,secondButton:a},u=E(()=>e.disabled||o.disabled||!1),c=E(()=>Math.min(t.firstValue,t.secondValue)),d=E(()=>Math.max(t.firstValue,t.secondValue)),f=E(()=>e.range?`${100*(d.value-c.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),p=E(()=>e.range?`${100*(c.value-e.min)/(e.max-e.min)}%`:"0%"),h=E(()=>e.vertical?{height:e.height}:{}),g=E(()=>e.vertical?{height:f.value,bottom:p.value}:{width:f.value,left:p.value}),m=()=>{l.value&&(t.sliderSize=l.value[`client${e.vertical?"Height":"Width"}`])},v=T=>{const O=e.min+T*(e.max-e.min)/100;if(!e.range){r.value.setPosition(T);return}let L;Math.abs(c.value-O)t.secondValue?"firstButton":"secondButton",i[L].value.setPosition(T)},y=T=>{t.firstValue=T,S(e.range?[c.value,d.value]:T)},w=T=>{t.secondValue=T,e.range&&S([c.value,d.value])},S=T=>{n(tt,T),n(ps,T)},$=async()=>{await ze(),n(qt,e.range?[c.value,d.value]:e.modelValue)};return{elFormItem:s,slider:l,firstButton:r,secondButton:a,sliderDisabled:u,minValue:c,maxValue:d,runwayStyle:h,barStyle:g,resetSize:m,setPosition:v,emitChange:$,onSliderClick:T=>{if(!(u.value||t.dragging)){if(m(),e.vertical){const O=l.value.getBoundingClientRect().bottom;v((O-T.clientY)/t.sliderSize*100)}else{const O=l.value.getBoundingClientRect().left;v((T.clientX-O)/t.sliderSize*100)}$()}},setFirstValue:y,setSecondValue:w}},iq=(e,t,n,o)=>({stops:E(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return[];const r=(e.max-e.min)/e.step,a=100*e.step/(e.max-e.min),i=Array.from({length:r-1}).map((u,c)=>(c+1)*a);return e.range?i.filter(u=>u<100*(n.value-e.min)/(e.max-e.min)||u>100*(o.value-e.min)/(e.max-e.min)):i.filter(u=>u>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:r=>e.vertical?{bottom:`${r}%`}:{left:`${r}%`}}),uq=te({name:"ElSlider",components:{ElInputNumber:Uw,SliderButton:oq,SliderMarker:lq},props:{modelValue:{type:[Number,Array],default:0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},size:{type:String,validator:On},inputSize:{type:String,validator:On},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:{type:Function,default:void 0},disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String,default:""},debounce:{type:Number,default:300},label:{type:String,default:void 0},tooltipClass:{type:String,default:void 0},marks:Object},emits:[tt,qt,ps],setup(e,{emit:t}){const n=we("slider"),o=yt({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:s,slider:l,firstButton:r,secondButton:a,sliderDisabled:i,minValue:u,maxValue:c,runwayStyle:d,barStyle:f,resetSize:p,emitChange:h,onSliderClick:g,setFirstValue:m,setSecondValue:v}=aq(e,o,t),{stops:y,getStopStyle:w}=iq(e,o,u,c),S=Wt(),$=E(()=>e.inputSize||S.value),k=E(()=>[n.b(),n.m(S.value),n.is("vertical",e.vertical),{[n.m("with-input")]:e.showInput}]),T=rq(e);cq(e,o,u,c,t,s);const O=E(()=>{const P=[e.min,e.max,e.step].map(N=>{const I=`${N}`.split(".")[1];return I?I.length:0});return Math.max.apply(null,P)}),{sliderWrapper:L}=dq(e,o,p),{firstValue:B,secondValue:V,oldValue:H,dragging:R,sliderSize:z}=Ut(o),W=P=>{o.dragging=P};return st("SliderProvider",Te(ne({},Ut(e)),{sliderSize:z,disabled:i,precision:O,emitChange:h,resetSize:p,updateDragging:W})),{ns:n,firstValue:B,secondValue:V,oldValue:H,dragging:R,sliderSize:z,slider:l,firstButton:r,secondButton:a,sliderDisabled:i,runwayStyle:d,barStyle:f,emitChange:h,onSliderClick:g,getStopStyle:w,setFirstValue:m,setSecondValue:v,stops:y,markList:T,sliderWrapper:L,sliderWrapperSize:S,sliderInputSize:$,sliderKls:k}}}),cq=(e,t,n,o,s,l)=>{const r=u=>{s(tt,u),s(ps,u)},a=()=>e.range?![n.value,o.value].every((u,c)=>u===t.oldValue[c]):e.modelValue!==t.oldValue,i=()=>{var u,c;if(e.min>e.max){Kt("Slider","min should not be greater than max.");return}const d=e.modelValue;e.range&&Array.isArray(d)?d[1]e.max?r([e.max,e.max]):d[0]e.max?r([d[0],e.max]):(t.firstValue=d[0],t.secondValue=d[1],a()&&((u=l.validate)==null||u.call(l,"change").catch(f=>void 0),t.oldValue=d.slice())):!e.range&&typeof d=="number"&&!Number.isNaN(d)&&(de.max?r(e.max):(t.firstValue=d,a()&&((c=l.validate)==null||c.call(l,"change").catch(f=>void 0),t.oldValue=d)))};i(),pe(()=>t.dragging,u=>{u||i()}),pe(()=>e.modelValue,(u,c)=>{t.dragging||Array.isArray(u)&&Array.isArray(c)&&u.every((d,f)=>d===c[f])&&t.firstValue===u[0]&&t.secondValue===u[1]||i()},{deep:!0}),pe(()=>[e.min,e.max],()=>{i()})},dq=(e,t,n)=>{const o=A(null);return xe(async()=>{let s;e.range?(Array.isArray(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue],s=`${t.firstValue}-${t.secondValue}`):(typeof e.modelValue!="number"||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue,s=t.firstValue),o.value.setAttribute("aria-valuetext",s),o.value.setAttribute("aria-label",e.label?e.label:`slider between ${e.min} and ${e.max}`),Tt(window,"resize",n),await ze(),n()}),_t(()=>{Vt(window,"resize",n)}),{sliderWrapper:o}},fq=["aria-valuemin","aria-valuemax","aria-orientation","aria-disabled"],pq={key:1};function hq(e,t,n,o,s,l){const r=le("slider-button"),a=le("slider-marker"),i=le("el-input-number");return C(),M("div",{ref:"sliderWrapper",class:_(e.sliderKls),role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled},[D("div",{ref:"slider",class:_([e.ns.e("runway"),{"show-input":e.showInput&&!e.range},e.ns.is("disabled",e.sliderDisabled)]),style:De(e.runwayStyle),onClick:t[0]||(t[0]=(...u)=>e.onSliderClick&&e.onSliderClick(...u))},[D("div",{class:_(e.ns.e("bar")),style:De(e.barStyle)},null,6),Y(r,{ref:"firstButton","model-value":e.firstValue,vertical:e.vertical,"tooltip-class":e.tooltipClass,"onUpdate:modelValue":e.setFirstValue},null,8,["model-value","vertical","tooltip-class","onUpdate:modelValue"]),e.range?(C(),x(r,{key:0,ref:"secondButton","model-value":e.secondValue,vertical:e.vertical,"tooltip-class":e.tooltipClass,"onUpdate:modelValue":e.setSecondValue},null,8,["model-value","vertical","tooltip-class","onUpdate:modelValue"])):G("v-if",!0),e.showStops?(C(),M("div",pq,[(C(!0),M(Le,null,rt(e.stops,(u,c)=>(C(),M("div",{key:c,class:_(e.ns.e("stop")),style:De(e.getStopStyle(u))},null,6))),128))])):G("v-if",!0),e.markList.length>0?(C(),M(Le,{key:2},[D("div",null,[(C(!0),M(Le,null,rt(e.markList,(u,c)=>(C(),M("div",{key:c,style:De(e.getStopStyle(u.position)),class:_([e.ns.e("stop"),e.ns.e("marks-stop")])},null,6))),128))]),D("div",{class:_(e.ns.e("marks"))},[(C(!0),M(Le,null,rt(e.markList,(u,c)=>(C(),x(a,{key:c,mark:u.mark,style:De(e.getStopStyle(u.position))},null,8,["mark","style"]))),128))],2)],64)):G("v-if",!0)],6),e.showInput&&!e.range?(C(),x(i,{key:0,ref:"input","model-value":e.firstValue,class:_(e.ns.e("input")),step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.sliderInputSize,"onUpdate:modelValue":e.setFirstValue,onChange:e.emitChange},null,8,["model-value","class","step","disabled","controls","min","max","debounce","size","onUpdate:modelValue","onChange"])):G("v-if",!0)],10,fq)}var Ti=ge(uq,[["render",hq],["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/index.vue"]]);Ti.install=e=>{e.component(Ti.name,Ti)};const mq=Ti,vq=mq,gq=Ve({prefixCls:{type:String,default:""}}),bq=te({props:gq,setup(e){const t=we("space");return{classes:E(()=>`${e.prefixCls||t.b()}__item`)}}});function yq(e,t,n,o,s,l){return C(),M("div",{class:_(e.classes)},[ie(e.$slots,"default")],2)}var Sg=ge(bq,[["render",yq],["__file","/home/runner/work/element-plus/element-plus/packages/components/space/src/item.vue"]]);const Eg={small:8,default:12,large:16};function wq(e){const t=we("space"),n=E(()=>[t.b(),t.m(e.direction),e.class]),o=A(0),s=A(0),l=E(()=>{const a=e.wrap||e.fill?{flexWrap:"wrap",marginBottom:`-${s.value}px`}:{},i={alignItems:e.alignment};return[a,i,e.style]}),r=E(()=>{const a={paddingBottom:`${s.value}px`,marginRight:`${o.value}px`},i=e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{};return[a,i]});return zn(()=>{const{size:a="small",wrap:i,direction:u,fill:c}=e;if(Array.isArray(a)){const[d=0,f=0]=a;o.value=d,s.value=f}else{let d;ht(a)?d=a:d=Eg[a]||Eg.small,(i||c)&&u==="horizontal"?o.value=s.value=d:u==="horizontal"?(o.value=d,s.value=0):(s.value=d,o.value=0)}}),{classes:n,containerStyle:l,itemStyle:r}}const Cq=Ve({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:$e([String,Object,Array]),default:""},style:{type:$e([String,Array,Object]),default:""},alignment:{type:$e(String),default:"center"},prefixCls:{type:String},spacer:{type:$e([Object,String,Number,Array]),default:null,validator:e=>Ft(e)||ht(e)||Qe(e)},wrap:{type:Boolean,default:!1},fill:{type:Boolean,default:!1},fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:Eo,validator:e=>ht(e)||Xe(e)&&e.length===2&&e.every(t=>ht(t))}});var $q=te({name:"ElSpace",props:Cq,setup(e,{slots:t}){const{classes:n,containerStyle:o,itemStyle:s}=wq(e);return()=>{var l;const{spacer:r,prefixCls:a,direction:i}=e,u=ie(t,"default",{key:0},()=>[]);if(((l=u.children)!=null?l:[]).length===0)return null;if(Xe(u.children)){let c=[];if(u.children.forEach((d,f)=>{K0(d)?Xe(d.children)&&d.children.forEach((p,h)=>{c.push(Y(Sg,{style:s.value,prefixCls:a,key:`nested-${h}`},{default:()=>[p]},Bn.PROPS|Bn.STYLE,["style","prefixCls"]))}):g8(d)&&c.push(Y(Sg,{style:s.value,prefixCls:a,key:`LoopKey${f}`},{default:()=>[d]},Bn.PROPS|Bn.STYLE,["style","prefixCls"]))}),r){const d=c.length-1;c=c.reduce((f,p,h)=>{const g=[...f,p];return h!==d&&g.push(Y("span",{style:[s.value,i==="vertical"?"width: 100%":null],key:h},[Ft(r)?r:it(r,Bn.TEXT)],Bn.STYLE)),g},[])}return Y("div",{class:n.value,style:o.value},c,Bn.STYLE|Bn.CLASS)}return u.children}}});const kq=ot($q),Sq=te({name:"ElSteps",props:{space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},alignCenter:{type:Boolean,default:!1},simple:{type:Boolean,default:!1},finishStatus:{type:String,default:"finish",validator:e=>["wait","process","finish","error","success"].includes(e)},processStatus:{type:String,default:"process",validator:e=>["wait","process","finish","error","success"].includes(e)}},emits:[qt],setup(e,{emit:t}){const n=we("steps"),o=A([]);return pe(o,()=>{o.value.forEach((s,l)=>{s.setIndex(l)})}),st("ElSteps",{props:e,steps:o}),pe(()=>e.active,(s,l)=>{t(qt,s,l)}),{steps:o,ns:n}}});function Eq(e,t,n,o,s,l){return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.simple?"simple":e.direction)])},[ie(e.$slots,"default")],2)}var _q=ge(Sq,[["render",Eq],["__file","/home/runner/work/element-plus/element-plus/packages/components/steps/src/index.vue"]]);const Tq=te({name:"ElStep",components:{ElIcon:je,Close:Yn,Check:Jl},props:{title:{type:String,default:""},icon:{type:[String,Object],default:""},description:{type:String,default:""},status:{type:String,default:"",validator:e=>["","wait","process","finish","error","success"].includes(e)}},setup(e){const t=we("step"),n=A(-1),o=A({}),s=A(""),l=Ne("ElSteps"),r=nt();xe(()=>{pe([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([S])=>{y(S)},{immediate:!0})}),_t(()=>{l.steps.value=l.steps.value.filter(S=>S.uid!==r.uid)});const a=E(()=>e.status||s.value),i=E(()=>{const S=l.steps.value[n.value-1];return S?S.currentStatus:"wait"}),u=E(()=>l.props.alignCenter),c=E(()=>l.props.direction==="vertical"),d=E(()=>l.props.simple),f=E(()=>l.steps.value.length),p=E(()=>{var S;return((S=l.steps.value[f.value-1])==null?void 0:S.uid)===r.uid}),h=E(()=>d.value?"":l.props.space),g=E(()=>{const S={flexBasis:typeof h.value=="number"?`${h.value}px`:h.value?h.value:`${100/(f.value-(u.value?0:1))}%`};return c.value||p.value&&(S.maxWidth=`${100/f.value}%`),S}),m=S=>{n.value=S},v=S=>{let $=100;const k={};k.transitionDelay=`${150*n.value}ms`,S===l.props.processStatus?$=0:S==="wait"&&($=0,k.transitionDelay=`${-150*n.value}ms`),k.borderWidth=$&&!d.value?"1px":0,k[l.props.direction==="vertical"?"height":"width"]=`${$}%`,o.value=k},y=S=>{S>n.value?s.value=l.props.finishStatus:S===n.value&&i.value!=="error"?s.value=l.props.processStatus:s.value="wait";const $=l.steps.value[f.value-1];$&&$.calcProgress(s.value)},w=yt({uid:E(()=>r.uid),currentStatus:a,setIndex:m,calcProgress:v});return l.steps.value=[...l.steps.value,w],{ns:t,index:n,lineStyle:o,currentStatus:a,isCenter:u,isVertical:c,isSimple:d,isLast:p,space:h,style:g,parent:l,setIndex:m,calcProgress:v,updateStatus:y}}});function Aq(e,t,n,o,s,l){const r=le("el-icon"),a=le("check"),i=le("close");return C(),M("div",{style:De(e.style),class:_([e.ns.b(),e.ns.is(e.isSimple?"simple":e.parent.props.direction),e.ns.is("flex",e.isLast&&!e.space&&!e.isCenter),e.ns.is("center",e.isCenter&&!e.isVertical&&!e.isSimple)])},[G(" icon & line "),D("div",{class:_([e.ns.e("head"),e.ns.is(e.currentStatus)])},[e.isSimple?G("v-if",!0):(C(),M("div",{key:0,class:_(e.ns.e("line"))},[D("i",{class:_(e.ns.e("line-inner")),style:De(e.lineStyle)},null,6)],2)),D("div",{class:_([e.ns.e("icon"),e.ns.is(e.icon?"icon":"text")])},[e.currentStatus!=="success"&&e.currentStatus!=="error"?ie(e.$slots,"icon",{key:0},()=>[e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon-inner"))},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class"])):G("v-if",!0),!e.icon&&!e.isSimple?(C(),M("div",{key:1,class:_(e.ns.e("icon-inner"))},he(e.index+1),3)):G("v-if",!0)]):(C(),x(r,{key:1,class:_([e.ns.e("icon-inner"),e.ns.is("status")])},{default:j(()=>[e.currentStatus==="success"?(C(),x(a,{key:0})):(C(),x(i,{key:1}))]),_:1},8,["class"]))],2)],2),G(" title & description "),D("div",{class:_(e.ns.e("main"))},[D("div",{class:_([e.ns.e("title"),e.ns.is(e.currentStatus)])},[ie(e.$slots,"title",{},()=>[it(he(e.title),1)])],2),e.isSimple?(C(),M("div",{key:0,class:_(e.ns.e("arrow"))},null,2)):(C(),M("div",{key:1,class:_([e.ns.e("description"),e.ns.is(e.currentStatus)])},[ie(e.$slots,"description",{},()=>[it(he(e.description),1)])],2))],2)],6)}var hC=ge(Tq,[["render",Aq],["__file","/home/runner/work/element-plus/element-plus/packages/components/steps/src/item.vue"]]);const Nq=ot(_q,{Step:hC}),Mq=Rt(hC),Oq=Ve({modelValue:{type:[Boolean,String,Number],default:!1},value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},inlinePrompt:{type:Boolean,default:!1},activeIcon:{type:nn,default:""},inactiveIcon:{type:nn,default:""},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String,loading:{type:Boolean,default:!1},beforeChange:{type:$e(Function)},size:{type:String,validator:On}}),Iq={[tt]:e=>en(e)||Qe(e)||ht(e),[qt]:e=>en(e)||Qe(e)||ht(e),[ps]:e=>en(e)||Qe(e)||ht(e)},_g="ElSwitch",Dq=te({name:_g,components:{ElIcon:je,Loading:gs},props:Oq,emits:Iq,setup(e,{emit:t}){const{formItem:n}=dr(),o=hl(E(()=>e.loading)),s=we("switch"),l=Wt(),r=A(e.modelValue!==!1),a=A(),i=A(),u=E(()=>[s.b(),s.m(l.value),s.is("disabled",o.value),s.is("checked",d.value)]);pe(()=>e.modelValue,()=>{r.value=!0}),pe(()=>e.value,()=>{r.value=!1});const c=E(()=>r.value?e.modelValue:e.value),d=E(()=>c.value===e.activeValue);[e.activeValue,e.inactiveValue].includes(c.value)||(t(tt,e.inactiveValue),t(qt,e.inactiveValue),t(ps,e.inactiveValue)),pe(d,()=>{var m;a.value.checked=d.value,(e.activeColor||e.inactiveColor)&&h(),e.validateEvent&&((m=n==null?void 0:n.validate)==null||m.call(n,"change").catch(v=>void 0))});const f=()=>{const m=d.value?e.inactiveValue:e.activeValue;t(tt,m),t(qt,m),t(ps,m),ze(()=>{a.value.checked=d.value})},p=()=>{if(o.value)return;const{beforeChange:m}=e;if(!m){f();return}const v=m();[el(v),en(v)].some(w=>w)||Kt(_g,"beforeChange must return type `Promise` or `boolean`"),el(v)?v.then(w=>{w&&f()}).catch(w=>{}):v&&f()},h=()=>{const m=d.value?e.activeColor:e.inactiveColor,v=i.value;e.borderColor?v.style.borderColor=e.borderColor:e.borderColor||(v.style.borderColor=m),v.style.backgroundColor=m,v.children[0].style.color=m},g=()=>{var m,v;(v=(m=a.value)==null?void 0:m.focus)==null||v.call(m)};return xe(()=>{(e.activeColor||e.inactiveColor||e.borderColor)&&h(),a.value.checked=d.value}),{ns:s,input:a,core:i,switchDisabled:o,checked:d,switchKls:u,handleChange:f,switchValue:p,focus:g}}}),Pq=["aria-checked","aria-disabled"],Lq=["id","name","true-value","false-value","disabled"],Rq=["aria-hidden"],Bq=["aria-hidden"],Vq=["aria-hidden"],Fq=["aria-hidden"];function Hq(e,t,n,o,s,l){const r=le("el-icon"),a=le("loading");return C(),M("div",{class:_(e.switchKls),role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled,onClick:t[2]||(t[2]=Ke((...i)=>e.switchValue&&e.switchValue(...i),["prevent"]))},[D("input",{id:e.id,ref:"input",class:_(e.ns.e("input")),type:"checkbox",name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled,onChange:t[0]||(t[0]=(...i)=>e.handleChange&&e.handleChange(...i)),onKeydown:t[1]||(t[1]=lt((...i)=>e.switchValue&&e.switchValue(...i),["enter"]))},null,42,Lq),!e.inlinePrompt&&(e.inactiveIcon||e.inactiveText)?(C(),M("span",{key:0,class:_([e.ns.e("label"),e.ns.em("label","left"),e.ns.is("active",!e.checked)])},[e.inactiveIcon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.inactiveIcon)))]),_:1})):G("v-if",!0),!e.inactiveIcon&&e.inactiveText?(C(),M("span",{key:1,"aria-hidden":e.checked},he(e.inactiveText),9,Rq)):G("v-if",!0)],2)):G("v-if",!0),D("span",{ref:"core",class:_(e.ns.e("core")),style:De({width:(e.width||40)+"px"})},[e.inlinePrompt?(C(),M("div",{key:0,class:_(e.ns.e("inner"))},[e.activeIcon||e.inactiveIcon?(C(),M(Le,{key:0},[e.activeIcon?(C(),x(r,{key:0,class:_([e.ns.is("icon"),e.checked?e.ns.is("show"):e.ns.is("hide")])},{default:j(()=>[(C(),x(ft(e.activeIcon)))]),_:1},8,["class"])):G("v-if",!0),e.inactiveIcon?(C(),x(r,{key:1,class:_([e.ns.is("icon"),e.checked?e.ns.is("hide"):e.ns.is("show")])},{default:j(()=>[(C(),x(ft(e.inactiveIcon)))]),_:1},8,["class"])):G("v-if",!0)],64)):e.activeText||e.inactiveIcon?(C(),M(Le,{key:1},[e.activeText?(C(),M("span",{key:0,class:_([e.ns.is("text"),e.checked?e.ns.is("show"):e.ns.is("hide")]),"aria-hidden":!e.checked},he(e.activeText.substring(0,3)),11,Bq)):G("v-if",!0),e.inactiveText?(C(),M("span",{key:1,class:_([e.ns.is("text"),e.checked?e.ns.is("hide"):e.ns.is("show")]),"aria-hidden":e.checked},he(e.inactiveText.substring(0,3)),11,Vq)):G("v-if",!0)],64)):G("v-if",!0)],2)):G("v-if",!0),D("div",{class:_(e.ns.e("action"))},[e.loading?(C(),x(r,{key:0,class:_(e.ns.is("loading"))},{default:j(()=>[Y(a)]),_:1},8,["class"])):G("v-if",!0)],2)],6),!e.inlinePrompt&&(e.activeIcon||e.activeText)?(C(),M("span",{key:1,class:_([e.ns.e("label"),e.ns.em("label","right"),e.ns.is("active",e.checked)])},[e.activeIcon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.activeIcon)))]),_:1})):G("v-if",!0),!e.activeIcon&&e.activeText?(C(),M("span",{key:1,"aria-hidden":!e.checked},he(e.activeText),9,Fq)):G("v-if",!0)],2)):G("v-if",!0)],10,Pq)}var zq=ge(Dq,[["render",Hq],["__file","/home/runner/work/element-plus/element-plus/packages/components/switch/src/switch.vue"]]);const Kq=ot(zq);/*! + m 0 ${b?"":"-"}${v} + a ${v} ${v} 0 1 1 0 ${b?"-":""}${v*2} + a ${v} ${v} 0 1 1 0 ${b?"":"-"}${v*2} + `}),r=E(()=>2*Math.PI*s.value),a=E(()=>e.type==="dashboard"?.75:1),i=E(()=>`${-1*r.value*(1-a.value)/2}px`),u=E(()=>({strokeDasharray:`${r.value*a.value}px, ${r.value}px`,strokeDashoffset:i.value})),c=E(()=>({strokeDasharray:`${r.value*a.value*(e.percentage/100)}px, ${r.value}px`,strokeDashoffset:i.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"})),d=E(()=>{let v;if(e.color)v=g(e.percentage);else switch(e.status){case"success":v="#13ce66";break;case"exception":v="#ff4949";break;case"warning":v="#e6a23c";break;default:v="#20a0ff"}return v}),f=E(()=>e.status==="warning"?aa:e.type==="line"?e.status==="success"?Zi:Fo:e.status==="success"?Xl:Yn),p=E(()=>e.type==="line"?12+e.strokeWidth*.4:e.width*.111111+2),h=E(()=>e.format(e.percentage)),g=v=>{var b;const{color:w}=e;if(typeof w=="function")return w(v);if(typeof w=="string")return w;{const S=100/w.length,k=w.map((T,O)=>typeof T=="string"?{color:T,percentage:(O+1)*S}:T).sort((T,O)=>T.percentage-O.percentage);for(const T of k)if(T.percentage>v)return T.color;return(b=k[k.length-1])==null?void 0:b.color}},m=E(()=>({percentage:e.percentage}));return{ns:t,barStyle:n,relativeStrokeWidth:o,radius:s,trackPath:l,perimeter:r,rate:a,strokeDashoffset:i,trailPathStyle:u,circlePathStyle:c,stroke:d,statusIcon:f,progressTextSize:p,content:h,slotData:m}}}),OY=["aria-valuenow"],IY={viewBox:"0 0 100 100"},PY=["d","stroke-width"],DY=["d","stroke","stroke-linecap","stroke-width"],LY={key:0};function RY(e,t,n,o,s,l){const r=le("el-icon");return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.type),e.ns.is(e.status),{[e.ns.m("without-text")]:!e.showText,[e.ns.m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[e.type==="line"?(C(),M("div",{key:0,class:_(e.ns.b("bar"))},[D("div",{class:_(e.ns.be("bar","outer")),style:Pe({height:`${e.strokeWidth}px`})},[D("div",{class:_([e.ns.be("bar","inner"),{[e.ns.bem("bar","inner","indeterminate")]:e.indeterminate}]),style:Pe(e.barStyle)},[(e.showText||e.$slots.default)&&e.textInside?(C(),M("div",{key:0,class:_(e.ns.be("bar","innerText"))},[ie(e.$slots,"default",to(ds(e.slotData)),()=>[D("span",null,he(e.content),1)])],2)):G("v-if",!0)],6)],6)],2)):(C(),M("div",{key:1,class:_(e.ns.b("circle")),style:Pe({height:`${e.width}px`,width:`${e.width}px`})},[(C(),M("svg",IY,[D("path",{class:_(e.ns.be("circle","track")),d:e.trackPath,stroke:"var(--el-fill-color-light, #e5e9f2)","stroke-width":e.relativeStrokeWidth,fill:"none",style:Pe(e.trailPathStyle)},null,14,PY),D("path",{class:_(e.ns.be("circle","path")),d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0,style:Pe(e.circlePathStyle)},null,14,DY)]))],6)),(e.showText||e.$slots.default)&&!e.textInside?(C(),M("div",{key:2,class:_(e.ns.e("text")),style:Pe({fontSize:`${e.progressTextSize}px`})},[ie(e.$slots,"default",to(ds(e.slotData)),()=>[e.status?(C(),x(r,{key:1},{default:j(()=>[(C(),x(ft(e.statusIcon)))]),_:1})):(C(),M("span",LY,he(e.content),1))])],6)):G("v-if",!0)],10,OY)}var VY=ge(MY,[["render",RY],["__file","/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue"]]);const oC=ot(VY),BY=Be({modelValue:{type:Number,default:0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:$e([Array,Object]),default:()=>Dt(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:$e([Array,Object]),default:()=>[qa,qa,qa]},voidIcon:{type:nn,default:()=>zL},disabledVoidIcon:{type:nn,default:()=>qa},disabled:{type:Boolean,default:!1},allowHalf:{type:Boolean,default:!1},showText:{type:Boolean,default:!1},showScore:{type:Boolean,default:!1},textColor:{type:String,default:""},texts:{type:$e(Array),default:()=>Dt(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:{type:String,validator:On}}),FY={change:e=>typeof e=="number",[tt]:e=>typeof e=="number"},HY=["aria-valuenow","aria-valuetext","aria-valuemax"],zY=["onMousemove","onClick"],KY={name:"ElRate"},WY=ee(Te(ne({},KY),{props:BY,emits:FY,setup(e,{expose:t,emit:n}){const o=e;function s(R,z){const W=I=>dt(I),P=Object.keys(z).map(I=>+I).filter(I=>{const U=z[I];return(W(U)?U.excluded:!1)?RI-U),N=z[P[0]];return W(N)&&N.value||N}const l=Ne(Pn,void 0),r=Wt(),a=we("rate"),i=A(o.modelValue),u=A(-1),c=A(!0),d=E(()=>[a.b(),a.m(r.value)]),f=E(()=>o.disabled||(l==null?void 0:l.disabled)),p=E(()=>({"--el-rate-void-color":o.voidColor,"--el-rate-disabled-void-color":o.disabledVoidColor,"--el-rate-fill-color":v.value})),h=E(()=>{let R="";return o.showScore?R=o.scoreTemplate.replace(/\{\s*value\s*\}/,f.value?`${o.modelValue}`:`${i.value}`):o.showText&&(R=o.texts[Math.ceil(i.value)-1]),R}),g=E(()=>o.modelValue*100-Math.floor(o.modelValue)*100),m=E(()=>Xe(o.colors)?{[o.lowThreshold]:o.colors[0],[o.highThreshold]:{value:o.colors[1],excluded:!0},[o.max]:o.colors[2]}:o.colors),v=E(()=>{const R=s(i.value,m.value);return dt(R)?"":R}),b=E(()=>{let R="";return f.value?R=`${g.value}%`:o.allowHalf&&(R="50%"),{color:v.value,width:R}}),w=E(()=>Xe(o.icons)?{[o.lowThreshold]:o.icons[0],[o.highThreshold]:{value:o.icons[1],excluded:!0},[o.max]:o.icons[2]}:o.icons),S=E(()=>s(o.modelValue,w.value)),$=E(()=>f.value?o.disabledVoidIcon:o.voidIcon),k=E(()=>s(i.value,w.value)),T=E(()=>{const R=Array.from({length:o.max}),z=i.value;return R.fill(k.value,0,z),R.fill($.value,z,o.max),R});function O(R){const z=f.value&&g.value>0&&R-1o.modelValue,W=o.allowHalf&&c.value&&R-.5<=i.value&&R>i.value;return z||W}function L(R){f.value||(o.allowHalf&&c.value?(n(tt,i.value),o.modelValue!==i.value&&n("change",i.value)):(n(tt,R),o.modelValue!==R&&n("change",R)))}function V(R){if(f.value)return;let z=i.value;const W=R.code;return W===Ie.up||W===Ie.right?(o.allowHalf?z+=.5:z+=1,R.stopPropagation(),R.preventDefault()):(W===Ie.left||W===Ie.down)&&(o.allowHalf?z-=.5:z-=1,R.stopPropagation(),R.preventDefault()),z=z<0?0:z,z=z>o.max?o.max:z,n(tt,z),n("change",z),z}function B(R,z){if(!f.value){if(o.allowHalf){let W=z.target;oo(W,a.e("item"))&&(W=W.querySelector(`.${a.e("icon")}`)),(W.clientWidth===0||oo(W,a.e("decimal")))&&(W=W.parentNode),c.value=z.offsetX*2<=W.clientWidth,i.value=c.value?R-.5:R}else i.value=R;u.value=R}}function H(){f.value||(o.allowHalf&&(c.value=o.modelValue!==Math.floor(o.modelValue)),i.value=o.modelValue,u.value=-1)}return pe(()=>o.modelValue,R=>{i.value=R,c.value=o.modelValue!==Math.floor(o.modelValue)}),o.modelValue||n(tt,0),t({setCurrentValue:B,resetCurrentValue:H}),(R,z)=>(C(),M("div",{class:_([y(d),y(a).is("disabled",y(f))]),role:"slider","aria-valuenow":i.value,"aria-valuetext":y(h),"aria-valuemin":"0","aria-valuemax":R.max,tabindex:"0",style:Pe(y(p)),onKeydown:V},[(C(!0),M(Le,null,it(R.max,(W,P)=>(C(),M("span",{key:P,class:_(y(a).e("item")),onMousemove:N=>B(W,N),onMouseleave:H,onClick:N=>L(W)},[Y(y(je),{class:_([y(a).e("icon"),{hover:u.value===W},y(a).is("active",W<=i.value)])},{default:j(()=>[O(W)?G("v-if",!0):(C(),x(ft(y(T)[W-1]),{key:0})),O(W)?(C(),x(y(je),{key:1,style:Pe(y(b)),class:_([y(a).e("icon"),y(a).e("decimal")])},{default:j(()=>[(C(),x(ft(y(S))))]),_:1},8,["style","class"])):G("v-if",!0)]),_:2},1032,["class"])],42,zY))),128)),R.showText||R.showScore?(C(),M("span",{key:0,class:_(y(a).e("text"))},he(y(h)),3)):G("v-if",!0)],46,HY))}}));var jY=ge(WY,[["__file","/home/runner/work/element-plus/element-plus/packages/components/rate/src/rate.vue"]]);const YY=ot(jY),Tl={success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},vg={[Tl.success]:lP,[Tl.warning]:aa,[Tl.error]:tp,[Tl.info]:np},UY=Be({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{values:["success","warning","info","error"],default:"info"}}),gg="ElResult",qY=ee({name:gg,props:UY,setup(e,{slots:t}){const n=we("result");Na({scope:gg,type:"Slot",from:"subTitle",replacement:"sub-title",version:"2.1.3",ref:"https://github.com/element-plus/element-plus/pull/6636/"},E(()=>!!t.subTitle));const o=E(()=>{const s=e.icon,l=s&&Tl[s]?Tl[s]:"icon-info",r=vg[l]||vg["icon-info"];return{class:l,component:r}});return{ns:n,resultIcon:o}}});function GY(e,t,n,o,s,l){return C(),M("div",{class:_(e.ns.b())},[D("div",{class:_(e.ns.e("icon"))},[ie(e.$slots,"icon",{},()=>[e.resultIcon.component?(C(),x(ft(e.resultIcon.component),{key:0,class:_(e.resultIcon.class)},null,8,["class"])):G("v-if",!0)])],2),e.title||e.$slots.title?(C(),M("div",{key:0,class:_(e.ns.e("title"))},[ie(e.$slots,"title",{},()=>[D("p",null,he(e.title),1)])],2)):G("v-if",!0),e.subTitle||e.$slots["sub-title"]?(C(),M("div",{key:1,class:_(e.ns.e("subtitle"))},[ie(e.$slots,"sub-title",{},()=>[D("p",null,he(e.subTitle),1)])],2)):G("v-if",!0),e.$slots.extra?(C(),M("div",{key:2,class:_(e.ns.e("extra"))},[ie(e.$slots,"extra")],2)):G("v-if",!0)],2)}var XY=ge(qY,[["render",GY],["__file","/home/runner/work/element-plus/element-plus/packages/components/result/src/result.vue"]]);const ZY=ot(XY),JY=Be({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:["start","center","end","space-around","space-between","space-evenly"],default:"start"},align:{type:String,values:["top","middle","bottom"],default:"top"}}),QY=ee({name:"ElRow",props:JY,setup(e,{slots:t}){const n=we("row"),o=E(()=>e.gutter);st(t1,{gutter:o});const s=E(()=>{const l={marginLeft:"",marginRight:""};return e.gutter&&(l.marginLeft=`-${e.gutter/2}px`,l.marginRight=l.marginLeft),l});return()=>Y(e.tag,{class:[n.b(),n.is(`justify-${e.justify}`,e.justify!=="start"),n.is(`align-${e.align}`,e.align!=="top")],style:s.value},{default:()=>{var l;return[(l=t.default)==null?void 0:l.call(t)]}})}}),xY=ot(QY);var bg=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function eU(e,t){return!!(e===t||bg(e)&&bg(t))}function tU(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const t=nt().proxy.$props;return E(()=>{const n=(o,s,l)=>({});return t.perfMode?Nu(n):nU(n)})},sU=50,yg="item-rendered",wg="scroll",sC="forward",lC="backward",da="auto",rC="smart",aC="start",eu="center",iC="end",Ql="horizontal",Tp="vertical",lU="ltr",Si="rtl",uC="negative",rU="positive-ascending",cC="positive-descending",aU={[Ql]:"left",[Tp]:"top"},iU=20,uU={[Ql]:"deltaX",[Tp]:"deltaY"},cU=({atEndEdge:e,atStartEdge:t,layout:n},o)=>{let s,l=0;const r=i=>i<0&&t.value||i>0&&e.value;return{hasReachedEdge:r,onWheel:i=>{U0(s);const u=i[uU[n.value]];r(l)&&r(l+u)||(l+=u,sp()||i.preventDefault(),s=Y0(()=>{o(l),l=0}))}}},Bd=fo({type:$e([Number,Function]),required:!0}),Fd=fo({type:Number}),Hd=fo({type:Number,default:2}),dU=fo({type:String,values:["ltr","rtl"],default:"ltr"}),zd=fo({type:Number,default:0}),tu=fo({type:Number,required:!0}),dC=fo({type:String,values:["horizontal","vertical"],default:Tp}),fC=Be({className:{type:String,default:""},containerElement:{type:$e([String,Object]),default:"div"},data:{type:$e(Array),default:()=>Dt([])},direction:dU,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:$e([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),fU=Be(ne({cache:Hd,estimatedItemSize:Fd,layout:dC,initScrollOffset:zd,total:tu,itemSize:Bd},fC));Be(ne({columnCache:Hd,columnWidth:Bd,estimatedColumnWidth:Fd,estimatedRowHeight:Fd,initScrollLeft:zd,initScrollTop:zd,rowCache:Hd,rowHeight:Bd,totalColumn:tu,totalRow:tu},fC));const pU=Be({layout:dC,total:tu,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},visible:Boolean}),Ic=(e,t)=>ee===lU||e===Si||e===Ql;let wl=null;function Cg(e=!1){if(wl===null||e){const t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";const o=document.createElement("div"),s=o.style;return s.width="100px",s.height="100px",t.appendChild(o),document.body.appendChild(t),t.scrollLeft>0?wl=cC:(t.scrollLeft=1,t.scrollLeft===0?wl=uC:wl=rU),document.body.removeChild(t),wl}return wl}function hU({move:e,size:t,bar:n},o){const s={},l=`translate${n.axis}(${e}px)`;return s[n.size]=t,s.transform=l,s.msTransform=l,s.webkitTransform=l,o==="horizontal"?s.height="100%":s.width="100%",s}const mU=ee({name:"ElVirtualScrollBar",props:pU,emits:["scroll","start-move","stop-move"],setup(e,{emit:t}){const o=A(),s=A();let l=null,r=null;const a=yt({isDragging:!1,traveled:0}),i=E(()=>k1[e.layout]),u=E(()=>e.clientSize-4),c=E(()=>({position:"absolute",width:Ql===e.layout?`${u.value}px`:"6px",height:Ql===e.layout?"6px":`${u.value}px`,[aU[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),d=E(()=>{const $=e.ratio,k=e.clientSize;if($>=100)return Number.POSITIVE_INFINITY;if($>=50)return $*k/100;const T=k/3;return Math.floor(Math.min(Math.max($*k,iU),T))}),f=E(()=>{if(!Number.isFinite(d.value))return{display:"none"};const $=`${d.value}px`;return hU({bar:i.value,size:$,move:a.traveled},e.layout)}),p=E(()=>Math.floor(e.clientSize-d.value-4)),h=()=>{Tt(window,"mousemove",b),Tt(window,"mouseup",v);const $=y(s);!$||(r=document.onselectstart,document.onselectstart=()=>!1,Tt($,"touchmove",b),Tt($,"touchend",v))},g=()=>{Bt(window,"mousemove",b),Bt(window,"mouseup",v),document.onselectstart=r,r=null;const $=y(s);!$||(Bt($,"touchmove",b),Bt($,"touchend",v))},m=$=>{$.stopImmediatePropagation(),!($.ctrlKey||[1,2].includes($.button))&&(a.isDragging=!0,a[i.value.axis]=$.currentTarget[i.value.offset]-($[i.value.client]-$.currentTarget.getBoundingClientRect()[i.value.direction]),t("start-move"),h())},v=()=>{a.isDragging=!1,a[i.value.axis]=0,t("stop-move"),g()},b=$=>{const{isDragging:k}=a;if(!k||!s.value||!o.value)return;const T=a[i.value.axis];if(!T)return;U0(l);const O=(o.value.getBoundingClientRect()[i.value.direction]-$[i.value.client])*-1,L=s.value[i.value.offset]-T,V=O-L;l=Y0(()=>{a.traveled=Math.max(0,Math.min(V,p.value)),t("scroll",V,p.value)})},w=$=>{const k=Math.abs($.target.getBoundingClientRect()[i.value.direction]-$[i.value.client]),T=s.value[i.value.offset]/2,O=k-T;a.traveled=Math.max(0,Math.min(O,p.value)),t("scroll",O,p.value)},S=$=>$.preventDefault();return pe(()=>e.scrollFrom,$=>{a.isDragging||(a.traveled=Math.ceil($*p.value))}),xe(()=>{!ct||(Tt(o.value,"touchstart",S),Tt(s.value,"touchstart",m))}),_t(()=>{Bt(o.value,"touchstart",S),g()}),()=>De("div",{role:"presentation",ref:o,class:"el-virtual-scrollbar",style:c.value,onMousedown:Ke(w,["stop","prevent"])},De("div",{ref:s,class:"el-scrollbar__thumb",style:f.value,onMousedown:m},[]))}}),pC=({name:e,getOffset:t,getItemSize:n,getItemOffset:o,getEstimatedTotalSize:s,getStartIndexForOffset:l,getStopIndexForStartIndex:r,initCache:a,clearCache:i,validateProps:u})=>ee({name:e!=null?e:"ElVirtualList",props:fU,emits:[yg,wg],setup(c,{emit:d,expose:f}){u(c);const p=nt(),h=A(a(c,p)),g=oU(),m=A(),v=A(),b=A(),w=A({isScrolling:!1,scrollDir:"forward",scrollOffset:ht(c.initScrollOffset)?c.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:c.scrollbarAlwaysOn}),S=E(()=>{const{total:Z,cache:ae}=c,{isScrolling:Ee,scrollDir:Me,scrollOffset:J}=y(w);if(Z===0)return[0,0,0,0];const ve=l(c,J,y(h)),Ce=r(c,ve,J,y(h)),ke=!Ee||Me===lC?Math.max(1,ae):1,Oe=!Ee||Me===sC?Math.max(1,ae):1;return[Math.max(0,ve-ke),Math.max(0,Math.min(Z-1,Ce+Oe)),ve,Ce]}),$=E(()=>s(c,y(h))),k=E(()=>fa(c.layout)),T=E(()=>[{position:"relative",[`overflow-${k.value?"x":"y"}`]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:c.direction,height:ht(c.height)?`${c.height}px`:c.height,width:ht(c.width)?`${c.width}px`:c.width},c.style]),O=E(()=>{const Z=y($),ae=y(k);return{height:ae?"100%":`${Z}px`,pointerEvents:y(w).isScrolling?"none":void 0,width:ae?`${Z}px`:"100%"}}),L=E(()=>k.value?c.width:c.height),{onWheel:V}=cU({atStartEdge:E(()=>w.value.scrollOffset<=0),atEndEdge:E(()=>w.value.scrollOffset>=$.value),layout:E(()=>c.layout)},Z=>{var ae,Ee;(Ee=(ae=b.value).onMouseUp)==null||Ee.call(ae),P(Math.min(w.value.scrollOffset+Z,$.value-L.value))}),B=()=>{const{total:Z}=c;if(Z>0){const[J,ve,Ce,ke]=y(S);d(yg,J,ve,Ce,ke)}const{scrollDir:ae,scrollOffset:Ee,updateRequested:Me}=y(w);d(wg,ae,Ee,Me)},H=Z=>{const{clientHeight:ae,scrollHeight:Ee,scrollTop:Me}=Z.currentTarget,J=y(w);if(J.scrollOffset===Me)return;const ve=Math.max(0,Math.min(Me,Ee-ae));w.value=Te(ne({},J),{isScrolling:!0,scrollDir:Ic(J.scrollOffset,ve),scrollOffset:ve,updateRequested:!1}),ze(U)},R=Z=>{const{clientWidth:ae,scrollLeft:Ee,scrollWidth:Me}=Z.currentTarget,J=y(w);if(J.scrollOffset===Ee)return;const{direction:ve}=c;let Ce=Ee;if(ve===Si)switch(Cg()){case uC:{Ce=-Ee;break}case cC:{Ce=Me-ae-Ee;break}}Ce=Math.max(0,Math.min(Ce,Me-ae)),w.value=Te(ne({},J),{isScrolling:!0,scrollDir:Ic(J.scrollOffset,Ce),scrollOffset:Ce,updateRequested:!1}),ze(U)},z=Z=>{y(k)?R(Z):H(Z),B()},W=(Z,ae)=>{const Ee=($.value-L.value)/ae*Z;P(Math.min($.value-L.value,Ee))},P=Z=>{Z=Math.max(Z,0),Z!==y(w).scrollOffset&&(w.value=Te(ne({},y(w)),{scrollOffset:Z,scrollDir:Ic(y(w).scrollOffset,Z),updateRequested:!0}),ze(U))},N=(Z,ae=da)=>{const{scrollOffset:Ee}=y(w);Z=Math.max(0,Math.min(Z,c.total-1)),P(t(c,Z,ae,Ee,y(h)))},I=Z=>{const{direction:ae,itemSize:Ee,layout:Me}=c,J=g.value(i&&Ee,i&&Me,i&&ae);let ve;if(rt(J,String(Z)))ve=J[Z];else{const Ce=o(c,Z,y(h)),ke=n(c,Z,y(h)),Oe=y(k),We=ae===Si,qe=Oe?Ce:0;J[Z]=ve={position:"absolute",left:We?void 0:`${qe}px`,right:We?`${qe}px`:void 0,top:Oe?0:`${Ce}px`,height:Oe?"100%":`${ke}px`,width:Oe?`${ke}px`:"100%"}}return ve},U=()=>{w.value.isScrolling=!1,ze(()=>{g.value(-1,null,null)})},q=()=>{const Z=m.value;Z&&(Z.scrollTop=0)};xe(()=>{if(!ct)return;const{initScrollOffset:Z}=c,ae=y(m);ht(Z)&&ae&&(y(k)?ae.scrollLeft=Z:ae.scrollTop=Z),B()}),Xn(()=>{const{direction:Z,layout:ae}=c,{scrollOffset:Ee,updateRequested:Me}=y(w),J=y(m);if(Me&&J)if(ae===Ql)if(Z===Si)switch(Cg()){case"negative":{J.scrollLeft=-Ee;break}case"positive-ascending":{J.scrollLeft=Ee;break}default:{const{clientWidth:ve,scrollWidth:Ce}=J;J.scrollLeft=Ce-ve-Ee;break}}else J.scrollLeft=Ee;else J.scrollTop=Ee});const Q={clientSize:L,estimatedTotalSize:$,windowStyle:T,windowRef:m,innerRef:v,innerStyle:O,itemsToRender:S,scrollbarRef:b,states:w,getItemStyle:I,onScroll:z,onScrollbarScroll:W,onWheel:V,scrollTo:P,scrollToItem:N,resetScrollTop:q};return f({windowRef:m,innerRef:v,getItemStyleCache:g,scrollTo:P,scrollToItem:N,resetScrollTop:q,states:w}),Q},render(c){var d;const{$slots:f,className:p,clientSize:h,containerElement:g,data:m,getItemStyle:v,innerElement:b,itemsToRender:w,innerStyle:S,layout:$,total:k,onScroll:T,onScrollbarScroll:O,onWheel:L,states:V,useIsScrolling:B,windowStyle:H}=c,[R,z]=w,W=ft(g),P=ft(b),N=[];if(k>0)for(let Q=R;Q<=z;Q++)N.push((d=f.default)==null?void 0:d.call(f,{data:m,key:Q,index:Q,isScrolling:B?V.isScrolling:void 0,style:v(Q)}));const I=[De(P,{style:S,ref:"innerRef"},Qe(P)?N:{default:()=>N})],U=De(mU,{ref:"scrollbarRef",clientSize:h,layout:$,onScroll:O,ratio:h*100/this.estimatedTotalSize,scrollFrom:V.scrollOffset/(this.estimatedTotalSize-h),total:k}),q=De(W,{class:["el-vl__window",p],style:H,onScroll:T,onWheel:L,ref:"windowRef",key:0},Qe(W)?[I]:{default:()=>[I]});return De("div",{key:0,class:["el-vl__wrapper",V.scrollbarAlwaysOn?"always-on":""]},[q,U])}}),hC=pC({name:"ElFixedSizeList",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:o,width:s},l,r,a)=>{const i=fa(o)?s:e,u=Math.max(0,t*n-i),c=Math.min(u,l*n),d=Math.max(0,(l+1)*n-i);switch(r===rC&&(a>=d-i&&a<=c+i?r=da:r=eu),r){case aC:return c;case iC:return d;case eu:{const f=Math.round(d+(c-d)/2);return fu+Math.floor(i/2)?u:f}case da:default:return a>=d&&a<=c?a:aMath.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:o,width:s},l,r)=>{const a=l*n,i=fa(o)?s:e,u=Math.ceil((i+r-a)/n);return Math.max(0,Math.min(t-1,l+u-1))},initCache(){},clearCache:!0,validateProps(){}}),Al=(e,t,n)=>{const{itemSize:o}=e,{items:s,lastVisitedIndex:l}=n;if(t>l){let r=0;if(l>=0){const a=s[l];r=a.offset+a.size}for(let a=l+1;a<=t;a++){const i=o(a);s[a]={offset:r,size:i},r+=i}n.lastVisitedIndex=t}return s[t]},vU=(e,t,n)=>{const{items:o,lastVisitedIndex:s}=t;return(s>0?o[s].offset:0)>=n?mC(e,t,0,s,n):gU(e,t,Math.max(0,s),n)},mC=(e,t,n,o,s)=>{for(;n<=o;){const l=n+Math.floor((o-n)/2),r=Al(e,l,t).offset;if(r===s)return l;rs&&(o=l-1)}return Math.max(0,n-1)},gU=(e,t,n,o)=>{const{total:s}=e;let l=1;for(;n{let s=0;if(o>=e&&(o=e-1),o>=0){const a=t[o];s=a.offset+a.size}const r=(e-o-1)*n;return s+r},bU=pC({name:"ElDynamicSizeList",getItemOffset:(e,t,n)=>Al(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:$g,getOffset:(e,t,n,o,s)=>{const{height:l,layout:r,width:a}=e,i=fa(r)?a:l,u=Al(e,t,s),c=$g(e,s),d=Math.max(0,Math.min(c-i,u.offset)),f=Math.max(0,u.offset-i+u.size);switch(n===rC&&(o>=f-i&&o<=d+i?n=da:n=eu),n){case aC:return d;case iC:return f;case eu:return Math.round(f+(d-f)/2);case da:default:return o>=f&&o<=d?o:ovU(e,n,t),getStopIndexForStartIndex:(e,t,n,o)=>{const{height:s,total:l,layout:r,width:a}=e,i=fa(r)?a:s,u=Al(e,t,o),c=n+i;let d=u.offset+u.size,f=t;for(;f{var l,r;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,o-1),(l=t.exposed)==null||l.getItemStyleCache(-1),s&&((r=t.proxy)==null||r.$forceUpdate())},n},clearCache:!1,validateProps:({itemSize:e})=>{}}),yU=ee({props:{item:{type:Object,required:!0},style:Object,height:Number},setup(){return{ns:we("select")}}});function wU(e,t,n,o,s,l){return e.item.isTitle?(C(),M("div",{key:0,class:_(e.ns.be("group","title")),style:Pe([e.style,{lineHeight:`${e.height}px`}])},he(e.item.label),7)):(C(),M("div",{key:1,class:_(e.ns.be("group","split")),style:Pe(e.style)},[D("span",{class:_(e.ns.be("group","split-dash")),style:Pe({top:`${e.height/2}px`})},null,6)],6))}var CU=ge(yU,[["render",wU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/group-item.vue"]]);function $U(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}const kU={allowCreate:Boolean,autocomplete:{type:String,default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:[String,Object],default:Fo},effect:{type:String,default:"light"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:170},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,label:String,modelValue:[Array,String,Number,Boolean,Object],multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:Array,required:!0},placeholder:{type:String},popperAppendToBody:{type:Boolean,default:void 0},teleported:Jt.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},remote:Boolean,size:{type:String,validator:On},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:{type:Boolean,default:!1}},SU={data:Array,disabled:Boolean,hovering:Boolean,item:Object,index:Number,style:Object,selected:Boolean,created:Boolean},EU=ee({props:SU,emits:["select","hover"],setup(e,{emit:t}){const n=we("select"),{hoverItem:o,selectOptionClick:s}=$U(e,{emit:t});return{ns:n,hoverItem:o,selectOptionClick:s}}}),_U=["aria-selected"];function TU(e,t,n,o,s,l){return C(),M("li",{"aria-selected":e.selected,style:Pe(e.style),class:_([e.ns.be("dropdown","option-item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),{hover:e.hovering}]),onMouseenter:t[0]||(t[0]=(...r)=>e.hoverItem&&e.hoverItem(...r)),onClick:t[1]||(t[1]=Ke((...r)=>e.selectOptionClick&&e.selectOptionClick(...r),["stop"]))},[ie(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[D("span",null,he(e.item.label),1)])],46,_U)}var AU=ge(EU,[["render",TU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/option-item.vue"]]);const vC="ElSelectV2Injection",NU=ee({name:"ElSelectDropdown",props:{data:Array,hoveringIndex:Number,width:Number},setup(e){const t=Ne(vC),n=we("select"),o=A([]),s=A(null),l=E(()=>Cn(t.props.estimatedOptionHeight)),r=E(()=>l.value?{itemSize:t.props.itemHeight}:{estimatedSize:t.props.estimatedOptionHeight,itemSize:h=>o.value[h]}),a=(h=[],g)=>{const{props:{valueKey:m}}=t;return dt(g)?h&&h.some(v=>It(v,m)===It(g,m)):h.includes(g)},i=(h,g)=>{if(dt(g)){const{valueKey:m}=t.props;return It(h,m)===It(g,m)}else return h===g};return{ns:n,select:t,listProps:r,listRef:s,isSized:l,isItemDisabled:(h,g)=>{const{disabled:m,multiple:v,multipleLimit:b}=t.props;return m||!g&&(v?b>0&&h.length>=b:!1)},isItemHovering:h=>e.hoveringIndex===h,isItemSelected:(h,g)=>{const{valueKey:m}=t.props;return t.props.multiple?a(h,It(g,m)):i(h,It(g,m))},scrollToItem:h=>{const g=s.value;g&&g.scrollToItem(h)},resetScrollTop:()=>{const h=s.value;h&&h.resetScrollTop()}}},render(e,t){var n;const{$slots:o,data:s,listProps:l,select:r,isSized:a,width:i,ns:u,isItemDisabled:c,isItemHovering:d,isItemSelected:f}=e,p=a?hC:bU,{props:h,onSelect:g,onHover:m,onKeyboardNavigate:v,onKeyboardSelect:b}=r,{height:w,modelValue:S,multiple:$}=h;if(s.length===0)return De("div",{class:u.b("dropdown"),style:{width:`${i}px`}},(n=o.empty)==null?void 0:n.call(o));const k=j(O=>{const{index:L,data:V}=O,B=V[L];if(V[L].type==="Group")return De(CU,{item:B,style:O.style,height:a?l.itemSize:l.estimatedSize});const H=f(S,B),R=c(S,H);return De(AU,Te(ne({},O),{selected:H,disabled:B.disabled||R,created:!!B.created,hovering:d(L),item:B,onSelect:g,onHover:m}),{default:j(z=>ie(o,"default",z,()=>[De("span",B.label)]))})}),T=De(p,ne({ref:"listRef",className:u.be("dropdown","list"),data:s,height:w,width:i,total:s.length,scrollbarAlwaysOn:h.scrollbarAlwaysOn,onKeydown:[t[1]||(t[1]=lt(Ke(()=>v("forward"),["stop","prevent"]),["down"])),t[2]||(t[2]=lt(Ke(()=>v("backward"),["stop","prevent"]),["up"])),t[3]||(t[3]=lt(Ke(b,["stop","prevent"]),["enter"])),t[4]||(t[4]=lt(Ke(()=>r.expanded=!1,["stop","prevent"]),["esc"])),t[5]||(t[5]=lt(()=>r.expanded=!1,["tab"]))]},l),{default:k});return De("div",{class:[u.b("dropdown"),u.is("multiple",$)]},[T])}});var MU=ge(NU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select-dropdown.vue"]]);function OU(e,t){const n=A(0),o=A(null),s=E(()=>e.allowCreate&&e.filterable);function l(c){const d=f=>f.value===c;return e.options&&e.options.some(d)||t.createdOptions.some(d)}function r(c){!s.value||(e.multiple&&c.created?n.value++:o.value=c)}function a(c){if(s.value)if(c&&c.length>0&&!l(c)){const d={value:c,label:c,created:!0,disabled:!1};t.createdOptions.length>=n.value?t.createdOptions[n.value]=d:t.createdOptions.push(d)}else if(e.multiple)t.createdOptions.length=n.value;else{const d=o.value;t.createdOptions.length=0,d&&d.created&&t.createdOptions.push(d)}}function i(c){if(!s.value||!c||!c.created||c.created&&e.reserveKeyword&&t.inputValue===c.label)return;const d=t.createdOptions.findIndex(f=>f.value===c.value);~d&&(t.createdOptions.splice(d,1),n.value--)}function u(){s.value&&(t.createdOptions.length=0,n.value=0)}return{createNewOption:a,removeNewOption:i,selectNewOption:r,clearAllNewOption:u}}const IU=e=>{const t=[];return e.forEach(n=>{Xe(n.options)?(t.push({label:n.label,isTitle:!0,type:"Group"}),n.options.forEach(o=>{t.push(o)}),t.push({type:"Group"})):t.push(n)}),t};function PU(e){const t=A(!1);return{handleCompositionStart:()=>{t.value=!0},handleCompositionUpdate:l=>{const r=l.target.value,a=r[r.length-1]||"";t.value=!Ru(a)},handleCompositionEnd:l=>{t.value&&(t.value=!1,et(e)&&e(l))}}}const kg="",Sg=11,DU={larget:51,default:42,small:33},LU="ElSelectV2",RU=(e,t)=>{const{t:n}=kt(),o=we("select-v2"),s=we("input"),{form:l,formItem:r}=cr(),{compatTeleported:a}=dr(LU,"popperAppendToBody"),i=yt({inputValue:kg,displayInputValue:kg,calculatedWidth:0,cachedPlaceholder:"",cachedOptions:[],createdOptions:[],createdLabel:"",createdSelected:!1,currentPlaceholder:"",hoveringIndex:-1,comboBoxHovering:!1,isOnComposition:!1,isSilentBlur:!1,isComposing:!1,inputLength:20,selectWidth:200,initialInputHeight:0,previousQuery:null,previousValue:"",query:"",selectedLabel:"",softFocus:!1,tagInMultiLine:!1}),u=A(-1),c=A(-1),d=A(null),f=A(null),p=A(null),h=A(null),g=A(null),m=A(null),v=A(null),b=A(!1),w=E(()=>e.disabled||(l==null?void 0:l.disabled)),S=E(()=>{const Se=R.value.length*34;return Se>e.height?e.height:Se}),$=E(()=>e.modelValue!==void 0&&e.modelValue!==null&&e.modelValue!==""),k=E(()=>{const Se=e.multiple?Array.isArray(e.modelValue)&&e.modelValue.length>0:$.value;return e.clearable&&!w.value&&i.comboBoxHovering&&Se}),T=E(()=>e.remote&&e.filterable?"":Ta),O=E(()=>T.value&&o.is("reverse",b.value)),L=E(()=>(r==null?void 0:r.validateState)||""),V=E(()=>H0[L.value]),B=E(()=>e.remote?300:0),H=E(()=>{const Se=R.value;return e.loading?e.loadingText||n("el.select.loading"):e.remote&&i.inputValue===""&&Se.length===0?!1:e.filterable&&i.inputValue&&Se.length>0?e.noMatchText||n("el.select.noMatch"):Se.length===0?e.noDataText||n("el.select.noData"):null}),R=E(()=>{const Se=Ye=>{const vt=i.inputValue;return vt?Ye.label.includes(vt):!0};return e.loading?[]:IU(e.options.concat(i.createdOptions).map(Ye=>{if(Xe(Ye.options)){const vt=Ye.options.filter(Se);if(vt.length>0)return Te(ne({},Ye),{options:vt})}else if(e.remote||Se(Ye))return Ye;return null}).filter(Ye=>Ye!==null))}),z=E(()=>R.value.every(Se=>Se.disabled)),W=Wt(),P=E(()=>W.value==="small"?"small":"default"),N=E(()=>{const Se=m.value,Ye=P.value||"default",vt=Se?Number.parseInt(getComputedStyle(Se).paddingLeft):0,Nt=Se?Number.parseInt(getComputedStyle(Se).paddingRight):0;return i.selectWidth-Nt-vt-DU[Ye]}),I=()=>{var Se,Ye,vt;c.value=((vt=(Ye=(Se=g.value)==null?void 0:Se.getBoundingClientRect)==null?void 0:Ye.call(Se))==null?void 0:vt.width)||200},U=E(()=>({width:`${i.calculatedWidth===0?Sg:Math.ceil(i.calculatedWidth)+Sg}px`})),q=E(()=>Xe(e.modelValue)?e.modelValue.length===0&&!i.displayInputValue:e.filterable?i.displayInputValue.length===0:!0),Q=E(()=>{const Se=e.placeholder||n("el.select.placeholder");return e.multiple?Se:i.selectedLabel||Se}),Z=E(()=>{var Se,Ye;return(Ye=(Se=h.value)==null?void 0:Se.popperRef)==null?void 0:Ye.contentRef}),ae=E(()=>{if(e.multiple){const Se=e.modelValue.length;if(e.modelValue.length>0)return R.value.findIndex(Ye=>Ye.value===e.modelValue[Se-1])}else if(e.modelValue)return R.value.findIndex(Se=>Se.value===e.modelValue);return-1}),Ee=E(()=>b.value&&H.value!==!1),{createNewOption:Me,removeNewOption:J,selectNewOption:ve,clearAllNewOption:Ce}=OU(e,i),{handleCompositionStart:ke,handleCompositionUpdate:Oe,handleCompositionEnd:We}=PU(Se=>Dn(Se)),qe=()=>{var Se,Ye,vt;(Ye=(Se=f.value).focus)==null||Ye.call(Se),(vt=h.value)==null||vt.updatePopper()},K=()=>{if(!e.automaticDropdown&&!w.value)return i.isComposing&&(i.softFocus=!0),ze(()=>{var Se,Ye;b.value=!b.value,(Ye=(Se=f.value)==null?void 0:Se.focus)==null||Ye.call(Se)})},X=()=>(e.filterable&&i.inputValue!==i.selectedLabel&&(i.query=i.selectedLabel),ye(i.inputValue),ze(()=>{Me(i.inputValue)})),fe=hn(X,B.value),ye=Se=>{i.previousQuery!==Se&&(i.previousQuery=Se,e.filterable&&et(e.filterMethod)?e.filterMethod(Se):e.filterable&&e.remote&&et(e.remoteMethod)&&e.remoteMethod(Se))},be=Se=>{_n(e.modelValue,Se)||t(qt,Se)},_e=Se=>{t(tt,Se),be(Se),i.previousValue=Se.toString()},re=(Se=[],Ye)=>{if(!dt(Ye))return Se.indexOf(Ye);const vt=e.valueKey;let Nt=-1;return Se.some((To,po)=>It(To,vt)===It(Ye,vt)?(Nt=po,!0):!1),Nt},se=Se=>dt(Se)?It(Se,e.valueKey):Se,te=Se=>dt(Se)?Se.label:Se,ue=()=>{if(!(e.collapseTags&&!e.filterable))return ze(()=>{var Se,Ye;if(!f.value)return;const vt=m.value;g.value.height=vt.offsetHeight,b.value&&H.value!==!1&&((Ye=(Se=h.value)==null?void 0:Se.updatePopper)==null||Ye.call(Se))})},Re=()=>{var Se,Ye;if(F(),I(),(Ye=(Se=h.value)==null?void 0:Se.updatePopper)==null||Ye.call(Se),e.multiple)return ue()},F=()=>{const Se=m.value;Se&&(i.selectWidth=Se.getBoundingClientRect().width)},de=(Se,Ye,vt=!0)=>{var Nt,To;if(e.multiple){let po=e.modelValue.slice();const Ia=re(po,se(Se));Ia>-1?(po=[...po.slice(0,Ia),...po.slice(Ia+1)],i.cachedOptions.splice(Ia,1),J(Se)):(e.multipleLimit<=0||po.length{const{valueKey:vt}=e,Nt=e.modelValue.indexOf(It(Ye,vt));if(Nt>-1&&!w.value){const To=[...e.modelValue.slice(0,Nt),...e.modelValue.slice(Nt+1)];return i.cachedOptions.splice(Nt,1),_e(To),t("remove-tag",It(Ye,vt)),i.softFocus=!0,J(Ye),ze(qe)}Se.stopPropagation()},Je=Se=>{const Ye=i.isComposing;i.isComposing=!0,i.softFocus?i.softFocus=!1:Ye||t("focus",Se)},He=()=>(i.softFocus=!1,ze(()=>{var Se,Ye;(Ye=(Se=f.value)==null?void 0:Se.blur)==null||Ye.call(Se),v.value&&(i.calculatedWidth=v.value.getBoundingClientRect().width),i.isSilentBlur?i.isSilentBlur=!1:i.isComposing&&t("blur"),i.isComposing=!1})),oe=()=>{i.displayInputValue.length>0?Ae(""):b.value=!1},me=Se=>{if(i.displayInputValue.length===0){Se.preventDefault();const Ye=e.modelValue.slice();Ye.pop(),J(i.cachedOptions.pop()),_e(Ye)}},ce=()=>{let Se;return Xe(e.modelValue)?Se=[]:Se="",i.softFocus=!0,e.multiple?i.cachedOptions=[]:i.selectedLabel="",b.value=!1,_e(Se),t("clear"),Ce(),ze(qe)},Ae=Se=>{i.displayInputValue=Se,i.inputValue=Se},Ue=(Se,Ye=void 0)=>{const vt=R.value;if(!["forward","backward"].includes(Se)||w.value||vt.length<=0||z.value)return;if(!b.value)return K();Ye===void 0&&(Ye=i.hoveringIndex);let Nt=-1;Se==="forward"?(Nt=Ye+1,Nt>=vt.length&&(Nt=0)):Se==="backward"&&(Nt=Ye-1,Nt<0&&(Nt=vt.length-1));const To=vt[Nt];if(To.disabled||To.type==="Group")return Ue(Se,Nt);St(Nt),bs(Nt)},mt=()=>{if(b.value)~i.hoveringIndex&&R.value[i.hoveringIndex]&&de(R.value[i.hoveringIndex],i.hoveringIndex,!1);else return K()},St=Se=>{i.hoveringIndex=Se},bt=()=>{i.hoveringIndex=-1},At=()=>{var Se;const Ye=f.value;Ye&&((Se=Ye.focus)==null||Se.call(Ye))},Dn=Se=>{const Ye=Se.target.value;if(Ae(Ye),i.displayInputValue.length>0&&!b.value&&(b.value=!0),i.calculatedWidth=v.value.getBoundingClientRect().width,e.multiple&&ue(),e.remote)fe();else return X()},an=()=>(b.value=!1,He()),vn=()=>(i.inputValue=i.displayInputValue,ze(()=>{~ae.value&&(St(ae.value),bs(i.hoveringIndex))})),bs=Se=>{p.value.scrollToItem(Se)},hr=()=>{if(bt(),e.multiple)if(e.modelValue.length>0){let Se=!1;i.cachedOptions.length=0,i.previousValue=e.modelValue.toString(),e.modelValue.forEach(Ye=>{const vt=R.value.findIndex(Nt=>se(Nt)===Ye);~vt&&(i.cachedOptions.push(R.value[vt]),Se||St(vt),Se=!0)})}else i.cachedOptions=[],i.previousValue="";else if($.value){i.previousValue=e.modelValue;const Se=R.value,Ye=Se.findIndex(vt=>se(vt)===se(e.modelValue));~Ye?(i.selectedLabel=Se[Ye].label,St(Ye)):i.selectedLabel=`${e.modelValue}`}else i.selectedLabel="",i.previousValue="";I()};return pe(b,Se=>{var Ye,vt;t("visible-change",Se),Se?(vt=(Ye=h.value).update)==null||vt.call(Ye):(i.displayInputValue="",Me(""))}),pe(()=>e.modelValue,(Se,Ye)=>{var vt;(!Se||Se.toString()!==i.previousValue)&&hr(),_n(Se,Ye)||(vt=r==null?void 0:r.validate)==null||vt.call(r,"change").catch(Nt=>void 0)},{deep:!0}),pe(()=>e.options,()=>{const Se=f.value;(!Se||Se&&document.activeElement!==Se)&&hr()},{deep:!0}),pe(R,()=>ze(p.value.resetScrollTop)),xe(()=>{hr(),ar(g.value,Re)}),Ca(()=>{ir(g.value,Re)}),{collapseTagSize:P,currentPlaceholder:Q,expanded:b,emptyText:H,popupHeight:S,debounce:B,filteredOptions:R,iconComponent:T,iconReverse:O,inputWrapperStyle:U,popperSize:c,dropdownMenuVisible:Ee,hasModelValue:$,shouldShowPlaceholder:q,selectDisabled:w,selectSize:W,showClearBtn:k,states:i,tagMaxWidth:N,nsSelectV2:o,nsInput:s,calculatorRef:v,controlRef:d,inputRef:f,menuRef:p,popper:h,selectRef:g,selectionRef:m,popperRef:Z,validateState:L,validateIcon:V,compatTeleported:a,debouncedOnInputChange:fe,deleteTag:Fe,getLabel:te,getValueKey:se,handleBlur:He,handleClear:ce,handleClickOutside:an,handleDel:me,handleEsc:oe,handleFocus:Je,handleMenuEnter:vn,handleResize:Re,toggleMenu:K,scrollTo:bs,onInput:Dn,onKeyboardNavigate:Ue,onKeyboardSelect:mt,onSelect:de,onHover:St,onUpdateInputValue:Ae,handleCompositionStart:ke,handleCompositionEnd:We,handleCompositionUpdate:Oe}},VU=ee({name:"ElSelectV2",components:{ElSelectMenu:MU,ElTag:Wu,ElTooltip:mn,ElIcon:je},directives:{ClickOutside:hl,ModelText:Rf},props:kU,emits:[tt,qt,"remove-tag","clear","visible-change","focus","blur"],setup(e,{emit:t}){const n=RU(e,t);return st(vC,{props:yt(Te(ne({},Ut(e)),{height:n.popupHeight})),onSelect:n.onSelect,onHover:n.onHover,onKeyboardNavigate:n.onKeyboardNavigate,onKeyboardSelect:n.onKeyboardSelect}),n}}),BU={key:0},FU=["id","autocomplete","aria-expanded","aria-labelledby","disabled","readonly","name","unselectable"],HU=["textContent"],zU=["id","aria-labelledby","aria-expanded","autocomplete","disabled","name","readonly","unselectable"],KU=["textContent"];function WU(e,t,n,o,s,l){const r=le("el-tag"),a=le("el-tooltip"),i=le("el-icon"),u=le("el-select-menu"),c=Mn("model-text"),d=Mn("click-outside");return Ge((C(),M("div",{ref:"selectRef",class:_([e.nsSelectV2.b(),e.nsSelectV2.m(e.selectSize)]),onClick:t[24]||(t[24]=Ke((...f)=>e.toggleMenu&&e.toggleMenu(...f),["stop"])),onMouseenter:t[25]||(t[25]=f=>e.states.comboBoxHovering=!0),onMouseleave:t[26]||(t[26]=f=>e.states.comboBoxHovering=!1)},[Y(a,{ref:"popper",visible:e.dropdownMenuVisible,"onUpdate:visible":t[22]||(t[22]=f=>e.dropdownMenuVisible=f),teleported:e.compatTeleported,"popper-class":[e.nsSelectV2.e("popper"),e.popperClass],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:e.effect,placement:"bottom-start",pure:"",transition:`${e.nsSelectV2.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,onBeforeShow:e.handleMenuEnter,onHide:t[23]||(t[23]=f=>e.states.inputValue=e.states.displayInputValue)},{default:j(()=>{var f;return[D("div",{ref:"selectionRef",class:_([e.nsSelectV2.e("wrapper"),e.nsSelectV2.is("focused",e.states.isComposing),e.nsSelectV2.is("hovering",e.states.comboBoxHovering),e.nsSelectV2.is("filterable",e.filterable),e.nsSelectV2.is("disabled",e.selectDisabled)])},[e.$slots.prefix?(C(),M("div",BU,[ie(e.$slots,"prefix")])):G("v-if",!0),e.multiple?(C(),M("div",{key:1,class:_(e.nsSelectV2.e("selection"))},[e.collapseTags&&e.modelValue.length>0?(C(),M("div",{key:0,class:_(e.nsSelectV2.e("selected-item"))},[Y(r,{closable:!e.selectDisabled&&!((f=e.states.cachedOptions[0])!=null&&f.disable),size:e.collapseTagSize,type:"info","disable-transitions":"",onClose:t[0]||(t[0]=p=>e.deleteTag(p,e.states.cachedOptions[0]))},{default:j(()=>{var p;return[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:Pe({maxWidth:`${e.tagMaxWidth}px`})},he((p=e.states.cachedOptions[0])==null?void 0:p.label),7)]}),_:1},8,["closable","size"]),e.modelValue.length>1?(C(),x(r,{key:0,closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""},{default:j(()=>[e.collapseTagsTooltip?(C(),x(a,{key:0,disabled:e.dropdownMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:!1},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:Pe({maxWidth:`${e.tagMaxWidth}px`})},"+ "+he(e.modelValue.length-1),7)]),content:j(()=>[D("div",{class:_(e.nsSelectV2.e("selection"))},[(C(!0),M(Le,null,it(e.states.cachedOptions,(p,h)=>(C(),M("div",{key:h,class:_(e.nsSelectV2.e("selected-item"))},[(C(),x(r,{key:e.getValueKey(p),closable:!e.selectDisabled&&!p.disabled,size:e.collapseTagSize,class:"in-tooltip",type:"info","disable-transitions":"",onClose:g=>e.deleteTag(g,p)},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:Pe({maxWidth:`${e.tagMaxWidth}px`})},he(e.getLabel(p)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect"])):(C(),M("span",{key:1,class:_(e.nsSelectV2.e("tags-text")),style:Pe({maxWidth:`${e.tagMaxWidth}px`})},"+ "+he(e.modelValue.length-1),7))]),_:1},8,["size"])):G("v-if",!0)],2)):(C(!0),M(Le,{key:1},it(e.states.cachedOptions,(p,h)=>(C(),M("div",{key:h,class:_(e.nsSelectV2.e("selected-item"))},[(C(),x(r,{key:e.getValueKey(p),closable:!e.selectDisabled&&!p.disabled,size:e.collapseTagSize,type:"info","disable-transitions":"",onClose:g=>e.deleteTag(g,p)},{default:j(()=>[D("span",{class:_(e.nsSelectV2.e("tags-text")),style:Pe({maxWidth:`${e.tagMaxWidth}px`})},he(e.getLabel(p)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128)),D("div",{class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-wrapper")]),style:Pe(e.inputWrapperStyle)},[Ge(D("input",{id:e.id,ref:"inputRef",autocomplete:e.autocomplete,"aria-autocomplete":"list","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-labelledby":e.label,class:_([e.nsSelectV2.is(e.selectSize),e.nsSelectV2.e("combobox-input")]),disabled:e.disabled,role:"combobox",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,unselectable:e.expanded?"on":void 0,"onUpdate:modelValue":t[1]||(t[1]=(...p)=>e.onUpdateInputValue&&e.onUpdateInputValue(...p)),onFocus:t[2]||(t[2]=(...p)=>e.handleFocus&&e.handleFocus(...p)),onInput:t[3]||(t[3]=(...p)=>e.onInput&&e.onInput(...p)),onCompositionstart:t[4]||(t[4]=(...p)=>e.handleCompositionStart&&e.handleCompositionStart(...p)),onCompositionupdate:t[5]||(t[5]=(...p)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...p)),onCompositionend:t[6]||(t[6]=(...p)=>e.handleCompositionEnd&&e.handleCompositionEnd(...p)),onKeydown:[t[7]||(t[7]=lt(Ke(p=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),t[8]||(t[8]=lt(Ke(p=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),t[9]||(t[9]=lt(Ke((...p)=>e.onKeyboardSelect&&e.onKeyboardSelect(...p),["stop","prevent"]),["enter"])),t[10]||(t[10]=lt(Ke((...p)=>e.handleEsc&&e.handleEsc(...p),["stop","prevent"]),["esc"])),t[11]||(t[11]=lt(Ke((...p)=>e.handleDel&&e.handleDel(...p),["stop"]),["delete"]))]},null,42,FU),[[c,e.states.displayInputValue]]),e.filterable?(C(),M("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:_(e.nsSelectV2.e("input-calculator")),textContent:he(e.states.displayInputValue)},null,10,HU)):G("v-if",!0)],6)],2)):(C(),M(Le,{key:2},[D("div",{class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-wrapper")])},[Ge(D("input",{id:e.id,ref:"inputRef","aria-autocomplete":"list","aria-haspopup":"listbox","aria-labelledby":e.label,"aria-expanded":e.expanded,autocapitalize:"off",autocomplete:e.autocomplete,class:_(e.nsSelectV2.e("combobox-input")),disabled:e.disabled,name:e.name,role:"combobox",readonly:!e.filterable,spellcheck:"false",type:"text",unselectable:e.expanded?"on":void 0,onCompositionstart:t[12]||(t[12]=(...p)=>e.handleCompositionStart&&e.handleCompositionStart(...p)),onCompositionupdate:t[13]||(t[13]=(...p)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...p)),onCompositionend:t[14]||(t[14]=(...p)=>e.handleCompositionEnd&&e.handleCompositionEnd(...p)),onFocus:t[15]||(t[15]=(...p)=>e.handleFocus&&e.handleFocus(...p)),onInput:t[16]||(t[16]=(...p)=>e.onInput&&e.onInput(...p)),onKeydown:[t[17]||(t[17]=lt(Ke(p=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),t[18]||(t[18]=lt(Ke(p=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),t[19]||(t[19]=lt(Ke((...p)=>e.onKeyboardSelect&&e.onKeyboardSelect(...p),["stop","prevent"]),["enter"])),t[20]||(t[20]=lt(Ke((...p)=>e.handleEsc&&e.handleEsc(...p),["stop","prevent"]),["esc"]))],"onUpdate:modelValue":t[21]||(t[21]=(...p)=>e.onUpdateInputValue&&e.onUpdateInputValue(...p))},null,42,zU),[[c,e.states.displayInputValue]])],2),e.filterable?(C(),M("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:_([e.nsSelectV2.e("selected-item"),e.nsSelectV2.e("input-calculator")]),textContent:he(e.states.displayInputValue)},null,10,KU)):G("v-if",!0)],64)),e.shouldShowPlaceholder?(C(),M("span",{key:3,class:_([e.nsSelectV2.e("placeholder"),e.nsSelectV2.is("transparent",e.states.isComposing||(e.placeholder&&e.multiple?e.modelValue.length===0:!e.hasModelValue))])},he(e.currentPlaceholder),3)):G("v-if",!0),D("span",{class:_(e.nsSelectV2.e("suffix"))},[e.iconComponent?Ge((C(),x(i,{key:0,class:_([e.nsSelectV2.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])),[[pt,!e.showClearBtn]]):G("v-if",!0),e.showClearBtn&&e.clearIcon?(C(),x(i,{key:1,class:_([e.nsSelectV2.e("caret"),e.nsInput.e("icon")]),onClick:Ke(e.handleClear,["prevent","stop"])},{default:j(()=>[(C(),x(ft(e.clearIcon)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.validateState&&e.validateIcon?(C(),x(i,{key:2,class:_([e.nsInput.e("icon"),e.nsInput.e("validateIcon")])},{default:j(()=>[(C(),x(ft(e.validateIcon)))]),_:1},8,["class"])):G("v-if",!0)],2)],2)]}),content:j(()=>[Y(u,{ref:"menuRef",data:e.filteredOptions,width:e.popperSize,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn},{default:j(f=>[ie(e.$slots,"default",to(ds(f)))]),empty:j(()=>[ie(e.$slots,"empty",{},()=>[D("p",{class:_(e.nsSelectV2.e("empty"))},he(e.emptyText?e.emptyText:""),3)])]),_:3},8,["data","width","hovering-index","scrollbar-always-on"])]),_:3},8,["visible","teleported","popper-class","popper-options","effect","transition","persistent","onBeforeShow"])],34)),[[d,e.handleClickOutside,e.popperRef]])}var Ei=ge(VU,[["render",WU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select.vue"]]);Ei.install=e=>{e.component(Ei.name,Ei)};const jU=Ei,YU=jU,UU=Be({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:Number}}),qU=Be({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),GU={name:"ElSkeletonItem"},XU=ee(Te(ne({},GU),{props:qU,setup(e){const t=we("skeleton");return(n,o)=>(C(),M("div",{class:_([y(t).e("item"),y(t).e(n.variant)])},[n.variant==="image"?(C(),x(y(XD),{key:0})):G("v-if",!0)],2))}}));var nu=ge(XU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton-item.vue"]]);const ZU={name:"ElSkeleton"},JU=ee(Te(ne({},ZU),{props:UU,setup(e,{expose:t}){const n=e,o=we("skeleton"),s=V8(Yt(n,"loading"),n.throttle);return t({uiLoading:s}),(l,r)=>y(s)?(C(),M("div",Et({key:0,class:[y(o).b(),y(o).is("animated",l.animated)]},l.$attrs),[(C(!0),M(Le,null,it(l.count,a=>(C(),M(Le,{key:a},[l.loading?ie(l.$slots,"template",{key:a},()=>[Y(nu,{class:_(y(o).is("first")),variant:"p"},null,8,["class"]),(C(!0),M(Le,null,it(l.rows,i=>(C(),x(nu,{key:i,class:_([y(o).e("paragraph"),y(o).is("last",i===l.rows&&l.rows>1)]),variant:"p"},null,8,["class"]))),128))]):G("v-if",!0)],64))),128))],16)):ie(l.$slots,"default",to(Et({key:1},l.$attrs)))}}));var QU=ge(JU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton.vue"]]);const xU=ot(QU,{SkeletonItem:nu}),eq=Rt(nu),tq=(e,t,n)=>{const o=A(null),s=A(!1),l=E(()=>t.value instanceof Function),r=E(()=>l.value&&t.value(e.modelValue)||e.modelValue),a=hn(()=>{n.value&&(s.value=!0)},50),i=hn(()=>{n.value&&(s.value=!1)},50);return{tooltip:o,tooltipVisible:s,formatValue:r,displayTooltip:a,hideTooltip:i}},nq=(e,t,n)=>{const{disabled:o,min:s,max:l,step:r,showTooltip:a,precision:i,sliderSize:u,formatTooltip:c,emitChange:d,resetSize:f,updateDragging:p}=Ne("SliderProvider"),{tooltip:h,tooltipVisible:g,formatValue:m,displayTooltip:v,hideTooltip:b}=tq(e,c,a),w=E(()=>`${(e.modelValue-s.value)/(l.value-s.value)*100}%`),S=E(()=>e.vertical?{bottom:w.value}:{left:w.value}),$=()=>{t.hovering=!0,v()},k=()=>{t.hovering=!1,t.dragging||b()},T=W=>{o.value||(W.preventDefault(),B(W),Tt(window,"mousemove",H),Tt(window,"touchmove",H),Tt(window,"mouseup",R),Tt(window,"touchend",R),Tt(window,"contextmenu",R))},O=()=>{o.value||(t.newPosition=Number.parseFloat(w.value)-r.value/(l.value-s.value)*100,z(t.newPosition),d())},L=()=>{o.value||(t.newPosition=Number.parseFloat(w.value)+r.value/(l.value-s.value)*100,z(t.newPosition),d())},V=W=>{let P,N;return W.type.startsWith("touch")?(N=W.touches[0].clientY,P=W.touches[0].clientX):(N=W.clientY,P=W.clientX),{clientX:P,clientY:N}},B=W=>{t.dragging=!0,t.isClick=!0;const{clientX:P,clientY:N}=V(W);e.vertical?t.startY=N:t.startX=P,t.startPosition=Number.parseFloat(w.value),t.newPosition=t.startPosition},H=W=>{if(t.dragging){t.isClick=!1,v(),f();let P;const{clientX:N,clientY:I}=V(W);e.vertical?(t.currentY=I,P=(t.startY-t.currentY)/u.value*100):(t.currentX=N,P=(t.currentX-t.startX)/u.value*100),t.newPosition=t.startPosition+P,z(t.newPosition)}},R=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||b(),t.isClick||(z(t.newPosition),d())},0),Bt(window,"mousemove",H),Bt(window,"touchmove",H),Bt(window,"mouseup",R),Bt(window,"touchend",R),Bt(window,"contextmenu",R))},z=async W=>{if(W===null||Number.isNaN(+W))return;W<0?W=0:W>100&&(W=100);const P=100/((l.value-s.value)/r.value);let I=Math.round(W/P)*P*(l.value-s.value)*.01+s.value;I=Number.parseFloat(I.toFixed(i.value)),n(tt,I),!t.dragging&&e.modelValue!==t.oldValue&&(t.oldValue=e.modelValue),await ze(),t.dragging&&v(),h.value.updatePopper()};return pe(()=>t.dragging,W=>{p(W)}),{tooltip:h,tooltipVisible:g,showTooltip:a,wrapperStyle:S,formatValue:m,handleMouseEnter:$,handleMouseLeave:k,onButtonDown:T,onLeftKeyDown:O,onRightKeyDown:L,setPosition:z}},oq=ee({name:"ElSliderButton",components:{ElTooltip:mn},props:{modelValue:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:{type:String,default:""}},emits:[tt],setup(e,{emit:t}){const n=we("slider"),o=yt({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:e.modelValue}),{tooltip:s,showTooltip:l,tooltipVisible:r,wrapperStyle:a,formatValue:i,handleMouseEnter:u,handleMouseLeave:c,onButtonDown:d,onLeftKeyDown:f,onRightKeyDown:p,setPosition:h}=nq(e,o,t),{hovering:g,dragging:m}=Ut(o);return{ns:n,tooltip:s,tooltipVisible:r,showTooltip:l,wrapperStyle:a,formatValue:i,handleMouseEnter:u,handleMouseLeave:c,onButtonDown:d,onLeftKeyDown:f,onRightKeyDown:p,setPosition:h,hovering:g,dragging:m}}});function sq(e,t,n,o,s,l){const r=le("el-tooltip");return C(),M("div",{ref:"button",class:_([e.ns.e("button-wrapper"),{hover:e.hovering,dragging:e.dragging}]),style:Pe(e.wrapperStyle),tabindex:"0",onMouseenter:t[1]||(t[1]=(...a)=>e.handleMouseEnter&&e.handleMouseEnter(...a)),onMouseleave:t[2]||(t[2]=(...a)=>e.handleMouseLeave&&e.handleMouseLeave(...a)),onMousedown:t[3]||(t[3]=(...a)=>e.onButtonDown&&e.onButtonDown(...a)),onTouchstart:t[4]||(t[4]=(...a)=>e.onButtonDown&&e.onButtonDown(...a)),onFocus:t[5]||(t[5]=(...a)=>e.handleMouseEnter&&e.handleMouseEnter(...a)),onBlur:t[6]||(t[6]=(...a)=>e.handleMouseLeave&&e.handleMouseLeave(...a)),onKeydown:[t[7]||(t[7]=lt((...a)=>e.onLeftKeyDown&&e.onLeftKeyDown(...a),["left"])),t[8]||(t[8]=lt((...a)=>e.onRightKeyDown&&e.onRightKeyDown(...a),["right"])),t[9]||(t[9]=lt(Ke((...a)=>e.onLeftKeyDown&&e.onLeftKeyDown(...a),["prevent"]),["down"])),t[10]||(t[10]=lt(Ke((...a)=>e.onRightKeyDown&&e.onRightKeyDown(...a),["prevent"]),["up"]))]},[Y(r,{ref:"tooltip",visible:e.tooltipVisible,"onUpdate:visible":t[0]||(t[0]=a=>e.tooltipVisible=a),placement:"top","stop-popper-mouse-event":!1,"popper-class":e.tooltipClass,disabled:!e.showTooltip,persistent:""},{content:j(()=>[D("span",null,he(e.formatValue),1)]),default:j(()=>[D("div",{class:_([e.ns.e("button"),{hover:e.hovering,dragging:e.dragging}])},null,2)]),_:1},8,["visible","popper-class","disabled"])],38)}var lq=ge(oq,[["render",sq],["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/button.vue"]]);const rq=ee({name:"ElMarker",props:{mark:{type:[String,Object],default:()=>{}}},setup(e){const t=we("slider"),n=E(()=>typeof e.mark=="string"?e.mark:e.mark.label);return{ns:t,label:n}},render(){var e;return De("div",{class:this.ns.e("marks-text"),style:(e=this.mark)==null?void 0:e.style},this.label)}});var aq=ge(rq,[["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/marker.vue"]]);const iq=e=>E(()=>e.marks?Object.keys(e.marks).map(parseFloat).sort((n,o)=>n-o).filter(n=>n<=e.max&&n>=e.min).map(n=>({point:n,position:(n-e.min)*100/(e.max-e.min),mark:e.marks[n]})):[]),uq=(e,t,n)=>{const o=Ne(Pn,{}),s=Ne(Un,{}),l=jt(null),r=A(null),a=A(null),i={firstButton:r,secondButton:a},u=E(()=>e.disabled||o.disabled||!1),c=E(()=>Math.min(t.firstValue,t.secondValue)),d=E(()=>Math.max(t.firstValue,t.secondValue)),f=E(()=>e.range?`${100*(d.value-c.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),p=E(()=>e.range?`${100*(c.value-e.min)/(e.max-e.min)}%`:"0%"),h=E(()=>e.vertical?{height:e.height}:{}),g=E(()=>e.vertical?{height:f.value,bottom:p.value}:{width:f.value,left:p.value}),m=()=>{l.value&&(t.sliderSize=l.value[`client${e.vertical?"Height":"Width"}`])},v=T=>{const O=e.min+T*(e.max-e.min)/100;if(!e.range){r.value.setPosition(T);return}let L;Math.abs(c.value-O)t.secondValue?"firstButton":"secondButton",i[L].value.setPosition(T)},b=T=>{t.firstValue=T,S(e.range?[c.value,d.value]:T)},w=T=>{t.secondValue=T,e.range&&S([c.value,d.value])},S=T=>{n(tt,T),n(ps,T)},$=async()=>{await ze(),n(qt,e.range?[c.value,d.value]:e.modelValue)};return{elFormItem:s,slider:l,firstButton:r,secondButton:a,sliderDisabled:u,minValue:c,maxValue:d,runwayStyle:h,barStyle:g,resetSize:m,setPosition:v,emitChange:$,onSliderClick:T=>{if(!(u.value||t.dragging)){if(m(),e.vertical){const O=l.value.getBoundingClientRect().bottom;v((O-T.clientY)/t.sliderSize*100)}else{const O=l.value.getBoundingClientRect().left;v((T.clientX-O)/t.sliderSize*100)}$()}},setFirstValue:b,setSecondValue:w}},cq=(e,t,n,o)=>({stops:E(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return[];const r=(e.max-e.min)/e.step,a=100*e.step/(e.max-e.min),i=Array.from({length:r-1}).map((u,c)=>(c+1)*a);return e.range?i.filter(u=>u<100*(n.value-e.min)/(e.max-e.min)||u>100*(o.value-e.min)/(e.max-e.min)):i.filter(u=>u>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:r=>e.vertical?{bottom:`${r}%`}:{left:`${r}%`}}),dq=ee({name:"ElSlider",components:{ElInputNumber:Xw,SliderButton:lq,SliderMarker:aq},props:{modelValue:{type:[Number,Array],default:0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},size:{type:String,validator:On},inputSize:{type:String,validator:On},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:{type:Function,default:void 0},disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String,default:""},debounce:{type:Number,default:300},label:{type:String,default:void 0},tooltipClass:{type:String,default:void 0},marks:Object},emits:[tt,qt,ps],setup(e,{emit:t}){const n=we("slider"),o=yt({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:s,slider:l,firstButton:r,secondButton:a,sliderDisabled:i,minValue:u,maxValue:c,runwayStyle:d,barStyle:f,resetSize:p,emitChange:h,onSliderClick:g,setFirstValue:m,setSecondValue:v}=uq(e,o,t),{stops:b,getStopStyle:w}=cq(e,o,u,c),S=Wt(),$=E(()=>e.inputSize||S.value),k=E(()=>[n.b(),n.m(S.value),n.is("vertical",e.vertical),{[n.m("with-input")]:e.showInput}]),T=iq(e);fq(e,o,u,c,t,s);const O=E(()=>{const P=[e.min,e.max,e.step].map(N=>{const I=`${N}`.split(".")[1];return I?I.length:0});return Math.max.apply(null,P)}),{sliderWrapper:L}=pq(e,o,p),{firstValue:V,secondValue:B,oldValue:H,dragging:R,sliderSize:z}=Ut(o),W=P=>{o.dragging=P};return st("SliderProvider",Te(ne({},Ut(e)),{sliderSize:z,disabled:i,precision:O,emitChange:h,resetSize:p,updateDragging:W})),{ns:n,firstValue:V,secondValue:B,oldValue:H,dragging:R,sliderSize:z,slider:l,firstButton:r,secondButton:a,sliderDisabled:i,runwayStyle:d,barStyle:f,emitChange:h,onSliderClick:g,getStopStyle:w,setFirstValue:m,setSecondValue:v,stops:b,markList:T,sliderWrapper:L,sliderWrapperSize:S,sliderInputSize:$,sliderKls:k}}}),fq=(e,t,n,o,s,l)=>{const r=u=>{s(tt,u),s(ps,u)},a=()=>e.range?![n.value,o.value].every((u,c)=>u===t.oldValue[c]):e.modelValue!==t.oldValue,i=()=>{var u,c;if(e.min>e.max){Kt("Slider","min should not be greater than max.");return}const d=e.modelValue;e.range&&Array.isArray(d)?d[1]e.max?r([e.max,e.max]):d[0]e.max?r([d[0],e.max]):(t.firstValue=d[0],t.secondValue=d[1],a()&&((u=l.validate)==null||u.call(l,"change").catch(f=>void 0),t.oldValue=d.slice())):!e.range&&typeof d=="number"&&!Number.isNaN(d)&&(de.max?r(e.max):(t.firstValue=d,a()&&((c=l.validate)==null||c.call(l,"change").catch(f=>void 0),t.oldValue=d)))};i(),pe(()=>t.dragging,u=>{u||i()}),pe(()=>e.modelValue,(u,c)=>{t.dragging||Array.isArray(u)&&Array.isArray(c)&&u.every((d,f)=>d===c[f])&&t.firstValue===u[0]&&t.secondValue===u[1]||i()},{deep:!0}),pe(()=>[e.min,e.max],()=>{i()})},pq=(e,t,n)=>{const o=A(null);return xe(async()=>{let s;e.range?(Array.isArray(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue],s=`${t.firstValue}-${t.secondValue}`):(typeof e.modelValue!="number"||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue,s=t.firstValue),o.value.setAttribute("aria-valuetext",s),o.value.setAttribute("aria-label",e.label?e.label:`slider between ${e.min} and ${e.max}`),Tt(window,"resize",n),await ze(),n()}),_t(()=>{Bt(window,"resize",n)}),{sliderWrapper:o}},hq=["aria-valuemin","aria-valuemax","aria-orientation","aria-disabled"],mq={key:1};function vq(e,t,n,o,s,l){const r=le("slider-button"),a=le("slider-marker"),i=le("el-input-number");return C(),M("div",{ref:"sliderWrapper",class:_(e.sliderKls),role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled},[D("div",{ref:"slider",class:_([e.ns.e("runway"),{"show-input":e.showInput&&!e.range},e.ns.is("disabled",e.sliderDisabled)]),style:Pe(e.runwayStyle),onClick:t[0]||(t[0]=(...u)=>e.onSliderClick&&e.onSliderClick(...u))},[D("div",{class:_(e.ns.e("bar")),style:Pe(e.barStyle)},null,6),Y(r,{ref:"firstButton","model-value":e.firstValue,vertical:e.vertical,"tooltip-class":e.tooltipClass,"onUpdate:modelValue":e.setFirstValue},null,8,["model-value","vertical","tooltip-class","onUpdate:modelValue"]),e.range?(C(),x(r,{key:0,ref:"secondButton","model-value":e.secondValue,vertical:e.vertical,"tooltip-class":e.tooltipClass,"onUpdate:modelValue":e.setSecondValue},null,8,["model-value","vertical","tooltip-class","onUpdate:modelValue"])):G("v-if",!0),e.showStops?(C(),M("div",mq,[(C(!0),M(Le,null,it(e.stops,(u,c)=>(C(),M("div",{key:c,class:_(e.ns.e("stop")),style:Pe(e.getStopStyle(u))},null,6))),128))])):G("v-if",!0),e.markList.length>0?(C(),M(Le,{key:2},[D("div",null,[(C(!0),M(Le,null,it(e.markList,(u,c)=>(C(),M("div",{key:c,style:Pe(e.getStopStyle(u.position)),class:_([e.ns.e("stop"),e.ns.e("marks-stop")])},null,6))),128))]),D("div",{class:_(e.ns.e("marks"))},[(C(!0),M(Le,null,it(e.markList,(u,c)=>(C(),x(a,{key:c,mark:u.mark,style:Pe(e.getStopStyle(u.position))},null,8,["mark","style"]))),128))],2)],64)):G("v-if",!0)],6),e.showInput&&!e.range?(C(),x(i,{key:0,ref:"input","model-value":e.firstValue,class:_(e.ns.e("input")),step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.sliderInputSize,"onUpdate:modelValue":e.setFirstValue,onChange:e.emitChange},null,8,["model-value","class","step","disabled","controls","min","max","debounce","size","onUpdate:modelValue","onChange"])):G("v-if",!0)],10,hq)}var _i=ge(dq,[["render",vq],["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/index.vue"]]);_i.install=e=>{e.component(_i.name,_i)};const gq=_i,bq=gq,yq=Be({prefixCls:{type:String,default:""}}),wq=ee({props:yq,setup(e){const t=we("space");return{classes:E(()=>`${e.prefixCls||t.b()}__item`)}}});function Cq(e,t,n,o,s,l){return C(),M("div",{class:_(e.classes)},[ie(e.$slots,"default")],2)}var Eg=ge(wq,[["render",Cq],["__file","/home/runner/work/element-plus/element-plus/packages/components/space/src/item.vue"]]);const _g={small:8,default:12,large:16};function $q(e){const t=we("space"),n=E(()=>[t.b(),t.m(e.direction),e.class]),o=A(0),s=A(0),l=E(()=>{const a=e.wrap||e.fill?{flexWrap:"wrap",marginBottom:`-${s.value}px`}:{},i={alignItems:e.alignment};return[a,i,e.style]}),r=E(()=>{const a={paddingBottom:`${s.value}px`,marginRight:`${o.value}px`},i=e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{};return[a,i]});return zn(()=>{const{size:a="small",wrap:i,direction:u,fill:c}=e;if(Array.isArray(a)){const[d=0,f=0]=a;o.value=d,s.value=f}else{let d;ht(a)?d=a:d=_g[a]||_g.small,(i||c)&&u==="horizontal"?o.value=s.value=d:u==="horizontal"?(o.value=d,s.value=0):(s.value=d,o.value=0)}}),{classes:n,containerStyle:l,itemStyle:r}}const kq=Be({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:$e([String,Object,Array]),default:""},style:{type:$e([String,Array,Object]),default:""},alignment:{type:$e(String),default:"center"},prefixCls:{type:String},spacer:{type:$e([Object,String,Number,Array]),default:null,validator:e=>Ft(e)||ht(e)||Qe(e)},wrap:{type:Boolean,default:!1},fill:{type:Boolean,default:!1},fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:Eo,validator:e=>ht(e)||Xe(e)&&e.length===2&&e.every(t=>ht(t))}});var Sq=ee({name:"ElSpace",props:kq,setup(e,{slots:t}){const{classes:n,containerStyle:o,itemStyle:s}=$q(e);return()=>{var l;const{spacer:r,prefixCls:a,direction:i}=e,u=ie(t,"default",{key:0},()=>[]);if(((l=u.children)!=null?l:[]).length===0)return null;if(Xe(u.children)){let c=[];if(u.children.forEach((d,f)=>{j0(d)?Xe(d.children)&&d.children.forEach((p,h)=>{c.push(Y(Eg,{style:s.value,prefixCls:a,key:`nested-${h}`},{default:()=>[p]},Vn.PROPS|Vn.STYLE,["style","prefixCls"]))}):w8(d)&&c.push(Y(Eg,{style:s.value,prefixCls:a,key:`LoopKey${f}`},{default:()=>[d]},Vn.PROPS|Vn.STYLE,["style","prefixCls"]))}),r){const d=c.length-1;c=c.reduce((f,p,h)=>{const g=[...f,p];return h!==d&&g.push(Y("span",{style:[s.value,i==="vertical"?"width: 100%":null],key:h},[Ft(r)?r:at(r,Vn.TEXT)],Vn.STYLE)),g},[])}return Y("div",{class:n.value,style:o.value},c,Vn.STYLE|Vn.CLASS)}return u.children}}});const Eq=ot(Sq),_q=ee({name:"ElSteps",props:{space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},alignCenter:{type:Boolean,default:!1},simple:{type:Boolean,default:!1},finishStatus:{type:String,default:"finish",validator:e=>["wait","process","finish","error","success"].includes(e)},processStatus:{type:String,default:"process",validator:e=>["wait","process","finish","error","success"].includes(e)}},emits:[qt],setup(e,{emit:t}){const n=we("steps"),o=A([]);return pe(o,()=>{o.value.forEach((s,l)=>{s.setIndex(l)})}),st("ElSteps",{props:e,steps:o}),pe(()=>e.active,(s,l)=>{t(qt,s,l)}),{steps:o,ns:n}}});function Tq(e,t,n,o,s,l){return C(),M("div",{class:_([e.ns.b(),e.ns.m(e.simple?"simple":e.direction)])},[ie(e.$slots,"default")],2)}var Aq=ge(_q,[["render",Tq],["__file","/home/runner/work/element-plus/element-plus/packages/components/steps/src/index.vue"]]);const Nq=ee({name:"ElStep",components:{ElIcon:je,Close:Yn,Check:Xl},props:{title:{type:String,default:""},icon:{type:[String,Object],default:""},description:{type:String,default:""},status:{type:String,default:"",validator:e=>["","wait","process","finish","error","success"].includes(e)}},setup(e){const t=we("step"),n=A(-1),o=A({}),s=A(""),l=Ne("ElSteps"),r=nt();xe(()=>{pe([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([S])=>{b(S)},{immediate:!0})}),_t(()=>{l.steps.value=l.steps.value.filter(S=>S.uid!==r.uid)});const a=E(()=>e.status||s.value),i=E(()=>{const S=l.steps.value[n.value-1];return S?S.currentStatus:"wait"}),u=E(()=>l.props.alignCenter),c=E(()=>l.props.direction==="vertical"),d=E(()=>l.props.simple),f=E(()=>l.steps.value.length),p=E(()=>{var S;return((S=l.steps.value[f.value-1])==null?void 0:S.uid)===r.uid}),h=E(()=>d.value?"":l.props.space),g=E(()=>{const S={flexBasis:typeof h.value=="number"?`${h.value}px`:h.value?h.value:`${100/(f.value-(u.value?0:1))}%`};return c.value||p.value&&(S.maxWidth=`${100/f.value}%`),S}),m=S=>{n.value=S},v=S=>{let $=100;const k={};k.transitionDelay=`${150*n.value}ms`,S===l.props.processStatus?$=0:S==="wait"&&($=0,k.transitionDelay=`${-150*n.value}ms`),k.borderWidth=$&&!d.value?"1px":0,k[l.props.direction==="vertical"?"height":"width"]=`${$}%`,o.value=k},b=S=>{S>n.value?s.value=l.props.finishStatus:S===n.value&&i.value!=="error"?s.value=l.props.processStatus:s.value="wait";const $=l.steps.value[f.value-1];$&&$.calcProgress(s.value)},w=yt({uid:E(()=>r.uid),currentStatus:a,setIndex:m,calcProgress:v});return l.steps.value=[...l.steps.value,w],{ns:t,index:n,lineStyle:o,currentStatus:a,isCenter:u,isVertical:c,isSimple:d,isLast:p,space:h,style:g,parent:l,setIndex:m,calcProgress:v,updateStatus:b}}});function Mq(e,t,n,o,s,l){const r=le("el-icon"),a=le("check"),i=le("close");return C(),M("div",{style:Pe(e.style),class:_([e.ns.b(),e.ns.is(e.isSimple?"simple":e.parent.props.direction),e.ns.is("flex",e.isLast&&!e.space&&!e.isCenter),e.ns.is("center",e.isCenter&&!e.isVertical&&!e.isSimple)])},[G(" icon & line "),D("div",{class:_([e.ns.e("head"),e.ns.is(e.currentStatus)])},[e.isSimple?G("v-if",!0):(C(),M("div",{key:0,class:_(e.ns.e("line"))},[D("i",{class:_(e.ns.e("line-inner")),style:Pe(e.lineStyle)},null,6)],2)),D("div",{class:_([e.ns.e("icon"),e.ns.is(e.icon?"icon":"text")])},[e.currentStatus!=="success"&&e.currentStatus!=="error"?ie(e.$slots,"icon",{key:0},()=>[e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon-inner"))},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class"])):G("v-if",!0),!e.icon&&!e.isSimple?(C(),M("div",{key:1,class:_(e.ns.e("icon-inner"))},he(e.index+1),3)):G("v-if",!0)]):(C(),x(r,{key:1,class:_([e.ns.e("icon-inner"),e.ns.is("status")])},{default:j(()=>[e.currentStatus==="success"?(C(),x(a,{key:0})):(C(),x(i,{key:1}))]),_:1},8,["class"]))],2)],2),G(" title & description "),D("div",{class:_(e.ns.e("main"))},[D("div",{class:_([e.ns.e("title"),e.ns.is(e.currentStatus)])},[ie(e.$slots,"title",{},()=>[at(he(e.title),1)])],2),e.isSimple?(C(),M("div",{key:0,class:_(e.ns.e("arrow"))},null,2)):(C(),M("div",{key:1,class:_([e.ns.e("description"),e.ns.is(e.currentStatus)])},[ie(e.$slots,"description",{},()=>[at(he(e.description),1)])],2))],2)],6)}var gC=ge(Nq,[["render",Mq],["__file","/home/runner/work/element-plus/element-plus/packages/components/steps/src/item.vue"]]);const Oq=ot(Aq,{Step:gC}),Iq=Rt(gC),Pq=Be({modelValue:{type:[Boolean,String,Number],default:!1},value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},inlinePrompt:{type:Boolean,default:!1},activeIcon:{type:nn,default:""},inactiveIcon:{type:nn,default:""},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String,loading:{type:Boolean,default:!1},beforeChange:{type:$e(Function)},size:{type:String,validator:On}}),Dq={[tt]:e=>en(e)||Qe(e)||ht(e),[qt]:e=>en(e)||Qe(e)||ht(e),[ps]:e=>en(e)||Qe(e)||ht(e)},Tg="ElSwitch",Lq=ee({name:Tg,components:{ElIcon:je,Loading:gs},props:Pq,emits:Dq,setup(e,{emit:t}){const{formItem:n}=cr(),o=pl(E(()=>e.loading)),s=we("switch"),l=Wt(),r=A(e.modelValue!==!1),a=A(),i=A(),u=E(()=>[s.b(),s.m(l.value),s.is("disabled",o.value),s.is("checked",d.value)]);pe(()=>e.modelValue,()=>{r.value=!0}),pe(()=>e.value,()=>{r.value=!1});const c=E(()=>r.value?e.modelValue:e.value),d=E(()=>c.value===e.activeValue);[e.activeValue,e.inactiveValue].includes(c.value)||(t(tt,e.inactiveValue),t(qt,e.inactiveValue),t(ps,e.inactiveValue)),pe(d,()=>{var m;a.value.checked=d.value,(e.activeColor||e.inactiveColor)&&h(),e.validateEvent&&((m=n==null?void 0:n.validate)==null||m.call(n,"change").catch(v=>void 0))});const f=()=>{const m=d.value?e.inactiveValue:e.activeValue;t(tt,m),t(qt,m),t(ps,m),ze(()=>{a.value.checked=d.value})},p=()=>{if(o.value)return;const{beforeChange:m}=e;if(!m){f();return}const v=m();[xs(v),en(v)].some(w=>w)||Kt(Tg,"beforeChange must return type `Promise` or `boolean`"),xs(v)?v.then(w=>{w&&f()}).catch(w=>{}):v&&f()},h=()=>{const m=d.value?e.activeColor:e.inactiveColor,v=i.value;e.borderColor?v.style.borderColor=e.borderColor:e.borderColor||(v.style.borderColor=m),v.style.backgroundColor=m,v.children[0].style.color=m},g=()=>{var m,v;(v=(m=a.value)==null?void 0:m.focus)==null||v.call(m)};return xe(()=>{(e.activeColor||e.inactiveColor||e.borderColor)&&h(),a.value.checked=d.value}),{ns:s,input:a,core:i,switchDisabled:o,checked:d,switchKls:u,handleChange:f,switchValue:p,focus:g}}}),Rq=["aria-checked","aria-disabled"],Vq=["id","name","true-value","false-value","disabled"],Bq=["aria-hidden"],Fq=["aria-hidden"],Hq=["aria-hidden"],zq=["aria-hidden"];function Kq(e,t,n,o,s,l){const r=le("el-icon"),a=le("loading");return C(),M("div",{class:_(e.switchKls),role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled,onClick:t[2]||(t[2]=Ke((...i)=>e.switchValue&&e.switchValue(...i),["prevent"]))},[D("input",{id:e.id,ref:"input",class:_(e.ns.e("input")),type:"checkbox",name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled,onChange:t[0]||(t[0]=(...i)=>e.handleChange&&e.handleChange(...i)),onKeydown:t[1]||(t[1]=lt((...i)=>e.switchValue&&e.switchValue(...i),["enter"]))},null,42,Vq),!e.inlinePrompt&&(e.inactiveIcon||e.inactiveText)?(C(),M("span",{key:0,class:_([e.ns.e("label"),e.ns.em("label","left"),e.ns.is("active",!e.checked)])},[e.inactiveIcon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.inactiveIcon)))]),_:1})):G("v-if",!0),!e.inactiveIcon&&e.inactiveText?(C(),M("span",{key:1,"aria-hidden":e.checked},he(e.inactiveText),9,Bq)):G("v-if",!0)],2)):G("v-if",!0),D("span",{ref:"core",class:_(e.ns.e("core")),style:Pe({width:(e.width||40)+"px"})},[e.inlinePrompt?(C(),M("div",{key:0,class:_(e.ns.e("inner"))},[e.activeIcon||e.inactiveIcon?(C(),M(Le,{key:0},[e.activeIcon?(C(),x(r,{key:0,class:_([e.ns.is("icon"),e.checked?e.ns.is("show"):e.ns.is("hide")])},{default:j(()=>[(C(),x(ft(e.activeIcon)))]),_:1},8,["class"])):G("v-if",!0),e.inactiveIcon?(C(),x(r,{key:1,class:_([e.ns.is("icon"),e.checked?e.ns.is("hide"):e.ns.is("show")])},{default:j(()=>[(C(),x(ft(e.inactiveIcon)))]),_:1},8,["class"])):G("v-if",!0)],64)):e.activeText||e.inactiveIcon?(C(),M(Le,{key:1},[e.activeText?(C(),M("span",{key:0,class:_([e.ns.is("text"),e.checked?e.ns.is("show"):e.ns.is("hide")]),"aria-hidden":!e.checked},he(e.activeText.substring(0,3)),11,Fq)):G("v-if",!0),e.inactiveText?(C(),M("span",{key:1,class:_([e.ns.is("text"),e.checked?e.ns.is("hide"):e.ns.is("show")]),"aria-hidden":e.checked},he(e.inactiveText.substring(0,3)),11,Hq)):G("v-if",!0)],64)):G("v-if",!0)],2)):G("v-if",!0),D("div",{class:_(e.ns.e("action"))},[e.loading?(C(),x(r,{key:0,class:_(e.ns.is("loading"))},{default:j(()=>[Y(a)]),_:1},8,["class"])):G("v-if",!0)],2)],6),!e.inlinePrompt&&(e.activeIcon||e.activeText)?(C(),M("span",{key:1,class:_([e.ns.e("label"),e.ns.em("label","right"),e.ns.is("active",e.checked)])},[e.activeIcon?(C(),x(r,{key:0},{default:j(()=>[(C(),x(ft(e.activeIcon)))]),_:1})):G("v-if",!0),!e.activeIcon&&e.activeText?(C(),M("span",{key:1,"aria-hidden":!e.checked},he(e.activeText),9,zq)):G("v-if",!0)],2)):G("v-if",!0)],10,Rq)}var Wq=ge(Lq,[["render",Kq],["__file","/home/runner/work/element-plus/element-plus/packages/components/switch/src/switch.vue"]]);const jq=ot(Wq);/*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk * Copyright(c) 2015 Andreas Lubbe * Copyright(c) 2015 Tiancheng "Timothy" Gu * MIT Licensed - */var Wq=/["'&<>]/,jq=Yq;function Yq(e){var t=""+e,n=Wq.exec(t);if(!n)return t;var o,s="",l=0,r=0;for(l=n.index;ltypeof u=="string"?It(a,u):u(a,i,e))):(t!=="$key"&&Tg(a)&&"$value"in a&&(a=a.$value),[Tg(a)?It(a,t):a])},r=function(a,i){if(o)return o(a.value,i.value);for(let u=0,c=a.key.length;ui.key[u])return 1}return 0};return e.map((a,i)=>({value:a,index:i,key:l?l(a,i):null})).sort((a,i)=>{let u=r(a,i);return u||(u=a.index-i.index),u*+n}).map(a=>a.value)},mC=function(e,t){let n=null;return e.columns.forEach(o=>{o.id===t&&(n=o)}),n},qq=function(e,t){let n=null;for(let o=0;o{if(!e)throw new Error("Row is required when get row identity");if(typeof t=="string"){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let o=e;for(const s of n)o=o[s];return`${o}`}else if(typeof t=="function")return t.call(null,e)},zs=function(e,t){const n={};return(e||[]).forEach((o,s)=>{n[Qt(o,t)]={row:o,index:s}}),n};function Gq(e,t){const n={};let o;for(o in e)n[o]=e[o];for(o in t)if(at(t,o)){const s=t[o];typeof s!="undefined"&&(n[o]=s)}return n}function Np(e){return e===""||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function vC(e){return e===""||e!==void 0&&(e=Np(e),Number.isNaN(e)&&(e=80)),e}function Wd(e){return typeof e=="number"?e:typeof e=="string"?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function Xq(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...o)=>t(n(...o)))}function Ai(e,t,n){let o=!1;const s=e.indexOf(t),l=s!==-1,r=()=>{e.push(t),o=!0},a=()=>{e.splice(s,1),o=!0};return typeof n=="boolean"?n&&!l?r():!n&&l&&a():l?a():r(),o}function Jq(e,t,n="children",o="hasChildren"){const s=r=>!(Array.isArray(r)&&r.length);function l(r,a,i){t(r,a,i),a.forEach(u=>{if(u[o]){t(u,null,i+1);return}const c=u[n];s(c)||l(u,c,i+1)})}e.forEach(r=>{if(r[o]){t(r,null,0);return}const a=r[n];s(a)||l(r,a,0)})}let su;function Zq(e,t,n,o){const{nextZIndex:s}=jo();function l(){const d=o==="light",f=document.createElement("div");return f.className=`el-popper ${d?"is-light":"is-dark"}`,t=jq(t),f.innerHTML=t,f.style.zIndex=String(s()),document.body.appendChild(f),f}function r(){const d=document.createElement("div");return d.className="el-popper__arrow",d}function a(){i&&i.update()}su=function d(){try{i&&i.destroy(),u&&document.body.removeChild(u),Vt(e,"mouseenter",a),Vt(e,"mouseleave",d)}catch{}};let i=null;const u=l(),c=r();return u.appendChild(c),i=va(e,u,ne({modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"arrow",options:{element:c,padding:10}}]},n)),Tt(e,"mouseenter",a),Tt(e,"mouseleave",su),i}const gC=(e,t,n,o)=>{let s=0,l=e;if(o){if(o[e].colSpan>1)return{};for(let i=0;i=a.value.length-n.states.rightFixedLeafColumnsLength.value&&(r="right");break;default:l=a.value.length-n.states.rightFixedLeafColumnsLength.value&&(r="right")}return r?{direction:r,start:s,after:l}:{}},Mp=(e,t,n,o,s)=>{const l=[],{direction:r,start:a}=gC(t,n,o,s);if(r){const i=r==="left";l.push(`${e}-fixed-column--${r}`),i&&a===o.states.fixedLeafColumnsLength.value-1?l.push("is-last-column"):!i&&a===o.states.columns.value.length-o.states.rightFixedLeafColumnsLength.value&&l.push("is-first-column")}return l};function Ng(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Op=(e,t,n,o)=>{const{direction:s,start:l=0}=gC(e,t,n,o);if(!s)return;const r={},a=s==="left",i=n.states.columns.value;return a?r.left=i.slice(0,e).reduce(Ng,0):r.right=i.slice(l+1).reverse().reduce(Ng,0),r},er=(e,t)=>{!e||Number.isNaN(e[t])||(e[t]=`${e[t]}px`)};function Qq(e){const t=nt(),n=A(!1),o=A([]);return{updateExpandRows:()=>{const i=e.data.value||[],u=e.rowKey.value;if(n.value)o.value=i.slice();else if(u){const c=zs(o.value,u);o.value=i.reduce((d,f)=>{const p=Qt(f,u);return c[p]&&d.push(f),d},[])}else o.value=[]},toggleRowExpansion:(i,u)=>{Ai(o.value,i,u)&&t.emit("expand-change",i,o.value.slice())},setExpandRowKeys:i=>{t.store.assertRowKey();const u=e.data.value||[],c=e.rowKey.value,d=zs(u,c);o.value=i.reduce((f,p)=>{const h=d[p];return h&&f.push(h.row),f},[])},isRowExpanded:i=>{const u=e.rowKey.value;return u?!!zs(o.value,u)[Qt(i,u)]:o.value.includes(i)},states:{expandRows:o,defaultExpandAll:n}}}function xq(e){const t=nt(),n=A(null),o=A(null),s=u=>{t.store.assertRowKey(),n.value=u,r(u)},l=()=>{n.value=null},r=u=>{const{data:c,rowKey:d}=e;let f=null;d.value&&(f=(b(c)||[]).find(p=>Qt(p,d.value)===u)),o.value=f,t.emit("current-change",o.value,null)};return{setCurrentRowKey:s,restoreCurrentRowKey:l,setCurrentRowByKey:r,updateCurrentRow:u=>{const c=o.value;if(u&&u!==c){o.value=u,t.emit("current-change",o.value,c);return}!u&&c&&(o.value=null,t.emit("current-change",null,c))},updateCurrentRowData:()=>{const u=e.rowKey.value,c=e.data.value||[],d=o.value;if(!c.includes(d)&&d){if(u){const f=Qt(d,u);r(f)}else o.value=null;o.value===null&&t.emit("current-change",null,d)}else n.value&&(r(n.value),l())},states:{_currentRowKey:n,currentRow:o}}}function eG(e){const t=A([]),n=A({}),o=A(16),s=A(!1),l=A({}),r=A("hasChildren"),a=A("children"),i=nt(),u=E(()=>{if(!e.rowKey.value)return{};const v=e.data.value||[];return d(v)}),c=E(()=>{const v=e.rowKey.value,y=Object.keys(l.value),w={};return y.length&&y.forEach(S=>{if(l.value[S].length){const $={children:[]};l.value[S].forEach(k=>{const T=Qt(k,v);$.children.push(T),k[r.value]&&!w[T]&&(w[T]={children:[]})}),w[S]=$}}),w}),d=v=>{const y=e.rowKey.value,w={};return Jq(v,(S,$,k)=>{const T=Qt(S,y);Array.isArray($)?w[T]={children:$.map(O=>Qt(O,y)),level:k}:s.value&&(w[T]={children:[],lazy:!0,level:k})},a.value,r.value),w},f=(v=!1,y=(w=>(w=i.store)==null?void 0:w.states.defaultExpandAll.value)())=>{var w;const S=u.value,$=c.value,k=Object.keys(S),T={};if(k.length){const O=b(n),L=[],B=(H,R)=>{if(v)return t.value?y||t.value.includes(R):!!(y||(H==null?void 0:H.expanded));{const z=y||t.value&&t.value.includes(R);return!!((H==null?void 0:H.expanded)||z)}};k.forEach(H=>{const R=O[H],z=ne({},S[H]);if(z.expanded=B(R,H),z.lazy){const{loaded:W=!1,loading:P=!1}=R||{};z.loaded=!!W,z.loading=!!P,L.push(H)}T[H]=z});const V=Object.keys($);s.value&&V.length&&L.length&&V.forEach(H=>{const R=O[H],z=$[H].children;if(L.includes(H)){if(T[H].children.length!==0)throw new Error("[ElTable]children must be an empty array.");T[H].children=z}else{const{loaded:W=!1,loading:P=!1}=R||{};T[H]={lazy:!0,loaded:!!W,loading:!!P,expanded:B(R,H),children:z,level:""}}})}n.value=T,(w=i.store)==null||w.updateTableScrollY()};pe(()=>t.value,()=>{f(!0)}),pe(()=>u.value,()=>{f()}),pe(()=>c.value,()=>{f()});const p=v=>{t.value=v,f()},h=(v,y)=>{i.store.assertRowKey();const w=e.rowKey.value,S=Qt(v,w),$=S&&n.value[S];if(S&&$&&"expanded"in $){const k=$.expanded;y=typeof y=="undefined"?!$.expanded:y,n.value[S].expanded=y,k!==y&&i.emit("expand-change",v,y),i.store.updateTableScrollY()}},g=v=>{i.store.assertRowKey();const y=e.rowKey.value,w=Qt(v,y),S=n.value[w];s.value&&S&&"loaded"in S&&!S.loaded?m(v,w,S):h(v,void 0)},m=(v,y,w)=>{const{load:S}=i.props;S&&!n.value[y].loaded&&(n.value[y].loading=!0,S(v,w,$=>{if(!Array.isArray($))throw new TypeError("[ElTable] data must be an array");n.value[y].loading=!1,n.value[y].loaded=!0,n.value[y].expanded=!0,$.length&&(l.value[y]=$),i.emit("expand-change",v,!0)}))};return{loadData:m,loadOrToggle:g,toggleTreeExpansion:h,updateTreeExpandKeys:p,updateTreeData:f,normalize:d,states:{expandRowKeys:t,treeData:n,indent:o,lazy:s,lazyTreeNodeMap:l,lazyColumnIdentifier:r,childrenColumnName:a}}}const tG=(e,t)=>{const n=t.sortingColumn;return!n||typeof n.sortable=="string"?e:Uq(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},Ni=e=>{const t=[];return e.forEach(n=>{n.children?t.push.apply(t,Ni(n.children)):t.push(n)}),t};function nG(){var e;const t=nt(),{size:n}=Ut((e=t.proxy)==null?void 0:e.$props),o=A(null),s=A([]),l=A([]),r=A(!1),a=A([]),i=A([]),u=A([]),c=A([]),d=A([]),f=A([]),p=A([]),h=A([]),g=A(0),m=A(0),v=A(0),y=A(!1),w=A([]),S=A(!1),$=A(!1),k=A(null),T=A({}),O=A(null),L=A(null),B=A(null),V=A(null),H=A(null);pe(s,()=>t.state&&W(!1),{deep:!0});const R=()=>{if(!o.value)throw new Error("[ElTable] prop row-key is required")},z=()=>{c.value=a.value.filter(Ae=>Ae.fixed===!0||Ae.fixed==="left"),d.value=a.value.filter(Ae=>Ae.fixed==="right"),c.value.length>0&&a.value[0]&&a.value[0].type==="selection"&&!a.value[0].fixed&&(a.value[0].fixed=!0,c.value.unshift(a.value[0]));const He=a.value.filter(Ae=>!Ae.fixed);i.value=[].concat(c.value).concat(He).concat(d.value);const oe=Ni(He),me=Ni(c.value),ce=Ni(d.value);g.value=oe.length,m.value=me.length,v.value=ce.length,u.value=[].concat(me).concat(oe).concat(ce),r.value=c.value.length>0||d.value.length>0},W=(He,oe=!1)=>{He&&z(),oe?t.state.doLayout():t.state.debouncedUpdateLayout()},P=He=>w.value.includes(He),N=()=>{y.value=!1,w.value.length&&(w.value=[],t.emit("selection-change",[]))},I=()=>{let He;if(o.value){He=[];const oe=zs(w.value,o.value),me=zs(s.value,o.value);for(const ce in oe)at(oe,ce)&&!me[ce]&&He.push(oe[ce].row)}else He=w.value.filter(oe=>!s.value.includes(oe));if(He.length){const oe=w.value.filter(me=>!He.includes(me));w.value=oe,t.emit("selection-change",oe.slice())}},U=()=>(w.value||[]).slice(),q=(He,oe=void 0,me=!0)=>{if(Ai(w.value,He,oe)){const Ae=(w.value||[]).slice();me&&t.emit("select",Ae,He),t.emit("selection-change",Ae)}},Q=()=>{var He,oe;const me=$.value?!y.value:!(y.value||w.value.length);y.value=me;let ce=!1,Ae=0;const Ue=(oe=(He=t==null?void 0:t.store)==null?void 0:He.states)==null?void 0:oe.rowKey.value;s.value.forEach((mt,St)=>{const bt=St+Ae;k.value?k.value.call(null,mt,bt)&&Ai(w.value,mt,me)&&(ce=!0):Ai(w.value,mt,me)&&(ce=!0),Ae+=Ee(Qt(mt,Ue))}),ce&&t.emit("selection-change",w.value?w.value.slice():[]),t.emit("select-all",w.value)},J=()=>{const He=zs(w.value,o.value);s.value.forEach(oe=>{const me=Qt(oe,o.value),ce=He[me];ce&&(w.value[ce.index]=oe)})},ae=()=>{var He,oe,me;if(((He=s.value)==null?void 0:He.length)===0){y.value=!1;return}let ce;o.value&&(ce=zs(w.value,o.value));const Ae=function(bt){return ce?!!ce[Qt(bt,o.value)]:w.value.includes(bt)};let Ue=!0,mt=0,St=0;for(let bt=0,At=(s.value||[]).length;bt{var oe;if(!t||!t.store)return 0;const{treeData:me}=t.store.states;let ce=0;const Ae=(oe=me.value[He])==null?void 0:oe.children;return Ae&&(ce+=Ae.length,Ae.forEach(Ue=>{ce+=Ee(Ue)})),ce},Me=(He,oe)=>{Array.isArray(He)||(He=[He]);const me={};return He.forEach(ce=>{T.value[ce.id]=oe,me[ce.columnKey||ce.id]=oe}),me},Z=(He,oe,me)=>{L.value&&L.value!==He&&(L.value.order=null),L.value=He,B.value=oe,V.value=me},ve=()=>{let He=b(l);Object.keys(T.value).forEach(oe=>{const me=T.value[oe];if(!me||me.length===0)return;const ce=mC({columns:u.value},oe);ce&&ce.filterMethod&&(He=He.filter(Ae=>me.some(Ue=>ce.filterMethod.call(null,Ue,Ae,ce))))}),O.value=He},Ce=()=>{s.value=tG(O.value,{sortingColumn:L.value,sortProp:B.value,sortOrder:V.value})},ke=(He=void 0)=>{He&&He.filter||ve(),Ce()},Oe=He=>{const{tableHeaderRef:oe}=t.refs;if(!oe)return;const me=Object.assign({},oe.filterPanels),ce=Object.keys(me);if(!!ce.length)if(typeof He=="string"&&(He=[He]),Array.isArray(He)){const Ae=He.map(Ue=>qq({columns:u.value},Ue));ce.forEach(Ue=>{const mt=Ae.find(St=>St.id===Ue);mt&&(mt.filteredValue=[])}),t.store.commit("filterChange",{column:Ae,values:[],silent:!0,multi:!0})}else ce.forEach(Ae=>{const Ue=u.value.find(mt=>mt.id===Ae);Ue&&(Ue.filteredValue=[])}),T.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},We=()=>{!L.value||(Z(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:qe,toggleRowExpansion:K,updateExpandRows:X,states:fe,isRowExpanded:ye}=Qq({data:s,rowKey:o}),{updateTreeExpandKeys:be,toggleTreeExpansion:_e,updateTreeData:re,loadOrToggle:se,states:ee}=eG({data:s,rowKey:o}),{updateCurrentRowData:ue,updateCurrentRow:Re,setCurrentRowKey:F,states:de}=xq({data:s,rowKey:o});return{assertRowKey:R,updateColumns:z,scheduleLayout:W,isSelected:P,clearSelection:N,cleanSelection:I,getSelectionRows:U,toggleRowSelection:q,_toggleAllSelection:Q,toggleAllSelection:null,updateSelectionByRowKey:J,updateAllSelected:ae,updateFilters:Me,updateCurrentRow:Re,updateSort:Z,execFilter:ve,execSort:Ce,execQuery:ke,clearFilter:Oe,clearSort:We,toggleRowExpansion:K,setExpandRowKeysAdapter:He=>{qe(He),be(He)},setCurrentRowKey:F,toggleRowExpansionAdapter:(He,oe)=>{u.value.some(({type:ce})=>ce==="expand")?K(He,oe):_e(He,oe)},isRowExpanded:ye,updateExpandRows:X,updateCurrentRowData:ue,loadOrToggle:se,updateTreeData:re,states:ne(ne(ne({tableSize:n,rowKey:o,data:s,_data:l,isComplex:r,_columns:a,originColumns:i,columns:u,fixedColumns:c,rightFixedColumns:d,leafColumns:f,fixedLeafColumns:p,rightFixedLeafColumns:h,leafColumnsLength:g,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:v,isAllSelected:y,selection:w,reserveSelection:S,selectOnIndeterminate:$,selectable:k,filters:T,filteredData:O,sortingColumn:L,sortProp:B,sortOrder:V,hoverRow:H},fe),ee),de)}}function jd(e,t){return e.map(n=>{var o;return n.id===t.id?t:((o=n.children)!=null&&o.length&&(n.children=jd(n.children,t)),n)})}function bC(e){e.forEach(t=>{var n,o;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(o=t.children)!=null&&o.length&&bC(t.children)}),e.sort((t,n)=>t.no-n.no)}function oG(){const e=nt(),t=nG(),n=we("table"),o={setData(r,a){const i=b(r._data)!==a;r.data.value=a,r._data.value=a,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),b(r.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):i?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(r,a,i){const u=b(r._columns);let c=[];i?(i&&!i.children&&(i.children=[]),i.children.push(a),c=jd(u,i)):(u.push(a),c=u),bC(c),r._columns.value=c,a.type==="selection"&&(r.selectable.value=a.selectable,r.reserveSelection.value=a.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},removeColumn(r,a,i){const u=b(r._columns)||[];if(i)i.children.splice(i.children.findIndex(c=>c.id===a.id),1),i.children.length===0&&delete i.children,r._columns.value=jd(u,i);else{const c=u.indexOf(a);c>-1&&(u.splice(c,1),r._columns.value=u)}e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(r,a){const{prop:i,order:u,init:c}=a;if(i){const d=b(r.columns).find(f=>f.property===i);d&&(d.order=u,e.store.updateSort(d,i,u),e.store.commit("changeSortCondition",{init:c}))}},changeSortCondition(r,a){const{sortingColumn:i,sortProp:u,sortOrder:c}=r;b(c)===null&&(r.sortingColumn.value=null,r.sortProp.value=null);const d={filter:!0};e.store.execQuery(d),(!a||!(a.silent||a.init))&&e.emit("sort-change",{column:b(i),prop:b(u),order:b(c)}),e.store.updateTableScrollY()},filterChange(r,a){const{column:i,values:u,silent:c}=a,d=e.store.updateFilters(i,u);e.store.execQuery(),c||e.emit("filter-change",d),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(r,a){e.store.toggleRowSelection(a),e.store.updateAllSelected()},setHoverRow(r,a){r.hoverRow.value=a},setCurrentRow(r,a){e.store.updateCurrentRow(a)}},s=function(r,...a){const i=e.store.mutations;if(i[r])i[r].apply(e,[e.store.states].concat(a));else throw new Error(`Action not found: ${r}`)},l=function(){ze(()=>e.layout.updateScrollY.apply(e.layout))};return Te(ne({ns:n},t),{mutations:o,commit:s,updateTableScrollY:l})}const qr={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data",["treeProps.hasChildren"]:{key:"lazyColumnIdentifier",default:"hasChildren"},["treeProps.children"]:{key:"childrenColumnName",default:"children"}};function sG(e,t){if(!e)throw new Error("Table is required.");const n=oG();return n.toggleAllSelection=hn(n._toggleAllSelection,10),Object.keys(qr).forEach(o=>{yC(wC(t,o),o,n)}),lG(n,t),n}function lG(e,t){Object.keys(qr).forEach(n=>{pe(()=>wC(t,n),o=>{yC(o,n,e)})})}function yC(e,t,n){let o=e,s=qr[t];typeof qr[t]=="object"&&(s=s.key,o=o||qr[t].default),n.states[s].value=o}function wC(e,t){if(t.includes(".")){const n=t.split(".");let o=e;return n.forEach(s=>{o=o[s]}),o}else return e[t]}class rG{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=A(null),this.scrollX=A(!1),this.scrollY=A(!1),this.bodyWidth=A(null),this.fixedWidth=A(null),this.rightFixedWidth=A(null),this.tableHeight=A(null),this.headerHeight=A(44),this.appendHeight=A(0),this.footerHeight=A(44),this.viewportHeight=A(null),this.bodyHeight=A(null),this.bodyScrollHeight=A(0),this.fixedBodyHeight=A(null),this.gutterWidth=0;for(const n in t)at(t,n)&&(Lt(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const n=this.table.refs.bodyWrapper;if(this.table.vnode.el&&n){let o=!0;const s=this.scrollY.value;return this.bodyHeight.value===null?o=!1:o=n.scrollHeight>this.bodyHeight.value,this.scrollY.value=o,s!==o}return!1}setHeight(t,n="height"){if(!ct)return;const o=this.table.vnode.el;if(t=Wd(t),this.height.value=Number(t),!o&&(t||t===0))return ze(()=>this.setHeight(t,n));typeof t=="number"?(o.style[n]=`${t}px`,this.updateElsHeight()):typeof t=="string"&&(o.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(o=>{o.isColumnGroup?t.push.apply(t,o.columns):t.push(o)}),t}updateElsHeight(){var t,n;if(!this.table.$ready)return ze(()=>this.updateElsHeight());const{tableWrapper:o,headerWrapper:s,appendWrapper:l,footerWrapper:r,tableHeader:a,tableBody:i}=this.table.refs;if(o&&o.style.display==="none")return;const{tableLayout:u}=this.table.props;if(this.appendHeight.value=l?l.offsetHeight:0,this.showHeader&&!s&&u==="fixed")return;const c=a||null,d=this.headerDisplayNone(c),f=(s==null?void 0:s.offsetHeight)||0,p=this.headerHeight.value=this.showHeader?f:0;if(this.showHeader&&!d&&f>0&&(this.table.store.states.columns.value||[]).length>0&&p<2)return ze(()=>this.updateElsHeight());const h=this.tableHeight.value=(n=(t=this.table)==null?void 0:t.vnode.el)==null?void 0:n.clientHeight,g=this.footerHeight.value=r?r.offsetHeight:0;this.height.value!==null&&(this.bodyHeight.value===null&&requestAnimationFrame(()=>this.updateElsHeight()),this.bodyHeight.value=h-p-g+(r?1:0),this.bodyScrollHeight.value=i==null?void 0:i.scrollHeight),this.fixedBodyHeight.value=this.scrollX.value?this.bodyHeight.value-this.gutterWidth:this.bodyHeight.value,this.viewportHeight.value=this.scrollX.value?h-this.gutterWidth:h,this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!=="DIV";){if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}updateColumnsWidth(){if(!ct)return;const t=this.fit,n=this.table.vnode.el.clientWidth;let o=0;const s=this.getFlattenColumns(),l=s.filter(i=>typeof i.width!="number");if(s.forEach(i=>{typeof i.width=="number"&&i.realWidth&&(i.realWidth=null)}),l.length>0&&t){if(s.forEach(i=>{o+=Number(i.width||i.minWidth||80)}),o<=n){this.scrollX.value=!1;const i=n-o;if(l.length===1)l[0].realWidth=Number(l[0].minWidth||80)+i;else{const u=l.reduce((f,p)=>f+Number(p.minWidth||80),0),c=i/u;let d=0;l.forEach((f,p)=>{if(p===0)return;const h=Math.floor(Number(f.minWidth||80)*c);d+=h,f.realWidth=Number(f.minWidth||80)+h}),l[0].realWidth=Number(l[0].minWidth||80)+i-d}}else this.scrollX.value=!0,l.forEach(i=>{i.realWidth=Number(i.minWidth)});this.bodyWidth.value=Math.max(o,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(i=>{!i.width&&!i.minWidth?i.realWidth=80:i.realWidth=Number(i.width||i.minWidth),o+=i.realWidth}),this.scrollX.value=o>n,this.bodyWidth.value=o;const r=this.store.states.fixedColumns.value;if(r.length>0){let i=0;r.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.fixedWidth.value=i}const a=this.store.states.rightFixedColumns.value;if(a.length>0){let i=0;a.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=i}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(o=>{var s,l;switch(t){case"columns":(s=o.state)==null||s.onColumnsChange(this);break;case"scrollable":(l=o.state)==null||l.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:aG}=ao,iG=te({name:"ElTableFilterPanel",components:{ElCheckbox:ao,ElCheckboxGroup:aG,ElScrollbar:Uo,ElTooltip:mn,ElIcon:je,ArrowDown:fl,ArrowUp:Aa},directives:{ClickOutside:ml},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=nt(),{t:n}=kt(),o=we("table-filter"),s=t==null?void 0:t.parent;s.filterPanels.value[e.column.id]||(s.filterPanels.value[e.column.id]=t);const l=A(!1),r=A(null),a=E(()=>e.column&&e.column.filters),i=E({get:()=>{var S;return(((S=e.column)==null?void 0:S.filteredValue)||[])[0]},set:S=>{u.value&&(typeof S!="undefined"&&S!==null?u.value.splice(0,1,S):u.value.splice(0,1))}}),u=E({get(){return e.column?e.column.filteredValue||[]:[]},set(S){e.column&&e.upDataColumn("filteredValue",S)}}),c=E(()=>e.column?e.column.filterMultiple:!0),d=S=>S.value===i.value,f=()=>{l.value=!1},p=S=>{S.stopPropagation(),l.value=!l.value},h=()=>{l.value=!1},g=()=>{y(u.value),f()},m=()=>{u.value=[],y(u.value),f()},v=S=>{i.value=S,y(typeof S!="undefined"&&S!==null?u.value:[]),f()},y=S=>{e.store.commit("filterChange",{column:e.column,values:S}),e.store.updateAllSelected()};pe(l,S=>{e.column&&e.upDataColumn("filterOpened",S)},{immediate:!0});const w=E(()=>{var S,$;return($=(S=r.value)==null?void 0:S.popperRef)==null?void 0:$.contentRef});return{tooltipVisible:l,multiple:c,filteredValue:u,filterValue:i,filters:a,handleConfirm:g,handleReset:m,handleSelect:v,isActive:d,t:n,ns:o,showFilterPanel:p,hideFilterPanel:h,popperPaneRef:w,tooltip:r}}}),uG={key:0},cG=["disabled"],dG=["label","onClick"];function fG(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-checkbox-group"),i=le("el-scrollbar"),u=le("arrow-up"),c=le("arrow-down"),d=le("el-icon"),f=le("el-tooltip"),p=Mn("click-outside");return C(),x(f,{ref:"tooltip",visible:e.tooltipVisible,"onUpdate:visible":t[5]||(t[5]=h=>e.tooltipVisible=h),offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,"append-to-body":"",effect:"light",pure:"","popper-class":e.ns.b(),persistent:""},{content:j(()=>[e.multiple?(C(),M("div",uG,[D("div",{class:_(e.ns.e("content"))},[Y(i,{"wrap-class":e.ns.e("wrap")},{default:j(()=>[Y(a,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=h=>e.filteredValue=h),class:_(e.ns.e("checkbox-group"))},{default:j(()=>[(C(!0),M(Le,null,rt(e.filters,h=>(C(),x(r,{key:h.value,label:h.value},{default:j(()=>[it(he(h.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),D("div",{class:_(e.ns.e("bottom"))},[D("button",{class:_({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...h)=>e.handleConfirm&&e.handleConfirm(...h))},he(e.t("el.table.confirmFilter")),11,cG),D("button",{type:"button",onClick:t[2]||(t[2]=(...h)=>e.handleReset&&e.handleReset(...h))},he(e.t("el.table.resetFilter")),1)],2)])):(C(),M("ul",{key:1,class:_(e.ns.e("list"))},[D("li",{class:_([e.ns.e("list-item"),{[e.ns.is("active")]:e.filterValue===void 0||e.filterValue===null}]),onClick:t[3]||(t[3]=h=>e.handleSelect(null))},he(e.t("el.table.clearFilter")),3),(C(!0),M(Le,null,rt(e.filters,h=>(C(),M("li",{key:h.value,class:_([e.ns.e("list-item"),e.ns.is("active",e.isActive(h))]),label:h.value,onClick:g=>e.handleSelect(h.value)},he(h.text),11,dG))),128))],2))]),default:j(()=>[Ge((C(),M("span",{class:_([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...h)=>e.showFilterPanel&&e.showFilterPanel(...h))},[Y(d,null,{default:j(()=>[e.column.filterOpened?(C(),x(u,{key:0})):(C(),x(c,{key:1}))]),_:1})],2)),[[p,e.hideFilterPanel,e.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var pG=ge(iG,[["render",fG],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/filter-panel.vue"]]);function CC(e){const t=nt();$a(()=>{n.value.addObserver(t)}),xe(()=>{o(n.value),s(n.value)}),Xn(()=>{o(n.value),s(n.value)}),ka(()=>{n.value.removeObserver(t)});const n=E(()=>{const l=e.layout;if(!l)throw new Error("Can not find table layout.");return l}),o=l=>{var r;const a=((r=e.vnode.el)==null?void 0:r.querySelectorAll("colgroup > col"))||[];if(!a.length)return;const i=l.getFlattenColumns(),u={};i.forEach(c=>{u[c.id]=c});for(let c=0,d=a.length;c{var r,a;const i=((r=e.vnode.el)==null?void 0:r.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let c=0,d=i.length;c{g.stopPropagation()},l=(g,m)=>{!m.filters&&m.sortable?h(g,m,!1):m.filterable&&!m.sortable&&s(g),o==null||o.emit("header-click",m,g)},r=(g,m)=>{o==null||o.emit("header-contextmenu",m,g)},a=A(null),i=A(!1),u=A({}),c=(g,m)=>{if(!!ct&&!(m.children&&m.children.length>0)&&a.value&&e.border){i.value=!0;const v=o;t("set-drag-visible",!0);const w=(v==null?void 0:v.vnode.el).getBoundingClientRect().left,S=n.vnode.el.querySelector(`th.${m.id}`),$=S.getBoundingClientRect(),k=$.left-w+30;wo(S,"noclick"),u.value={startMouseLeft:g.clientX,startLeft:$.right-w,startColumnLeft:$.left-w,tableLeft:w};const T=v==null?void 0:v.refs.resizeProxy;T.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const O=B=>{const V=B.clientX-u.value.startMouseLeft,H=u.value.startLeft+V;T.style.left=`${Math.max(k,H)}px`},L=()=>{if(i.value){const{startColumnLeft:B,startLeft:V}=u.value,R=Number.parseInt(T.style.left,10)-B;m.width=m.realWidth=R,v==null||v.emit("header-dragend",m.width,V-B,m,g),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",i.value=!1,a.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",L),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{fn(S,"noclick")},0)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",L)}},d=(g,m)=>{if(m.children&&m.children.length>0)return;let v=g.target;for(;v&&v.tagName!=="TH";)v=v.parentNode;if(!(!m||!m.resizable)&&!i.value&&e.border){const y=v.getBoundingClientRect(),w=document.body.style;y.width>12&&y.right-g.pageX<8?(w.cursor="col-resize",oo(v,"is-sortable")&&(v.style.cursor="col-resize"),a.value=m):i.value||(w.cursor="",oo(v,"is-sortable")&&(v.style.cursor="pointer"),a.value=null)}},f=()=>{!ct||(document.body.style.cursor="")},p=({order:g,sortOrders:m})=>{if(g==="")return m[0];const v=m.indexOf(g||null);return m[v>m.length-2?0:v+1]},h=(g,m,v)=>{g.stopPropagation();const y=m.order===v?null:v||p(m);let w=g.target;for(;w&&w.tagName!=="TH";)w=w.parentNode;if(w&&w.tagName==="TH"&&oo(w,"noclick")){fn(w,"noclick");return}if(!m.sortable)return;const S=e.store.states;let $=S.sortProp.value,k;const T=S.sortingColumn.value;(T!==m||T===m&&T.order===null)&&(T&&(T.order=null),S.sortingColumn.value=m,$=m.property),y?k=m.order=y:k=m.order=null,S.sortProp.value=$,S.sortOrder.value=k,o==null||o.store.commit("changeSortCondition")};return{handleHeaderClick:l,handleHeaderContextMenu:r,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:h,handleFilterClick:s}}function mG(e){const t=Ne(_o),n=we("table");return{getHeaderRowStyle:a=>{const i=t==null?void 0:t.props.headerRowStyle;return typeof i=="function"?i.call(null,{rowIndex:a}):i},getHeaderRowClass:a=>{const i=[],u=t==null?void 0:t.props.headerRowClassName;return typeof u=="string"?i.push(u):typeof u=="function"&&i.push(u.call(null,{rowIndex:a})),i.join(" ")},getHeaderCellStyle:(a,i,u,c)=>{var d;let f=(d=t==null?void 0:t.props.headerCellStyle)!=null?d:{};typeof f=="function"&&(f=f.call(null,{rowIndex:a,columnIndex:i,row:u,column:c}));const p=c.isSubColumn?null:Op(i,c.fixed,e.store,u);return er(p,"left"),er(p,"right"),Object.assign({},f,p)},getHeaderCellClass:(a,i,u,c)=>{const d=c.isSubColumn?[]:Mp(n.b(),i,c.fixed,e.store,u),f=[c.id,c.order,c.headerAlign,c.className,c.labelClassName,...d];c.children||f.push("is-leaf"),c.sortable&&f.push("is-sortable");const p=t==null?void 0:t.props.headerCellClassName;return typeof p=="string"?f.push(p):typeof p=="function"&&f.push(p.call(null,{rowIndex:a,columnIndex:i,row:u,column:c})),f.push(n.e("cell")),f.filter(h=>Boolean(h)).join(" ")}}}const $C=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,$C(n.children))):t.push(n)}),t},vG=e=>{let t=1;const n=(l,r)=>{if(r&&(l.level=r.level+1,t{n(i,l),a+=i.colSpan}),l.colSpan=a}else l.colSpan=1};e.forEach(l=>{l.level=1,n(l,void 0)});const o=[];for(let l=0;l{l.children?(l.rowSpan=1,l.children.forEach(r=>r.isSubColumn=!0)):l.rowSpan=t-l.level+1,o[l.level-1].push(l)}),o};function gG(e){const t=Ne(_o),n=E(()=>vG(e.store.states.originColumns.value));return{isGroup:E(()=>{const l=n.value.length>1;return l&&t&&(t.state.isGroup.value=!0),l}),toggleAllSelection:l=>{l.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:n}}var bG=te({name:"ElTableHeader",components:{ElCheckbox:ao},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const n=nt(),o=Ne(_o),s=we("table"),l=A({}),{onColumnsChange:r,onScrollableChange:a}=CC(o);xe(async()=>{await ze(),await ze();const{prop:k,order:T}=e.defaultSort;o==null||o.store.commit("sort",{prop:k,order:T,init:!0})});const{handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:p,handleFilterClick:h}=hG(e,t),{getHeaderRowStyle:g,getHeaderRowClass:m,getHeaderCellStyle:v,getHeaderCellClass:y}=mG(e),{isGroup:w,toggleAllSelection:S,columnRows:$}=gG(e);return n.state={onColumnsChange:r,onScrollableChange:a},n.filterPanels=l,{ns:s,filterPanels:l,onColumnsChange:r,onScrollableChange:a,columnRows:$,getHeaderRowClass:m,getHeaderRowStyle:g,getHeaderCellClass:y,getHeaderCellStyle:v,handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:p,handleFilterClick:h,isGroup:w,toggleAllSelection:S}},render(){const{ns:e,isGroup:t,columnRows:n,getHeaderCellStyle:o,getHeaderCellClass:s,getHeaderRowClass:l,getHeaderRowStyle:r,handleHeaderClick:a,handleHeaderContextMenu:i,handleMouseDown:u,handleMouseMove:c,handleSortClick:d,handleMouseOut:f,store:p,$parent:h}=this;let g=1;return Pe("thead",{class:{[e.is("group")]:t}},n.map((m,v)=>Pe("tr",{class:l(v),key:v,style:r(v)},m.map((y,w)=>(y.rowSpan>g&&(g=y.rowSpan),Pe("th",{class:s(v,w,m,y),colspan:y.colSpan,key:`${y.id}-thead`,rowspan:y.rowSpan,style:o(v,w,m,y),onClick:S=>a(S,y),onContextmenu:S=>i(S,y),onMousedown:S=>u(S,y),onMousemove:S=>c(S,y),onMouseout:f},[Pe("div",{class:["cell",y.filteredValue&&y.filteredValue.length>0?"highlight":"",y.labelClassName]},[y.renderHeader?y.renderHeader({column:y,$index:w,store:p,_self:h}):y.label,y.sortable&&Pe("span",{onClick:S=>d(S,y),class:"caret-wrapper"},[Pe("i",{onClick:S=>d(S,y,"ascending"),class:"sort-caret ascending"}),Pe("i",{onClick:S=>d(S,y,"descending"),class:"sort-caret descending"})]),y.filterable&&Pe(pG,{store:p,placement:y.filterPlacement||"bottom-start",column:y,upDataColumn:(S,$)=>{y[S]=$}})])]))))))}});function yG(e){const t=Ne(_o),n=A(""),o=A(Pe("div")),s=(f,p,h)=>{var g;const m=t,v=Pc(f);let y;const w=(g=m==null?void 0:m.vnode.el)==null?void 0:g.dataset.prefix;v&&(y=Ag({columns:e.store.states.columns.value},v,w),y&&(m==null||m.emit(`cell-${h}`,p,y,v,f))),m==null||m.emit(`row-${h}`,p,y,f)},l=(f,p)=>{s(f,p,"dblclick")},r=(f,p)=>{e.store.commit("setCurrentRow",p),s(f,p,"click")},a=(f,p)=>{s(f,p,"contextmenu")},i=hn(f=>{e.store.commit("setHoverRow",f)},30),u=hn(()=>{e.store.commit("setHoverRow",null)},30);return{handleDoubleClick:l,handleClick:r,handleContextMenu:a,handleMouseEnter:i,handleMouseLeave:u,handleCellMouseEnter:(f,p)=>{var h;const g=t,m=Pc(f),v=(h=g==null?void 0:g.vnode.el)==null?void 0:h.dataset.prefix;if(m){const k=Ag({columns:e.store.states.columns.value},m,v),T=g.hoverState={cell:m,column:k,row:p};g==null||g.emit("cell-mouse-enter",T.row,T.column,T.cell,f)}const y=f.target.querySelector(".cell");if(!(oo(y,`${v}-tooltip`)&&y.childNodes.length))return;const w=document.createRange();w.setStart(y,0),w.setEnd(y,y.childNodes.length);const S=w.getBoundingClientRect().width,$=(Number.parseInt(bo(y,"paddingLeft"),10)||0)+(Number.parseInt(bo(y,"paddingRight"),10)||0);(S+$>y.offsetWidth||y.scrollWidth>y.offsetWidth)&&Zq(m,m.innerText||m.textContent,{placement:"top",strategy:"fixed"},p.tooltipEffect)},handleCellMouseLeave:f=>{if(!Pc(f))return;const h=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",h==null?void 0:h.row,h==null?void 0:h.column,h==null?void 0:h.cell,f)},tooltipContent:n,tooltipTrigger:o}}function wG(e){const t=Ne(_o),n=we("table");return{getRowStyle:(u,c)=>{const d=t==null?void 0:t.props.rowStyle;return typeof d=="function"?d.call(null,{row:u,rowIndex:c}):d||null},getRowClass:(u,c)=>{const d=[n.e("row")];(t==null?void 0:t.props.highlightCurrentRow)&&u===e.store.states.currentRow.value&&d.push("current-row"),e.stripe&&c%2===1&&d.push(n.em("row","striped"));const f=t==null?void 0:t.props.rowClassName;return typeof f=="string"?d.push(f):typeof f=="function"&&d.push(f.call(null,{row:u,rowIndex:c})),d},getCellStyle:(u,c,d,f)=>{const p=t==null?void 0:t.props.cellStyle;let h=p!=null?p:{};typeof p=="function"&&(h=p.call(null,{rowIndex:u,columnIndex:c,row:d,column:f}));const g=f.isSubColumn?null:Op(c,e==null?void 0:e.fixed,e.store);return er(g,"left"),er(g,"right"),Object.assign({},h,g)},getCellClass:(u,c,d,f)=>{const p=f.isSubColumn?[]:Mp(n.b(),c,e==null?void 0:e.fixed,e.store),h=[f.id,f.align,f.className,...p],g=t==null?void 0:t.props.cellClassName;return typeof g=="string"?h.push(g):typeof g=="function"&&h.push(g.call(null,{rowIndex:u,columnIndex:c,row:d,column:f})),h.push(n.e("cell")),h.filter(m=>Boolean(m)).join(" ")},getSpan:(u,c,d,f)=>{let p=1,h=1;const g=t==null?void 0:t.props.spanMethod;if(typeof g=="function"){const m=g({row:u,column:c,rowIndex:d,columnIndex:f});Array.isArray(m)?(p=m[0],h=m[1]):typeof m=="object"&&(p=m.rowspan,h=m.colspan)}return{rowspan:p,colspan:h}},getColspanRealWidth:(u,c,d)=>{if(c<1)return u[d].realWidth;const f=u.map(({realWidth:p,width:h})=>p||h).slice(d,d+c);return Number(f.reduce((p,h)=>Number(p)+Number(h),-1))}}}function CG(e){const t=Ne(_o),{handleDoubleClick:n,handleClick:o,handleContextMenu:s,handleMouseEnter:l,handleMouseLeave:r,handleCellMouseEnter:a,handleCellMouseLeave:i,tooltipContent:u,tooltipTrigger:c}=yG(e),{getRowStyle:d,getRowClass:f,getCellStyle:p,getCellClass:h,getSpan:g,getColspanRealWidth:m}=wG(e),v=E(()=>e.store.states.columns.value.findIndex(({type:k})=>k==="default")),y=(k,T)=>{const O=t.props.rowKey;return O?Qt(k,O):T},w=(k,T,O,L=!1)=>{const{tooltipEffect:B,store:V}=e,{indent:H,columns:R}=V.states,z=f(k,T);let W=!0;return O&&(z.push(`el-table__row--level-${O.level}`),W=O.display),Pe("tr",{style:[W?null:{display:"none"},d(k,T)],class:z,key:y(k,T),onDblclick:N=>n(N,k),onClick:N=>o(N,k),onContextmenu:N=>s(N,k),onMouseenter:()=>l(T),onMouseleave:r},R.value.map((N,I)=>{const{rowspan:U,colspan:q}=g(k,N,T,I);if(!U||!q)return null;const Q=ne({},N);Q.realWidth=m(R.value,q,I);const J={store:e.store,_self:e.context||t,column:Q,row:k,$index:T,cellIndex:I,expanded:L};I===v.value&&O&&(J.treeNode={indent:O.level*H.value,level:O.level},typeof O.expanded=="boolean"&&(J.treeNode.expanded=O.expanded,"loading"in O&&(J.treeNode.loading=O.loading),"noLazyChildren"in O&&(J.treeNode.noLazyChildren=O.noLazyChildren)));const ae=`${T},${I}`,Ee=Q.columnKey||Q.rawColumnKey||"",Me=S(I,N,J);return Pe("td",{style:p(T,I,k,N),class:h(T,I,k,N),key:`${Ee}${ae}`,rowspan:U,colspan:q,onMouseenter:Z=>a(Z,Te(ne({},k),{tooltipEffect:B})),onMouseleave:i},[Me])}))},S=(k,T,O)=>T.renderCell(O);return{wrappedRowRender:(k,T)=>{const O=e.store,{isRowExpanded:L,assertRowKey:B}=O,{treeData:V,lazyTreeNodeMap:H,childrenColumnName:R,rowKey:z}=O.states,W=O.states.columns.value;if(W.some(({type:N})=>N==="expand")){const N=L(k),I=w(k,T,void 0,N),U=t.renderExpanded;return N?U?[[I,Pe("tr",{key:`expanded-row__${I.key}`},[Pe("td",{colspan:W.length,class:"el-table__cell el-table__expanded-cell"},[U({row:k,$index:T,store:O,expanded:N})])])]]:(console.error("[Element Error]renderExpanded is required."),I):[[I]]}else if(Object.keys(V.value).length){B();const N=Qt(k,z.value);let I=V.value[N],U=null;I&&(U={expanded:I.expanded,level:I.level,display:!0},typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(U.noLazyChildren=!(I.children&&I.children.length)),U.loading=I.loading));const q=[w(k,T,U)];if(I){let Q=0;const J=(Ee,Me)=>{!(Ee&&Ee.length&&Me)||Ee.forEach(Z=>{const ve={display:Me.display&&Me.expanded,level:Me.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Ce=Qt(Z,z.value);if(Ce==null)throw new Error("For nested data item, row-key is required.");if(I=ne({},V.value[Ce]),I&&(ve.expanded=I.expanded,I.level=I.level||ve.level,I.display=!!(I.expanded&&ve.display),typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(ve.noLazyChildren=!(I.children&&I.children.length)),ve.loading=I.loading)),Q++,q.push(w(Z,T+Q,ve)),I){const ke=H.value[Ce]||Z[R.value];J(ke,I)}})};I.display=!0;const ae=H.value[N]||k[R.value];J(ae,I)}return q}else return w(k,T,void 0)},tooltipContent:u,tooltipTrigger:c}}const $G={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var kG=te({name:"ElTableBody",props:$G,setup(e){const t=nt(),n=Ne(_o),o=we("table"),{wrappedRowRender:s,tooltipContent:l,tooltipTrigger:r}=CG(e),{onColumnsChange:a,onScrollableChange:i}=CC(n);return pe(e.store.states.hoverRow,(u,c)=>{if(!e.store.states.isComplex.value||!ct)return;let d=window.requestAnimationFrame;d||(d=f=>window.setTimeout(f,16)),d(()=>{var f;const p=(f=t==null?void 0:t.vnode.el)==null?void 0:f.querySelectorAll(`.${o.e("row")}`),h=p[c],g=p[u];h&&fn(h,"hover-row"),g&&wo(g,"hover-row")})}),ka(()=>{var u;(u=su)==null||u()}),Xn(()=>{var u;(u=su)==null||u()}),{ns:o,onColumnsChange:a,onScrollableChange:i,wrappedRowRender:s,tooltipContent:l,tooltipTrigger:r}},render(){const{wrappedRowRender:e,store:t}=this,n=t.states.data.value||[];return Pe("tbody",{},[n.reduce((o,s)=>o.concat(e(s,o.length)),[])])}});function Ip(e){const t=e.tableLayout==="auto";let n=e.columns||[];t&&n.every(s=>s.width===void 0)&&(n=[]);const o=s=>{const l={key:`${e.tableLayout}_${s.id}`,style:{},name:void 0};return t?l.style={width:`${s.width}px`}:l.name=s.id,l};return Pe("colgroup",{},n.map(s=>Pe("col",o(s))))}Ip.props=["columns","tableLayout"];function SG(){const e=Ne(_o),t=e==null?void 0:e.store,n=E(()=>t.states.fixedLeafColumnsLength.value),o=E(()=>t.states.rightFixedColumns.value.length),s=E(()=>t.states.columns.value.length),l=E(()=>t.states.fixedColumns.value.length),r=E(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:n,rightFixedLeafCount:o,columnsCount:s,leftFixedCount:l,rightFixedCount:r,columns:t.states.columns}}function EG(e){const{columns:t}=SG(),n=we("table");return{getCellClasses:(l,r)=>{const a=l[r],i=[n.e("cell"),a.id,a.align,a.labelClassName,...Mp(n.b(),r,a.fixed,e.store)];return a.className&&i.push(a.className),a.children||i.push(n.is("leaf")),i},getCellStyles:(l,r)=>{const a=Op(r,l.fixed,e.store);return er(a,"left"),er(a,"right"),a},columns:t}}var _G=te({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:n,columns:o}=EG(e);return{ns:we("table"),getCellClasses:t,getCellStyles:n,columns:o}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:o,sumText:s,ns:l}=this,r=this.store.states.data.value;let a=[];return o?a=o({columns:e,data:r}):e.forEach((i,u)=>{if(u===0){a[u]=s;return}const c=r.map(h=>Number(h[i.property])),d=[];let f=!0;c.forEach(h=>{if(!Number.isNaN(+h)){f=!1;const g=`${h}`.split(".")[1];d.push(g?g.length:0)}});const p=Math.max.apply(null,d);f?a[u]="":a[u]=c.reduce((h,g)=>{const m=Number(g);return Number.isNaN(+m)?h:Number.parseFloat((h+g).toFixed(Math.min(p,20)))},0)}),Pe("table",{class:l.e("footer"),cellspacing:"0",cellpadding:"0",border:"0"},[Ip({columns:e}),Pe("tbody",[Pe("tr",{},[...e.map((i,u)=>Pe("td",{key:u,colspan:i.colSpan,rowspan:i.rowSpan,class:n(e,u),style:t(i,u)},[Pe("div",{class:["cell",i.labelClassName]},[a[u]])]))])])])}});function TG(e){return{setCurrentRow:c=>{e.commit("setCurrentRow",c)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(c,d)=>{e.toggleRowSelection(c,d,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:c=>{e.clearFilter(c)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(c,d)=>{e.toggleRowExpansionAdapter(c,d)},clearSort:()=>{e.clearSort()},sort:(c,d)=>{e.commit("sort",{prop:c,order:d})}}}function AG(e,t,n,o){const s=A(!1),l=A(null),r=A(!1),a=I=>{r.value=I},i=A({width:null,height:null}),u=A(!1),c={display:"inline-block",verticalAlign:"middle"},d=A();zn(()=>{t.setHeight(e.height)}),zn(()=>{t.setMaxHeight(e.maxHeight)}),pe(()=>[e.currentRowKey,n.states.rowKey],([I,U])=>{!b(U)||n.setCurrentRowKey(`${I}`)},{immediate:!0}),pe(()=>e.data,I=>{o.store.commit("setData",I)},{immediate:!0,deep:!0}),zn(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const f=()=>{o.store.commit("setHoverRow",null),o.hoverState&&(o.hoverState=null)},p=(I,U)=>{const{pixelX:q,pixelY:Q}=U;Math.abs(q)>=Math.abs(Q)&&(o.refs.bodyWrapper.scrollLeft+=U.pixelX/5)},h=E(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),g=E(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),m=()=>{h.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(S)};xe(async()=>{await ze(),n.updateColumns(),$(),requestAnimationFrame(m),i.value={width:d.value=o.vnode.el.offsetWidth,height:o.vnode.el.offsetHeight},n.states.columns.value.forEach(I=>{I.filteredValue&&I.filteredValue.length&&o.store.commit("filterChange",{column:I,values:I.filteredValue,silent:!0})}),o.$ready=!0});const v=(I,U)=>{if(!I)return;const q=Array.from(I.classList).filter(Q=>!Q.startsWith("is-scrolling-"));q.push(t.scrollX.value?U:"is-scrolling-none"),I.className=q.join(" ")},y=I=>{const{tableWrapper:U}=o.refs;v(U,I)},w=I=>{const{tableWrapper:U}=o.refs;return!!(U&&U.classList.contains(I))},S=function(){if(!o.refs.scrollBarRef)return;if(!t.scrollX.value){const Me="is-scrolling-none";w(Me)||y(Me);return}const I=o.refs.scrollBarRef.wrap$;if(!I)return;const{scrollLeft:U,offsetWidth:q,scrollWidth:Q}=I,{headerWrapper:J,footerWrapper:ae}=o.refs;J&&(J.scrollLeft=U),ae&&(ae.scrollLeft=U);const Ee=Q-q-1;U>=Ee?y("is-scrolling-right"):y(U===0?"is-scrolling-left":"is-scrolling-middle")},$=()=>{var I;!o.refs.scrollBarRef||((I=o.refs.scrollBarRef.wrap$)==null||I.addEventListener("scroll",S,{passive:!0}),e.fit?ir(o.vnode.el,T):Tt(window,"resize",m))};_t(()=>{k()});const k=()=>{var I;(I=o.refs.scrollBarRef.wrap$)==null||I.removeEventListener("scroll",S,!0),e.fit?ur(o.vnode.el,T):Vt(window,"resize",m)},T=()=>{if(!o.$ready)return;let I=!1;const U=o.vnode.el,{width:q,height:Q}=i.value,J=d.value=U.offsetWidth;q!==J&&(I=!0);const ae=U.offsetHeight;(e.height||h.value)&&Q!==ae&&(I=!0),I&&(i.value={width:J,height:ae},m())},O=Wt(),L=E(()=>{const{bodyWidth:I,scrollY:U,gutterWidth:q}=t;return I.value?`${I.value-(U.value?q:0)}px`:""}),B=E(()=>e.maxHeight?"fixed":e.tableLayout);function V(I,U,q){const Q=Wd(I),J=e.showHeader?q:0;if(Q!==null)return Qe(Q)?`calc(${Q} - ${U}px - ${J}px)`:Q-U-J}const H=E(()=>{const I=t.headerHeight.value||0,U=t.bodyHeight.value,q=t.footerHeight.value||0;if(e.height)return U||void 0;if(e.maxHeight)return V(e.maxHeight,q,I)}),R=E(()=>{const I=t.headerHeight.value||0,U=t.bodyHeight.value,q=t.footerHeight.value||0;if(e.height)return{height:U?`${U}px`:""};if(e.maxHeight){const Q=V(e.maxHeight,q,I);if(Q!==null)return{"max-height":`${Q}${ht(Q)?"px":""}`}}return{}}),z=E(()=>{if(e.data&&e.data.length)return null;let I="100%";return t.appendHeight.value&&(I=`calc(100% - ${t.appendHeight.value}px)`),{width:d.value?`${d.value}px`:"",height:I}}),W=(I,U)=>{const q=o.refs.bodyWrapper;if(Math.abs(U.spinY)>0){const Q=q.scrollTop;U.pixelY<0&&Q!==0&&I.preventDefault(),U.pixelY>0&&q.scrollHeight-q.clientHeight>Q&&I.preventDefault(),q.scrollTop+=Math.ceil(U.pixelY/5)}else q.scrollLeft+=Math.ceil(U.pixelX/5)},P=E(()=>e.maxHeight?e.showSummary?{bottom:0}:{bottom:t.scrollX.value&&e.data.length?`${t.gutterWidth}px`:""}:e.showSummary?{height:t.tableHeight.value?`${t.tableHeight.value}px`:""}:{height:t.viewportHeight.value?`${t.viewportHeight.value}px`:""}),N=E(()=>{if(e.height)return{height:t.fixedBodyHeight.value?`${t.fixedBodyHeight.value}px`:""};if(e.maxHeight){let I=Wd(e.maxHeight);if(typeof I=="number")return I=t.scrollX.value?I-t.gutterWidth:I,e.showHeader&&(I-=t.headerHeight.value),I-=t.footerHeight.value,{"max-height":`${I}px`}}return{}});return{isHidden:s,renderExpanded:l,setDragVisible:a,isGroup:u,handleMouseLeave:f,handleHeaderFooterMousewheel:p,tableSize:O,bodyHeight:R,height:H,emptyBlockStyle:z,handleFixedMousewheel:W,fixedHeight:P,fixedBodyHeight:N,resizeProxyVisible:r,bodyWidth:L,resizeState:i,doLayout:m,tableBodyStyles:g,tableLayout:B,scrollbarViewStyle:c}}var NG={data:{type:Array,default:()=>[]},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1}};const MG=()=>{const e=A(),t=(l,r)=>{const a=e.value;a&&a.scrollTo(l,r)},n=(l,r)=>{const a=e.value;a&&ht(r)&&["Top","Left"].includes(l)&&a[`setScroll${l}`](r)};return{scrollBarRef:e,scrollTo:t,setScrollTop:l=>n("Top",l),setScrollLeft:l=>n("Left",l)}};let OG=1;const IG=te({name:"ElTable",directives:{Mousewheel:eV},components:{TableHeader:bG,TableBody:kG,TableFooter:_G,ElScrollbar:Uo,hColgroup:Ip},props:NG,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t}=kt(),n=we("table"),o=nt();st(_o,o);const s=sG(o,e);o.store=s;const l=new rG({store:o.store,table:o,fit:e.fit,showHeader:e.showHeader});o.layout=l;const r=E(()=>(s.states.data.value||[]).length===0),{setCurrentRow:a,getSelectionRows:i,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:p,clearSort:h,sort:g}=TG(s),{isHidden:m,renderExpanded:v,setDragVisible:y,isGroup:w,handleMouseLeave:S,handleHeaderFooterMousewheel:$,tableSize:k,bodyHeight:T,height:O,emptyBlockStyle:L,handleFixedMousewheel:B,fixedHeight:V,fixedBodyHeight:H,resizeProxyVisible:R,bodyWidth:z,resizeState:W,doLayout:P,tableBodyStyles:N,tableLayout:I,scrollbarViewStyle:U}=AG(e,l,s,o),{scrollBarRef:q,scrollTo:Q,setScrollLeft:J,setScrollTop:ae}=MG(),Ee=hn(P,50),Me=`el-table_${OG++}`;o.tableId=Me,o.state={isGroup:w,resizeState:W,doLayout:P,debouncedUpdateLayout:Ee};const Z=E(()=>e.sumText||t("el.table.sumText")),ve=E(()=>e.emptyText||t("el.table.emptyText"));return{ns:n,layout:l,store:s,handleHeaderFooterMousewheel:$,handleMouseLeave:S,tableId:Me,tableSize:k,isHidden:m,isEmpty:r,renderExpanded:v,resizeProxyVisible:R,resizeState:W,isGroup:w,bodyWidth:z,bodyHeight:T,height:O,tableBodyStyles:N,emptyBlockStyle:L,debouncedUpdateLayout:Ee,handleFixedMousewheel:B,fixedHeight:V,fixedBodyHeight:H,setCurrentRow:a,getSelectionRows:i,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:p,clearSort:h,doLayout:P,sort:g,t,setDragVisible:y,context:o,computedSumText:Z,computedEmptyText:ve,tableLayout:I,scrollbarViewStyle:U,scrollBarRef:q,scrollTo:Q,setScrollLeft:J,setScrollTop:ae}}}),DG=["data-prefix"],PG={ref:"hiddenColumns",class:"hidden-columns"};function LG(e,t,n,o,s,l){const r=le("hColgroup"),a=le("table-header"),i=le("table-body"),u=le("el-scrollbar"),c=le("table-footer"),d=Mn("mousewheel");return C(),M("div",{ref:"tableWrapper",class:_([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:De(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=f=>e.handleMouseLeave())},[D("div",{class:_(e.ns.e("inner-wrapper"))},[D("div",PG,[ie(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?Ge((C(),M("div",{key:0,ref:"headerWrapper",class:_(e.ns.e("header-wrapper"))},[D("table",{ref:"tableHeader",class:_(e.ns.e("header")),style:De(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Y(r,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Y(a,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[d,e.handleHeaderFooterMousewheel]]):G("v-if",!0),D("div",{ref:"bodyWrapper",style:De(e.bodyHeight),class:_(e.ns.e("body-wrapper"))},[Y(u,{ref:"scrollBarRef",height:e.maxHeight?void 0:e.height,"max-height":e.maxHeight?e.height:void 0,"view-style":e.scrollbarViewStyle,always:e.scrollbarAlwaysOn},{default:j(()=>[D("table",{ref:"tableBody",class:_(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:De({width:e.bodyWidth,tableLayout:e.tableLayout})},[Y(r,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(C(),x(a,{key:0,border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])):G("v-if",!0),Y(i,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","row-style","store","stripe"])],6),e.isEmpty?(C(),M("div",{key:0,ref:"emptyBlock",style:De(e.emptyBlockStyle),class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},[ie(e.$slots,"empty",{},()=>[it(he(e.computedEmptyText),1)])],2)],6)):G("v-if",!0),e.$slots.append?(C(),M("div",{key:1,ref:"appendWrapper",class:_(e.ns.e("append-wrapper"))},[ie(e.$slots,"append")],2)):G("v-if",!0)]),_:3},8,["height","max-height","view-style","always"])],6),e.border||e.isGroup?(C(),M("div",{key:1,class:_(e.ns.e("border-left-patch"))},null,2)):G("v-if",!0)],2),e.showSummary?Ge((C(),M("div",{key:0,ref:"footerWrapper",class:_(e.ns.e("footer-wrapper"))},[Y(c,{border:e.border,"default-sort":e.defaultSort,store:e.store,style:De(e.tableBodyStyles),"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","style","sum-text","summary-method"])],2)),[[pt,!e.isEmpty],[d,e.handleHeaderFooterMousewheel]]):G("v-if",!0),Ge(D("div",{ref:"resizeProxy",class:_(e.ns.e("column-resize-proxy"))},null,2),[[pt,e.resizeProxyVisible]])],46,DG)}var RG=ge(IG,[["render",LG],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/table.vue"]]);const BG={selection:"table-column--selection",expand:"table__expand-column"},VG={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},FG=e=>BG[e]||"",HG={selection:{renderHeader({store:e}){function t(){return e.states.data.value&&e.states.data.value.length===0}return Pe(ao,{disabled:t(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value})},renderCell({row:e,column:t,store:n,$index:o}){return Pe(ao,{disabled:t.selectable?!t.selectable.call(null,e,o):!1,size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:s=>s.stopPropagation(),modelValue:n.isSelected(e)})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const o=e.index;return typeof o=="number"?n=t+o:typeof o=="function"&&(n=o(t)),Pe("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({row:e,store:t,expanded:n}){const{ns:o}=t,s=[o.e("expand-icon")];return n&&s.push(o.em("expand-icon","expanded")),Pe("div",{class:s,onClick:function(r){r.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[Pe(je,null,{default:()=>[Pe(Jn)]})]})},sortable:!1,resizable:!1}};function zG({row:e,column:t,$index:n}){var o;const s=t.property,l=s&&fi(e,s).value;return t&&t.formatter?t.formatter(e,t,l,n):((o=l==null?void 0:l.toString)==null?void 0:o.call(l))||""}function KG({row:e,treeNode:t,store:n},o=!1){const{ns:s}=n;if(!t)return o?[Pe("span",{class:s.e("placeholder")})]:null;const l=[],r=function(a){a.stopPropagation(),n.loadOrToggle(e)};if(t.indent&&l.push(Pe("span",{class:s.e("indent"),style:{"padding-left":`${t.indent}px`}})),typeof t.expanded=="boolean"&&!t.noLazyChildren){const a=[s.e("expand-icon"),t.expanded?s.em("expand-icon","expanded"):""];let i=Jn;t.loading&&(i=gs),l.push(Pe("div",{class:a,onClick:r},{default:()=>[Pe(je,{class:{[s.is("loading")]:t.loading}},{default:()=>[Pe(i)]})]}))}else l.push(Pe("span",{class:s.e("placeholder")}));return l}function Mg(e,t){return e.reduce((n,o)=>(n[o]=o,n),t)}function WG(e,t){const n=nt();return{registerComplexWatchers:()=>{const l=["fixed"],r={realWidth:"width",realMinWidth:"minWidth"},a=Mg(l,r);Object.keys(a).forEach(i=>{const u=r[i];at(t,u)&&pe(()=>t[u],c=>{let d=c;u==="width"&&i==="realWidth"&&(d=Np(c)),u==="minWidth"&&i==="realMinWidth"&&(d=vC(c)),n.columnConfig.value[u]=d,n.columnConfig.value[i]=d;const f=u==="fixed";e.value.store.scheduleLayout(f)})})},registerNormalWatchers:()=>{const l=["label","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"],r={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},a=Mg(l,r);Object.keys(a).forEach(i=>{const u=r[i];at(t,u)&&pe(()=>t[u],c=>{n.columnConfig.value[i]=c})})}}}function jG(e,t,n){const o=nt(),s=A(""),l=A(!1),r=A(),a=A(),i=we("table");zn(()=>{r.value=e.align?`is-${e.align}`:null,r.value}),zn(()=>{a.value=e.headerAlign?`is-${e.headerAlign}`:r.value,a.value});const u=E(()=>{let w=o.vnode.vParent||o.parent;for(;w&&!w.tableId&&!w.columnId;)w=w.vnode.vParent||w.parent;return w}),c=E(()=>{const{store:w}=o.parent;if(!w)return!1;const{treeData:S}=w.states,$=S.value;return $&&Object.keys($).length>0}),d=A(Np(e.width)),f=A(vC(e.minWidth)),p=w=>(d.value&&(w.width=d.value),f.value&&(w.minWidth=f.value),w.minWidth||(w.minWidth=80),w.realWidth=Number(w.width===void 0?w.minWidth:w.width),w),h=w=>{const S=w.type,$=HG[S]||{};Object.keys($).forEach(T=>{const O=$[T];T!=="className"&&O!==void 0&&(w[T]=O)});const k=FG(S);if(k){const T=`${b(i.namespace)}-${k}`;w.className=w.className?`${w.className} ${T}`:T}return w},g=w=>{Array.isArray(w)?w.forEach($=>S($)):S(w);function S($){var k;((k=$==null?void 0:$.type)==null?void 0:k.name)==="ElTableColumn"&&($.vParent=o)}};return{columnId:s,realAlign:r,isSubColumn:l,realHeaderAlign:a,columnOrTableParent:u,setColumnWidth:p,setColumnForcedProps:h,setColumnRenders:w=>{e.renderHeader||w.type!=="selection"&&(w.renderHeader=k=>{o.columnConfig.value.label;const T=t.header;return T?T(k):w.label});let S=w.renderCell;const $=c.value;return w.type==="expand"?(w.renderCell=k=>Pe("div",{class:"cell"},[S(k)]),n.value.renderExpanded=k=>t.default?t.default(k):t.default):(S=S||zG,w.renderCell=k=>{let T=null;if(t.default){const V=t.default(k);T=V.some(H=>H.type!==pn)?V:S(k)}else T=S(k);const O=$&&k.cellIndex===0,L=KG(k,O),B={class:"cell",style:{}};return w.showOverflowTooltip&&(B.class=`${B.class} ${b(i.namespace)}-tooltip`,B.style={width:`${(k.column.realWidth||Number(k.column.width))-1}px`}),g(T),Pe("div",B,[L,T])}),w},getPropsData:(...w)=>w.reduce((S,$)=>(Array.isArray($)&&$.forEach(k=>{S[k]=e[k]}),S),{}),getColumnElIndex:(w,S)=>Array.prototype.indexOf.call(w,S)}}var YG={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let UG=1;var kC=te({name:"ElTableColumn",components:{ElCheckbox:ao},props:YG,setup(e,{slots:t}){const n=nt(),o=A({}),s=E(()=>{let y=n.parent;for(;y&&!y.tableId;)y=y.parent;return y}),{registerNormalWatchers:l,registerComplexWatchers:r}=WG(s,e),{columnId:a,isSubColumn:i,realHeaderAlign:u,columnOrTableParent:c,setColumnWidth:d,setColumnForcedProps:f,setColumnRenders:p,getPropsData:h,getColumnElIndex:g,realAlign:m}=jG(e,t,s),v=c.value;a.value=`${v.tableId||v.columnId}_column_${UG++}`,$a(()=>{i.value=s.value!==v;const y=e.type||"default",w=e.sortable===""?!0:e.sortable,S=Te(ne({},VG[y]),{id:a.value,type:y,property:e.prop||e.property,align:m,headerAlign:u,showOverflowTooltip:e.showOverflowTooltip||e.showTooltipWhenOverflow,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:w,index:e.index,rawColumnKey:n.vnode.key});let L=h(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);L=Gq(S,L),L=Xq(p,d,f)(L),o.value=L,l(),r()}),xe(()=>{var y;const w=c.value,S=i.value?w.vnode.el.children:(y=w.refs.hiddenColumns)==null?void 0:y.children,$=()=>g(S||[],n.vnode.el);o.value.getColumnIndex=$,$()>-1&&s.value.store.commit("insertColumn",o.value,i.value?w.columnConfig.value:null)}),_t(()=>{s.value.store.commit("removeColumn",o.value,i.value?v.columnConfig.value:null)}),n.columnId=a.value,n.columnConfig=o},render(){var e,t,n;try{const o=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),s=[];if(Array.isArray(o))for(const r of o)((n=r.type)==null?void 0:n.name)==="ElTableColumn"||r.shapeFlag&2?s.push(r):r.type===Le&&Array.isArray(r.children)&&r.children.forEach(a=>{(a==null?void 0:a.patchFlag)!==1024&&!Qe(a==null?void 0:a.children)&&s.push(a)});return Pe("div",s)}catch{return Pe("div",[])}}});const qG=ot(RG,{TableColumn:kC}),GG=Rt(kC),XG=Ve({tabs:{type:$e(Array),default:()=>Pt([])}}),JG={name:"ElTabBar"},ZG=te(Te(ne({},JG),{props:XG,setup(e,{expose:t}){const n=e,o="ElTabBar",s=nt(),l=Ne(Vu);l||Kt(o,"");const r=we("tabs"),a=A(),i=A(),u=()=>{let d=0,f=0;const p=["top","bottom"].includes(l.props.tabPosition)?"width":"height",h=p==="width"?"x":"y";return n.tabs.every(g=>{var m,v,y,w;const S=(v=(m=s.parent)==null?void 0:m.refs)==null?void 0:v[`tab-${g.paneName}`];if(!S)return!1;if(!g.active)return!0;f=S[`client${yn(p)}`];const $=h==="x"?"left":"top";d=S.getBoundingClientRect()[$]-((w=(y=S.parentElement)==null?void 0:y.getBoundingClientRect()[$])!=null?w:0);const k=window.getComputedStyle(S);return p==="width"&&(n.tabs.length>1&&(f-=Number.parseFloat(k.paddingLeft)+Number.parseFloat(k.paddingRight)),d+=Number.parseFloat(k.paddingLeft)),!1}),{[p]:`${f}px`,transform:`translate${yn(h)}(${d}px)`}},c=()=>i.value=u();return pe(()=>n.tabs,async()=>{await ze(),c()},{immediate:!0}),ar(a,()=>c()),t({ref:a,update:c}),(d,f)=>(C(),M("div",{ref_key:"barRef",ref:a,class:_([b(r).e("active-bar"),b(r).is(b(l).props.tabPosition)]),style:De(i.value)},null,6))}}));var QG=ge(ZG,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-bar.vue"]]);const xG=Ve({panes:{type:$e(Array),default:()=>Pt([])},currentName:{type:[String,Number],default:""},editable:Boolean,onTabClick:{type:$e(Function),default:wt},onTabRemove:{type:$e(Function),default:wt},type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),Og="ElTabNav",eX=te({name:Og,props:xG,setup(e,{expose:t}){const n=Ne(Vu);n||Kt(Og,"");const o=we("tabs"),s=KI(),l=UI(),r=A(),a=A(),i=A(),u=A(!1),c=A(0),d=A(!1),f=A(!0),p=E(()=>["top","bottom"].includes(n.props.tabPosition)?"width":"height"),h=E(()=>({transform:`translate${p.value==="width"?"X":"Y"}(-${c.value}px)`})),g=()=>{if(!r.value)return;const k=r.value[`offset${yn(p.value)}`],T=c.value;if(!T)return;const O=T>k?T-k:0;c.value=O},m=()=>{if(!r.value||!a.value)return;const k=a.value[`offset${yn(p.value)}`],T=r.value[`offset${yn(p.value)}`],O=c.value;if(k-O<=T)return;const L=k-O>T*2?O+T:k-T;c.value=L},v=()=>{const k=a.value;if(!u.value||!i.value||!r.value||!k)return;const T=i.value.querySelector(".is-active");if(!T)return;const O=r.value,L=["top","bottom"].includes(n.props.tabPosition),B=T.getBoundingClientRect(),V=O.getBoundingClientRect(),H=L?k.offsetWidth-V.width:k.offsetHeight-V.height,R=c.value;let z=R;L?(B.leftV.right&&(z=R+B.right-V.right)):(B.topV.bottom&&(z=R+(B.bottom-V.bottom))),z=Math.max(z,0),c.value=Math.min(z,H)},y=()=>{if(!a.value||!r.value)return;const k=a.value[`offset${yn(p.value)}`],T=r.value[`offset${yn(p.value)}`],O=c.value;if(T0&&(c.value=0)},w=k=>{const T=k.code,{up:O,down:L,left:B,right:V}=Ie;if(![O,L,B,V].includes(T))return;const H=Array.from(k.currentTarget.querySelectorAll("[role=tab]")),R=H.indexOf(k.target);let z;T===B||T===O?R===0?z=H.length-1:z=R-1:R{f.value&&(d.value=!0)},$=()=>d.value=!1;return pe(s,k=>{k==="hidden"?f.value=!1:k==="visible"&&setTimeout(()=>f.value=!0,50)}),pe(l,k=>{k?setTimeout(()=>f.value=!0,50):f.value=!1}),ar(i,y),xe(()=>setTimeout(()=>v(),0)),Xn(()=>y()),t({scrollToActiveTab:v,removeFocus:$}),()=>{const k=u.value?[Y("span",{class:[o.e("nav-prev"),o.is("disabled",!u.value.prev)],onClick:g},[Y(je,null,{default:()=>[Y(pl,null,null)]})]),Y("span",{class:[o.e("nav-next"),o.is("disabled",!u.value.next)],onClick:m},[Y(je,null,{default:()=>[Y(Jn,null,null)]})])]:null,T=e.panes.map((O,L)=>{var B,V;const H=O.props.name||O.index||`${L}`,R=O.isClosable||e.editable;O.index=`${L}`;const z=R?Y(je,{class:"is-icon-close",onClick:N=>e.onTabRemove(O,N)},{default:()=>[Y(Yn,null,null)]}):null,W=((V=(B=O.instance.slots).label)==null?void 0:V.call(B))||O.props.label,P=O.active?0:-1;return Y("div",{ref:`tab-${H}`,class:[o.e("item"),o.is(n.props.tabPosition),o.is("active",O.active),o.is("disabled",O.props.disabled),o.is("closable",R),o.is("focus",d.value)],id:`tab-${H}`,key:`tab-${H}`,"aria-controls":`pane-${H}`,role:"tab","aria-selected":O.active,tabindex:P,onFocus:()=>S(),onBlur:()=>$(),onClick:N=>{$(),e.onTabClick(O,H,N)},onKeydown:N=>{R&&(N.code===Ie.delete||N.code===Ie.backspace)&&e.onTabRemove(O,N)}},[W,z])});return Y("div",{ref:i,class:[o.e("nav-wrap"),o.is("scrollable",!!u.value),o.is(n.props.tabPosition)]},[k,Y("div",{class:o.e("nav-scroll"),ref:r},[Y("div",{class:[o.e("nav"),o.is(n.props.tabPosition),o.is("stretch",e.stretch&&["top","bottom"].includes(n.props.tabPosition))],ref:a,style:h.value,role:"tablist",onKeydown:w},[e.type?null:Y(QG,{tabs:[...e.panes]},null),T])])])}}}),tX=Ve({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number],default:""},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:$e(Function),default:()=>!0},stretch:Boolean}),xa=e=>Qe(e)||ht(e),nX={[tt]:e=>xa(e),[ps]:e=>xa(e),"tab-click":(e,t)=>t instanceof Event,"tab-change":e=>xa(e),edit:(e,t)=>["remove","add"].includes(t),"tab-remove":e=>xa(e),"tab-add":()=>!0},SC=(e,t=[])=>{const n=e.children||[];return Array.from(n).forEach(o=>{let s=o.type;s=s.name||s,s==="ElTabPane"&&o.component?t.push(o.component):(s===Le||s==="template")&&SC(o,t)}),t};var oX=te({name:"ElTabs",props:tX,emits:nX,setup(e,{emit:t,slots:n,expose:o}){const s=nt();Ma({scope:"el-tabs",type:"Event",from:"input",replacement:"tab-change",version:"2.5.0",ref:"https://element-plus.org/en-US/component/tabs.html#tabs-events"},E(()=>{var m;return et((m=s.vnode.props)==null?void 0:m.onInput)}));const l=we("tabs"),r=A(),a=A([]),i=A(e.modelValue||e.activeName||"0"),u={},c=(m=!1)=>{if(n.default){const v=s.subTree.children,y=Array.from(v).find(({props:$})=>($==null?void 0:$.class)===l.e("content"));if(!y)return;const w=SC(y).map($=>u[$.uid]),S=!(w.length===a.value.length&&w.every(($,k)=>$.uid===a.value[k].uid));(m||S)&&(a.value=w)}else a.value.length!==0&&(a.value=[])},d=m=>{i.value=m,t(ps,m),t(tt,m),t("tab-change",m)},f=m=>{var v;if(i.value===m)return;const y=(v=e.beforeLeave)==null?void 0:v.call(e,m,i.value);el(y)?y.then(()=>{var w,S;d(m),(S=(w=r.value)==null?void 0:w.removeFocus)==null||S.call(w)},wt):y!==!1&&d(m)},p=(m,v,y)=>{m.props.disabled||(f(v),t("tab-click",m,y))},h=(m,v)=>{m.props.disabled||(v.stopPropagation(),t("edit",m.props.name,"remove"),t("tab-remove",m.props.name))},g=()=>{t("edit",void 0,"add"),t("tab-add")};return Xn(()=>c()),xe(()=>c()),pe(()=>e.activeName,m=>f(m)),pe(()=>e.modelValue,m=>f(m)),pe(i,async()=>{var m,v;c(!0),await ze(),await((m=r.value)==null?void 0:m.$nextTick()),(v=r.value)==null||v.scrollToActiveTab()}),st(Vu,{props:e,currentName:i,updatePaneState:m=>u[m.uid]=m}),o({currentName:i}),()=>{const m=e.editable||e.addable?Y("span",{class:l.e("new-tab"),tabindex:"0",onClick:g,onKeydown:w=>{w.code===Ie.enter&&g()}},[Y(je,{class:l.is("icon-plus")},{default:()=>[Y(L0,null,null)]})]):null,v=Y("div",{class:[l.e("header"),l.is(e.tabPosition)]},[m,Y(eX,{ref:r,currentName:i.value,editable:e.editable,type:e.type,panes:a.value,stretch:e.stretch,onTabClick:p,onTabRemove:h},null)]),y=Y("div",{class:l.e("content")},[ie(n,"default")]);return Y("div",{class:[l.b(),l.m(e.tabPosition),{[l.m("card")]:e.type==="card",[l.m("border-card")]:e.type==="border-card"}]},[...e.tabPosition!=="bottom"?[v,y]:[y,v]])}}});const sX=Ve({label:{type:String,default:""},name:{type:[String,Number],default:""},closable:Boolean,disabled:Boolean,lazy:Boolean}),lX=["id","aria-hidden","aria-labelledby"],rX={name:"ElTabPane"},aX=te(Te(ne({},rX),{props:sX,setup(e){const t=e,n="ElTabPane",o=nt(),s=Ne(Vu);s||Kt(n,"usage: ");const l=we("tab-pane"),r=A(),a=E(()=>t.closable||s.props.closable),i=sv(()=>s.currentName.value===(t.name||r.value)),u=A(i.value),c=E(()=>t.name||r.value),d=sv(()=>!t.lazy||u.value||i.value);return pe(i,f=>{f&&(u.value=!0)}),s.updatePaneState(yt({uid:o.uid,instance:Jr(o),props:t,paneName:c,active:i,index:r,isClosable:a})),(f,p)=>b(d)?Ge((C(),M("div",{key:0,id:`pane-${b(c)}`,class:_(b(l).b()),role:"tabpanel","aria-hidden":!b(i),"aria-labelledby":`tab-${b(c)}`},[ie(f.$slots,"default")],10,lX)),[[pt,b(i)]]):G("v-if",!0)}}));var EC=ge(aX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-pane.vue"]]);const iX=ot(oX,{TabPane:EC}),uX=Rt(EC);Je.extend(pp);const{Option:cX}=ll,Oo=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const o=Number.parseInt(t[1],10),s=e.toUpperCase();return s.includes("AM")&&n===12?n=0:s.includes("PM")&&n!==12&&(n+=12),{hours:n,minutes:o}}return null},Lc=(e,t)=>{const n=Oo(e),o=Oo(t),s=n.minutes+n.hours*60,l=o.minutes+o.hours*60;return s===l?0:s>l?1:-1},Ig=e=>`${e}`.padStart(2,"0"),_l=e=>`${Ig(e.hours)}:${Ig(e.minutes)}`,dX=(e,t)=>{const n=Oo(e),o=Oo(t),s={hours:n.hours,minutes:n.minutes};return s.minutes+=o.minutes,s.hours+=o.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,_l(s)},fX=te({name:"ElTimeSelect",components:{ElSelect:ll,ElOption:cX,ElIcon:je},model:{prop:"value",event:"change"},props:{format:{type:String,default:"HH:mm"},modelValue:String,disabled:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},effect:{type:String,default:"light"},clearable:{type:Boolean,default:!0},size:{type:String,values:Eo,default:""},placeholder:{type:String,default:""},start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:{type:String,default:""},maxTime:{type:String,default:""},name:{type:String,default:""},prefixIcon:{type:[String,Object],default:P0},clearIcon:{type:[String,Object],default:Fo}},emits:["change","blur","focus","update:modelValue"],setup(e){const t=A(null),n=E(()=>e.modelValue),o=E(()=>{const d=Oo(e.start);return _l(d)}),s=E(()=>{const d=Oo(e.end);return _l(d)}),l=E(()=>{const d=Oo(e.step);return _l(d)}),r=E(()=>{const d=Oo(e.minTime);return d?_l(d):null}),a=E(()=>{const d=Oo(e.maxTime);return d?_l(d):null}),i=E(()=>{const d=[];if(e.start&&e.end&&e.step){let f=o.value,p;for(;Lc(f,s.value)<=0;)p=Je(f,"HH:mm").format(e.format),d.push({value:p,disabled:Lc(f,r.value||"-1:-1")<=0||Lc(f,a.value||"100:100")>=0}),f=dX(f,l.value)}return d});return{select:t,value:n,items:i,blur:()=>{var d,f;(f=(d=t.value)==null?void 0:d.blur)==null||f.call(d)},focus:()=>{var d,f;(f=(d=t.value)==null?void 0:d.focus)==null||f.call(d)}}}});function pX(e,t,n,o,s,l){const r=le("el-option"),a=le("el-icon"),i=le("el-select");return C(),x(i,{ref:"select","model-value":e.value,disabled:e.disabled,clearable:e.clearable,"clear-icon":e.clearIcon,size:e.size,effect:e.effect,placeholder:e.placeholder,"default-first-option":"",filterable:e.editable,"onUpdate:modelValue":t[0]||(t[0]=u=>e.$emit("update:modelValue",u)),onChange:t[1]||(t[1]=u=>e.$emit("change",u)),onBlur:t[2]||(t[2]=u=>e.$emit("blur",u)),onFocus:t[3]||(t[3]=u=>e.$emit("focus",u))},{prefix:j(()=>[e.prefixIcon?(C(),x(a,{key:0,class:"el-input__prefix-icon"},{default:j(()=>[(C(),x(ft(e.prefixIcon)))]),_:1})):G("v-if",!0)]),default:j(()=>[(C(!0),M(Le,null,rt(e.items,u=>(C(),x(r,{key:u.value,label:u.value,value:u.value,disabled:u.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable"])}var Mi=ge(fX,[["render",pX],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-select/src/time-select.vue"]]);Mi.install=e=>{e.component(Mi.name,Mi)};const hX=Mi,mX=hX,vX=te({name:"ElTimeline",setup(e,{slots:t}){const n=we("timeline");return st("timeline",t),()=>Pe("ul",{class:[n.b()]},[ie(t,"default")])}}),gX=Ve({timestamp:{type:String,default:""},hideTimestamp:{type:Boolean,default:!1},center:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:{type:String,default:""},color:{type:String,default:""},size:{type:String,default:"normal"},icon:{type:nn,default:""},hollow:{type:Boolean,default:!1}}),bX=te({name:"ElTimelineItem",components:{ElIcon:je},props:gX,setup(){return{ns:we("timeline-item")}}});function yX(e,t,n,o,s,l){const r=le("el-icon");return C(),M("li",{class:_([e.ns.b(),{[e.ns.e("center")]:e.center}])},[D("div",{class:_(e.ns.e("tail"))},null,2),e.$slots.dot?G("v-if",!0):(C(),M("div",{key:0,class:_([e.ns.e("node"),e.ns.em("node",e.size||""),e.ns.em("node",e.type||""),e.ns.is("hollow",e.hollow)]),style:De({backgroundColor:e.color})},[e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon"))},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class"])):G("v-if",!0)],6)),e.$slots.dot?(C(),M("div",{key:1,class:_(e.ns.e("dot"))},[ie(e.$slots,"dot")],2)):G("v-if",!0),D("div",{class:_(e.ns.e("wrapper"))},[!e.hideTimestamp&&e.placement==="top"?(C(),M("div",{key:0,class:_([e.ns.e("timestamp"),e.ns.is("top")])},he(e.timestamp),3)):G("v-if",!0),D("div",{class:_(e.ns.e("content"))},[ie(e.$slots,"default")],2),!e.hideTimestamp&&e.placement==="bottom"?(C(),M("div",{key:1,class:_([e.ns.e("timestamp"),e.ns.is("bottom")])},he(e.timestamp),3)):G("v-if",!0)],2)],2)}var _C=ge(bX,[["render",yX],["__file","/home/runner/work/element-plus/element-plus/packages/components/timeline/src/timeline-item.vue"]]);const wX=ot(vX,{TimelineItem:_C}),CX=Rt(_C),TC=Ve({nowrap:Boolean});var AC=(e=>(e.top="top",e.bottom="bottom",e.left="left",e.right="right",e))(AC||{});const $X=Object.values(AC),Dp=Ve({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:$e(Object),default:null}}),kX=Ve({side:{type:$e(String),values:$X,required:!0}}),SX=["absolute","fixed"],EX=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],Pp=Ve({ariaLabel:String,arrowPadding:{type:$e(Number),default:5},effect:{type:String,default:""},contentClass:String,placement:{type:$e(String),values:EX,default:"bottom"},reference:{type:$e(Object),default:null},offset:{type:Number,default:8},strategy:{type:$e(String),values:SX,default:"absolute"},showArrow:{type:Boolean,default:!1}}),Lp=Ve({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:$e(Function)},"onUpdate:open":{type:$e(Function)}}),$l={type:$e(Function)},Rp=Ve({onBlur:$l,onClick:$l,onFocus:$l,onMouseDown:$l,onMouseEnter:$l,onMouseLeave:$l}),_X=Ve(Te(ne(ne(ne(ne({},Lp),Dp),Rp),Pp),{alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:$e(Object),default:null},teleported:Boolean,to:{type:$e(String),default:"body"}})),TX={name:"ElTooltipV2Root"},AX=te(Te(ne({},TX),{props:Lp,setup(e,{expose:t}){const n=e,o=A(n.defaultOpen),s=A(null),l=E({get:()=>ZI(n.open)?o.value:n.open,set:m=>{var v;o.value=m,(v=n["onUpdate:open"])==null||v.call(n,m)}}),r=E(()=>ht(n.delayDuration)&&n.delayDuration>0),{start:a,stop:i}=ol(()=>{l.value=!0},E(()=>n.delayDuration),{immediate:!1}),u=we("tooltip-v2"),c=up(),d=()=>{i(),l.value=!0},f=()=>{b(r)?a():d()},p=d,h=()=>{i(),l.value=!1};return pe(l,m=>{var v;m&&(document.dispatchEvent(new CustomEvent(mc)),p()),(v=n.onOpenChange)==null||v.call(n,m)}),xe(()=>{document.addEventListener(mc,h)}),_t(()=>{i(),document.removeEventListener(mc,h)}),st(Fu,{contentId:c,triggerRef:s,ns:u,onClose:h,onDelayOpen:f,onOpen:p}),t({onOpen:p,onClose:h}),(m,v)=>ie(m.$slots,"default",{open:b(l)})}}));var NX=ge(AX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/root.vue"]]);const MX={name:"ElTooltipV2Arrow"},OX=te(Te(ne({},MX),{props:ne(ne({},Dp),kX),setup(e){const t=e,{ns:n}=Ne(Fu),{arrowRef:o}=Ne(o1),s=E(()=>{const{style:l,width:r,height:a}=t,i=n.namespace.value;return ne({[`--${i}-tooltip-v2-arrow-width`]:`${r}px`,[`--${i}-tooltip-v2-arrow-height`]:`${a}px`,[`--${i}-tooltip-v2-arrow-border-width`]:`${r/2}px`,[`--${i}-tooltip-v2-arrow-cover-width`]:r/2-1},l||{})});return(l,r)=>(C(),M("span",{ref_key:"arrowRef",ref:o,style:De(b(s)),class:_(b(n).e("arrow"))},null,6))}}));var Dg=ge(OX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/arrow.vue"]]);const IX=["data-side"],DX={name:"ElTooltipV2Content"},PX=te(Te(ne({},DX),{props:ne(ne({},Pp),TC),setup(e){const t=e,{triggerRef:n,contentId:o}=Ne(Fu),s=A(t.placement),l=A(t.strategy),r=A(null),{referenceRef:a,contentRef:i,middlewareData:u,x:c,y:d,update:f}=a6({placement:s,strategy:l,middleware:E(()=>{const w=[e6(t.offset)];return t.showArrow&&w.push(i6({arrowRef:r})),w})}),p=jo().nextZIndex(),h=we("tooltip-v2"),g=E(()=>s.value.split("-")[0]),m=E(()=>({position:b(l),top:`${b(d)||0}px`,left:`${b(c)||0}px`,zIndex:p})),v=E(()=>{if(!t.showArrow)return{};const{arrow:w}=b(u);return{[`--${h.namespace.value}-tooltip-v2-arrow-x`]:`${w==null?void 0:w.x}px`||"",[`--${h.namespace.value}-tooltip-v2-arrow-y`]:`${w==null?void 0:w.y}px`||""}}),y=E(()=>[h.e("content"),h.is("dark",t.effect==="dark"),h.is(b(l)),t.contentClass]);return pe(r,()=>f()),pe(()=>t.placement,w=>s.value=w),xe(()=>{pe(()=>t.reference||n.value,w=>{a.value=w||void 0},{immediate:!0})}),st(o1,{arrowRef:r}),(w,S)=>(C(),M("div",{ref_key:"contentRef",ref:i,style:De(b(m)),"data-tooltip-v2-root":""},[w.nowrap?G("v-if",!0):(C(),M("div",{key:0,"data-side":b(g),class:_(b(y))},[ie(w.$slots,"default",{contentStyle:b(m),contentClass:b(y)}),Y(b(T1),{id:b(o),role:"tooltip"},{default:j(()=>[w.ariaLabel?(C(),M(Le,{key:0},[it(he(w.ariaLabel),1)],2112)):ie(w.$slots,"default",{key:1})]),_:3},8,["id"]),ie(w.$slots,"arrow",{style:De(b(v)),side:b(g)})],10,IX))],4))}}));var Pg=ge(PX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/content.vue"]]);const LX=Ve({setRef:{type:$e(Function),required:!0},onlyChild:Boolean});var RX=te({props:LX,setup(e,{slots:t}){const n=A(),o=sp(n,s=>{s?e.setRef(s.nextElementSibling):e.setRef(null)});return()=>{var s;const[l]=((s=t.default)==null?void 0:s.call(t))||[],r=e.onlyChild?y8(l.children):l.children;return Y(Le,{ref:o},[r])}}});const BX={name:"ElTooltipV2Trigger"},VX=te(Te(ne({},BX),{props:ne(ne({},TC),Rp),setup(e){const t=e,{onClose:n,onOpen:o,onDelayOpen:s,triggerRef:l,contentId:r}=Ne(Fu);let a=!1;const i=y=>{l.value=y},u=()=>{a=!1},c=Dt(t.onMouseEnter,s),d=Dt(t.onMouseLeave,n),f=Dt(t.onMouseDown,()=>{n(),a=!0,document.addEventListener("mouseup",u,{once:!0})}),p=Dt(t.onFocus,()=>{a||o()}),h=Dt(t.onBlur,n),g=Dt(t.onClick,y=>{y.detail===0&&n()}),m={blur:h,click:g,focus:p,mousedown:f,mouseenter:c,mouseleave:d},v=(y,w,S)=>{y&&Object.entries(w).forEach(([$,k])=>{y[S]($,k)})};return pe(l,(y,w)=>{v(y,m,"addEventListener"),v(w,m,"removeEventListener"),y&&y.setAttribute("aria-describedby",r.value)}),_t(()=>{v(l.value,m,"removeEventListener"),document.removeEventListener("mouseup",u)}),(y,w)=>y.nowrap?(C(),x(b(RX),{key:0,"set-ref":i,"only-child":""},{default:j(()=>[ie(y.$slots,"default")]),_:3})):(C(),M("button",Et({key:1,ref_key:"triggerRef",ref:l},y.$attrs),[ie(y.$slots,"default")],16))}}));var FX=ge(VX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/trigger.vue"]]);const HX={name:"ElTooltipV2"},zX=te(Te(ne({},HX),{props:_X,setup(e){const n=Ut(e),o=yt(os(n,Object.keys(Dp))),s=yt(os(n,Object.keys(Pp))),l=yt(os(n,Object.keys(Lp))),r=yt(os(n,Object.keys(Rp)));return(a,i)=>(C(),x(NX,to(ds(b(l))),{default:j(({open:u})=>[Y(FX,Et(b(r),{nowrap:""}),{default:j(()=>[ie(a.$slots,"trigger")]),_:3},16),(C(),x(Sa,{to:a.to,disabled:!a.teleported},[a.fullTransition?(C(),x(zt,to(Et({key:0},a.transitionProps)),{default:j(()=>[a.alwaysOn||u?(C(),x(Pg,to(Et({key:0},b(s))),{arrow:j(({style:c,side:d})=>[a.showArrow?(C(),x(Dg,Et({key:0},b(o),{style:c,side:d}),null,16,["style","side"])):G("v-if",!0)]),default:j(()=>[ie(a.$slots,"default")]),_:3},16)):G("v-if",!0)]),_:2},1040)):(C(),M(Le,{key:1},[a.alwaysOn||u?(C(),x(Pg,to(Et({key:0},b(s))),{arrow:j(({style:c,side:d})=>[a.showArrow?(C(),x(Dg,Et({key:0},b(o),{style:c,side:d}),null,16,["style","side"])):G("v-if",!0)]),default:j(()=>[ie(a.$slots,"default")]),_:3},16)):G("v-if",!0)],2112))],8,["to","disabled"]))]),_:3},16))}}));var KX=ge(zX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/tooltip.vue"]]);const WX=ot(KX),Yd="checked-change",jX={data:{type:Array,default(){return[]}},optionRender:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},YX=(e,t)=>{const{emit:n}=nt(),o=E(()=>e.props.label||"label"),s=E(()=>e.props.key||"key"),l=E(()=>e.props.disabled||"disabled"),r=E(()=>e.data.filter(f=>typeof e.filterMethod=="function"?e.filterMethod(t.query,f):(f[o.value]||f[s.value].toString()).toLowerCase().includes(t.query.toLowerCase()))),a=E(()=>r.value.filter(f=>!f[l.value])),i=E(()=>{const f=t.checked.length,p=e.data.length,{noChecked:h,hasChecked:g}=e.format;return h&&g?f>0?g.replace(/\${checked}/g,f.toString()).replace(/\${total}/g,p.toString()):h.replace(/\${total}/g,p.toString()):`${f}/${p}`}),u=E(()=>{const f=t.checked.length;return f>0&&f{const f=a.value.map(p=>p[s.value]);t.allChecked=f.length>0&&f.every(p=>t.checked.includes(p))},d=f=>{t.checked=f?a.value.map(p=>p[s.value]):[]};return pe(()=>t.checked,(f,p)=>{if(c(),t.checkChangeByUser){const h=f.concat(p).filter(g=>!f.includes(g)||!p.includes(g));n(Yd,f,h)}else n(Yd,f),t.checkChangeByUser=!0}),pe(a,()=>{c()}),pe(()=>e.data,()=>{const f=[],p=r.value.map(h=>h[s.value]);t.checked.forEach(h=>{p.includes(h)&&f.push(h)}),t.checkChangeByUser=!1,t.checked=f}),pe(()=>e.defaultChecked,(f,p)=>{if(p&&f.length===p.length&&f.every(m=>p.includes(m)))return;const h=[],g=a.value.map(m=>m[s.value]);f.forEach(m=>{g.includes(m)&&h.push(m)}),t.checkChangeByUser=!1,t.checked=h},{immediate:!0}),{labelProp:o,keyProp:s,disabledProp:l,filteredData:r,checkableData:a,checkedSummary:i,isIndeterminate:u,updateAllChecked:c,handleAllCheckedChange:d}},UX=te({name:"ElTransferPanel",components:{ElCheckboxGroup:sw,ElCheckbox:ao,ElInput:Zn,OptionContent:({option:e})=>e},props:jX,emits:[Yd],setup(e,{slots:t}){const{t:n}=kt(),o=we("transfer"),s=yt({checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}),{labelProp:l,keyProp:r,disabledProp:a,filteredData:i,checkedSummary:u,isIndeterminate:c,handleAllCheckedChange:d}=YX(e,s),f=E(()=>s.query.length>0&&i.value.length===0),p=E(()=>!!t.default()[0].children.length),{checked:h,allChecked:g,query:m,inputHover:v,checkChangeByUser:y}=Ut(s);return{ns:o,labelProp:l,keyProp:r,disabledProp:a,filteredData:i,checkedSummary:u,isIndeterminate:c,handleAllCheckedChange:d,checked:h,allChecked:g,query:m,inputHover:v,checkChangeByUser:y,hasNoMatch:f,SearchIcon:TL,hasFooter:p,t:n}}});function qX(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-input"),i=le("option-content"),u=le("el-checkbox-group");return C(),M("div",{class:_(e.ns.b("panel"))},[D("p",{class:_(e.ns.be("panel","header"))},[Y(r,{modelValue:e.allChecked,"onUpdate:modelValue":t[0]||(t[0]=c=>e.allChecked=c),indeterminate:e.isIndeterminate,onChange:e.handleAllCheckedChange},{default:j(()=>[it(he(e.title)+" ",1),D("span",null,he(e.checkedSummary),1)]),_:1},8,["modelValue","indeterminate","onChange"])],2),D("div",{class:_([e.ns.be("panel","body"),e.ns.is("with-footer",e.hasFooter)])},[e.filterable?(C(),x(a,{key:0,modelValue:e.query,"onUpdate:modelValue":t[1]||(t[1]=c=>e.query=c),class:_(e.ns.be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":e.SearchIcon,clearable:"",onMouseenter:t[2]||(t[2]=c=>e.inputHover=!0),onMouseleave:t[3]||(t[3]=c=>e.inputHover=!1)},null,8,["modelValue","class","placeholder","prefix-icon"])):G("v-if",!0),Ge(Y(u,{modelValue:e.checked,"onUpdate:modelValue":t[4]||(t[4]=c=>e.checked=c),class:_([e.ns.is("filterable",e.filterable),e.ns.be("panel","list")])},{default:j(()=>[(C(!0),M(Le,null,rt(e.filteredData,c=>(C(),x(r,{key:c[e.keyProp],class:_(e.ns.be("panel","item")),label:c[e.keyProp],disabled:c[e.disabledProp]},{default:j(()=>[Y(i,{option:e.optionRender(c)},null,8,["option"])]),_:2},1032,["class","label","disabled"]))),128))]),_:1},8,["modelValue","class"]),[[pt,!e.hasNoMatch&&e.data.length>0]]),Ge(D("p",{class:_(e.ns.be("panel","empty"))},he(e.hasNoMatch?e.t("el.transfer.noMatch"):e.t("el.transfer.noData")),3),[[pt,e.hasNoMatch||e.data.length===0]])],2),e.hasFooter?(C(),M("p",{key:0,class:_(e.ns.be("panel","footer"))},[ie(e.$slots,"default")],2)):G("v-if",!0)],2)}var GX=ge(UX,[["render",qX],["__file","/home/runner/work/element-plus/element-plus/packages/components/transfer/src/transfer-panel.vue"]]);const XX=e=>{const t=E(()=>e.props.key),n=E(()=>e.data.reduce((l,r)=>(l[r[t.value]]=r)&&l,{})),o=E(()=>e.data.filter(l=>!e.modelValue.includes(l[t.value]))),s=E(()=>e.targetOrder==="original"?e.data.filter(l=>e.modelValue.includes(l[t.value])):e.modelValue.reduce((l,r)=>{const a=n.value[r];return a&&l.push(a),l},[]));return{propsKey:t,sourceData:o,targetData:s}},NC="left-check-change",MC="right-check-change",JX=(e,t)=>({onSourceCheckedChange:(s,l)=>{e.leftChecked=s,l!==void 0&&t(NC,s,l)},onTargetCheckedChange:(s,l)=>{e.rightChecked=s,l!==void 0&&t(MC,s,l)}}),ZX=(e,t,n,o)=>{const s=(a,i,u)=>{o(tt,a),o(qt,a,i,u)};return{addToLeft:()=>{const a=e.modelValue.slice();t.rightChecked.forEach(i=>{const u=a.indexOf(i);u>-1&&a.splice(u,1)}),s(a,"left",t.rightChecked)},addToRight:()=>{let a=e.modelValue.slice();const i=e.data.filter(u=>{const c=u[n.value];return t.leftChecked.includes(c)&&!e.modelValue.includes(c)}).map(u=>u[n.value]);a=e.targetOrder==="unshift"?i.concat(a):a.concat(i),e.targetOrder==="original"&&(a=e.data.filter(u=>a.includes(u[n.value])).map(u=>u[n.value])),s(a,"right",t.leftChecked)}}},QX=te({name:"ElTransfer",components:{TransferPanel:GX,ElButton:Kn,ElIcon:je,ArrowLeft:pl,ArrowRight:Jn},props:{data:{type:Array,default:()=>[]},titles:{type:Array,default:()=>[]},buttonTexts:{type:Array,default:()=>[]},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:()=>[]},rightDefaultChecked:{type:Array,default:()=>[]},renderContent:Function,modelValue:{type:Array,default:()=>[]},format:{type:Object,default:()=>({})},filterable:{type:Boolean,default:!1},props:{type:Object,default:()=>({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,default:"original",validator:e=>["original","push","unshift"].includes(e)}},emits:[tt,qt,NC,MC],setup(e,{emit:t,slots:n}){const{t:o}=kt(),s=we("transfer"),l=Ne(Un,{}),r=yt({leftChecked:[],rightChecked:[]}),{propsKey:a,sourceData:i,targetData:u}=XX(e),{onSourceCheckedChange:c,onTargetCheckedChange:d}=JX(r,t),{addToLeft:f,addToRight:p}=ZX(e,r,a,t),h=A(),g=A(),m=k=>{switch(k){case"left":h.value.query="";break;case"right":g.value.query="";break}},v=E(()=>e.buttonTexts.length===2),y=E(()=>e.titles[0]||o("el.transfer.titles.0")),w=E(()=>e.titles[1]||o("el.transfer.titles.1")),S=E(()=>e.filterPlaceholder||o("el.transfer.filterPlaceholder"));pe(()=>e.modelValue,()=>{var k;(k=l.validate)==null||k.call(l,"change").catch(T=>void 0)});const $=E(()=>k=>e.renderContent?e.renderContent(Pe,k):n.default?n.default({option:k}):Pe("span",k[e.props.label]||k[e.props.key]));return Te(ne({ns:s,sourceData:i,targetData:u,onSourceCheckedChange:c,onTargetCheckedChange:d,addToLeft:f,addToRight:p},Ut(r)),{hasButtonTexts:v,leftPanelTitle:y,rightPanelTitle:w,panelFilterPlaceholder:S,clearQuery:m,leftPanel:h,rightPanel:g,optionRender:$})}}),xX={key:0},eJ={key:0};function tJ(e,t,n,o,s,l){const r=le("transfer-panel"),a=le("arrow-left"),i=le("el-icon"),u=le("el-button"),c=le("arrow-right");return C(),M("div",{class:_(e.ns.b())},[Y(r,{ref:"leftPanel",data:e.sourceData,"option-render":e.optionRender,placeholder:e.panelFilterPlaceholder,title:e.leftPanelTitle,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:e.props,onCheckedChange:e.onSourceCheckedChange},{default:j(()=>[ie(e.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),D("div",{class:_(e.ns.e("buttons"))},[Y(u,{type:"primary",class:_([e.ns.e("button"),e.ns.is("with-texts",e.hasButtonTexts)]),disabled:e.rightChecked.length===0,onClick:e.addToLeft},{default:j(()=>[Y(i,null,{default:j(()=>[Y(a)]),_:1}),e.buttonTexts[0]!==void 0?(C(),M("span",xX,he(e.buttonTexts[0]),1)):G("v-if",!0)]),_:1},8,["class","disabled","onClick"]),Y(u,{type:"primary",class:_([e.ns.e("button"),e.ns.is("with-texts",e.hasButtonTexts)]),disabled:e.leftChecked.length===0,onClick:e.addToRight},{default:j(()=>[e.buttonTexts[1]!==void 0?(C(),M("span",eJ,he(e.buttonTexts[1]),1)):G("v-if",!0),Y(i,null,{default:j(()=>[Y(c)]),_:1})]),_:1},8,["class","disabled","onClick"])],2),Y(r,{ref:"rightPanel",data:e.targetData,"option-render":e.optionRender,placeholder:e.panelFilterPlaceholder,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:e.rightPanelTitle,"default-checked":e.rightDefaultChecked,props:e.props,onCheckedChange:e.onTargetCheckedChange},{default:j(()=>[ie(e.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2)}var Oi=ge(QX,[["render",tJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/transfer/src/index.vue"]]);Oi.install=e=>{e.component(Oi.name,Oi)};const nJ=Oi,oJ=nJ,Bl="$treeNodeId",Lg=function(e,t){!t||t[Bl]||Object.defineProperty(t,Bl,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Bp=function(e,t){return e?t[e]:t[Bl]},Ud=e=>{let t=!0,n=!0,o=!0;for(let s=0,l=e.length;s0&&t.lazy&&t.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Lg(this,this.data),!this.data)return;const o=t.defaultExpandedKeys,s=t.key;s&&o&&o.includes(this.key)&&this.expand(null,t.autoExpandParent),s&&t.currentNodeKey!==void 0&&this.key===t.currentNodeKey&&(t.currentNode=this,t.currentNode.isCurrent=!0),t.lazy&&t._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(t){Array.isArray(t)||Lg(this,t),this.data=t,this.childNodes=[];let n;this.level===0&&Array.isArray(this.data)?n=this.data:n=ei(this,"children")||[];for(let o=0,s=n.length;o-1)return t.childNodes[n+1]}return null}get previousSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return n>0?t.childNodes[n-1]:null}return null}contains(t,n=!0){return(this.childNodes||[]).some(o=>o===t||n&&o.contains(t))}remove(){const t=this.parent;t&&t.removeChild(this)}insertChild(t,n,o){if(!t)throw new Error("InsertChild error: child is required.");if(!(t instanceof Js)){if(!o){const s=this.getChildren(!0);s.includes(t.data)||(typeof n=="undefined"||n<0?s.push(t.data):s.splice(n,0,t.data))}Object.assign(t,{parent:this,store:this.store}),t=yt(new Js(t)),t instanceof Js&&t.initialize()}t.level=this.level+1,typeof n=="undefined"||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()}insertBefore(t,n){let o;n&&(o=this.childNodes.indexOf(n)),this.insertChild(t,o)}insertAfter(t,n){let o;n&&(o=this.childNodes.indexOf(n),o!==-1&&(o+=1)),this.insertChild(t,o)}removeChild(t){const n=this.getChildren()||[],o=n.indexOf(t.data);o>-1&&n.splice(o,1);const s=this.childNodes.indexOf(t);s>-1&&(this.store&&this.store.deregisterNode(t),t.parent=null,this.childNodes.splice(s,1)),this.updateLeafState()}removeChildByData(t){let n=null;for(let o=0;o{if(n){let s=this.parent;for(;s.level>0;)s.expanded=!0,s=s.parent}this.expanded=!0,t&&t(),this.childNodes.forEach(s=>{s.canFocus=!0})};this.shouldLoadData()?this.loadData(s=>{Array.isArray(s)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||Ii(this),o())}):o()}doCreateChildren(t,n={}){t.forEach(o=>{this.insertChild(Object.assign({data:o},n),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(t=>{t.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser!="undefined"){this.isLeaf=this.isLeafByUser;return}const t=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!t||t.length===0;return}this.isLeaf=!1}setChecked(t,n,o,s){if(this.indeterminate=t==="half",this.checked=t===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:r,allWithoutDisable:a}=Ud(this.childNodes);!this.isLeaf&&!r&&a&&(this.checked=!1,t=!1);const i=()=>{if(n){const u=this.childNodes;for(let f=0,p=u.length;f{i(),Ii(this)},{checked:t!==!1});return}else i()}const l=this.parent;!l||l.level===0||o||Ii(l)}getChildren(t=!1){if(this.level===0)return this.data;const n=this.data;if(!n)return null;const o=this.store.props;let s="children";return o&&(s=o.children||"children"),n[s]===void 0&&(n[s]=null),t&&!n[s]&&(n[s]=[]),n[s]}updateChildren(){const t=this.getChildren()||[],n=this.childNodes.map(l=>l.data),o={},s=[];t.forEach((l,r)=>{const a=l[Bl];!!a&&n.findIndex(u=>u[Bl]===a)>=0?o[a]={index:r,data:l}:s.push({index:r,data:l})}),this.store.lazy||n.forEach(l=>{o[l[Bl]]||this.removeChildByData(l)}),s.forEach(({index:l,data:r})=>{this.insertChild({data:r},l)}),this.updateLeafState()}loadData(t,n={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(n).length)){this.loading=!0;const o=s=>{this.loaded=!0,this.loading=!1,this.childNodes=[],this.doCreateChildren(s,n),this.updateLeafState(),t&&t.call(this,s)};this.store.load(this,o)}else t&&t.call(this)}}class lJ{constructor(t){this.currentNode=null,this.currentNodeKey=null;for(const n in t)at(t,n)&&(this[n]=t[n]);this.nodesMap={}}initialize(){this.root=new Js({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load?this.load(this.root,n=>{this.root.doCreateChildren(n),this._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}filter(t){const n=this.filterNodeMethod,o=this.lazy,s=function(l){const r=l.root?l.root.childNodes:l.childNodes;if(r.forEach(a=>{a.visible=n.call(a,t,a.data,a),s(a)}),!l.visible&&r.length){let a=!0;a=!r.some(i=>i.visible),l.root?l.root.visible=a===!1:l.visible=a===!1}!t||l.visible&&!l.isLeaf&&!o&&l.expand()};s(this)}setData(t){t!==this.root.data?(this.root.setData(t),this._initDefaultCheckedNodes()):this.root.updateChildren()}getNode(t){if(t instanceof Js)return t;const n=typeof t!="object"?t:Bp(this.key,t);return this.nodesMap[n]||null}insertBefore(t,n){const o=this.getNode(n);o.parent.insertBefore({data:t},o)}insertAfter(t,n){const o=this.getNode(n);o.parent.insertAfter({data:t},o)}remove(t){const n=this.getNode(t);n&&n.parent&&(n===this.currentNode&&(this.currentNode=null),n.parent.removeChild(n))}append(t,n){const o=n?this.getNode(n):this.root;o&&o.insertChild({data:t})}_initDefaultCheckedNodes(){const t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(o=>{const s=n[o];s&&s.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(t){(this.defaultCheckedKeys||[]).includes(t.key)&&t.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(t){t!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=t,this._initDefaultCheckedNodes())}registerNode(t){const n=this.key;!t||!t.data||(n?t.key!==void 0&&(this.nodesMap[t.key]=t):this.nodesMap[t.id]=t)}deregisterNode(t){!this.key||!t||!t.data||(t.childNodes.forEach(o=>{this.deregisterNode(o)}),delete this.nodesMap[t.key])}getCheckedNodes(t=!1,n=!1){const o=[],s=function(l){(l.root?l.root.childNodes:l.childNodes).forEach(a=>{(a.checked||n&&a.indeterminate)&&(!t||t&&a.isLeaf)&&o.push(a.data),s(a)})};return s(this),o}getCheckedKeys(t=!1){return this.getCheckedNodes(t).map(n=>(n||{})[this.key])}getHalfCheckedNodes(){const t=[],n=function(o){(o.root?o.root.childNodes:o.childNodes).forEach(l=>{l.indeterminate&&t.push(l.data),n(l)})};return n(this),t}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(t=>(t||{})[this.key])}_getAllNodes(){const t=[],n=this.nodesMap;for(const o in n)at(n,o)&&t.push(n[o]);return t}updateChildren(t,n){const o=this.nodesMap[t];if(!o)return;const s=o.childNodes;for(let l=s.length-1;l>=0;l--){const r=s[l];this.remove(r.data)}for(let l=0,r=n.length;li.level-a.level),l=Object.create(null),r=Object.keys(o);s.forEach(a=>a.setChecked(!1,!1));for(let a=0,i=s.length;a0;)l[f.data[t]]=!0,f=f.parent;if(u.isLeaf||this.checkStrictly){u.setChecked(!0,!1);continue}if(u.setChecked(!0,!0),n){u.setChecked(!1,!1);const p=function(h){h.childNodes.forEach(m=>{m.isLeaf||m.setChecked(!1,!1),p(m)})};p(u)}}}setCheckedNodes(t,n=!1){const o=this.key,s={};t.forEach(l=>{s[(l||{})[o]]=!0}),this._setCheckedKeys(o,n,s)}setCheckedKeys(t,n=!1){this.defaultCheckedKeys=t;const o=this.key,s={};t.forEach(l=>{s[l]=!0}),this._setCheckedKeys(o,n,s)}setDefaultExpandedKeys(t){t=t||[],this.defaultExpandedKeys=t,t.forEach(n=>{const o=this.getNode(n);o&&o.expand(null,this.autoExpandParent)})}setChecked(t,n,o){const s=this.getNode(t);s&&s.setChecked(!!n,o)}getCurrentNode(){return this.currentNode}setCurrentNode(t){const n=this.currentNode;n&&(n.isCurrent=!1),this.currentNode=t,this.currentNode.isCurrent=!0}setUserCurrentNode(t,n=!0){const o=t[this.key],s=this.nodesMap[o];this.setCurrentNode(s),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(t,n=!0){if(t==null){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const o=this.getNode(t);o&&(this.setCurrentNode(o),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const rJ=te({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=we("tree"),n=Ne("NodeInstance"),o=Ne("RootTree");return()=>{const s=e.node,{data:l,store:r}=s;return e.renderContent?e.renderContent(Pe,{_self:n,node:s,data:l,store:r}):o.ctx.slots.default?o.ctx.slots.default({node:s,data:l}):Pe("span",{class:t.be("node","label")},[s.label])}}});var aJ=ge(rJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node-content.vue"]]);function OC(e){const t=Ne("TreeNodeMap",null),n={treeNodeExpand:o=>{e.node!==o&&e.node.collapse()},children:[]};return t&&t.children.push(n),st("TreeNodeMap",n),{broadcastExpanded:o=>{if(!!e.accordion)for(const s of n.children)s.treeNodeExpand(o)}}}const IC=Symbol("dragEvents");function iJ({props:e,ctx:t,el$:n,dropIndicator$:o,store:s}){const l=we("tree"),r=A({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return st(IC,{treeNodeDragStart:({event:c,treeNode:d})=>{if(typeof e.allowDrag=="function"&&!e.allowDrag(d.node))return c.preventDefault(),!1;c.dataTransfer.effectAllowed="move";try{c.dataTransfer.setData("text/plain","")}catch{}r.value.draggingNode=d,t.emit("node-drag-start",d.node,c)},treeNodeDragOver:({event:c,treeNode:d})=>{const f=d,p=r.value.dropNode;p&&p!==f&&fn(p.$el,l.is("drop-inner"));const h=r.value.draggingNode;if(!h||!f)return;let g=!0,m=!0,v=!0,y=!0;typeof e.allowDrop=="function"&&(g=e.allowDrop(h.node,f.node,"prev"),y=m=e.allowDrop(h.node,f.node,"inner"),v=e.allowDrop(h.node,f.node,"next")),c.dataTransfer.dropEffect=m||g||v?"move":"none",(g||m||v)&&p!==f&&(p&&t.emit("node-drag-leave",h.node,p.node,c),t.emit("node-drag-enter",h.node,f.node,c)),(g||m||v)&&(r.value.dropNode=f),f.node.nextSibling===h.node&&(v=!1),f.node.previousSibling===h.node&&(g=!1),f.node.contains(h.node,!1)&&(m=!1),(h.node===f.node||h.node.contains(f.node))&&(g=!1,m=!1,v=!1);const w=f.$el.getBoundingClientRect(),S=n.value.getBoundingClientRect();let $;const k=g?m?.25:v?.45:1:-1,T=v?m?.75:g?.55:0:1;let O=-9999;const L=c.clientY-w.top;Lw.height*T?$="after":m?$="inner":$="none";const B=f.$el.querySelector(`.${l.be("node","expand-icon")}`).getBoundingClientRect(),V=o.value;$==="before"?O=B.top-S.top:$==="after"&&(O=B.bottom-S.top),V.style.top=`${O}px`,V.style.left=`${B.right-S.left}px`,$==="inner"?wo(f.$el,l.is("drop-inner")):fn(f.$el,l.is("drop-inner")),r.value.showDropIndicator=$==="before"||$==="after",r.value.allowDrop=r.value.showDropIndicator||y,r.value.dropType=$,t.emit("node-drag-over",h.node,f.node,c)},treeNodeDragEnd:c=>{const{draggingNode:d,dropType:f,dropNode:p}=r.value;if(c.preventDefault(),c.dataTransfer.dropEffect="move",d&&p){const h={data:d.node.data};f!=="none"&&d.node.remove(),f==="before"?p.node.parent.insertBefore(h,p.node):f==="after"?p.node.parent.insertAfter(h,p.node):f==="inner"&&p.node.insertChild(h),f!=="none"&&s.value.registerNode(h),fn(p.$el,l.is("drop-inner")),t.emit("node-drag-end",d.node,p.node,f,c),f!=="none"&&t.emit("node-drop",d.node,p.node,f,c)}d&&!p&&t.emit("node-drag-end",d.node,null,f,c),r.value.showDropIndicator=!1,r.value.draggingNode=null,r.value.dropNode=null,r.value.allowDrop=!0}}),{dragState:r}}const uJ=te({name:"ElTreeNode",components:{ElCollapseTransition:Yu,ElCheckbox:ao,NodeContent:aJ,ElIcon:je,Loading:gs},props:{node:{type:Js,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(e,t){const n=we("tree"),{broadcastExpanded:o}=OC(e),s=Ne("RootTree"),l=A(!1),r=A(!1),a=A(null),i=A(null),u=A(null),c=Ne(IC),d=nt();st("NodeInstance",d),e.node.expanded&&(l.value=!0,r.value=!0);const f=s.props.children||"children";pe(()=>{const L=e.node.data[f];return L&&[...L]},()=>{e.node.updateChildren()}),pe(()=>e.node.indeterminate,L=>{g(e.node.checked,L)}),pe(()=>e.node.checked,L=>{g(L,e.node.indeterminate)}),pe(()=>e.node.expanded,L=>{ze(()=>l.value=L),L&&(r.value=!0)});const p=L=>Bp(s.props.nodeKey,L.data),h=L=>{const B=e.props.class;if(!B)return{};let V;if(et(B)){const{data:H}=L;V=B(H,L)}else V=B;return Qe(V)?{[V]:!0}:V},g=(L,B)=>{(a.value!==L||i.value!==B)&&s.ctx.emit("check-change",e.node.data,L,B),a.value=L,i.value=B},m=L=>{const B=s.store.value;B.setCurrentNode(e.node),s.ctx.emit("current-change",B.currentNode?B.currentNode.data:null,B.currentNode),s.currentNode.value=e.node,s.props.expandOnClickNode&&y(),s.props.checkOnClickNode&&!e.node.disabled&&w(null,{target:{checked:!e.node.checked}}),s.ctx.emit("node-click",e.node.data,e.node,d,L)},v=L=>{s.instance.vnode.props.onNodeContextmenu&&(L.stopPropagation(),L.preventDefault()),s.ctx.emit("node-contextmenu",L,e.node.data,e.node,d)},y=()=>{e.node.isLeaf||(l.value?(s.ctx.emit("node-collapse",e.node.data,e.node,d),e.node.collapse()):(e.node.expand(),t.emit("node-expand",e.node.data,e.node,d)))},w=(L,B)=>{e.node.setChecked(B.target.checked,!s.props.checkStrictly),ze(()=>{const V=s.store.value;s.ctx.emit("check",e.node.data,{checkedNodes:V.getCheckedNodes(),checkedKeys:V.getCheckedKeys(),halfCheckedNodes:V.getHalfCheckedNodes(),halfCheckedKeys:V.getHalfCheckedKeys()})})};return{ns:n,node$:u,tree:s,expanded:l,childNodeRendered:r,oldChecked:a,oldIndeterminate:i,getNodeKey:p,getNodeClass:h,handleSelectChange:g,handleClick:m,handleContextMenu:v,handleExpandIconClick:y,handleCheckChange:w,handleChildNodeExpand:(L,B,V)=>{o(B),s.ctx.emit("node-expand",L,B,V)},handleDragStart:L=>{!s.props.draggable||c.treeNodeDragStart({event:L,treeNode:e})},handleDragOver:L=>{L.preventDefault(),s.props.draggable&&c.treeNodeDragOver({event:L,treeNode:{$el:u.value,node:e.node}})},handleDrop:L=>{L.preventDefault()},handleDragEnd:L=>{!s.props.draggable||c.treeNodeDragEnd(L)},CaretRight:D0}}}),cJ=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],dJ=["aria-expanded"];function fJ(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-checkbox"),i=le("loading"),u=le("node-content"),c=le("el-tree-node"),d=le("el-collapse-transition");return Ge((C(),M("div",{ref:"node$",class:_([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:t[1]||(t[1]=Ke((...f)=>e.handleClick&&e.handleClick(...f),["stop"])),onContextmenu:t[2]||(t[2]=(...f)=>e.handleContextMenu&&e.handleContextMenu(...f)),onDragstart:t[3]||(t[3]=Ke((...f)=>e.handleDragStart&&e.handleDragStart(...f),["stop"])),onDragover:t[4]||(t[4]=Ke((...f)=>e.handleDragOver&&e.handleDragOver(...f),["stop"])),onDragend:t[5]||(t[5]=Ke((...f)=>e.handleDragEnd&&e.handleDragEnd(...f),["stop"])),onDrop:t[6]||(t[6]=Ke((...f)=>e.handleDrop&&e.handleDrop(...f),["stop"]))},[D("div",{class:_(e.ns.be("node","content")),style:De({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(C(),x(r,{key:0,class:_([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:Ke(e.handleExpandIconClick,["stop"])},{default:j(()=>[(C(),x(ft(e.tree.props.icon||e.CaretRight)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.showCheckbox?(C(),x(a,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:t[0]||(t[0]=Ke(()=>{},["stop"])),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):G("v-if",!0),e.node.loading?(C(),x(r,{key:2,class:_([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:j(()=>[Y(i)]),_:1},8,["class"])):G("v-if",!0),Y(u,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),Y(d,null,{default:j(()=>[!e.renderAfterExpand||e.childNodeRendered?Ge((C(),M("div",{key:0,class:_(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded},[(C(!0),M(Le,null,rt(e.node.childNodes,f=>(C(),x(c,{key:e.getNodeKey(f),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:f,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,dJ)),[[pt,e.expanded]]):G("v-if",!0)]),_:1})],42,cJ)),[[pt,e.node.visible]])}var pJ=ge(uJ,[["render",fJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node.vue"]]);function hJ({el$:e},t){const n=we("tree"),o=jt([]),s=jt([]);xe(()=>{r(),Tt(e.value,"keydown",l)}),_t(()=>{Vt(e.value,"keydown",l)}),Xn(()=>{o.value=Array.from(e.value.querySelectorAll("[role=treeitem]")),s.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"))}),pe(s,a=>{a.forEach(i=>{i.setAttribute("tabindex","-1")})});const l=a=>{const i=a.target;if(!i.className.includes(n.b("node")))return;const u=a.code;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`));const c=o.value.indexOf(i);let d;if([Ie.up,Ie.down].includes(u)){if(a.preventDefault(),u===Ie.up){d=c===-1?0:c!==0?c-1:o.value.length-1;const p=d;for(;!t.value.getNode(o.value[d].dataset.key).canFocus;){if(d--,d===p){d=-1;break}d<0&&(d=o.value.length-1)}}else{d=c===-1?0:c=o.value.length&&(d=0)}}d!==-1&&o.value[d].focus()}[Ie.left,Ie.right].includes(u)&&(a.preventDefault(),i.click());const f=i.querySelector('[type="checkbox"]');[Ie.enter,Ie.space].includes(u)&&f&&(a.preventDefault(),f.click())},r=()=>{var a;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`)),s.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"));const i=e.value.querySelectorAll(`.${n.is("checked")}[role=treeitem]`);if(i.length){i[0].setAttribute("tabindex","0");return}(a=o.value[0])==null||a.setAttribute("tabindex","0")}}const mJ=te({name:"ElTree",components:{ElTreeNode:pJ},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:[String,Object]},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(e,t){const{t:n}=kt(),o=we("tree"),s=A(new lJ({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));s.value.initialize();const l=A(s.value.root),r=A(null),a=A(null),i=A(null),{broadcastExpanded:u}=OC(e),{dragState:c}=iJ({props:e,ctx:t,el$:a,dropIndicator$:i,store:s});hJ({el$:a},s);const d=E(()=>{const{childNodes:N}=l.value;return!N||N.length===0||N.every(({visible:I})=>!I)});pe(()=>e.defaultCheckedKeys,N=>{s.value.setDefaultCheckedKey(N)}),pe(()=>e.defaultExpandedKeys,N=>{s.value.setDefaultExpandedKeys(N)}),pe(()=>e.data,N=>{s.value.setData(N)},{deep:!0}),pe(()=>e.checkStrictly,N=>{s.value.checkStrictly=N});const f=N=>{if(!e.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");s.value.filter(N)},p=N=>Bp(e.nodeKey,N.data),h=N=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const I=s.value.getNode(N);if(!I)return[];const U=[I.data];let q=I.parent;for(;q&&q!==l.value;)U.push(q.data),q=q.parent;return U.reverse()},g=(N,I)=>s.value.getCheckedNodes(N,I),m=N=>s.value.getCheckedKeys(N),v=()=>{const N=s.value.getCurrentNode();return N?N.data:null},y=()=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const N=v();return N?N[e.nodeKey]:null},w=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");s.value.setCheckedNodes(N,I)},S=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");s.value.setCheckedKeys(N,I)},$=(N,I,U)=>{s.value.setChecked(N,I,U)},k=()=>s.value.getHalfCheckedNodes(),T=()=>s.value.getHalfCheckedKeys(),O=(N,I=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");s.value.setUserCurrentNode(N,I)},L=(N,I=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");s.value.setCurrentNodeKey(N,I)},B=N=>s.value.getNode(N),V=N=>{s.value.remove(N)},H=(N,I)=>{s.value.append(N,I)},R=(N,I)=>{s.value.insertBefore(N,I)},z=(N,I)=>{s.value.insertAfter(N,I)},W=(N,I,U)=>{u(I),t.emit("node-expand",N,I,U)},P=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");s.value.updateChildren(N,I)};return st("RootTree",{ctx:t,props:e,store:s,root:l,currentNode:r,instance:nt()}),{ns:o,store:s,root:l,currentNode:r,dragState:c,el$:a,dropIndicator$:i,isEmpty:d,filter:f,getNodeKey:p,getNodePath:h,getCheckedNodes:g,getCheckedKeys:m,getCurrentNode:v,getCurrentKey:y,setCheckedNodes:w,setCheckedKeys:S,setChecked:$,getHalfCheckedNodes:k,getHalfCheckedKeys:T,setCurrentNode:O,setCurrentKey:L,t:n,getNode:B,remove:V,append:H,insertBefore:R,insertAfter:z,handleNodeExpand:W,updateKeyChildren:P}}});function vJ(e,t,n,o,s,l){var r;const a=le("el-tree-node");return C(),M("div",{ref:"el$",class:_([e.ns.b(),e.ns.is("dragging",!!e.dragState.draggingNode),e.ns.is("drop-not-allow",!e.dragState.allowDrop),e.ns.is("drop-inner",e.dragState.dropType==="inner"),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(C(!0),M(Le,null,rt(e.root.childNodes,i=>(C(),x(a,{key:e.getNodeKey(i),node:i,props:e.props,accordion:e.accordion,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),e.isEmpty?(C(),M("div",{key:0,class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},he((r=e.emptyText)!=null?r:e.t("el.tree.emptyText")),3)],2)):G("v-if",!0),Ge(D("div",{ref:"dropIndicator$",class:_(e.ns.e("drop-indicator"))},null,2),[[pt,e.dragState.showDropIndicator]])],2)}var Di=ge(mJ,[["render",vJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree.vue"]]);Di.install=e=>{e.component(Di.name,Di)};const lu=Di,gJ=lu,bJ=(e,{attrs:t},{tree:n,key:o})=>{const s=we("tree-select"),l=Te(ne(ne({},os(Ut(e),Object.keys(ll.props))),t),{valueKey:o,popperClass:E(()=>{const r=[s.e("popper")];return e.popperClass&&r.push(e.popperClass),r.join(" ")}),filterMethod:(r="")=>{e.filterMethod&&e.filterMethod(r),ze(()=>{var a;(a=n.value)==null||a.filter(r)})},onVisibleChange:r=>{var a;(a=t.onVisibleChange)==null||a.call(t,r),e.filterable&&r&&l.filterMethod()}});return l},yJ=te({extends:eu,setup(e,t){const n=eu.setup(e,t);return delete n.selectOptionClick,n},methods:{selectOptionClick(){this.$el.parentElement.click()}}}),wJ=(e,{attrs:t,slots:n,emit:o},{select:s,tree:l,key:r})=>{pe(()=>e.modelValue,()=>{e.showCheckbox&&ze(()=>{const u=l.value;u&&!_n(u.getCheckedKeys(),Rc(e.modelValue))&&u.setCheckedKeys(Rc(e.modelValue))})},{immediate:!0,deep:!0});const a=E(()=>ne({value:r.value},e.props)),i=(u,c)=>{var d;const f=a.value[u];return et(f)?f(c,(d=l.value)==null?void 0:d.getNode(i("value",c))):c[f]};return Te(ne(ne({},os(Ut(e),Object.keys(lu.props))),t),{nodeKey:r,defaultExpandedKeys:E(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(e.modelValue):Rc(e.modelValue)),renderContent:(u,{node:c,data:d,store:f})=>u(yJ,{value:i("value",d),label:i("label",d),disabled:i("disabled",d)},e.renderContent?()=>e.renderContent(u,{node:c,data:d,store:f}):n.default?()=>n.default({node:c,data:d,store:f}):void 0),filterNodeMethod:(u,c,d)=>{var f;return e.filterNodeMethod?e.filterNodeMethod(u,c,d):u?(f=i("label",c))==null?void 0:f.includes(u):!0},onNodeClick:(u,c,d)=>{var f,p,h;if((f=t.onNodeClick)==null||f.call(t,u,c,d),e.checkStrictly||c.isLeaf){if(!i("disabled",u)){const g=(p=s.value)==null?void 0:p.options.get(i("value",u));(h=s.value)==null||h.handleOptionSelect(g,!0)}}else d.ctx.handleExpandIconClick()},onCheck:(u,c)=>{var d,f;(d=t.onCheck)==null||d.call(t,u,c);const p=e.checkStrictly?c.checkedKeys:(f=l.value)==null?void 0:f.getCheckedKeys(!0),h=i("value",u);o(tt,e.multiple?p:p.includes(h)?h:void 0)}})};function Rc(e){return Array.isArray(e)?e:e||e===0?[e]:[]}const CJ=te({name:"ElTreeSelect",props:ne(ne({},ll.props),lu.props),setup(e,t){const{slots:n,expose:o}=t,s=A(),l=A(),r=E(()=>e.valueKey||e.nodeKey||"value"),a=bJ(e,t,{select:s,tree:l,key:r}),i=wJ(e,t,{select:s,tree:l,key:r}),u=yt({});return o(u),xe(()=>{Object.assign(u,ne(ne({},os(l.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"])),os(s.value,["focus","blur"])))}),()=>Pe(ll,yt(Te(ne({},a),{ref:c=>s.value=c})),Te(ne({},n),{default:()=>Pe(lu,yt(Te(ne({},i),{ref:c=>l.value=c})))}))}});var Pi=ge(CJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-select/src/tree-select.vue"]]);Pi.install=e=>{e.component(Pi.name,Pi)};const $J=Pi,kJ=$J,Vp=Symbol(),SJ={key:-1,level:-1,data:{}};var Ir=(e=>(e.KEY="id",e.LABEL="label",e.CHILDREN="children",e.DISABLED="disabled",e))(Ir||{}),qd=(e=>(e.ADD="add",e.DELETE="delete",e))(qd||{});const EJ=Ve({data:{type:$e(Array),default:()=>Pt([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:$e(Object),default:()=>Pt({children:"children",label:"label",disabled:"disabled",value:"id"})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:$e(Array),default:()=>Pt([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:$e(Array),default:()=>Pt([])},indent:{type:Number,default:16},icon:{type:String},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},currentNodeKey:{type:$e([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:$e(Function)},perfMode:{type:Boolean,default:!0}}),_J=Ve({node:{type:$e(Object),default:()=>Pt(SJ)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1}}),TJ=Ve({node:{type:$e(Object),required:!0}}),DC="node-click",PC="node-expand",LC="node-collapse",RC="current-change",BC="check",VC="check-change",FC="node-contextmenu",AJ={[DC]:(e,t,n)=>e&&t&&n,[PC]:(e,t)=>e&&t,[LC]:(e,t)=>e&&t,[RC]:(e,t)=>e&&t,[BC]:(e,t)=>e&&t,[VC]:(e,t)=>e&&typeof t=="boolean",[FC]:(e,t,n)=>e&&t&&n},NJ={click:(e,t)=>!!(e&&t),toggle:e=>!!e,check:(e,t)=>e&&typeof t=="boolean"};function MJ(e,t){const n=A(new Set),o=A(new Set),{emit:s}=nt();pe(()=>t.value,()=>ze(()=>{y(e.defaultCheckedKeys)}),{immediate:!0});const l=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:w,maxLevel:S}=t.value,$=n.value,k=new Set;for(let T=S-1;T>=1;--T){const O=w.get(T);!O||O.forEach(L=>{const B=L.children;if(B){let V=!0,H=!1;for(const R of B){const z=R.key;if($.has(z))H=!0;else if(k.has(z)){V=!1,H=!0;break}else V=!1}V?$.add(L.key):H?(k.add(L.key),$.delete(L.key)):($.delete(L.key),k.delete(L.key))}})}o.value=k},r=w=>n.value.has(w.key),a=w=>o.value.has(w.key),i=(w,S,$=!0)=>{const k=n.value,T=(O,L)=>{k[L?qd.ADD:qd.DELETE](O.key);const B=O.children;!e.checkStrictly&&B&&B.forEach(V=>{V.disabled||T(V,L)})};T(w,S),l(),$&&u(w,S)},u=(w,S)=>{const{checkedNodes:$,checkedKeys:k}=h(),{halfCheckedNodes:T,halfCheckedKeys:O}=g();s(BC,w.data,{checkedKeys:k,checkedNodes:$,halfCheckedKeys:O,halfCheckedNodes:T}),s(VC,w.data,S)};function c(w=!1){return h(w).checkedKeys}function d(w=!1){return h(w).checkedNodes}function f(){return g().halfCheckedKeys}function p(){return g().halfCheckedNodes}function h(w=!1){const S=[],$=[];if((t==null?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:k}=t.value;n.value.forEach(T=>{const O=k.get(T);O&&(!w||w&&O.isLeaf)&&($.push(T),S.push(O.data))})}return{checkedKeys:$,checkedNodes:S}}function g(){const w=[],S=[];if((t==null?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:$}=t.value;o.value.forEach(k=>{const T=$.get(k);T&&(S.push(k),w.push(T.data))})}return{halfCheckedNodes:w,halfCheckedKeys:S}}function m(w){n.value.clear(),o.value.clear(),y(w)}function v(w,S){if((t==null?void 0:t.value)&&e.showCheckbox){const $=t.value.treeNodeMap.get(w);$&&i($,S,!1)}}function y(w){if(t!=null&&t.value){const{treeNodeMap:S}=t.value;if(e.showCheckbox&&S&&w)for(const $ of w){const k=S.get($);k&&!r(k)&&i(k,!0,!1)}}}return{updateCheckedKeys:l,toggleCheckbox:i,isChecked:r,isIndeterminate:a,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:p,setChecked:v,setCheckedKeys:m}}function OJ(e,t){const n=A(new Set([])),o=A(new Set([])),s=E(()=>et(e.filterMethod));function l(a){var i;if(!s.value)return;const u=new Set,c=o.value,d=n.value,f=[],p=((i=t.value)==null?void 0:i.treeNodes)||[],h=e.filterMethod;d.clear();function g(m){m.forEach(v=>{f.push(v),h!=null&&h(a,v.data)?f.forEach(w=>{u.add(w.key)}):v.isLeaf&&d.add(v.key);const y=v.children;if(y&&g(y),!v.isLeaf){if(!u.has(v.key))d.add(v.key);else if(y){let w=!0;for(const S of y)if(!d.has(S.key)){w=!1;break}w?c.add(v.key):c.delete(v.key)}}f.pop()})}return g(p),u}function r(a){return o.value.has(a.key)}return{hiddenExpandIconKeySet:o,hiddenNodeKeySet:n,doFilter:l,isForceHiddenExpandIcon:r}}function IJ(e,t){const n=A(new Set(e.defaultExpandedKeys)),o=A(),s=jt();pe(()=>e.currentNodeKey,Z=>{o.value=Z},{immediate:!0}),pe(()=>e.data,Z=>{Me(Z)},{immediate:!0});const{isIndeterminate:l,isChecked:r,toggleCheckbox:a,getCheckedKeys:i,getCheckedNodes:u,getHalfCheckedKeys:c,getHalfCheckedNodes:d,setChecked:f,setCheckedKeys:p}=MJ(e,s),{doFilter:h,hiddenNodeKeySet:g,isForceHiddenExpandIcon:m}=OJ(e,s),v=E(()=>{var Z;return((Z=e.props)==null?void 0:Z.value)||Ir.KEY}),y=E(()=>{var Z;return((Z=e.props)==null?void 0:Z.children)||Ir.CHILDREN}),w=E(()=>{var Z;return((Z=e.props)==null?void 0:Z.disabled)||Ir.DISABLED}),S=E(()=>{var Z;return((Z=e.props)==null?void 0:Z.label)||Ir.LABEL}),$=E(()=>{const Z=n.value,ve=g.value,Ce=[],ke=s.value&&s.value.treeNodes||[];function Oe(){const We=[];for(let qe=ke.length-1;qe>=0;--qe)We.push(ke[qe]);for(;We.length;){const qe=We.pop();if(!!qe&&(ve.has(qe.key)||Ce.push(qe),Z.has(qe.key))){const K=qe.children;if(K){const X=K.length;for(let fe=X-1;fe>=0;--fe)We.push(K[fe])}}}}return Oe(),Ce}),k=E(()=>$.value.length>0);function T(Z){const ve=new Map,Ce=new Map;let ke=1;function Oe(qe,K=1,X=void 0){var fe;const ye=[];for(const be of qe){const _e=B(be),re={level:K,key:_e,data:be};re.label=H(be),re.parent=X;const se=L(be);re.disabled=V(be),re.isLeaf=!se||se.length===0,se&&se.length&&(re.children=Oe(se,K+1,re)),ye.push(re),ve.set(_e,re),Ce.has(K)||Ce.set(K,[]),(fe=Ce.get(K))==null||fe.push(re)}return K>ke&&(ke=K),ye}const We=Oe(Z);return{treeNodeMap:ve,levelTreeNodeMap:Ce,maxLevel:ke,treeNodes:We}}function O(Z){const ve=h(Z);ve&&(n.value=ve)}function L(Z){return Z[y.value]}function B(Z){return Z?Z[v.value]:""}function V(Z){return Z[w.value]}function H(Z){return Z[S.value]}function R(Z){n.value.has(Z.key)?I(Z):N(Z)}function z(Z,ve){t(DC,Z.data,Z,ve),W(Z),e.expandOnClickNode&&R(Z),e.showCheckbox&&e.checkOnClickNode&&!Z.disabled&&a(Z,!r(Z),!0)}function W(Z){Q(Z)||(o.value=Z.key,t(RC,Z.data,Z))}function P(Z,ve){a(Z,ve)}function N(Z){const ve=n.value;if((s==null?void 0:s.value)&&e.accordion){const{treeNodeMap:Ce}=s.value;ve.forEach(ke=>{const Oe=Ce.get(ke);Oe&&Oe.level===Oe.level&&ve.delete(ke)})}ve.add(Z.key),t(PC,Z.data,Z)}function I(Z){n.value.delete(Z.key),t(LC,Z.data,Z)}function U(Z){return n.value.has(Z.key)}function q(Z){return!!Z.disabled}function Q(Z){const ve=o.value;return!!ve&&ve===Z.key}function J(){var Z,ve;if(!!o.value)return(ve=(Z=s==null?void 0:s.value)==null?void 0:Z.treeNodeMap.get(o.value))==null?void 0:ve.data}function ae(){return o.value}function Ee(Z){o.value=Z}function Me(Z){ze(()=>s.value=T(Z))}return{tree:s,flattenTree:$,isNotEmpty:k,getKey:B,getChildren:L,toggleExpand:R,toggleCheckbox:a,isExpanded:U,isChecked:r,isIndeterminate:l,isDisabled:q,isCurrent:Q,isForceHiddenExpandIcon:m,handleNodeClick:z,handleNodeCheck:P,getCurrentNode:J,getCurrentKey:ae,setCurrentKey:Ee,getCheckedKeys:i,getCheckedNodes:u,getHalfCheckedKeys:c,getHalfCheckedNodes:d,setChecked:f,setCheckedKeys:p,filter:O,setData:Me}}var DJ=te({name:"ElTreeNodeContent",props:TJ,setup(e){const t=Ne(Vp),n=we("tree");return()=>{const o=e.node,{data:s}=o;return t!=null&&t.ctx.slots.default?t.ctx.slots.default({node:o,data:s}):Pe("span",{class:n.be("node","label")},[o==null?void 0:o.label])}}});const PJ="caret-right",LJ=te({name:"ElTreeNode",components:{ElIcon:je,CaretRight:D0,ElCheckbox:ao,ElNodeContent:DJ},props:_J,emits:NJ,setup(e,{emit:t}){const n=Ne(Vp),o=we("tree"),s=E(()=>{var c;return(c=n==null?void 0:n.props.indent)!=null?c:16}),l=E(()=>{var c;return(c=n==null?void 0:n.props.icon)!=null?c:PJ});return{ns:o,indent:s,icon:l,handleClick:c=>{t("click",e.node,c)},handleExpandIconClick:()=>{t("toggle",e.node)},handleCheckChange:c=>{t("check",e.node,c)},handleContextMenu:c=>{var d,f,p,h;(p=(f=(d=n==null?void 0:n.instance)==null?void 0:d.vnode)==null?void 0:f.props)!=null&&p.onNodeContextmenu&&(c.stopPropagation(),c.preventDefault()),n==null||n.ctx.emit(FC,c,(h=e.node)==null?void 0:h.data,e.node)}}}}),RJ=["aria-expanded","aria-disabled","aria-checked","data-key"];function BJ(e,t,n,o,s,l){var r,a,i;const u=le("el-icon"),c=le("el-checkbox"),d=le("el-node-content");return C(),M("div",{ref:"node$",class:_([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.current),e.ns.is("focusable",!e.disabled),e.ns.is("checked",!e.disabled&&e.checked)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.disabled,"aria-checked":e.checked,"data-key":(r=e.node)==null?void 0:r.key,onClick:t[1]||(t[1]=Ke((...f)=>e.handleClick&&e.handleClick(...f),["stop"])),onContextmenu:t[2]||(t[2]=(...f)=>e.handleContextMenu&&e.handleContextMenu(...f))},[D("div",{class:_(e.ns.be("node","content")),style:De({paddingLeft:`${(e.node.level-1)*e.indent}px`})},[e.icon?(C(),x(u,{key:0,class:_([e.ns.is("leaf",!!((a=e.node)!=null&&a.isLeaf)),e.ns.is("hidden",e.hiddenExpandIcon),{expanded:!((i=e.node)!=null&&i.isLeaf)&&e.expanded},e.ns.be("node","expand-icon")]),onClick:Ke(e.handleExpandIconClick,["stop"])},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.showCheckbox?(C(),x(c,{key:1,"model-value":e.checked,indeterminate:e.indeterminate,disabled:e.disabled,onChange:e.handleCheckChange,onClick:t[0]||(t[0]=Ke(()=>{},["stop"]))},null,8,["model-value","indeterminate","disabled","onChange"])):G("v-if",!0),Y(d,{node:e.node},null,8,["node"])],6)],42,RJ)}var VJ=ge(LJ,[["render",BJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree-node.vue"]]);const FJ=te({name:"ElTreeV2",components:{ElTreeNode:VJ,FixedSizeList:dC},props:EJ,emits:AJ,setup(e,t){st(Vp,{ctx:t,props:e,instance:nt()});const{t:n}=kt(),o=we("tree"),{flattenTree:s,isNotEmpty:l,toggleExpand:r,isExpanded:a,isIndeterminate:i,isChecked:u,isDisabled:c,isCurrent:d,isForceHiddenExpandIcon:f,toggleCheckbox:p,handleNodeClick:h,handleNodeCheck:g,getCurrentNode:m,getCurrentKey:v,setCurrentKey:y,getCheckedKeys:w,getCheckedNodes:S,getHalfCheckedKeys:$,getHalfCheckedNodes:k,setChecked:T,setCheckedKeys:O,filter:L,setData:B}=IJ(e,t.emit);return t.expose({getCurrentNode:m,getCurrentKey:v,setCurrentKey:y,getCheckedKeys:w,getCheckedNodes:S,getHalfCheckedKeys:$,getHalfCheckedNodes:k,setChecked:T,setCheckedKeys:O,filter:L,setData:B}),{t:n,ns:o,flattenTree:s,itemSize:26,isNotEmpty:l,toggleExpand:r,toggleCheckbox:p,isExpanded:a,isIndeterminate:i,isChecked:u,isDisabled:c,isCurrent:d,isForceHiddenExpandIcon:f,handleNodeClick:h,handleNodeCheck:g}}});function HJ(e,t,n,o,s,l){var r;const a=le("el-tree-node"),i=le("fixed-size-list");return C(),M("div",{class:_([e.ns.b(),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[e.isNotEmpty?(C(),x(i,{key:0,"class-name":e.ns.b("virtual-list"),data:e.flattenTree,total:e.flattenTree.length,height:e.height,"item-size":e.itemSize,"perf-mode":e.perfMode},{default:j(({data:u,index:c,style:d})=>[(C(),x(a,{key:u[c].key,style:De(d),node:u[c],expanded:e.isExpanded(u[c]),"show-checkbox":e.showCheckbox,checked:e.isChecked(u[c]),indeterminate:e.isIndeterminate(u[c]),disabled:e.isDisabled(u[c]),current:e.isCurrent(u[c]),"hidden-expand-icon":e.isForceHiddenExpandIcon(u[c]),onClick:e.handleNodeClick,onToggle:e.toggleExpand,onCheck:e.handleNodeCheck},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode"])):(C(),M("div",{key:1,class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},he((r=e.emptyText)!=null?r:e.t("el.tree.emptyText")),3)],2))],2)}var zJ=ge(FJ,[["render",HJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree.vue"]]);const KJ=ot(zJ),WJ="ElUpload";class jJ extends Error{constructor(t,n,o,s){super(t),this.name="UploadAjaxError",this.status=n,this.method=o,this.url=s}}function Rg(e,t,n){let o;return n.response?o=`${n.response.error||n.response}`:n.responseText?o=`${n.responseText}`:o=`fail to ${t.method} ${e} ${n.status}`,new jJ(o,n.status,t.method,e)}function YJ(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}const UJ=e=>{typeof XMLHttpRequest=="undefined"&&Kt(WJ,"XMLHttpRequest is undefined");const t=new XMLHttpRequest,n=e.action;t.upload&&t.upload.addEventListener("progress",l=>{const r=l;r.percent=l.total>0?l.loaded/l.total*100:0,e.onProgress(r)});const o=new FormData;if(e.data)for(const[l,r]of Object.entries(e.data))Array.isArray(r)?o.append(l,...r):o.append(l,r);o.append(e.filename,e.file,e.file.name),t.addEventListener("error",()=>{e.onError(Rg(n,e,t))}),t.addEventListener("load",()=>{if(t.status<200||t.status>=300)return e.onError(Rg(n,e,t));e.onSuccess(YJ(t))}),t.open(e.method,n,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);const s=e.headers||{};if(s instanceof Headers)s.forEach((l,r)=>t.setRequestHeader(r,l));else for(const[l,r]of Object.entries(s))xf(r)||t.setRequestHeader(l,String(r));return t.send(o),t},HC=["text","picture","picture-card"];let qJ=1;const zC=()=>Date.now()+qJ++,KC=Ve({action:{type:String,required:!0},headers:{type:$e(Object)},method:{type:String,default:"post"},data:{type:Object,default:()=>Pt({})},multiple:{type:Boolean,default:!1},name:{type:String,default:"file"},drag:{type:Boolean,default:!1},withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},type:{type:String,default:"select"},fileList:{type:$e(Array),default:()=>Pt([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:HC,default:"text"},httpRequest:{type:$e(Function),default:UJ},disabled:Boolean,limit:Number}),GJ=Ve(Te(ne({},KC),{beforeUpload:{type:$e(Function),default:wt},beforeRemove:{type:$e(Function)},onRemove:{type:$e(Function),default:wt},onChange:{type:$e(Function),default:wt},onPreview:{type:$e(Function),default:wt},onSuccess:{type:$e(Function),default:wt},onProgress:{type:$e(Function),default:wt},onError:{type:$e(Function),default:wt},onExceed:{type:$e(Function),default:wt}})),XJ=Ve({files:{type:$e(Array),default:()=>Pt([])},disabled:{type:Boolean,default:!1},handlePreview:{type:$e(Function),default:wt},listType:{type:String,values:HC,default:"text"}}),JJ={remove:e=>!!e},ZJ=["onKeydown"],QJ=["src"],xJ=["onClick"],eZ=["onClick"],tZ=["onClick"],nZ={name:"ElUploadList"},oZ=te(Te(ne({},nZ),{props:XJ,emits:JJ,setup(e,{emit:t}){const n=e,{t:o}=kt(),s=we("upload"),l=we("icon"),r=we("list"),a=A(!1),i=d=>{n.handlePreview(d)},u=d=>{d.target.focus()},c=d=>{t("remove",d)};return(d,f)=>(C(),x(DT,{tag:"ul",class:_([b(s).b("list"),b(s).bm("list",d.listType),b(s).is("disabled",d.disabled)]),name:b(r).b()},{default:j(()=>[(C(!0),M(Le,null,rt(d.files,p=>(C(),M("li",{key:p.uid||p.name,class:_([b(s).be("list","item"),b(s).is(p.status),{focusing:a.value}]),tabindex:"0",onKeydown:lt(h=>!d.disabled&&c(p),["delete"]),onFocus:f[0]||(f[0]=h=>a.value=!0),onBlur:f[1]||(f[1]=h=>a.value=!1),onClick:u},[ie(d.$slots,"default",{file:p},()=>[d.listType==="picture"||p.status!=="uploading"&&d.listType==="picture-card"?(C(),M("img",{key:0,class:_(b(s).be("list","item-thumbnail")),src:p.url,alt:""},null,10,QJ)):G("v-if",!0),d.listType!=="picture"&&(p.status==="uploading"||d.listType!=="picture-card")?(C(),M("div",{key:1,class:_(b(s).be("list","item-info"))},[D("a",{class:_(b(s).be("list","item-name")),onClick:h=>i(p)},[Y(b(je),{class:_(b(l).m("document"))},{default:j(()=>[Y(b(xD))]),_:1},8,["class"]),it(" "+he(p.name),1)],10,xJ),p.status==="uploading"?(C(),x(b(eC),{key:0,type:d.listType==="picture-card"?"circle":"line","stroke-width":d.listType==="picture-card"?6:2,percentage:Number(p.percentage),style:De(d.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):G("v-if",!0)],2)):G("v-if",!0),D("label",{class:_(b(s).be("list","item-status-label"))},[d.listType==="text"?(C(),x(b(je),{key:0,class:_([b(l).m("upload-success"),b(l).m("circle-check")])},{default:j(()=>[Y(b(Zi))]),_:1},8,["class"])):["picture-card","picture"].includes(d.listType)?(C(),x(b(je),{key:1,class:_([b(l).m("upload-success"),b(l).m("check")])},{default:j(()=>[Y(b(Jl))]),_:1},8,["class"])):G("v-if",!0)],2),d.disabled?G("v-if",!0):(C(),x(b(je),{key:2,class:_(b(l).m("close")),onClick:h=>c(p)},{default:j(()=>[Y(b(Yn))]),_:2},1032,["class","onClick"])),G(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),G(" This is a bug which needs to be fixed "),G(" TODO: Fix the incorrect navigation interaction "),d.disabled?G("v-if",!0):(C(),M("i",{key:3,class:_(b(l).m("close-tip"))},he(b(o)("el.upload.deleteTip")),3)),d.listType==="picture-card"?(C(),M("span",{key:4,class:_(b(s).be("list","item-actions"))},[D("span",{class:_(b(s).be("list","item-preview")),onClick:h=>d.handlePreview(p)},[Y(b(je),{class:_(b(l).m("zoom-in"))},{default:j(()=>[Y(b(B0))]),_:1},8,["class"])],10,eZ),d.disabled?G("v-if",!0):(C(),M("span",{key:0,class:_(b(s).be("list","item-delete")),onClick:h=>c(p)},[Y(b(je),{class:_(b(l).m("delete"))},{default:j(()=>[Y(b(qD))]),_:1},8,["class"])],10,tZ))],2)):G("v-if",!0)])],42,ZJ))),128)),ie(d.$slots,"append")]),_:3},8,["class","name"]))}}));var Bg=ge(oZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue"]]);const sZ=Ve({disabled:{type:Boolean,default:!1}}),lZ={file:e=>Xe(e)},rZ=["onDrop","onDragover"],aZ={name:"ElUploadDrag"},iZ=te(Te(ne({},aZ),{props:sZ,emits:lZ,setup(e,{emit:t}){const n=e,o="ElUploadDrag",s=Ne(t1);s||Kt(o,"usage: ");const l=we("upload"),r=A(!1),a=u=>{if(n.disabled)return;r.value=!1;const c=Array.from(u.dataTransfer.files),d=s.accept.value;if(!d){t("file",c);return}const f=c.filter(p=>{const{type:h,name:g}=p,m=g.includes(".")?`.${g.split(".").pop()}`:"",v=h.replace(/\/.*$/,"");return d.split(",").map(y=>y.trim()).filter(y=>y).some(y=>y.startsWith(".")?m===y:/\/\*$/.test(y)?v===y.replace(/\/\*$/,""):/^[^/]+\/[^/]+$/.test(y)?h===y:!1)});t("file",f)},i=()=>{n.disabled||(r.value=!0)};return(u,c)=>(C(),M("div",{class:_([b(l).b("dragger"),b(l).is("dragover",r.value)]),onDrop:Ke(a,["prevent"]),onDragover:Ke(i,["prevent"]),onDragleave:c[0]||(c[0]=Ke(d=>r.value=!1,["prevent"]))},[ie(u.$slots,"default")],42,rZ))}}));var uZ=ge(iZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);const cZ=Ve(Te(ne({},KC),{fileList:{type:$e(Array),default:()=>Pt([])},beforeUpload:{type:$e(Function),default:wt},onRemove:{type:$e(Function),default:wt},onStart:{type:$e(Function),default:wt},onSuccess:{type:$e(Function),default:wt},onProgress:{type:$e(Function),default:wt},onError:{type:$e(Function),default:wt},onExceed:{type:$e(Function),default:wt}})),dZ=["onKeydown"],fZ=["name","multiple","accept"],pZ={name:"ElUploadContent",inheritAttrs:!1},hZ=te(Te(ne({},pZ),{props:cZ,setup(e,{expose:t}){const n=e,o=we("upload"),s=jt({}),l=jt(),r=p=>{if(p.length===0)return;const{autoUpload:h,limit:g,fileList:m,multiple:v,onStart:y,onExceed:w}=n;if(g&&m.length+p.length>g){w(p,m);return}v||(p=p.slice(0,1));for(const S of p){const $=S;$.uid=zC(),y($),h&&a($)}},a=async p=>{if(l.value.value="",!n.beforeUpload)return i(p);let h;try{h=await n.beforeUpload(p)}catch{h=!1}if(h===!1){n.onRemove(p);return}let g=p;if(h instanceof Blob){h instanceof File?g=h:g=new File([h],p.name,{type:p.type});for(const m of Object.keys(p))g[m]=p[m]}i(p)},i=p=>{const{headers:h,data:g,method:m,withCredentials:v,name:y,action:w,onProgress:S,onSuccess:$,onError:k,httpRequest:T}=n,{uid:O}=p,L={headers:h||{},withCredentials:v,file:p,data:g,method:m,filename:y,action:w,onProgress:V=>{S(V,p)},onSuccess:V=>{$(V,p),delete s.value[O]},onError:V=>{k(V,p),delete s.value[O]}},B=T(L);s.value[O]=B,B instanceof Promise&&B.then(L.onSuccess,L.onError)},u=p=>{const h=p.target.files;!h||r(Array.from(h))},c=()=>{n.disabled||(l.value.value="",l.value.click())},d=()=>{c()};return t({abort:p=>{xI(s.value).filter(p?([g])=>String(p.uid)===g:()=>!0).forEach(([g,m])=>{m instanceof XMLHttpRequest&&m.abort(),delete s.value[g]})},upload:a}),(p,h)=>(C(),M("div",{class:_([b(o).b(),b(o).m(p.listType)]),tabindex:"0",onClick:c,onKeydown:lt(Ke(d,["self"]),["enter","space"])},[p.drag?(C(),x(uZ,{key:0,disabled:p.disabled,onFile:r},{default:j(()=>[ie(p.$slots,"default")]),_:3},8,["disabled"])):ie(p.$slots,"default",{key:1}),D("input",{ref_key:"inputRef",ref:l,class:_(b(o).e("input")),name:p.name,multiple:p.multiple,accept:p.accept,type:"file",onChange:u},null,42,fZ)],42,dZ))}}));var Vg=ge(hZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue"]]);const Bc="ElUpload",mZ=e=>{var t;(t=e.url)!=null&&t.startsWith("blob:")&&URL.revokeObjectURL(e.url)},vZ=(e,t)=>{const n=A([]),o=f=>n.value.find(p=>p.uid===f.uid);function s(f){var p;(p=t.value)==null||p.abort(f)}function l(f=["ready","uploading","success","fail"]){n.value=n.value.filter(p=>!f.includes(p.status))}const r=(f,p)=>{const h=o(p);!h||(h.status="fail",n.value.splice(n.value.indexOf(h),1),e.onError(f,h,n.value),e.onChange(h,n.value))},a=(f,p)=>{const h=o(p);!h||(e.onProgress(f,h,n.value),h.status="uploading",h.percentage=Math.round(f.percent))},i=(f,p)=>{const h=o(p);!h||(h.status="success",h.response=f,e.onSuccess(f,h,n.value),e.onChange(h,n.value))},u=f=>{const p={name:f.name,percentage:0,status:"ready",size:f.size,raw:f,uid:f.uid};if(e.listType==="picture-card"||e.listType==="picture")try{p.url=URL.createObjectURL(f)}catch(h){h.message,e.onError(h,p,n.value)}n.value.push(p),e.onChange(p,n.value)},c=async(f,p)=>{p&&Ma({scope:Bc,from:"handleRemove second argument",version:"2.2",replacement:"first argument `file`",ref:"https://element-plus.org/en-US/component/upload.html#methods"},!0);const h=p||f,g=h instanceof File?o(h):h;g||Kt(Bc,"file to be removed not found");const m=v=>{s(v);const y=n.value;y.splice(y.indexOf(v),1),e.onRemove(v,y),mZ(v)};e.beforeRemove?await e.beforeRemove(g,n.value)!==!1&&m(g):m(g)};function d(){n.value.filter(({status:f})=>f==="ready").forEach(({raw:f})=>{var p;return f&&((p=t.value)==null?void 0:p.upload(f))})}return pe(()=>e.listType,f=>{f!=="picture-card"&&f!=="picture"||(n.value=n.value.map(p=>{const{raw:h,url:g}=p;if(!g&&h)try{p.url=URL.createObjectURL(h)}catch(m){e.onError(m,p,n.value)}return p}))}),pe(()=>e.fileList,f=>{for(const p of f)p.uid||(p.uid=zC()),p.status||(p.status="success");n.value=f},{immediate:!0,deep:!0}),{abort:s,clearFiles:l,handleError:r,handleProgress:a,handleStart:u,handleSuccess:i,handleRemove:c,submit:d,uploadFiles:n}},gZ={name:"ElUpload"},bZ=te(Te(ne({},gZ),{props:GJ,setup(e,{expose:t}){const n=e,o=_a(),s=hl(),l=jt(),{abort:r,submit:a,clearFiles:i,uploadFiles:u,handleStart:c,handleError:d,handleRemove:f,handleSuccess:p,handleProgress:h}=vZ(n,l),g=E(()=>n.listType==="picture-card"),m=E(()=>Te(ne({},n),{onStart:c,onProgress:h,onSuccess:p,onError:d,onRemove:f}));return _t(()=>{u.value.forEach(({url:v})=>{v!=null&&v.startsWith("blob:")&&URL.revokeObjectURL(v)})}),st(t1,{accept:Yt(n,"accept")}),t({abort:r,submit:a,clearFiles:i,handleStart:c,handleRemove:f}),(v,y)=>(C(),M("div",null,[b(g)&&v.showFileList?(C(),x(Bg,{key:0,disabled:b(s),"list-type":v.listType,files:b(u),"handle-preview":v.onPreview,onRemove:b(f)},fs({append:j(()=>[v.listType==="picture-card"?(C(),x(Vg,Et({key:0,ref_key:"uploadRef",ref:l},b(m)),{default:j(()=>[b(o).trigger?ie(v.$slots,"trigger",{key:0}):G("v-if",!0),!b(o).trigger&&b(o).default?ie(v.$slots,"default",{key:1}):G("v-if",!0)]),_:3},16)):G("v-if",!0)]),_:2},[v.$slots.file?{name:"default",fn:j(({file:w})=>[ie(v.$slots,"file",{file:w})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):G("v-if",!0),v.listType!=="picture-card"?(C(),x(Vg,Et({key:1,ref_key:"uploadRef",ref:l},b(m)),{default:j(()=>[b(o).trigger?ie(v.$slots,"trigger",{key:0}):G("v-if",!0),!b(o).trigger&&b(o).default?ie(v.$slots,"default",{key:1}):G("v-if",!0)]),_:3},16)):G("v-if",!0),v.$slots.trigger?ie(v.$slots,"default",{key:2}):G("v-if",!0),ie(v.$slots,"tip"),!b(g)&&v.showFileList?(C(),x(Bg,{key:3,disabled:b(s),"list-type":v.listType,files:b(u),"handle-preview":v.onPreview,onRemove:b(f)},fs({_:2},[v.$slots.file?{name:"default",fn:j(({file:w})=>[ie(v.$slots,"file",{file:w})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):G("v-if",!0)]))}}));var yZ=ge(bZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue"]]);const wZ=ot(yZ);var CZ=[v6,T6,YR,QR,lB,A1,bB,yB,Kn,D1,AV,DV,YV,UV,iF,q5,hF,ao,f5,sw,gF,IF,DF,EF,rH,uH,CH,$H,kH,SH,EH,o9,c9,d9,k9,A9,V9,RK,BK,VK,$7,fW,pW,je,TW,Yw,Zn,Uw,FW,rj,aj,ij,hj,pY,bY,EY,_1,eC,cw,N5,A5,WY,GY,ZY,Uo,ll,eu,Wj,WU,ZU,QU,vq,kq,Nq,Mq,Kq,qG,GG,iX,uX,ju,pV,mX,wX,CX,mn,WX,oJ,gJ,kJ,KJ,wZ];const eo="ElInfiniteScroll",$Z=50,kZ=200,SZ=0,EZ={delay:{type:Number,default:kZ},distance:{type:Number,default:SZ},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Fp=(e,t)=>Object.entries(EZ).reduce((n,[o,s])=>{var l,r;const{type:a,default:i}=s,u=e.getAttribute(`infinite-scroll-${o}`);let c=(r=(l=t[u])!=null?l:u)!=null?r:i;return c=c==="false"?!1:c,c=a(c),n[o]=Number.isNaN(c)?i:c,n},{}),WC=e=>{const{observer:t}=e[eo];t&&(t.disconnect(),delete e[eo].observer)},_Z=(e,t)=>{const{container:n,containerEl:o,instance:s,observer:l,lastScrollTop:r}=e[eo],{disabled:a,distance:i}=Fp(e,s),{clientHeight:u,scrollHeight:c,scrollTop:d}=o,f=d-r;if(e[eo].lastScrollTop=d,l||a||f<0)return;let p=!1;if(n===e)p=c-(u+d)<=i;else{const{clientTop:h,scrollHeight:g}=e,m=XI(e,o);p=d+u>=m+h+g-i}p&&t.call(s)};function Vc(e,t){const{containerEl:n,instance:o}=e[eo],{disabled:s}=Fp(e,o);s||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(o):WC(e))}const TZ={async mounted(e,t){const{instance:n,value:o}=t;et(o)||Kt(eo,"'v-infinite-scroll' binding value must be a function"),await ze();const{delay:s,immediate:l}=Fp(e,n),r=tp(e,!0),a=r===window?document.documentElement:r,i=qs(_Z.bind(null,e,o),s);if(!!r){if(e[eo]={instance:n,container:r,containerEl:a,delay:s,cb:o,onScroll:i,lastScrollTop:a.scrollTop},l){const u=new MutationObserver(qs(Vc.bind(null,e,o),$Z));e[eo].observer=u,u.observe(e,{childList:!0,subtree:!0}),Vc(e,o)}r.addEventListener("scroll",i)}},unmounted(e){const{container:t,onScroll:n}=e[eo];t==null||t.removeEventListener("scroll",n),WC(e)},async updated(e){e[eo]||await ze();const{containerEl:t,cb:n,observer:o}=e[eo];t.clientHeight&&o&&Vc(e,n)}},Gd=TZ;Gd.install=e=>{e.directive("InfiniteScroll",Gd)};const AZ=Gd;function NZ(e){let t;const n=A(!1),o=yt(Te(ne({},e),{originalPosition:"",originalOverflow:"",visible:!1}));function s(d){o.text=d}function l(){const d=o.parent;if(!d.vLoadingAddClassList){let f=d.getAttribute("loading-number");f=Number.parseInt(f)-1,f?d.setAttribute("loading-number",f.toString()):(fn(d,"el-loading-parent--relative"),d.removeAttribute("loading-number")),fn(d,"el-loading-parent--hidden")}r()}function r(){var d,f;(f=(d=c.$el)==null?void 0:d.parentNode)==null||f.removeChild(c.$el)}function a(){var d;if(e.beforeClose&&!e.beforeClose())return;const f=o.parent;f.vLoadingAddClassList=void 0,n.value=!0,clearTimeout(t),t=window.setTimeout(()=>{n.value&&(n.value=!1,l())},400),o.visible=!1,(d=e.closed)==null||d.call(e)}function i(){!n.value||(n.value=!1,l())}const c=Qy({name:"ElLoading",setup(){return()=>{const d=o.spinner||o.svg,f=Pe("svg",ne({class:"circular",viewBox:o.svgViewBox?o.svgViewBox:"25 25 50 50"},d?{innerHTML:d}:{}),[Pe("circle",{class:"path",cx:"50",cy:"50",r:"20",fill:"none"})]),p=o.text?Pe("p",{class:"el-loading-text"},[o.text]):void 0;return Pe(zt,{name:"el-loading-fade",onAfterLeave:i},{default:j(()=>[Ge(Y("div",{style:{backgroundColor:o.background||""},class:["el-loading-mask",o.customClass,o.fullscreen?"is-fullscreen":""]},[Pe("div",{class:"el-loading-spinner"},[f,p])]),[[pt,o.visible]])])})}}}).mount(document.createElement("div"));return Te(ne({},Ut(o)),{setText:s,remvoeElLoadingChild:r,close:a,handleAfterLeave:i,vm:c,get $el(){return c.$el}})}let _r;const Xd=function(e={}){if(!ct)return;const t=MZ(e);t.fullscreen&&_r&&(_r.remvoeElLoadingChild(),_r.close());const n=NZ(Te(ne({},t),{closed:()=>{var s;(s=t.closed)==null||s.call(t),t.fullscreen&&(_r=void 0)}}));OZ(t,t.parent,n),Fg(t,t.parent,n),t.parent.vLoadingAddClassList=()=>Fg(t,t.parent,n);let o=t.parent.getAttribute("loading-number");return o?o=`${Number.parseInt(o)+1}`:o="1",t.parent.setAttribute("loading-number",o),t.parent.appendChild(n.$el),ze(()=>n.visible.value=t.visible),t.fullscreen&&(_r=n),n},MZ=e=>{var t,n,o,s;let l;return Qe(e.target)?l=(t=document.querySelector(e.target))!=null?t:document.body:l=e.target||document.body,{parent:l===document.body||e.body?document.body:l,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:l===document.body&&((n=e.fullscreen)!=null?n:!0),lock:(o=e.lock)!=null?o:!1,customClass:e.customClass||"",visible:(s=e.visible)!=null?s:!0,target:l}},OZ=async(e,t,n)=>{const{nextZIndex:o}=jo(),s={};if(e.fullscreen)n.originalPosition.value=bo(document.body,"position"),n.originalOverflow.value=bo(document.body,"overflow"),s.zIndex=o();else if(e.parent===document.body){n.originalPosition.value=bo(document.body,"position"),await ze();for(const l of["top","left"]){const r=l==="top"?"scrollTop":"scrollLeft";s[l]=`${e.target.getBoundingClientRect()[l]+document.body[r]+document.documentElement[r]-Number.parseInt(bo(document.body,`margin-${l}`),10)}px`}for(const l of["height","width"])s[l]=`${e.target.getBoundingClientRect()[l]}px`}else n.originalPosition.value=bo(t,"position");for(const[l,r]of Object.entries(s))n.$el.style[l]=r},Fg=(e,t,n)=>{n.originalPosition.value!=="absolute"&&n.originalPosition.value!=="fixed"?wo(t,"el-loading-parent--relative"):fn(t,"el-loading-parent--relative"),e.fullscreen&&e.lock?wo(t,"el-loading-parent--hidden"):fn(t,"el-loading-parent--hidden")},Jd=Symbol("ElLoading"),Hg=(e,t)=>{var n,o,s,l;const r=t.instance,a=f=>dt(t.value)?t.value[f]:void 0,i=f=>{const p=Qe(f)&&(r==null?void 0:r[f])||f;return p&&A(p)},u=f=>i(a(f)||e.getAttribute(`element-loading-${vs(f)}`)),c=(n=a("fullscreen"))!=null?n:t.modifiers.fullscreen,d={text:u("text"),svg:u("svg"),svgViewBox:u("svgViewBox"),spinner:u("spinner"),background:u("background"),customClass:u("customClass"),fullscreen:c,target:(o=a("target"))!=null?o:c?void 0:e,body:(s=a("body"))!=null?s:t.modifiers.body,lock:(l=a("lock"))!=null?l:t.modifiers.lock};e[Jd]={options:d,instance:Xd(d)}},IZ=(e,t)=>{for(const n of Object.keys(t))Lt(t[n])&&(t[n].value=e[n])},zg={mounted(e,t){t.value&&Hg(e,t)},updated(e,t){const n=e[Jd];t.oldValue!==t.value&&(t.value&&!t.oldValue?Hg(e,t):t.value&&t.oldValue?dt(t.value)&&IZ(t.value,n.options):n==null||n.instance.close())},unmounted(e){var t;(t=e[Jd])==null||t.instance.close()}},DZ={install(e){e.directive("loading",zg),e.config.globalProperties.$loading=Xd},directive:zg,service:Xd},jC=["success","info","warning","error"],PZ=Ve({customClass:{type:String,default:""},center:{type:Boolean,default:!1},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:3e3},icon:{type:nn,default:""},id:{type:String,default:""},message:{type:$e([String,Object,Function]),default:""},onClose:{type:$e(Function),required:!1},showClose:{type:Boolean,default:!1},type:{type:String,values:jC,default:"info"},offset:{type:Number,default:20},zIndex:{type:Number,default:0},grouping:{type:Boolean,default:!1},repeatNum:{type:Number,default:1}}),LZ={destroy:()=>!0},RZ=te({name:"ElMessage",components:ne({ElBadge:A1,ElIcon:je},Ru),props:PZ,emits:LZ,setup(e){const t=we("message"),n=A(!1),o=A(e.type?e.type==="error"?"danger":e.type:"info");let s;const l=E(()=>{const f=e.type;return{[t.bm("icon",f)]:f&&Ho[f]}}),r=E(()=>e.icon||Ho[e.type]||""),a=E(()=>({top:`${e.offset}px`,zIndex:e.zIndex}));function i(){e.duration>0&&({stop:s}=ol(()=>{n.value&&c()},e.duration))}function u(){s==null||s()}function c(){n.value=!1}function d({code:f}){f===Ie.esc?n.value&&c():i()}return xe(()=>{i(),n.value=!0}),pe(()=>e.repeatNum,()=>{u(),i()}),Ht(document,"keydown",d),{ns:t,typeClass:l,iconComponent:r,customStyle:a,visible:n,badgeType:o,close:c,clearTimer:u,startTimer:i}}}),BZ=["id"],VZ=["innerHTML"];function FZ(e,t,n,o,s,l){const r=le("el-badge"),a=le("el-icon"),i=le("close");return C(),x(zt,{name:e.ns.b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t[2]||(t[2]=u=>e.$emit("destroy"))},{default:j(()=>[Ge(D("div",{id:e.id,class:_([e.ns.b(),{[e.ns.m(e.type)]:e.type&&!e.icon},e.ns.is("center",e.center),e.ns.is("closable",e.showClose),e.customClass]),style:De(e.customStyle),role:"alert",onMouseenter:t[0]||(t[0]=(...u)=>e.clearTimer&&e.clearTimer(...u)),onMouseleave:t[1]||(t[1]=(...u)=>e.startTimer&&e.startTimer(...u))},[e.repeatNum>1?(C(),x(r,{key:0,value:e.repeatNum,type:e.badgeType,class:_(e.ns.e("badge"))},null,8,["value","type","class"])):G("v-if",!0),e.iconComponent?(C(),x(a,{key:1,class:_([e.ns.e("icon"),e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M(Le,{key:1},[G(" Caution here, message could've been compromised, never use user's input as message "),D("p",{class:_(e.ns.e("content")),innerHTML:e.message},null,10,VZ)],2112)):(C(),M("p",{key:0,class:_(e.ns.e("content"))},he(e.message),3))]),e.showClose?(C(),x(a,{key:2,class:_(e.ns.e("closeBtn")),onClick:Ke(e.close,["stop"])},{default:j(()=>[Y(i)]),_:1},8,["class","onClick"])):G("v-if",!0)],46,BZ),[[pt,e.visible]])]),_:3},8,["name","onBeforeLeave"])}var HZ=ge(RZ,[["render",FZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/message/src/message.vue"]]);const bn=[];let zZ=1;const tr=function(e={},t){if(!ct)return{close:()=>{}};if(ht(Id.max)&&bn.length>=Id.max)return{close:()=>{}};if(!Ft(e)&&dt(e)&&e.grouping&&!Ft(e.message)&&bn.length){const d=bn.find(f=>{var p,h,g;return`${(h=(p=f.vm.props)==null?void 0:p.message)!=null?h:""}`==`${(g=e.message)!=null?g:""}`});if(d)return d.vm.component.props.repeatNum+=1,d.vm.component.props.type=(e==null?void 0:e.type)||"info",{close:()=>c.component.proxy.visible=!1}}(Qe(e)||Ft(e))&&(e={message:e});let n=e.offset||20;bn.forEach(({vm:d})=>{var f;n+=(((f=d.el)==null?void 0:f.offsetHeight)||0)+16}),n+=16;const{nextZIndex:o}=jo(),s=`message_${zZ++}`,l=e.onClose,r=Te(ne({zIndex:o()},e),{offset:n,id:s,onClose:()=>{KZ(s,l)}});let a=document.body;sl(e.appendTo)?a=e.appendTo:Qe(e.appendTo)&&(a=document.querySelector(e.appendTo)),sl(a)||(a=document.body);const i=document.createElement("div");i.className=`container_${s}`;const u=r.message,c=Y(HZ,r,et(u)?{default:u}:Ft(u)?{default:()=>u}:null);return c.appContext=t||tr._context,c.props.onDestroy=()=>{Gl(null,i)},Gl(c,i),bn.push({vm:c}),a.appendChild(i.firstElementChild),{close:()=>c.component.proxy.visible=!1}};jC.forEach(e=>{tr[e]=(t={},n)=>((Qe(t)||Ft(t))&&(t={message:t}),tr(Te(ne({},t),{type:e}),n))});function KZ(e,t){const n=bn.findIndex(({vm:r})=>e===r.component.props.id);if(n===-1)return;const{vm:o}=bn[n];if(!o)return;t==null||t(o);const s=o.el.offsetHeight;bn.splice(n,1);const l=bn.length;if(!(l<1))for(let r=n;r=0;t--){const n=bn[t].vm.component;(e=n==null?void 0:n.proxy)==null||e.close()}}tr.closeAll=WZ;tr._context=null;const jZ=F0(tr,"$message"),YZ=te({name:"ElMessageBox",directives:{TrapFocus:H1},components:ne({ElButton:Kn,ElInput:Zn,ElOverlay:wp,ElIcon:je},Ru),inheritAttrs:!1,props:{buttonSize:{type:String,validator:On},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{t:n}=kt(),o=A(!1),{nextZIndex:s}=jo(),l=yt({beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:null,inputValidator:null,inputErrorMessage:"",message:null,modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:s()}),r=E(()=>{const O=l.type;return O&&Ho[O]?`el-message-box-icon--${O}`:""}),a=Wt(E(()=>e.buttonSize),{prop:!0,form:!0,formItem:!0}),i=E(()=>l.icon||Ho[l.type]||""),u=E(()=>!!l.message),c=A(),d=A(),f=A(),p=A(),h=E(()=>l.confirmButtonClass);pe(()=>l.inputValue,async O=>{await ze(),e.boxType==="prompt"&&O!==null&&$()},{immediate:!0}),pe(()=>o.value,O=>{O&&((e.boxType==="alert"||e.boxType==="confirm")&&ze().then(()=>{var L,B,V;(V=(B=(L=p.value)==null?void 0:L.$el)==null?void 0:B.focus)==null||V.call(B)}),l.zIndex=s()),e.boxType==="prompt"&&(O?ze().then(()=>{f.value&&f.value.$el&&k().focus()}):(l.editorErrorMessage="",l.validateError=!1))});const g=E(()=>e.draggable);r1(c,d,g),xe(async()=>{await ze(),e.closeOnHashChange&&Tt(window,"hashchange",m)}),_t(()=>{e.closeOnHashChange&&Vt(window,"hashchange",m)});function m(){!o.value||(o.value=!1,ze(()=>{l.action&&t("action",l.action)}))}const v=()=>{e.closeOnClickModal&&S(l.distinguishCancelAndClose?"close":"cancel")},y=ip(v),w=O=>{if(l.inputType!=="textarea")return O.preventDefault(),S("confirm")},S=O=>{var L;e.boxType==="prompt"&&O==="confirm"&&!$()||(l.action=O,l.beforeClose?(L=l.beforeClose)==null||L.call(l,O,l,m):m())},$=()=>{if(e.boxType==="prompt"){const O=l.inputPattern;if(O&&!O.test(l.inputValue||""))return l.editorErrorMessage=l.inputErrorMessage||n("el.messagebox.error"),l.validateError=!0,!1;const L=l.inputValidator;if(typeof L=="function"){const B=L(l.inputValue);if(B===!1)return l.editorErrorMessage=l.inputErrorMessage||n("el.messagebox.error"),l.validateError=!0,!1;if(typeof B=="string")return l.editorErrorMessage=B,l.validateError=!0,!1}}return l.editorErrorMessage="",l.validateError=!1,!0},k=()=>{const O=f.value.$refs;return O.input||O.textarea},T=()=>{S("close")};return e.closeOnPressEscape?i1({handleClose:T},o):D8(o,"keydown",O=>O.code===Ie.esc),e.lockScroll&&a1(o),u1(o),Te(ne({},Ut(l)),{overlayEvent:y,visible:o,hasMessage:u,typeClass:r,btnSize:a,iconComponent:i,confirmButtonClasses:h,rootRef:c,headerRef:d,inputRef:f,confirmRef:p,doClose:m,handleClose:T,handleWrapperClick:v,handleInputEnter:w,handleAction:S,t:n})}}),UZ=["aria-label"],qZ={key:0,ref:"headerRef",class:"el-message-box__header"},GZ={class:"el-message-box__title"},XZ={class:"el-message-box__content"},JZ={class:"el-message-box__container"},ZZ={key:1,class:"el-message-box__message"},QZ={key:0},xZ=["innerHTML"],eQ={class:"el-message-box__input"},tQ={class:"el-message-box__btns"};function nQ(e,t,n,o,s,l){const r=le("el-icon"),a=le("close"),i=le("el-input"),u=le("el-button"),c=le("el-overlay"),d=Mn("trap-focus");return C(),x(zt,{name:"fade-in-linear",onAfterLeave:t[11]||(t[11]=f=>e.$emit("vanish"))},{default:j(()=>[Ge(Y(c,{"z-index":e.zIndex,"overlay-class":["is-message-box",e.modalClass],mask:e.modal},{default:j(()=>[D("div",{class:"el-overlay-message-box",onClick:t[8]||(t[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:t[9]||(t[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:t[10]||(t[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[Ge((C(),M("div",{ref:"rootRef",role:"dialog","aria-label":e.title||"dialog","aria-modal":"true",class:_(["el-message-box",e.customClass,{"el-message-box--center":e.center,"is-draggable":e.draggable}]),style:De(e.customStyle),onClick:t[7]||(t[7]=Ke(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(C(),M("div",qZ,[D("div",GZ,[e.iconComponent&&e.center?(C(),x(r,{key:0,class:_(["el-message-box__status",e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),D("span",null,he(e.title),1)]),e.showClose?(C(),M("button",{key:0,type:"button",class:"el-message-box__headerbtn","aria-label":"Close",onClick:t[0]||(t[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:t[1]||(t[1]=lt(Ke(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[Y(r,{class:"el-message-box__close"},{default:j(()=>[Y(a)]),_:1})],32)):G("v-if",!0)],512)):G("v-if",!0),D("div",XZ,[D("div",JZ,[e.iconComponent&&!e.center&&e.hasMessage?(C(),x(r,{key:0,class:_(["el-message-box__status",e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),e.hasMessage?(C(),M("div",ZZ,[ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M("p",{key:1,innerHTML:e.message},null,8,xZ)):(C(),M("p",QZ,he(e.message),1))])])):G("v-if",!0)]),Ge(D("div",eQ,[Y(i,{ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t[2]||(t[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,class:_({invalid:e.validateError}),onKeydown:lt(e.handleInputEnter,["enter"])},null,8,["modelValue","type","placeholder","class","onKeydown"]),D("div",{class:"el-message-box__errormsg",style:De({visibility:e.editorErrorMessage?"visible":"hidden"})},he(e.editorErrorMessage),5)],512),[[pt,e.showInput]])]),D("div",tQ,[e.showCancelButton?(C(),x(u,{key:0,loading:e.cancelButtonLoading,class:_([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t[3]||(t[3]=f=>e.handleAction("cancel")),onKeydown:t[4]||(t[4]=lt(Ke(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:j(()=>[it(he(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","class","round","size"])):G("v-if",!0),Ge(Y(u,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,class:_([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t[5]||(t[5]=f=>e.handleAction("confirm")),onKeydown:t[6]||(t[6]=lt(Ke(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:j(()=>[it(he(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","class","round","disabled","size"]),[[pt,e.showConfirmButton]])])],14,UZ)),[[d]])],32)]),_:3},8,["z-index","overlay-class","mask"]),[[pt,e.visible]])]),_:3})}var oQ=ge(YZ,[["render",nQ],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const ha=new Map,sQ=(e,t,n=null)=>{const o=Pe(oQ,e);return o.appContext=n,Gl(o,t),document.body.appendChild(t.firstElementChild),o.component},lQ=()=>document.createElement("div"),rQ=(e,t)=>{const n=lQ();e.onVanish=()=>{Gl(null,n),ha.delete(s)},e.onAction=l=>{const r=ha.get(s);let a;e.showInput?a={value:s.inputValue,action:l}:a=l,e.callback?e.callback(a,o.proxy):l==="cancel"||l==="close"?e.distinguishCancelAndClose&&l!=="cancel"?r.reject("close"):r.reject("cancel"):r.resolve(a)};const o=sQ(e,n,t),s=o.proxy;for(const l in e)at(e,l)&&!at(s.$props,l)&&(s[l]=e[l]);return pe(()=>s.message,(l,r)=>{Ft(l)?o.slots.default=()=>[l]:Ft(r)&&!Ft(l)&&delete o.slots.default},{immediate:!0}),s.visible=!0,s};function hr(e,t=null){if(!ct)return Promise.reject();let n;return Qe(e)||Ft(e)?e={message:e}:n=e.callback,new Promise((o,s)=>{const l=rQ(e,t!=null?t:hr._context);ha.set(l,{options:e,callback:n,resolve:o,reject:s})})}const aQ=["alert","confirm","prompt"],iQ={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};aQ.forEach(e=>{hr[e]=uQ(e)});function uQ(e){return(t,n,o,s)=>{let l;return dt(n)?(o=n,l=""):Cn(n)?l="":l=n,hr(Object.assign(ne({title:l,message:t,type:""},iQ[e]),o,{boxType:e}),s)}}hr.close=()=>{ha.forEach((e,t)=>{t.doClose()}),ha.clear()};hr._context=null;const es=hr;es.install=e=>{es._context=e._context,e.config.globalProperties.$msgbox=es,e.config.globalProperties.$messageBox=es,e.config.globalProperties.$alert=es.alert,e.config.globalProperties.$confirm=es.confirm,e.config.globalProperties.$prompt=es.prompt};const cQ=es,YC=["success","info","warning","error"],dQ=Ve({customClass:{type:String,default:""},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:$e([String,Object]),default:""},id:{type:String,default:""},message:{type:$e([String,Object]),default:""},offset:{type:Number,default:0},onClick:{type:$e(Function),default:()=>{}},onClose:{type:$e(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...YC,""],default:""},zIndex:{type:Number,default:0}}),fQ={destroy:()=>!0},pQ=te({name:"ElNotification",components:ne({ElIcon:je},Ru),props:dQ,emits:fQ,setup(e){const t=we("notification"),n=A(!1);let o;const s=E(()=>{const p=e.type;return p&&Ho[e.type]?t.m(p):""}),l=E(()=>Ho[e.type]||e.icon||""),r=E(()=>e.position.endsWith("right")?"right":"left"),a=E(()=>e.position.startsWith("top")?"top":"bottom"),i=E(()=>({[a.value]:`${e.offset}px`,zIndex:e.zIndex}));function u(){e.duration>0&&({stop:o}=ol(()=>{n.value&&d()},e.duration))}function c(){o==null||o()}function d(){n.value=!1}function f({code:p}){p===Ie.delete||p===Ie.backspace?c():p===Ie.esc?n.value&&d():u()}return xe(()=>{u(),n.value=!0}),Ht(document,"keydown",f),{ns:t,horizontalClass:r,typeClass:s,iconComponent:l,positionStyle:i,visible:n,close:d,clearTimer:c,startTimer:u}}}),hQ=["id"],mQ=["textContent"],vQ={key:0},gQ=["innerHTML"];function bQ(e,t,n,o,s,l){const r=le("el-icon"),a=le("close");return C(),x(zt,{name:e.ns.b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t[3]||(t[3]=i=>e.$emit("destroy"))},{default:j(()=>[Ge(D("div",{id:e.id,class:_([e.ns.b(),e.customClass,e.horizontalClass]),style:De(e.positionStyle),role:"alert",onMouseenter:t[0]||(t[0]=(...i)=>e.clearTimer&&e.clearTimer(...i)),onMouseleave:t[1]||(t[1]=(...i)=>e.startTimer&&e.startTimer(...i)),onClick:t[2]||(t[2]=(...i)=>e.onClick&&e.onClick(...i))},[e.iconComponent?(C(),x(r,{key:0,class:_([e.ns.e("icon"),e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),D("div",{class:_(e.ns.e("group"))},[D("h2",{class:_(e.ns.e("title")),textContent:he(e.title)},null,10,mQ),Ge(D("div",{class:_(e.ns.e("content")),style:De(e.title?void 0:{margin:0})},[ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M(Le,{key:1},[G(" Caution here, message could've been compromized, nerver use user's input as message "),G(" eslint-disable-next-line "),D("p",{innerHTML:e.message},null,8,gQ)],2112)):(C(),M("p",vQ,he(e.message),1))])],6),[[pt,e.message]]),e.showClose?(C(),x(r,{key:0,class:_(e.ns.e("closeBtn")),onClick:Ke(e.close,["stop"])},{default:j(()=>[Y(a)]),_:1},8,["class","onClick"])):G("v-if",!0)],2)],46,hQ),[[pt,e.visible]])]),_:3},8,["name","onBeforeLeave"])}var yQ=ge(pQ,[["render",bQ],["__file","/home/runner/work/element-plus/element-plus/packages/components/notification/src/notification.vue"]]);const ru={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},Zd=16;let wQ=1;const nr=function(e={},t=null){if(!ct)return{close:()=>{}};(typeof e=="string"||Ft(e))&&(e={message:e});const n=e.position||"top-right";let o=e.offset||0;ru[n].forEach(({vm:d})=>{var f;o+=(((f=d.el)==null?void 0:f.offsetHeight)||0)+Zd}),o+=Zd;const{nextZIndex:s}=jo(),l=`notification_${wQ++}`,r=e.onClose,a=Te(ne({zIndex:s(),offset:o},e),{id:l,onClose:()=>{CQ(l,n,r)}});let i=document.body;sl(e.appendTo)?i=e.appendTo:Qe(e.appendTo)&&(i=document.querySelector(e.appendTo)),sl(i)||(i=document.body);const u=document.createElement("div"),c=Y(yQ,a,Ft(a.message)?{default:()=>a.message}:null);return c.appContext=t!=null?t:nr._context,c.props.onDestroy=()=>{Gl(null,u)},Gl(c,u),ru[n].push({vm:c}),i.appendChild(u.firstElementChild),{close:()=>{c.component.proxy.visible=!1}}};YC.forEach(e=>{nr[e]=(t={})=>((typeof t=="string"||Ft(t))&&(t={message:t}),nr(Te(ne({},t),{type:e})))});function CQ(e,t,n){const o=ru[t],s=o.findIndex(({vm:u})=>{var c;return((c=u.component)==null?void 0:c.props.id)===e});if(s===-1)return;const{vm:l}=o[s];if(!l)return;n==null||n(l);const r=l.el.offsetHeight,a=t.split("-")[0];o.splice(s,1);const i=o.length;if(!(i<1))for(let u=s;u{t.component.proxy.visible=!1})}nr.closeAll=$Q;nr._context=null;const kQ=F0(nr,"$notify");var SQ=[AZ,DZ,jZ,cQ,kQ,_Y],EQ=c6([...CZ,...SQ]),UC={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t={name:"zh-tw",el:{colorpicker:{confirm:"\u78BA\u8A8D",clear:"\u6E05\u7A7A"},datepicker:{now:"\u73FE\u5728",today:"\u4ECA\u5929",cancel:"\u53D6\u6D88",clear:"\u6E05\u7A7A",confirm:"\u78BA\u8A8D",selectDate:"\u9078\u64C7\u65E5\u671F",selectTime:"\u9078\u64C7\u6642\u9593",startDate:"\u958B\u59CB\u65E5\u671F",startTime:"\u958B\u59CB\u6642\u9593",endDate:"\u7D50\u675F\u65E5\u671F",endTime:"\u7D50\u675F\u6642\u9593",prevYear:"\u524D\u4E00\u5E74",nextYear:"\u5F8C\u4E00\u5E74",prevMonth:"\u4E0A\u500B\u6708",nextMonth:"\u4E0B\u500B\u6708",year:"\u5E74",month1:"1 \u6708",month2:"2 \u6708",month3:"3 \u6708",month4:"4 \u6708",month5:"5 \u6708",month6:"6 \u6708",month7:"7 \u6708",month8:"8 \u6708",month9:"9 \u6708",month10:"10 \u6708",month11:"11 \u6708",month12:"12 \u6708",weeks:{sun:"\u65E5",mon:"\u4E00",tue:"\u4E8C",wed:"\u4E09",thu:"\u56DB",fri:"\u4E94",sat:"\u516D"},months:{jan:"\u4E00\u6708",feb:"\u4E8C\u6708",mar:"\u4E09\u6708",apr:"\u56DB\u6708",may:"\u4E94\u6708",jun:"\u516D\u6708",jul:"\u4E03\u6708",aug:"\u516B\u6708",sep:"\u4E5D\u6708",oct:"\u5341\u6708",nov:"\u5341\u4E00\u6708",dec:"\u5341\u4E8C\u6708"}},select:{loading:"\u52A0\u8F09\u4E2D",noMatch:"\u7121\u5339\u914D\u8CC7\u6599",noData:"\u7121\u8CC7\u6599",placeholder:"\u8ACB\u9078\u64C7"},cascader:{noMatch:"\u7121\u5339\u914D\u8CC7\u6599",loading:"\u52A0\u8F09\u4E2D",placeholder:"\u8ACB\u9078\u64C7",noData:"\u7121\u8CC7\u6599"},pagination:{goto:"\u524D\u5F80",pagesize:"\u9805/\u9801",total:"\u5171 {total} \u9805",pageClassifier:"\u9801"},messagebox:{title:"\u63D0\u793A",confirm:"\u78BA\u5B9A",cancel:"\u53D6\u6D88",error:"\u8F38\u5165\u7684\u8CC7\u6599\u4E0D\u7B26\u898F\u5B9A!"},upload:{deleteTip:"\u6309 delete \u9375\u53EF\u522A\u9664",delete:"\u522A\u9664",preview:"\u67E5\u770B\u5716\u7247",continue:"\u7E7C\u7E8C\u4E0A\u50B3"},table:{emptyText:"\u66AB\u7121\u8CC7\u6599",confirmFilter:"\u7BE9\u9078",resetFilter:"\u91CD\u7F6E",clearFilter:"\u5168\u90E8",sumText:"\u5408\u8A08"},tree:{emptyText:"\u66AB\u7121\u8CC7\u6599"},transfer:{noMatch:"\u7121\u5339\u914D\u8CC7\u6599",noData:"\u7121\u8CC7\u6599",titles:["\u5217\u8868 1","\u5217\u8868 2"],filterPlaceholder:"\u8ACB\u8F38\u5165\u641C\u7D22\u5167\u5BB9",noCheckedFormat:"\u5171 {total} \u9805",hasCheckedFormat:"\u5DF2\u9078 {checked}/{total} \u9805"},image:{error:"\u52A0\u8F09\u5931\u6557"},pageHeader:{title:"\u8FD4\u56DE"},popconfirm:{confirmButtonText:"\u78BA\u8A8D",cancelButtonText:"\u53D6\u6D88"}}};e.default=t})(UC);var _Q=KB(UC);class TQ{static Sleep(t){return new Promise(n=>setTimeout(n,t))}}class AQ{constructor(t){ys(this,"BJ_Casino");ys(this,"ID");ys(this,"_conn",null);ys(this,"_client");this._client=t,this.BJ_Casino=t.BJ_Casino,this.ID=t.ID,this.onLoad()}async onLoad(){await this.ConnectServer()}async ConnectServer(){let n=this.BJ_Casino.Config.ServerList[this.ID];if(!n)return;const o=n.name,s=n.host,l=n.port;this._client.Name.value=o,this._client.Host.value=s,this._client.Port.value=l,await this.ConnectAsync(s,+l)}async ConnectAsync(t,n){let o=this;var s="https://api.ipify.org/?format=json",l=new XMLHttpRequest;let r="";for(l.onreadystatechange=function(){l.readyState===4&&l.status>=200&&l.status<400&&(r=JSON.parse(l.responseText).ip)},l.open("GET",s,!0),l.send(),console.log("[\u4E8B\u4EF6]\u6E96\u5099\u9023\u7DDA...");r==="";)await TQ.Sleep(1);let a="",i="";t.indexOf("https://")!=-1?(a="https",t=t.replace("https://","")):(a=window.location.href.substring(0,5),t=t.replace("http://","")),console.log("[\u4E8B\u4EF6]checkHttp=",a,t,n),a!="https"?i=`ws://${t}:${n}/?ip=${r}`:i=`wss://${t}:${n}/?ip=${r}`;let c=new WebSocket(i);c.onopen=function(d){console.log(`[\u4E8B\u4EF6] [${o._client.Name.value}] \u9023\u7DDA\u72C0\u614B: true`),o._client.IsConnect.value="true"},c.onmessage=function(d){},c.onclose=function(d){},c.onerror=function(d){o._client.IsConnect.value="\u7121\u56DE\u61C9"}}}const NQ=te({props:{BJ_Casino:null,ID:null},setup(e){const t=e;let n=A(""),o=A(""),s=A(""),l=A("false");const r={ID:t.ID,BJ_Casino:t.BJ_Casino,Name:n,Host:o,Port:s,IsConnect:l};return new AQ(r),(a,i)=>{const u=le("font");return C(),M("tr",null,[D("td",null,[Y(u,{size:"5"},{default:j(()=>[D("b",null,he(b(n)),1)]),_:1})]),D("td",null,[Y(u,{size:"5"},{default:j(()=>[D("b",null,he(b(o)),1)]),_:1})]),D("td",null,[Y(u,{size:"5"},{default:j(()=>[D("b",null,he(b(s)),1)]),_:1})]),D("td",null,[Y(u,{size:"5"},{default:j(()=>[D("b",null,he(b(l)),1)]),_:1})])])}}}),MQ=[{name:"\u5167\u7248",host:"http://220.134.195.1",port:"19005"},{name:"\u8089\u4E7E 9006",host:"http://192.168.5.230",port:"9006"},{name:"\u8089\u4E7E 9007",host:"http://192.168.5.230",port:"9007"},{name:"\u8089\u4E7E 9008",host:"http://192.168.5.230",port:"9008"},{name:"\u8089\u4E7E 9009",host:"http://192.168.5.230",port:"9009"},{name:"40 9487",host:"http://192.168.5.12",port:"9487"},{name:"\u9001\u5BE9",host:"https://submit.online-bj.com",port:"9005"},{name:"\u5916\u7248",host:"https://game.online-bj.com",port:"9005"},{name:"testing1",host:"http://bj-testing1.casino.catan.com.tw",port:"9005"},{name:"testing2",host:"http://bj-testing2.casino.catan.com.tw",port:"9005"},{name:"testing3",host:"http://bj-testing3.casino.catan.com.tw",port:"9005"}];var OQ={ServerList:MQ};String.IsNullOrEmpty=function(e){return e==null||e.trim()===""};String.Format=function(e,...t){return e.replace(/{(\d+)}/g,(n,o)=>{let s=t[o];return s==null?"":""+s})};class IQ{constructor(t){ys(this,"Client");ys(this,"Config");this.Client=t,this.onLoad()}async onLoad(){this.Config=OQ}}const DQ={class:"d-flex justify-content-center"},PQ={class:"table table-striped table-info table-hover"},LQ=D("thead",null,[D("tr",null,[D("th",{align:"left"},"\u540D\u7A31"),D("th",{align:"left"},"Host"),D("th",{align:"left"},"Port"),D("th",{align:"left"},"\u72C0\u614B")])],-1),RQ=te({setup(e){const t={};let n=A("BJ_ServerState");const o=new IQ(t);return(s,l)=>(C(),M(Le,null,[D("h1",null,he(b(n)),1),D("div",DQ,[D("table",PQ,[LQ,(C(!0),M(Le,null,rt(b(o).Config.ServerList,(r,a)=>(C(),M("tbody",{key:a},[Y(NQ,{BJ_Casino:b(o),ID:a},null,8,["BJ_Casino","ID"])]))),128))])])],64))}});Qy(RQ).use(EQ,{locale:_Q}).mount("#app")});export default BQ(); + */var Yq=/["'&<>]/,Uq=qq;function qq(e){var t=""+e,n=Yq.exec(t);if(!n)return t;var o,s="",l=0,r=0;for(l=n.index;ltypeof u=="string"?It(a,u):u(a,i,e))):(t!=="$key"&&Ag(a)&&"$value"in a&&(a=a.$value),[Ag(a)?It(a,t):a])},r=function(a,i){if(o)return o(a.value,i.value);for(let u=0,c=a.key.length;ui.key[u])return 1}return 0};return e.map((a,i)=>({value:a,index:i,key:l?l(a,i):null})).sort((a,i)=>{let u=r(a,i);return u||(u=a.index-i.index),u*+n}).map(a=>a.value)},bC=function(e,t){let n=null;return e.columns.forEach(o=>{o.id===t&&(n=o)}),n},Xq=function(e,t){let n=null;for(let o=0;o{if(!e)throw new Error("Row is required when get row identity");if(typeof t=="string"){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let o=e;for(const s of n)o=o[s];return`${o}`}else if(typeof t=="function")return t.call(null,e)},Hs=function(e,t){const n={};return(e||[]).forEach((o,s)=>{n[Qt(o,t)]={row:o,index:s}}),n};function Zq(e,t){const n={};let o;for(o in e)n[o]=e[o];for(o in t)if(rt(t,o)){const s=t[o];typeof s!="undefined"&&(n[o]=s)}return n}function Ap(e){return e===""||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function yC(e){return e===""||e!==void 0&&(e=Ap(e),Number.isNaN(e)&&(e=80)),e}function Kd(e){return typeof e=="number"?e:typeof e=="string"?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function Jq(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...o)=>t(n(...o)))}function Ti(e,t,n){let o=!1;const s=e.indexOf(t),l=s!==-1,r=()=>{e.push(t),o=!0},a=()=>{e.splice(s,1),o=!0};return typeof n=="boolean"?n&&!l?r():!n&&l&&a():l?a():r(),o}function Qq(e,t,n="children",o="hasChildren"){const s=r=>!(Array.isArray(r)&&r.length);function l(r,a,i){t(r,a,i),a.forEach(u=>{if(u[o]){t(u,null,i+1);return}const c=u[n];s(c)||l(u,c,i+1)})}e.forEach(r=>{if(r[o]){t(r,null,0);return}const a=r[n];s(a)||l(r,a,0)})}let ou;function xq(e,t,n,o){const{nextZIndex:s}=jo();function l(){const d=o==="light",f=document.createElement("div");return f.className=`el-popper ${d?"is-light":"is-dark"}`,t=Uq(t),f.innerHTML=t,f.style.zIndex=String(s()),document.body.appendChild(f),f}function r(){const d=document.createElement("div");return d.className="el-popper__arrow",d}function a(){i&&i.update()}ou=function d(){try{i&&i.destroy(),u&&document.body.removeChild(u),Bt(e,"mouseenter",a),Bt(e,"mouseleave",d)}catch{}};let i=null;const u=l(),c=r();return u.appendChild(c),i=ma(e,u,ne({modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"arrow",options:{element:c,padding:10}}]},n)),Tt(e,"mouseenter",a),Tt(e,"mouseleave",ou),i}const wC=(e,t,n,o)=>{let s=0,l=e;if(o){if(o[e].colSpan>1)return{};for(let i=0;i=a.value.length-n.states.rightFixedLeafColumnsLength.value&&(r="right");break;default:l=a.value.length-n.states.rightFixedLeafColumnsLength.value&&(r="right")}return r?{direction:r,start:s,after:l}:{}},Np=(e,t,n,o,s)=>{const l=[],{direction:r,start:a}=wC(t,n,o,s);if(r){const i=r==="left";l.push(`${e}-fixed-column--${r}`),i&&a===o.states.fixedLeafColumnsLength.value-1?l.push("is-last-column"):!i&&a===o.states.columns.value.length-o.states.rightFixedLeafColumnsLength.value&&l.push("is-first-column")}return l};function Mg(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Mp=(e,t,n,o)=>{const{direction:s,start:l=0}=wC(e,t,n,o);if(!s)return;const r={},a=s==="left",i=n.states.columns.value;return a?r.left=i.slice(0,e).reduce(Mg,0):r.right=i.slice(l+1).reverse().reduce(Mg,0),r},xl=(e,t)=>{!e||Number.isNaN(e[t])||(e[t]=`${e[t]}px`)};function eG(e){const t=nt(),n=A(!1),o=A([]);return{updateExpandRows:()=>{const i=e.data.value||[],u=e.rowKey.value;if(n.value)o.value=i.slice();else if(u){const c=Hs(o.value,u);o.value=i.reduce((d,f)=>{const p=Qt(f,u);return c[p]&&d.push(f),d},[])}else o.value=[]},toggleRowExpansion:(i,u)=>{Ti(o.value,i,u)&&t.emit("expand-change",i,o.value.slice())},setExpandRowKeys:i=>{t.store.assertRowKey();const u=e.data.value||[],c=e.rowKey.value,d=Hs(u,c);o.value=i.reduce((f,p)=>{const h=d[p];return h&&f.push(h.row),f},[])},isRowExpanded:i=>{const u=e.rowKey.value;return u?!!Hs(o.value,u)[Qt(i,u)]:o.value.includes(i)},states:{expandRows:o,defaultExpandAll:n}}}function tG(e){const t=nt(),n=A(null),o=A(null),s=u=>{t.store.assertRowKey(),n.value=u,r(u)},l=()=>{n.value=null},r=u=>{const{data:c,rowKey:d}=e;let f=null;d.value&&(f=(y(c)||[]).find(p=>Qt(p,d.value)===u)),o.value=f,t.emit("current-change",o.value,null)};return{setCurrentRowKey:s,restoreCurrentRowKey:l,setCurrentRowByKey:r,updateCurrentRow:u=>{const c=o.value;if(u&&u!==c){o.value=u,t.emit("current-change",o.value,c);return}!u&&c&&(o.value=null,t.emit("current-change",null,c))},updateCurrentRowData:()=>{const u=e.rowKey.value,c=e.data.value||[],d=o.value;if(!c.includes(d)&&d){if(u){const f=Qt(d,u);r(f)}else o.value=null;o.value===null&&t.emit("current-change",null,d)}else n.value&&(r(n.value),l())},states:{_currentRowKey:n,currentRow:o}}}function nG(e){const t=A([]),n=A({}),o=A(16),s=A(!1),l=A({}),r=A("hasChildren"),a=A("children"),i=nt(),u=E(()=>{if(!e.rowKey.value)return{};const v=e.data.value||[];return d(v)}),c=E(()=>{const v=e.rowKey.value,b=Object.keys(l.value),w={};return b.length&&b.forEach(S=>{if(l.value[S].length){const $={children:[]};l.value[S].forEach(k=>{const T=Qt(k,v);$.children.push(T),k[r.value]&&!w[T]&&(w[T]={children:[]})}),w[S]=$}}),w}),d=v=>{const b=e.rowKey.value,w={};return Qq(v,(S,$,k)=>{const T=Qt(S,b);Array.isArray($)?w[T]={children:$.map(O=>Qt(O,b)),level:k}:s.value&&(w[T]={children:[],lazy:!0,level:k})},a.value,r.value),w},f=(v=!1,b=(w=>(w=i.store)==null?void 0:w.states.defaultExpandAll.value)())=>{var w;const S=u.value,$=c.value,k=Object.keys(S),T={};if(k.length){const O=y(n),L=[],V=(H,R)=>{if(v)return t.value?b||t.value.includes(R):!!(b||(H==null?void 0:H.expanded));{const z=b||t.value&&t.value.includes(R);return!!((H==null?void 0:H.expanded)||z)}};k.forEach(H=>{const R=O[H],z=ne({},S[H]);if(z.expanded=V(R,H),z.lazy){const{loaded:W=!1,loading:P=!1}=R||{};z.loaded=!!W,z.loading=!!P,L.push(H)}T[H]=z});const B=Object.keys($);s.value&&B.length&&L.length&&B.forEach(H=>{const R=O[H],z=$[H].children;if(L.includes(H)){if(T[H].children.length!==0)throw new Error("[ElTable]children must be an empty array.");T[H].children=z}else{const{loaded:W=!1,loading:P=!1}=R||{};T[H]={lazy:!0,loaded:!!W,loading:!!P,expanded:V(R,H),children:z,level:""}}})}n.value=T,(w=i.store)==null||w.updateTableScrollY()};pe(()=>t.value,()=>{f(!0)}),pe(()=>u.value,()=>{f()}),pe(()=>c.value,()=>{f()});const p=v=>{t.value=v,f()},h=(v,b)=>{i.store.assertRowKey();const w=e.rowKey.value,S=Qt(v,w),$=S&&n.value[S];if(S&&$&&"expanded"in $){const k=$.expanded;b=typeof b=="undefined"?!$.expanded:b,n.value[S].expanded=b,k!==b&&i.emit("expand-change",v,b),i.store.updateTableScrollY()}},g=v=>{i.store.assertRowKey();const b=e.rowKey.value,w=Qt(v,b),S=n.value[w];s.value&&S&&"loaded"in S&&!S.loaded?m(v,w,S):h(v,void 0)},m=(v,b,w)=>{const{load:S}=i.props;S&&!n.value[b].loaded&&(n.value[b].loading=!0,S(v,w,$=>{if(!Array.isArray($))throw new TypeError("[ElTable] data must be an array");n.value[b].loading=!1,n.value[b].loaded=!0,n.value[b].expanded=!0,$.length&&(l.value[b]=$),i.emit("expand-change",v,!0)}))};return{loadData:m,loadOrToggle:g,toggleTreeExpansion:h,updateTreeExpandKeys:p,updateTreeData:f,normalize:d,states:{expandRowKeys:t,treeData:n,indent:o,lazy:s,lazyTreeNodeMap:l,lazyColumnIdentifier:r,childrenColumnName:a}}}const oG=(e,t)=>{const n=t.sortingColumn;return!n||typeof n.sortable=="string"?e:Gq(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},Ai=e=>{const t=[];return e.forEach(n=>{n.children?t.push.apply(t,Ai(n.children)):t.push(n)}),t};function sG(){var e;const t=nt(),{size:n}=Ut((e=t.proxy)==null?void 0:e.$props),o=A(null),s=A([]),l=A([]),r=A(!1),a=A([]),i=A([]),u=A([]),c=A([]),d=A([]),f=A([]),p=A([]),h=A([]),g=A(0),m=A(0),v=A(0),b=A(!1),w=A([]),S=A(!1),$=A(!1),k=A(null),T=A({}),O=A(null),L=A(null),V=A(null),B=A(null),H=A(null);pe(s,()=>t.state&&W(!1),{deep:!0});const R=()=>{if(!o.value)throw new Error("[ElTable] prop row-key is required")},z=()=>{c.value=a.value.filter(Ae=>Ae.fixed===!0||Ae.fixed==="left"),d.value=a.value.filter(Ae=>Ae.fixed==="right"),c.value.length>0&&a.value[0]&&a.value[0].type==="selection"&&!a.value[0].fixed&&(a.value[0].fixed=!0,c.value.unshift(a.value[0]));const He=a.value.filter(Ae=>!Ae.fixed);i.value=[].concat(c.value).concat(He).concat(d.value);const oe=Ai(He),me=Ai(c.value),ce=Ai(d.value);g.value=oe.length,m.value=me.length,v.value=ce.length,u.value=[].concat(me).concat(oe).concat(ce),r.value=c.value.length>0||d.value.length>0},W=(He,oe=!1)=>{He&&z(),oe?t.state.doLayout():t.state.debouncedUpdateLayout()},P=He=>w.value.includes(He),N=()=>{b.value=!1,w.value.length&&(w.value=[],t.emit("selection-change",[]))},I=()=>{let He;if(o.value){He=[];const oe=Hs(w.value,o.value),me=Hs(s.value,o.value);for(const ce in oe)rt(oe,ce)&&!me[ce]&&He.push(oe[ce].row)}else He=w.value.filter(oe=>!s.value.includes(oe));if(He.length){const oe=w.value.filter(me=>!He.includes(me));w.value=oe,t.emit("selection-change",oe.slice())}},U=()=>(w.value||[]).slice(),q=(He,oe=void 0,me=!0)=>{if(Ti(w.value,He,oe)){const Ae=(w.value||[]).slice();me&&t.emit("select",Ae,He),t.emit("selection-change",Ae)}},Q=()=>{var He,oe;const me=$.value?!b.value:!(b.value||w.value.length);b.value=me;let ce=!1,Ae=0;const Ue=(oe=(He=t==null?void 0:t.store)==null?void 0:He.states)==null?void 0:oe.rowKey.value;s.value.forEach((mt,St)=>{const bt=St+Ae;k.value?k.value.call(null,mt,bt)&&Ti(w.value,mt,me)&&(ce=!0):Ti(w.value,mt,me)&&(ce=!0),Ae+=Ee(Qt(mt,Ue))}),ce&&t.emit("selection-change",w.value?w.value.slice():[]),t.emit("select-all",w.value)},Z=()=>{const He=Hs(w.value,o.value);s.value.forEach(oe=>{const me=Qt(oe,o.value),ce=He[me];ce&&(w.value[ce.index]=oe)})},ae=()=>{var He,oe,me;if(((He=s.value)==null?void 0:He.length)===0){b.value=!1;return}let ce;o.value&&(ce=Hs(w.value,o.value));const Ae=function(bt){return ce?!!ce[Qt(bt,o.value)]:w.value.includes(bt)};let Ue=!0,mt=0,St=0;for(let bt=0,At=(s.value||[]).length;bt{var oe;if(!t||!t.store)return 0;const{treeData:me}=t.store.states;let ce=0;const Ae=(oe=me.value[He])==null?void 0:oe.children;return Ae&&(ce+=Ae.length,Ae.forEach(Ue=>{ce+=Ee(Ue)})),ce},Me=(He,oe)=>{Array.isArray(He)||(He=[He]);const me={};return He.forEach(ce=>{T.value[ce.id]=oe,me[ce.columnKey||ce.id]=oe}),me},J=(He,oe,me)=>{L.value&&L.value!==He&&(L.value.order=null),L.value=He,V.value=oe,B.value=me},ve=()=>{let He=y(l);Object.keys(T.value).forEach(oe=>{const me=T.value[oe];if(!me||me.length===0)return;const ce=bC({columns:u.value},oe);ce&&ce.filterMethod&&(He=He.filter(Ae=>me.some(Ue=>ce.filterMethod.call(null,Ue,Ae,ce))))}),O.value=He},Ce=()=>{s.value=oG(O.value,{sortingColumn:L.value,sortProp:V.value,sortOrder:B.value})},ke=(He=void 0)=>{He&&He.filter||ve(),Ce()},Oe=He=>{const{tableHeaderRef:oe}=t.refs;if(!oe)return;const me=Object.assign({},oe.filterPanels),ce=Object.keys(me);if(!!ce.length)if(typeof He=="string"&&(He=[He]),Array.isArray(He)){const Ae=He.map(Ue=>Xq({columns:u.value},Ue));ce.forEach(Ue=>{const mt=Ae.find(St=>St.id===Ue);mt&&(mt.filteredValue=[])}),t.store.commit("filterChange",{column:Ae,values:[],silent:!0,multi:!0})}else ce.forEach(Ae=>{const Ue=u.value.find(mt=>mt.id===Ae);Ue&&(Ue.filteredValue=[])}),T.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},We=()=>{!L.value||(J(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:qe,toggleRowExpansion:K,updateExpandRows:X,states:fe,isRowExpanded:ye}=eG({data:s,rowKey:o}),{updateTreeExpandKeys:be,toggleTreeExpansion:_e,updateTreeData:re,loadOrToggle:se,states:te}=nG({data:s,rowKey:o}),{updateCurrentRowData:ue,updateCurrentRow:Re,setCurrentRowKey:F,states:de}=tG({data:s,rowKey:o});return{assertRowKey:R,updateColumns:z,scheduleLayout:W,isSelected:P,clearSelection:N,cleanSelection:I,getSelectionRows:U,toggleRowSelection:q,_toggleAllSelection:Q,toggleAllSelection:null,updateSelectionByRowKey:Z,updateAllSelected:ae,updateFilters:Me,updateCurrentRow:Re,updateSort:J,execFilter:ve,execSort:Ce,execQuery:ke,clearFilter:Oe,clearSort:We,toggleRowExpansion:K,setExpandRowKeysAdapter:He=>{qe(He),be(He)},setCurrentRowKey:F,toggleRowExpansionAdapter:(He,oe)=>{u.value.some(({type:ce})=>ce==="expand")?K(He,oe):_e(He,oe)},isRowExpanded:ye,updateExpandRows:X,updateCurrentRowData:ue,loadOrToggle:se,updateTreeData:re,states:ne(ne(ne({tableSize:n,rowKey:o,data:s,_data:l,isComplex:r,_columns:a,originColumns:i,columns:u,fixedColumns:c,rightFixedColumns:d,leafColumns:f,fixedLeafColumns:p,rightFixedLeafColumns:h,leafColumnsLength:g,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:v,isAllSelected:b,selection:w,reserveSelection:S,selectOnIndeterminate:$,selectable:k,filters:T,filteredData:O,sortingColumn:L,sortProp:V,sortOrder:B,hoverRow:H},fe),te),de)}}function Wd(e,t){return e.map(n=>{var o;return n.id===t.id?t:((o=n.children)!=null&&o.length&&(n.children=Wd(n.children,t)),n)})}function CC(e){e.forEach(t=>{var n,o;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(o=t.children)!=null&&o.length&&CC(t.children)}),e.sort((t,n)=>t.no-n.no)}function lG(){const e=nt(),t=sG(),n=we("table"),o={setData(r,a){const i=y(r._data)!==a;r.data.value=a,r._data.value=a,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),y(r.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):i?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(r,a,i){const u=y(r._columns);let c=[];i?(i&&!i.children&&(i.children=[]),i.children.push(a),c=Wd(u,i)):(u.push(a),c=u),CC(c),r._columns.value=c,a.type==="selection"&&(r.selectable.value=a.selectable,r.reserveSelection.value=a.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},removeColumn(r,a,i){const u=y(r._columns)||[];if(i)i.children.splice(i.children.findIndex(c=>c.id===a.id),1),i.children.length===0&&delete i.children,r._columns.value=Wd(u,i);else{const c=u.indexOf(a);c>-1&&(u.splice(c,1),r._columns.value=u)}e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(r,a){const{prop:i,order:u,init:c}=a;if(i){const d=y(r.columns).find(f=>f.property===i);d&&(d.order=u,e.store.updateSort(d,i,u),e.store.commit("changeSortCondition",{init:c}))}},changeSortCondition(r,a){const{sortingColumn:i,sortProp:u,sortOrder:c}=r;y(c)===null&&(r.sortingColumn.value=null,r.sortProp.value=null);const d={filter:!0};e.store.execQuery(d),(!a||!(a.silent||a.init))&&e.emit("sort-change",{column:y(i),prop:y(u),order:y(c)}),e.store.updateTableScrollY()},filterChange(r,a){const{column:i,values:u,silent:c}=a,d=e.store.updateFilters(i,u);e.store.execQuery(),c||e.emit("filter-change",d),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(r,a){e.store.toggleRowSelection(a),e.store.updateAllSelected()},setHoverRow(r,a){r.hoverRow.value=a},setCurrentRow(r,a){e.store.updateCurrentRow(a)}},s=function(r,...a){const i=e.store.mutations;if(i[r])i[r].apply(e,[e.store.states].concat(a));else throw new Error(`Action not found: ${r}`)},l=function(){ze(()=>e.layout.updateScrollY.apply(e.layout))};return Te(ne({ns:n},t),{mutations:o,commit:s,updateTableScrollY:l})}const Ur={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data",["treeProps.hasChildren"]:{key:"lazyColumnIdentifier",default:"hasChildren"},["treeProps.children"]:{key:"childrenColumnName",default:"children"}};function rG(e,t){if(!e)throw new Error("Table is required.");const n=lG();return n.toggleAllSelection=hn(n._toggleAllSelection,10),Object.keys(Ur).forEach(o=>{$C(kC(t,o),o,n)}),aG(n,t),n}function aG(e,t){Object.keys(Ur).forEach(n=>{pe(()=>kC(t,n),o=>{$C(o,n,e)})})}function $C(e,t,n){let o=e,s=Ur[t];typeof Ur[t]=="object"&&(s=s.key,o=o||Ur[t].default),n.states[s].value=o}function kC(e,t){if(t.includes(".")){const n=t.split(".");let o=e;return n.forEach(s=>{o=o[s]}),o}else return e[t]}class iG{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=A(null),this.scrollX=A(!1),this.scrollY=A(!1),this.bodyWidth=A(null),this.fixedWidth=A(null),this.rightFixedWidth=A(null),this.tableHeight=A(null),this.headerHeight=A(44),this.appendHeight=A(0),this.footerHeight=A(44),this.viewportHeight=A(null),this.bodyHeight=A(null),this.bodyScrollHeight=A(0),this.fixedBodyHeight=A(null),this.gutterWidth=0;for(const n in t)rt(t,n)&&(Lt(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const n=this.table.refs.bodyWrapper;if(this.table.vnode.el&&n){let o=!0;const s=this.scrollY.value;return this.bodyHeight.value===null?o=!1:o=n.scrollHeight>this.bodyHeight.value,this.scrollY.value=o,s!==o}return!1}setHeight(t,n="height"){if(!ct)return;const o=this.table.vnode.el;if(t=Kd(t),this.height.value=Number(t),!o&&(t||t===0))return ze(()=>this.setHeight(t,n));typeof t=="number"?(o.style[n]=`${t}px`,this.updateElsHeight()):typeof t=="string"&&(o.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(o=>{o.isColumnGroup?t.push.apply(t,o.columns):t.push(o)}),t}updateElsHeight(){var t,n;if(!this.table.$ready)return ze(()=>this.updateElsHeight());const{tableWrapper:o,headerWrapper:s,appendWrapper:l,footerWrapper:r,tableHeader:a,tableBody:i}=this.table.refs;if(o&&o.style.display==="none")return;const{tableLayout:u}=this.table.props;if(this.appendHeight.value=l?l.offsetHeight:0,this.showHeader&&!s&&u==="fixed")return;const c=a||null,d=this.headerDisplayNone(c),f=(s==null?void 0:s.offsetHeight)||0,p=this.headerHeight.value=this.showHeader?f:0;if(this.showHeader&&!d&&f>0&&(this.table.store.states.columns.value||[]).length>0&&p<2)return ze(()=>this.updateElsHeight());const h=this.tableHeight.value=(n=(t=this.table)==null?void 0:t.vnode.el)==null?void 0:n.clientHeight,g=this.footerHeight.value=r?r.offsetHeight:0;this.height.value!==null&&(this.bodyHeight.value===null&&requestAnimationFrame(()=>this.updateElsHeight()),this.bodyHeight.value=h-p-g+(r?1:0),this.bodyScrollHeight.value=i==null?void 0:i.scrollHeight),this.fixedBodyHeight.value=this.scrollX.value?this.bodyHeight.value-this.gutterWidth:this.bodyHeight.value,this.viewportHeight.value=this.scrollX.value?h-this.gutterWidth:h,this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!=="DIV";){if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}updateColumnsWidth(){if(!ct)return;const t=this.fit,n=this.table.vnode.el.clientWidth;let o=0;const s=this.getFlattenColumns(),l=s.filter(i=>typeof i.width!="number");if(s.forEach(i=>{typeof i.width=="number"&&i.realWidth&&(i.realWidth=null)}),l.length>0&&t){if(s.forEach(i=>{o+=Number(i.width||i.minWidth||80)}),o<=n){this.scrollX.value=!1;const i=n-o;if(l.length===1)l[0].realWidth=Number(l[0].minWidth||80)+i;else{const u=l.reduce((f,p)=>f+Number(p.minWidth||80),0),c=i/u;let d=0;l.forEach((f,p)=>{if(p===0)return;const h=Math.floor(Number(f.minWidth||80)*c);d+=h,f.realWidth=Number(f.minWidth||80)+h}),l[0].realWidth=Number(l[0].minWidth||80)+i-d}}else this.scrollX.value=!0,l.forEach(i=>{i.realWidth=Number(i.minWidth)});this.bodyWidth.value=Math.max(o,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(i=>{!i.width&&!i.minWidth?i.realWidth=80:i.realWidth=Number(i.width||i.minWidth),o+=i.realWidth}),this.scrollX.value=o>n,this.bodyWidth.value=o;const r=this.store.states.fixedColumns.value;if(r.length>0){let i=0;r.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.fixedWidth.value=i}const a=this.store.states.rightFixedColumns.value;if(a.length>0){let i=0;a.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=i}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(o=>{var s,l;switch(t){case"columns":(s=o.state)==null||s.onColumnsChange(this);break;case"scrollable":(l=o.state)==null||l.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:uG}=ao,cG=ee({name:"ElTableFilterPanel",components:{ElCheckbox:ao,ElCheckboxGroup:uG,ElScrollbar:Uo,ElTooltip:mn,ElIcon:je,ArrowDown:dl,ArrowUp:Ta},directives:{ClickOutside:hl},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=nt(),{t:n}=kt(),o=we("table-filter"),s=t==null?void 0:t.parent;s.filterPanels.value[e.column.id]||(s.filterPanels.value[e.column.id]=t);const l=A(!1),r=A(null),a=E(()=>e.column&&e.column.filters),i=E({get:()=>{var S;return(((S=e.column)==null?void 0:S.filteredValue)||[])[0]},set:S=>{u.value&&(typeof S!="undefined"&&S!==null?u.value.splice(0,1,S):u.value.splice(0,1))}}),u=E({get(){return e.column?e.column.filteredValue||[]:[]},set(S){e.column&&e.upDataColumn("filteredValue",S)}}),c=E(()=>e.column?e.column.filterMultiple:!0),d=S=>S.value===i.value,f=()=>{l.value=!1},p=S=>{S.stopPropagation(),l.value=!l.value},h=()=>{l.value=!1},g=()=>{b(u.value),f()},m=()=>{u.value=[],b(u.value),f()},v=S=>{i.value=S,b(typeof S!="undefined"&&S!==null?u.value:[]),f()},b=S=>{e.store.commit("filterChange",{column:e.column,values:S}),e.store.updateAllSelected()};pe(l,S=>{e.column&&e.upDataColumn("filterOpened",S)},{immediate:!0});const w=E(()=>{var S,$;return($=(S=r.value)==null?void 0:S.popperRef)==null?void 0:$.contentRef});return{tooltipVisible:l,multiple:c,filteredValue:u,filterValue:i,filters:a,handleConfirm:g,handleReset:m,handleSelect:v,isActive:d,t:n,ns:o,showFilterPanel:p,hideFilterPanel:h,popperPaneRef:w,tooltip:r}}}),dG={key:0},fG=["disabled"],pG=["label","onClick"];function hG(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-checkbox-group"),i=le("el-scrollbar"),u=le("arrow-up"),c=le("arrow-down"),d=le("el-icon"),f=le("el-tooltip"),p=Mn("click-outside");return C(),x(f,{ref:"tooltip",visible:e.tooltipVisible,"onUpdate:visible":t[5]||(t[5]=h=>e.tooltipVisible=h),offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,"append-to-body":"",effect:"light",pure:"","popper-class":e.ns.b(),persistent:""},{content:j(()=>[e.multiple?(C(),M("div",dG,[D("div",{class:_(e.ns.e("content"))},[Y(i,{"wrap-class":e.ns.e("wrap")},{default:j(()=>[Y(a,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=h=>e.filteredValue=h),class:_(e.ns.e("checkbox-group"))},{default:j(()=>[(C(!0),M(Le,null,it(e.filters,h=>(C(),x(r,{key:h.value,label:h.value},{default:j(()=>[at(he(h.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),D("div",{class:_(e.ns.e("bottom"))},[D("button",{class:_({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...h)=>e.handleConfirm&&e.handleConfirm(...h))},he(e.t("el.table.confirmFilter")),11,fG),D("button",{type:"button",onClick:t[2]||(t[2]=(...h)=>e.handleReset&&e.handleReset(...h))},he(e.t("el.table.resetFilter")),1)],2)])):(C(),M("ul",{key:1,class:_(e.ns.e("list"))},[D("li",{class:_([e.ns.e("list-item"),{[e.ns.is("active")]:e.filterValue===void 0||e.filterValue===null}]),onClick:t[3]||(t[3]=h=>e.handleSelect(null))},he(e.t("el.table.clearFilter")),3),(C(!0),M(Le,null,it(e.filters,h=>(C(),M("li",{key:h.value,class:_([e.ns.e("list-item"),e.ns.is("active",e.isActive(h))]),label:h.value,onClick:g=>e.handleSelect(h.value)},he(h.text),11,pG))),128))],2))]),default:j(()=>[Ge((C(),M("span",{class:_([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...h)=>e.showFilterPanel&&e.showFilterPanel(...h))},[Y(d,null,{default:j(()=>[e.column.filterOpened?(C(),x(u,{key:0})):(C(),x(c,{key:1}))]),_:1})],2)),[[p,e.hideFilterPanel,e.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var mG=ge(cG,[["render",hG],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/filter-panel.vue"]]);function SC(e){const t=nt();Ca(()=>{n.value.addObserver(t)}),xe(()=>{o(n.value),s(n.value)}),Xn(()=>{o(n.value),s(n.value)}),$a(()=>{n.value.removeObserver(t)});const n=E(()=>{const l=e.layout;if(!l)throw new Error("Can not find table layout.");return l}),o=l=>{var r;const a=((r=e.vnode.el)==null?void 0:r.querySelectorAll("colgroup > col"))||[];if(!a.length)return;const i=l.getFlattenColumns(),u={};i.forEach(c=>{u[c.id]=c});for(let c=0,d=a.length;c{var r,a;const i=((r=e.vnode.el)==null?void 0:r.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let c=0,d=i.length;c{g.stopPropagation()},l=(g,m)=>{!m.filters&&m.sortable?h(g,m,!1):m.filterable&&!m.sortable&&s(g),o==null||o.emit("header-click",m,g)},r=(g,m)=>{o==null||o.emit("header-contextmenu",m,g)},a=A(null),i=A(!1),u=A({}),c=(g,m)=>{if(!!ct&&!(m.children&&m.children.length>0)&&a.value&&e.border){i.value=!0;const v=o;t("set-drag-visible",!0);const w=(v==null?void 0:v.vnode.el).getBoundingClientRect().left,S=n.vnode.el.querySelector(`th.${m.id}`),$=S.getBoundingClientRect(),k=$.left-w+30;wo(S,"noclick"),u.value={startMouseLeft:g.clientX,startLeft:$.right-w,startColumnLeft:$.left-w,tableLeft:w};const T=v==null?void 0:v.refs.resizeProxy;T.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const O=V=>{const B=V.clientX-u.value.startMouseLeft,H=u.value.startLeft+B;T.style.left=`${Math.max(k,H)}px`},L=()=>{if(i.value){const{startColumnLeft:V,startLeft:B}=u.value,R=Number.parseInt(T.style.left,10)-V;m.width=m.realWidth=R,v==null||v.emit("header-dragend",m.width,B-V,m,g),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",i.value=!1,a.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",L),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{fn(S,"noclick")},0)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",L)}},d=(g,m)=>{if(m.children&&m.children.length>0)return;let v=g.target;for(;v&&v.tagName!=="TH";)v=v.parentNode;if(!(!m||!m.resizable)&&!i.value&&e.border){const b=v.getBoundingClientRect(),w=document.body.style;b.width>12&&b.right-g.pageX<8?(w.cursor="col-resize",oo(v,"is-sortable")&&(v.style.cursor="col-resize"),a.value=m):i.value||(w.cursor="",oo(v,"is-sortable")&&(v.style.cursor="pointer"),a.value=null)}},f=()=>{!ct||(document.body.style.cursor="")},p=({order:g,sortOrders:m})=>{if(g==="")return m[0];const v=m.indexOf(g||null);return m[v>m.length-2?0:v+1]},h=(g,m,v)=>{g.stopPropagation();const b=m.order===v?null:v||p(m);let w=g.target;for(;w&&w.tagName!=="TH";)w=w.parentNode;if(w&&w.tagName==="TH"&&oo(w,"noclick")){fn(w,"noclick");return}if(!m.sortable)return;const S=e.store.states;let $=S.sortProp.value,k;const T=S.sortingColumn.value;(T!==m||T===m&&T.order===null)&&(T&&(T.order=null),S.sortingColumn.value=m,$=m.property),b?k=m.order=b:k=m.order=null,S.sortProp.value=$,S.sortOrder.value=k,o==null||o.store.commit("changeSortCondition")};return{handleHeaderClick:l,handleHeaderContextMenu:r,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:h,handleFilterClick:s}}function gG(e){const t=Ne(_o),n=we("table");return{getHeaderRowStyle:a=>{const i=t==null?void 0:t.props.headerRowStyle;return typeof i=="function"?i.call(null,{rowIndex:a}):i},getHeaderRowClass:a=>{const i=[],u=t==null?void 0:t.props.headerRowClassName;return typeof u=="string"?i.push(u):typeof u=="function"&&i.push(u.call(null,{rowIndex:a})),i.join(" ")},getHeaderCellStyle:(a,i,u,c)=>{var d;let f=(d=t==null?void 0:t.props.headerCellStyle)!=null?d:{};typeof f=="function"&&(f=f.call(null,{rowIndex:a,columnIndex:i,row:u,column:c}));const p=c.isSubColumn?null:Mp(i,c.fixed,e.store,u);return xl(p,"left"),xl(p,"right"),Object.assign({},f,p)},getHeaderCellClass:(a,i,u,c)=>{const d=c.isSubColumn?[]:Np(n.b(),i,c.fixed,e.store,u),f=[c.id,c.order,c.headerAlign,c.className,c.labelClassName,...d];c.children||f.push("is-leaf"),c.sortable&&f.push("is-sortable");const p=t==null?void 0:t.props.headerCellClassName;return typeof p=="string"?f.push(p):typeof p=="function"&&f.push(p.call(null,{rowIndex:a,columnIndex:i,row:u,column:c})),f.push(n.e("cell")),f.filter(h=>Boolean(h)).join(" ")}}}const EC=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,EC(n.children))):t.push(n)}),t},bG=e=>{let t=1;const n=(l,r)=>{if(r&&(l.level=r.level+1,t{n(i,l),a+=i.colSpan}),l.colSpan=a}else l.colSpan=1};e.forEach(l=>{l.level=1,n(l,void 0)});const o=[];for(let l=0;l{l.children?(l.rowSpan=1,l.children.forEach(r=>r.isSubColumn=!0)):l.rowSpan=t-l.level+1,o[l.level-1].push(l)}),o};function yG(e){const t=Ne(_o),n=E(()=>bG(e.store.states.originColumns.value));return{isGroup:E(()=>{const l=n.value.length>1;return l&&t&&(t.state.isGroup.value=!0),l}),toggleAllSelection:l=>{l.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:n}}var wG=ee({name:"ElTableHeader",components:{ElCheckbox:ao},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const n=nt(),o=Ne(_o),s=we("table"),l=A({}),{onColumnsChange:r,onScrollableChange:a}=SC(o);xe(async()=>{await ze(),await ze();const{prop:k,order:T}=e.defaultSort;o==null||o.store.commit("sort",{prop:k,order:T,init:!0})});const{handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:p,handleFilterClick:h}=vG(e,t),{getHeaderRowStyle:g,getHeaderRowClass:m,getHeaderCellStyle:v,getHeaderCellClass:b}=gG(e),{isGroup:w,toggleAllSelection:S,columnRows:$}=yG(e);return n.state={onColumnsChange:r,onScrollableChange:a},n.filterPanels=l,{ns:s,filterPanels:l,onColumnsChange:r,onScrollableChange:a,columnRows:$,getHeaderRowClass:m,getHeaderRowStyle:g,getHeaderCellClass:b,getHeaderCellStyle:v,handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:p,handleFilterClick:h,isGroup:w,toggleAllSelection:S}},render(){const{ns:e,isGroup:t,columnRows:n,getHeaderCellStyle:o,getHeaderCellClass:s,getHeaderRowClass:l,getHeaderRowStyle:r,handleHeaderClick:a,handleHeaderContextMenu:i,handleMouseDown:u,handleMouseMove:c,handleSortClick:d,handleMouseOut:f,store:p,$parent:h}=this;let g=1;return De("thead",{class:{[e.is("group")]:t}},n.map((m,v)=>De("tr",{class:l(v),key:v,style:r(v)},m.map((b,w)=>(b.rowSpan>g&&(g=b.rowSpan),De("th",{class:s(v,w,m,b),colspan:b.colSpan,key:`${b.id}-thead`,rowspan:b.rowSpan,style:o(v,w,m,b),onClick:S=>a(S,b),onContextmenu:S=>i(S,b),onMousedown:S=>u(S,b),onMousemove:S=>c(S,b),onMouseout:f},[De("div",{class:["cell",b.filteredValue&&b.filteredValue.length>0?"highlight":"",b.labelClassName]},[b.renderHeader?b.renderHeader({column:b,$index:w,store:p,_self:h}):b.label,b.sortable&&De("span",{onClick:S=>d(S,b),class:"caret-wrapper"},[De("i",{onClick:S=>d(S,b,"ascending"),class:"sort-caret ascending"}),De("i",{onClick:S=>d(S,b,"descending"),class:"sort-caret descending"})]),b.filterable&&De(mG,{store:p,placement:b.filterPlacement||"bottom-start",column:b,upDataColumn:(S,$)=>{b[S]=$}})])]))))))}});function CG(e){const t=Ne(_o),n=A(""),o=A(De("div")),s=(f,p,h)=>{var g;const m=t,v=Pc(f);let b;const w=(g=m==null?void 0:m.vnode.el)==null?void 0:g.dataset.prefix;v&&(b=Ng({columns:e.store.states.columns.value},v,w),b&&(m==null||m.emit(`cell-${h}`,p,b,v,f))),m==null||m.emit(`row-${h}`,p,b,f)},l=(f,p)=>{s(f,p,"dblclick")},r=(f,p)=>{e.store.commit("setCurrentRow",p),s(f,p,"click")},a=(f,p)=>{s(f,p,"contextmenu")},i=hn(f=>{e.store.commit("setHoverRow",f)},30),u=hn(()=>{e.store.commit("setHoverRow",null)},30);return{handleDoubleClick:l,handleClick:r,handleContextMenu:a,handleMouseEnter:i,handleMouseLeave:u,handleCellMouseEnter:(f,p)=>{var h;const g=t,m=Pc(f),v=(h=g==null?void 0:g.vnode.el)==null?void 0:h.dataset.prefix;if(m){const k=Ng({columns:e.store.states.columns.value},m,v),T=g.hoverState={cell:m,column:k,row:p};g==null||g.emit("cell-mouse-enter",T.row,T.column,T.cell,f)}const b=f.target.querySelector(".cell");if(!(oo(b,`${v}-tooltip`)&&b.childNodes.length))return;const w=document.createRange();w.setStart(b,0),w.setEnd(b,b.childNodes.length);const S=w.getBoundingClientRect().width,$=(Number.parseInt(bo(b,"paddingLeft"),10)||0)+(Number.parseInt(bo(b,"paddingRight"),10)||0);(S+$>b.offsetWidth||b.scrollWidth>b.offsetWidth)&&xq(m,m.innerText||m.textContent,{placement:"top",strategy:"fixed"},p.tooltipEffect)},handleCellMouseLeave:f=>{if(!Pc(f))return;const h=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",h==null?void 0:h.row,h==null?void 0:h.column,h==null?void 0:h.cell,f)},tooltipContent:n,tooltipTrigger:o}}function $G(e){const t=Ne(_o),n=we("table");return{getRowStyle:(u,c)=>{const d=t==null?void 0:t.props.rowStyle;return typeof d=="function"?d.call(null,{row:u,rowIndex:c}):d||null},getRowClass:(u,c)=>{const d=[n.e("row")];(t==null?void 0:t.props.highlightCurrentRow)&&u===e.store.states.currentRow.value&&d.push("current-row"),e.stripe&&c%2===1&&d.push(n.em("row","striped"));const f=t==null?void 0:t.props.rowClassName;return typeof f=="string"?d.push(f):typeof f=="function"&&d.push(f.call(null,{row:u,rowIndex:c})),d},getCellStyle:(u,c,d,f)=>{const p=t==null?void 0:t.props.cellStyle;let h=p!=null?p:{};typeof p=="function"&&(h=p.call(null,{rowIndex:u,columnIndex:c,row:d,column:f}));const g=f.isSubColumn?null:Mp(c,e==null?void 0:e.fixed,e.store);return xl(g,"left"),xl(g,"right"),Object.assign({},h,g)},getCellClass:(u,c,d,f)=>{const p=f.isSubColumn?[]:Np(n.b(),c,e==null?void 0:e.fixed,e.store),h=[f.id,f.align,f.className,...p],g=t==null?void 0:t.props.cellClassName;return typeof g=="string"?h.push(g):typeof g=="function"&&h.push(g.call(null,{rowIndex:u,columnIndex:c,row:d,column:f})),h.push(n.e("cell")),h.filter(m=>Boolean(m)).join(" ")},getSpan:(u,c,d,f)=>{let p=1,h=1;const g=t==null?void 0:t.props.spanMethod;if(typeof g=="function"){const m=g({row:u,column:c,rowIndex:d,columnIndex:f});Array.isArray(m)?(p=m[0],h=m[1]):typeof m=="object"&&(p=m.rowspan,h=m.colspan)}return{rowspan:p,colspan:h}},getColspanRealWidth:(u,c,d)=>{if(c<1)return u[d].realWidth;const f=u.map(({realWidth:p,width:h})=>p||h).slice(d,d+c);return Number(f.reduce((p,h)=>Number(p)+Number(h),-1))}}}function kG(e){const t=Ne(_o),{handleDoubleClick:n,handleClick:o,handleContextMenu:s,handleMouseEnter:l,handleMouseLeave:r,handleCellMouseEnter:a,handleCellMouseLeave:i,tooltipContent:u,tooltipTrigger:c}=CG(e),{getRowStyle:d,getRowClass:f,getCellStyle:p,getCellClass:h,getSpan:g,getColspanRealWidth:m}=$G(e),v=E(()=>e.store.states.columns.value.findIndex(({type:k})=>k==="default")),b=(k,T)=>{const O=t.props.rowKey;return O?Qt(k,O):T},w=(k,T,O,L=!1)=>{const{tooltipEffect:V,store:B}=e,{indent:H,columns:R}=B.states,z=f(k,T);let W=!0;return O&&(z.push(`el-table__row--level-${O.level}`),W=O.display),De("tr",{style:[W?null:{display:"none"},d(k,T)],class:z,key:b(k,T),onDblclick:N=>n(N,k),onClick:N=>o(N,k),onContextmenu:N=>s(N,k),onMouseenter:()=>l(T),onMouseleave:r},R.value.map((N,I)=>{const{rowspan:U,colspan:q}=g(k,N,T,I);if(!U||!q)return null;const Q=ne({},N);Q.realWidth=m(R.value,q,I);const Z={store:e.store,_self:e.context||t,column:Q,row:k,$index:T,cellIndex:I,expanded:L};I===v.value&&O&&(Z.treeNode={indent:O.level*H.value,level:O.level},typeof O.expanded=="boolean"&&(Z.treeNode.expanded=O.expanded,"loading"in O&&(Z.treeNode.loading=O.loading),"noLazyChildren"in O&&(Z.treeNode.noLazyChildren=O.noLazyChildren)));const ae=`${T},${I}`,Ee=Q.columnKey||Q.rawColumnKey||"",Me=S(I,N,Z);return De("td",{style:p(T,I,k,N),class:h(T,I,k,N),key:`${Ee}${ae}`,rowspan:U,colspan:q,onMouseenter:J=>a(J,Te(ne({},k),{tooltipEffect:V})),onMouseleave:i},[Me])}))},S=(k,T,O)=>T.renderCell(O);return{wrappedRowRender:(k,T)=>{const O=e.store,{isRowExpanded:L,assertRowKey:V}=O,{treeData:B,lazyTreeNodeMap:H,childrenColumnName:R,rowKey:z}=O.states,W=O.states.columns.value;if(W.some(({type:N})=>N==="expand")){const N=L(k),I=w(k,T,void 0,N),U=t.renderExpanded;return N?U?[[I,De("tr",{key:`expanded-row__${I.key}`},[De("td",{colspan:W.length,class:"el-table__cell el-table__expanded-cell"},[U({row:k,$index:T,store:O,expanded:N})])])]]:(console.error("[Element Error]renderExpanded is required."),I):[[I]]}else if(Object.keys(B.value).length){V();const N=Qt(k,z.value);let I=B.value[N],U=null;I&&(U={expanded:I.expanded,level:I.level,display:!0},typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(U.noLazyChildren=!(I.children&&I.children.length)),U.loading=I.loading));const q=[w(k,T,U)];if(I){let Q=0;const Z=(Ee,Me)=>{!(Ee&&Ee.length&&Me)||Ee.forEach(J=>{const ve={display:Me.display&&Me.expanded,level:Me.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Ce=Qt(J,z.value);if(Ce==null)throw new Error("For nested data item, row-key is required.");if(I=ne({},B.value[Ce]),I&&(ve.expanded=I.expanded,I.level=I.level||ve.level,I.display=!!(I.expanded&&ve.display),typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(ve.noLazyChildren=!(I.children&&I.children.length)),ve.loading=I.loading)),Q++,q.push(w(J,T+Q,ve)),I){const ke=H.value[Ce]||J[R.value];Z(ke,I)}})};I.display=!0;const ae=H.value[N]||k[R.value];Z(ae,I)}return q}else return w(k,T,void 0)},tooltipContent:u,tooltipTrigger:c}}const SG={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var EG=ee({name:"ElTableBody",props:SG,setup(e){const t=nt(),n=Ne(_o),o=we("table"),{wrappedRowRender:s,tooltipContent:l,tooltipTrigger:r}=kG(e),{onColumnsChange:a,onScrollableChange:i}=SC(n);return pe(e.store.states.hoverRow,(u,c)=>{if(!e.store.states.isComplex.value||!ct)return;let d=window.requestAnimationFrame;d||(d=f=>window.setTimeout(f,16)),d(()=>{var f;const p=(f=t==null?void 0:t.vnode.el)==null?void 0:f.querySelectorAll(`.${o.e("row")}`),h=p[c],g=p[u];h&&fn(h,"hover-row"),g&&wo(g,"hover-row")})}),$a(()=>{var u;(u=ou)==null||u()}),Xn(()=>{var u;(u=ou)==null||u()}),{ns:o,onColumnsChange:a,onScrollableChange:i,wrappedRowRender:s,tooltipContent:l,tooltipTrigger:r}},render(){const{wrappedRowRender:e,store:t}=this,n=t.states.data.value||[];return De("tbody",{},[n.reduce((o,s)=>o.concat(e(s,o.length)),[])])}});function Op(e){const t=e.tableLayout==="auto";let n=e.columns||[];t&&n.every(s=>s.width===void 0)&&(n=[]);const o=s=>{const l={key:`${e.tableLayout}_${s.id}`,style:{},name:void 0};return t?l.style={width:`${s.width}px`}:l.name=s.id,l};return De("colgroup",{},n.map(s=>De("col",o(s))))}Op.props=["columns","tableLayout"];function _G(){const e=Ne(_o),t=e==null?void 0:e.store,n=E(()=>t.states.fixedLeafColumnsLength.value),o=E(()=>t.states.rightFixedColumns.value.length),s=E(()=>t.states.columns.value.length),l=E(()=>t.states.fixedColumns.value.length),r=E(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:n,rightFixedLeafCount:o,columnsCount:s,leftFixedCount:l,rightFixedCount:r,columns:t.states.columns}}function TG(e){const{columns:t}=_G(),n=we("table");return{getCellClasses:(l,r)=>{const a=l[r],i=[n.e("cell"),a.id,a.align,a.labelClassName,...Np(n.b(),r,a.fixed,e.store)];return a.className&&i.push(a.className),a.children||i.push(n.is("leaf")),i},getCellStyles:(l,r)=>{const a=Mp(r,l.fixed,e.store);return xl(a,"left"),xl(a,"right"),a},columns:t}}var AG=ee({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:n,columns:o}=TG(e);return{ns:we("table"),getCellClasses:t,getCellStyles:n,columns:o}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:o,sumText:s,ns:l}=this,r=this.store.states.data.value;let a=[];return o?a=o({columns:e,data:r}):e.forEach((i,u)=>{if(u===0){a[u]=s;return}const c=r.map(h=>Number(h[i.property])),d=[];let f=!0;c.forEach(h=>{if(!Number.isNaN(+h)){f=!1;const g=`${h}`.split(".")[1];d.push(g?g.length:0)}});const p=Math.max.apply(null,d);f?a[u]="":a[u]=c.reduce((h,g)=>{const m=Number(g);return Number.isNaN(+m)?h:Number.parseFloat((h+g).toFixed(Math.min(p,20)))},0)}),De("table",{class:l.e("footer"),cellspacing:"0",cellpadding:"0",border:"0"},[Op({columns:e}),De("tbody",[De("tr",{},[...e.map((i,u)=>De("td",{key:u,colspan:i.colSpan,rowspan:i.rowSpan,class:n(e,u),style:t(i,u)},[De("div",{class:["cell",i.labelClassName]},[a[u]])]))])])])}});function NG(e){return{setCurrentRow:c=>{e.commit("setCurrentRow",c)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(c,d)=>{e.toggleRowSelection(c,d,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:c=>{e.clearFilter(c)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(c,d)=>{e.toggleRowExpansionAdapter(c,d)},clearSort:()=>{e.clearSort()},sort:(c,d)=>{e.commit("sort",{prop:c,order:d})}}}function MG(e,t,n,o){const s=A(!1),l=A(null),r=A(!1),a=I=>{r.value=I},i=A({width:null,height:null}),u=A(!1),c={display:"inline-block",verticalAlign:"middle"},d=A();zn(()=>{t.setHeight(e.height)}),zn(()=>{t.setMaxHeight(e.maxHeight)}),pe(()=>[e.currentRowKey,n.states.rowKey],([I,U])=>{!y(U)||n.setCurrentRowKey(`${I}`)},{immediate:!0}),pe(()=>e.data,I=>{o.store.commit("setData",I)},{immediate:!0,deep:!0}),zn(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const f=()=>{o.store.commit("setHoverRow",null),o.hoverState&&(o.hoverState=null)},p=(I,U)=>{const{pixelX:q,pixelY:Q}=U;Math.abs(q)>=Math.abs(Q)&&(o.refs.bodyWrapper.scrollLeft+=U.pixelX/5)},h=E(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),g=E(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),m=()=>{h.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(S)};xe(async()=>{await ze(),n.updateColumns(),$(),requestAnimationFrame(m),i.value={width:d.value=o.vnode.el.offsetWidth,height:o.vnode.el.offsetHeight},n.states.columns.value.forEach(I=>{I.filteredValue&&I.filteredValue.length&&o.store.commit("filterChange",{column:I,values:I.filteredValue,silent:!0})}),o.$ready=!0});const v=(I,U)=>{if(!I)return;const q=Array.from(I.classList).filter(Q=>!Q.startsWith("is-scrolling-"));q.push(t.scrollX.value?U:"is-scrolling-none"),I.className=q.join(" ")},b=I=>{const{tableWrapper:U}=o.refs;v(U,I)},w=I=>{const{tableWrapper:U}=o.refs;return!!(U&&U.classList.contains(I))},S=function(){if(!o.refs.scrollBarRef)return;if(!t.scrollX.value){const Me="is-scrolling-none";w(Me)||b(Me);return}const I=o.refs.scrollBarRef.wrap$;if(!I)return;const{scrollLeft:U,offsetWidth:q,scrollWidth:Q}=I,{headerWrapper:Z,footerWrapper:ae}=o.refs;Z&&(Z.scrollLeft=U),ae&&(ae.scrollLeft=U);const Ee=Q-q-1;U>=Ee?b("is-scrolling-right"):b(U===0?"is-scrolling-left":"is-scrolling-middle")},$=()=>{var I;!o.refs.scrollBarRef||((I=o.refs.scrollBarRef.wrap$)==null||I.addEventListener("scroll",S,{passive:!0}),e.fit?ar(o.vnode.el,T):Tt(window,"resize",m))};_t(()=>{k()});const k=()=>{var I;(I=o.refs.scrollBarRef.wrap$)==null||I.removeEventListener("scroll",S,!0),e.fit?ir(o.vnode.el,T):Bt(window,"resize",m)},T=()=>{if(!o.$ready)return;let I=!1;const U=o.vnode.el,{width:q,height:Q}=i.value,Z=d.value=U.offsetWidth;q!==Z&&(I=!0);const ae=U.offsetHeight;(e.height||h.value)&&Q!==ae&&(I=!0),I&&(i.value={width:Z,height:ae},m())},O=Wt(),L=E(()=>{const{bodyWidth:I,scrollY:U,gutterWidth:q}=t;return I.value?`${I.value-(U.value?q:0)}px`:""}),V=E(()=>e.maxHeight?"fixed":e.tableLayout);function B(I,U,q){const Q=Kd(I),Z=e.showHeader?q:0;if(Q!==null)return Qe(Q)?`calc(${Q} - ${U}px - ${Z}px)`:Q-U-Z}const H=E(()=>{const I=t.headerHeight.value||0,U=t.bodyHeight.value,q=t.footerHeight.value||0;if(e.height)return U||void 0;if(e.maxHeight)return B(e.maxHeight,q,I)}),R=E(()=>{const I=t.headerHeight.value||0,U=t.bodyHeight.value,q=t.footerHeight.value||0;if(e.height)return{height:U?`${U}px`:""};if(e.maxHeight){const Q=B(e.maxHeight,q,I);if(Q!==null)return{"max-height":`${Q}${ht(Q)?"px":""}`}}return{}}),z=E(()=>{if(e.data&&e.data.length)return null;let I="100%";return t.appendHeight.value&&(I=`calc(100% - ${t.appendHeight.value}px)`),{width:d.value?`${d.value}px`:"",height:I}}),W=(I,U)=>{const q=o.refs.bodyWrapper;if(Math.abs(U.spinY)>0){const Q=q.scrollTop;U.pixelY<0&&Q!==0&&I.preventDefault(),U.pixelY>0&&q.scrollHeight-q.clientHeight>Q&&I.preventDefault(),q.scrollTop+=Math.ceil(U.pixelY/5)}else q.scrollLeft+=Math.ceil(U.pixelX/5)},P=E(()=>e.maxHeight?e.showSummary?{bottom:0}:{bottom:t.scrollX.value&&e.data.length?`${t.gutterWidth}px`:""}:e.showSummary?{height:t.tableHeight.value?`${t.tableHeight.value}px`:""}:{height:t.viewportHeight.value?`${t.viewportHeight.value}px`:""}),N=E(()=>{if(e.height)return{height:t.fixedBodyHeight.value?`${t.fixedBodyHeight.value}px`:""};if(e.maxHeight){let I=Kd(e.maxHeight);if(typeof I=="number")return I=t.scrollX.value?I-t.gutterWidth:I,e.showHeader&&(I-=t.headerHeight.value),I-=t.footerHeight.value,{"max-height":`${I}px`}}return{}});return{isHidden:s,renderExpanded:l,setDragVisible:a,isGroup:u,handleMouseLeave:f,handleHeaderFooterMousewheel:p,tableSize:O,bodyHeight:R,height:H,emptyBlockStyle:z,handleFixedMousewheel:W,fixedHeight:P,fixedBodyHeight:N,resizeProxyVisible:r,bodyWidth:L,resizeState:i,doLayout:m,tableBodyStyles:g,tableLayout:V,scrollbarViewStyle:c}}var OG={data:{type:Array,default:()=>[]},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1}};const IG=()=>{const e=A(),t=(l,r)=>{const a=e.value;a&&a.scrollTo(l,r)},n=(l,r)=>{const a=e.value;a&&ht(r)&&["Top","Left"].includes(l)&&a[`setScroll${l}`](r)};return{scrollBarRef:e,scrollTo:t,setScrollTop:l=>n("Top",l),setScrollLeft:l=>n("Left",l)}};let PG=1;const DG=ee({name:"ElTable",directives:{Mousewheel:oB},components:{TableHeader:wG,TableBody:EG,TableFooter:AG,ElScrollbar:Uo,hColgroup:Op},props:OG,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t}=kt(),n=we("table"),o=nt();st(_o,o);const s=rG(o,e);o.store=s;const l=new iG({store:o.store,table:o,fit:e.fit,showHeader:e.showHeader});o.layout=l;const r=E(()=>(s.states.data.value||[]).length===0),{setCurrentRow:a,getSelectionRows:i,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:p,clearSort:h,sort:g}=NG(s),{isHidden:m,renderExpanded:v,setDragVisible:b,isGroup:w,handleMouseLeave:S,handleHeaderFooterMousewheel:$,tableSize:k,bodyHeight:T,height:O,emptyBlockStyle:L,handleFixedMousewheel:V,fixedHeight:B,fixedBodyHeight:H,resizeProxyVisible:R,bodyWidth:z,resizeState:W,doLayout:P,tableBodyStyles:N,tableLayout:I,scrollbarViewStyle:U}=MG(e,l,s,o),{scrollBarRef:q,scrollTo:Q,setScrollLeft:Z,setScrollTop:ae}=IG(),Ee=hn(P,50),Me=`el-table_${PG++}`;o.tableId=Me,o.state={isGroup:w,resizeState:W,doLayout:P,debouncedUpdateLayout:Ee};const J=E(()=>e.sumText||t("el.table.sumText")),ve=E(()=>e.emptyText||t("el.table.emptyText"));return{ns:n,layout:l,store:s,handleHeaderFooterMousewheel:$,handleMouseLeave:S,tableId:Me,tableSize:k,isHidden:m,isEmpty:r,renderExpanded:v,resizeProxyVisible:R,resizeState:W,isGroup:w,bodyWidth:z,bodyHeight:T,height:O,tableBodyStyles:N,emptyBlockStyle:L,debouncedUpdateLayout:Ee,handleFixedMousewheel:V,fixedHeight:B,fixedBodyHeight:H,setCurrentRow:a,getSelectionRows:i,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:p,clearSort:h,doLayout:P,sort:g,t,setDragVisible:b,context:o,computedSumText:J,computedEmptyText:ve,tableLayout:I,scrollbarViewStyle:U,scrollBarRef:q,scrollTo:Q,setScrollLeft:Z,setScrollTop:ae}}}),LG=["data-prefix"],RG={ref:"hiddenColumns",class:"hidden-columns"};function VG(e,t,n,o,s,l){const r=le("hColgroup"),a=le("table-header"),i=le("table-body"),u=le("el-scrollbar"),c=le("table-footer"),d=Mn("mousewheel");return C(),M("div",{ref:"tableWrapper",class:_([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Pe(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=f=>e.handleMouseLeave())},[D("div",{class:_(e.ns.e("inner-wrapper"))},[D("div",RG,[ie(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?Ge((C(),M("div",{key:0,ref:"headerWrapper",class:_(e.ns.e("header-wrapper"))},[D("table",{ref:"tableHeader",class:_(e.ns.e("header")),style:Pe(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Y(r,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Y(a,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[d,e.handleHeaderFooterMousewheel]]):G("v-if",!0),D("div",{ref:"bodyWrapper",style:Pe(e.bodyHeight),class:_(e.ns.e("body-wrapper"))},[Y(u,{ref:"scrollBarRef",height:e.maxHeight?void 0:e.height,"max-height":e.maxHeight?e.height:void 0,"view-style":e.scrollbarViewStyle,always:e.scrollbarAlwaysOn},{default:j(()=>[D("table",{ref:"tableBody",class:_(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Pe({width:e.bodyWidth,tableLayout:e.tableLayout})},[Y(r,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(C(),x(a,{key:0,border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])):G("v-if",!0),Y(i,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","row-style","store","stripe"])],6),e.isEmpty?(C(),M("div",{key:0,ref:"emptyBlock",style:Pe(e.emptyBlockStyle),class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},[ie(e.$slots,"empty",{},()=>[at(he(e.computedEmptyText),1)])],2)],6)):G("v-if",!0),e.$slots.append?(C(),M("div",{key:1,ref:"appendWrapper",class:_(e.ns.e("append-wrapper"))},[ie(e.$slots,"append")],2)):G("v-if",!0)]),_:3},8,["height","max-height","view-style","always"])],6),e.border||e.isGroup?(C(),M("div",{key:1,class:_(e.ns.e("border-left-patch"))},null,2)):G("v-if",!0)],2),e.showSummary?Ge((C(),M("div",{key:0,ref:"footerWrapper",class:_(e.ns.e("footer-wrapper"))},[Y(c,{border:e.border,"default-sort":e.defaultSort,store:e.store,style:Pe(e.tableBodyStyles),"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","style","sum-text","summary-method"])],2)),[[pt,!e.isEmpty],[d,e.handleHeaderFooterMousewheel]]):G("v-if",!0),Ge(D("div",{ref:"resizeProxy",class:_(e.ns.e("column-resize-proxy"))},null,2),[[pt,e.resizeProxyVisible]])],46,LG)}var BG=ge(DG,[["render",VG],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/table.vue"]]);const FG={selection:"table-column--selection",expand:"table__expand-column"},HG={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},zG=e=>FG[e]||"",KG={selection:{renderHeader({store:e}){function t(){return e.states.data.value&&e.states.data.value.length===0}return De(ao,{disabled:t(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value})},renderCell({row:e,column:t,store:n,$index:o}){return De(ao,{disabled:t.selectable?!t.selectable.call(null,e,o):!1,size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:s=>s.stopPropagation(),modelValue:n.isSelected(e)})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const o=e.index;return typeof o=="number"?n=t+o:typeof o=="function"&&(n=o(t)),De("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({row:e,store:t,expanded:n}){const{ns:o}=t,s=[o.e("expand-icon")];return n&&s.push(o.em("expand-icon","expanded")),De("div",{class:s,onClick:function(r){r.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[De(je,null,{default:()=>[De(Zn)]})]})},sortable:!1,resizable:!1}};function WG({row:e,column:t,$index:n}){var o;const s=t.property,l=s&&di(e,s).value;return t&&t.formatter?t.formatter(e,t,l,n):((o=l==null?void 0:l.toString)==null?void 0:o.call(l))||""}function jG({row:e,treeNode:t,store:n},o=!1){const{ns:s}=n;if(!t)return o?[De("span",{class:s.e("placeholder")})]:null;const l=[],r=function(a){a.stopPropagation(),n.loadOrToggle(e)};if(t.indent&&l.push(De("span",{class:s.e("indent"),style:{"padding-left":`${t.indent}px`}})),typeof t.expanded=="boolean"&&!t.noLazyChildren){const a=[s.e("expand-icon"),t.expanded?s.em("expand-icon","expanded"):""];let i=Zn;t.loading&&(i=gs),l.push(De("div",{class:a,onClick:r},{default:()=>[De(je,{class:{[s.is("loading")]:t.loading}},{default:()=>[De(i)]})]}))}else l.push(De("span",{class:s.e("placeholder")}));return l}function Og(e,t){return e.reduce((n,o)=>(n[o]=o,n),t)}function YG(e,t){const n=nt();return{registerComplexWatchers:()=>{const l=["fixed"],r={realWidth:"width",realMinWidth:"minWidth"},a=Og(l,r);Object.keys(a).forEach(i=>{const u=r[i];rt(t,u)&&pe(()=>t[u],c=>{let d=c;u==="width"&&i==="realWidth"&&(d=Ap(c)),u==="minWidth"&&i==="realMinWidth"&&(d=yC(c)),n.columnConfig.value[u]=d,n.columnConfig.value[i]=d;const f=u==="fixed";e.value.store.scheduleLayout(f)})})},registerNormalWatchers:()=>{const l=["label","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"],r={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},a=Og(l,r);Object.keys(a).forEach(i=>{const u=r[i];rt(t,u)&&pe(()=>t[u],c=>{n.columnConfig.value[i]=c})})}}}function UG(e,t,n){const o=nt(),s=A(""),l=A(!1),r=A(),a=A(),i=we("table");zn(()=>{r.value=e.align?`is-${e.align}`:null,r.value}),zn(()=>{a.value=e.headerAlign?`is-${e.headerAlign}`:r.value,a.value});const u=E(()=>{let w=o.vnode.vParent||o.parent;for(;w&&!w.tableId&&!w.columnId;)w=w.vnode.vParent||w.parent;return w}),c=E(()=>{const{store:w}=o.parent;if(!w)return!1;const{treeData:S}=w.states,$=S.value;return $&&Object.keys($).length>0}),d=A(Ap(e.width)),f=A(yC(e.minWidth)),p=w=>(d.value&&(w.width=d.value),f.value&&(w.minWidth=f.value),w.minWidth||(w.minWidth=80),w.realWidth=Number(w.width===void 0?w.minWidth:w.width),w),h=w=>{const S=w.type,$=KG[S]||{};Object.keys($).forEach(T=>{const O=$[T];T!=="className"&&O!==void 0&&(w[T]=O)});const k=zG(S);if(k){const T=`${y(i.namespace)}-${k}`;w.className=w.className?`${w.className} ${T}`:T}return w},g=w=>{Array.isArray(w)?w.forEach($=>S($)):S(w);function S($){var k;((k=$==null?void 0:$.type)==null?void 0:k.name)==="ElTableColumn"&&($.vParent=o)}};return{columnId:s,realAlign:r,isSubColumn:l,realHeaderAlign:a,columnOrTableParent:u,setColumnWidth:p,setColumnForcedProps:h,setColumnRenders:w=>{e.renderHeader||w.type!=="selection"&&(w.renderHeader=k=>{o.columnConfig.value.label;const T=t.header;return T?T(k):w.label});let S=w.renderCell;const $=c.value;return w.type==="expand"?(w.renderCell=k=>De("div",{class:"cell"},[S(k)]),n.value.renderExpanded=k=>t.default?t.default(k):t.default):(S=S||WG,w.renderCell=k=>{let T=null;if(t.default){const B=t.default(k);T=B.some(H=>H.type!==pn)?B:S(k)}else T=S(k);const O=$&&k.cellIndex===0,L=jG(k,O),V={class:"cell",style:{}};return w.showOverflowTooltip&&(V.class=`${V.class} ${y(i.namespace)}-tooltip`,V.style={width:`${(k.column.realWidth||Number(k.column.width))-1}px`}),g(T),De("div",V,[L,T])}),w},getPropsData:(...w)=>w.reduce((S,$)=>(Array.isArray($)&&$.forEach(k=>{S[k]=e[k]}),S),{}),getColumnElIndex:(w,S)=>Array.prototype.indexOf.call(w,S)}}var qG={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let GG=1;var _C=ee({name:"ElTableColumn",components:{ElCheckbox:ao},props:qG,setup(e,{slots:t}){const n=nt(),o=A({}),s=E(()=>{let b=n.parent;for(;b&&!b.tableId;)b=b.parent;return b}),{registerNormalWatchers:l,registerComplexWatchers:r}=YG(s,e),{columnId:a,isSubColumn:i,realHeaderAlign:u,columnOrTableParent:c,setColumnWidth:d,setColumnForcedProps:f,setColumnRenders:p,getPropsData:h,getColumnElIndex:g,realAlign:m}=UG(e,t,s),v=c.value;a.value=`${v.tableId||v.columnId}_column_${GG++}`,Ca(()=>{i.value=s.value!==v;const b=e.type||"default",w=e.sortable===""?!0:e.sortable,S=Te(ne({},HG[b]),{id:a.value,type:b,property:e.prop||e.property,align:m,headerAlign:u,showOverflowTooltip:e.showOverflowTooltip||e.showTooltipWhenOverflow,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:w,index:e.index,rawColumnKey:n.vnode.key});let L=h(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);L=Zq(S,L),L=Jq(p,d,f)(L),o.value=L,l(),r()}),xe(()=>{var b;const w=c.value,S=i.value?w.vnode.el.children:(b=w.refs.hiddenColumns)==null?void 0:b.children,$=()=>g(S||[],n.vnode.el);o.value.getColumnIndex=$,$()>-1&&s.value.store.commit("insertColumn",o.value,i.value?w.columnConfig.value:null)}),_t(()=>{s.value.store.commit("removeColumn",o.value,i.value?v.columnConfig.value:null)}),n.columnId=a.value,n.columnConfig=o},render(){var e,t,n;try{const o=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),s=[];if(Array.isArray(o))for(const r of o)((n=r.type)==null?void 0:n.name)==="ElTableColumn"||r.shapeFlag&2?s.push(r):r.type===Le&&Array.isArray(r.children)&&r.children.forEach(a=>{(a==null?void 0:a.patchFlag)!==1024&&!Qe(a==null?void 0:a.children)&&s.push(a)});return De("div",s)}catch{return De("div",[])}}});const XG=ot(BG,{TableColumn:_C}),ZG=Rt(_C),JG=Be({tabs:{type:$e(Array),default:()=>Dt([])}}),QG={name:"ElTabBar"},xG=ee(Te(ne({},QG),{props:JG,setup(e,{expose:t}){const n=e,o="ElTabBar",s=nt(),l=Ne(Vu);l||Kt(o,"");const r=we("tabs"),a=A(),i=A(),u=()=>{let d=0,f=0;const p=["top","bottom"].includes(l.props.tabPosition)?"width":"height",h=p==="width"?"x":"y";return n.tabs.every(g=>{var m,v,b,w;const S=(v=(m=s.parent)==null?void 0:m.refs)==null?void 0:v[`tab-${g.paneName}`];if(!S)return!1;if(!g.active)return!0;f=S[`client${yn(p)}`];const $=h==="x"?"left":"top";d=S.getBoundingClientRect()[$]-((w=(b=S.parentElement)==null?void 0:b.getBoundingClientRect()[$])!=null?w:0);const k=window.getComputedStyle(S);return p==="width"&&(n.tabs.length>1&&(f-=Number.parseFloat(k.paddingLeft)+Number.parseFloat(k.paddingRight)),d+=Number.parseFloat(k.paddingLeft)),!1}),{[p]:`${f}px`,transform:`translate${yn(h)}(${d}px)`}},c=()=>i.value=u();return pe(()=>n.tabs,async()=>{await ze(),c()},{immediate:!0}),rr(a,()=>c()),t({ref:a,update:c}),(d,f)=>(C(),M("div",{ref_key:"barRef",ref:a,class:_([y(r).e("active-bar"),y(r).is(y(l).props.tabPosition)]),style:Pe(i.value)},null,6))}}));var eX=ge(xG,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-bar.vue"]]);const tX=Be({panes:{type:$e(Array),default:()=>Dt([])},currentName:{type:[String,Number],default:""},editable:Boolean,onTabClick:{type:$e(Function),default:wt},onTabRemove:{type:$e(Function),default:wt},type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),Ig="ElTabNav",nX=ee({name:Ig,props:tX,setup(e,{expose:t}){const n=Ne(Vu);n||Kt(Ig,"");const o=we("tabs"),s=Y3(),l=X3(),r=A(),a=A(),i=A(),u=A(!1),c=A(0),d=A(!1),f=A(!0),p=E(()=>["top","bottom"].includes(n.props.tabPosition)?"width":"height"),h=E(()=>({transform:`translate${p.value==="width"?"X":"Y"}(-${c.value}px)`})),g=()=>{if(!r.value)return;const k=r.value[`offset${yn(p.value)}`],T=c.value;if(!T)return;const O=T>k?T-k:0;c.value=O},m=()=>{if(!r.value||!a.value)return;const k=a.value[`offset${yn(p.value)}`],T=r.value[`offset${yn(p.value)}`],O=c.value;if(k-O<=T)return;const L=k-O>T*2?O+T:k-T;c.value=L},v=()=>{const k=a.value;if(!u.value||!i.value||!r.value||!k)return;const T=i.value.querySelector(".is-active");if(!T)return;const O=r.value,L=["top","bottom"].includes(n.props.tabPosition),V=T.getBoundingClientRect(),B=O.getBoundingClientRect(),H=L?k.offsetWidth-B.width:k.offsetHeight-B.height,R=c.value;let z=R;L?(V.leftB.right&&(z=R+V.right-B.right)):(V.topB.bottom&&(z=R+(V.bottom-B.bottom))),z=Math.max(z,0),c.value=Math.min(z,H)},b=()=>{if(!a.value||!r.value)return;const k=a.value[`offset${yn(p.value)}`],T=r.value[`offset${yn(p.value)}`],O=c.value;if(T0&&(c.value=0)},w=k=>{const T=k.code,{up:O,down:L,left:V,right:B}=Ie;if(![O,L,V,B].includes(T))return;const H=Array.from(k.currentTarget.querySelectorAll("[role=tab]")),R=H.indexOf(k.target);let z;T===V||T===O?R===0?z=H.length-1:z=R-1:R{f.value&&(d.value=!0)},$=()=>d.value=!1;return pe(s,k=>{k==="hidden"?f.value=!1:k==="visible"&&setTimeout(()=>f.value=!0,50)}),pe(l,k=>{k?setTimeout(()=>f.value=!0,50):f.value=!1}),rr(i,b),xe(()=>setTimeout(()=>v(),0)),Xn(()=>b()),t({scrollToActiveTab:v,removeFocus:$}),()=>{const k=u.value?[Y("span",{class:[o.e("nav-prev"),o.is("disabled",!u.value.prev)],onClick:g},[Y(je,null,{default:()=>[Y(fl,null,null)]})]),Y("span",{class:[o.e("nav-next"),o.is("disabled",!u.value.next)],onClick:m},[Y(je,null,{default:()=>[Y(Zn,null,null)]})])]:null,T=e.panes.map((O,L)=>{var V,B;const H=O.props.name||O.index||`${L}`,R=O.isClosable||e.editable;O.index=`${L}`;const z=R?Y(je,{class:"is-icon-close",onClick:N=>e.onTabRemove(O,N)},{default:()=>[Y(Yn,null,null)]}):null,W=((B=(V=O.instance.slots).label)==null?void 0:B.call(V))||O.props.label,P=O.active?0:-1;return Y("div",{ref:`tab-${H}`,class:[o.e("item"),o.is(n.props.tabPosition),o.is("active",O.active),o.is("disabled",O.props.disabled),o.is("closable",R),o.is("focus",d.value)],id:`tab-${H}`,key:`tab-${H}`,"aria-controls":`pane-${H}`,role:"tab","aria-selected":O.active,tabindex:P,onFocus:()=>S(),onBlur:()=>$(),onClick:N=>{$(),e.onTabClick(O,H,N)},onKeydown:N=>{R&&(N.code===Ie.delete||N.code===Ie.backspace)&&e.onTabRemove(O,N)}},[W,z])});return Y("div",{ref:i,class:[o.e("nav-wrap"),o.is("scrollable",!!u.value),o.is(n.props.tabPosition)]},[k,Y("div",{class:o.e("nav-scroll"),ref:r},[Y("div",{class:[o.e("nav"),o.is(n.props.tabPosition),o.is("stretch",e.stretch&&["top","bottom"].includes(n.props.tabPosition))],ref:a,style:h.value,role:"tablist",onKeydown:w},[e.type?null:Y(eX,{tabs:[...e.panes]},null),T])])])}}}),oX=Be({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number],default:""},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:$e(Function),default:()=>!0},stretch:Boolean}),Qa=e=>Qe(e)||ht(e),sX={[tt]:e=>Qa(e),[ps]:e=>Qa(e),"tab-click":(e,t)=>t instanceof Event,"tab-change":e=>Qa(e),edit:(e,t)=>["remove","add"].includes(t),"tab-remove":e=>Qa(e),"tab-add":()=>!0},TC=(e,t=[])=>{const n=e.children||[];return Array.from(n).forEach(o=>{let s=o.type;s=s.name||s,s==="ElTabPane"&&o.component?t.push(o.component):(s===Le||s==="template")&&TC(o,t)}),t};var lX=ee({name:"ElTabs",props:oX,emits:sX,setup(e,{emit:t,slots:n,expose:o}){const s=nt();Na({scope:"el-tabs",type:"Event",from:"input",replacement:"tab-change",version:"2.5.0",ref:"https://element-plus.org/en-US/component/tabs.html#tabs-events"},E(()=>{var m;return et((m=s.vnode.props)==null?void 0:m.onInput)}));const l=we("tabs"),r=A(),a=A([]),i=A(e.modelValue||e.activeName||"0"),u={},c=(m=!1)=>{if(n.default){const v=s.subTree.children,b=Array.from(v).find(({props:$})=>($==null?void 0:$.class)===l.e("content"));if(!b)return;const w=TC(b).map($=>u[$.uid]),S=!(w.length===a.value.length&&w.every(($,k)=>$.uid===a.value[k].uid));(m||S)&&(a.value=w)}else a.value.length!==0&&(a.value=[])},d=m=>{i.value=m,t(ps,m),t(tt,m),t("tab-change",m)},f=m=>{var v;if(i.value===m)return;const b=(v=e.beforeLeave)==null?void 0:v.call(e,m,i.value);xs(b)?b.then(()=>{var w,S;d(m),(S=(w=r.value)==null?void 0:w.removeFocus)==null||S.call(w)},wt):b!==!1&&d(m)},p=(m,v,b)=>{m.props.disabled||(f(v),t("tab-click",m,b))},h=(m,v)=>{m.props.disabled||(v.stopPropagation(),t("edit",m.props.name,"remove"),t("tab-remove",m.props.name))},g=()=>{t("edit",void 0,"add"),t("tab-add")};return Xn(()=>c()),xe(()=>c()),pe(()=>e.activeName,m=>f(m)),pe(()=>e.modelValue,m=>f(m)),pe(i,async()=>{var m,v;c(!0),await ze(),await((m=r.value)==null?void 0:m.$nextTick()),(v=r.value)==null||v.scrollToActiveTab()}),st(Vu,{props:e,currentName:i,updatePaneState:m=>u[m.uid]=m}),o({currentName:i}),()=>{const m=e.editable||e.addable?Y("span",{class:l.e("new-tab"),tabindex:"0",onClick:g,onKeydown:w=>{w.code===Ie.enter&&g()}},[Y(je,{class:l.is("icon-plus")},{default:()=>[Y(V0,null,null)]})]):null,v=Y("div",{class:[l.e("header"),l.is(e.tabPosition)]},[m,Y(nX,{ref:r,currentName:i.value,editable:e.editable,type:e.type,panes:a.value,stretch:e.stretch,onTabClick:p,onTabRemove:h},null)]),b=Y("div",{class:l.e("content")},[ie(n,"default")]);return Y("div",{class:[l.b(),l.m(e.tabPosition),{[l.m("card")]:e.type==="card",[l.m("border-card")]:e.type==="border-card"}]},[...e.tabPosition!=="bottom"?[v,b]:[b,v]])}}});const rX=Be({label:{type:String,default:""},name:{type:[String,Number],default:""},closable:Boolean,disabled:Boolean,lazy:Boolean}),aX=["id","aria-hidden","aria-labelledby"],iX={name:"ElTabPane"},uX=ee(Te(ne({},iX),{props:rX,setup(e){const t=e,n="ElTabPane",o=nt(),s=Ne(Vu);s||Kt(n,"usage: ");const l=we("tab-pane"),r=A(),a=E(()=>t.closable||s.props.closable),i=lv(()=>s.currentName.value===(t.name||r.value)),u=A(i.value),c=E(()=>t.name||r.value),d=lv(()=>!t.lazy||u.value||i.value);return pe(i,f=>{f&&(u.value=!0)}),s.updatePaneState(yt({uid:o.uid,instance:Xr(o),props:t,paneName:c,active:i,index:r,isClosable:a})),(f,p)=>y(d)?Ge((C(),M("div",{key:0,id:`pane-${y(c)}`,class:_(y(l).b()),role:"tabpanel","aria-hidden":!y(i),"aria-labelledby":`tab-${y(c)}`},[ie(f.$slots,"default")],10,aX)),[[pt,y(i)]]):G("v-if",!0)}}));var AC=ge(uX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-pane.vue"]]);const cX=ot(lX,{TabPane:AC}),dX=Rt(AC);Ze.extend(fp);const{Option:fX}=sl,Oo=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const o=Number.parseInt(t[1],10),s=e.toUpperCase();return s.includes("AM")&&n===12?n=0:s.includes("PM")&&n!==12&&(n+=12),{hours:n,minutes:o}}return null},Dc=(e,t)=>{const n=Oo(e),o=Oo(t),s=n.minutes+n.hours*60,l=o.minutes+o.hours*60;return s===l?0:s>l?1:-1},Pg=e=>`${e}`.padStart(2,"0"),El=e=>`${Pg(e.hours)}:${Pg(e.minutes)}`,pX=(e,t)=>{const n=Oo(e),o=Oo(t),s={hours:n.hours,minutes:n.minutes};return s.minutes+=o.minutes,s.hours+=o.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,El(s)},hX=ee({name:"ElTimeSelect",components:{ElSelect:sl,ElOption:fX,ElIcon:je},model:{prop:"value",event:"change"},props:{format:{type:String,default:"HH:mm"},modelValue:String,disabled:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},effect:{type:String,default:"light"},clearable:{type:Boolean,default:!0},size:{type:String,values:Eo,default:""},placeholder:{type:String,default:""},start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:{type:String,default:""},maxTime:{type:String,default:""},name:{type:String,default:""},prefixIcon:{type:[String,Object],default:R0},clearIcon:{type:[String,Object],default:Fo}},emits:["change","blur","focus","update:modelValue"],setup(e){const t=A(null),n=E(()=>e.modelValue),o=E(()=>{const d=Oo(e.start);return El(d)}),s=E(()=>{const d=Oo(e.end);return El(d)}),l=E(()=>{const d=Oo(e.step);return El(d)}),r=E(()=>{const d=Oo(e.minTime);return d?El(d):null}),a=E(()=>{const d=Oo(e.maxTime);return d?El(d):null}),i=E(()=>{const d=[];if(e.start&&e.end&&e.step){let f=o.value,p;for(;Dc(f,s.value)<=0;)p=Ze(f,"HH:mm").format(e.format),d.push({value:p,disabled:Dc(f,r.value||"-1:-1")<=0||Dc(f,a.value||"100:100")>=0}),f=pX(f,l.value)}return d});return{select:t,value:n,items:i,blur:()=>{var d,f;(f=(d=t.value)==null?void 0:d.blur)==null||f.call(d)},focus:()=>{var d,f;(f=(d=t.value)==null?void 0:d.focus)==null||f.call(d)}}}});function mX(e,t,n,o,s,l){const r=le("el-option"),a=le("el-icon"),i=le("el-select");return C(),x(i,{ref:"select","model-value":e.value,disabled:e.disabled,clearable:e.clearable,"clear-icon":e.clearIcon,size:e.size,effect:e.effect,placeholder:e.placeholder,"default-first-option":"",filterable:e.editable,"onUpdate:modelValue":t[0]||(t[0]=u=>e.$emit("update:modelValue",u)),onChange:t[1]||(t[1]=u=>e.$emit("change",u)),onBlur:t[2]||(t[2]=u=>e.$emit("blur",u)),onFocus:t[3]||(t[3]=u=>e.$emit("focus",u))},{prefix:j(()=>[e.prefixIcon?(C(),x(a,{key:0,class:"el-input__prefix-icon"},{default:j(()=>[(C(),x(ft(e.prefixIcon)))]),_:1})):G("v-if",!0)]),default:j(()=>[(C(!0),M(Le,null,it(e.items,u=>(C(),x(r,{key:u.value,label:u.value,value:u.value,disabled:u.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable"])}var Ni=ge(hX,[["render",mX],["__file","/home/runner/work/element-plus/element-plus/packages/components/time-select/src/time-select.vue"]]);Ni.install=e=>{e.component(Ni.name,Ni)};const vX=Ni,gX=vX,bX=ee({name:"ElTimeline",setup(e,{slots:t}){const n=we("timeline");return st("timeline",t),()=>De("ul",{class:[n.b()]},[ie(t,"default")])}}),yX=Be({timestamp:{type:String,default:""},hideTimestamp:{type:Boolean,default:!1},center:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:{type:String,default:""},color:{type:String,default:""},size:{type:String,default:"normal"},icon:{type:nn,default:""},hollow:{type:Boolean,default:!1}}),wX=ee({name:"ElTimelineItem",components:{ElIcon:je},props:yX,setup(){return{ns:we("timeline-item")}}});function CX(e,t,n,o,s,l){const r=le("el-icon");return C(),M("li",{class:_([e.ns.b(),{[e.ns.e("center")]:e.center}])},[D("div",{class:_(e.ns.e("tail"))},null,2),e.$slots.dot?G("v-if",!0):(C(),M("div",{key:0,class:_([e.ns.e("node"),e.ns.em("node",e.size||""),e.ns.em("node",e.type||""),e.ns.is("hollow",e.hollow)]),style:Pe({backgroundColor:e.color})},[e.icon?(C(),x(r,{key:0,class:_(e.ns.e("icon"))},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class"])):G("v-if",!0)],6)),e.$slots.dot?(C(),M("div",{key:1,class:_(e.ns.e("dot"))},[ie(e.$slots,"dot")],2)):G("v-if",!0),D("div",{class:_(e.ns.e("wrapper"))},[!e.hideTimestamp&&e.placement==="top"?(C(),M("div",{key:0,class:_([e.ns.e("timestamp"),e.ns.is("top")])},he(e.timestamp),3)):G("v-if",!0),D("div",{class:_(e.ns.e("content"))},[ie(e.$slots,"default")],2),!e.hideTimestamp&&e.placement==="bottom"?(C(),M("div",{key:1,class:_([e.ns.e("timestamp"),e.ns.is("bottom")])},he(e.timestamp),3)):G("v-if",!0)],2)],2)}var NC=ge(wX,[["render",CX],["__file","/home/runner/work/element-plus/element-plus/packages/components/timeline/src/timeline-item.vue"]]);const $X=ot(bX,{TimelineItem:NC}),kX=Rt(NC),MC=Be({nowrap:Boolean});var OC=(e=>(e.top="top",e.bottom="bottom",e.left="left",e.right="right",e))(OC||{});const SX=Object.values(OC),Ip=Be({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:$e(Object),default:null}}),EX=Be({side:{type:$e(String),values:SX,required:!0}}),_X=["absolute","fixed"],TX=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],Pp=Be({ariaLabel:String,arrowPadding:{type:$e(Number),default:5},effect:{type:String,default:""},contentClass:String,placement:{type:$e(String),values:TX,default:"bottom"},reference:{type:$e(Object),default:null},offset:{type:Number,default:8},strategy:{type:$e(String),values:_X,default:"absolute"},showArrow:{type:Boolean,default:!1}}),Dp=Be({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:$e(Function)},"onUpdate:open":{type:$e(Function)}}),Cl={type:$e(Function)},Lp=Be({onBlur:Cl,onClick:Cl,onFocus:Cl,onMouseDown:Cl,onMouseEnter:Cl,onMouseLeave:Cl}),AX=Be(Te(ne(ne(ne(ne({},Dp),Ip),Lp),Pp),{alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:$e(Object),default:null},teleported:Boolean,to:{type:$e(String),default:"body"}})),NX={name:"ElTooltipV2Root"},MX=ee(Te(ne({},NX),{props:Dp,setup(e,{expose:t}){const n=e,o=A(n.defaultOpen),s=A(null),l=E({get:()=>e4(n.open)?o.value:n.open,set:m=>{var v;o.value=m,(v=n["onUpdate:open"])==null||v.call(n,m)}}),r=E(()=>ht(n.delayDuration)&&n.delayDuration>0),{start:a,stop:i}=nl(()=>{l.value=!0},E(()=>n.delayDuration),{immediate:!1}),u=we("tooltip-v2"),c=ip(),d=()=>{i(),l.value=!0},f=()=>{y(r)?a():d()},p=d,h=()=>{i(),l.value=!1};return pe(l,m=>{var v;m&&(document.dispatchEvent(new CustomEvent(hc)),p()),(v=n.onOpenChange)==null||v.call(n,m)}),xe(()=>{document.addEventListener(hc,h)}),_t(()=>{i(),document.removeEventListener(hc,h)}),st(Bu,{contentId:c,triggerRef:s,ns:u,onClose:h,onDelayOpen:f,onOpen:p}),t({onOpen:p,onClose:h}),(m,v)=>ie(m.$slots,"default",{open:y(l)})}}));var OX=ge(MX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/root.vue"]]);const IX={name:"ElTooltipV2Arrow"},PX=ee(Te(ne({},IX),{props:ne(ne({},Ip),EX),setup(e){const t=e,{ns:n}=Ne(Bu),{arrowRef:o}=Ne(l1),s=E(()=>{const{style:l,width:r,height:a}=t,i=n.namespace.value;return ne({[`--${i}-tooltip-v2-arrow-width`]:`${r}px`,[`--${i}-tooltip-v2-arrow-height`]:`${a}px`,[`--${i}-tooltip-v2-arrow-border-width`]:`${r/2}px`,[`--${i}-tooltip-v2-arrow-cover-width`]:r/2-1},l||{})});return(l,r)=>(C(),M("span",{ref_key:"arrowRef",ref:o,style:Pe(y(s)),class:_(y(n).e("arrow"))},null,6))}}));var Dg=ge(PX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/arrow.vue"]]);const DX=["data-side"],LX={name:"ElTooltipV2Content"},RX=ee(Te(ne({},LX),{props:ne(ne({},Pp),MC),setup(e){const t=e,{triggerRef:n,contentId:o}=Ne(Bu),s=A(t.placement),l=A(t.strategy),r=A(null),{referenceRef:a,contentRef:i,middlewareData:u,x:c,y:d,update:f}=c6({placement:s,strategy:l,middleware:E(()=>{const w=[o6(t.offset)];return t.showArrow&&w.push(d6({arrowRef:r})),w})}),p=jo().nextZIndex(),h=we("tooltip-v2"),g=E(()=>s.value.split("-")[0]),m=E(()=>({position:y(l),top:`${y(d)||0}px`,left:`${y(c)||0}px`,zIndex:p})),v=E(()=>{if(!t.showArrow)return{};const{arrow:w}=y(u);return{[`--${h.namespace.value}-tooltip-v2-arrow-x`]:`${w==null?void 0:w.x}px`||"",[`--${h.namespace.value}-tooltip-v2-arrow-y`]:`${w==null?void 0:w.y}px`||""}}),b=E(()=>[h.e("content"),h.is("dark",t.effect==="dark"),h.is(y(l)),t.contentClass]);return pe(r,()=>f()),pe(()=>t.placement,w=>s.value=w),xe(()=>{pe(()=>t.reference||n.value,w=>{a.value=w||void 0},{immediate:!0})}),st(l1,{arrowRef:r}),(w,S)=>(C(),M("div",{ref_key:"contentRef",ref:i,style:Pe(y(m)),"data-tooltip-v2-root":""},[w.nowrap?G("v-if",!0):(C(),M("div",{key:0,"data-side":y(g),class:_(y(b))},[ie(w.$slots,"default",{contentStyle:y(m),contentClass:y(b)}),Y(y(N1),{id:y(o),role:"tooltip"},{default:j(()=>[w.ariaLabel?(C(),M(Le,{key:0},[at(he(w.ariaLabel),1)],2112)):ie(w.$slots,"default",{key:1})]),_:3},8,["id"]),ie(w.$slots,"arrow",{style:Pe(y(v)),side:y(g)})],10,DX))],4))}}));var Lg=ge(RX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/content.vue"]]);const VX=Be({setRef:{type:$e(Function),required:!0},onlyChild:Boolean});var BX=ee({props:VX,setup(e,{slots:t}){const n=A(),o=op(n,s=>{s?e.setRef(s.nextElementSibling):e.setRef(null)});return()=>{var s;const[l]=((s=t.default)==null?void 0:s.call(t))||[],r=e.onlyChild?$8(l.children):l.children;return Y(Le,{ref:o},[r])}}});const FX={name:"ElTooltipV2Trigger"},HX=ee(Te(ne({},FX),{props:ne(ne({},MC),Lp),setup(e){const t=e,{onClose:n,onOpen:o,onDelayOpen:s,triggerRef:l,contentId:r}=Ne(Bu);let a=!1;const i=b=>{l.value=b},u=()=>{a=!1},c=Pt(t.onMouseEnter,s),d=Pt(t.onMouseLeave,n),f=Pt(t.onMouseDown,()=>{n(),a=!0,document.addEventListener("mouseup",u,{once:!0})}),p=Pt(t.onFocus,()=>{a||o()}),h=Pt(t.onBlur,n),g=Pt(t.onClick,b=>{b.detail===0&&n()}),m={blur:h,click:g,focus:p,mousedown:f,mouseenter:c,mouseleave:d},v=(b,w,S)=>{b&&Object.entries(w).forEach(([$,k])=>{b[S]($,k)})};return pe(l,(b,w)=>{v(b,m,"addEventListener"),v(w,m,"removeEventListener"),b&&b.setAttribute("aria-describedby",r.value)}),_t(()=>{v(l.value,m,"removeEventListener"),document.removeEventListener("mouseup",u)}),(b,w)=>b.nowrap?(C(),x(y(BX),{key:0,"set-ref":i,"only-child":""},{default:j(()=>[ie(b.$slots,"default")]),_:3})):(C(),M("button",Et({key:1,ref_key:"triggerRef",ref:l},b.$attrs),[ie(b.$slots,"default")],16))}}));var zX=ge(HX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/trigger.vue"]]);const KX={name:"ElTooltipV2"},WX=ee(Te(ne({},KX),{props:AX,setup(e){const n=Ut(e),o=yt(os(n,Object.keys(Ip))),s=yt(os(n,Object.keys(Pp))),l=yt(os(n,Object.keys(Dp))),r=yt(os(n,Object.keys(Lp)));return(a,i)=>(C(),x(OX,to(ds(y(l))),{default:j(({open:u})=>[Y(zX,Et(y(r),{nowrap:""}),{default:j(()=>[ie(a.$slots,"trigger")]),_:3},16),(C(),x(ka,{to:a.to,disabled:!a.teleported},[a.fullTransition?(C(),x(zt,to(Et({key:0},a.transitionProps)),{default:j(()=>[a.alwaysOn||u?(C(),x(Lg,to(Et({key:0},y(s))),{arrow:j(({style:c,side:d})=>[a.showArrow?(C(),x(Dg,Et({key:0},y(o),{style:c,side:d}),null,16,["style","side"])):G("v-if",!0)]),default:j(()=>[ie(a.$slots,"default")]),_:3},16)):G("v-if",!0)]),_:2},1040)):(C(),M(Le,{key:1},[a.alwaysOn||u?(C(),x(Lg,to(Et({key:0},y(s))),{arrow:j(({style:c,side:d})=>[a.showArrow?(C(),x(Dg,Et({key:0},y(o),{style:c,side:d}),null,16,["style","side"])):G("v-if",!0)]),default:j(()=>[ie(a.$slots,"default")]),_:3},16)):G("v-if",!0)],2112))],8,["to","disabled"]))]),_:3},16))}}));var jX=ge(WX,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/tooltip.vue"]]);const YX=ot(jX),jd="checked-change",UX={data:{type:Array,default(){return[]}},optionRender:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},qX=(e,t)=>{const{emit:n}=nt(),o=E(()=>e.props.label||"label"),s=E(()=>e.props.key||"key"),l=E(()=>e.props.disabled||"disabled"),r=E(()=>e.data.filter(f=>typeof e.filterMethod=="function"?e.filterMethod(t.query,f):(f[o.value]||f[s.value].toString()).toLowerCase().includes(t.query.toLowerCase()))),a=E(()=>r.value.filter(f=>!f[l.value])),i=E(()=>{const f=t.checked.length,p=e.data.length,{noChecked:h,hasChecked:g}=e.format;return h&&g?f>0?g.replace(/\${checked}/g,f.toString()).replace(/\${total}/g,p.toString()):h.replace(/\${total}/g,p.toString()):`${f}/${p}`}),u=E(()=>{const f=t.checked.length;return f>0&&f{const f=a.value.map(p=>p[s.value]);t.allChecked=f.length>0&&f.every(p=>t.checked.includes(p))},d=f=>{t.checked=f?a.value.map(p=>p[s.value]):[]};return pe(()=>t.checked,(f,p)=>{if(c(),t.checkChangeByUser){const h=f.concat(p).filter(g=>!f.includes(g)||!p.includes(g));n(jd,f,h)}else n(jd,f),t.checkChangeByUser=!0}),pe(a,()=>{c()}),pe(()=>e.data,()=>{const f=[],p=r.value.map(h=>h[s.value]);t.checked.forEach(h=>{p.includes(h)&&f.push(h)}),t.checkChangeByUser=!1,t.checked=f}),pe(()=>e.defaultChecked,(f,p)=>{if(p&&f.length===p.length&&f.every(m=>p.includes(m)))return;const h=[],g=a.value.map(m=>m[s.value]);f.forEach(m=>{g.includes(m)&&h.push(m)}),t.checkChangeByUser=!1,t.checked=h},{immediate:!0}),{labelProp:o,keyProp:s,disabledProp:l,filteredData:r,checkableData:a,checkedSummary:i,isIndeterminate:u,updateAllChecked:c,handleAllCheckedChange:d}},GX=ee({name:"ElTransferPanel",components:{ElCheckboxGroup:rw,ElCheckbox:ao,ElInput:Jn,OptionContent:({option:e})=>e},props:UX,emits:[jd],setup(e,{slots:t}){const{t:n}=kt(),o=we("transfer"),s=yt({checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}),{labelProp:l,keyProp:r,disabledProp:a,filteredData:i,checkedSummary:u,isIndeterminate:c,handleAllCheckedChange:d}=qX(e,s),f=E(()=>s.query.length>0&&i.value.length===0),p=E(()=>!!t.default()[0].children.length),{checked:h,allChecked:g,query:m,inputHover:v,checkChangeByUser:b}=Ut(s);return{ns:o,labelProp:l,keyProp:r,disabledProp:a,filteredData:i,checkedSummary:u,isIndeterminate:c,handleAllCheckedChange:d,checked:h,allChecked:g,query:m,inputHover:v,checkChangeByUser:b,hasNoMatch:f,SearchIcon:ML,hasFooter:p,t:n}}});function XX(e,t,n,o,s,l){const r=le("el-checkbox"),a=le("el-input"),i=le("option-content"),u=le("el-checkbox-group");return C(),M("div",{class:_(e.ns.b("panel"))},[D("p",{class:_(e.ns.be("panel","header"))},[Y(r,{modelValue:e.allChecked,"onUpdate:modelValue":t[0]||(t[0]=c=>e.allChecked=c),indeterminate:e.isIndeterminate,onChange:e.handleAllCheckedChange},{default:j(()=>[at(he(e.title)+" ",1),D("span",null,he(e.checkedSummary),1)]),_:1},8,["modelValue","indeterminate","onChange"])],2),D("div",{class:_([e.ns.be("panel","body"),e.ns.is("with-footer",e.hasFooter)])},[e.filterable?(C(),x(a,{key:0,modelValue:e.query,"onUpdate:modelValue":t[1]||(t[1]=c=>e.query=c),class:_(e.ns.be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":e.SearchIcon,clearable:"",onMouseenter:t[2]||(t[2]=c=>e.inputHover=!0),onMouseleave:t[3]||(t[3]=c=>e.inputHover=!1)},null,8,["modelValue","class","placeholder","prefix-icon"])):G("v-if",!0),Ge(Y(u,{modelValue:e.checked,"onUpdate:modelValue":t[4]||(t[4]=c=>e.checked=c),class:_([e.ns.is("filterable",e.filterable),e.ns.be("panel","list")])},{default:j(()=>[(C(!0),M(Le,null,it(e.filteredData,c=>(C(),x(r,{key:c[e.keyProp],class:_(e.ns.be("panel","item")),label:c[e.keyProp],disabled:c[e.disabledProp]},{default:j(()=>[Y(i,{option:e.optionRender(c)},null,8,["option"])]),_:2},1032,["class","label","disabled"]))),128))]),_:1},8,["modelValue","class"]),[[pt,!e.hasNoMatch&&e.data.length>0]]),Ge(D("p",{class:_(e.ns.be("panel","empty"))},he(e.hasNoMatch?e.t("el.transfer.noMatch"):e.t("el.transfer.noData")),3),[[pt,e.hasNoMatch||e.data.length===0]])],2),e.hasFooter?(C(),M("p",{key:0,class:_(e.ns.be("panel","footer"))},[ie(e.$slots,"default")],2)):G("v-if",!0)],2)}var ZX=ge(GX,[["render",XX],["__file","/home/runner/work/element-plus/element-plus/packages/components/transfer/src/transfer-panel.vue"]]);const JX=e=>{const t=E(()=>e.props.key),n=E(()=>e.data.reduce((l,r)=>(l[r[t.value]]=r)&&l,{})),o=E(()=>e.data.filter(l=>!e.modelValue.includes(l[t.value]))),s=E(()=>e.targetOrder==="original"?e.data.filter(l=>e.modelValue.includes(l[t.value])):e.modelValue.reduce((l,r)=>{const a=n.value[r];return a&&l.push(a),l},[]));return{propsKey:t,sourceData:o,targetData:s}},IC="left-check-change",PC="right-check-change",QX=(e,t)=>({onSourceCheckedChange:(s,l)=>{e.leftChecked=s,l!==void 0&&t(IC,s,l)},onTargetCheckedChange:(s,l)=>{e.rightChecked=s,l!==void 0&&t(PC,s,l)}}),xX=(e,t,n,o)=>{const s=(a,i,u)=>{o(tt,a),o(qt,a,i,u)};return{addToLeft:()=>{const a=e.modelValue.slice();t.rightChecked.forEach(i=>{const u=a.indexOf(i);u>-1&&a.splice(u,1)}),s(a,"left",t.rightChecked)},addToRight:()=>{let a=e.modelValue.slice();const i=e.data.filter(u=>{const c=u[n.value];return t.leftChecked.includes(c)&&!e.modelValue.includes(c)}).map(u=>u[n.value]);a=e.targetOrder==="unshift"?i.concat(a):a.concat(i),e.targetOrder==="original"&&(a=e.data.filter(u=>a.includes(u[n.value])).map(u=>u[n.value])),s(a,"right",t.leftChecked)}}},eZ=ee({name:"ElTransfer",components:{TransferPanel:ZX,ElButton:Kn,ElIcon:je,ArrowLeft:fl,ArrowRight:Zn},props:{data:{type:Array,default:()=>[]},titles:{type:Array,default:()=>[]},buttonTexts:{type:Array,default:()=>[]},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:()=>[]},rightDefaultChecked:{type:Array,default:()=>[]},renderContent:Function,modelValue:{type:Array,default:()=>[]},format:{type:Object,default:()=>({})},filterable:{type:Boolean,default:!1},props:{type:Object,default:()=>({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,default:"original",validator:e=>["original","push","unshift"].includes(e)}},emits:[tt,qt,IC,PC],setup(e,{emit:t,slots:n}){const{t:o}=kt(),s=we("transfer"),l=Ne(Un,{}),r=yt({leftChecked:[],rightChecked:[]}),{propsKey:a,sourceData:i,targetData:u}=JX(e),{onSourceCheckedChange:c,onTargetCheckedChange:d}=QX(r,t),{addToLeft:f,addToRight:p}=xX(e,r,a,t),h=A(),g=A(),m=k=>{switch(k){case"left":h.value.query="";break;case"right":g.value.query="";break}},v=E(()=>e.buttonTexts.length===2),b=E(()=>e.titles[0]||o("el.transfer.titles.0")),w=E(()=>e.titles[1]||o("el.transfer.titles.1")),S=E(()=>e.filterPlaceholder||o("el.transfer.filterPlaceholder"));pe(()=>e.modelValue,()=>{var k;(k=l.validate)==null||k.call(l,"change").catch(T=>void 0)});const $=E(()=>k=>e.renderContent?e.renderContent(De,k):n.default?n.default({option:k}):De("span",k[e.props.label]||k[e.props.key]));return Te(ne({ns:s,sourceData:i,targetData:u,onSourceCheckedChange:c,onTargetCheckedChange:d,addToLeft:f,addToRight:p},Ut(r)),{hasButtonTexts:v,leftPanelTitle:b,rightPanelTitle:w,panelFilterPlaceholder:S,clearQuery:m,leftPanel:h,rightPanel:g,optionRender:$})}}),tZ={key:0},nZ={key:0};function oZ(e,t,n,o,s,l){const r=le("transfer-panel"),a=le("arrow-left"),i=le("el-icon"),u=le("el-button"),c=le("arrow-right");return C(),M("div",{class:_(e.ns.b())},[Y(r,{ref:"leftPanel",data:e.sourceData,"option-render":e.optionRender,placeholder:e.panelFilterPlaceholder,title:e.leftPanelTitle,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:e.props,onCheckedChange:e.onSourceCheckedChange},{default:j(()=>[ie(e.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),D("div",{class:_(e.ns.e("buttons"))},[Y(u,{type:"primary",class:_([e.ns.e("button"),e.ns.is("with-texts",e.hasButtonTexts)]),disabled:e.rightChecked.length===0,onClick:e.addToLeft},{default:j(()=>[Y(i,null,{default:j(()=>[Y(a)]),_:1}),e.buttonTexts[0]!==void 0?(C(),M("span",tZ,he(e.buttonTexts[0]),1)):G("v-if",!0)]),_:1},8,["class","disabled","onClick"]),Y(u,{type:"primary",class:_([e.ns.e("button"),e.ns.is("with-texts",e.hasButtonTexts)]),disabled:e.leftChecked.length===0,onClick:e.addToRight},{default:j(()=>[e.buttonTexts[1]!==void 0?(C(),M("span",nZ,he(e.buttonTexts[1]),1)):G("v-if",!0),Y(i,null,{default:j(()=>[Y(c)]),_:1})]),_:1},8,["class","disabled","onClick"])],2),Y(r,{ref:"rightPanel",data:e.targetData,"option-render":e.optionRender,placeholder:e.panelFilterPlaceholder,filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:e.rightPanelTitle,"default-checked":e.rightDefaultChecked,props:e.props,onCheckedChange:e.onTargetCheckedChange},{default:j(()=>[ie(e.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2)}var Mi=ge(eZ,[["render",oZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/transfer/src/index.vue"]]);Mi.install=e=>{e.component(Mi.name,Mi)};const sZ=Mi,lZ=sZ,Rl="$treeNodeId",Rg=function(e,t){!t||t[Rl]||Object.defineProperty(t,Rl,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Rp=function(e,t){return e?t[e]:t[Rl]},Yd=e=>{let t=!0,n=!0,o=!0;for(let s=0,l=e.length;s0&&t.lazy&&t.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Rg(this,this.data),!this.data)return;const o=t.defaultExpandedKeys,s=t.key;s&&o&&o.includes(this.key)&&this.expand(null,t.autoExpandParent),s&&t.currentNodeKey!==void 0&&this.key===t.currentNodeKey&&(t.currentNode=this,t.currentNode.isCurrent=!0),t.lazy&&t._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(t){Array.isArray(t)||Rg(this,t),this.data=t,this.childNodes=[];let n;this.level===0&&Array.isArray(this.data)?n=this.data:n=xa(this,"children")||[];for(let o=0,s=n.length;o-1)return t.childNodes[n+1]}return null}get previousSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return n>0?t.childNodes[n-1]:null}return null}contains(t,n=!0){return(this.childNodes||[]).some(o=>o===t||n&&o.contains(t))}remove(){const t=this.parent;t&&t.removeChild(this)}insertChild(t,n,o){if(!t)throw new Error("InsertChild error: child is required.");if(!(t instanceof Xs)){if(!o){const s=this.getChildren(!0);s.includes(t.data)||(typeof n=="undefined"||n<0?s.push(t.data):s.splice(n,0,t.data))}Object.assign(t,{parent:this,store:this.store}),t=yt(new Xs(t)),t instanceof Xs&&t.initialize()}t.level=this.level+1,typeof n=="undefined"||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()}insertBefore(t,n){let o;n&&(o=this.childNodes.indexOf(n)),this.insertChild(t,o)}insertAfter(t,n){let o;n&&(o=this.childNodes.indexOf(n),o!==-1&&(o+=1)),this.insertChild(t,o)}removeChild(t){const n=this.getChildren()||[],o=n.indexOf(t.data);o>-1&&n.splice(o,1);const s=this.childNodes.indexOf(t);s>-1&&(this.store&&this.store.deregisterNode(t),t.parent=null,this.childNodes.splice(s,1)),this.updateLeafState()}removeChildByData(t){let n=null;for(let o=0;o{if(n){let s=this.parent;for(;s.level>0;)s.expanded=!0,s=s.parent}this.expanded=!0,t&&t(),this.childNodes.forEach(s=>{s.canFocus=!0})};this.shouldLoadData()?this.loadData(s=>{Array.isArray(s)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||Oi(this),o())}):o()}doCreateChildren(t,n={}){t.forEach(o=>{this.insertChild(Object.assign({data:o},n),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(t=>{t.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser!="undefined"){this.isLeaf=this.isLeafByUser;return}const t=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!t||t.length===0;return}this.isLeaf=!1}setChecked(t,n,o,s){if(this.indeterminate=t==="half",this.checked=t===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:r,allWithoutDisable:a}=Yd(this.childNodes);!this.isLeaf&&!r&&a&&(this.checked=!1,t=!1);const i=()=>{if(n){const u=this.childNodes;for(let f=0,p=u.length;f{i(),Oi(this)},{checked:t!==!1});return}else i()}const l=this.parent;!l||l.level===0||o||Oi(l)}getChildren(t=!1){if(this.level===0)return this.data;const n=this.data;if(!n)return null;const o=this.store.props;let s="children";return o&&(s=o.children||"children"),n[s]===void 0&&(n[s]=null),t&&!n[s]&&(n[s]=[]),n[s]}updateChildren(){const t=this.getChildren()||[],n=this.childNodes.map(l=>l.data),o={},s=[];t.forEach((l,r)=>{const a=l[Rl];!!a&&n.findIndex(u=>u[Rl]===a)>=0?o[a]={index:r,data:l}:s.push({index:r,data:l})}),this.store.lazy||n.forEach(l=>{o[l[Rl]]||this.removeChildByData(l)}),s.forEach(({index:l,data:r})=>{this.insertChild({data:r},l)}),this.updateLeafState()}loadData(t,n={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(n).length)){this.loading=!0;const o=s=>{this.loaded=!0,this.loading=!1,this.childNodes=[],this.doCreateChildren(s,n),this.updateLeafState(),t&&t.call(this,s)};this.store.load(this,o)}else t&&t.call(this)}}class aZ{constructor(t){this.currentNode=null,this.currentNodeKey=null;for(const n in t)rt(t,n)&&(this[n]=t[n]);this.nodesMap={}}initialize(){this.root=new Xs({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load?this.load(this.root,n=>{this.root.doCreateChildren(n),this._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}filter(t){const n=this.filterNodeMethod,o=this.lazy,s=function(l){const r=l.root?l.root.childNodes:l.childNodes;if(r.forEach(a=>{a.visible=n.call(a,t,a.data,a),s(a)}),!l.visible&&r.length){let a=!0;a=!r.some(i=>i.visible),l.root?l.root.visible=a===!1:l.visible=a===!1}!t||l.visible&&!l.isLeaf&&!o&&l.expand()};s(this)}setData(t){t!==this.root.data?(this.root.setData(t),this._initDefaultCheckedNodes()):this.root.updateChildren()}getNode(t){if(t instanceof Xs)return t;const n=typeof t!="object"?t:Rp(this.key,t);return this.nodesMap[n]||null}insertBefore(t,n){const o=this.getNode(n);o.parent.insertBefore({data:t},o)}insertAfter(t,n){const o=this.getNode(n);o.parent.insertAfter({data:t},o)}remove(t){const n=this.getNode(t);n&&n.parent&&(n===this.currentNode&&(this.currentNode=null),n.parent.removeChild(n))}append(t,n){const o=n?this.getNode(n):this.root;o&&o.insertChild({data:t})}_initDefaultCheckedNodes(){const t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(o=>{const s=n[o];s&&s.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(t){(this.defaultCheckedKeys||[]).includes(t.key)&&t.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(t){t!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=t,this._initDefaultCheckedNodes())}registerNode(t){const n=this.key;!t||!t.data||(n?t.key!==void 0&&(this.nodesMap[t.key]=t):this.nodesMap[t.id]=t)}deregisterNode(t){!this.key||!t||!t.data||(t.childNodes.forEach(o=>{this.deregisterNode(o)}),delete this.nodesMap[t.key])}getCheckedNodes(t=!1,n=!1){const o=[],s=function(l){(l.root?l.root.childNodes:l.childNodes).forEach(a=>{(a.checked||n&&a.indeterminate)&&(!t||t&&a.isLeaf)&&o.push(a.data),s(a)})};return s(this),o}getCheckedKeys(t=!1){return this.getCheckedNodes(t).map(n=>(n||{})[this.key])}getHalfCheckedNodes(){const t=[],n=function(o){(o.root?o.root.childNodes:o.childNodes).forEach(l=>{l.indeterminate&&t.push(l.data),n(l)})};return n(this),t}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(t=>(t||{})[this.key])}_getAllNodes(){const t=[],n=this.nodesMap;for(const o in n)rt(n,o)&&t.push(n[o]);return t}updateChildren(t,n){const o=this.nodesMap[t];if(!o)return;const s=o.childNodes;for(let l=s.length-1;l>=0;l--){const r=s[l];this.remove(r.data)}for(let l=0,r=n.length;li.level-a.level),l=Object.create(null),r=Object.keys(o);s.forEach(a=>a.setChecked(!1,!1));for(let a=0,i=s.length;a0;)l[f.data[t]]=!0,f=f.parent;if(u.isLeaf||this.checkStrictly){u.setChecked(!0,!1);continue}if(u.setChecked(!0,!0),n){u.setChecked(!1,!1);const p=function(h){h.childNodes.forEach(m=>{m.isLeaf||m.setChecked(!1,!1),p(m)})};p(u)}}}setCheckedNodes(t,n=!1){const o=this.key,s={};t.forEach(l=>{s[(l||{})[o]]=!0}),this._setCheckedKeys(o,n,s)}setCheckedKeys(t,n=!1){this.defaultCheckedKeys=t;const o=this.key,s={};t.forEach(l=>{s[l]=!0}),this._setCheckedKeys(o,n,s)}setDefaultExpandedKeys(t){t=t||[],this.defaultExpandedKeys=t,t.forEach(n=>{const o=this.getNode(n);o&&o.expand(null,this.autoExpandParent)})}setChecked(t,n,o){const s=this.getNode(t);s&&s.setChecked(!!n,o)}getCurrentNode(){return this.currentNode}setCurrentNode(t){const n=this.currentNode;n&&(n.isCurrent=!1),this.currentNode=t,this.currentNode.isCurrent=!0}setUserCurrentNode(t,n=!0){const o=t[this.key],s=this.nodesMap[o];this.setCurrentNode(s),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(t,n=!0){if(t==null){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const o=this.getNode(t);o&&(this.setCurrentNode(o),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const iZ=ee({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=we("tree"),n=Ne("NodeInstance"),o=Ne("RootTree");return()=>{const s=e.node,{data:l,store:r}=s;return e.renderContent?e.renderContent(De,{_self:n,node:s,data:l,store:r}):o.ctx.slots.default?o.ctx.slots.default({node:s,data:l}):De("span",{class:t.be("node","label")},[s.label])}}});var uZ=ge(iZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node-content.vue"]]);function DC(e){const t=Ne("TreeNodeMap",null),n={treeNodeExpand:o=>{e.node!==o&&e.node.collapse()},children:[]};return t&&t.children.push(n),st("TreeNodeMap",n),{broadcastExpanded:o=>{if(!!e.accordion)for(const s of n.children)s.treeNodeExpand(o)}}}const LC=Symbol("dragEvents");function cZ({props:e,ctx:t,el$:n,dropIndicator$:o,store:s}){const l=we("tree"),r=A({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return st(LC,{treeNodeDragStart:({event:c,treeNode:d})=>{if(typeof e.allowDrag=="function"&&!e.allowDrag(d.node))return c.preventDefault(),!1;c.dataTransfer.effectAllowed="move";try{c.dataTransfer.setData("text/plain","")}catch{}r.value.draggingNode=d,t.emit("node-drag-start",d.node,c)},treeNodeDragOver:({event:c,treeNode:d})=>{const f=d,p=r.value.dropNode;p&&p!==f&&fn(p.$el,l.is("drop-inner"));const h=r.value.draggingNode;if(!h||!f)return;let g=!0,m=!0,v=!0,b=!0;typeof e.allowDrop=="function"&&(g=e.allowDrop(h.node,f.node,"prev"),b=m=e.allowDrop(h.node,f.node,"inner"),v=e.allowDrop(h.node,f.node,"next")),c.dataTransfer.dropEffect=m||g||v?"move":"none",(g||m||v)&&p!==f&&(p&&t.emit("node-drag-leave",h.node,p.node,c),t.emit("node-drag-enter",h.node,f.node,c)),(g||m||v)&&(r.value.dropNode=f),f.node.nextSibling===h.node&&(v=!1),f.node.previousSibling===h.node&&(g=!1),f.node.contains(h.node,!1)&&(m=!1),(h.node===f.node||h.node.contains(f.node))&&(g=!1,m=!1,v=!1);const w=f.$el.getBoundingClientRect(),S=n.value.getBoundingClientRect();let $;const k=g?m?.25:v?.45:1:-1,T=v?m?.75:g?.55:0:1;let O=-9999;const L=c.clientY-w.top;Lw.height*T?$="after":m?$="inner":$="none";const V=f.$el.querySelector(`.${l.be("node","expand-icon")}`).getBoundingClientRect(),B=o.value;$==="before"?O=V.top-S.top:$==="after"&&(O=V.bottom-S.top),B.style.top=`${O}px`,B.style.left=`${V.right-S.left}px`,$==="inner"?wo(f.$el,l.is("drop-inner")):fn(f.$el,l.is("drop-inner")),r.value.showDropIndicator=$==="before"||$==="after",r.value.allowDrop=r.value.showDropIndicator||b,r.value.dropType=$,t.emit("node-drag-over",h.node,f.node,c)},treeNodeDragEnd:c=>{const{draggingNode:d,dropType:f,dropNode:p}=r.value;if(c.preventDefault(),c.dataTransfer.dropEffect="move",d&&p){const h={data:d.node.data};f!=="none"&&d.node.remove(),f==="before"?p.node.parent.insertBefore(h,p.node):f==="after"?p.node.parent.insertAfter(h,p.node):f==="inner"&&p.node.insertChild(h),f!=="none"&&s.value.registerNode(h),fn(p.$el,l.is("drop-inner")),t.emit("node-drag-end",d.node,p.node,f,c),f!=="none"&&t.emit("node-drop",d.node,p.node,f,c)}d&&!p&&t.emit("node-drag-end",d.node,null,f,c),r.value.showDropIndicator=!1,r.value.draggingNode=null,r.value.dropNode=null,r.value.allowDrop=!0}}),{dragState:r}}const dZ=ee({name:"ElTreeNode",components:{ElCollapseTransition:ju,ElCheckbox:ao,NodeContent:uZ,ElIcon:je,Loading:gs},props:{node:{type:Xs,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(e,t){const n=we("tree"),{broadcastExpanded:o}=DC(e),s=Ne("RootTree"),l=A(!1),r=A(!1),a=A(null),i=A(null),u=A(null),c=Ne(LC),d=nt();st("NodeInstance",d),e.node.expanded&&(l.value=!0,r.value=!0);const f=s.props.children||"children";pe(()=>{const L=e.node.data[f];return L&&[...L]},()=>{e.node.updateChildren()}),pe(()=>e.node.indeterminate,L=>{g(e.node.checked,L)}),pe(()=>e.node.checked,L=>{g(L,e.node.indeterminate)}),pe(()=>e.node.expanded,L=>{ze(()=>l.value=L),L&&(r.value=!0)});const p=L=>Rp(s.props.nodeKey,L.data),h=L=>{const V=e.props.class;if(!V)return{};let B;if(et(V)){const{data:H}=L;B=V(H,L)}else B=V;return Qe(B)?{[B]:!0}:B},g=(L,V)=>{(a.value!==L||i.value!==V)&&s.ctx.emit("check-change",e.node.data,L,V),a.value=L,i.value=V},m=L=>{const V=s.store.value;V.setCurrentNode(e.node),s.ctx.emit("current-change",V.currentNode?V.currentNode.data:null,V.currentNode),s.currentNode.value=e.node,s.props.expandOnClickNode&&b(),s.props.checkOnClickNode&&!e.node.disabled&&w(null,{target:{checked:!e.node.checked}}),s.ctx.emit("node-click",e.node.data,e.node,d,L)},v=L=>{s.instance.vnode.props.onNodeContextmenu&&(L.stopPropagation(),L.preventDefault()),s.ctx.emit("node-contextmenu",L,e.node.data,e.node,d)},b=()=>{e.node.isLeaf||(l.value?(s.ctx.emit("node-collapse",e.node.data,e.node,d),e.node.collapse()):(e.node.expand(),t.emit("node-expand",e.node.data,e.node,d)))},w=(L,V)=>{e.node.setChecked(V.target.checked,!s.props.checkStrictly),ze(()=>{const B=s.store.value;s.ctx.emit("check",e.node.data,{checkedNodes:B.getCheckedNodes(),checkedKeys:B.getCheckedKeys(),halfCheckedNodes:B.getHalfCheckedNodes(),halfCheckedKeys:B.getHalfCheckedKeys()})})};return{ns:n,node$:u,tree:s,expanded:l,childNodeRendered:r,oldChecked:a,oldIndeterminate:i,getNodeKey:p,getNodeClass:h,handleSelectChange:g,handleClick:m,handleContextMenu:v,handleExpandIconClick:b,handleCheckChange:w,handleChildNodeExpand:(L,V,B)=>{o(V),s.ctx.emit("node-expand",L,V,B)},handleDragStart:L=>{!s.props.draggable||c.treeNodeDragStart({event:L,treeNode:e})},handleDragOver:L=>{L.preventDefault(),s.props.draggable&&c.treeNodeDragOver({event:L,treeNode:{$el:u.value,node:e.node}})},handleDrop:L=>{L.preventDefault()},handleDragEnd:L=>{!s.props.draggable||c.treeNodeDragEnd(L)},CaretRight:L0}}}),fZ=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],pZ=["aria-expanded"];function hZ(e,t,n,o,s,l){const r=le("el-icon"),a=le("el-checkbox"),i=le("loading"),u=le("node-content"),c=le("el-tree-node"),d=le("el-collapse-transition");return Ge((C(),M("div",{ref:"node$",class:_([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:t[1]||(t[1]=Ke((...f)=>e.handleClick&&e.handleClick(...f),["stop"])),onContextmenu:t[2]||(t[2]=(...f)=>e.handleContextMenu&&e.handleContextMenu(...f)),onDragstart:t[3]||(t[3]=Ke((...f)=>e.handleDragStart&&e.handleDragStart(...f),["stop"])),onDragover:t[4]||(t[4]=Ke((...f)=>e.handleDragOver&&e.handleDragOver(...f),["stop"])),onDragend:t[5]||(t[5]=Ke((...f)=>e.handleDragEnd&&e.handleDragEnd(...f),["stop"])),onDrop:t[6]||(t[6]=Ke((...f)=>e.handleDrop&&e.handleDrop(...f),["stop"]))},[D("div",{class:_(e.ns.be("node","content")),style:Pe({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(C(),x(r,{key:0,class:_([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:Ke(e.handleExpandIconClick,["stop"])},{default:j(()=>[(C(),x(ft(e.tree.props.icon||e.CaretRight)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.showCheckbox?(C(),x(a,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:t[0]||(t[0]=Ke(()=>{},["stop"])),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):G("v-if",!0),e.node.loading?(C(),x(r,{key:2,class:_([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:j(()=>[Y(i)]),_:1},8,["class"])):G("v-if",!0),Y(u,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),Y(d,null,{default:j(()=>[!e.renderAfterExpand||e.childNodeRendered?Ge((C(),M("div",{key:0,class:_(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded},[(C(!0),M(Le,null,it(e.node.childNodes,f=>(C(),x(c,{key:e.getNodeKey(f),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:f,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,pZ)),[[pt,e.expanded]]):G("v-if",!0)]),_:1})],42,fZ)),[[pt,e.node.visible]])}var mZ=ge(dZ,[["render",hZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node.vue"]]);function vZ({el$:e},t){const n=we("tree"),o=jt([]),s=jt([]);xe(()=>{r(),Tt(e.value,"keydown",l)}),_t(()=>{Bt(e.value,"keydown",l)}),Xn(()=>{o.value=Array.from(e.value.querySelectorAll("[role=treeitem]")),s.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"))}),pe(s,a=>{a.forEach(i=>{i.setAttribute("tabindex","-1")})});const l=a=>{const i=a.target;if(!i.className.includes(n.b("node")))return;const u=a.code;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`));const c=o.value.indexOf(i);let d;if([Ie.up,Ie.down].includes(u)){if(a.preventDefault(),u===Ie.up){d=c===-1?0:c!==0?c-1:o.value.length-1;const p=d;for(;!t.value.getNode(o.value[d].dataset.key).canFocus;){if(d--,d===p){d=-1;break}d<0&&(d=o.value.length-1)}}else{d=c===-1?0:c=o.value.length&&(d=0)}}d!==-1&&o.value[d].focus()}[Ie.left,Ie.right].includes(u)&&(a.preventDefault(),i.click());const f=i.querySelector('[type="checkbox"]');[Ie.enter,Ie.space].includes(u)&&f&&(a.preventDefault(),f.click())},r=()=>{var a;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`)),s.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"));const i=e.value.querySelectorAll(`.${n.is("checked")}[role=treeitem]`);if(i.length){i[0].setAttribute("tabindex","0");return}(a=o.value[0])==null||a.setAttribute("tabindex","0")}}const gZ=ee({name:"ElTree",components:{ElTreeNode:mZ},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:[String,Object]},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(e,t){const{t:n}=kt(),o=we("tree"),s=A(new aZ({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));s.value.initialize();const l=A(s.value.root),r=A(null),a=A(null),i=A(null),{broadcastExpanded:u}=DC(e),{dragState:c}=cZ({props:e,ctx:t,el$:a,dropIndicator$:i,store:s});vZ({el$:a},s);const d=E(()=>{const{childNodes:N}=l.value;return!N||N.length===0||N.every(({visible:I})=>!I)});pe(()=>e.defaultCheckedKeys,N=>{s.value.setDefaultCheckedKey(N)}),pe(()=>e.defaultExpandedKeys,N=>{s.value.setDefaultExpandedKeys(N)}),pe(()=>e.data,N=>{s.value.setData(N)},{deep:!0}),pe(()=>e.checkStrictly,N=>{s.value.checkStrictly=N});const f=N=>{if(!e.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");s.value.filter(N)},p=N=>Rp(e.nodeKey,N.data),h=N=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const I=s.value.getNode(N);if(!I)return[];const U=[I.data];let q=I.parent;for(;q&&q!==l.value;)U.push(q.data),q=q.parent;return U.reverse()},g=(N,I)=>s.value.getCheckedNodes(N,I),m=N=>s.value.getCheckedKeys(N),v=()=>{const N=s.value.getCurrentNode();return N?N.data:null},b=()=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const N=v();return N?N[e.nodeKey]:null},w=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");s.value.setCheckedNodes(N,I)},S=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");s.value.setCheckedKeys(N,I)},$=(N,I,U)=>{s.value.setChecked(N,I,U)},k=()=>s.value.getHalfCheckedNodes(),T=()=>s.value.getHalfCheckedKeys(),O=(N,I=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");s.value.setUserCurrentNode(N,I)},L=(N,I=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");s.value.setCurrentNodeKey(N,I)},V=N=>s.value.getNode(N),B=N=>{s.value.remove(N)},H=(N,I)=>{s.value.append(N,I)},R=(N,I)=>{s.value.insertBefore(N,I)},z=(N,I)=>{s.value.insertAfter(N,I)},W=(N,I,U)=>{u(I),t.emit("node-expand",N,I,U)},P=(N,I)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");s.value.updateChildren(N,I)};return st("RootTree",{ctx:t,props:e,store:s,root:l,currentNode:r,instance:nt()}),{ns:o,store:s,root:l,currentNode:r,dragState:c,el$:a,dropIndicator$:i,isEmpty:d,filter:f,getNodeKey:p,getNodePath:h,getCheckedNodes:g,getCheckedKeys:m,getCurrentNode:v,getCurrentKey:b,setCheckedNodes:w,setCheckedKeys:S,setChecked:$,getHalfCheckedNodes:k,getHalfCheckedKeys:T,setCurrentNode:O,setCurrentKey:L,t:n,getNode:V,remove:B,append:H,insertBefore:R,insertAfter:z,handleNodeExpand:W,updateKeyChildren:P}}});function bZ(e,t,n,o,s,l){var r;const a=le("el-tree-node");return C(),M("div",{ref:"el$",class:_([e.ns.b(),e.ns.is("dragging",!!e.dragState.draggingNode),e.ns.is("drop-not-allow",!e.dragState.allowDrop),e.ns.is("drop-inner",e.dragState.dropType==="inner"),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(C(!0),M(Le,null,it(e.root.childNodes,i=>(C(),x(a,{key:e.getNodeKey(i),node:i,props:e.props,accordion:e.accordion,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),e.isEmpty?(C(),M("div",{key:0,class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},he((r=e.emptyText)!=null?r:e.t("el.tree.emptyText")),3)],2)):G("v-if",!0),Ge(D("div",{ref:"dropIndicator$",class:_(e.ns.e("drop-indicator"))},null,2),[[pt,e.dragState.showDropIndicator]])],2)}var Ii=ge(gZ,[["render",bZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree.vue"]]);Ii.install=e=>{e.component(Ii.name,Ii)};const su=Ii,yZ=su,wZ=(e,{attrs:t},{tree:n,key:o})=>{const s=we("tree-select"),l=Te(ne(ne({},os(Ut(e),Object.keys(sl.props))),t),{valueKey:o,popperClass:E(()=>{const r=[s.e("popper")];return e.popperClass&&r.push(e.popperClass),r.join(" ")}),filterMethod:(r="")=>{e.filterMethod&&e.filterMethod(r),ze(()=>{var a;(a=n.value)==null||a.filter(r)})},onVisibleChange:r=>{var a;(a=t.onVisibleChange)==null||a.call(t,r),e.filterable&&r&&l.filterMethod()}});return l},CZ=ee({extends:xi,setup(e,t){const n=xi.setup(e,t);return delete n.selectOptionClick,n},methods:{selectOptionClick(){this.$el.parentElement.click()}}}),$Z=(e,{attrs:t,slots:n,emit:o},{select:s,tree:l,key:r})=>{pe(()=>e.modelValue,()=>{e.showCheckbox&&ze(()=>{const u=l.value;u&&!_n(u.getCheckedKeys(),Lc(e.modelValue))&&u.setCheckedKeys(Lc(e.modelValue))})},{immediate:!0,deep:!0});const a=E(()=>ne({value:r.value},e.props)),i=(u,c)=>{var d;const f=a.value[u];return et(f)?f(c,(d=l.value)==null?void 0:d.getNode(i("value",c))):c[f]};return Te(ne(ne({},os(Ut(e),Object.keys(su.props))),t),{nodeKey:r,defaultExpandedKeys:E(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(e.modelValue):Lc(e.modelValue)),renderContent:(u,{node:c,data:d,store:f})=>u(CZ,{value:i("value",d),label:i("label",d),disabled:i("disabled",d)},e.renderContent?()=>e.renderContent(u,{node:c,data:d,store:f}):n.default?()=>n.default({node:c,data:d,store:f}):void 0),filterNodeMethod:(u,c,d)=>{var f;return e.filterNodeMethod?e.filterNodeMethod(u,c,d):u?(f=i("label",c))==null?void 0:f.includes(u):!0},onNodeClick:(u,c,d)=>{var f,p,h;if((f=t.onNodeClick)==null||f.call(t,u,c,d),e.checkStrictly||c.isLeaf){if(!i("disabled",u)){const g=(p=s.value)==null?void 0:p.options.get(i("value",u));(h=s.value)==null||h.handleOptionSelect(g,!0)}}else d.ctx.handleExpandIconClick()},onCheck:(u,c)=>{var d,f;(d=t.onCheck)==null||d.call(t,u,c);const p=e.checkStrictly?c.checkedKeys:(f=l.value)==null?void 0:f.getCheckedKeys(!0),h=i("value",u);o(tt,e.multiple?p:p.includes(h)?h:void 0)}})};function Lc(e){return Array.isArray(e)?e:e||e===0?[e]:[]}const kZ=ee({name:"ElTreeSelect",props:ne(ne({},sl.props),su.props),setup(e,t){const{slots:n,expose:o}=t,s=A(),l=A(),r=E(()=>e.valueKey||e.nodeKey||"value"),a=wZ(e,t,{select:s,tree:l,key:r}),i=$Z(e,t,{select:s,tree:l,key:r}),u=yt({});return o(u),xe(()=>{Object.assign(u,ne(ne({},os(l.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"])),os(s.value,["focus","blur"])))}),()=>De(sl,yt(Te(ne({},a),{ref:c=>s.value=c})),Te(ne({},n),{default:()=>De(su,yt(Te(ne({},i),{ref:c=>l.value=c})))}))}});var Pi=ge(kZ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-select/src/tree-select.vue"]]);Pi.install=e=>{e.component(Pi.name,Pi)};const SZ=Pi,EZ=SZ,Vp=Symbol(),_Z={key:-1,level:-1,data:{}};var Or=(e=>(e.KEY="id",e.LABEL="label",e.CHILDREN="children",e.DISABLED="disabled",e))(Or||{}),Ud=(e=>(e.ADD="add",e.DELETE="delete",e))(Ud||{});const TZ=Be({data:{type:$e(Array),default:()=>Dt([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:$e(Object),default:()=>Dt({children:"children",label:"label",disabled:"disabled",value:"id"})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:$e(Array),default:()=>Dt([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:$e(Array),default:()=>Dt([])},indent:{type:Number,default:16},icon:{type:String},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},currentNodeKey:{type:$e([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:$e(Function)},perfMode:{type:Boolean,default:!0}}),AZ=Be({node:{type:$e(Object),default:()=>Dt(_Z)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1}}),NZ=Be({node:{type:$e(Object),required:!0}}),RC="node-click",VC="node-expand",BC="node-collapse",FC="current-change",HC="check",zC="check-change",KC="node-contextmenu",MZ={[RC]:(e,t,n)=>e&&t&&n,[VC]:(e,t)=>e&&t,[BC]:(e,t)=>e&&t,[FC]:(e,t)=>e&&t,[HC]:(e,t)=>e&&t,[zC]:(e,t)=>e&&typeof t=="boolean",[KC]:(e,t,n)=>e&&t&&n},OZ={click:(e,t)=>!!(e&&t),toggle:e=>!!e,check:(e,t)=>e&&typeof t=="boolean"};function IZ(e,t){const n=A(new Set),o=A(new Set),{emit:s}=nt();pe(()=>t.value,()=>ze(()=>{b(e.defaultCheckedKeys)}),{immediate:!0});const l=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:w,maxLevel:S}=t.value,$=n.value,k=new Set;for(let T=S-1;T>=1;--T){const O=w.get(T);!O||O.forEach(L=>{const V=L.children;if(V){let B=!0,H=!1;for(const R of V){const z=R.key;if($.has(z))H=!0;else if(k.has(z)){B=!1,H=!0;break}else B=!1}B?$.add(L.key):H?(k.add(L.key),$.delete(L.key)):($.delete(L.key),k.delete(L.key))}})}o.value=k},r=w=>n.value.has(w.key),a=w=>o.value.has(w.key),i=(w,S,$=!0)=>{const k=n.value,T=(O,L)=>{k[L?Ud.ADD:Ud.DELETE](O.key);const V=O.children;!e.checkStrictly&&V&&V.forEach(B=>{B.disabled||T(B,L)})};T(w,S),l(),$&&u(w,S)},u=(w,S)=>{const{checkedNodes:$,checkedKeys:k}=h(),{halfCheckedNodes:T,halfCheckedKeys:O}=g();s(HC,w.data,{checkedKeys:k,checkedNodes:$,halfCheckedKeys:O,halfCheckedNodes:T}),s(zC,w.data,S)};function c(w=!1){return h(w).checkedKeys}function d(w=!1){return h(w).checkedNodes}function f(){return g().halfCheckedKeys}function p(){return g().halfCheckedNodes}function h(w=!1){const S=[],$=[];if((t==null?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:k}=t.value;n.value.forEach(T=>{const O=k.get(T);O&&(!w||w&&O.isLeaf)&&($.push(T),S.push(O.data))})}return{checkedKeys:$,checkedNodes:S}}function g(){const w=[],S=[];if((t==null?void 0:t.value)&&e.showCheckbox){const{treeNodeMap:$}=t.value;o.value.forEach(k=>{const T=$.get(k);T&&(S.push(k),w.push(T.data))})}return{halfCheckedNodes:w,halfCheckedKeys:S}}function m(w){n.value.clear(),o.value.clear(),b(w)}function v(w,S){if((t==null?void 0:t.value)&&e.showCheckbox){const $=t.value.treeNodeMap.get(w);$&&i($,S,!1)}}function b(w){if(t!=null&&t.value){const{treeNodeMap:S}=t.value;if(e.showCheckbox&&S&&w)for(const $ of w){const k=S.get($);k&&!r(k)&&i(k,!0,!1)}}}return{updateCheckedKeys:l,toggleCheckbox:i,isChecked:r,isIndeterminate:a,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:p,setChecked:v,setCheckedKeys:m}}function PZ(e,t){const n=A(new Set([])),o=A(new Set([])),s=E(()=>et(e.filterMethod));function l(a){var i;if(!s.value)return;const u=new Set,c=o.value,d=n.value,f=[],p=((i=t.value)==null?void 0:i.treeNodes)||[],h=e.filterMethod;d.clear();function g(m){m.forEach(v=>{f.push(v),h!=null&&h(a,v.data)?f.forEach(w=>{u.add(w.key)}):v.isLeaf&&d.add(v.key);const b=v.children;if(b&&g(b),!v.isLeaf){if(!u.has(v.key))d.add(v.key);else if(b){let w=!0;for(const S of b)if(!d.has(S.key)){w=!1;break}w?c.add(v.key):c.delete(v.key)}}f.pop()})}return g(p),u}function r(a){return o.value.has(a.key)}return{hiddenExpandIconKeySet:o,hiddenNodeKeySet:n,doFilter:l,isForceHiddenExpandIcon:r}}function DZ(e,t){const n=A(new Set(e.defaultExpandedKeys)),o=A(),s=jt();pe(()=>e.currentNodeKey,J=>{o.value=J},{immediate:!0}),pe(()=>e.data,J=>{Me(J)},{immediate:!0});const{isIndeterminate:l,isChecked:r,toggleCheckbox:a,getCheckedKeys:i,getCheckedNodes:u,getHalfCheckedKeys:c,getHalfCheckedNodes:d,setChecked:f,setCheckedKeys:p}=IZ(e,s),{doFilter:h,hiddenNodeKeySet:g,isForceHiddenExpandIcon:m}=PZ(e,s),v=E(()=>{var J;return((J=e.props)==null?void 0:J.value)||Or.KEY}),b=E(()=>{var J;return((J=e.props)==null?void 0:J.children)||Or.CHILDREN}),w=E(()=>{var J;return((J=e.props)==null?void 0:J.disabled)||Or.DISABLED}),S=E(()=>{var J;return((J=e.props)==null?void 0:J.label)||Or.LABEL}),$=E(()=>{const J=n.value,ve=g.value,Ce=[],ke=s.value&&s.value.treeNodes||[];function Oe(){const We=[];for(let qe=ke.length-1;qe>=0;--qe)We.push(ke[qe]);for(;We.length;){const qe=We.pop();if(!!qe&&(ve.has(qe.key)||Ce.push(qe),J.has(qe.key))){const K=qe.children;if(K){const X=K.length;for(let fe=X-1;fe>=0;--fe)We.push(K[fe])}}}}return Oe(),Ce}),k=E(()=>$.value.length>0);function T(J){const ve=new Map,Ce=new Map;let ke=1;function Oe(qe,K=1,X=void 0){var fe;const ye=[];for(const be of qe){const _e=V(be),re={level:K,key:_e,data:be};re.label=H(be),re.parent=X;const se=L(be);re.disabled=B(be),re.isLeaf=!se||se.length===0,se&&se.length&&(re.children=Oe(se,K+1,re)),ye.push(re),ve.set(_e,re),Ce.has(K)||Ce.set(K,[]),(fe=Ce.get(K))==null||fe.push(re)}return K>ke&&(ke=K),ye}const We=Oe(J);return{treeNodeMap:ve,levelTreeNodeMap:Ce,maxLevel:ke,treeNodes:We}}function O(J){const ve=h(J);ve&&(n.value=ve)}function L(J){return J[b.value]}function V(J){return J?J[v.value]:""}function B(J){return J[w.value]}function H(J){return J[S.value]}function R(J){n.value.has(J.key)?I(J):N(J)}function z(J,ve){t(RC,J.data,J,ve),W(J),e.expandOnClickNode&&R(J),e.showCheckbox&&e.checkOnClickNode&&!J.disabled&&a(J,!r(J),!0)}function W(J){Q(J)||(o.value=J.key,t(FC,J.data,J))}function P(J,ve){a(J,ve)}function N(J){const ve=n.value;if((s==null?void 0:s.value)&&e.accordion){const{treeNodeMap:Ce}=s.value;ve.forEach(ke=>{const Oe=Ce.get(ke);Oe&&Oe.level===Oe.level&&ve.delete(ke)})}ve.add(J.key),t(VC,J.data,J)}function I(J){n.value.delete(J.key),t(BC,J.data,J)}function U(J){return n.value.has(J.key)}function q(J){return!!J.disabled}function Q(J){const ve=o.value;return!!ve&&ve===J.key}function Z(){var J,ve;if(!!o.value)return(ve=(J=s==null?void 0:s.value)==null?void 0:J.treeNodeMap.get(o.value))==null?void 0:ve.data}function ae(){return o.value}function Ee(J){o.value=J}function Me(J){ze(()=>s.value=T(J))}return{tree:s,flattenTree:$,isNotEmpty:k,getKey:V,getChildren:L,toggleExpand:R,toggleCheckbox:a,isExpanded:U,isChecked:r,isIndeterminate:l,isDisabled:q,isCurrent:Q,isForceHiddenExpandIcon:m,handleNodeClick:z,handleNodeCheck:P,getCurrentNode:Z,getCurrentKey:ae,setCurrentKey:Ee,getCheckedKeys:i,getCheckedNodes:u,getHalfCheckedKeys:c,getHalfCheckedNodes:d,setChecked:f,setCheckedKeys:p,filter:O,setData:Me}}var LZ=ee({name:"ElTreeNodeContent",props:NZ,setup(e){const t=Ne(Vp),n=we("tree");return()=>{const o=e.node,{data:s}=o;return t!=null&&t.ctx.slots.default?t.ctx.slots.default({node:o,data:s}):De("span",{class:n.be("node","label")},[o==null?void 0:o.label])}}});const RZ="caret-right",VZ=ee({name:"ElTreeNode",components:{ElIcon:je,CaretRight:L0,ElCheckbox:ao,ElNodeContent:LZ},props:AZ,emits:OZ,setup(e,{emit:t}){const n=Ne(Vp),o=we("tree"),s=E(()=>{var c;return(c=n==null?void 0:n.props.indent)!=null?c:16}),l=E(()=>{var c;return(c=n==null?void 0:n.props.icon)!=null?c:RZ});return{ns:o,indent:s,icon:l,handleClick:c=>{t("click",e.node,c)},handleExpandIconClick:()=>{t("toggle",e.node)},handleCheckChange:c=>{t("check",e.node,c)},handleContextMenu:c=>{var d,f,p,h;(p=(f=(d=n==null?void 0:n.instance)==null?void 0:d.vnode)==null?void 0:f.props)!=null&&p.onNodeContextmenu&&(c.stopPropagation(),c.preventDefault()),n==null||n.ctx.emit(KC,c,(h=e.node)==null?void 0:h.data,e.node)}}}}),BZ=["aria-expanded","aria-disabled","aria-checked","data-key"];function FZ(e,t,n,o,s,l){var r,a,i;const u=le("el-icon"),c=le("el-checkbox"),d=le("el-node-content");return C(),M("div",{ref:"node$",class:_([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.current),e.ns.is("focusable",!e.disabled),e.ns.is("checked",!e.disabled&&e.checked)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.disabled,"aria-checked":e.checked,"data-key":(r=e.node)==null?void 0:r.key,onClick:t[1]||(t[1]=Ke((...f)=>e.handleClick&&e.handleClick(...f),["stop"])),onContextmenu:t[2]||(t[2]=(...f)=>e.handleContextMenu&&e.handleContextMenu(...f))},[D("div",{class:_(e.ns.be("node","content")),style:Pe({paddingLeft:`${(e.node.level-1)*e.indent}px`})},[e.icon?(C(),x(u,{key:0,class:_([e.ns.is("leaf",!!((a=e.node)!=null&&a.isLeaf)),e.ns.is("hidden",e.hiddenExpandIcon),{expanded:!((i=e.node)!=null&&i.isLeaf)&&e.expanded},e.ns.be("node","expand-icon")]),onClick:Ke(e.handleExpandIconClick,["stop"])},{default:j(()=>[(C(),x(ft(e.icon)))]),_:1},8,["class","onClick"])):G("v-if",!0),e.showCheckbox?(C(),x(c,{key:1,"model-value":e.checked,indeterminate:e.indeterminate,disabled:e.disabled,onChange:e.handleCheckChange,onClick:t[0]||(t[0]=Ke(()=>{},["stop"]))},null,8,["model-value","indeterminate","disabled","onChange"])):G("v-if",!0),Y(d,{node:e.node},null,8,["node"])],6)],42,BZ)}var HZ=ge(VZ,[["render",FZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree-node.vue"]]);const zZ=ee({name:"ElTreeV2",components:{ElTreeNode:HZ,FixedSizeList:hC},props:TZ,emits:MZ,setup(e,t){st(Vp,{ctx:t,props:e,instance:nt()});const{t:n}=kt(),o=we("tree"),{flattenTree:s,isNotEmpty:l,toggleExpand:r,isExpanded:a,isIndeterminate:i,isChecked:u,isDisabled:c,isCurrent:d,isForceHiddenExpandIcon:f,toggleCheckbox:p,handleNodeClick:h,handleNodeCheck:g,getCurrentNode:m,getCurrentKey:v,setCurrentKey:b,getCheckedKeys:w,getCheckedNodes:S,getHalfCheckedKeys:$,getHalfCheckedNodes:k,setChecked:T,setCheckedKeys:O,filter:L,setData:V}=DZ(e,t.emit);return t.expose({getCurrentNode:m,getCurrentKey:v,setCurrentKey:b,getCheckedKeys:w,getCheckedNodes:S,getHalfCheckedKeys:$,getHalfCheckedNodes:k,setChecked:T,setCheckedKeys:O,filter:L,setData:V}),{t:n,ns:o,flattenTree:s,itemSize:26,isNotEmpty:l,toggleExpand:r,toggleCheckbox:p,isExpanded:a,isIndeterminate:i,isChecked:u,isDisabled:c,isCurrent:d,isForceHiddenExpandIcon:f,handleNodeClick:h,handleNodeCheck:g}}});function KZ(e,t,n,o,s,l){var r;const a=le("el-tree-node"),i=le("fixed-size-list");return C(),M("div",{class:_([e.ns.b(),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[e.isNotEmpty?(C(),x(i,{key:0,"class-name":e.ns.b("virtual-list"),data:e.flattenTree,total:e.flattenTree.length,height:e.height,"item-size":e.itemSize,"perf-mode":e.perfMode},{default:j(({data:u,index:c,style:d})=>[(C(),x(a,{key:u[c].key,style:Pe(d),node:u[c],expanded:e.isExpanded(u[c]),"show-checkbox":e.showCheckbox,checked:e.isChecked(u[c]),indeterminate:e.isIndeterminate(u[c]),disabled:e.isDisabled(u[c]),current:e.isCurrent(u[c]),"hidden-expand-icon":e.isForceHiddenExpandIcon(u[c]),onClick:e.handleNodeClick,onToggle:e.toggleExpand,onCheck:e.handleNodeCheck},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode"])):(C(),M("div",{key:1,class:_(e.ns.e("empty-block"))},[D("span",{class:_(e.ns.e("empty-text"))},he((r=e.emptyText)!=null?r:e.t("el.tree.emptyText")),3)],2))],2)}var WZ=ge(zZ,[["render",KZ],["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree.vue"]]);const jZ=ot(WZ),YZ="ElUpload";class UZ extends Error{constructor(t,n,o,s){super(t),this.name="UploadAjaxError",this.status=n,this.method=o,this.url=s}}function Vg(e,t,n){let o;return n.response?o=`${n.response.error||n.response}`:n.responseText?o=`${n.responseText}`:o=`fail to ${t.method} ${e} ${n.status}`,new UZ(o,n.status,t.method,e)}function qZ(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}const GZ=e=>{typeof XMLHttpRequest=="undefined"&&Kt(YZ,"XMLHttpRequest is undefined");const t=new XMLHttpRequest,n=e.action;t.upload&&t.upload.addEventListener("progress",l=>{const r=l;r.percent=l.total>0?l.loaded/l.total*100:0,e.onProgress(r)});const o=new FormData;if(e.data)for(const[l,r]of Object.entries(e.data))Array.isArray(r)?o.append(l,...r):o.append(l,r);o.append(e.filename,e.file,e.file.name),t.addEventListener("error",()=>{e.onError(Vg(n,e,t))}),t.addEventListener("load",()=>{if(t.status<200||t.status>=300)return e.onError(Vg(n,e,t));e.onSuccess(qZ(t))}),t.open(e.method,n,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);const s=e.headers||{};if(s instanceof Headers)s.forEach((l,r)=>t.setRequestHeader(r,l));else for(const[l,r]of Object.entries(s))Qf(r)||t.setRequestHeader(l,String(r));return t.send(o),t},WC=["text","picture","picture-card"];let XZ=1;const jC=()=>Date.now()+XZ++,YC=Be({action:{type:String,required:!0},headers:{type:$e(Object)},method:{type:String,default:"post"},data:{type:Object,default:()=>Dt({})},multiple:{type:Boolean,default:!1},name:{type:String,default:"file"},drag:{type:Boolean,default:!1},withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},type:{type:String,default:"select"},fileList:{type:$e(Array),default:()=>Dt([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:WC,default:"text"},httpRequest:{type:$e(Function),default:GZ},disabled:Boolean,limit:Number}),ZZ=Be(Te(ne({},YC),{beforeUpload:{type:$e(Function),default:wt},beforeRemove:{type:$e(Function)},onRemove:{type:$e(Function),default:wt},onChange:{type:$e(Function),default:wt},onPreview:{type:$e(Function),default:wt},onSuccess:{type:$e(Function),default:wt},onProgress:{type:$e(Function),default:wt},onError:{type:$e(Function),default:wt},onExceed:{type:$e(Function),default:wt}})),JZ=Be({files:{type:$e(Array),default:()=>Dt([])},disabled:{type:Boolean,default:!1},handlePreview:{type:$e(Function),default:wt},listType:{type:String,values:WC,default:"text"}}),QZ={remove:e=>!!e},xZ=["onKeydown"],eJ=["src"],tJ=["onClick"],nJ=["onClick"],oJ=["onClick"],sJ={name:"ElUploadList"},lJ=ee(Te(ne({},sJ),{props:JZ,emits:QZ,setup(e,{emit:t}){const n=e,{t:o}=kt(),s=we("upload"),l=we("icon"),r=we("list"),a=A(!1),i=d=>{n.handlePreview(d)},u=d=>{d.target.focus()},c=d=>{t("remove",d)};return(d,f)=>(C(),x(RT,{tag:"ul",class:_([y(s).b("list"),y(s).bm("list",d.listType),y(s).is("disabled",d.disabled)]),name:y(r).b()},{default:j(()=>[(C(!0),M(Le,null,it(d.files,p=>(C(),M("li",{key:p.uid||p.name,class:_([y(s).be("list","item"),y(s).is(p.status),{focusing:a.value}]),tabindex:"0",onKeydown:lt(h=>!d.disabled&&c(p),["delete"]),onFocus:f[0]||(f[0]=h=>a.value=!0),onBlur:f[1]||(f[1]=h=>a.value=!1),onClick:u},[ie(d.$slots,"default",{file:p},()=>[d.listType==="picture"||p.status!=="uploading"&&d.listType==="picture-card"?(C(),M("img",{key:0,class:_(y(s).be("list","item-thumbnail")),src:p.url,alt:""},null,10,eJ)):G("v-if",!0),d.listType!=="picture"&&(p.status==="uploading"||d.listType!=="picture-card")?(C(),M("div",{key:1,class:_(y(s).be("list","item-info"))},[D("a",{class:_(y(s).be("list","item-name")),onClick:h=>i(p)},[Y(y(je),{class:_(y(l).m("document"))},{default:j(()=>[Y(y(nD))]),_:1},8,["class"]),at(" "+he(p.name),1)],10,tJ),p.status==="uploading"?(C(),x(y(oC),{key:0,type:d.listType==="picture-card"?"circle":"line","stroke-width":d.listType==="picture-card"?6:2,percentage:Number(p.percentage),style:Pe(d.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):G("v-if",!0)],2)):G("v-if",!0),D("label",{class:_(y(s).be("list","item-status-label"))},[d.listType==="text"?(C(),x(y(je),{key:0,class:_([y(l).m("upload-success"),y(l).m("circle-check")])},{default:j(()=>[Y(y(Zi))]),_:1},8,["class"])):["picture-card","picture"].includes(d.listType)?(C(),x(y(je),{key:1,class:_([y(l).m("upload-success"),y(l).m("check")])},{default:j(()=>[Y(y(Xl))]),_:1},8,["class"])):G("v-if",!0)],2),d.disabled?G("v-if",!0):(C(),x(y(je),{key:2,class:_(y(l).m("close")),onClick:h=>c(p)},{default:j(()=>[Y(y(Yn))]),_:2},1032,["class","onClick"])),G(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),G(" This is a bug which needs to be fixed "),G(" TODO: Fix the incorrect navigation interaction "),d.disabled?G("v-if",!0):(C(),M("i",{key:3,class:_(y(l).m("close-tip"))},he(y(o)("el.upload.deleteTip")),3)),d.listType==="picture-card"?(C(),M("span",{key:4,class:_(y(s).be("list","item-actions"))},[D("span",{class:_(y(s).be("list","item-preview")),onClick:h=>d.handlePreview(p)},[Y(y(je),{class:_(y(l).m("zoom-in"))},{default:j(()=>[Y(y(F0))]),_:1},8,["class"])],10,nJ),d.disabled?G("v-if",!0):(C(),M("span",{key:0,class:_(y(s).be("list","item-delete")),onClick:h=>c(p)},[Y(y(je),{class:_(y(l).m("delete"))},{default:j(()=>[Y(y(ZP))]),_:1},8,["class"])],10,oJ))],2)):G("v-if",!0)])],42,xZ))),128)),ie(d.$slots,"append")]),_:3},8,["class","name"]))}}));var Bg=ge(lJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue"]]);const rJ=Be({disabled:{type:Boolean,default:!1}}),aJ={file:e=>Xe(e)},iJ=["onDrop","onDragover"],uJ={name:"ElUploadDrag"},cJ=ee(Te(ne({},uJ),{props:rJ,emits:aJ,setup(e,{emit:t}){const n=e,o="ElUploadDrag",s=Ne(o1);s||Kt(o,"usage: ");const l=we("upload"),r=A(!1),a=u=>{if(n.disabled)return;r.value=!1;const c=Array.from(u.dataTransfer.files),d=s.accept.value;if(!d){t("file",c);return}const f=c.filter(p=>{const{type:h,name:g}=p,m=g.includes(".")?`.${g.split(".").pop()}`:"",v=h.replace(/\/.*$/,"");return d.split(",").map(b=>b.trim()).filter(b=>b).some(b=>b.startsWith(".")?m===b:/\/\*$/.test(b)?v===b.replace(/\/\*$/,""):/^[^/]+\/[^/]+$/.test(b)?h===b:!1)});t("file",f)},i=()=>{n.disabled||(r.value=!0)};return(u,c)=>(C(),M("div",{class:_([y(l).b("dragger"),y(l).is("dragover",r.value)]),onDrop:Ke(a,["prevent"]),onDragover:Ke(i,["prevent"]),onDragleave:c[0]||(c[0]=Ke(d=>r.value=!1,["prevent"]))},[ie(u.$slots,"default")],42,iJ))}}));var dJ=ge(cJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);const fJ=Be(Te(ne({},YC),{fileList:{type:$e(Array),default:()=>Dt([])},beforeUpload:{type:$e(Function),default:wt},onRemove:{type:$e(Function),default:wt},onStart:{type:$e(Function),default:wt},onSuccess:{type:$e(Function),default:wt},onProgress:{type:$e(Function),default:wt},onError:{type:$e(Function),default:wt},onExceed:{type:$e(Function),default:wt}})),pJ=["onKeydown"],hJ=["name","multiple","accept"],mJ={name:"ElUploadContent",inheritAttrs:!1},vJ=ee(Te(ne({},mJ),{props:fJ,setup(e,{expose:t}){const n=e,o=we("upload"),s=jt({}),l=jt(),r=p=>{if(p.length===0)return;const{autoUpload:h,limit:g,fileList:m,multiple:v,onStart:b,onExceed:w}=n;if(g&&m.length+p.length>g){w(p,m);return}v||(p=p.slice(0,1));for(const S of p){const $=S;$.uid=jC(),b($),h&&a($)}},a=async p=>{if(l.value.value="",!n.beforeUpload)return i(p);let h;try{h=await n.beforeUpload(p)}catch{h=!1}if(h===!1){n.onRemove(p);return}let g=p;if(h instanceof Blob){h instanceof File?g=h:g=new File([h],p.name,{type:p.type});for(const m of Object.keys(p))g[m]=p[m]}i(p)},i=p=>{const{headers:h,data:g,method:m,withCredentials:v,name:b,action:w,onProgress:S,onSuccess:$,onError:k,httpRequest:T}=n,{uid:O}=p,L={headers:h||{},withCredentials:v,file:p,data:g,method:m,filename:b,action:w,onProgress:B=>{S(B,p)},onSuccess:B=>{$(B,p),delete s.value[O]},onError:B=>{k(B,p),delete s.value[O]}},V=T(L);s.value[O]=V,V instanceof Promise&&V.then(L.onSuccess,L.onError)},u=p=>{const h=p.target.files;!h||r(Array.from(h))},c=()=>{n.disabled||(l.value.value="",l.value.click())},d=()=>{c()};return t({abort:p=>{n4(s.value).filter(p?([g])=>String(p.uid)===g:()=>!0).forEach(([g,m])=>{m instanceof XMLHttpRequest&&m.abort(),delete s.value[g]})},upload:a}),(p,h)=>(C(),M("div",{class:_([y(o).b(),y(o).m(p.listType)]),tabindex:"0",onClick:c,onKeydown:lt(Ke(d,["self"]),["enter","space"])},[p.drag?(C(),x(dJ,{key:0,disabled:p.disabled,onFile:r},{default:j(()=>[ie(p.$slots,"default")]),_:3},8,["disabled"])):ie(p.$slots,"default",{key:1}),D("input",{ref_key:"inputRef",ref:l,class:_(y(o).e("input")),name:p.name,multiple:p.multiple,accept:p.accept,type:"file",onChange:u},null,42,hJ)],42,pJ))}}));var Fg=ge(vJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue"]]);const Rc="ElUpload",gJ=e=>{var t;(t=e.url)!=null&&t.startsWith("blob:")&&URL.revokeObjectURL(e.url)},bJ=(e,t)=>{const n=A([]),o=f=>n.value.find(p=>p.uid===f.uid);function s(f){var p;(p=t.value)==null||p.abort(f)}function l(f=["ready","uploading","success","fail"]){n.value=n.value.filter(p=>!f.includes(p.status))}const r=(f,p)=>{const h=o(p);!h||(h.status="fail",n.value.splice(n.value.indexOf(h),1),e.onError(f,h,n.value),e.onChange(h,n.value))},a=(f,p)=>{const h=o(p);!h||(e.onProgress(f,h,n.value),h.status="uploading",h.percentage=Math.round(f.percent))},i=(f,p)=>{const h=o(p);!h||(h.status="success",h.response=f,e.onSuccess(f,h,n.value),e.onChange(h,n.value))},u=f=>{const p={name:f.name,percentage:0,status:"ready",size:f.size,raw:f,uid:f.uid};if(e.listType==="picture-card"||e.listType==="picture")try{p.url=URL.createObjectURL(f)}catch(h){h.message,e.onError(h,p,n.value)}n.value.push(p),e.onChange(p,n.value)},c=async(f,p)=>{p&&Na({scope:Rc,from:"handleRemove second argument",version:"2.2",replacement:"first argument `file`",ref:"https://element-plus.org/en-US/component/upload.html#methods"},!0);const h=p||f,g=h instanceof File?o(h):h;g||Kt(Rc,"file to be removed not found");const m=v=>{s(v);const b=n.value;b.splice(b.indexOf(v),1),e.onRemove(v,b),gJ(v)};e.beforeRemove?await e.beforeRemove(g,n.value)!==!1&&m(g):m(g)};function d(){n.value.filter(({status:f})=>f==="ready").forEach(({raw:f})=>{var p;return f&&((p=t.value)==null?void 0:p.upload(f))})}return pe(()=>e.listType,f=>{f!=="picture-card"&&f!=="picture"||(n.value=n.value.map(p=>{const{raw:h,url:g}=p;if(!g&&h)try{p.url=URL.createObjectURL(h)}catch(m){e.onError(m,p,n.value)}return p}))}),pe(()=>e.fileList,f=>{for(const p of f)p.uid||(p.uid=jC()),p.status||(p.status="success");n.value=f},{immediate:!0,deep:!0}),{abort:s,clearFiles:l,handleError:r,handleProgress:a,handleStart:u,handleSuccess:i,handleRemove:c,submit:d,uploadFiles:n}},yJ={name:"ElUpload"},wJ=ee(Te(ne({},yJ),{props:ZZ,setup(e,{expose:t}){const n=e,o=Ea(),s=pl(),l=jt(),{abort:r,submit:a,clearFiles:i,uploadFiles:u,handleStart:c,handleError:d,handleRemove:f,handleSuccess:p,handleProgress:h}=bJ(n,l),g=E(()=>n.listType==="picture-card"),m=E(()=>Te(ne({},n),{onStart:c,onProgress:h,onSuccess:p,onError:d,onRemove:f}));return _t(()=>{u.value.forEach(({url:v})=>{v!=null&&v.startsWith("blob:")&&URL.revokeObjectURL(v)})}),st(o1,{accept:Yt(n,"accept")}),t({abort:r,submit:a,clearFiles:i,handleStart:c,handleRemove:f}),(v,b)=>(C(),M("div",null,[y(g)&&v.showFileList?(C(),x(Bg,{key:0,disabled:y(s),"list-type":v.listType,files:y(u),"handle-preview":v.onPreview,onRemove:y(f)},fs({append:j(()=>[v.listType==="picture-card"?(C(),x(Fg,Et({key:0,ref_key:"uploadRef",ref:l},y(m)),{default:j(()=>[y(o).trigger?ie(v.$slots,"trigger",{key:0}):G("v-if",!0),!y(o).trigger&&y(o).default?ie(v.$slots,"default",{key:1}):G("v-if",!0)]),_:3},16)):G("v-if",!0)]),_:2},[v.$slots.file?{name:"default",fn:j(({file:w})=>[ie(v.$slots,"file",{file:w})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):G("v-if",!0),v.listType!=="picture-card"?(C(),x(Fg,Et({key:1,ref_key:"uploadRef",ref:l},y(m)),{default:j(()=>[y(o).trigger?ie(v.$slots,"trigger",{key:0}):G("v-if",!0),!y(o).trigger&&y(o).default?ie(v.$slots,"default",{key:1}):G("v-if",!0)]),_:3},16)):G("v-if",!0),v.$slots.trigger?ie(v.$slots,"default",{key:2}):G("v-if",!0),ie(v.$slots,"tip"),!y(g)&&v.showFileList?(C(),x(Bg,{key:3,disabled:y(s),"list-type":v.listType,files:y(u),"handle-preview":v.onPreview,onRemove:y(f)},fs({_:2},[v.$slots.file?{name:"default",fn:j(({file:w})=>[ie(v.$slots,"file",{file:w})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):G("v-if",!0)]))}}));var CJ=ge(wJ,[["__file","/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue"]]);const $J=ot(CJ);var kJ=[y6,M6,GR,tV,iV,M1,CV,$V,Kn,L1,OB,RB,GB,XB,dF,Z5,gF,ao,m5,rw,wF,LF,RF,AF,uH,fH,SH,EH,_H,TH,AH,r9,p9,h9,Lw,M9,H9,BK,FK,HK,S7,hW,mW,je,NW,Gw,Jn,Xw,zW,ij,uj,cj,vj,mY,wY,TY,A1,oC,fw,I5,O5,YY,ZY,xY,Uo,sl,xi,Yj,YU,xU,eq,bq,Eq,Oq,Iq,jq,XG,ZG,cX,dX,Wu,vB,gX,$X,kX,mn,YX,lZ,yZ,EZ,jZ,$J];const eo="ElInfiniteScroll",SJ=50,EJ=200,_J=0,TJ={delay:{type:Number,default:EJ},distance:{type:Number,default:_J},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Bp=(e,t)=>Object.entries(TJ).reduce((n,[o,s])=>{var l,r;const{type:a,default:i}=s,u=e.getAttribute(`infinite-scroll-${o}`);let c=(r=(l=t[u])!=null?l:u)!=null?r:i;return c=c==="false"?!1:c,c=a(c),n[o]=Number.isNaN(c)?i:c,n},{}),UC=e=>{const{observer:t}=e[eo];t&&(t.disconnect(),delete e[eo].observer)},AJ=(e,t)=>{const{container:n,containerEl:o,instance:s,observer:l,lastScrollTop:r}=e[eo],{disabled:a,distance:i}=Bp(e,s),{clientHeight:u,scrollHeight:c,scrollTop:d}=o,f=d-r;if(e[eo].lastScrollTop=d,l||a||f<0)return;let p=!1;if(n===e)p=c-(u+d)<=i;else{const{clientTop:h,scrollHeight:g}=e,m=Q3(e,o);p=d+u>=m+h+g-i}p&&t.call(s)};function Vc(e,t){const{containerEl:n,instance:o}=e[eo],{disabled:s}=Bp(e,o);s||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(o):UC(e))}const NJ={async mounted(e,t){const{instance:n,value:o}=t;et(o)||Kt(eo,"'v-infinite-scroll' binding value must be a function"),await ze();const{delay:s,immediate:l}=Bp(e,n),r=ep(e,!0),a=r===window?document.documentElement:r,i=Us(AJ.bind(null,e,o),s);if(!!r){if(e[eo]={instance:n,container:r,containerEl:a,delay:s,cb:o,onScroll:i,lastScrollTop:a.scrollTop},l){const u=new MutationObserver(Us(Vc.bind(null,e,o),SJ));e[eo].observer=u,u.observe(e,{childList:!0,subtree:!0}),Vc(e,o)}r.addEventListener("scroll",i)}},unmounted(e){const{container:t,onScroll:n}=e[eo];t==null||t.removeEventListener("scroll",n),UC(e)},async updated(e){e[eo]||await ze();const{containerEl:t,cb:n,observer:o}=e[eo];t.clientHeight&&o&&Vc(e,n)}},qd=NJ;qd.install=e=>{e.directive("InfiniteScroll",qd)};const MJ=qd;function OJ(e){let t;const n=A(!1),o=yt(Te(ne({},e),{originalPosition:"",originalOverflow:"",visible:!1}));function s(d){o.text=d}function l(){const d=o.parent;if(!d.vLoadingAddClassList){let f=d.getAttribute("loading-number");f=Number.parseInt(f)-1,f?d.setAttribute("loading-number",f.toString()):(fn(d,"el-loading-parent--relative"),d.removeAttribute("loading-number")),fn(d,"el-loading-parent--hidden")}r()}function r(){var d,f;(f=(d=c.$el)==null?void 0:d.parentNode)==null||f.removeChild(c.$el)}function a(){var d;if(e.beforeClose&&!e.beforeClose())return;const f=o.parent;f.vLoadingAddClassList=void 0,n.value=!0,clearTimeout(t),t=window.setTimeout(()=>{n.value&&(n.value=!1,l())},400),o.visible=!1,(d=e.closed)==null||d.call(e)}function i(){!n.value||(n.value=!1,l())}const c=e0({name:"ElLoading",setup(){return()=>{const d=o.spinner||o.svg,f=De("svg",ne({class:"circular",viewBox:o.svgViewBox?o.svgViewBox:"25 25 50 50"},d?{innerHTML:d}:{}),[De("circle",{class:"path",cx:"50",cy:"50",r:"20",fill:"none"})]),p=o.text?De("p",{class:"el-loading-text"},[o.text]):void 0;return De(zt,{name:"el-loading-fade",onAfterLeave:i},{default:j(()=>[Ge(Y("div",{style:{backgroundColor:o.background||""},class:["el-loading-mask",o.customClass,o.fullscreen?"is-fullscreen":""]},[De("div",{class:"el-loading-spinner"},[f,p])]),[[pt,o.visible]])])})}}}).mount(document.createElement("div"));return Te(ne({},Ut(o)),{setText:s,remvoeElLoadingChild:r,close:a,handleAfterLeave:i,vm:c,get $el(){return c.$el}})}let Er;const Gd=function(e={}){if(!ct)return;const t=IJ(e);t.fullscreen&&Er&&(Er.remvoeElLoadingChild(),Er.close());const n=OJ(Te(ne({},t),{closed:()=>{var s;(s=t.closed)==null||s.call(t),t.fullscreen&&(Er=void 0)}}));PJ(t,t.parent,n),Hg(t,t.parent,n),t.parent.vLoadingAddClassList=()=>Hg(t,t.parent,n);let o=t.parent.getAttribute("loading-number");return o?o=`${Number.parseInt(o)+1}`:o="1",t.parent.setAttribute("loading-number",o),t.parent.appendChild(n.$el),ze(()=>n.visible.value=t.visible),t.fullscreen&&(Er=n),n},IJ=e=>{var t,n,o,s;let l;return Qe(e.target)?l=(t=document.querySelector(e.target))!=null?t:document.body:l=e.target||document.body,{parent:l===document.body||e.body?document.body:l,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:l===document.body&&((n=e.fullscreen)!=null?n:!0),lock:(o=e.lock)!=null?o:!1,customClass:e.customClass||"",visible:(s=e.visible)!=null?s:!0,target:l}},PJ=async(e,t,n)=>{const{nextZIndex:o}=jo(),s={};if(e.fullscreen)n.originalPosition.value=bo(document.body,"position"),n.originalOverflow.value=bo(document.body,"overflow"),s.zIndex=o();else if(e.parent===document.body){n.originalPosition.value=bo(document.body,"position"),await ze();for(const l of["top","left"]){const r=l==="top"?"scrollTop":"scrollLeft";s[l]=`${e.target.getBoundingClientRect()[l]+document.body[r]+document.documentElement[r]-Number.parseInt(bo(document.body,`margin-${l}`),10)}px`}for(const l of["height","width"])s[l]=`${e.target.getBoundingClientRect()[l]}px`}else n.originalPosition.value=bo(t,"position");for(const[l,r]of Object.entries(s))n.$el.style[l]=r},Hg=(e,t,n)=>{n.originalPosition.value!=="absolute"&&n.originalPosition.value!=="fixed"?wo(t,"el-loading-parent--relative"):fn(t,"el-loading-parent--relative"),e.fullscreen&&e.lock?wo(t,"el-loading-parent--hidden"):fn(t,"el-loading-parent--hidden")},Xd=Symbol("ElLoading"),zg=(e,t)=>{var n,o,s,l;const r=t.instance,a=f=>dt(t.value)?t.value[f]:void 0,i=f=>{const p=Qe(f)&&(r==null?void 0:r[f])||f;return p&&A(p)},u=f=>i(a(f)||e.getAttribute(`element-loading-${vs(f)}`)),c=(n=a("fullscreen"))!=null?n:t.modifiers.fullscreen,d={text:u("text"),svg:u("svg"),svgViewBox:u("svgViewBox"),spinner:u("spinner"),background:u("background"),customClass:u("customClass"),fullscreen:c,target:(o=a("target"))!=null?o:c?void 0:e,body:(s=a("body"))!=null?s:t.modifiers.body,lock:(l=a("lock"))!=null?l:t.modifiers.lock};e[Xd]={options:d,instance:Gd(d)}},DJ=(e,t)=>{for(const n of Object.keys(t))Lt(t[n])&&(t[n].value=e[n])},Kg={mounted(e,t){t.value&&zg(e,t)},updated(e,t){const n=e[Xd];t.oldValue!==t.value&&(t.value&&!t.oldValue?zg(e,t):t.value&&t.oldValue?dt(t.value)&&DJ(t.value,n.options):n==null||n.instance.close())},unmounted(e){var t;(t=e[Xd])==null||t.instance.close()}},LJ={install(e){e.directive("loading",Kg),e.config.globalProperties.$loading=Gd},directive:Kg,service:Gd},qC=["success","info","warning","error"],RJ=Be({customClass:{type:String,default:""},center:{type:Boolean,default:!1},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:3e3},icon:{type:nn,default:""},id:{type:String,default:""},message:{type:$e([String,Object,Function]),default:""},onClose:{type:$e(Function),required:!1},showClose:{type:Boolean,default:!1},type:{type:String,values:qC,default:"info"},offset:{type:Number,default:20},zIndex:{type:Number,default:0},grouping:{type:Boolean,default:!1},repeatNum:{type:Number,default:1}}),VJ={destroy:()=>!0},BJ=ee({name:"ElMessage",components:ne({ElBadge:M1,ElIcon:je},Lu),props:RJ,emits:VJ,setup(e){const t=we("message"),n=A(!1),o=A(e.type?e.type==="error"?"danger":e.type:"info");let s;const l=E(()=>{const f=e.type;return{[t.bm("icon",f)]:f&&Ho[f]}}),r=E(()=>e.icon||Ho[e.type]||""),a=E(()=>({top:`${e.offset}px`,zIndex:e.zIndex}));function i(){e.duration>0&&({stop:s}=nl(()=>{n.value&&c()},e.duration))}function u(){s==null||s()}function c(){n.value=!1}function d({code:f}){f===Ie.esc?n.value&&c():i()}return xe(()=>{i(),n.value=!0}),pe(()=>e.repeatNum,()=>{u(),i()}),Ht(document,"keydown",d),{ns:t,typeClass:l,iconComponent:r,customStyle:a,visible:n,badgeType:o,close:c,clearTimer:u,startTimer:i}}}),FJ=["id"],HJ=["innerHTML"];function zJ(e,t,n,o,s,l){const r=le("el-badge"),a=le("el-icon"),i=le("close");return C(),x(zt,{name:e.ns.b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t[2]||(t[2]=u=>e.$emit("destroy"))},{default:j(()=>[Ge(D("div",{id:e.id,class:_([e.ns.b(),{[e.ns.m(e.type)]:e.type&&!e.icon},e.ns.is("center",e.center),e.ns.is("closable",e.showClose),e.customClass]),style:Pe(e.customStyle),role:"alert",onMouseenter:t[0]||(t[0]=(...u)=>e.clearTimer&&e.clearTimer(...u)),onMouseleave:t[1]||(t[1]=(...u)=>e.startTimer&&e.startTimer(...u))},[e.repeatNum>1?(C(),x(r,{key:0,value:e.repeatNum,type:e.badgeType,class:_(e.ns.e("badge"))},null,8,["value","type","class"])):G("v-if",!0),e.iconComponent?(C(),x(a,{key:1,class:_([e.ns.e("icon"),e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M(Le,{key:1},[G(" Caution here, message could've been compromised, never use user's input as message "),D("p",{class:_(e.ns.e("content")),innerHTML:e.message},null,10,HJ)],2112)):(C(),M("p",{key:0,class:_(e.ns.e("content"))},he(e.message),3))]),e.showClose?(C(),x(a,{key:2,class:_(e.ns.e("closeBtn")),onClick:Ke(e.close,["stop"])},{default:j(()=>[Y(i)]),_:1},8,["class","onClick"])):G("v-if",!0)],46,FJ),[[pt,e.visible]])]),_:3},8,["name","onBeforeLeave"])}var KJ=ge(BJ,[["render",zJ],["__file","/home/runner/work/element-plus/element-plus/packages/components/message/src/message.vue"]]);const bn=[];let WJ=1;const er=function(e={},t){if(!ct)return{close:()=>{}};if(ht(Od.max)&&bn.length>=Od.max)return{close:()=>{}};if(!Ft(e)&&dt(e)&&e.grouping&&!Ft(e.message)&&bn.length){const d=bn.find(f=>{var p,h,g;return`${(h=(p=f.vm.props)==null?void 0:p.message)!=null?h:""}`==`${(g=e.message)!=null?g:""}`});if(d)return d.vm.component.props.repeatNum+=1,d.vm.component.props.type=(e==null?void 0:e.type)||"info",{close:()=>c.component.proxy.visible=!1}}(Qe(e)||Ft(e))&&(e={message:e});let n=e.offset||20;bn.forEach(({vm:d})=>{var f;n+=(((f=d.el)==null?void 0:f.offsetHeight)||0)+16}),n+=16;const{nextZIndex:o}=jo(),s=`message_${WJ++}`,l=e.onClose,r=Te(ne({zIndex:o()},e),{offset:n,id:s,onClose:()=>{jJ(s,l)}});let a=document.body;ol(e.appendTo)?a=e.appendTo:Qe(e.appendTo)&&(a=document.querySelector(e.appendTo)),ol(a)||(a=document.body);const i=document.createElement("div");i.className=`container_${s}`;const u=r.message,c=Y(KJ,r,et(u)?{default:u}:Ft(u)?{default:()=>u}:null);return c.appContext=t||er._context,c.props.onDestroy=()=>{ql(null,i)},ql(c,i),bn.push({vm:c}),a.appendChild(i.firstElementChild),{close:()=>c.component.proxy.visible=!1}};qC.forEach(e=>{er[e]=(t={},n)=>((Qe(t)||Ft(t))&&(t={message:t}),er(Te(ne({},t),{type:e}),n))});function jJ(e,t){const n=bn.findIndex(({vm:r})=>e===r.component.props.id);if(n===-1)return;const{vm:o}=bn[n];if(!o)return;t==null||t(o);const s=o.el.offsetHeight;bn.splice(n,1);const l=bn.length;if(!(l<1))for(let r=n;r=0;t--){const n=bn[t].vm.component;(e=n==null?void 0:n.proxy)==null||e.close()}}er.closeAll=YJ;er._context=null;const UJ=z0(er,"$message"),qJ=ee({name:"ElMessageBox",directives:{TrapFocus:K1},components:ne({ElButton:Kn,ElInput:Jn,ElOverlay:yp,ElIcon:je},Lu),inheritAttrs:!1,props:{buttonSize:{type:String,validator:On},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{t:n}=kt(),o=A(!1),{nextZIndex:s}=jo(),l=yt({beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:null,inputValidator:null,inputErrorMessage:"",message:null,modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:s()}),r=E(()=>{const O=l.type;return O&&Ho[O]?`el-message-box-icon--${O}`:""}),a=Wt(E(()=>e.buttonSize),{prop:!0,form:!0,formItem:!0}),i=E(()=>l.icon||Ho[l.type]||""),u=E(()=>!!l.message),c=A(),d=A(),f=A(),p=A(),h=E(()=>l.confirmButtonClass);pe(()=>l.inputValue,async O=>{await ze(),e.boxType==="prompt"&&O!==null&&$()},{immediate:!0}),pe(()=>o.value,O=>{O&&((e.boxType==="alert"||e.boxType==="confirm")&&ze().then(()=>{var L,V,B;(B=(V=(L=p.value)==null?void 0:L.$el)==null?void 0:V.focus)==null||B.call(V)}),l.zIndex=s()),e.boxType==="prompt"&&(O?ze().then(()=>{f.value&&f.value.$el&&k().focus()}):(l.editorErrorMessage="",l.validateError=!1))});const g=E(()=>e.draggable);i1(c,d,g),xe(async()=>{await ze(),e.closeOnHashChange&&Tt(window,"hashchange",m)}),_t(()=>{e.closeOnHashChange&&Bt(window,"hashchange",m)});function m(){!o.value||(o.value=!1,ze(()=>{l.action&&t("action",l.action)}))}const v=()=>{e.closeOnClickModal&&S(l.distinguishCancelAndClose?"close":"cancel")},b=ap(v),w=O=>{if(l.inputType!=="textarea")return O.preventDefault(),S("confirm")},S=O=>{var L;e.boxType==="prompt"&&O==="confirm"&&!$()||(l.action=O,l.beforeClose?(L=l.beforeClose)==null||L.call(l,O,l,m):m())},$=()=>{if(e.boxType==="prompt"){const O=l.inputPattern;if(O&&!O.test(l.inputValue||""))return l.editorErrorMessage=l.inputErrorMessage||n("el.messagebox.error"),l.validateError=!0,!1;const L=l.inputValidator;if(typeof L=="function"){const V=L(l.inputValue);if(V===!1)return l.editorErrorMessage=l.inputErrorMessage||n("el.messagebox.error"),l.validateError=!0,!1;if(typeof V=="string")return l.editorErrorMessage=V,l.validateError=!0,!1}}return l.editorErrorMessage="",l.validateError=!1,!0},k=()=>{const O=f.value.$refs;return O.input||O.textarea},T=()=>{S("close")};return e.closeOnPressEscape?c1({handleClose:T},o):R8(o,"keydown",O=>O.code===Ie.esc),e.lockScroll&&u1(o),d1(o),Te(ne({},Ut(l)),{overlayEvent:b,visible:o,hasMessage:u,typeClass:r,btnSize:a,iconComponent:i,confirmButtonClasses:h,rootRef:c,headerRef:d,inputRef:f,confirmRef:p,doClose:m,handleClose:T,handleWrapperClick:v,handleInputEnter:w,handleAction:S,t:n})}}),GJ=["aria-label"],XJ={key:0,ref:"headerRef",class:"el-message-box__header"},ZJ={class:"el-message-box__title"},JJ={class:"el-message-box__content"},QJ={class:"el-message-box__container"},xJ={key:1,class:"el-message-box__message"},eQ={key:0},tQ=["innerHTML"],nQ={class:"el-message-box__input"},oQ={class:"el-message-box__btns"};function sQ(e,t,n,o,s,l){const r=le("el-icon"),a=le("close"),i=le("el-input"),u=le("el-button"),c=le("el-overlay"),d=Mn("trap-focus");return C(),x(zt,{name:"fade-in-linear",onAfterLeave:t[11]||(t[11]=f=>e.$emit("vanish"))},{default:j(()=>[Ge(Y(c,{"z-index":e.zIndex,"overlay-class":["is-message-box",e.modalClass],mask:e.modal},{default:j(()=>[D("div",{class:"el-overlay-message-box",onClick:t[8]||(t[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:t[9]||(t[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:t[10]||(t[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[Ge((C(),M("div",{ref:"rootRef",role:"dialog","aria-label":e.title||"dialog","aria-modal":"true",class:_(["el-message-box",e.customClass,{"el-message-box--center":e.center,"is-draggable":e.draggable}]),style:Pe(e.customStyle),onClick:t[7]||(t[7]=Ke(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(C(),M("div",XJ,[D("div",ZJ,[e.iconComponent&&e.center?(C(),x(r,{key:0,class:_(["el-message-box__status",e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),D("span",null,he(e.title),1)]),e.showClose?(C(),M("button",{key:0,type:"button",class:"el-message-box__headerbtn","aria-label":"Close",onClick:t[0]||(t[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:t[1]||(t[1]=lt(Ke(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[Y(r,{class:"el-message-box__close"},{default:j(()=>[Y(a)]),_:1})],32)):G("v-if",!0)],512)):G("v-if",!0),D("div",JJ,[D("div",QJ,[e.iconComponent&&!e.center&&e.hasMessage?(C(),x(r,{key:0,class:_(["el-message-box__status",e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),e.hasMessage?(C(),M("div",xJ,[ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M("p",{key:1,innerHTML:e.message},null,8,tQ)):(C(),M("p",eQ,he(e.message),1))])])):G("v-if",!0)]),Ge(D("div",nQ,[Y(i,{ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":t[2]||(t[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,class:_({invalid:e.validateError}),onKeydown:lt(e.handleInputEnter,["enter"])},null,8,["modelValue","type","placeholder","class","onKeydown"]),D("div",{class:"el-message-box__errormsg",style:Pe({visibility:e.editorErrorMessage?"visible":"hidden"})},he(e.editorErrorMessage),5)],512),[[pt,e.showInput]])]),D("div",oQ,[e.showCancelButton?(C(),x(u,{key:0,loading:e.cancelButtonLoading,class:_([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t[3]||(t[3]=f=>e.handleAction("cancel")),onKeydown:t[4]||(t[4]=lt(Ke(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:j(()=>[at(he(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","class","round","size"])):G("v-if",!0),Ge(Y(u,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,class:_([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t[5]||(t[5]=f=>e.handleAction("confirm")),onKeydown:t[6]||(t[6]=lt(Ke(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:j(()=>[at(he(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","class","round","disabled","size"]),[[pt,e.showConfirmButton]])])],14,GJ)),[[d]])],32)]),_:3},8,["z-index","overlay-class","mask"]),[[pt,e.visible]])]),_:3})}var lQ=ge(qJ,[["render",sQ],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const pa=new Map,rQ=(e,t,n=null)=>{const o=De(lQ,e);return o.appContext=n,ql(o,t),document.body.appendChild(t.firstElementChild),o.component},aQ=()=>document.createElement("div"),iQ=(e,t)=>{const n=aQ();e.onVanish=()=>{ql(null,n),pa.delete(s)},e.onAction=l=>{const r=pa.get(s);let a;e.showInput?a={value:s.inputValue,action:l}:a=l,e.callback?e.callback(a,o.proxy):l==="cancel"||l==="close"?e.distinguishCancelAndClose&&l!=="cancel"?r.reject("close"):r.reject("cancel"):r.resolve(a)};const o=rQ(e,n,t),s=o.proxy;for(const l in e)rt(e,l)&&!rt(s.$props,l)&&(s[l]=e[l]);return pe(()=>s.message,(l,r)=>{Ft(l)?o.slots.default=()=>[l]:Ft(r)&&!Ft(l)&&delete o.slots.default},{immediate:!0}),s.visible=!0,s};function pr(e,t=null){if(!ct)return Promise.reject();let n;return Qe(e)||Ft(e)?e={message:e}:n=e.callback,new Promise((o,s)=>{const l=iQ(e,t!=null?t:pr._context);pa.set(l,{options:e,callback:n,resolve:o,reject:s})})}const uQ=["alert","confirm","prompt"],cQ={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};uQ.forEach(e=>{pr[e]=dQ(e)});function dQ(e){return(t,n,o,s)=>{let l;return dt(n)?(o=n,l=""):Cn(n)?l="":l=n,pr(Object.assign(ne({title:l,message:t,type:""},cQ[e]),o,{boxType:e}),s)}}pr.close=()=>{pa.forEach((e,t)=>{t.doClose()}),pa.clear()};pr._context=null;const es=pr;es.install=e=>{es._context=e._context,e.config.globalProperties.$msgbox=es,e.config.globalProperties.$messageBox=es,e.config.globalProperties.$alert=es.alert,e.config.globalProperties.$confirm=es.confirm,e.config.globalProperties.$prompt=es.prompt};const fQ=es,GC=["success","info","warning","error"],pQ=Be({customClass:{type:String,default:""},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:$e([String,Object]),default:""},id:{type:String,default:""},message:{type:$e([String,Object]),default:""},offset:{type:Number,default:0},onClick:{type:$e(Function),default:()=>{}},onClose:{type:$e(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...GC,""],default:""},zIndex:{type:Number,default:0}}),hQ={destroy:()=>!0},mQ=ee({name:"ElNotification",components:ne({ElIcon:je},Lu),props:pQ,emits:hQ,setup(e){const t=we("notification"),n=A(!1);let o;const s=E(()=>{const p=e.type;return p&&Ho[e.type]?t.m(p):""}),l=E(()=>Ho[e.type]||e.icon||""),r=E(()=>e.position.endsWith("right")?"right":"left"),a=E(()=>e.position.startsWith("top")?"top":"bottom"),i=E(()=>({[a.value]:`${e.offset}px`,zIndex:e.zIndex}));function u(){e.duration>0&&({stop:o}=nl(()=>{n.value&&d()},e.duration))}function c(){o==null||o()}function d(){n.value=!1}function f({code:p}){p===Ie.delete||p===Ie.backspace?c():p===Ie.esc?n.value&&d():u()}return xe(()=>{u(),n.value=!0}),Ht(document,"keydown",f),{ns:t,horizontalClass:r,typeClass:s,iconComponent:l,positionStyle:i,visible:n,close:d,clearTimer:c,startTimer:u}}}),vQ=["id"],gQ=["textContent"],bQ={key:0},yQ=["innerHTML"];function wQ(e,t,n,o,s,l){const r=le("el-icon"),a=le("close");return C(),x(zt,{name:e.ns.b("fade"),onBeforeLeave:e.onClose,onAfterLeave:t[3]||(t[3]=i=>e.$emit("destroy"))},{default:j(()=>[Ge(D("div",{id:e.id,class:_([e.ns.b(),e.customClass,e.horizontalClass]),style:Pe(e.positionStyle),role:"alert",onMouseenter:t[0]||(t[0]=(...i)=>e.clearTimer&&e.clearTimer(...i)),onMouseleave:t[1]||(t[1]=(...i)=>e.startTimer&&e.startTimer(...i)),onClick:t[2]||(t[2]=(...i)=>e.onClick&&e.onClick(...i))},[e.iconComponent?(C(),x(r,{key:0,class:_([e.ns.e("icon"),e.typeClass])},{default:j(()=>[(C(),x(ft(e.iconComponent)))]),_:1},8,["class"])):G("v-if",!0),D("div",{class:_(e.ns.e("group"))},[D("h2",{class:_(e.ns.e("title")),textContent:he(e.title)},null,10,gQ),Ge(D("div",{class:_(e.ns.e("content")),style:Pe(e.title?void 0:{margin:0})},[ie(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(C(),M(Le,{key:1},[G(" Caution here, message could've been compromized, nerver use user's input as message "),G(" eslint-disable-next-line "),D("p",{innerHTML:e.message},null,8,yQ)],2112)):(C(),M("p",bQ,he(e.message),1))])],6),[[pt,e.message]]),e.showClose?(C(),x(r,{key:0,class:_(e.ns.e("closeBtn")),onClick:Ke(e.close,["stop"])},{default:j(()=>[Y(a)]),_:1},8,["class","onClick"])):G("v-if",!0)],2)],46,vQ),[[pt,e.visible]])]),_:3},8,["name","onBeforeLeave"])}var CQ=ge(mQ,[["render",wQ],["__file","/home/runner/work/element-plus/element-plus/packages/components/notification/src/notification.vue"]]);const lu={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},Zd=16;let $Q=1;const tr=function(e={},t=null){if(!ct)return{close:()=>{}};(typeof e=="string"||Ft(e))&&(e={message:e});const n=e.position||"top-right";let o=e.offset||0;lu[n].forEach(({vm:d})=>{var f;o+=(((f=d.el)==null?void 0:f.offsetHeight)||0)+Zd}),o+=Zd;const{nextZIndex:s}=jo(),l=`notification_${$Q++}`,r=e.onClose,a=Te(ne({zIndex:s(),offset:o},e),{id:l,onClose:()=>{kQ(l,n,r)}});let i=document.body;ol(e.appendTo)?i=e.appendTo:Qe(e.appendTo)&&(i=document.querySelector(e.appendTo)),ol(i)||(i=document.body);const u=document.createElement("div"),c=Y(CQ,a,Ft(a.message)?{default:()=>a.message}:null);return c.appContext=t!=null?t:tr._context,c.props.onDestroy=()=>{ql(null,u)},ql(c,u),lu[n].push({vm:c}),i.appendChild(u.firstElementChild),{close:()=>{c.component.proxy.visible=!1}}};GC.forEach(e=>{tr[e]=(t={})=>((typeof t=="string"||Ft(t))&&(t={message:t}),tr(Te(ne({},t),{type:e})))});function kQ(e,t,n){const o=lu[t],s=o.findIndex(({vm:u})=>{var c;return((c=u.component)==null?void 0:c.props.id)===e});if(s===-1)return;const{vm:l}=o[s];if(!l)return;n==null||n(l);const r=l.el.offsetHeight,a=t.split("-")[0];o.splice(s,1);const i=o.length;if(!(i<1))for(let u=s;u{t.component.proxy.visible=!1})}tr.closeAll=SQ;tr._context=null;const EQ=z0(tr,"$notify");var _Q=[MJ,LJ,UJ,fQ,EQ,AY],TQ=p6([...kJ,..._Q]),XC={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t={name:"zh-tw",el:{colorpicker:{confirm:"\u78BA\u8A8D",clear:"\u6E05\u7A7A"},datepicker:{now:"\u73FE\u5728",today:"\u4ECA\u5929",cancel:"\u53D6\u6D88",clear:"\u6E05\u7A7A",confirm:"\u78BA\u8A8D",selectDate:"\u9078\u64C7\u65E5\u671F",selectTime:"\u9078\u64C7\u6642\u9593",startDate:"\u958B\u59CB\u65E5\u671F",startTime:"\u958B\u59CB\u6642\u9593",endDate:"\u7D50\u675F\u65E5\u671F",endTime:"\u7D50\u675F\u6642\u9593",prevYear:"\u524D\u4E00\u5E74",nextYear:"\u5F8C\u4E00\u5E74",prevMonth:"\u4E0A\u500B\u6708",nextMonth:"\u4E0B\u500B\u6708",year:"\u5E74",month1:"1 \u6708",month2:"2 \u6708",month3:"3 \u6708",month4:"4 \u6708",month5:"5 \u6708",month6:"6 \u6708",month7:"7 \u6708",month8:"8 \u6708",month9:"9 \u6708",month10:"10 \u6708",month11:"11 \u6708",month12:"12 \u6708",weeks:{sun:"\u65E5",mon:"\u4E00",tue:"\u4E8C",wed:"\u4E09",thu:"\u56DB",fri:"\u4E94",sat:"\u516D"},months:{jan:"\u4E00\u6708",feb:"\u4E8C\u6708",mar:"\u4E09\u6708",apr:"\u56DB\u6708",may:"\u4E94\u6708",jun:"\u516D\u6708",jul:"\u4E03\u6708",aug:"\u516B\u6708",sep:"\u4E5D\u6708",oct:"\u5341\u6708",nov:"\u5341\u4E00\u6708",dec:"\u5341\u4E8C\u6708"}},select:{loading:"\u52A0\u8F09\u4E2D",noMatch:"\u7121\u5339\u914D\u8CC7\u6599",noData:"\u7121\u8CC7\u6599",placeholder:"\u8ACB\u9078\u64C7"},cascader:{noMatch:"\u7121\u5339\u914D\u8CC7\u6599",loading:"\u52A0\u8F09\u4E2D",placeholder:"\u8ACB\u9078\u64C7",noData:"\u7121\u8CC7\u6599"},pagination:{goto:"\u524D\u5F80",pagesize:"\u9805/\u9801",total:"\u5171 {total} \u9805",pageClassifier:"\u9801"},messagebox:{title:"\u63D0\u793A",confirm:"\u78BA\u5B9A",cancel:"\u53D6\u6D88",error:"\u8F38\u5165\u7684\u8CC7\u6599\u4E0D\u7B26\u898F\u5B9A!"},upload:{deleteTip:"\u6309 delete \u9375\u53EF\u522A\u9664",delete:"\u522A\u9664",preview:"\u67E5\u770B\u5716\u7247",continue:"\u7E7C\u7E8C\u4E0A\u50B3"},table:{emptyText:"\u66AB\u7121\u8CC7\u6599",confirmFilter:"\u7BE9\u9078",resetFilter:"\u91CD\u7F6E",clearFilter:"\u5168\u90E8",sumText:"\u5408\u8A08"},tree:{emptyText:"\u66AB\u7121\u8CC7\u6599"},transfer:{noMatch:"\u7121\u5339\u914D\u8CC7\u6599",noData:"\u7121\u8CC7\u6599",titles:["\u5217\u8868 1","\u5217\u8868 2"],filterPlaceholder:"\u8ACB\u8F38\u5165\u641C\u7D22\u5167\u5BB9",noCheckedFormat:"\u5171 {total} \u9805",hasCheckedFormat:"\u5DF2\u9078 {checked}/{total} \u9805"},image:{error:"\u52A0\u8F09\u5931\u6557"},pageHeader:{title:"\u8FD4\u56DE"},popconfirm:{confirmButtonText:"\u78BA\u8A8D",cancelButtonText:"\u53D6\u6D88"}}};e.default=t})(XC);var AQ=YV(XC);const NQ=e=>{var t=window._CCSettings,n=cc.AssetManager.BuiltinBundleName.RESOURCES,o=cc.AssetManager.BuiltinBundleName.INTERNAL,s=cc.AssetManager.BuiltinBundleName.MAIN,l=t.jsList;l&&(l=l.map(function(d){return"./static/cocos-build/web-mobile/src/"+d}));var r={id:"GameCanvas",debugMode:t.debug?cc.debug.DebugMode.INFO:cc.debug.DebugMode.ERROR,showFPS:t.debug,frameRate:60,groupList:t.groupList,collisionMatrix:t.collisionMatrix};cc.AssetLibrary.init({bundleVers:t.bundleVers,remoteBundles:t.remoteBundles,server:t.server});var a=[o];t.hasResourcesBundle&&a.push(n);var i=0;function u(d){if(d)return console.error(d.message,d.stack);i++,i===a.length+1&&cc.assetManager.loadBundle(s,function(f){f||cc.game.run(r,()=>{e&&e()})})}cc.assetManager.loadScript(t.jsList.map(function(d){return"src/"+d}),u);for(var c=0;c{t()},200);function t(){NQ(()=>{Wg.loadScene("helloworld").then(n=>{console.log(123),Wg.updateResolution(this.STUDENT_SIZE,this.ratio),this.$emit("sceneLoaded")})})}return(n,o)=>(C(),M("div",MQ,IQ))}}),DQ=at("\u78BA\u5B9A "),LQ=ee({props:{APP:null},setup(e){const t=e,n=A("");function o(s){window.eventBus.emit("SendContent",s),t.APP.PopupVisible.value=!1}return(s,l)=>{const r=le("el-input"),a=le("el-button");return C(),M(Le,null,[Y(r,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=i=>n.value=i),placeholder:"Please input Label"},null,8,["modelValue"]),Y(a,{type:"primary",onClick:l[1]||(l[1]=()=>{o(n.value)}),size:"large",round:""},{default:j(()=>[DQ]),_:1})],64)}}}),RQ=ee({setup(e){const t=A(!1),n={PopupVisible:t};return window.eventBus.on("Alert",o=>{t.value=!0}),(o,s)=>(C(),M(Le,null,[Y(PQ),Y(y(Lw),{modelValue:t.value,"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),"show-close":!1},{default:j(()=>[Y(LQ,{APP:n})]),_:1},8,["modelValue"])],64))}});e0(RQ).use(TQ,{locale:AQ}).mount("#app")});export default VQ(); diff --git a/public/index.html b/public/index.html index f938415..a561ef1 100644 --- a/public/index.html +++ b/public/index.html @@ -7,9 +7,13 @@ - BJ_ServerState - - + cocos-vue-demo + + + + + + diff --git a/src/App.vue b/src/App.vue index c489129..579f083 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,17 +5,20 @@ import 'vue-loading-overlay/dist/vue-loading.css'; import GameCanvas from './components/GameCanvas.vue'; import Popup from './components/Popup.vue'; -const visible = ref(false) +const PopupVisible = ref(false) +const self = { + PopupVisible: PopupVisible +}; -window["eventBus"].on('alert', (msg: string) => { - visible.value = true; +window["eventBus"].on('Alert', (msg: string) => { + PopupVisible.value = true; }) diff --git a/src/components/Popup.vue b/src/components/Popup.vue index 7dd3916..4102fbe 100644 --- a/src/components/Popup.vue +++ b/src/components/Popup.vue @@ -2,10 +2,17 @@ import { ref } from 'vue'; import 'vue-loading-overlay/dist/vue-loading.css'; +const props = defineProps<{ APP: any }>() + const input = ref('') +function Send(content: string) { + window["eventBus"].emit("SendContent", content); + props.APP.PopupVisible.value = false; +} \ No newline at end of file diff --git a/static/cocos-build/web-mobile/assets/main/index.js b/static/cocos-build/web-mobile/assets/main/index.js index fce204b..76a86f2 100644 --- a/static/cocos-build/web-mobile/assets/main/index.js +++ b/static/cocos-build/web-mobile/assets/main/index.js @@ -1,98 +1,89 @@ window.__require = function e(t, n, r) { - function s(o, u) { - if (!n[o]) { - if (!t[o]) { - var b = o.split("/"); - b = b[b.length - 1]; - if (!t[b]) { - var a = "function" == typeof __require && __require; - if (!u && a) return a(b, !0); - if (i) return i(b, !0); - throw new Error("Cannot find module '" + o + "'"); - } - o = b; - } - var f = n[o] = { - exports: {} - }; - t[o][0].call(f.exports, function (e) { - var n = t[o][1][e]; - return s(n || e); - }, f, f.exports, e, t, n, r); - } - return n[o].exports; - } - var i = "function" == typeof __require && __require; - for (var o = 0; o < r.length; o++) s(r[o]); - return s; + function s(o, u) { + if (!n[o]) { + if (!t[o]) { + var b = o.split("/"); + b = b[b.length - 1]; + if (!t[b]) { + var a = "function" == typeof __require && __require; + if (!u && a) return a(b, !0); + if (i) return i(b, !0); + throw new Error("Cannot find module '" + o + "'"); + } + o = b; + } + var f = n[o] = { + exports: {} + }; + t[o][0].call(f.exports, function(e) { + var n = t[o][1][e]; + return s(n || e); + }, f, f.exports, e, t, n, r); + } + return n[o].exports; + } + var i = "function" == typeof __require && __require; + for (var o = 0; o < r.length; o++) s(r[o]); + return s; }({ - HelloWorld: [function (require, module, exports) { - "use strict"; - cc._RF.push(module, "fdc7afxuBxOA7RfBuV+NSmm", "HelloWorld"); - "use strict"; - var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) Object.prototype.hasOwnProperty.call(b, p) && (d[p] = b[p]); - }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { - this.constructor = d; - } - d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - }(); - var __decorate = this && this.__decorate || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r); - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", { - value: true - }); - var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; - var HelloWorld = function (_super) { - __extends(HelloWorld, _super); - function HelloWorld() { - var _this = null !== _super && _super.apply(this, arguments) || this; - _this.Label = null; - _this.Text = "hello"; - _this.Btn = null; - return _this; - } - HelloWorld.prototype.onClickBtn = function () { - var url = window.location.search; - var URLscheme = []; - if (-1 !== url.indexOf("?")) { - var str = url.substring(1); - var strs = str.split("&"); - for (var i = 0; i < strs.length; i++) URLscheme[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]); - } - // if (URLscheme["host"]) { - if (window.location.host) { - // null === opener || void 0 === opener ? void 0 : opener.window.parent.postMessage({ - // window.frames.postMessage({ - // data: "hello" - // }, window.location.host); - // window.close(); - window.eventBus.emit("alert", "hello"); - return; - } - }; - __decorate([property(cc.Label)], HelloWorld.prototype, "Label", void 0); - __decorate([property], HelloWorld.prototype, "Text", void 0); - __decorate([property(cc.Button)], HelloWorld.prototype, "Btn", void 0); - HelloWorld = __decorate([ccclass], HelloWorld); - return HelloWorld; - }(cc.Component); - exports.default = HelloWorld; - cc._RF.pop(); - }, {}] -}, {}, ["HelloWorld"]); \ No newline at end of file + HelloWorld: [ function(require, module, exports) { + "use strict"; + cc._RF.push(module, "fdc7afxuBxOA7RfBuV+NSmm", "HelloWorld"); + "use strict"; + var __extends = this && this.__extends || function() { + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function(d, b) { + d.__proto__ = b; + } || function(d, b) { + for (var p in b) Object.prototype.hasOwnProperty.call(b, p) && (d[p] = b[p]); + }; + return extendStatics(d, b); + }; + return function(d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var __decorate = this && this.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r); + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; + var HelloWorld = function(_super) { + __extends(HelloWorld, _super); + function HelloWorld() { + var _this = null !== _super && _super.apply(this, arguments) || this; + _this.Label = null; + _this.Text = "hello"; + _this.Btn = null; + return _this; + } + HelloWorld.prototype.onLoad = function() { + var self = this; + this.Label.string = this.Text; + window["eventBus"].on("SendContent", function(content) { + self.Label.string = content; + }); + }; + HelloWorld.prototype.onClickBtn = function() { + window["eventBus"].emit("Alert", "hello"); + }; + __decorate([ property(cc.Label) ], HelloWorld.prototype, "Label", void 0); + __decorate([ property ], HelloWorld.prototype, "Text", void 0); + __decorate([ property(cc.Button) ], HelloWorld.prototype, "Btn", void 0); + HelloWorld = __decorate([ ccclass ], HelloWorld); + return HelloWorld; + }(cc.Component); + exports.default = HelloWorld; + cc._RF.pop(); + }, {} ] +}, {}, [ "HelloWorld" ]); \ No newline at end of file

    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%0DeEw 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℘ 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�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