diff --git a/server-data/resources/[phone]/pma-voice/.github/CHANGELOG.md b/server-data/resources/[phone]/pma-voice/.github/CHANGELOG.md deleted file mode 100644 index 12f660a9c..000000000 --- a/server-data/resources/[phone]/pma-voice/.github/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# Changelog - - - - - - -1. [voice-ui/pnpm-lock.yaml]: chore: (deps-dev) bump url-parse + bump minimatch + bump terser @bitpredator -2. [client/module/phone.lua]: fix(phone): fix getting re-added to radios if perfectly hit -3. [client/init/main.lua]: fix(radio): fix oversight with function call -4. [workflows/dependency-review.yml]: chore(deps): bump actions/checkout from 3 to 4 -5. [voice-ui/pnpm-lock.yaml]: chore(deps-dev): bump follow-redirects in /voice-ui -6. [voice-ui/pnpm-lock.yaml]: chore(deps-dev): bump browserify-sign from 4.2.1 to 4.2.2 in /voice-ui \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/.github/ISSUE_TEMPLATE/bug_report.md b/server-data/resources/[phone]/pma-voice/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 7ce3d661e..000000000 --- a/server-data/resources/[phone]/pma-voice/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Did you read the README?**: There's a lot of information in the README, if you ask a question that is answered in the README, you will be told to "Read the README" - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See an error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Server Info:** - - Server Version: [e.g. 3456] -- Client Version: [e.g. production|canary] -- Client Build: [e.g. b1604|b2060|b2189|b2372] -- Game: [e.g. FiveM|RedM] - -**Additional context** -Add any other context about the problem here. diff --git a/server-data/resources/[phone]/pma-voice/.github/dependabot.yml b/server-data/resources/[phone]/pma-voice/.github/dependabot.yml deleted file mode 100644 index 3e89607de..000000000 --- a/server-data/resources/[phone]/pma-voice/.github/dependabot.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: 2 -updates: - - package-ecosystem: github-actions - directory: '/' - schedule: - interval: daily - open-pull-requests-limit: 99 - labels: - - 'dependencies' - - # Dependencies npm - - package-ecosystem: 'npm' - directory: '/' - schedule: - interval: 'daily' - # Disable version updates for npm dependencies - # https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates#overriding-the-default-behavior-with-a-configuration-file - open-pull-requests-limit: 99 - labels: - - 'dependencies' diff --git a/server-data/resources/[phone]/pma-voice/.github/stale.yml b/server-data/resources/[phone]/pma-voice/.github/stale.yml deleted file mode 100644 index aaf506716..000000000 --- a/server-data/resources/[phone]/pma-voice/.github/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security - - todo -# Label to use when marking an issue as stale -staleLabel: wontfix -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/server-data/resources/[phone]/pma-voice/.github/workflows/dependency-review.yml b/server-data/resources/[phone]/pma-voice/.github/workflows/dependency-review.yml deleted file mode 100644 index 0d4a01360..000000000 --- a/server-data/resources/[phone]/pma-voice/.github/workflows/dependency-review.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Dependency Review Action -# -# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. -# -# Source repository: https://github.com/actions/dependency-review-action -# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement -name: 'Dependency Review' -on: [pull_request] - -permissions: - contents: read - -jobs: - dependency-review: - runs-on: ubuntu-latest - steps: - - name: 'Checkout Repository' - uses: actions/checkout@v4 - - name: 'Dependency Review' - uses: actions/dependency-review-action@v4 diff --git a/server-data/resources/[phone]/pma-voice/.gitignore b/server-data/resources/[phone]/pma-voice/.gitignore deleted file mode 100644 index 2e2d6d210..000000000 --- a/server-data/resources/[phone]/pma-voice/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea -.vscode \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/LICENSE b/server-data/resources/[phone]/pma-voice/LICENSE deleted file mode 100644 index ad5aece80..000000000 --- a/server-data/resources/[phone]/pma-voice/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Dillon Skaggs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/server-data/resources/[phone]/pma-voice/README.md b/server-data/resources/[phone]/pma-voice/README.md deleted file mode 100644 index 2e130d725..000000000 --- a/server-data/resources/[phone]/pma-voice/README.md +++ /dev/null @@ -1,201 +0,0 @@ -## PLEASE NOTE: Currently master branch has some breaking changes - -If you previously used `voice_defaultPhoneVolume` you will instead need to use `voice_defaultCallVolume` -If you previously used `voice_enablePhones` you will instead need to use `voice_enableCalls` - -If you were previously using the state bag getter `Player(source).state.phone` you will instead need to use `Player(source).state.call` - -# pma-voice -A voice system designed around the use of FiveM/RedM internal mumble server. - -## Support - -Please report any issues you have in the GitHub [Issues](https://github.com/AvarianKnight/pma-voice/issues) - -### NOTE: It is expected for servers to be on the latest recommended version, which you can find [here for Windows](https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/) and [here for Linux](https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/). - -# Compatibility Notice: - -This script is not compatible with other voice systems (duh), that means if you have vMenus voice chat you will **have** to [disable](https://docs.vespura.com/vmenu/faq/#q-how-do-i-disable-voice-chat) it. - -Please do not override `NetworkSetTalkerProximity`, `MumbleSetTalkerProximity`, `MumbleSetAudioInputDistance`, `MumbleSetAudioOutputDistance` or `NetworkSetVoiceActive` in any of your other scripts as there have been cases where it breaks pma-voice. - -# Credits - -- @Frazzle for mumble-voip (for which the concept came from) -- @pichotm for pVoice (where the grid concept came from) - -# FiveM/RedM Config - -### NOTE: Only use one of the Audio options (don't enable 3d Audio & Native Audio at the same time), its also recommended to always use voice_useSendingRangeOnly. - -You only need to add the convar **if** you're changing the value. - -All of the configs here are set using `setr [voice_configOption] [boolean]` - -Native audio will not work on RedM, you will have to use 3d audio. - -| ConVar | Default | Description | Parameter(s) | -|----------------------------|---------|---------------------------------------------------------------|--------------| -| voice_useNativeAudio | false | Uses the games native audio, will add 3d sound, echo, reverb, and more. **Required for submixs** | boolean | -| voice_use2dAudio | false | Uses 2d audio, will result in same volume sound no matter where they're at until they leave proximity. | boolean -| voice_use3dAudio | false | Uses 3d audio | boolean | -| voice_useSendingRangeOnly | false | Only allows you to hear people within your hear/send range, prevents people from connecting to your mumble server and trolling. | boolean | - -# Config - -### PLEASE NOTE: Any keybind changes only affect new players, if you want to change your key bind go to Key Bindings -> FiveM -> Look for keybinds under 'pma-voice'. - -All of the config is done via ConVars in order to streamline the process. - -The ints are used like a boolean to 0 would be false, 1 true. - -All of the configs here are set using `setr [voice_configOption] [int]` OR `setr [voice_configOption] "[string]"` - -#### Note: If a convar defaults to 1 (true) you don't have set it again unless you want to disable it. - -### General Voice Settings - -| ConVar | Default | Description | Parameter(s) | -|-------------------------|---------|--------------------------------------------------------------------|--------------| -| voice_enableUi | 1 | Enables the built in user interface | int | -| voice_enableProximityCycle | 1 | Enables the usage of the F11 proximity key, if disabled players are stuck on the first proximity | int | -| voice_defaultCycle | F11 | The default key to cycle the players proximity. You can find a list of valid keys [in the Cfx docs](https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/) | string | -| voice_defaultRadioVolume | 30 | The default volume to set the radio to (has to be between 1 and 100) *NOTE: Only new joins will have the new value, players that already joined will not.* | float | -| voice_defaultCallVolume | 60 | The default volume to set the call to (has to be between 1 and 100) *NOTE: Only new joins will have the new value, players that already joined will not.* | float | -| voice_defaultVoiceMode | 2 | Default proximity voice value when player joins server. (Voice Modes; 1:Whisper, 2:Normal, 3:Shouting) | int | - -### Call & Radio - -| ConVar | Default | Description | Parameter(s) | -|-------------------------|---------|--------------------------------------------------------------------|--------------| -| voice_enableRadios | 1 | Enables the radio sub-modules | int | -| voice_enableCalls | 1 | Enables the call sub-modules | int | -| voice_enableSubmix | 1 | Enables the submix which adds a radio/call style submix to their voice **NOTE: Submixs require native audio** | int | -| voice_enableRadioAnim | 1 | Enables (grab shoulder mic) animation while talking on the radio. | int | -| voice_defaultRadio | LMENU | The default key to use the radio. You can find a list of valid keys [in the FiveM docs](https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/) | string | - -### Sync - -| ConVar | Default | Description | Parameter(s) | -|-------------------------|---------|--------------------------------------------------------------------|--------------| -| voice_refreshRate | 200 | How often the UI/Proximity is refreshed | int | - -### External Server & Misc. -| ConVar | Default | Description | Parameter(s) | -|-------------------------|---------|--------------------------------------------------------------------|--------------| -| voice_allowSetIntent | 1 | Whether or not to allow players to set their audio intents (you can see more [here](https://docs.fivem.net/natives/?_0x6383526B)) | int | -| voice_externalAddress | none | The external address to use to connect to the mumble server | string | -| voice_externalPort | 0 | The external port to use | int | -| voice_debugMode | 0 | 1 for basic logs, 4 for verbose logs | int | -| voice_externalDisallowJoin | 0 | Disables players being allowed to join the server, should only be used if you're using a FXServer as a external mumble server. | int | -| voice_hideEndpoints | 1 | Hides the mumble address in logs *NOTE: You should only care to hide this for a external server.* | int | - - - -### Aces - -pma-voice comes with a built in /muteply (tgtPly) (duration) command, in order to allow your staff to use it you will have to grand them the ace! - -Example: -`add_ace group.superadmin command.muteply allow;` - -This would only allow the superadmin group to mute players. - -### Exports - -#### Client - -##### Setters - -| Export | Description | Parameter(s) | -|---------------------|-----------------------------|--------------| -| [setVoiceProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any | -| [setRadioChannel](docs/client-setters/setRadioChannel.md) | Set radio channel | int | -| [setCallChannel](docs/client-setters/setCallChannel.md) | Set call channel | int | -| [setRadioVolume](docs/client-setters/setRadioVolume.md) | Set radio volume for player | int | -| [setCallVolume](docs/client-setters/setCallVolume.md) | Set call volume for player | int | -| [addPlayerToRadio](docs/client-setters/setRadioChannel.md) | Set radio channel | int | -| [addPlayerToCall](docs/client-setters/setCallChannel.md) | Set call channel | int | -| [removePlayerFromRadio](docs/client-setters/removePlayerFromRadio.md) | Remove player from radio | | -| [removePlayerFromCall](docs/client-setters/removePlayerFromCall.md) | Remove player from call | | - -##### Toggles - -| Export | Description | Parameter(s) | -|---------------------|--------------------------------------------------------|--------------| -| toggleMutePlayer | Toggles the selected player muted for the local client | int | - -Supported from mumble-voip / toko-voip - -| Export | Description | Parameter(s) | -|-----------------------|--------------------------|--------------| -| [SetMumbleProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any | -| [SetTokoProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any | -| [SetRadioChannel](docs/client-setters/setRadioChannel.md) | Set radio channel | int | -| [SetCallChannel](docs/client-setters/setCallChannel.md) | Set call channel | int | - -#### Getters - -The majority of setters are done through player states. - - -| State Bag | Description | Return Type | -|---------------|--------------------------------------------------------------|--------------| -| [proximity](docs/state-getters/stateBagGetters.md) | Returns a table with the mode index, distance, and mode name | table | -| [radioChannel](docs/state-getters/stateBagGetters.md) | Returns the players current radio channel, or 0 for none | int | -| [callChannel](docs/state-getters/stateBagGetters.md) | Returns the players current call channel, or 0 for none | int | -| [disableRadio](docs/state-getters/stateBagGetters.md) | Returns if the players radio is currently disabled, or 0 if its not. This is expected to be use as a bitwise, do *not* use a bool | int | - -#### Events - -These are events designed for third-party resource integration. These are emitted only to the current client. - -| Event | Description | Event Params | -|--------------------------|--------------------------------------------------------------|----------------| -| [pma-voice:settingsCallback](docs/client-getters/events.md) | When emited it will return the current pma-voice settings. | cb(voiceSettings) | -| [pma-voice:radioActive](docs/client-getters/events.md) | Triggered when the radio is activated / deactivated | boolean | -| [pma-voice:setTalkingMode](docs/client-getters/events.md) | Triggered on proximity mode change with the voice mode id | int | - - -#### Server - -##### Setters - -| Export | Description | Parameter(s) | -|----------------------|--------------------------------------|--------------| -| [setPlayerRadio](docs/server-setters/setPlayerRadio.md) | Sets the players radio channel | int, int | -| [setPlayerCall](docs/server-setters/setPlayerCall.md) | Sets the players call channel | int, int | -| [addChannelCheck](docs/server-setters/addChannelCheck.md) | Adds a channel check to the players radio channel | int, function | - - -##### Getters - -###### State Bags -You can access the state with `Player(source).state['state bag here']` - -| State Bag | Description | Return Type | -|---------------|--------------------------------------------------------------|--------------| -| [proximity](docs/state-getters/stateBagGetters.md) | Returns a table with the mode index, distance, and mode name | table | -| [radioChannel](docs/state-getters/stateBagGetters.md) | Returns the players current radio channel, or 0 for none | int | -| [callChannel](docs/state-getters/stateBagGetters.md) | Returns the players current call channel, or 0 for none | int | -| [voiceIntent](docs/state-getters/stateBagGetters.md) | Returns the players current voice intent, either 'speech' or 'music' | string | -| [disableRadio](docs/state-getters/stateBagGetters.md) | Returns if the players radio is currently disabled, or 0 if its not. This is expected to be use as a bitwise, do *not* use a bool | int | - -```ts -enum DisabledRadioStates { - Enabled = 0, - IsDead = 1, - IsCuffed = 2, - IsPdCuffed = 4, - IsUnderWater = 8, - DoesntHaveItem = 16, - PlayerDisabledRadio = 32, -} -``` - -###### Exports - -| Export | Description | Parameter(s) | -|------------------------------|---------------------------------------------------|------| -| [getPlayersInRadioChannel](docs/server-getters/getPlayersInRadioChannel.md) | Gets the current players in a radio channel | int | diff --git a/server-data/resources/[phone]/pma-voice/TODO.md b/server-data/resources/[phone]/pma-voice/TODO.md deleted file mode 100644 index 0371ce297..000000000 --- a/server-data/resources/[phone]/pma-voice/TODO.md +++ /dev/null @@ -1,10 +0,0 @@ -## TODO -- [ ] Ability to display radio members on the client. -- [ ] Use commands to define voiceModes in shared.lua and only leave debug logs in shared.lua. -- [ ] Convert the UI to React. -- [ ] Multiple radio channels. - -## DONE -- [ x ] Implement a easy way to get the players current radio channel on the server. -- [ x ] Add the ability to override proximity with exports. -- [ x ] Rename everything that uses 'phone' to 'call' for consistency. diff --git a/server-data/resources/[phone]/pma-voice/client/commands.lua b/server-data/resources/[phone]/pma-voice/client/commands.lua deleted file mode 100644 index 79713c88d..000000000 --- a/server-data/resources/[phone]/pma-voice/client/commands.lua +++ /dev/null @@ -1,83 +0,0 @@ -local wasProximityDisabledFromOverride = false -disableProximityCycle = false -RegisterCommand('setvoiceintent', function(source, args) - if GetConvarInt('voice_allowSetIntent', 1) == 1 then - local intent = args[1] - if intent == 'speech' then - MumbleSetAudioInputIntent(`speech`) - elseif intent == 'music' then - MumbleSetAudioInputIntent(`music`) - end - LocalPlayer.state:set('voiceIntent', intent, true) - end -end) -TriggerEvent('chat:addSuggestion', '/setvoiceintent', 'Sets the players voice intent', { - { - name = "intent", - help = "speech is default and enables noise suppression & high pass filter, music disables both of these." - }, -}) - --- TODO: Better implementation of this? -RegisterCommand('vol', function(_, args) - if not args[1] then return end - setVolume(tonumber(args[1])) -end) -TriggerEvent('chat:addSuggestion', '/vol', 'Sets the radio/phone volume', { - { name = "volume", help = "A range between 1-100 on how loud you want them to be" }, -}) - -exports('setAllowProximityCycleState', function(state) - type_check({ state, "boolean" }) - disableProximityCycle = state -end) - -function setProximityState(proximityRange, isCustom) - local voiceModeData = Cfg.voiceModes[mode] - MumbleSetTalkerProximity(proximityRange + 0.0) - LocalPlayer.state:set('proximity', { - index = mode, - distance = proximityRange, - mode = isCustom and "Custom" or voiceModeData[2], - }, true) - sendUIMessage({ - -- JS expects this value to be - 1, "custom" voice is on the last index - voiceMode = isCustom and #Cfg.voiceModes or mode - 1 - }) -end - -exports("overrideProximityRange", function(range, disableCycle) - type_check({ range, "number" }) - setProximityState(range, true) - if disableCycle then - disableProximityCycle = true - wasProximityDisabledFromOverride = true - end -end) - -exports("clearProximityOverride", function() - local voiceModeData = Cfg.voiceModes[mode] - setProximityState(voiceModeData[1], false) - if wasProximityDisabledFromOverride then - disableProximityCycle = false - end -end) - -RegisterCommand('cycleproximity', function() - -- Proximity is either disabled, or manually overwritten. - if GetConvarInt('voice_enableProximityCycle', 1) ~= 1 or disableProximityCycle then return end - local newMode = mode + 1 - - -- If we're within the range of our voice modes, allow the increase, otherwise reset to the first state - if newMode <= #Cfg.voiceModes then - mode = newMode - else - mode = 1 - end - - setProximityState(Cfg.voiceModes[mode][1], false) - TriggerEvent('pma-voice:setTalkingMode', mode) -end, false) -if gameVersion == 'fivem' then - RegisterKeyMapping('cycleproximity', 'Cycle Proximity', 'keyboard', GetConvar('voice_defaultCycle', 'F11')) -end diff --git a/server-data/resources/[phone]/pma-voice/client/events.lua b/server-data/resources/[phone]/pma-voice/client/events.lua deleted file mode 100644 index 918673db2..000000000 --- a/server-data/resources/[phone]/pma-voice/client/events.lua +++ /dev/null @@ -1,44 +0,0 @@ -function handleInitialState() - local voiceModeData = Cfg.voiceModes[mode] - MumbleSetTalkerProximity(voiceModeData[1] + 0.0) - MumbleClearVoiceTarget(voiceTarget) - MumbleSetVoiceTarget(voiceTarget) - MumbleSetVoiceChannel(LocalPlayer.state.assignedChannel) - - while MumbleGetVoiceChannelFromServerId(playerServerId) ~= LocalPlayer.state.assignedChannel do - Wait(250) - MumbleSetVoiceChannel(LocalPlayer.state.assignedChannel) - end - - MumbleAddVoiceTargetChannel(voiceTarget, LocalPlayer.state.assignedChannel) - - addNearbyPlayers() -end - -AddEventHandler('mumbleConnected', function(address, isReconnecting) - logger.info('Connected to mumble server with address of %s, is this a reconnect %s', - GetConvarInt('voice_hideEndpoints', 1) == 1 and 'HIDDEN' or address, isReconnecting) - - logger.log('Connecting to mumble, setting targets.') - -- don't try to set channel instantly, we're still getting data. - local voiceModeData = Cfg.voiceModes[mode] - LocalPlayer.state:set('proximity', { - index = mode, - distance = voiceModeData[1], - mode = voiceModeData[2], - }, true) - - handleInitialState() - - logger.log('Finished connection logic') -end) - -AddEventHandler('mumbleDisconnected', function(address) - logger.info('Disconnected from mumble server with address of %s', - GetConvarInt('voice_hideEndpoints', 1) == 1 and 'HIDDEN' or address) -end) - --- TODO: Convert the last Cfg to a Convar, while still keeping it simple. -AddEventHandler('pma-voice:settingsCallback', function(cb) - cb(Cfg) -end) diff --git a/server-data/resources/[phone]/pma-voice/client/init/init.lua b/server-data/resources/[phone]/pma-voice/client/init/init.lua deleted file mode 100644 index 8653445cf..000000000 --- a/server-data/resources/[phone]/pma-voice/client/init/init.lua +++ /dev/null @@ -1,49 +0,0 @@ -AddEventHandler('onClientResourceStart', function(resource) - if resource ~= GetCurrentResourceName() then - return - end - print('Starting script initialization') - - -- Some people modify pma-voice and mess up the resource Kvp, which means that if someone - -- joins another server that has pma-voice, it will error out, this will catch and fix the kvp. - local success = pcall(function() - local micClicksKvp = GetResourceKvpString('pma-voice_enableMicClicks') - if not micClicksKvp then - SetResourceKvp('pma-voice_enableMicClicks', "true") - else - if micClicksKvp ~= 'true' and micClicksKvp ~= 'false' then - error('Invalid Kvp, throwing error for automatic fix') - end - micClicks = micClicksKvp - end - end) - - if not success then - logger.warn( - 'Failed to load resource Kvp, likely was inappropriately modified by another server, resetting the Kvp.') - SetResourceKvp('pma-voice_enableMicClicks', "true") - micClicks = 'true' - end - sendUIMessage({ - uiEnabled = GetConvarInt("voice_enableUi", 1) == 1, - voiceModes = json.encode(Cfg.voiceModes), - voiceMode = mode - 1 - }) - - local radioChannel = LocalPlayer.state.radioChannel or 0 - local callChannel = LocalPlayer.state.callChannel or 0 - - -- Reinitialize channels if they're set. - if radioChannel ~= 0 then - setRadioChannel(radioChannel) - end - - if callChannel ~= 0 then - setCallChannel(callChannel) - end - if not LocalPlayer.state.disableRadio then - LocalPlayer.state:set("disableRadio", 0, true) - end - - print('Script initialization finished.') -end) diff --git a/server-data/resources/[phone]/pma-voice/client/init/main.lua b/server-data/resources/[phone]/pma-voice/client/init/main.lua deleted file mode 100644 index e17d09c10..000000000 --- a/server-data/resources/[phone]/pma-voice/client/init/main.lua +++ /dev/null @@ -1,324 +0,0 @@ -local mutedPlayers = {} - --- we can't use GetConvarInt because its not a integer, and theres no way to get a float... so use a hacky way it is! -local volumes = { - -- people are setting this to 1 instead of 1.0 and expecting it to work. - ['radio'] = GetConvarInt('voice_defaultRadioVolume', 60) / 100, - ['call'] = GetConvarInt('voice_defaultCallVolume', 60) / 100, - ['click_on'] = GetConvarInt('voice_onClickVolume', 10) / 100, - ['click_off'] = GetConvarInt('voice_offClickVolume', 3) / 100, -} - -radioEnabled, radioPressed, mode = true, false, GetConvarInt('voice_defaultVoiceMode', 2) -radioData = {} -callData = {} -submixIndicies = {} ---- function setVolume ---- Toggles the players volume ----@param volume number between 0 and 100 ----@param volumeType string the volume type (currently radio & call) to set the volume of (opt) -function setVolume(volume, volumeType) - type_check({ volume, "number" }) - local volumeFraction = volume / 100 - - if volumeType then - local volumeTbl = volumes[volumeType] - if volumeTbl then - LocalPlayer.state:set(volumeType, volume, true) - volumes[volumeType] = volumeFraction - resyncVolume(volumeType, volumeFraction) - else - error(('setVolume got a invalid volume type %s'):format(volumeType)) - end - else - for volumeType, _ in pairs(volumes) do - volumes[volumeType] = volumeFraction - LocalPlayer.state:set(volumeType, volume, true) - end - resyncVolume("all", volumeFraction) - end -end - -exports('setRadioVolume', function(vol) - setVolume(vol, 'radio') -end) -exports('getRadioVolume', function() - return volumes['radio'] * 100 -end) -exports("setCallVolume", function(vol) - setVolume(vol, 'call') -end) -exports('getCallVolume', function() - return volumes['call'] * 100 -end) - - --- default submix incase people want to fiddle with it. --- freq_low = 389.0 --- freq_hi = 3248.0 --- fudge = 0.0 --- rm_mod_freq = 0.0 --- rm_mix = 0.16 --- o_freq_lo = 348.0 --- o_freq_hi = 4900.0 - -local radioEffectId = CreateAudioSubmix('Radio') -SetAudioSubmixEffectRadioFx(radioEffectId, 0) --- This is a GetHashKey on purpose, backticks break treesitter in nvim :| -SetAudioSubmixEffectParamInt(radioEffectId, 0, GetHashKey('default'), 1) -SetAudioSubmixOutputVolumes( - radioEffectId, - 0, - 1.0 --[[ frontLeftVolume ]], - 0.25 --[[ frontRightVolume ]], - 0.0 --[[ rearLeftVolume ]], - 0.0 --[[ rearRightVolume ]], - 1.0 --[[ channel5Volume ]], - 1.0 --[[ channel6Volume ]] -) -AddAudioSubmixOutput(radioEffectId, 0) -submixIndicies['radio'] = radioEffectId - -local callEffectId = CreateAudioSubmix('Call') -SetAudioSubmixOutputVolumes( - callEffectId, - 1, - 0.10 --[[ frontLeftVolume ]], - 0.50 --[[ frontRightVolume ]], - 0.0 --[[ rearLeftVolume ]], - 0.0 --[[ rearRightVolume ]], - 1.0 --[[ channel5Volume ]], - 1.0 --[[ channel6Volume ]] -) -AddAudioSubmixOutput(callEffectId, 1) -submixIndicies['call'] = callEffectId - --- Callback is expected to return data in an array, this is for compatibility sake with js, index 0 should be the name and index 1 should be the submixId --- the callback is sent the effectSlot it can register to, not sure if this is needed, but its here for safety -exports("registerCustomSubmix", function(callback) - local submixTable = callback() - type_check({ submixTable, "table" }) - local submixName, submixId = submixTable[1], submixTable[2] - type_check({ submixName, "string" }, { submixId, "number" }) - logger.info("Creating submix %s with submixId %s", submixName, submixId) - submixIndicies[submixName] = submixId -end) -TriggerEvent("pma-voice:registerCustomSubmixes") - ---- export setEffectSubmix ---- Sets a user defined audio submix for radio and phonecall effects ----@param type string either "call" or "radio" ----@param effectId number submix id returned from CREATE_AUDIO_SUBMIX -exports("setEffectSubmix", function(type, effectId) - type_check({ type, "string" }, { effectId, "number" }) - if submixIndicies[type] then - submixIndicies[type] = effectId - end -end) - -function restoreDefaultSubmix(plyServerId) - local submix = Player(plyServerId).state.submix - local submixEffect = submixIndicies[submix] - if not submix or not submixEffect then - MumbleSetSubmixForServerId(plyServerId, -1) - return - end - MumbleSetSubmixForServerId(plyServerId, submixEffect) -end - --- used to prevent a race condition if they talk again afterwards, which would lead to their voice going to default. -local disableSubmixReset = {} ---- function toggleVoice ---- Toggles the players voice ----@param plySource number the players server id to override the volume for ----@param enabled boolean if the players voice is getting activated or deactivated ----@param moduleType string the volume & submix to use for the voice. -function toggleVoice(plySource, enabled, moduleType) - if mutedPlayers[plySource] then return end - logger.verbose('[main] Updating %s to talking: %s with submix %s', plySource, enabled, moduleType) - local distance = currentTargets[plySource] - if enabled and (not distance or distance > 4.0) then - print(volumes[moduleType]) - MumbleSetVolumeOverrideByServerId(plySource, enabled and volumes[moduleType]) - if GetConvarInt('voice_enableSubmix', 1) == 1 then - if moduleType then - disableSubmixReset[plySource] = true - if submixIndicies[moduleType] then - MumbleSetSubmixForServerId(plySource, submixIndicies[moduleType]) - end - else - restoreDefaultSubmix(plySource) - end - end - elseif not enabled then - if GetConvarInt('voice_enableSubmix', 1) == 1 then - -- garbage collect it - disableSubmixReset[plySource] = nil - SetTimeout(250, function() - if not disableSubmixReset[plySource] then - restoreDefaultSubmix(plySource) - end - end) - end - MumbleSetVolumeOverrideByServerId(plySource, -1.0) - end -end - -local function updateVolumes(voiceTable, override) - for serverId, talking in pairs(voiceTable) do - if serverId == playerServerId then goto skip_iter end - MumbleSetVolumeOverrideByServerId(serverId, talking and override or -1.0) - ::skip_iter:: - end -end - ---- resyncs the call/radio/etc volume to the new volume ----@param volumeType any -function resyncVolume(volumeType, newVolume) - if volumeType == "all" then - resyncVolume("radio", newVolume) - resyncVolume("call", newVolume) - elseif volumeType == "radio" then - updateVolumes(radioData, newVolume) - elseif volumeType == "call" then - updateVolumes(callData, newVolume) - end -end - ----Adds players voices to the local players listen channels allowing them to ----communicate at long range, ignoring proximity range. ---- ----@diagnostic disable-next-line: undefined-doc-param ----@param targets table expects multiple tables to be sent over -function addVoiceTargets(...) - local targets = { ... } - local addedPlayers = { - [playerServerId] = true - } - - for i = 1, #targets do - for id, _ in pairs(targets[i]) do - -- we don't want to log ourself, or listen to ourself - if addedPlayers[id] and id ~= playerServerId then - logger.verbose('[main] %s is already target don\'t re-add', id) - goto skip_loop - end - if not addedPlayers[id] then - logger.verbose('[main] Adding %s as a voice target', id) - addedPlayers[id] = true - MumbleAddVoiceTargetPlayerByServerId(voiceTarget, id) - end - ::skip_loop:: - end - end -end - ---- function playMicClicks ----plays the mic click if the player has them enabled. ----@param clickType boolean whether to play the 'on' or 'off' click. -function playMicClicks(clickType) - if micClicks ~= 'true' then return logger.verbose("Not playing mic clicks because client has them disabled") end - -- TODO: Add customizable radio click volumes - sendUIMessage({ - sound = (clickType and "audio_on" or "audio_off"), - volume = (clickType and volumes['click_on'] or volumes['click_off']) - }) -end - ---- check if player is muted -exports('isPlayerMuted', function(source) - return mutedPlayers[source] -end) - ---- getter for mutedPlayers -exports('getMutedPlayers', function() - return mutedPlayers -end) - ---- toggles the targeted player muted ----@param source number the player to mute -function toggleMutePlayer(source) - if mutedPlayers[source] then - mutedPlayers[source] = nil - MumbleSetVolumeOverrideByServerId(source, -1.0) - else - mutedPlayers[source] = true - MumbleSetVolumeOverrideByServerId(source, 0.0) - end -end - -exports('toggleMutePlayer', toggleMutePlayer) - ---- function setVoiceProperty ---- sets the specified voice property ----@param type string what voice property you want to change (only takes 'radioEnabled' and 'micClicks') ----@param value any the value to set the type to. -function setVoiceProperty(type, value) - if type == "radioEnabled" then - radioEnabled = value - handleRadioEnabledChanged(value) - sendUIMessage({ - radioEnabled = value - }) - elseif type == "micClicks" then - local val = tostring(value) - micClicks = val - SetResourceKvp('pma-voice_enableMicClicks', val) - end -end - -exports('setVoiceProperty', setVoiceProperty) --- compatibility -exports('SetMumbleProperty', setVoiceProperty) -exports('SetTokoProperty', setVoiceProperty) - - --- cache their external servers so if it changes in runtime we can reconnect the client. -local externalAddress = '' -local externalPort = 0 -CreateThread(function() - while true do - Wait(500) - -- only change if what we have doesn't match the cache - if GetConvar('voice_externalAddress', '') ~= externalAddress or GetConvarInt('voice_externalPort', 0) ~= externalPort then - externalAddress = GetConvar('voice_externalAddress', '') - externalPort = GetConvarInt('voice_externalPort', 0) - MumbleSetServerAddress(GetConvar('voice_externalAddress', ''), GetConvarInt('voice_externalPort', 0)) - end - end -end) - - -if gameVersion == 'redm' then - CreateThread(function() - while true do - if IsControlJustPressed(0, 0xA5BDCD3C --[[ Right Bracket ]]) then - ExecuteCommand('cycleproximity') - end - if IsControlJustPressed(0, 0x430593AA --[[ Left Bracket ]]) then - ExecuteCommand('+radiotalk') - elseif IsControlJustReleased(0, 0x430593AA --[[ Left Bracket ]]) then - ExecuteCommand('-radiotalk') - end - - Wait(0) - end - end) -end - ---- handles initializiation for whenever radio or call data changes ---- calls should always be last because they're assumed to always be enabled so ---- theres no delay in talking. -function handleRadioAndCallInit() - for tgt, enabled in pairs(radioData) do - if tgt ~= playerServerId then - toggleVoice(tgt, enabled, 'radio') - end - end - - for tgt, enabled in pairs(callData) do - if tgt ~= playerServerId then - toggleVoice(tgt, true, 'call') - end - end -end diff --git a/server-data/resources/[phone]/pma-voice/client/init/proximity.lua b/server-data/resources/[phone]/pma-voice/client/init/proximity.lua deleted file mode 100644 index 5a627f76a..000000000 --- a/server-data/resources/[phone]/pma-voice/client/init/proximity.lua +++ /dev/null @@ -1,212 +0,0 @@ --- used when muted -local disableUpdates = false -local isListenerEnabled = false -local plyCoords = GetEntityCoords(PlayerPedId()) -proximity = MumbleGetTalkerProximity() -currentTargets = {} - -function orig_addProximityCheck(ply) - local tgtPed = GetPlayerPed(ply) - local voiceRange = GetConvar('voice_useNativeAudio', 'false') == 'true' and proximity * 3 or proximity - local distance = #(plyCoords - GetEntityCoords(tgtPed)) - return distance < voiceRange, distance -end - -local addProximityCheck = orig_addProximityCheck - -exports("overrideProximityCheck", function(fn) - addProximityCheck = fn -end) - -exports("resetProximityCheck", function() - addProximityCheck = orig_addProximityCheck -end) - -function addNearbyPlayers() - if disableUpdates then return end - -- update here so we don't have to update every call of addProximityCheck - plyCoords = GetEntityCoords(PlayerPedId()) - proximity = MumbleGetTalkerProximity() - currentTargets = {} - MumbleClearVoiceTargetChannels(voiceTarget) - if LocalPlayer.state.disableProximity then return end - MumbleAddVoiceChannelListen(LocalPlayer.state.assignedChannel) - MumbleAddVoiceTargetChannel(voiceTarget, LocalPlayer.state.assignedChannel) - - for source, _ in pairs(callData) do - if source ~= playerServerId then - MumbleAddVoiceTargetChannel(voiceTarget, MumbleGetVoiceChannelFromServerId(source)) - end - end - - - local players = GetActivePlayers() - for i = 1, #players do - local ply = players[i] - local serverId = GetPlayerServerId(ply) - local shouldAdd, distance = addProximityCheck(ply) - if shouldAdd then - -- if distance then - -- currentTargets[serverId] = distance - -- else - -- -- backwards compat, maybe remove in v7 - -- currentTargets[serverId] = 15.0 - -- end - -- logger.verbose('Added %s as a voice target', serverId) - MumbleAddVoiceTargetChannel(voiceTarget, MumbleGetVoiceChannelFromServerId(serverId)) - end - end -end - -function setSpectatorMode(enabled) - logger.info('Setting spectate mode to %s', enabled) - isListenerEnabled = enabled - local players = GetActivePlayers() - if isListenerEnabled then - for i = 1, #players do - local ply = players[i] - local serverId = GetPlayerServerId(ply) - if serverId == playerServerId then goto skip_loop end - logger.verbose("Adding %s to listen table", serverId) - MumbleAddVoiceChannelListen(MumbleGetVoiceChannelFromServerId(serverId)) - ::skip_loop:: - end - else - for i = 1, #players do - local ply = players[i] - local serverId = GetPlayerServerId(ply) - if serverId == playerServerId then goto skip_loop end - logger.verbose("Removing %s from listen table", serverId) - MumbleRemoveVoiceChannelListen(MumbleGetVoiceChannelFromServerId(serverId)) - ::skip_loop:: - end - end -end - -RegisterNetEvent('onPlayerJoining', function(serverId) - if isListenerEnabled then - MumbleAddVoiceChannelListen(MumbleGetVoiceChannelFromServerId(serverId)) - logger.verbose("Adding %s to listen table", serverId) - end -end) - -RegisterNetEvent('onPlayerDropped', function(serverId) - if isListenerEnabled then - MumbleRemoveVoiceChannelListen(MumbleGetVoiceChannelFromServerId(serverId)) - logger.verbose("Removing %s from listen table", serverId) - end -end) - -local listenerOverride = false -exports("setListenerOverride", function(enabled) - type_check({ enabled, "boolean" }) - listenerOverride = enabled -end) - --- cache talking status so we only send a nui message when its not the same as what it was before -local lastTalkingStatus = false -local lastRadioStatus = false -local voiceState = "proximity" -CreateThread(function() - TriggerEvent('chat:addSuggestion', '/muteply', 'Mutes the player with the specified id', { - { name = "player id", help = "the player to toggle mute" }, - { name = "duration", help = "(opt) the duration the mute in seconds (default: 900)" } - }) - while true do - -- wait for mumble to reconnect - while not MumbleIsConnected() do - Wait(100) - end - -- Leave the check here as we don't want to do any of this logic - if GetConvarInt('voice_enableUi', 1) == 1 then - local curTalkingStatus = MumbleIsPlayerTalking(PlayerId()) == 1 - if lastRadioStatus ~= radioPressed or lastTalkingStatus ~= curTalkingStatus then - lastRadioStatus = radioPressed - lastTalkingStatus = curTalkingStatus - sendUIMessage({ - usingRadio = lastRadioStatus, - talking = lastTalkingStatus - }) - end - end - - if voiceState == "proximity" then - addNearbyPlayers() - -- What a name, wowza - local cam = GetConvarInt("voice_disableAutomaticListenerOnCamera", 0) ~= 1 and GetRenderingCam() or -1 - local isSpectating = NetworkIsInSpectatorMode() or cam ~= -1 - if not isListenerEnabled and (isSpectating or listenerOverride) then - setSpectatorMode(true) - elseif isListenerEnabled and not isSpectating and not listenerOverride then - setSpectatorMode(false) - end - end - - Wait(GetConvarInt('voice_refreshRate', 200)) - end -end) - -exports("setVoiceState", function(_voiceState, channel) - if _voiceState ~= "proximity" and _voiceState ~= "channel" then - logger.error("Didn't get a proper voice state, expected proximity or channel, got %s", _voiceState) - end - voiceState = _voiceState - if voiceState == "channel" then - type_check({ channel, "number" }) - -- 65535 is the highest a client id can go, so we add that to the base channel so we don't manage to get onto a players channel - channel = channel + 65535 - MumbleSetVoiceChannel(channel) - while MumbleGetVoiceChannelFromServerId(playerServerId) ~= channel do - Wait(250) - end - MumbleAddVoiceTargetChannel(voiceTarget, channel) - elseif voiceState == "proximity" then - handleInitialState() - end -end) - - -AddEventHandler("onClientResourceStop", function(resource) - if type(addProximityCheck) == "table" then - local proximityCheckRef = addProximityCheck.__cfx_functionReference - if proximityCheckRef then - local isResource = string.match(proximityCheckRef, resource) - if isResource then - addProximityCheck = orig_addProximityCheck - logger.warn( - 'Reset proximity check to default, the original resource [%s] which provided the function restarted', - resource) - end - end - end -end) - -exports("addVoiceMode", function(distance, name) - for i = 1, #Cfg.voiceModes do - local voiceMode = Cfg.voiceModes[i] - if voiceMode[2] == name then - logger.verbose("Already had %s, overwritting instead", name) - voiceMode[1] = distance - return - end - end - Cfg.voiceModes[#Cfg.voiceModes + 1] = { distance, name } -end) - -exports("removeVoiceMode", function(name) - for i = 1, #Cfg.voiceModes do - local voiceMode = Cfg.voiceModes[i] - if voiceMode[2] == name then - table.remove(Cfg.voiceModes, i) - -- Reset our current range if we had it - if mode == i then - local newMode = Cfg.voiceModes[1] - mode = 1 - setProximityState(newMode[mode], false) - end - return true - end - end - - return false -end) diff --git a/server-data/resources/[phone]/pma-voice/client/init/submix.lua b/server-data/resources/[phone]/pma-voice/client/init/submix.lua deleted file mode 100644 index a8235d422..000000000 --- a/server-data/resources/[phone]/pma-voice/client/init/submix.lua +++ /dev/null @@ -1,19 +0,0 @@ -AddStateBagChangeHandler("submix", "", function(bagName, _, value) - local tgtId = tonumber(bagName:gsub('player:', ''), 10) - if not tgtId then return end - -- We got an invalid submix, discard we don't care about it - if value and not submixIndicies[value] then - return logger.warn("Player %s applied submix %s but it isn't valid", - tgtId, value) - end - -- we don't want to reset submix if the player is talking on the radio - if not value then - if not radioData[tgtId] and not callData[tgtId] then - logger.info("Resetting submix for player %s", tgtId) - MumbleSetSubmixForServerId(tgtId, -1) - end - return - end - logger.info("%s had their submix set to %s", tgtId, value) - MumbleSetSubmixForServerId(tgtId, submixIndicies[value]) -end) diff --git a/server-data/resources/[phone]/pma-voice/client/module/phone.lua b/server-data/resources/[phone]/pma-voice/client/module/phone.lua deleted file mode 100644 index 97f3a51f3..000000000 --- a/server-data/resources/[phone]/pma-voice/client/module/phone.lua +++ /dev/null @@ -1,58 +0,0 @@ -local callChannel = 0 - -RegisterNetEvent('pma-voice:syncCallData', function(callTable, channel) - callData = callTable - handleRadioAndCallInit() -end) - -RegisterNetEvent('pma-voice:addPlayerToCall', function(plySource) - toggleVoice(plySource, true, 'call') - callData[plySource] = true -end) - -RegisterNetEvent('pma-voice:removePlayerFromCall', function(plySource) - if plySource == playerServerId then - for tgt, _ in pairs(callData) do - if tgt ~= playerServerId then - toggleVoice(tgt, false, 'call') - end - end - callData = {} - MumbleClearVoiceTargetPlayers(voiceTarget) - addVoiceTargets((radioPressed and isRadioEnabled()) and radioData or {}, callData) - else - callData[plySource] = nil - toggleVoice(plySource, radioData[plySource], 'call') - if MumbleIsPlayerTalking(PlayerId()) then - MumbleClearVoiceTargetPlayers(voiceTarget) - addVoiceTargets((radioPressed and isRadioEnabled()) and radioData or {}, callData) - end - end -end) - -function setCallChannel(channel) - if GetConvarInt('voice_enableCalls', 1) ~= 1 then return end - TriggerServerEvent('pma-voice:setPlayerCall', channel) - callChannel = channel - sendUIMessage({ - callInfo = channel - }) -end - -exports('setCallChannel', setCallChannel) -exports('SetCallChannel', setCallChannel) - -exports('addPlayerToCall', function(_call) - local call = tonumber(_call) - if call then - setCallChannel(call) - end -end) -exports('removePlayerFromCall', function() - setCallChannel(0) -end) - -RegisterNetEvent('pma-voice:clSetPlayerCall', function(_callChannel) - if GetConvarInt('voice_enableCalls', 1) ~= 1 then return end - callChannel = _callChannel -end) diff --git a/server-data/resources/[phone]/pma-voice/client/module/radio.lua b/server-data/resources/[phone]/pma-voice/client/module/radio.lua deleted file mode 100644 index 25f076cc4..000000000 --- a/server-data/resources/[phone]/pma-voice/client/module/radio.lua +++ /dev/null @@ -1,293 +0,0 @@ -local radioChannel = 0 -local radioNames = {} -local disableRadioAnim = false - ----@return boolean isEnabled if radioEnabled is true and LocalPlayer.state.disableRadio is 0 (no bits set) -function isRadioEnabled() - return radioEnabled and LocalPlayer.state.disableRadio == 0 -end - ---- event syncRadioData ---- syncs the current players on the radio to the client ----@param radioTable table the table of the current players on the radio ----@param localPlyRadioName string the local players name -function syncRadioData(radioTable, localPlyRadioName) - radioData = radioTable - logger.info('[radio] Syncing radio table.') - if GetConvarInt('voice_debugMode', 0) >= 4 then - print('-------- RADIO TABLE --------') - tPrint(radioData) - print('-----------------------------') - end - - local isEnabled = isRadioEnabled() - - if isEnabled then - handleRadioAndCallInit() - end - - sendUIMessage({ - radioChannel = radioChannel, - radioEnabled = isEnabled - }) - if GetConvarInt("voice_syncPlayerNames", 0) == 1 then - radioNames[playerServerId] = localPlyRadioName - end -end - -RegisterNetEvent('pma-voice:syncRadioData', syncRadioData) - ---- event setTalkingOnRadio ---- sets the players talking status, triggered when a player starts/stops talking. ----@param plySource number the players server id. ----@param enabled boolean whether the player is talking or not. -function setTalkingOnRadio(plySource, enabled) - radioData[plySource] = enabled - - if not isRadioEnabled() then return logger.info("[radio] Ignoring setTalkingOnRadio. radioEnabled: %s disableRadio: %s", radioEnabled, LocalPlayer.state.disableRadio) end - -- If we're on a call we don't want to toggle their voice disabled this will break calls. - local enabled = enabled or callData[plySource] - toggleVoice(plySource, enabled, 'radio') - playMicClicks(enabled) -end -RegisterNetEvent('pma-voice:setTalkingOnRadio', setTalkingOnRadio) - ---- event addPlayerToRadio ---- adds a player onto the radio. ----@param plySource number the players server id to add to the radio. -function addPlayerToRadio(plySource, plyRadioName) - radioData[plySource] = false - if GetConvarInt("voice_syncPlayerNames", 0) == 1 then - radioNames[plySource] = plyRadioName - end - logger.info('[radio] %s joined radio %s %s', plySource, radioChannel, - radioPressed and " while we were talking, adding them to targets" or "") - if radioPressed then - addVoiceTargets(radioData, callData) - end -end -RegisterNetEvent('pma-voice:addPlayerToRadio', addPlayerToRadio) - ---- event removePlayerFromRadio ---- removes the player (or self) from the radio ----@param plySource number the players server id to remove from the radio. -function removePlayerFromRadio(plySource) - if plySource == playerServerId then - logger.info('[radio] Left radio %s, cleaning up.', radioChannel) - for tgt, _ in pairs(radioData) do - if tgt ~= playerServerId then - toggleVoice(tgt, false, 'radio') - end - end - sendUIMessage({ - radioChannel = 0, - radioEnabled = radioEnabled - }) - radioNames = {} - radioData = {} - addVoiceTargets(callData) - else - toggleVoice(plySource, false, 'radio') - if radioPressed then - logger.info('[radio] %s left radio %s while we were talking, updating targets.', plySource, radioChannel) - addVoiceTargets(radioData, callData) - else - logger.info('[radio] %s has left radio %s', plySource, radioChannel) - end - radioData[plySource] = nil - if GetConvarInt("voice_syncPlayerNames", 0) == 1 then - radioNames[plySource] = nil - end - end -end - -RegisterNetEvent('pma-voice:removePlayerFromRadio', removePlayerFromRadio) - -RegisterNetEvent('pma-voice:radioChangeRejected', function() - logger.info("The server rejected your radio change.") - radioChannel = 0 -end) - ---- function setRadioChannel ---- sets the local players current radio channel and updates the server ----@param channel number the channel to set the player to, or 0 to remove them. -function setRadioChannel(channel) - if GetConvarInt('voice_enableRadios', 1) ~= 1 then return end - type_check({ channel, "number" }) - TriggerServerEvent('pma-voice:setPlayerRadio', channel) - radioChannel = channel -end - ---- exports setRadioChannel ---- sets the local players current radio channel and updates the server -exports('setRadioChannel', setRadioChannel) --- mumble-voip compatability -exports('SetRadioChannel', setRadioChannel) - ---- exports removePlayerFromRadio ---- sets the local players current radio channel and updates the server -exports('removePlayerFromRadio', function() - setRadioChannel(0) -end) - ---- exports addPlayerToRadio ---- sets the local players current radio channel and updates the server ----@param _radio number the channel to set the player to, or 0 to remove them. -exports('addPlayerToRadio', function(_radio) - local radio = tonumber(_radio) - if radio then - setRadioChannel(radio) - end -end) - ---- exports toggleRadioAnim ---- toggles whether the client should play radio anim or not, if the animation should be played or notvaliddance -exports('toggleRadioAnim', function() - disableRadioAnim = not disableRadioAnim - TriggerEvent('pma-voice:toggleRadioAnim', disableRadioAnim) -end) - -exports("setDisableRadioAnim", function(shouldDisable) - disableRadioAnim = shouldDisable -end) - --- exports disableRadioAnim ---- returns whether the client is undercover or not -exports('getRadioAnimState', function() - return disableRadioAnim -end) - ---- check if the player is dead ---- seperating this so if people use different methods they can customize ---- it to their need as this will likely never be changed ---- but you can integrate the below state bag to your death resources. ---- LocalPlayer.state:set('isDead', true or false, false) -function isDead() - if LocalPlayer.state.isDead then - return true - elseif IsPlayerDead(PlayerId()) then - return true - end - return false -end - -function isRadioAnimEnabled() - if - GetConvarInt('voice_enableRadioAnim', 1) == 1 - and not (GetConvarInt('voice_disableVehicleRadioAnim', 0) == 1 - and IsPedInAnyVehicle(PlayerPedId(), false)) - and not disableRadioAnim then - return true - end - return false -end - -RegisterCommand('+radiotalk', function() - if GetConvarInt('voice_enableRadios', 1) ~= 1 then return end - if isDead() then return end - if not isRadioEnabled() then return end - if not radioPressed then - if radioChannel > 0 then - logger.info('[radio] Start broadcasting, update targets and notify server.') - addVoiceTargets(radioData, callData) - TriggerServerEvent('pma-voice:setTalkingOnRadio', true) - radioPressed = true - local shouldPlayAnimation = isRadioAnimEnabled() - playMicClicks(true) - if shouldPlayAnimation then - RequestAnimDict('random@arrests') - end - CreateThread(function() - TriggerEvent("pma-voice:radioActive", true) - LocalPlayer.state:set("radioActive", true, true); - local checkFailed = false - while radioPressed do - if radioChannel < 0 or isDead() or not isRadioEnabled() then - checkFailed = true - break - end - if shouldPlayAnimation and HasAnimDictLoaded("random@arrests") then - if not IsEntityPlayingAnim(PlayerPedId(), "random@arrests", "generic_radio_enter", 3) then - TaskPlayAnim(PlayerPedId(), "random@arrests", "generic_radio_enter", 8.0, 2.0, -1, 50, 2.0, false, - false, - false) - end - end - SetControlNormal(0, 249, 1.0) - SetControlNormal(1, 249, 1.0) - SetControlNormal(2, 249, 1.0) - Wait(0) - end - - - if checkFailed then - logger.info("Canceling radio talking as the checks have failed.") - ExecuteCommand("-radiotalk") - end - if shouldPlayAnimation then - RemoveAnimDict('random@arrests') - end - end) - else - logger.info("Player tried to talk but was not on a radio channel") - end - end -end, false) - -RegisterCommand('-radiotalk', function() - if radioChannel > 0 and radioPressed then - radioPressed = false - MumbleClearVoiceTargetPlayers(voiceTarget) - addVoiceTargets(callData) - TriggerEvent("pma-voice:radioActive", false) - LocalPlayer.state:set("radioActive", false, true); - playMicClicks(false) - if GetConvarInt('voice_enableRadioAnim', 1) == 1 then - StopAnimTask(PlayerPedId(), "random@arrests", "generic_radio_enter", -4.0) - end - TriggerServerEvent('pma-voice:setTalkingOnRadio', false) - end -end, false) -if gameVersion == 'fivem' then - RegisterKeyMapping('+radiotalk', 'Talk over Radio', 'keyboard', GetConvar('voice_defaultRadio', 'LMENU')) -end - ---- event syncRadio ---- syncs the players radio, only happens if the radio was set server side. ----@param _radioChannel number the radio channel to set the player to. -function syncRadio(_radioChannel) - if GetConvarInt('voice_enableRadios', 1) ~= 1 then return end - logger.info('[radio] radio set serverside update to radio %s', radioChannel) - radioChannel = _radioChannel -end -RegisterNetEvent('pma-voice:clSetPlayerRadio', syncRadio) - - ---- handles "radioEnabled" changing ----@param wasRadioEnabled boolean whether radio is enabled or not -function handleRadioEnabledChanged(wasRadioEnabled) - if wasRadioEnabled then - syncRadioData(radioData, "") - else - removePlayerFromRadio(playerServerId) - end -end - ---- adds the bit to the disableRadio bits ----@param bit number the bit to add -local function addRadioDisableBit(bit) - local curVal = LocalPlayer.state.disableRadio or 0 - curVal = curVal | bit - LocalPlayer.state:set("disableRadio", curVal, true) -end -exports("addRadioDisableBit", addRadioDisableBit) - ---- removes the bit from disableRadio ----@param bit number the bit to remove -local function removeRadioDisableBit(bit) - local curVal = LocalPlayer.state.disableRadio or 0 - curVal = curVal & (~bit) - LocalPlayer.state:set("disableRadio", curVal, true) -end -exports("removeRadioDisableBit", removeRadioDisableBit) - diff --git a/server-data/resources/[phone]/pma-voice/client/utils/Nui.lua b/server-data/resources/[phone]/pma-voice/client/utils/Nui.lua deleted file mode 100644 index dd9e914fa..000000000 --- a/server-data/resources/[phone]/pma-voice/client/utils/Nui.lua +++ /dev/null @@ -1,11 +0,0 @@ -local uiReady = promise.new() -function sendUIMessage(message) - Citizen.Await(uiReady) - SendNUIMessage(message) -end - -RegisterNUICallback("uiReady", function(data, cb) - uiReady:resolve(true) - - cb('ok') -end) diff --git a/server-data/resources/[phone]/pma-voice/docs/_config.yml b/server-data/resources/[phone]/pma-voice/docs/_config.yml deleted file mode 100644 index 18854876c..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-midnight \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-getters/events.md b/server-data/resources/[phone]/pma-voice/docs/client-getters/events.md deleted file mode 100644 index 961243709..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-getters/events.md +++ /dev/null @@ -1,27 +0,0 @@ -## setTalkingMode | settingsCallback | radioACtive - -## Description - -These event is designed to allow third part applications (like a hud) use the current voice mode of the player, radio state, etc. - -```lua --- default voice mode is 2 -local voiceMode = 2 -local voiceModes = {} -local usingRadio = false --- sets the current radio state boolean -AddEventHandler("pma-voice:radioActive", function(radioTalking) usingRadio = radioTalking end) --- changes the current voice range index -AddEventHandler('pma-voice:setTalkingMode', function(newTalkingRange) voiceMode = newTalkingRange end) --- returns registered voice modes from shared.lua's `Cfg.voiceModes` -TriggerEvent("pma-voice:settingsCallback", function(voiceSettings) - local voiceTable = voiceSettings.voiceModes - - -- loop through all voice modes and add them to the table - -- the percentage is used for the voice mode slider if this was an actual UI - for i = 1, #voiceTable do - local distance = math.ceil(((i/#voiceTable) * 100)) - voiceModes[i] = ("%s"):format(distance) - end -end) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromCall.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromCall.md deleted file mode 100644 index 638728def..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromCall.md +++ /dev/null @@ -1,12 +0,0 @@ -## removePlayerFromCall - -## Description - -Removes the player from the call - -## NOTE: This is just syntactic sugar for `setCallChannel(0)` - -```lua --- Removes the player from the call channel -exports['pma-voice']:removePlayerFromCall() -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromRadio.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromRadio.md deleted file mode 100644 index a15fd7a14..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/removePlayerFromRadio.md +++ /dev/null @@ -1,12 +0,0 @@ -## removePlayerFromRadio - -## Description - -Removes the player from the radio - -## NOTE: This is just syntactic sugar for `setRadioChannel(0)` - -```lua --- Removes the player from the radio channel -exports['pma-voice']:removePlayerFromRadio() -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallChannel.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallChannel.md deleted file mode 100644 index e2d98c428..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallChannel.md +++ /dev/null @@ -1,25 +0,0 @@ -## setCallChannel | addPlayerToCall | SetCallChannel - -## Description - -Sets the local players call channel. - -## Parameters - -* **callChannel**: the call channel to join - - -```lua --- Joins call channel 1 -exports['pma-voice']:setCallChannel(1) - --- This will remove them from the call channel -exports['pma-voice']:setCallChannel(0) -``` - -addPlayerToCall is provided as a 'easier to read' version of setCallChannel. - -```lua --- Joins call channel 1 -exports['pma-voice']:addPlayerToCall(1) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallVolume.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallVolume.md deleted file mode 100644 index 93509b9a6..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/setCallVolume.md +++ /dev/null @@ -1,14 +0,0 @@ -## setCallVolume - -## Description - -Sets the local players call channel volume - -## Parameters - -* **callVolume**: the call volume to set to between 0 - 100 percent - -```lua --- set the call volume to 50 percent -exports['pma-voice']:setCallVolume(50) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioChannel.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioChannel.md deleted file mode 100644 index ee0ea376f..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioChannel.md +++ /dev/null @@ -1,26 +0,0 @@ -## setRadioChannel | addPlayerToRadio | SetCallChannel - -## Description - -Sets the local players radio channel. - -## Parameters - -* **radioChannel**: the radio channel to join - -## NOTE: If the player fails the server side radio channel check they will be reset to no channel. - -```lua --- Joins radio channel 1 -exports['pma-voice']:setRadioChannel(1) - --- This will remove the player from all radio channels -exports ['pma-voice']:setRadioChannel(0) -``` - -addPlayerToRadio is provided as a 'easier to read' alternative to setRadioChannel. - -```lua --- Joins radio channel 1 -exports['pma-voice']:addPlayerToRadio(1) -``` diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioVolume.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioVolume.md deleted file mode 100644 index 4f093cf45..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/setRadioVolume.md +++ /dev/null @@ -1,14 +0,0 @@ -## setRadioVolume - -## Description - -Sets the local players radio channel volume - -## Parameters - -* **radioVolume**: the radio volume to set to between 0 - 100 percent - -```lua --- sets the radio volume to 50 percent -exports['pma-voice']:setRadioVolume(50) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/client-setters/setVoiceProperty.md b/server-data/resources/[phone]/pma-voice/docs/client-setters/setVoiceProperty.md deleted file mode 100644 index 737e961e8..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/client-setters/setVoiceProperty.md +++ /dev/null @@ -1,17 +0,0 @@ -## setVoiceProperty | SetMumbleProperty | SetTokoProperty - -## Description - -Sets the voice property, currently the only use is to enable/disable radios and radio clicks. - -## Parameters - -* **property**: The property to set -* **value**: The value to set the property to - -```lua --- Enable the radio -exports['pma-voice']:setVoiceProperty('radioEnabled', true) --- Disable radio clicks -exports['pma-voice']:setVoiceProperty('micClicks', false) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/routingBuckets.md b/server-data/resources/[phone]/pma-voice/docs/routingBuckets.md deleted file mode 100644 index f9e42292f..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/routingBuckets.md +++ /dev/null @@ -1,3 +0,0 @@ -## Routing Buckets - -pma-voice natively supports routing buckets. \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/server-getters/getPlayersInRadioChannel.md b/server-data/resources/[phone]/pma-voice/docs/server-getters/getPlayersInRadioChannel.md deleted file mode 100644 index e0f9bb05c..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/server-getters/getPlayersInRadioChannel.md +++ /dev/null @@ -1,21 +0,0 @@ -## getPlayersInRadioChannel - -## Description - -Gets a list of all of the players in the specified radio channel. - -## Parameters - -* **radioChannel**: The channel to get all the members of - -## Returns - -Returns a table of all of the players in the specified radio channel - -```lua --- this will return all of the current players in radio channel 1 -local players = exports['pma-voice']:getPlayersInRadioChannel(1) -for source, isTalking in pairs(players) do - print(('%s is in radio channel 1, isTalking: %s'):format(GetPlayerName(source), isTalking)) -end -``` diff --git a/server-data/resources/[phone]/pma-voice/docs/server-setters/addChannelCheck.md b/server-data/resources/[phone]/pma-voice/docs/server-setters/addChannelCheck.md deleted file mode 100644 index 59e396e90..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/server-setters/addChannelCheck.md +++ /dev/null @@ -1,22 +0,0 @@ -## addChannelCheck - -## Description - -Adds a channel check to radio channels. - -## Parameters - -* **channel**: The channel to add the check to. -* **function**: the function to call when the check is triggered, which should return a boolean of if the player is allowed to join the channel.. - - -```lua --- Example for addChannelCheck --- this always has to return true/false -exports['pma-voice']:addChannelCheck(1, function(source) - if IsPlayerAceAllowed(source, 'radio.police') then - return true - end - return false -end) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerCall.md b/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerCall.md deleted file mode 100644 index db5ae7ec4..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerCall.md +++ /dev/null @@ -1,14 +0,0 @@ -## setPlayerCall - -## Description - -Sets the players call channel. - -## Parameters - -* **source**: The player to set the radio channel of -* **callChannel**: the radio channel to set the player to - -```lua -exports['pma-voice']:setPlayerCall(source, 1) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerRadio.md b/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerRadio.md deleted file mode 100644 index 11c8db29c..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/server-setters/setPlayerRadio.md +++ /dev/null @@ -1,14 +0,0 @@ -## setPlayerRadio - -## Description - -Sets the players radio channel. - -## Parameters - -* **source**: The player to set the radio channel of -* **radioChannel**: the radio channel to set the player to - -```lua -exports['pma-voice']:setPlayerRadio(source, 1) -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/docs/state-getters/stateBagGetters.md b/server-data/resources/[phone]/pma-voice/docs/state-getters/stateBagGetters.md deleted file mode 100644 index c21e87847..000000000 --- a/server-data/resources/[phone]/pma-voice/docs/state-getters/stateBagGetters.md +++ /dev/null @@ -1,17 +0,0 @@ -## State Bag Getters/Setters - -## Description - -State bag getters are a little bit simpler, they just return the current value that is set in the state bag. - -#### Note: If you're on the client and only using it on the current player, you can replace Player(source) with LocalPlayer - -## Example for Proximity - -```lua -local plyState = Player(source).state -local proximity = plyState.proximity -print(proximity.index) -- prints the index of the proximity as seen in Cfg.voiceModes -print(proximity.distance) -- prints the distance of the proximity -print(proximity.mode) -- prints the mode name of the proximity -``` \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/fxmanifest.lua b/server-data/resources/[phone]/pma-voice/fxmanifest.lua deleted file mode 100644 index 4a4d73abe..000000000 --- a/server-data/resources/[phone]/pma-voice/fxmanifest.lua +++ /dev/null @@ -1,70 +0,0 @@ -game 'common' - -fx_version 'cerulean' -author 'AvarianKnight' -description 'VOIP built using FiveM\'s built in mumble.' - -dependencies { - '/onesync', -} - -lua54 'yes' - -shared_script 'shared.lua' - -client_scripts { - 'client/utils/*', - 'client/init/proximity.lua', - 'client/init/init.lua', - 'client/init/main.lua', - 'client/init/submix.lua', - 'client/module/*.lua', - 'client/*.lua', -} - -server_scripts { - 'server/**/*.lua', - 'server/**/*.js' -} - -files { - 'ui/*.ogg', - 'ui/css/*.css', - 'ui/js/*.js', - 'ui/index.html', -} - -ui_page 'ui/index.html' - -provides { - 'mumble-voip', - 'tokovoip', - 'toko-voip', - 'tokovoip_script' -} - -convar_category 'PMA-Voice' { - "PMA-Voice Configuration Options", - { - { "Use native audio", "$voice_useNativeAudio", "CV_BOOL", "false" }, - { "Use 2D audio", "$voice_use2dAudio", "CV_BOOL", "false" }, - { "Use sending range only", "$voice_useSendingRangeOnly", "CV_BOOL", "false" }, - { "Enable UI", "$voice_enableUi", "CV_INT", "1" }, - { "Enable F11 proximity key", "$voice_enableProximityCycle", "CV_INT", "1" }, - { "Proximity cycle key", "$voice_defaultCycle", "CV_STRING", "F11" }, - { "Voice radio volume", "$voice_defaultRadioVolume", "CV_INT", "30" }, - { "Voice call volume", "$voice_defaultCallVolume", "CV_INT", "60" }, - { "Enable radios", "$voice_enableRadios", "CV_INT", "1" }, - { "Enable calls", "$voice_enableCalls", "CV_INT", "1" }, - { "Enable submix", "$voice_enableSubmix", "CV_INT", "1" }, - { "Enable radio animation", "$voice_enableRadioAnim", "CV_INT", "0" }, - { "Radio key", "$voice_defaultRadio", "CV_STRING", "LMENU" }, - { "UI refresh rate", "$voice_uiRefreshRate", "CV_INT", "200" }, - { "Allow players to set audio intent", "$voice_allowSetIntent", "CV_INT", "1" }, - { "External mumble server address", "$voice_externalAddress", "CV_STRING", "" }, - { "External mumble server port", "$voice_externalPort", "CV_INT", "0" }, - { "Voice debug mode", "$voice_debugMode", "CV_INT", "0" }, - { "Disable players being allowed to join", "$voice_externalDisallowJoin", "CV_INT", "0" }, - { "Hide server endpoints in logs", "$voice_hideEndpoints", "CV_INT", "1" }, - } -} diff --git a/server-data/resources/[phone]/pma-voice/server/main.lua b/server-data/resources/[phone]/pma-voice/server/main.lua deleted file mode 100644 index be4c96333..000000000 --- a/server-data/resources/[phone]/pma-voice/server/main.lua +++ /dev/null @@ -1,157 +0,0 @@ -voiceData = {} -radioData = {} -callData = {} - -local mappedChannels = {} -function firstFreeChannel() - for i = 1, 2048 do - if not mappedChannels[i] then - return i - end - end - - return 0 -end - -function defaultTable(source) - handleStateBagInitilization(source) - return { - radio = 0, - call = 0, - lastRadio = 0, - lastCall = 0 - } -end - -function handleStateBagInitilization(source) - local plyState = Player(source).state - if not plyState.pmaVoiceInit then - plyState:set('radio', GetConvarInt('voice_defaultRadioVolume', 30), true) - plyState:set('call', GetConvarInt('voice_defaultCallVolume', 60), true) - plyState:set('submix', nil, true) - plyState:set('proximity', {}, true) - plyState:set('callChannel', 0, true) - plyState:set('radioChannel', 0, true) - plyState:set('voiceIntent', 'speech', true) - -- We want to save voice inits because we'll automatically reinitalize calls and channels - plyState:set('pmaVoiceInit', true, false) - end - - local assignedChannel = firstFreeChannel() - plyState:set('assignedChannel', assignedChannel, true) - if assignedChannel ~= 0 then - mappedChannels[assignedChannel] = source - logger.verbose('[reuse] Assigned %s to channel %s', source, assignedChannel) - else - logger.error('[reuse] Failed to find a free channel for %s', source) - end -end - -CreateThread(function() - local plyTbl = GetPlayers() - for i = 1, #plyTbl do - local ply = tonumber(plyTbl[i]) - voiceData[ply] = defaultTable(plyTbl[i]) - end - - Wait(5000) - - local nativeAudio = GetConvar('voice_useNativeAudio', 'not-set') - local _3dAudio = GetConvar('voice_use3dAudio', 'not-set') - local _2dAudio = GetConvar('voice_use2dAudio', 'not-set') - local sendingRangeOnly = GetConvar('voice_useSendingRangeOnly', 'not-set') - local gameVersion = GetConvar('gamename', 'fivem') - - -- handle no convars being set (default drag n' drop) - if - nativeAudio == 'not-set' - and _3dAudio == 'not-set' - and _2dAudio == 'not-set' - then - SetConvarReplicated('voice_useNativeAudio', 'true') - if sendingRangeOnly == 'not-set' then - SetConvarReplicated('voice_useSendingRangeOnly', 'true') - logger.info( - 'No convars detected for voice mode, defaulting to \'setr voice_useNativeAudio true\' and \'setr voice_useSendingRangeOnly true\'') - else - logger.info('No voice mod detected, defaulting to \'setr voice_useNativeAudio true\'') - end - elseif sendingRangeOnly == 'not-set' then - logger.warn( - "It's recommended to have 'voice_useSendingRangeOnly' set to true, you can do that with 'setr voice_useSendingRangeOnly true', this prevents players who directly join the mumble server from broadcasting to players.") - end - - local radioVolume = GetConvarInt("voice_defaultRadioVolume", 30) - local callVolume = GetConvarInt("voice_defaultCallVolume", 60) - - -- When casted to an integer these get set to 0 or 1, so warn on these values that they don't work - if - radioVolume == 0 or radioVolume == 1 or - callVolume == 0 or callVolume == 1 - then - SetConvarReplicated("voice_defaultRadioVolume", 30) - SetConvarReplicated("voice_defaultCallVolume", 60) - for i = 1, 5 do - Wait(5000) - logger.warn( - "`voice_defaultRadioVolume` or `voice_defaultCallVolume` have their value set as a float, this is going to automatically be fixed but please update your convars.") - end - end -end) - -AddEventHandler('playerJoining', function() - if not voiceData[source] then - voiceData[source] = defaultTable(source) - end -end) - -AddEventHandler("playerDropped", function() - local source = source - local mappedChannel = Player(source).state.assignedChannel - - if voiceData[source] then - local plyData = voiceData[source] - - if plyData.radio ~= 0 then - removePlayerFromRadio(source, plyData.radio) - end - - if plyData.call ~= 0 then - removePlayerFromCall(source, plyData.call) - end - - voiceData[source] = nil - end - - if mappedChannel then - mappedChannels[mappedChannel] = nil - logger.verbose('[reuse] Unassigned %s from channel %s', source, mappedChannel) - end -end) - -if GetConvarInt('voice_externalDisallowJoin', 0) == 1 then - AddEventHandler('playerConnecting', function(_, _, deferral) - deferral.defer() - Wait(0) - deferral.done('This server is not accepting connections.') - end) -end - --- only meant for internal use so no documentation -function isValidPlayer(source) - return voiceData[source] -end - -exports('isValidPlayer', isValidPlayer) - -function getPlayersInRadioChannel(channel) - local returnChannel = radioData[channel] - if returnChannel then - return returnChannel - end - -- channel doesnt exist - return {} -end - -exports('getPlayersInRadioChannel', getPlayersInRadioChannel) -exports('GetPlayersInRadioChannel', getPlayersInRadioChannel) diff --git a/server-data/resources/[phone]/pma-voice/server/module/phone.lua b/server-data/resources/[phone]/pma-voice/server/module/phone.lua deleted file mode 100644 index ac6412137..000000000 --- a/server-data/resources/[phone]/pma-voice/server/module/phone.lua +++ /dev/null @@ -1,76 +0,0 @@ ---- removes a player from the call for everyone in the call. ----@param source number the player to remove from the call ----@param callChannel number the call channel to remove them from -function removePlayerFromCall(source, callChannel) - logger.verbose('[call] Removed %s from call %s', source, callChannel) - - callData[callChannel] = callData[callChannel] or {} - for player, _ in pairs(callData[callChannel]) do - TriggerClientEvent('pma-voice:removePlayerFromCall', player, source) - end - callData[callChannel][source] = nil - voiceData[source] = voiceData[source] or defaultTable(source) - voiceData[source].call = 0 -end - ---- adds a player to a call ----@param source number the player to add to the call ----@param callChannel number the call channel to add them to -function addPlayerToCall(source, callChannel) - logger.verbose('[call] Added %s to call %s', source, callChannel) - -- check if the channel exists, if it does set the varaible to it - -- if not create it (basically if not callData make callData) - callData[callChannel] = callData[callChannel] or {} - for player, _ in pairs(callData[callChannel]) do - -- don't need to send to the source because they're about to get sync'd! - if player ~= source then - TriggerClientEvent('pma-voice:addPlayerToCall', player, source) - end - end - callData[callChannel][source] = true - voiceData[source] = voiceData[source] or defaultTable(source) - voiceData[source].call = callChannel - TriggerClientEvent('pma-voice:syncCallData', source, callData[callChannel]) -end - ---- set the players call channel ----@param source number the player to set the call off ----@param _callChannel number the channel to set the player to (or 0 to remove them from any call channel) -function setPlayerCall(source, _callChannel) - if GetConvarInt('voice_enableCalls', 1) ~= 1 then return end - voiceData[source] = voiceData[source] or defaultTable(source) - local isResource = GetInvokingResource() - local plyVoice = voiceData[source] - local callChannel = tonumber(_callChannel) - if not callChannel then - -- only full error if its sent from another server-side resource - if isResource then - error(("'callChannel' expected 'number', got: %s"):format(type(_callChannel))) - else - return logger.warn("%s sent a invalid call, 'callChannel' expected 'number', got: %s", source, - type(_callChannel)) - end - end - if isResource then - -- got set in a export, need to update the client to tell them that their call - -- changed - TriggerClientEvent('pma-voice:clSetPlayerCall', source, callChannel) - end - - Player(source).state.callChannel = callChannel - - if callChannel ~= 0 and plyVoice.call == 0 then - addPlayerToCall(source, callChannel) - elseif callChannel == 0 then - removePlayerFromCall(source, plyVoice.call) - elseif plyVoice.call > 0 then - removePlayerFromCall(source, plyVoice.call) - addPlayerToCall(source, callChannel) - end -end - -exports('setPlayerCall', setPlayerCall) - -RegisterNetEvent('pma-voice:setPlayerCall', function(callChannel) - setPlayerCall(source, callChannel) -end) diff --git a/server-data/resources/[phone]/pma-voice/server/module/radio.lua b/server-data/resources/[phone]/pma-voice/server/module/radio.lua deleted file mode 100644 index 576c170cb..000000000 --- a/server-data/resources/[phone]/pma-voice/server/module/radio.lua +++ /dev/null @@ -1,178 +0,0 @@ -local radioChecks = {} - ---- checks if the player can join the channel specified ---- @param source number the source of the player ---- @param radioChannel number the channel they're trying to join ---- @return boolean if the user can join the channel -function canJoinChannel(source, radioChannel) - if radioChecks[radioChannel] then - return radioChecks[radioChannel](source) - end - return true -end - ---- adds a check to the channel, function is expected to return a boolean of true or false ----@param channel number the channel to add a check to ----@param cb function the function to execute the check on -function addChannelCheck(channel, cb) - local channelType = type(channel) - local cbType = type(cb) - if channelType ~= "number" then - error(("'channel' expected 'number' got '%s'"):format(channelType)) - end - if cbType ~= 'table' or not cb.__cfx_functionReference then - error(("'cb' expected 'function' got '%s'"):format(cbType)) - end - radioChecks[channel] = cb - logger.info("%s added a check to channel %s", GetInvokingResource(), channel) -end - -exports('addChannelCheck', addChannelCheck) - -local function radioNameGetter_orig(source) - return GetPlayerName(source) -end -local radioNameGetter = radioNameGetter_orig - ---- adds a check to the channel, function is expected to return a boolean of true or false ----@param cb function the function to execute the check on -function overrideRadioNameGetter(channel, cb) - local cbType = type(cb) - if cbType == 'table' and not cb.__cfx_functionReference then - error(("'cb' expected 'function' got '%s'"):format(cbType)) - end - radioNameGetter = cb - logger.info("%s added a check to channel %s", GetInvokingResource(), channel) -end - -exports('overrideRadioNameGetter', overrideRadioNameGetter) - ---- adds a player to the specified radion channel ----@param source number the player to add to the channel ----@param radioChannel number the channel to set them to ----@return boolean wasAdded if the player was successfuly added to the radio channel, or if it failed. -function addPlayerToRadio(source, radioChannel) - if not canJoinChannel(source, radioChannel) then - -- remove the player from the radio client side - TriggerClientEvent("pma-voice:radioChangeRejected", source) - TriggerClientEvent('pma-voice:removePlayerFromRadio', source, source) - return false - end - logger.verbose('[radio] Added %s to radio %s', source, radioChannel) - - -- check if the channel exists, if it does set the varaible to it - -- if not create it (basically if not radiodata make radiodata) - radioData[radioChannel] = radioData[radioChannel] or {} - local plyName = radioNameGetter(source) - for player, _ in pairs(radioData[radioChannel]) do - TriggerClientEvent('pma-voice:addPlayerToRadio', player, source, plyName) - end - voiceData[source] = voiceData[source] or defaultTable(source) - voiceData[source].radio = radioChannel - radioData[radioChannel][source] = false - TriggerClientEvent('pma-voice:syncRadioData', source, radioData[radioChannel], - GetConvarInt("voice_syncPlayerNames", 0) == 1 and plyName) - return true -end - ---- removes a player from the specified channel ----@param source number the player to remove ----@param radioChannel number the current channel to remove them from -function removePlayerFromRadio(source, radioChannel) - logger.verbose('[radio] Removed %s from radio %s', source, radioChannel) - radioData[radioChannel] = radioData[radioChannel] or {} - for player, _ in pairs(radioData[radioChannel]) do - TriggerClientEvent('pma-voice:removePlayerFromRadio', player, source) - end - radioData[radioChannel][source] = nil - voiceData[source] = voiceData[source] or defaultTable(source) - voiceData[source].radio = 0 -end - --- TODO: Implement this in a way that allows players to be on multiple channels ---- sets the players current radio channel ----@param source number the player to set the channel of ----@param _radioChannel number the radio channel to set them to (or 0 to remove them from radios) -function setPlayerRadio(source, _radioChannel) - if GetConvarInt('voice_enableRadios', 1) ~= 1 then return end - voiceData[source] = voiceData[source] or defaultTable(source) - local isResource = GetInvokingResource() - local plyVoice = voiceData[source] - local radioChannel = tonumber(_radioChannel) - if not radioChannel then - -- only full error if its sent from another server-side resource - if isResource then - error(("'radioChannel' expected 'number', got: %s"):format(type(_radioChannel))) - else - return logger.warn("%s sent a invalid radio, 'radioChannel' expected 'number', got: %s", source, - type(_radioChannel)) - end - end - if isResource then - -- got set in a export, need to update the client to tell them that their radio - -- changed - TriggerClientEvent('pma-voice:clSetPlayerRadio', source, radioChannel) - end - if radioChannel ~= 0 then - if plyVoice.radio > 0 then - removePlayerFromRadio(source, plyVoice.radio) - end - local wasAdded = addPlayerToRadio(source, radioChannel) - Player(source).state.radioChannel = wasAdded and radioChannel or 0 - elseif radioChannel == 0 then - removePlayerFromRadio(source, plyVoice.radio) - Player(source).state.radioChannel = 0 - end -end - -exports('setPlayerRadio', setPlayerRadio) - -RegisterNetEvent('pma-voice:setPlayerRadio', function(radioChannel) - setPlayerRadio(source, radioChannel) -end) - ---- syncs the player talking across all radio members ----@param talking boolean sets if the palyer is talking. -function setTalkingOnRadio(talking) - if GetConvarInt('voice_enableRadios', 1) ~= 1 then return end - voiceData[source] = voiceData[source] or defaultTable(source) - local plyVoice = voiceData[source] - local radioTbl = radioData[plyVoice.radio] - if radioTbl then - radioTbl[source] = talking - logger.verbose('[radio] Set %s to talking: %s on radio %s', source, talking, plyVoice.radio) - for player, _ in pairs(radioTbl) do - if player ~= source then - TriggerClientEvent('pma-voice:setTalkingOnRadio', player, source, talking) - logger.verbose('[radio] Sync %s to let them know %s is %s', player, source, - talking and 'talking' or 'not talking') - end - end - end -end - -RegisterNetEvent('pma-voice:setTalkingOnRadio', setTalkingOnRadio) - -AddEventHandler("onResourceStop", function(resource) - for channel, cfxFunctionRef in pairs(radioChecks) do - local functionRef = cfxFunctionRef.__cfx_functionReference - local functionResource = string.match(functionRef, resource) - if functionResource then - radioChecks[channel] = nil - logger.warn('Channel %s had its radio check removed because the resource that gave the checks stopped', - channel) - end - end - - if type(radioNameGetter) == "table" then - local radioRef = radioNameGetter.__cfx_functionReference - if radioRef then - local isResource = string.match(radioRef, resource) - if isResource then - radioNameGetter = radioNameGetter_orig - logger.warn( - 'Radio name getter is resetting to default because the resource that gave the cb got turned off') - end - end - end -end) diff --git a/server-data/resources/[phone]/pma-voice/server/mute.js b/server-data/resources/[phone]/pma-voice/server/mute.js deleted file mode 100644 index 61b45ffed..000000000 --- a/server-data/resources/[phone]/pma-voice/server/mute.js +++ /dev/null @@ -1,26 +0,0 @@ -let mutedPlayers = {} -// this is implemented in JS due to Lua's lack of a ClearTimeout -// muteply instead of mute because mute conflicts with rp-radio -RegisterCommand('muteply', (source, args) => { - const mutePly = parseInt(args[0]) - const duration = parseInt(args[1]) || 900 - if (mutePly && exports[GetCurrentResourceName()].isValidPlayer(mutePly)) { - const isMuted = !MumbleIsPlayerMuted(mutePly); - Player(mutePly).state.muted = isMuted; - MumbleSetPlayerMuted(mutePly, isMuted); - emit('pma-voice:playerMuted', mutePly, source, isMuted, duration); - // since this is a toggle, if theres a mutedPlayers entry it can be assumed - // that they're currently muted, so we'll clear the timeout and unmute - if (mutedPlayers[mutePly]) { - clearTimeout(mutedPlayers[mutePly]); - MumbleSetPlayerMuted(mutePly, isMuted) - Player(mutePly).state.muted = isMuted; - return; - } - mutedPlayers[mutePly] = setTimeout(() => { - MumbleSetPlayerMuted(mutePly, !isMuted) - Player(mutePly).state.muted = !isMuted; - delete mutedPlayers[mutePly] - }, duration * 1000) - } -}, true) diff --git a/server-data/resources/[phone]/pma-voice/shared.lua b/server-data/resources/[phone]/pma-voice/shared.lua deleted file mode 100644 index a81d5d78d..000000000 --- a/server-data/resources/[phone]/pma-voice/shared.lua +++ /dev/null @@ -1,127 +0,0 @@ -Cfg = {} - -voiceTarget = 1 - -gameVersion = GetGameName() - --- these are just here to satisfy linting -if not IsDuplicityVersion() then - LocalPlayer = LocalPlayer - playerServerId = GetPlayerServerId(PlayerId()) - - if gameVersion == "redm" then - function CreateAudioSubmix(name) - return Citizen.InvokeNative(0x658d2bc8, name, Citizen.ResultAsInteger()) - end - - function AddAudioSubmixOutput(submixId, outputSubmixId) - Citizen.InvokeNative(0xAC6E290D, submixId, outputSubmixId) - end - - function MumbleSetSubmixForServerId(serverId, submixId) - Citizen.InvokeNative(0xFE3A3054, serverId, submixId) - end - - function SetAudioSubmixEffectParamFloat(submixId, effectSlot, paramIndex, paramValue) - Citizen.InvokeNative(0x9A209B3C, submixId, effectSlot, paramIndex, paramValue) - end - - function SetAudioSubmixEffectParamInt(submixId, effectSlot, paramIndex, paramValue) - Citizen.InvokeNative(0x77FAE2B8, submixId, effectSlot, paramIndex, paramValue) - end - - function SetAudioSubmixEffectRadioFx(submixId, effectSlot) - Citizen.InvokeNative(0xAAA94D53, submixId, effectSlot) - end - - function SetAudioSubmixOutputVolumes(submixId, outputSlot, frontLeftVolume, frontRightVolume, rearLeftVolume, - rearRightVolume, channel5Volume, channel6Volume) - Citizen.InvokeNative(0x825DC0D1, submixId, outputSlot, frontLeftVolume, frontRightVolume, rearLeftVolume, - rearRightVolume, channel5Volume, channel6Volume) - end - end -end -Player = Player -Entity = Entity - -if GetConvar('voice_useNativeAudio', 'false') == 'true' then - -- native audio distance seems to be larger then regular gta units - Cfg.voiceModes = { - { 1.5, "Whisper" }, -- Whisper speech distance in gta distance units - { 3.0, "Normal" }, -- Normal speech distance in gta distance units - { 6.0, "Shouting" } -- Shout speech distance in gta distance units - } -else - Cfg.voiceModes = { - { 3.0, "Whisper" }, -- Whisper speech distance in gta distance units - { 7.0, "Normal" }, -- Normal speech distance in gta distance units - { 15.0, "Shouting" } -- Shout speech distance in gta distance units - } -end - -logger = { - log = function(message, ...) - print((message):format(...)) - end, - info = function(message, ...) - if GetConvarInt('voice_debugMode', 0) >= 1 then - print(('[info] ' .. message):format(...)) - end - end, - warn = function(message, ...) - print(('[^1WARNING^7] ' .. message):format(...)) - end, - error = function(message, ...) - error((message):format(...)) - end, - verbose = function(message, ...) - if GetConvarInt('voice_debugMode', 0) >= 4 then - print(('[verbose] ' .. message):format(...)) - end - end, -} - - -function tPrint(tbl, indent) - indent = indent or 0 - for k, v in pairs(tbl) do - local tblType = type(v) - local formatting = string.rep(" ", indent) .. k .. ": " - - if tblType == "table" then - print(formatting) - tPrint(v, indent + 1) - elseif tblType == 'boolean' then - print(formatting .. tostring(v)) - elseif tblType == "function" then - print(formatting .. tostring(v)) - else - print(formatting .. v) - end - end -end - -local function types(args) - local argType = type(args[1]) - for i = 2, #args do - local arg = args[i] - if argType == arg then - return true, argType - end - end - return false, argType -end - ---- does a type check and errors if an invalid type is sent ----@param ... table a table with the variable being the first argument and the expected type being the second -function type_check(...) - local vars = { ... } - for i = 1, #vars do - local var = vars[i] - local matchesType, varType = types(var) - if not matchesType then - table.remove(var, 1) - error(("Invalid type sent to argument #%s, expected %s, got %s"):format(i, table.concat(var, "|"), varType)) - end - end -end diff --git a/server-data/resources/[phone]/pma-voice/ui/css/app.css b/server-data/resources/[phone]/pma-voice/ui/css/app.css deleted file mode 100644 index 1a0b3a0c7..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/css/app.css +++ /dev/null @@ -1 +0,0 @@ -.voiceInfo{font-family:Avenir,Helvetica,Arial,sans-serif;position:fixed;text-align:right;bottom:5px;padding:0;right:5px;font-size:12px;font-weight:700;color:#949697;text-shadow:1.25px 0 0 #000,0 -1.25px 0 #000,0 1.25px 0 #000,-1.25px 0 0 #000}.talking{color:hsla(0,0%,100%,.822)}p{margin:0} \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/ui/index.html b/server-data/resources/[phone]/pma-voice/ui/index.html deleted file mode 100644 index bd213b624..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/index.html +++ /dev/null @@ -1 +0,0 @@ -voice-ui
\ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/ui/js/app.js b/server-data/resources/[phone]/pma-voice/ui/js/app.js deleted file mode 100644 index d63d43199..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/js/app.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function o(o){for(var t,a,r=o[0],d=o[1],l=o[2],s=0,b=[];s{})}})),fetch(`https://${GetParentResourceName()}/uiReady`,{method:"POST"}),{voice:e}}},l=(n("9253"),n("85dd")),u=n.n(l);const s=u()(d,[["render",r]]);var b=s;Object(t["a"])(b).mount("#app")},9253:function(e,o,n){"use strict";n("0154")}}); -//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/ui/js/app.js.map b/server-data/resources/[phone]/pma-voice/ui/js/app.js.map deleted file mode 100644 index 3f0794516..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/js/app.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue","webpack:///./src/App.vue?52ba","webpack:///./src/main.js","webpack:///./src/App.vue?02b4"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","id","src","class","voice","callInfo","talking","radioEnabled","radioChannel","usingRadio","voiceModes","voiceMode","uiEnabled","addEventListener","event","undefined","JSON","parse","sound","click","document","getElementById","load","volume","play","catch","e","fetch","GetParentResourceName","method","__exports__","render","App","mount"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./App.vue?vue&type=template&id=0cf90768\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=0cf90768&lang=css\"\n\nimport exportComponent from \"C:\\\\FXServer\\\\server-data\\\\resources\\\\pma-voice\\\\voice-ui\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_webpack@4.46.0\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\n\r\ncreateApp(App).mount('#app')\r\n","export * from \"-!../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/.pnpm/vue-loader@16.8.3_webpack@4.46.0/node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/.pnpm/vue-loader@16.8.3_webpack@4.46.0/node_modules/vue-loader/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=0cf90768&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js b/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js deleted file mode 100644 index 6d944422f..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"7edb":function(e,t,n){"use strict";n.d(t,"g",(function(){return we})),n.d(t,"e",(function(){return o["I"]})),n.d(t,"h",(function(){return o["L"]})),n.d(t,"b",(function(){return Zn})),n.d(t,"c",(function(){return Dn})),n.d(t,"d",(function(){return Hn})),n.d(t,"f",(function(){return Ln})),n.d(t,"a",(function(){return is}));var o=n("e99b");let r;const s=[];class c{constructor(e=!1){this.active=!0,this.effects=[],this.cleanups=[],!e&&r&&(this.parent=r,this.index=(r.scopes||(r.scopes=[])).push(this)-1)}run(e){if(this.active)try{return this.on(),e()}finally{this.off()}else 0}on(){this.active&&(s.push(this),r=this)}off(){this.active&&(s.pop(),r=s[s.length-1])}stop(e){if(this.active){if(this.effects.forEach(e=>e.stop()),this.cleanups.forEach(e=>e()),this.scopes&&this.scopes.forEach(e=>e.stop(!0)),this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.active=!1}}}function i(e,t){t=t||r,t&&t.active&&t.effects.push(e)}const l=e=>{const t=new Set(e);return t.w=0,t.n=0,t},u=e=>(e.w&b)>0,a=e=>(e.n&b)>0,f=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o0?g[e-1]:void 0}}stop(){this.active&&(_(this),this.onStop&&this.onStop(),this.active=!1)}}function _(e){const{deps:t}=e;if(t.length){for(let n=0;n{("length"===t||t>=r)&&u.push(e)});else switch(void 0!==n&&u.push(i.get(n)),t){case"add":Object(o["o"])(e)?Object(o["s"])(n)&&u.push(i.get("length")):(u.push(i.get(O)),Object(o["t"])(e)&&u.push(i.get(j)));break;case"delete":Object(o["o"])(e)||(u.push(i.get(O)),Object(o["t"])(e)&&u.push(i.get(j)));break;case"set":Object(o["t"])(e)&&u.push(i.get(O));break}if(1===u.length)u[0]&&T(u[0]);else{const e=[];for(const t of u)t&&e.push(...t);T(l(e))}}function T(e,t){for(const n of Object(o["o"])(e)?e:[...e])(n!==m||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const L=Object(o["H"])("__proto__,__v_isRef,__isVue"),P=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(o["E"])),N=U(),R=U(!1,!0),I=U(!0),D=B();function B(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...e){const n=Ae(this);for(let t=0,r=this.length;t{e[t]=function(...e){C();const n=Ae(this)[t].apply(this,e);return S(),n}}),e}function U(e=!1,t=!1){return function(n,r,s){if("__v_isReactive"===r)return!e;if("__v_isReadonly"===r)return e;if("__v_raw"===r&&s===(e?t?je:Oe:t?me:ge).get(n))return n;const c=Object(o["o"])(n);if(!e&&c&&Object(o["k"])(D,r))return Reflect.get(D,r,s);const i=Reflect.get(n,r,s);if(Object(o["E"])(r)?P.has(r):L(r))return i;if(e||E(n,"get",r),t)return i;if(Re(i)){const e=!c||!Object(o["s"])(r);return e?i.value:i}return Object(o["v"])(i)?e?Ce(i):we(i):i}}const $=z(),V=z(!0);function z(e=!1){return function(t,n,r,s){let c=t[n];if(!e&&!Ee(r)&&(r=Ae(r),c=Ae(c),!Object(o["o"])(t)&&Re(c)&&!Re(r)))return c.value=r,!0;const i=Object(o["o"])(t)&&Object(o["s"])(n)?Number(n)e,Z=e=>Reflect.getPrototypeOf(e);function Q(e,t,n=!1,o=!1){e=e["__v_raw"];const r=Ae(e),s=Ae(t);t!==s&&!n&&E(r,"get",t),!n&&E(r,"get",s);const{has:c}=Z(r),i=o?X:n?Le:Te;return c.call(r,t)?i(e.get(t)):c.call(r,s)?i(e.get(s)):void(e!==r&&e.get(t))}function Y(e,t=!1){const n=this["__v_raw"],o=Ae(n),r=Ae(e);return e!==r&&!t&&E(o,"has",e),!t&&E(o,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function ee(e,t=!1){return e=e["__v_raw"],!t&&E(Ae(e),"iterate",O),Reflect.get(e,"size",e)}function te(e){e=Ae(e);const t=Ae(this),n=Z(t),o=n.has.call(t,e);return o||(t.add(e),M(t,"add",e,e)),this}function ne(e,t){t=Ae(t);const n=Ae(this),{has:r,get:s}=Z(n);let c=r.call(n,e);c||(e=Ae(e),c=r.call(n,e));const i=s.call(n,e);return n.set(e,t),c?Object(o["j"])(t,i)&&M(n,"set",e,t,i):M(n,"add",e,t),this}function oe(e){const t=Ae(this),{has:n,get:o}=Z(t);let r=n.call(t,e);r||(e=Ae(e),r=n.call(t,e));const s=o?o.call(t,e):void 0,c=t.delete(e);return r&&M(t,"delete",e,void 0,s),c}function re(){const e=Ae(this),t=0!==e.size,n=void 0,o=e.clear();return t&&M(e,"clear",void 0,void 0,n),o}function se(e,t){return function(n,o){const r=this,s=r["__v_raw"],c=Ae(s),i=t?X:e?Le:Te;return!e&&E(c,"iterate",O),s.forEach((e,t)=>n.call(o,i(e),i(t),r))}}function ce(e,t,n){return function(...r){const s=this["__v_raw"],c=Ae(s),i=Object(o["t"])(c),l="entries"===e||e===Symbol.iterator&&i,u="keys"===e&&i,a=s[e](...r),f=n?X:t?Le:Te;return!t&&E(c,"iterate",u?j:O),{next(){const{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:l?[f(e[0]),f(e[1])]:f(e),done:t}},[Symbol.iterator](){return this}}}}function ie(e){return function(...t){return"delete"!==e&&this}}function le(){const e={get(e){return Q(this,e)},get size(){return ee(this)},has:Y,add:te,set:ne,delete:oe,clear:re,forEach:se(!1,!1)},t={get(e){return Q(this,e,!1,!0)},get size(){return ee(this)},has:Y,add:te,set:ne,delete:oe,clear:re,forEach:se(!1,!0)},n={get(e){return Q(this,e,!0)},get size(){return ee(this,!0)},has(e){return Y.call(this,e,!0)},add:ie("add"),set:ie("set"),delete:ie("delete"),clear:ie("clear"),forEach:se(!0,!1)},o={get(e){return Q(this,e,!0,!0)},get size(){return ee(this,!0)},has(e){return Y.call(this,e,!0)},add:ie("add"),set:ie("set"),delete:ie("delete"),clear:ie("clear"),forEach:se(!0,!0)},r=["keys","values","entries",Symbol.iterator];return r.forEach(r=>{e[r]=ce(r,!1,!1),n[r]=ce(r,!0,!1),t[r]=ce(r,!1,!0),o[r]=ce(r,!0,!0)}),[e,n,t,o]}const[ue,ae,fe,pe]=le();function de(e,t){const n=t?e?pe:fe:e?ae:ue;return(t,r,s)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(Object(o["k"])(n,r)&&r in t?n:t,r,s)}const he={get:de(!1,!1)},be={get:de(!1,!0)},ve={get:de(!0,!1)};const ge=new WeakMap,me=new WeakMap,Oe=new WeakMap,je=new WeakMap;function ye(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:ye(Object(o["O"])(e))}function we(e){return e&&e["__v_isReadonly"]?e:ke(e,!1,q,he,ge)}function xe(e){return ke(e,!1,J,be,me)}function Ce(e){return ke(e,!0,G,ve,Oe)}function ke(e,t,n,r,s){if(!Object(o["v"])(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const c=s.get(e);if(c)return c;const i=_e(e);if(0===i)return e;const l=new Proxy(e,2===i?r:n);return s.set(e,l),l}function Se(e){return Ee(e)?Se(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Ee(e){return!(!e||!e["__v_isReadonly"])}function Fe(e){return Se(e)||Ee(e)}function Ae(e){const t=e&&e["__v_raw"];return t?Ae(t):e}function Me(e){return Object(o["g"])(e,"__v_skip",!0),e}const Te=e=>Object(o["v"])(e)?we(e):e,Le=e=>Object(o["v"])(e)?Ce(e):e;function Pe(e){F()&&(e=Ae(e),e.dep||(e.dep=l()),A(e.dep))}function Ne(e,t){e=Ae(e),e.dep&&T(e.dep)}function Re(e){return Boolean(e&&!0===e.__v_isRef)}function Ie(e){return Re(e)?e.value:e}const De={get:(e,t,n)=>Ie(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return Re(r)&&!Re(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function Be(e){return Se(e)?e:new Proxy(e,De)}class Ue{constructor(e,t,n){this._setter=t,this.dep=void 0,this._dirty=!0,this.__v_isRef=!0,this.effect=new y(e,()=>{this._dirty||(this._dirty=!0,Ne(this))}),this["__v_isReadonly"]=n}get value(){const e=Ae(this);return Pe(e),e._dirty&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function $e(e,t){let n,r;const s=Object(o["p"])(e);s?(n=e,r=o["d"]):(n=e.get,r=e.set);const c=new Ue(n,r,s||!r);return c}Promise.resolve();new Set;new Map;function Ve(e,t,...n){const r=e.vnode.props||o["b"];let s=n;const c=t.startsWith("update:"),i=c&&t.slice(7);if(i&&i in r){const e=("modelValue"===i?"model":i)+"Modifiers",{number:t,trim:c}=r[e]||o["b"];c?s=n.map(e=>e.trim()):t&&(s=n.map(o["N"]))}let l;let u=r[l=Object(o["M"])(t)]||r[l=Object(o["M"])(Object(o["e"])(t))];!u&&c&&(u=r[l=Object(o["M"])(Object(o["l"])(t))]),u&&Eo(u,e,6,s);const a=r[l+"Once"];if(a){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,Eo(a,e,6,s)}}function ze(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(void 0!==s)return s;const c=e.emits;let i={},l=!1;if(!Object(o["p"])(e)){const r=e=>{const n=ze(e,t,!0);n&&(l=!0,Object(o["h"])(i,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return c||l?(Object(o["o"])(c)?c.forEach(e=>i[e]=null):Object(o["h"])(i,c),r.set(e,i),i):(r.set(e,null),null)}function We(e,t){return!(!e||!Object(o["w"])(t))&&(t=t.slice(2).replace(/Once$/,""),Object(o["k"])(e,t[0].toLowerCase()+t.slice(1))||Object(o["k"])(e,Object(o["l"])(t))||Object(o["k"])(e,t))}let He=null,Ke=null;function qe(e){const t=He;return He=e,Ke=e&&e.type.__scopeId||null,t}function Ge(e,t=He,n){if(!t)return e;if(e._n)return e;const o=(...n)=>{o._d&&Rn(-1);const r=qe(t),s=e(...n);return qe(r),o._d&&Rn(1),s};return o._n=!0,o._c=!0,o._d=!0,o}function Je(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:c,propsOptions:[i],slots:l,attrs:u,emit:a,render:f,renderCache:p,data:d,setupState:h,ctx:b,inheritAttrs:v}=e;let g,m;const O=qe(e);try{if(4&n.shapeFlag){const e=s||r;g=Qn(f.call(e,e,p,c,h,d,b)),m=u}else{const e=t;0,g=Qn(e.length>1?e(c,{attrs:u,slots:l,emit:a}):e(c,null)),m=t.props?u:Xe(u)}}catch(y){Mn.length=0,Fo(y,e,1),g=Kn(Fn)}let j=g;if(m&&!1!==v){const e=Object.keys(m),{shapeFlag:t}=j;e.length&&7&t&&(i&&e.some(o["u"])&&(m=Ze(m,i)),j=Jn(j,m))}return n.dirs&&(j.dirs=j.dirs?j.dirs.concat(n.dirs):n.dirs),n.transition&&(j.transition=n.transition),g=j,qe(O),g}const Xe=e=>{let t;for(const n in e)("class"===n||"style"===n||Object(o["w"])(n))&&((t||(t={}))[n]=e[n]);return t},Ze=(e,t)=>{const n={};for(const r in e)Object(o["u"])(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function Qe(e,t,n){const{props:o,children:r,component:s}=e,{props:c,children:i,patchFlag:l}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!r&&!i||i&&i.$stable)||o!==c&&(o?!c||Ye(o,c,u):!!c);if(1024&l)return!0;if(16&l)return o?Ye(o,c,u):!!c;if(8&l){const e=t.dynamicProps;for(let t=0;te.__isSuspense;function nt(e,t){t&&t.pendingBranch?Object(o["o"])(e)?t.effects.push(...e):t.effects.push(e):Zo(e)}function ot(e,t){if(uo){let n=uo.provides;const o=uo.parent&&uo.parent.provides;o===n&&(n=uo.provides=Object.create(o)),n[e]=t}else 0}function rt(e,t,n=!1){const r=uo||He;if(r){const s=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(s&&e in s)return s[e];if(arguments.length>1)return n&&Object(o["p"])(t)?t.call(r.proxy):t}else 0}function st(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return St(()=>{e.isMounted=!0}),At(()=>{e.isUnmounting=!0}),e}const ct=[Function,Array],it={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ct,onEnter:ct,onAfterEnter:ct,onEnterCancelled:ct,onBeforeLeave:ct,onLeave:ct,onAfterLeave:ct,onLeaveCancelled:ct,onBeforeAppear:ct,onAppear:ct,onAfterAppear:ct,onAppearCancelled:ct},setup(e,{slots:t}){const n=ao(),o=st();let r;return()=>{const s=t.default&&ht(t.default(),!0);if(!s||!s.length)return;const c=Ae(e),{mode:i}=c;const l=s[0];if(o.isLeaving)return ft(l);const u=pt(l);if(!u)return ft(l);const a=at(u,c,o,n);dt(u,a);const f=n.subTree,p=f&&pt(f);let d=!1;const{getTransitionKey:h}=u.type;if(h){const e=h();void 0===r?r=e:e!==r&&(r=e,d=!0)}if(p&&p.type!==Fn&&(!$n(u,p)||d)){const e=at(p,c,o,n);if(dt(p,e),"out-in"===i)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,n.update()},ft(l);"in-out"===i&&u.type!==Fn&&(e.delayLeave=(e,t,n)=>{const r=ut(o,p);r[String(p.key)]=p,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete a.delayedLeave},a.delayedLeave=n})}return l}}},lt=it;function ut(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 at(e,t,n,o){const{appear:r,mode:s,persisted:c=!1,onBeforeEnter:i,onEnter:l,onAfterEnter:u,onEnterCancelled:a,onBeforeLeave:f,onLeave:p,onAfterLeave:d,onLeaveCancelled:h,onBeforeAppear:b,onAppear:v,onAfterAppear:g,onAppearCancelled:m}=t,O=String(e.key),j=ut(n,e),y=(e,t)=>{e&&Eo(e,o,9,t)},_={mode:s,persisted:c,beforeEnter(t){let o=i;if(!n.isMounted){if(!r)return;o=b||i}t._leaveCb&&t._leaveCb(!0);const s=j[O];s&&$n(e,s)&&s.el._leaveCb&&s.el._leaveCb(),y(o,[t])},enter(e){let t=l,o=u,s=a;if(!n.isMounted){if(!r)return;t=v||l,o=g||u,s=m||a}let c=!1;const i=e._enterCb=t=>{c||(c=!0,y(t?s:o,[e]),_.delayedLeave&&_.delayedLeave(),e._enterCb=void 0)};t?(t(e,i),t.length<=1&&i()):i()},leave(t,o){const r=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return o();y(f,[t]);let s=!1;const c=t._leaveCb=n=>{s||(s=!0,o(),y(n?h:d,[t]),t._leaveCb=void 0,j[r]===e&&delete j[r])};j[r]=e,p?(p(t,c),p.length<=1&&c()):c()},clone(e){return at(e,t,n,o)}};return _}function ft(e){if(vt(e))return e=Jn(e),e.children=null,e}function pt(e){return vt(e)?e.children?e.children[0]:void 0:e}function dt(e,t){6&e.shapeFlag&&e.component?dt(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ht(e,t=!1){let n=[],o=0;for(let r=0;r1)for(let r=0;r!!e.type.__asyncLoader;const vt=e=>e.type.__isKeepAlive;RegExp,RegExp;function gt(e,t){return Object(o["o"])(e)?e.some(e=>gt(e,t)):Object(o["D"])(e)?e.split(",").indexOf(t)>-1:!!e.test&&e.test(t)}function mt(e,t){jt(e,"a",t)}function Ot(e,t){jt(e,"da",t)}function jt(e,t,n=uo){const o=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(xt(t,o,n),n){let e=n.parent;while(e&&e.parent)vt(e.parent.vnode)&&yt(o,t,n,e),e=e.parent}}function yt(e,t,n,r){const s=xt(t,e,r,!0);Mt(()=>{Object(o["K"])(r[t],s)},n)}function _t(e){let t=e.shapeFlag;256&t&&(t-=256),512&t&&(t-=512),e.shapeFlag=t}function wt(e){return 128&e.shapeFlag?e.ssContent:e}function xt(e,t,n=uo,o=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;C(),fo(n);const r=Eo(t,n,e,o);return po(),S(),r});return o?r.unshift(s):r.push(s),s}}const Ct=e=>(t,n=uo)=>(!go||"sp"===e)&&xt(e,t,n),kt=Ct("bm"),St=Ct("m"),Et=Ct("bu"),Ft=Ct("u"),At=Ct("bum"),Mt=Ct("um"),Tt=Ct("sp"),Lt=Ct("rtg"),Pt=Ct("rtc");function Nt(e,t=uo){xt("ec",e,t)}let Rt=!0;function It(e){const t=$t(e),n=e.proxy,r=e.ctx;Rt=!1,t.beforeCreate&&Bt(t.beforeCreate,e,"bc");const{data:s,computed:c,methods:i,watch:l,provide:u,inject:a,created:f,beforeMount:p,mounted:d,beforeUpdate:h,updated:b,activated:v,deactivated:g,beforeDestroy:m,beforeUnmount:O,destroyed:j,unmounted:y,render:_,renderTracked:w,renderTriggered:x,errorCaptured:C,serverPrefetch:k,expose:S,inheritAttrs:E,components:F,directives:A,filters:M}=t,T=null;if(a&&Dt(a,r,T,e.appContext.config.unwrapInjectedRef),i)for(const P in i){const e=i[P];Object(o["p"])(e)&&(r[P]=e.bind(n))}if(s){0;const t=s.call(n,n);0,Object(o["v"])(t)&&(e.data=we(t))}if(Rt=!0,c)for(const P in c){const e=c[P],t=Object(o["p"])(e)?e.bind(n,n):Object(o["p"])(e.get)?e.get.bind(n,n):o["d"];0;const s=!Object(o["p"])(e)&&Object(o["p"])(e.set)?e.set.bind(n):o["d"],i=$e({get:t,set:s});Object.defineProperty(r,P,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(l)for(const o in l)Ut(l[o],r,n,o);if(u){const e=Object(o["p"])(u)?u.call(n):u;Reflect.ownKeys(e).forEach(t=>{ot(t,e[t])})}function L(e,t){Object(o["o"])(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(f&&Bt(f,e,"c"),L(kt,p),L(St,d),L(Et,h),L(Ft,b),L(mt,v),L(Ot,g),L(Nt,C),L(Pt,w),L(Lt,x),L(At,O),L(Mt,y),L(Tt,k),Object(o["o"])(S))if(S.length){const t=e.exposed||(e.exposed={});S.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})})}else e.exposed||(e.exposed={});_&&e.render===o["d"]&&(e.render=_),null!=E&&(e.inheritAttrs=E),F&&(e.components=F),A&&(e.directives=A)}function Dt(e,t,n=o["d"],r=!1){Object(o["o"])(e)&&(e=Kt(e));for(const s in e){const n=e[s];let c;c=Object(o["v"])(n)?"default"in n?rt(n.from||s,n.default,!0):rt(n.from||s):rt(n),Re(c)&&r?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e}):t[s]=c}}function Bt(e,t,n){Eo(Object(o["o"])(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ut(e,t,n,r){const s=r.includes(".")?cr(n,r):()=>n[r];if(Object(o["D"])(e)){const n=t[e];Object(o["p"])(n)&&or(s,n)}else if(Object(o["p"])(e))or(s,e.bind(n));else if(Object(o["v"])(e))if(Object(o["o"])(e))e.forEach(e=>Ut(e,t,n,r));else{const r=Object(o["p"])(e.handler)?e.handler.bind(n):t[e.handler];Object(o["p"])(r)&&or(s,r,e)}else 0}function $t(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:s,config:{optionMergeStrategies:c}}=e.appContext,i=s.get(t);let l;return i?l=i:r.length||n||o?(l={},r.length&&r.forEach(e=>Vt(l,e,c,!0)),Vt(l,t,c)):l=t,s.set(t,l),l}function Vt(e,t,n,o=!1){const{mixins:r,extends:s}=t;s&&Vt(e,s,n,!0),r&&r.forEach(t=>Vt(e,t,n,!0));for(const c in t)if(o&&"expose"===c);else{const o=zt[c]||n&&n[c];e[c]=o?o(e[c],t[c]):t[c]}return e}const zt={data:Wt,props:Gt,emits:Gt,methods:Gt,computed:Gt,beforeCreate:qt,created:qt,beforeMount:qt,mounted:qt,beforeUpdate:qt,updated:qt,beforeDestroy:qt,beforeUnmount:qt,destroyed:qt,unmounted:qt,activated:qt,deactivated:qt,errorCaptured:qt,serverPrefetch:qt,components:Gt,directives:Gt,watch:Jt,provide:Wt,inject:Ht};function Wt(e,t){return t?e?function(){return Object(o["h"])(Object(o["p"])(e)?e.call(this,this):e,Object(o["p"])(t)?t.call(this,this):t)}:t:e}function Ht(e,t){return Gt(Kt(e),Kt(t))}function Kt(e){if(Object(o["o"])(e)){const t={};for(let n=0;n0)||16&i){let r;Qt(e,t,s,c)&&(a=!0);for(const c in l)t&&(Object(o["k"])(t,c)||(r=Object(o["l"])(c))!==c&&Object(o["k"])(t,r))||(u?!n||void 0===n[c]&&void 0===n[r]||(s[c]=Yt(u,l,c,void 0,e,!0)):delete s[c]);if(c!==l)for(const e in c)t&&Object(o["k"])(t,e)||(delete c[e],a=!0)}else if(8&i){const n=e.vnode.dynamicProps;for(let r=0;r{u=!0;const[n,r]=en(e,t,!0);Object(o["h"])(i,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!c&&!u)return r.set(e,o["a"]),o["a"];if(Object(o["o"])(c))for(let f=0;f-1,r[1]=n<0||e-1||Object(o["k"])(r,"default"))&&l.push(t)}}}}const a=[i,l];return r.set(e,a),a}function tn(e){return"$"!==e[0]}function nn(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function on(e,t){return nn(e)===nn(t)}function rn(e,t){return Object(o["o"])(t)?t.findIndex(t=>on(t,e)):Object(o["p"])(t)&&on(t,e)?0:-1}const sn=e=>"_"===e[0]||"$stable"===e,cn=e=>Object(o["o"])(e)?e.map(Qn):[Qn(e)],ln=(e,t,n)=>{const o=Ge((...e)=>cn(t(...e)),n);return o._c=!1,o},un=(e,t,n)=>{const r=e._ctx;for(const s in e){if(sn(s))continue;const n=e[s];if(Object(o["p"])(n))t[s]=ln(s,n,r);else if(null!=n){0;const e=cn(n);t[s]=()=>e}}},an=(e,t)=>{const n=cn(t);e.slots.default=()=>n},fn=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=Ae(t),Object(o["g"])(t,"_",n)):un(t,e.slots={})}else e.slots={},t&&an(e,t);Object(o["g"])(e.slots,Vn,1)},pn=(e,t,n)=>{const{vnode:r,slots:s}=e;let c=!0,i=o["b"];if(32&r.shapeFlag){const e=t._;e?n&&1===e?c=!1:(Object(o["h"])(s,t),n||1!==e||delete s._):(c=!t.$stable,un(t,s)),i=t}else t&&(an(e,t),i={default:1});if(c)for(const o in s)sn(o)||o in i||delete s[o]};function dn(e,t,n,o){const r=e.dirs,s=t&&t.dirs;for(let c=0;cgn(e,t&&(Object(o["o"])(t)?t[c]:t),n,r,s));if(bt(r)&&!s)return;const c=4&r.shapeFlag?xo(r.component)||r.component.proxy:r.el,i=s?null:c,{i:l,r:u}=e;const a=t&&t.r,f=l.refs===o["b"]?l.refs={}:l.refs,p=l.setupState;if(null!=a&&a!==u&&(Object(o["D"])(a)?(f[a]=null,Object(o["k"])(p,a)&&(p[a]=null)):Re(a)&&(a.value=null)),Object(o["p"])(u))So(u,l,12,[i,f]);else{const t=Object(o["D"])(u),r=Re(u);if(t||r){const r=()=>{if(e.f){const n=t?f[u]:u.value;s?Object(o["o"])(n)&&Object(o["K"])(n,c):Object(o["o"])(n)?n.includes(c)||n.push(c):t?f[u]=[c]:(u.value=[c],e.k&&(f[e.k]=u.value))}else t?(f[u]=i,Object(o["k"])(p,u)&&(p[u]=i)):Re(u)&&(u.value=i,e.k&&(f[e.k]=i))};i?(r.id=-1,On(r,n)):r()}else 0}}function mn(){}const On=nt;function jn(e){return yn(e)}function yn(e,t){mn();const n=Object(o["i"])();n.__VUE__=!0;const{insert:r,remove:s,patchProp:c,createElement:i,createText:l,createComment:u,setText:a,setElementText:f,parentNode:p,nextSibling:d,setScopeId:h=o["d"],cloneNode:b,insertStaticContent:v}=e,g=(e,t,n,o=null,r=null,s=null,c=!1,i=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!$n(e,t)&&(o=G(e),z(e,r,s,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:u,ref:a,shapeFlag:f}=t;switch(u){case En:m(e,t,n,o);break;case Fn:O(e,t,n,o);break;case An:null==e&&j(t,n,o,c);break;case Sn:L(e,t,n,o,r,s,c,i,l);break;default:1&f?x(e,t,n,o,r,s,c,i,l):6&f?P(e,t,n,o,r,s,c,i,l):(64&f||128&f)&&u.process(e,t,n,o,r,s,c,i,l,X)}null!=a&&r&&gn(a,e&&e.ref,s,t||e,!t)},m=(e,t,n,o)=>{if(null==e)r(t.el=l(t.children),n,o);else{const n=t.el=e.el;t.children!==e.children&&a(n,t.children)}},O=(e,t,n,o)=>{null==e?r(t.el=u(t.children||""),n,o):t.el=e.el},j=(e,t,n,o)=>{[e.el,e.anchor]=v(e.children,t,n,o)},_=({el:e,anchor:t},n,o)=>{let s;while(e&&e!==t)s=d(e),r(e,n,o),e=s;r(t,n,o)},w=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=d(e),s(e),e=n;s(t)},x=(e,t,n,o,r,s,c,i,l)=>{c=c||"svg"===t.type,null==e?k(t,n,o,r,s,c,i,l):A(e,t,r,s,c,i,l)},k=(e,t,n,s,l,u,a,p)=>{let d,h;const{type:v,props:g,shapeFlag:m,transition:O,patchFlag:j,dirs:y}=e;if(e.el&&void 0!==b&&-1===j)d=e.el=b(e.el);else{if(d=e.el=i(e.type,u,g&&g.is,g),8&m?f(d,e.children):16&m&&F(e.children,d,null,s,l,u&&"foreignObject"!==v,a,p),y&&dn(e,null,s,"created"),g){for(const t in g)"value"===t||Object(o["z"])(t)||c(d,t,null,g[t],u,e.children,s,l,q);"value"in g&&c(d,"value",null,g.value),(h=g.onVnodeBeforeMount)&&no(h,s,e)}E(d,e,e.scopeId,a,s)}y&&dn(e,null,s,"beforeMount");const _=(!l||l&&!l.pendingBranch)&&O&&!O.persisted;_&&O.beforeEnter(d),r(d,t,n),((h=g&&g.onVnodeMounted)||_||y)&&On(()=>{h&&no(h,s,e),_&&O.enter(d),y&&dn(e,null,s,"mounted")},l)},E=(e,t,n,o,r)=>{if(n&&h(e,n),o)for(let s=0;s{for(let u=l;u{const u=t.el=e.el;let{patchFlag:a,dynamicChildren:p,dirs:d}=t;a|=16&e.patchFlag;const h=e.props||o["b"],b=t.props||o["b"];let v;n&&_n(n,!1),(v=b.onVnodeBeforeUpdate)&&no(v,n,t,e),d&&dn(t,e,n,"beforeUpdate"),n&&_n(n,!0);const g=s&&"foreignObject"!==t.type;if(p?M(e.dynamicChildren,p,u,n,r,g,i):l||B(e,t,u,null,n,r,g,i,!1),a>0){if(16&a)T(u,t,h,b,n,r,s);else if(2&a&&h.class!==b.class&&c(u,"class",null,b.class,s),4&a&&c(u,"style",h.style,b.style,s),8&a){const o=t.dynamicProps;for(let t=0;t{v&&no(v,n,t,e),d&&dn(t,e,n,"updated")},r)},M=(e,t,n,o,r,s,c)=>{for(let i=0;i{if(n!==r){for(const u in r){if(Object(o["z"])(u))continue;const a=r[u],f=n[u];a!==f&&"value"!==u&&c(e,u,f,a,l,t.children,s,i,q)}if(n!==o["b"])for(const u in n)Object(o["z"])(u)||u in r||c(e,u,n[u],null,l,t.children,s,i,q);"value"in r&&c(e,"value",n.value,r.value)}},L=(e,t,n,o,s,c,i,u,a)=>{const f=t.el=e?e.el:l(""),p=t.anchor=e?e.anchor:l("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:b}=t;b&&(u=u?u.concat(b):b),null==e?(r(f,n,o),r(p,n,o),F(t.children,n,p,s,c,i,u,a)):d>0&&64&d&&h&&e.dynamicChildren?(M(e.dynamicChildren,h,n,s,c,i,u),(null!=t.key||s&&t===s.subTree)&&wn(e,t,!0)):B(e,t,n,p,s,c,i,u,a)},P=(e,t,n,o,r,s,c,i,l)=>{t.slotScopeIds=i,null==e?512&t.shapeFlag?r.ctx.activate(t,n,o,c,l):N(t,n,o,r,s,c,l):R(e,t,l)},N=(e,t,n,o,r,s,c)=>{const i=e.component=lo(e,o,r);if(vt(e)&&(i.ctx.renderer=X),mo(i),i.asyncDep){if(r&&r.registerDep(i,I),!e.el){const e=i.subTree=Kn(Fn);O(null,e,t,n)}}else I(i,e,t,n,r,s,c)},R=(e,t,n)=>{const o=t.component=e.component;if(Qe(e,t,n)){if(o.asyncDep&&!o.asyncResolved)return void D(o,t,n);o.next=t,Go(o.update),o.update()}else t.component=e.component,t.el=e.el,o.vnode=t},I=(e,t,n,r,s,c,i)=>{const l=()=>{if(e.isMounted){let t,{next:n,bu:r,u:l,parent:u,vnode:a}=e,f=n;0,_n(e,!1),n?(n.el=a.el,D(e,n,i)):n=a,r&&Object(o["n"])(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&no(t,u,n,a),_n(e,!0);const d=Je(e);0;const h=e.subTree;e.subTree=d,g(h,d,p(h.el),G(h),e,s,c),n.el=d.el,null===f&&et(e,d.el),l&&On(l,s),(t=n.props&&n.props.onVnodeUpdated)&&On(()=>no(t,u,n,a),s)}else{let i;const{el:l,props:u}=t,{bm:a,m:f,parent:p}=e,d=bt(t);if(_n(e,!1),a&&Object(o["n"])(a),!d&&(i=u&&u.onVnodeBeforeMount)&&no(i,p,t),_n(e,!0),l&&Q){const n=()=>{e.subTree=Je(e),Q(l,e.subTree,e,s,null)};d?t.type.__asyncLoader().then(()=>!e.isUnmounted&&n()):n()}else{0;const o=e.subTree=Je(e);0,g(null,o,n,r,e,s,c),t.el=o.el}if(f&&On(f,s),!d&&(i=u&&u.onVnodeMounted)){const e=t;On(()=>no(i,p,e),s)}256&t.shapeFlag&&e.a&&On(e.a,s),e.isMounted=!0,t=n=r=null}},u=e.effect=new y(l,()=>Ko(e.update),e.scope),a=e.update=u.run.bind(u);a.id=e.uid,_n(e,!0),a()},D=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,Zt(e,t.props,o,n),pn(e,t.children,n),C(),Qo(void 0,e.update),S()},B=(e,t,n,o,r,s,c,i,l=!1)=>{const u=e&&e.children,a=e?e.shapeFlag:0,p=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void $(u,p,n,o,r,s,c,i,l);if(256&d)return void U(u,p,n,o,r,s,c,i,l)}8&h?(16&a&&q(u,r,s),p!==u&&f(n,p)):16&a?16&h?$(u,p,n,o,r,s,c,i,l):q(u,r,s,!0):(8&a&&f(n,""),16&h&&F(p,n,o,r,s,c,i,l))},U=(e,t,n,r,s,c,i,l,u)=>{e=e||o["a"],t=t||o["a"];const a=e.length,f=t.length,p=Math.min(a,f);let d;for(d=0;df?q(e,s,c,!0,!1,p):F(t,n,r,s,c,i,l,u,p)},$=(e,t,n,r,s,c,i,l,u)=>{let a=0;const f=t.length;let p=e.length-1,d=f-1;while(a<=p&&a<=d){const o=e[a],r=t[a]=u?Yn(t[a]):Qn(t[a]);if(!$n(o,r))break;g(o,r,n,null,s,c,i,l,u),a++}while(a<=p&&a<=d){const o=e[p],r=t[d]=u?Yn(t[d]):Qn(t[d]);if(!$n(o,r))break;g(o,r,n,null,s,c,i,l,u),p--,d--}if(a>p){if(a<=d){const e=d+1,o=ed)while(a<=p)z(e[a],s,c,!0),a++;else{const h=a,b=a,v=new Map;for(a=b;a<=d;a++){const e=t[a]=u?Yn(t[a]):Qn(t[a]);null!=e.key&&v.set(e.key,a)}let m,O=0;const j=d-b+1;let y=!1,_=0;const w=new Array(j);for(a=0;a=j){z(o,s,c,!0);continue}let r;if(null!=o.key)r=v.get(o.key);else for(m=b;m<=d;m++)if(0===w[m-b]&&$n(o,t[m])){r=m;break}void 0===r?z(o,s,c,!0):(w[r-b]=a+1,r>=_?_=r:y=!0,g(o,t[r],n,null,s,c,i,l,u),O++)}const x=y?xn(w):o["a"];for(m=x.length-1,a=j-1;a>=0;a--){const e=b+a,o=t[e],p=e+1{const{el:c,type:i,transition:l,children:u,shapeFlag:a}=e;if(6&a)return void V(e.component.subTree,t,n,o);if(128&a)return void e.suspense.move(t,n,o);if(64&a)return void i.move(e,t,n,X);if(i===Sn){r(c,t,n);for(let e=0;el.enter(c),s);else{const{leave:e,delayLeave:o,afterLeave:s}=l,i=()=>r(c,t,n),u=()=>{e(c,()=>{i(),s&&s()})};o?o(c,i,u):u()}else r(c,t,n)},z=(e,t,n,o=!1,r=!1)=>{const{type:s,props:c,ref:i,children:l,dynamicChildren:u,shapeFlag:a,patchFlag:f,dirs:p}=e;if(null!=i&&gn(i,null,n,e,!0),256&a)return void t.ctx.deactivate(e);const d=1&a&&p,h=!bt(e);let b;if(h&&(b=c&&c.onVnodeBeforeUnmount)&&no(b,t,e),6&a)K(e.component,n,o);else{if(128&a)return void e.suspense.unmount(n,o);d&&dn(e,null,t,"beforeUnmount"),64&a?e.type.remove(e,t,n,r,X,o):u&&(s!==Sn||f>0&&64&f)?q(u,t,n,!1,!0):(s===Sn&&384&f||!r&&16&a)&&q(l,t,n),o&&W(e)}(h&&(b=c&&c.onVnodeUnmounted)||d)&&On(()=>{b&&no(b,t,e),d&&dn(e,null,t,"unmounted")},n)},W=e=>{const{type:t,el:n,anchor:o,transition:r}=e;if(t===Sn)return void H(n,o);if(t===An)return void w(e);const c=()=>{s(n),r&&!r.persisted&&r.afterLeave&&r.afterLeave()};if(1&e.shapeFlag&&r&&!r.persisted){const{leave:t,delayLeave:o}=r,s=()=>t(n,c);o?o(e.el,c,s):s()}else c()},H=(e,t)=>{let n;while(e!==t)n=d(e),s(e),e=n;s(t)},K=(e,t,n)=>{const{bum:r,scope:s,update:c,subTree:i,um:l}=e;r&&Object(o["n"])(r),s.stop(),c&&(c.active=!1,z(i,e,t,n)),l&&On(l,t),On(()=>{e.isUnmounted=!0},t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},q=(e,t,n,o=!1,r=!1,s=0)=>{for(let c=s;c6&e.shapeFlag?G(e.component.subTree):128&e.shapeFlag?e.suspense.next():d(e.anchor||e.el),J=(e,t,n)=>{null==e?t._vnode&&z(t._vnode,null,null,!0):g(t._vnode||null,e,t,null,null,null,n),Yo(),t._vnode=e},X={p:g,um:z,m:V,r:W,mt:N,mc:F,pc:B,pbc:M,n:G,o:e};let Z,Q;return t&&([Z,Q]=t(X)),{render:J,hydrate:Z,createApp:vn(J,Z)}}function _n({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wn(e,t,n=!1){const r=e.children,s=t.children;if(Object(o["o"])(r)&&Object(o["o"])(s))for(let o=0;o>1,e[n[i]]0&&(t[o]=n[s-1]),n[s]=o)}}s=n.length,c=n[s-1];while(s-- >0)n[s]=c,c=t[c];return n}const Cn=e=>e.__isTeleport;const kn=Symbol();const Sn=Symbol(void 0),En=Symbol(void 0),Fn=Symbol(void 0),An=Symbol(void 0),Mn=[];let Tn=null;function Ln(e=!1){Mn.push(Tn=e?null:[])}function Pn(){Mn.pop(),Tn=Mn[Mn.length-1]||null}let Nn=1;function Rn(e){Nn+=e}function In(e){return e.dynamicChildren=Nn>0?Tn||o["a"]:null,Pn(),Nn>0&&Tn&&Tn.push(e),e}function Dn(e,t,n,o,r,s){return In(Hn(e,t,n,o,r,s,!0))}function Bn(e,t,n,o,r){return In(Kn(e,t,n,o,r,!0))}function Un(e){return!!e&&!0===e.__v_isVNode}function $n(e,t){return e.type===t.type&&e.key===t.key}const Vn="__vInternal",zn=({key:e})=>null!=e?e:null,Wn=({ref:e,ref_key:t,ref_for:n})=>null!=e?Object(o["D"])(e)||Re(e)||Object(o["p"])(e)?{i:He,r:e,k:t,f:!!n}:e:null;function Hn(e,t=null,n=null,r=0,s=null,c=(e===Sn?0:1),i=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zn(t),ref:t&&Wn(t),scopeId:Ke,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:c,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null};return l?(eo(u,n),128&c&&e.normalize(u)):n&&(u.shapeFlag|=Object(o["D"])(n)?8:16),Nn>0&&!i&&Tn&&(u.patchFlag>0||6&c)&&32!==u.patchFlag&&Tn.push(u),u}const Kn=qn;function qn(e,t=null,n=null,r=0,s=null,c=!1){if(e&&e!==kn||(e=Fn),Un(e)){const o=Jn(e,t,!0);return n&&eo(o,n),o}if(ko(e)&&(e=e.__vccOpts),t){t=Gn(t);let{class:e,style:n}=t;e&&!Object(o["D"])(e)&&(t.class=Object(o["I"])(e)),Object(o["v"])(n)&&(Fe(n)&&!Object(o["o"])(n)&&(n=Object(o["h"])({},n)),t.style=Object(o["J"])(n))}const i=Object(o["D"])(e)?1:tt(e)?128:Cn(e)?64:Object(o["v"])(e)?4:Object(o["p"])(e)?2:0;return Hn(e,t,n,r,s,i,c,!0)}function Gn(e){return e?Fe(e)||Vn in e?Object(o["h"])({},e):e:null}function Jn(e,t,n=!1){const{props:r,ref:s,patchFlag:c,children:i}=e,l=t?to(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&zn(l),ref:t&&t.ref?n&&s?Object(o["o"])(s)?s.concat(Wn(t)):[s,Wn(t)]:Wn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Sn?-1===c?16:16|c:c,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Jn(e.ssContent),ssFallback:e.ssFallback&&Jn(e.ssFallback),el:e.el,anchor:e.anchor};return u}function Xn(e=" ",t=0){return Kn(En,null,e,t)}function Zn(e="",t=!1){return t?(Ln(),Bn(Fn,null,e)):Kn(Fn,null,e)}function Qn(e){return null==e||"boolean"===typeof e?Kn(Fn):Object(o["o"])(e)?Kn(Sn,null,e.slice()):"object"===typeof e?Yn(e):Kn(En,null,String(e))}function Yn(e){return null===e.el||e.memo?e:Jn(e)}function eo(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(Object(o["o"])(t))n=16;else if("object"===typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),eo(e,n()),n._c&&(n._d=!0)))}{n=32;const o=t._;o||Vn in t?3===o&&He&&(1===He.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=He}}else Object(o["p"])(t)?(t={default:t,_ctx:He},n=32):(t=String(t),64&r?(n=16,t=[Xn(t)]):n=8);e.children=t,e.shapeFlag|=n}function to(...e){const t={};for(let n=0;ne?ho(e)?xo(e)||e.proxy:oo(e.parent):null,ro=Object(o["h"])(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=>oo(e.parent),$root:e=>oo(e.root),$emit:e=>e.emit,$options:e=>$t(e),$forceUpdate:e=>()=>Ko(e.update),$nextTick:e=>Wo.bind(e.proxy),$watch:e=>sr.bind(e)}),so={get({_:e},t){const{ctx:n,setupState:r,data:s,props:c,accessCache:i,type:l,appContext:u}=e;let a;if("$"!==t[0]){const l=i[t];if(void 0!==l)switch(l){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return c[t]}else{if(r!==o["b"]&&Object(o["k"])(r,t))return i[t]=1,r[t];if(s!==o["b"]&&Object(o["k"])(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Object(o["k"])(a,t))return i[t]=3,c[t];if(n!==o["b"]&&Object(o["k"])(n,t))return i[t]=4,n[t];Rt&&(i[t]=0)}}const f=ro[t];let p,d;return f?("$attrs"===t&&E(e,"get",t),f(e)):(p=l.__cssModules)&&(p=p[t])?p:n!==o["b"]&&Object(o["k"])(n,t)?(i[t]=4,n[t]):(d=u.config.globalProperties,Object(o["k"])(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:s,ctx:c}=e;if(s!==o["b"]&&Object(o["k"])(s,t))s[t]=n;else if(r!==o["b"]&&Object(o["k"])(r,t))r[t]=n;else if(Object(o["k"])(e.props,t))return!1;return("$"!==t[0]||!(t.slice(1)in e))&&(c[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:c}},i){let l;return!!n[i]||e!==o["b"]&&Object(o["k"])(e,i)||t!==o["b"]&&Object(o["k"])(t,i)||(l=c[0])&&Object(o["k"])(l,i)||Object(o["k"])(r,i)||Object(o["k"])(ro,i)||Object(o["k"])(s.config.globalProperties,i)}};const co=hn();let io=0;function lo(e,t,n){const r=e.type,s=(t?t.appContext:e.appContext)||co,i={uid:io++,vnode:e,type:r,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new c(!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:en(r,s),emitsOptions:ze(r,s),emit:null,emitted:null,propsDefaults:o["b"],inheritAttrs:r.inheritAttrs,ctx:o["b"],data:o["b"],props:o["b"],attrs:o["b"],slots:o["b"],refs:o["b"],setupState:o["b"],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 i.ctx={_:i},i.root=t?t.root:i,i.emit=Ve.bind(null,i),e.ce&&e.ce(i),i}let uo=null;const ao=()=>uo||He,fo=e=>{uo=e,e.scope.on()},po=()=>{uo&&uo.scope.off(),uo=null};function ho(e){return 4&e.vnode.shapeFlag}let bo,vo,go=!1;function mo(e,t=!1){go=t;const{props:n,children:o}=e.vnode,r=ho(e);Xt(e,n,r,t),fn(e,o);const s=r?Oo(e,t):void 0;return go=!1,s}function Oo(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Me(new Proxy(e.ctx,so));const{setup:r}=n;if(r){const n=e.setupContext=r.length>1?wo(e):null;fo(e),C();const s=So(r,e,0,[e.props,n]);if(S(),po(),Object(o["y"])(s)){if(s.then(po,po),t)return s.then(n=>{jo(e,n,t)}).catch(t=>{Fo(t,e,0)});e.asyncDep=s}else jo(e,s,t)}else yo(e,t)}function jo(e,t,n){Object(o["p"])(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Object(o["v"])(t)&&(e.setupState=Be(t)),yo(e,n)}function yo(e,t,n){const r=e.type;if(!e.render){if(!t&&bo&&!r.render){const t=r.template;if(t){0;const{isCustomElement:n,compilerOptions:s}=e.appContext.config,{delimiters:c,compilerOptions:i}=r,l=Object(o["h"])(Object(o["h"])({isCustomElement:n,delimiters:c},s),i);r.render=bo(t,l)}}e.render=r.render||o["d"],vo&&vo(e)}fo(e),C(),It(e),S(),po()}function _o(e){return new Proxy(e.attrs,{get(t,n){return E(e,"get","$attrs"),t[n]}})}function wo(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=_o(e))},slots:e.slots,emit:e.emit,expose:t}}function xo(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Be(Me(e.exposed)),{get(t,n){return n in t?t[n]:n in ro?ro[n](e):void 0}}))}function Co(e){return Object(o["p"])(e)&&e.displayName||e.name}function ko(e){return Object(o["p"])(e)&&"__vccOpts"in e}function So(e,t,n,o){let r;try{r=o?e(...o):e()}catch(s){Fo(s,t,n)}return r}function Eo(e,t,n,r){if(Object(o["p"])(e)){const s=So(e,t,n,r);return s&&Object(o["y"])(s)&&s.catch(e=>{Fo(e,t,n)}),s}const s=[];for(let o=0;o>>1,r=er(Lo[o]);rPo&&Lo.splice(t,1)}function Jo(e,t,n,r){Object(o["o"])(e)?n.push(...e):t&&t.includes(e,e.allowRecurse?r+1:r)||n.push(e),qo()}function Xo(e){Jo(e,Ro,No,Io)}function Zo(e){Jo(e,Bo,Do,Uo)}function Qo(e,t=null){if(No.length){for(zo=t,Ro=[...new Set(No)],No.length=0,Io=0;Ioer(e)-er(t)),Uo=0;Uonull==e.id?1/0:e.id;function tr(e){To=!1,Mo=!0,Qo(e),Lo.sort((e,t)=>er(e)-er(t));o["d"];try{for(Po=0;Poe.value,f=!!e._shallow):Se(e)?(u=()=>e,r=!0):Object(o["o"])(e)?(p=!0,f=e.some(Se),u=()=>e.map(e=>Re(e)?e.value:Se(e)?ir(e):Object(o["p"])(e)?So(e,l,2):void 0)):u=Object(o["p"])(e)?t?()=>So(e,l,2):()=>{if(!l||!l.isUnmounted)return a&&a(),Eo(e,l,3,[d])}:o["d"],t&&r){const e=u;u=()=>ir(e())}let d=e=>{a=g.onStop=()=>{So(e,l,4)}};if(go)return d=o["d"],t?n&&Eo(t,l,3,[u(),p?[]:void 0,d]):u(),o["d"];let h=p?[]:nr;const b=()=>{if(g.active)if(t){const e=g.run();(r||f||(p?e.some((e,t)=>Object(o["j"])(e,h[t])):Object(o["j"])(e,h)))&&(a&&a(),Eo(t,l,3,[e,h===nr?void 0:h,d]),h=e)}else g.run()};let v;b.allowRecurse=!!t,v="sync"===s?b:"post"===s?()=>On(b,l&&l.suspense):()=>{!l||l.isMounted?Xo(b):b()};const g=new y(u,v);return t?n?b():h=g.run():"post"===s?On(g.run.bind(g),l&&l.suspense):g.run(),()=>{g.stop(),l&&l.scope&&Object(o["K"])(l.scope.effects,g)}}function sr(e,t,n){const r=this.proxy,s=Object(o["D"])(e)?e.includes(".")?cr(r,e):()=>r[e]:e.bind(r,r);let c;Object(o["p"])(t)?c=t:(c=t.handler,n=t);const i=uo;fo(this);const l=rr(s,c.bind(r),n);return i?fo(i):po(),l}function cr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{ir(e,t)});else if(Object(o["x"])(e))for(const n in e)ir(e[n],t);return e}function lr(e,t,n){const r=arguments.length;return 2===r?Object(o["v"])(t)&&!Object(o["o"])(t)?Un(t)?Kn(e,null,[t]):Kn(e,t):Kn(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&Un(n)&&(n=[n]),Kn(e,t,n))}Symbol("");const ur="3.2.26",ar="http://www.w3.org/2000/svg",fr="undefined"!==typeof document?document:null,pr=new Map,dr={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 r=t?fr.createElementNS(ar,e):fr.createElement(e,n?{is:n}:void 0);return"select"===e&&o&&null!=o.multiple&&r.setAttribute("multiple",o.multiple),r},createText:e=>fr.createTextNode(e),createComment:e=>fr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>fr.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){const r=n?n.previousSibling:t.lastChild;let s=pr.get(e);if(!s){const t=fr.createElement("template");if(t.innerHTML=o?`${e}`:e,s=t.content,o){const e=s.firstChild;while(e.firstChild)s.appendChild(e.firstChild);s.removeChild(e)}pr.set(e,s)}return t.insertBefore(s.cloneNode(!0),n),[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function hr(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function br(e,t,n){const r=e.style,s=Object(o["D"])(n);if(n&&!s){for(const e in n)gr(r,e,n[e]);if(t&&!Object(o["D"])(t))for(const e in t)null==n[e]&&gr(r,e,"")}else{const o=r.display;s?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=o)}}const vr=/\s*!important$/;function gr(e,t,n){if(Object(o["o"])(n))n.forEach(n=>gr(e,t,n));else if(t.startsWith("--"))e.setProperty(t,n);else{const r=jr(e,t);vr.test(n)?e.setProperty(Object(o["l"])(r),n.replace(vr,""),"important"):e[r]=n}}const mr=["Webkit","Moz","ms"],Or={};function jr(e,t){const n=Or[t];if(n)return n;let r=Object(o["e"])(t);if("filter"!==r&&r in e)return Or[t]=r;r=Object(o["f"])(r);for(let o=0;odocument.createEvent("Event").timeStamp&&(xr=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);Cr=!!(e&&Number(e[1])<=53)}let kr=0;const Sr=Promise.resolve(),Er=()=>{kr=0},Fr=()=>kr||(Sr.then(Er),kr=xr());function Ar(e,t,n,o){e.addEventListener(t,n,o)}function Mr(e,t,n,o){e.removeEventListener(t,n,o)}function Tr(e,t,n,o,r=null){const s=e._vei||(e._vei={}),c=s[t];if(o&&c)c.value=o;else{const[n,i]=Pr(t);if(o){const c=s[t]=Nr(o,r);Ar(e,n,c,i)}else c&&(Mr(e,n,c,i),s[t]=void 0)}}const Lr=/(?:Once|Passive|Capture)$/;function Pr(e){let t;if(Lr.test(e)){let n;t={};while(n=e.match(Lr))e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Object(o["l"])(e.slice(2)),t]}function Nr(e,t){const n=e=>{const o=e.timeStamp||xr();(Cr||o>=n.attached-1)&&Eo(Rr(e,n.value),t,5,[e])};return n.value=e,n.attached=Fr(),n}function Rr(e,t){if(Object(o["o"])(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e(t))}return t}const Ir=/^on[a-z]/,Dr=(e,t,n,r,s=!1,c,i,l,u)=>{"class"===t?hr(e,r,s):"style"===t?br(e,n,r):Object(o["w"])(t)?Object(o["u"])(t)||Tr(e,t,n,r,i):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):Br(e,t,r,s))?wr(e,t,r,c,i,l,u):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),_r(e,t,r,s))};function Br(e,t,n,r){return r?"innerHTML"===t||"textContent"===t||!!(t in e&&Ir.test(t)&&Object(o["p"])(n)):"spellcheck"!==t&&"draggable"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!Ir.test(t)||!Object(o["D"])(n))&&t in e))))}"undefined"!==typeof HTMLElement&&HTMLElement;const Ur="transition",$r="animation",Vr=(e,{slots:t})=>lr(lt,Kr(e),t);Vr.displayName="Transition";const zr={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},Wr=(Vr.props=Object(o["h"])({},lt.props,zr),(e,t=[])=>{Object(o["o"])(e)?e.forEach(e=>e(...t)):e&&e(...t)}),Hr=e=>!!e&&(Object(o["o"])(e)?e.some(e=>e.length>1):e.length>1);function Kr(e){const t={};for(const o in e)o in zr||(t[o]=e[o]);if(!1===e.css)return t;const{name:n="v",type:r,duration:s,enterFromClass:c=n+"-enter-from",enterActiveClass:i=n+"-enter-active",enterToClass:l=n+"-enter-to",appearFromClass:u=c,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:p=n+"-leave-from",leaveActiveClass:d=n+"-leave-active",leaveToClass:h=n+"-leave-to"}=e,b=qr(s),v=b&&b[0],g=b&&b[1],{onBeforeEnter:m,onEnter:O,onEnterCancelled:j,onLeave:y,onLeaveCancelled:_,onBeforeAppear:w=m,onAppear:x=O,onAppearCancelled:C=j}=t,k=(e,t,n)=>{Xr(e,t?f:l),Xr(e,t?a:i),n&&n()},S=(e,t)=>{Xr(e,h),Xr(e,d),t&&t()},E=e=>(t,n)=>{const o=e?x:O,s=()=>k(t,e,n);Wr(o,[t,s]),Zr(()=>{Xr(t,e?u:c),Jr(t,e?f:l),Hr(o)||Yr(t,r,v,s)})};return Object(o["h"])(t,{onBeforeEnter(e){Wr(m,[e]),Jr(e,c),Jr(e,i)},onBeforeAppear(e){Wr(w,[e]),Jr(e,u),Jr(e,a)},onEnter:E(!1),onAppear:E(!0),onLeave(e,t){const n=()=>S(e,t);Jr(e,p),os(),Jr(e,d),Zr(()=>{Xr(e,p),Jr(e,h),Hr(y)||Yr(e,r,g,n)}),Wr(y,[e,n])},onEnterCancelled(e){k(e,!1),Wr(j,[e])},onAppearCancelled(e){k(e,!0),Wr(C,[e])},onLeaveCancelled(e){S(e),Wr(_,[e])}})}function qr(e){if(null==e)return null;if(Object(o["v"])(e))return[Gr(e.enter),Gr(e.leave)];{const t=Gr(e);return[t,t]}}function Gr(e){const t=Object(o["N"])(e);return t}function Jr(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(t)}function Xr(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Zr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Qr=0;function Yr(e,t,n,o){const r=e._endId=++Qr,s=()=>{r===e._endId&&o()};if(n)return setTimeout(s,n);const{type:c,timeout:i,propCount:l}=es(e,t);if(!c)return o();const u=c+"end";let a=0;const f=()=>{e.removeEventListener(u,p),s()},p=t=>{t.target===e&&++a>=l&&f()};setTimeout(()=>{a(n[e]||"").split(", "),r=o(Ur+"Delay"),s=o(Ur+"Duration"),c=ts(r,s),i=o($r+"Delay"),l=o($r+"Duration"),u=ts(i,l);let a=null,f=0,p=0;t===Ur?c>0&&(a=Ur,f=c,p=s.length):t===$r?u>0&&(a=$r,f=u,p=l.length):(f=Math.max(c,u),a=f>0?c>u?Ur:$r:null,p=a?a===Ur?s.length:l.length:0);const d=a===Ur&&/\b(transform|all)(,|$)/.test(n[Ur+"Property"]);return{type:a,timeout:f,propCount:p,hasTransform:d}}function ts(e,t){while(e.lengthns(t)+ns(e[n])))}function ns(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function os(){return document.body.offsetHeight}new WeakMap,new WeakMap;const rs=Object(o["h"])({patchProp:Dr},dr);let ss;function cs(){return ss||(ss=jn(rs))}const is=(...e)=>{const t=cs().createApp(...e);const{mount:n}=t;return t.mount=e=>{const r=ls(e);if(!r)return;const s=t._component;Object(o["p"])(s)||s.render||s.template||(s.template=r.innerHTML),r.innerHTML="";const c=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),c},t};function ls(e){if(Object(o["D"])(e)){const t=document.querySelector(e);return t}return e}},"85dd":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n}},d8fc:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(o){"object"===typeof window&&(n=window)}e.exports=n},e99b:function(e,t,n){"use strict";(function(e){function o(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,"a",(function(){return x})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return k})),n.d(t,"d",(function(){return C})),n.d(t,"e",(function(){return Z})),n.d(t,"f",(function(){return ee})),n.d(t,"g",(function(){return re})),n.d(t,"h",(function(){return A})),n.d(t,"i",(function(){return ie})),n.d(t,"j",(function(){return ne})),n.d(t,"k",(function(){return L})),n.d(t,"l",(function(){return Y})),n.d(t,"m",(function(){return l})),n.d(t,"n",(function(){return oe})),n.d(t,"o",(function(){return P})),n.d(t,"p",(function(){return D})),n.d(t,"q",(function(){return s})),n.d(t,"r",(function(){return v})),n.d(t,"s",(function(){return q})),n.d(t,"t",(function(){return N})),n.d(t,"u",(function(){return F})),n.d(t,"v",(function(){return $})),n.d(t,"w",(function(){return E})),n.d(t,"x",(function(){return K})),n.d(t,"y",(function(){return V})),n.d(t,"z",(function(){return G})),n.d(t,"A",(function(){return g})),n.d(t,"B",(function(){return R})),n.d(t,"C",(function(){return i})),n.d(t,"D",(function(){return B})),n.d(t,"E",(function(){return U})),n.d(t,"F",(function(){return O})),n.d(t,"G",(function(){return j})),n.d(t,"H",(function(){return o})),n.d(t,"I",(function(){return d})),n.d(t,"J",(function(){return u})),n.d(t,"K",(function(){return M})),n.d(t,"L",(function(){return y})),n.d(t,"M",(function(){return te})),n.d(t,"N",(function(){return se})),n.d(t,"O",(function(){return H}));const r="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",s=o(r);const c="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",i=o(c);function l(e){return!!e||""===e}function u(e){if(P(e)){const t={};for(let n=0;n{if(e){const n=e.split(f);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function d(e){let t="";if(B(e))t=e;else if(P(e))for(let n=0;nO(e,t))}const y=e=>null==e?"":P(e)||$(e)&&(e.toString===z||!D(e.toString))?JSON.stringify(e,_,2):String(e),_=(e,t)=>t&&t.__v_isRef?_(e,t.value):N(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n])=>(e[t+" =>"]=n,e),{})}:R(t)?{[`Set(${t.size})`]:[...t.values()]}:!$(t)||P(t)||K(t)?t:String(t),w={},x=[],C=()=>{},k=()=>!1,S=/^on[^a-z]/,E=e=>S.test(e),F=e=>e.startsWith("onUpdate:"),A=Object.assign,M=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},T=Object.prototype.hasOwnProperty,L=(e,t)=>T.call(e,t),P=Array.isArray,N=e=>"[object Map]"===W(e),R=e=>"[object Set]"===W(e),I=e=>e instanceof Date,D=e=>"function"===typeof e,B=e=>"string"===typeof e,U=e=>"symbol"===typeof e,$=e=>null!==e&&"object"===typeof e,V=e=>$(e)&&D(e.then)&&D(e.catch),z=Object.prototype.toString,W=e=>z.call(e),H=e=>W(e).slice(8,-1),K=e=>"[object Object]"===W(e),q=e=>B(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,G=o(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),J=e=>{const t=Object.create(null);return n=>{const o=t[n];return o||(t[n]=e(n))}},X=/-(\w)/g,Z=J(e=>e.replace(X,(e,t)=>t?t.toUpperCase():"")),Q=/\B([A-Z])/g,Y=J(e=>e.replace(Q,"-$1").toLowerCase()),ee=J(e=>e.charAt(0).toUpperCase()+e.slice(1)),te=J(e=>e?"on"+ee(e):""),ne=(e,t)=>!Object.is(e,t),oe=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},se=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ce;const ie=()=>ce||(ce="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof e?e:{})}).call(this,n("d8fc"))}}]); -//# sourceMappingURL=chunk-vendors.js.map \ No newline at end of file diff --git a/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js.map b/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js.map deleted file mode 100644 index 83f8c676d..000000000 --- a/server-data/resources/[phone]/pma-voice/ui/js/chunk-vendors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/.pnpm/@vue+reactivity@3.2.26/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack:///./node_modules/.pnpm/@vue+runtime-core@3.2.26/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack:///./node_modules/.pnpm/@vue+runtime-dom@3.2.26/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack:///./node_modules/.pnpm/vue-loader@16.8.3_webpack@4.46.0/node_modules/vue-loader/dist/exportHelper.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/.pnpm/@vue+shared@3.2.26/node_modules/@vue/shared/dist/shared.esm-bundler.js"],"names":["activeEffectScope","effectScopeStack","EffectScope","detached","this","active","effects","cleanups","parent","index","scopes","push","fn","on","off","pop","length","fromParent","forEach","e","stop","cleanup","last","recordEffectScope","effect","scope","createDep","dep","Set","w","n","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","i","finalizeDepMarkers","ptr","delete","targetMap","WeakMap","effectTrackDepth","maxMarkerBits","effectStack","activeEffect","ITERATE_KEY","Symbol","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","includes","enableTracking","cleanupEffect","resetTracking","undefined","onStop","shouldTrack","trackStack","pauseTracking","track","target","type","key","isTracking","depsMap","get","set","Map","eventInfo","trackEffects","debuggerEventExtraInfo","has","add","trigger","newValue","oldValue","oldTarget","values","triggerEffects","allowRecurse","run","isNonTrackableKeys","builtInSymbols","Object","getOwnPropertyNames","map","filter","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","arr","toRaw","l","res","apply","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","shouldUnwrap","value","readonly","reactive","createSetter","shallowSet","hadKey","Number","result","deleteProperty","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","v","getPrototypeOf","get$1","isShallow","rawTarget","rawKey","wrap","toReadonly","toReactive","call","has$1","size","proto","set$1","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","done","next","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","iteratorMethods","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","Proxy","isReactive","isProxy","raw","markRaw","trackRefValue","ref","triggerRefValue","newVal","r","Boolean","__v_isRef","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","ComputedRefImpl","getter","_setter","_dirty","self","_value","getterOrOptions","debugOptions","setter","onlyGetter","cRef","Promise","resolve","emit$1","instance","event","rawArgs","props","vnode","isModelListener","startsWith","modelArg","slice","modifiersKey","number","trim","a","handlerName","handler","callWithAsyncErrorHandling","onceHandler","emitted","normalizeEmitsOptions","comp","appContext","asMixin","cache","emitsCache","cached","emits","normalized","hasExtends","extendEmits","normalizedFromExtend","mixins","extends","isEmitListener","options","replace","toLowerCase","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","renderComponentRoot","Component","withProxy","propsOptions","slots","attrs","emit","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","err","blockStack","handleError","createVNode","Comment","root","keys","some","filterModelListeners","cloneVNode","dirs","concat","transition","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","children","prevChildren","component","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","dynamicProps","nextKeys","updateHOCHostEl","el","subTree","isSuspense","__isSuspense","queueEffectWithSuspense","suspense","pendingBranch","queuePostFlushCb","provide","currentInstance","provides","parentProvides","create","inject","defaultValue","treatDefaultAsFactory","arguments","useTransitionState","state","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","Array","BaseTransitionImpl","name","mode","String","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","default","getTransitionRawChildren","rawProps","child","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","afterLeave","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","_leaveCb","BaseTransition","callHook","hook","hooks","leavingVNode","afterHook","cancelHook","called","_enterCb","cancelled","remove","isKeepAlive","ssContent","clone","ssFallback","keepComment","ret","keyedFragmentCount","Fragment","isAsyncWrapper","__asyncLoader","__isKeepAlive","RegExp","matches","pattern","p","split","indexOf","test","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","current","isDeactivated","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","resetShapeFlag","getInnerChild","prepend","__weh","isUnmounted","setCurrentInstance","unsetCurrentInstance","unshift","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onBeforeUpdate","onUpdated","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","shouldCacheAccess","applyOptions","resolveMergedOptions","publicThis","beforeCreate","dataOptions","computed","computedOptions","methods","watch","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","directives","filters","checkDuplicateProperties","resolveInjections","config","unwrapInjectedRef","methodHandler","bind","opt","c","defineProperty","enumerable","configurable","createWatcher","registerLifecycleHook","register","_hook","exposed","val","unwrapRef","normalizeInject","from","h","createPathGetter","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","m","mergeOptions","to","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","initProps","isStateful","isSSR","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","toString","isSameType","b","expectedTypes","findIndex","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","_","updateSlots","needDeletionCheck","deletionComparisonTarget","invokeDirectiveHook","bindings","oldBindings","binding","dir","createAppContext","app","isNativeTag","performance","globalProperties","errorHandler","warnHandler","compilerOptions","uid","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","_uid","_component","_props","_container","_context","_instance","version","plugin","install","mixin","directive","rootContainer","isHydrate","isSVG","__vue_app__","getExposeProxy","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","callWithErrorHandling","_isString","_isRef","doSet","f","existing","k","id","queuePostRenderEffect","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationFns","__VUE__","insert","hostInsert","hostRemove","patchProp","hostPatchProp","createElement","hostCreateElement","createText","hostCreateText","createComment","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","parentNode","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","cloneNode","hostCloneNode","insertStaticContent","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","dynamicChildren","getNextHostNode","unmount","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","process","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","vnodeHook","is","mountChildren","unmountChildren","onVnodeBeforeMount","invokeVNodeHook","scopeId","needCallTransitionHooks","beforeEnter","onVnodeMounted","enter","parentVNode","start","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","class","style","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","activate","mountComponent","updateComponent","initialVNode","createComponentInstance","renderer","setupComponent","asyncDep","registerDep","setupRenderEffect","placeholder","asyncResolved","updateComponentPreRender","invalidateJob","componentUpdateFn","bu","u","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","then","scopedInitialVNode","queueJob","flushPreFlushCbs","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","Math","min","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","needTransition","leave","performLeave","doRemove","deactivate","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","onVnodeUnmounted","removeFragment","performRemove","cur","end","bum","um","suspenseId","pendingId","_vnode","flushPostFlushCbs","mt","mc","pc","pbc","o","createApp","allowed","ch1","ch2","len","arrI","isTeleport","__isTeleport","NULL_DYNAMIC_COMPONENT","currentBlock","openBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","createBlock","isVNode","__v_isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","targetAnchor","staticCount","normalizeChildren","normalize","_createVNode","cloned","isClassComponent","__vccOpts","guardReactiveProps","klass","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","text","flag","createCommentVNode","asBlock","memo","slot","slotFlag","toMerge","incoming","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","$slots","$refs","$parent","$root","$emit","$options","$forceUpdate","$nextTick","nextTick","$watch","instanceWatch","PublicInstanceProxyHandlers","accessCache","normalizedProps","publicGetter","cssModule","__cssModules","emptyAppContext","uid$1","exposeProxy","setupContext","bc","da","rtg","rtc","ec","sp","ce","compile","installWithProxy","setupResult","setupStatefulComponent","setup","createSetupContext","resolvedResult","handleSetupResult","catch","finishComponentSetup","__ssrInlineRender","ssrRender","skipOptions","template","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","createAttrsProxy","getComponentName","displayName","throwInDev","contextVNode","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","console","error","isFlushing","isFlushPending","flushIndex","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","currentPreFlushParentJob","findInsertionIndex","middle","middleJobId","getId","job","splice","queueFlush","flushJobs","queueCb","cb","activeQueue","pendingQueue","queuePreFlushCb","seen","parentJob","deduped","sort","Infinity","INITIAL_WATCHER_VALUE","source","doWatch","immediate","deep","flush","onTrack","onTrigger","forceTrigger","isMultiSource","_shallow","s","traverse","onInvalidate","baseGetter","path","segments","propsOrChildren","prototype","svgNS","doc","document","staticTemplateCache","nodeOps","insertBefore","removeChild","tag","createElementNS","multiple","setAttribute","createTextNode","node","nodeValue","textContent","querySelector","selector","content","before","previousSibling","lastChild","innerHTML","wrapper","firstChild","appendChild","patchClass","transitionClasses","_vtc","join","removeAttribute","className","patchStyle","isCssString","setStyle","currentDisplay","display","cssText","importantRE","setProperty","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","isBoolean","patchDOMProp","tagName","_a","_getNow","Date","now","skipTimestampCheck","window","createEvent","timeStamp","ffMatch","navigator","userAgent","cachedNow","getNow","addEventListener","removeEventListener","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","initialValue","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","nativeOnRE","shouldSetAsProp","_trueValue","_falseValue","HTMLElement","TRANSITION","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","css","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","classList","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","setTimeout","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","styles","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","max","hasTransform","delays","d","toMs","body","offsetHeight","rendererOptions","ensureRenderer","mount","containerOrSelector","normalizeContainer","SVGElement","Element","exports","sfc","g","module","makeMap","str","expectsLowerCase","list","GLOBALS_WHITE_LISTED","isGloballyWhitelisted","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","normalizeStyle","isArray","item","isString","parseStringStyle","isObject","listDelimiterRE","propertyDelimiterRE","tmp","normalizeClass","HTML_TAGS","SVG_TAGS","isHTMLTag","isSVGTag","looseCompareArrays","equal","looseEqual","aValidType","isDate","bValidType","getTime","aKeysCount","bKeysCount","aHasKey","hasOwnProperty","bHasKey","looseIndexOf","toDisplayString","objectToString","isFunction","JSON","stringify","replacer","_key","isMap","entries","reduce","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","extend","assign","hasOwn","toTypeString","isSymbol","isPromise","toRawType","isIntegerKey","parseInt","isReservedProp","cacheStringFunction","hit","camelizeRE","camelize","toUpperCase","hyphenateRE","hyphenate","capitalize","charAt","toHandlerKey","hasChanged","invokeArrayFns","fns","arg","def","obj","toNumber","parseFloat","isNaN","_globalThis","getGlobalThis","globalThis","global"],"mappings":"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","file":"js/chunk-vendors.js","sourcesContent":["import { extend, isArray, isMap, isIntegerKey, isSymbol, hasOwn, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\r\n console.warn(`[Vue warn] ${msg}`, ...args);\r\n}\n\nlet activeEffectScope;\r\nconst effectScopeStack = [];\r\nclass EffectScope {\r\n constructor(detached = false) {\r\n this.active = true;\r\n this.effects = [];\r\n this.cleanups = [];\r\n if (!detached && activeEffectScope) {\r\n this.parent = activeEffectScope;\r\n this.index =\r\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\r\n }\r\n }\r\n run(fn) {\r\n if (this.active) {\r\n try {\r\n this.on();\r\n return fn();\r\n }\r\n finally {\r\n this.off();\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`cannot run an inactive effect scope.`);\r\n }\r\n }\r\n on() {\r\n if (this.active) {\r\n effectScopeStack.push(this);\r\n activeEffectScope = this;\r\n }\r\n }\r\n off() {\r\n if (this.active) {\r\n effectScopeStack.pop();\r\n activeEffectScope = effectScopeStack[effectScopeStack.length - 1];\r\n }\r\n }\r\n stop(fromParent) {\r\n if (this.active) {\r\n this.effects.forEach(e => e.stop());\r\n this.cleanups.forEach(cleanup => cleanup());\r\n if (this.scopes) {\r\n this.scopes.forEach(e => e.stop(true));\r\n }\r\n // nested scope, dereference from parent to avoid memory leaks\r\n if (this.parent && !fromParent) {\r\n // optimized O(1) removal\r\n const last = this.parent.scopes.pop();\r\n if (last && last !== this) {\r\n this.parent.scopes[this.index] = last;\r\n last.index = this.index;\r\n }\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\nfunction recordEffectScope(effect, scope) {\r\n scope = scope || activeEffectScope;\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n }\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`onScopeDispose() is called when there is no active effect scope` +\r\n ` to be associated with.`);\r\n }\r\n}\n\nconst createDep = (effects) => {\r\n const dep = new Set(effects);\r\n dep.w = 0;\r\n dep.n = 0;\r\n return dep;\r\n};\r\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\r\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\r\nconst initDepMarkers = ({ deps }) => {\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].w |= trackOpBit; // set was tracked\r\n }\r\n }\r\n};\r\nconst finalizeDepMarkers = (effect) => {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n let ptr = 0;\r\n for (let i = 0; i < deps.length; i++) {\r\n const dep = deps[i];\r\n if (wasTracked(dep) && !newTracked(dep)) {\r\n dep.delete(effect);\r\n }\r\n else {\r\n deps[ptr++] = dep;\r\n }\r\n // clear bits\r\n dep.w &= ~trackOpBit;\r\n dep.n &= ~trackOpBit;\r\n }\r\n deps.length = ptr;\r\n }\r\n};\n\nconst targetMap = new WeakMap();\r\n// The number of effects currently being tracked recursively.\r\nlet effectTrackDepth = 0;\r\nlet trackOpBit = 1;\r\n/**\r\n * The bitwise track markers support at most 30 levels of recursion.\r\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\r\n * When recursion depth is greater, fall back to using a full cleanup.\r\n */\r\nconst maxMarkerBits = 30;\r\nconst effectStack = [];\r\nlet activeEffect;\r\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\r\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\r\nclass ReactiveEffect {\r\n constructor(fn, scheduler = null, scope) {\r\n this.fn = fn;\r\n this.scheduler = scheduler;\r\n this.active = true;\r\n this.deps = [];\r\n recordEffectScope(this, scope);\r\n }\r\n run() {\r\n if (!this.active) {\r\n return this.fn();\r\n }\r\n if (!effectStack.includes(this)) {\r\n try {\r\n effectStack.push((activeEffect = this));\r\n enableTracking();\r\n trackOpBit = 1 << ++effectTrackDepth;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n initDepMarkers(this);\r\n }\r\n else {\r\n cleanupEffect(this);\r\n }\r\n return this.fn();\r\n }\r\n finally {\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n finalizeDepMarkers(this);\r\n }\r\n trackOpBit = 1 << --effectTrackDepth;\r\n resetTracking();\r\n effectStack.pop();\r\n const n = effectStack.length;\r\n activeEffect = n > 0 ? effectStack[n - 1] : undefined;\r\n }\r\n }\r\n }\r\n stop() {\r\n if (this.active) {\r\n cleanupEffect(this);\r\n if (this.onStop) {\r\n this.onStop();\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction cleanupEffect(effect) {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].delete(effect);\r\n }\r\n deps.length = 0;\r\n }\r\n}\r\nfunction effect(fn, options) {\r\n if (fn.effect) {\r\n fn = fn.effect.fn;\r\n }\r\n const _effect = new ReactiveEffect(fn);\r\n if (options) {\r\n extend(_effect, options);\r\n if (options.scope)\r\n recordEffectScope(_effect, options.scope);\r\n }\r\n if (!options || !options.lazy) {\r\n _effect.run();\r\n }\r\n const runner = _effect.run.bind(_effect);\r\n runner.effect = _effect;\r\n return runner;\r\n}\r\nfunction stop(runner) {\r\n runner.effect.stop();\r\n}\r\nlet shouldTrack = true;\r\nconst trackStack = [];\r\nfunction pauseTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = false;\r\n}\r\nfunction enableTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = true;\r\n}\r\nfunction resetTracking() {\r\n const last = trackStack.pop();\r\n shouldTrack = last === undefined ? true : last;\r\n}\r\nfunction track(target, type, key) {\r\n if (!isTracking()) {\r\n return;\r\n }\r\n let depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n targetMap.set(target, (depsMap = new Map()));\r\n }\r\n let dep = depsMap.get(key);\r\n if (!dep) {\r\n depsMap.set(key, (dep = createDep()));\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { effect: activeEffect, target, type, key }\r\n : undefined;\r\n trackEffects(dep, eventInfo);\r\n}\r\nfunction isTracking() {\r\n return shouldTrack && activeEffect !== undefined;\r\n}\r\nfunction trackEffects(dep, debuggerEventExtraInfo) {\r\n let shouldTrack = false;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n if (!newTracked(dep)) {\r\n dep.n |= trackOpBit; // set newly tracked\r\n shouldTrack = !wasTracked(dep);\r\n }\r\n }\r\n else {\r\n // Full cleanup mode.\r\n shouldTrack = !dep.has(activeEffect);\r\n }\r\n if (shouldTrack) {\r\n dep.add(activeEffect);\r\n activeEffect.deps.push(dep);\r\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\r\n activeEffect.onTrack(Object.assign({\r\n effect: activeEffect\r\n }, debuggerEventExtraInfo));\r\n }\r\n }\r\n}\r\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\r\n const depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n // never been tracked\r\n return;\r\n }\r\n let deps = [];\r\n if (type === \"clear\" /* CLEAR */) {\r\n // collection being cleared\r\n // trigger all effects for target\r\n deps = [...depsMap.values()];\r\n }\r\n else if (key === 'length' && isArray(target)) {\r\n depsMap.forEach((dep, key) => {\r\n if (key === 'length' || key >= newValue) {\r\n deps.push(dep);\r\n }\r\n });\r\n }\r\n else {\r\n // schedule runs for SET | ADD | DELETE\r\n if (key !== void 0) {\r\n deps.push(depsMap.get(key));\r\n }\r\n // also run for iteration key on ADD | DELETE | Map.SET\r\n switch (type) {\r\n case \"add\" /* ADD */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n else if (isIntegerKey(key)) {\r\n // new index added to array -> length changes\r\n deps.push(depsMap.get('length'));\r\n }\r\n break;\r\n case \"delete\" /* DELETE */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n break;\r\n case \"set\" /* SET */:\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n }\r\n break;\r\n }\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { target, type, key, newValue, oldValue, oldTarget }\r\n : undefined;\r\n if (deps.length === 1) {\r\n if (deps[0]) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(deps[0], eventInfo);\r\n }\r\n else {\r\n triggerEffects(deps[0]);\r\n }\r\n }\r\n }\r\n else {\r\n const effects = [];\r\n for (const dep of deps) {\r\n if (dep) {\r\n effects.push(...dep);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(createDep(effects), eventInfo);\r\n }\r\n else {\r\n triggerEffects(createDep(effects));\r\n }\r\n }\r\n}\r\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\r\n // spread into array for stabilization\r\n for (const effect of isArray(dep) ? dep : [...dep]) {\r\n if (effect !== activeEffect || effect.allowRecurse) {\r\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\r\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\r\n }\r\n if (effect.scheduler) {\r\n effect.scheduler();\r\n }\r\n else {\r\n effect.run();\r\n }\r\n }\r\n }\r\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\r\nconst builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol)\r\n .map(key => Symbol[key])\r\n .filter(isSymbol));\r\nconst get = /*#__PURE__*/ createGetter();\r\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\r\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\r\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\r\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\r\nfunction createArrayInstrumentations() {\r\n const instrumentations = {};\r\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n const arr = toRaw(this);\r\n for (let i = 0, l = this.length; i < l; i++) {\r\n track(arr, \"get\" /* GET */, i + '');\r\n }\r\n // we run the method using the original args first (which may be reactive)\r\n const res = arr[key](...args);\r\n if (res === -1 || res === false) {\r\n // if that didn't work, run it again using raw values.\r\n return arr[key](...args.map(toRaw));\r\n }\r\n else {\r\n return res;\r\n }\r\n };\r\n });\r\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n pauseTracking();\r\n const res = toRaw(this)[key].apply(this, args);\r\n resetTracking();\r\n return res;\r\n };\r\n });\r\n return instrumentations;\r\n}\r\nfunction createGetter(isReadonly = false, shallow = false) {\r\n return function get(target, key, receiver) {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */ &&\r\n receiver ===\r\n (isReadonly\r\n ? shallow\r\n ? shallowReadonlyMap\r\n : readonlyMap\r\n : shallow\r\n ? shallowReactiveMap\r\n : reactiveMap).get(target)) {\r\n return target;\r\n }\r\n const targetIsArray = isArray(target);\r\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\r\n return Reflect.get(arrayInstrumentations, key, receiver);\r\n }\r\n const res = Reflect.get(target, key, receiver);\r\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\r\n return res;\r\n }\r\n if (!isReadonly) {\r\n track(target, \"get\" /* GET */, key);\r\n }\r\n if (shallow) {\r\n return res;\r\n }\r\n if (isRef(res)) {\r\n // ref unwrapping - does not apply for Array + integer key.\r\n const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\r\n return shouldUnwrap ? res.value : res;\r\n }\r\n if (isObject(res)) {\r\n // Convert returned value into a proxy as well. we do the isObject check\r\n // here to avoid invalid value warning. Also need to lazy access readonly\r\n // and reactive here to avoid circular dependency.\r\n return isReadonly ? readonly(res) : reactive(res);\r\n }\r\n return res;\r\n };\r\n}\r\nconst set = /*#__PURE__*/ createSetter();\r\nconst shallowSet = /*#__PURE__*/ createSetter(true);\r\nfunction createSetter(shallow = false) {\r\n return function set(target, key, value, receiver) {\r\n let oldValue = target[key];\r\n if (!shallow && !isReadonly(value)) {\r\n value = toRaw(value);\r\n oldValue = toRaw(oldValue);\r\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n }\r\n const hadKey = isArray(target) && isIntegerKey(key)\r\n ? Number(key) < target.length\r\n : hasOwn(target, key);\r\n const result = Reflect.set(target, key, value, receiver);\r\n // don't trigger if target is something up in the prototype chain of original\r\n if (target === toRaw(receiver)) {\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nfunction deleteProperty(target, key) {\r\n const hadKey = hasOwn(target, key);\r\n const oldValue = target[key];\r\n const result = Reflect.deleteProperty(target, key);\r\n if (result && hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction has(target, key) {\r\n const result = Reflect.has(target, key);\r\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\r\n track(target, \"has\" /* HAS */, key);\r\n }\r\n return result;\r\n}\r\nfunction ownKeys(target) {\r\n track(target, \"iterate\" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\r\n return Reflect.ownKeys(target);\r\n}\r\nconst mutableHandlers = {\r\n get,\r\n set,\r\n deleteProperty,\r\n has,\r\n ownKeys\r\n};\r\nconst readonlyHandlers = {\r\n get: readonlyGet,\r\n set(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n }\r\n};\r\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\r\n get: shallowGet,\r\n set: shallowSet\r\n});\r\n// Props handlers are special in the sense that it should not unwrap top-level\r\n// refs (in order to allow refs to be explicitly passed down), but should\r\n// retain the reactivity of the normal readonly object.\r\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\r\n get: shallowReadonlyGet\r\n});\n\nconst toShallow = (value) => value;\r\nconst getProto = (v) => Reflect.getPrototypeOf(v);\r\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\r\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\r\n // of the value\r\n target = target[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, rawKey);\r\n const { has } = getProto(rawTarget);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n if (has.call(rawTarget, key)) {\r\n return wrap(target.get(key));\r\n }\r\n else if (has.call(rawTarget, rawKey)) {\r\n return wrap(target.get(rawKey));\r\n }\r\n else if (target !== rawTarget) {\r\n // #3602 readonly(reactive(Map))\r\n // ensure that the nested reactive `Map` can do tracking for itself\r\n target.get(key);\r\n }\r\n}\r\nfunction has$1(key, isReadonly = false) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, rawKey);\r\n return key === rawKey\r\n ? target.has(key)\r\n : target.has(key) || target.has(rawKey);\r\n}\r\nfunction size(target, isReadonly = false) {\r\n target = target[\"__v_raw\" /* RAW */];\r\n !isReadonly && track(toRaw(target), \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return Reflect.get(target, 'size', target);\r\n}\r\nfunction add(value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const proto = getProto(target);\r\n const hadKey = proto.has.call(target, value);\r\n if (!hadKey) {\r\n target.add(value);\r\n trigger(target, \"add\" /* ADD */, value, value);\r\n }\r\n return this;\r\n}\r\nfunction set$1(key, value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get.call(target, key);\r\n target.set(key, value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n return this;\r\n}\r\nfunction deleteEntry(key) {\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get ? get.call(target, key) : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.delete(key);\r\n if (hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction clear() {\r\n const target = toRaw(this);\r\n const hadItems = target.size !== 0;\r\n const oldTarget = (process.env.NODE_ENV !== 'production')\r\n ? isMap(target)\r\n ? new Map(target)\r\n : new Set(target)\r\n : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.clear();\r\n if (hadItems) {\r\n trigger(target, \"clear\" /* CLEAR */, undefined, undefined, oldTarget);\r\n }\r\n return result;\r\n}\r\nfunction createForEach(isReadonly, isShallow) {\r\n return function forEach(callback, thisArg) {\r\n const observed = this;\r\n const target = observed[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly && track(rawTarget, \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return target.forEach((value, key) => {\r\n // important: make sure the callback is\r\n // 1. invoked with the reactive map as `this` and 3rd arg\r\n // 2. the value received should be a corresponding reactive/readonly.\r\n return callback.call(thisArg, wrap(value), wrap(key), observed);\r\n });\r\n };\r\n}\r\nfunction createIterableMethod(method, isReadonly, isShallow) {\r\n return function (...args) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const targetIsMap = isMap(rawTarget);\r\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\r\n const isKeyOnly = method === 'keys' && targetIsMap;\r\n const innerIterator = target[method](...args);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly &&\r\n track(rawTarget, \"iterate\" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\r\n // return a wrapped iterator which returns observed versions of the\r\n // values emitted from the real iterator\r\n return {\r\n // iterator protocol\r\n next() {\r\n const { value, done } = innerIterator.next();\r\n return done\r\n ? { value, done }\r\n : {\r\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\r\n done\r\n };\r\n },\r\n // iterable protocol\r\n [Symbol.iterator]() {\r\n return this;\r\n }\r\n };\r\n };\r\n}\r\nfunction createReadonlyMethod(type) {\r\n return function (...args) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\r\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\r\n }\r\n return type === \"delete\" /* DELETE */ ? false : this;\r\n };\r\n}\r\nfunction createInstrumentations() {\r\n const mutableInstrumentations = {\r\n get(key) {\r\n return get$1(this, key);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, false)\r\n };\r\n const shallowInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, false, true);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, true)\r\n };\r\n const readonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, false)\r\n };\r\n const shallowReadonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, true)\r\n };\r\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\r\n iteratorMethods.forEach(method => {\r\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\r\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\r\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\r\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\r\n });\r\n return [\r\n mutableInstrumentations,\r\n readonlyInstrumentations,\r\n shallowInstrumentations,\r\n shallowReadonlyInstrumentations\r\n ];\r\n}\r\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\r\nfunction createInstrumentationGetter(isReadonly, shallow) {\r\n const instrumentations = shallow\r\n ? isReadonly\r\n ? shallowReadonlyInstrumentations\r\n : shallowInstrumentations\r\n : isReadonly\r\n ? readonlyInstrumentations\r\n : mutableInstrumentations;\r\n return (target, key, receiver) => {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */) {\r\n return target;\r\n }\r\n return Reflect.get(hasOwn(instrumentations, key) && key in target\r\n ? instrumentations\r\n : target, key, receiver);\r\n };\r\n}\r\nconst mutableCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\r\n};\r\nconst shallowCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\r\n};\r\nconst readonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\r\n};\r\nconst shallowReadonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\r\n};\r\nfunction checkIdentityKeys(target, has, key) {\r\n const rawKey = toRaw(key);\r\n if (rawKey !== key && has.call(target, rawKey)) {\r\n const type = toRawType(target);\r\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\r\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\r\n `which can lead to inconsistencies. ` +\r\n `Avoid differentiating between the raw and reactive versions ` +\r\n `of an object and only use the reactive version if possible.`);\r\n }\r\n}\n\nconst reactiveMap = new WeakMap();\r\nconst shallowReactiveMap = new WeakMap();\r\nconst readonlyMap = new WeakMap();\r\nconst shallowReadonlyMap = new WeakMap();\r\nfunction targetTypeMap(rawType) {\r\n switch (rawType) {\r\n case 'Object':\r\n case 'Array':\r\n return 1 /* COMMON */;\r\n case 'Map':\r\n case 'Set':\r\n case 'WeakMap':\r\n case 'WeakSet':\r\n return 2 /* COLLECTION */;\r\n default:\r\n return 0 /* INVALID */;\r\n }\r\n}\r\nfunction getTargetType(value) {\r\n return value[\"__v_skip\" /* SKIP */] || !Object.isExtensible(value)\r\n ? 0 /* INVALID */\r\n : targetTypeMap(toRawType(value));\r\n}\r\nfunction reactive(target) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (target && target[\"__v_isReadonly\" /* IS_READONLY */]) {\r\n return target;\r\n }\r\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\r\n}\r\n/**\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\r\n}\r\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\r\n if (!isObject(target)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`value cannot be made reactive: ${String(target)}`);\r\n }\r\n return target;\r\n }\r\n // target is already a Proxy, return it.\r\n // exception: calling readonly() on a reactive object\r\n if (target[\"__v_raw\" /* RAW */] &&\r\n !(isReadonly && target[\"__v_isReactive\" /* IS_REACTIVE */])) {\r\n return target;\r\n }\r\n // target already has corresponding Proxy\r\n const existingProxy = proxyMap.get(target);\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n // only a whitelist of value types can be observed.\r\n const targetType = getTargetType(target);\r\n if (targetType === 0 /* INVALID */) {\r\n return target;\r\n }\r\n const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);\r\n proxyMap.set(target, proxy);\r\n return proxy;\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* RAW */]);\r\n }\r\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n const raw = observed && observed[\"__v_raw\" /* RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* SKIP */, true);\r\n return value;\r\n}\r\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\r\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\r\n if (isTracking()) {\r\n ref = toRaw(ref);\r\n if (!ref.dep) {\r\n ref.dep = createDep();\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n trackEffects(ref.dep, {\r\n target: ref,\r\n type: \"get\" /* GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n trackEffects(ref.dep);\r\n }\r\n }\r\n}\r\nfunction triggerRefValue(ref, newVal) {\r\n ref = toRaw(ref);\r\n if (ref.dep) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(ref.dep, {\r\n target: ref,\r\n type: \"set\" /* SET */,\r\n key: 'value',\r\n newValue: newVal\r\n });\r\n }\r\n else {\r\n triggerEffects(ref.dep);\r\n }\r\n }\r\n}\r\nfunction isRef(r) {\r\n return Boolean(r && r.__v_isRef === true);\r\n}\r\nfunction ref(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n return new RefImpl(rawValue, shallow);\r\n}\r\nclass RefImpl {\r\n constructor(value, _shallow) {\r\n this._shallow = _shallow;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._rawValue = _shallow ? value : toRaw(value);\r\n this._value = _shallow ? value : toReactive(value);\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n return this._value;\r\n }\r\n set value(newVal) {\r\n newVal = this._shallow ? newVal : toRaw(newVal);\r\n if (hasChanged(newVal, this._rawValue)) {\r\n this._rawValue = newVal;\r\n this._value = this._shallow ? newVal : toReactive(newVal);\r\n triggerRefValue(this, newVal);\r\n }\r\n }\r\n}\r\nfunction triggerRef(ref) {\r\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nconst shallowUnwrapHandlers = {\r\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\r\n set: (target, key, value, receiver) => {\r\n const oldValue = target[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n else {\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n }\r\n};\r\nfunction proxyRefs(objectWithRefs) {\r\n return isReactive(objectWithRefs)\r\n ? objectWithRefs\r\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\r\n}\r\nclass CustomRefImpl {\r\n constructor(factory) {\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\r\n this._get = get;\r\n this._set = set;\r\n }\r\n get value() {\r\n return this._get();\r\n }\r\n set value(newVal) {\r\n this._set(newVal);\r\n }\r\n}\r\nfunction customRef(factory) {\r\n return new CustomRefImpl(factory);\r\n}\r\nfunction toRefs(object) {\r\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\r\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\r\n }\r\n const ret = isArray(object) ? new Array(object.length) : {};\r\n for (const key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nclass ObjectRefImpl {\r\n constructor(_object, _key, _defaultValue) {\r\n this._object = _object;\r\n this._key = _key;\r\n this._defaultValue = _defaultValue;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n const val = this._object[this._key];\r\n return val === undefined ? this._defaultValue : val;\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n const val = object[key];\r\n return isRef(val)\r\n ? val\r\n : new ObjectRefImpl(object, key, defaultValue);\r\n}\n\nclass ComputedRefImpl {\r\n constructor(getter, _setter, isReadonly) {\r\n this._setter = _setter;\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this.effect = new ReactiveEffect(getter, () => {\r\n if (!this._dirty) {\r\n this._dirty = true;\r\n triggerRefValue(this);\r\n }\r\n });\r\n this[\"__v_isReadonly\" /* IS_READONLY */] = isReadonly;\r\n }\r\n get value() {\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n const self = toRaw(this);\r\n trackRefValue(self);\r\n if (self._dirty) {\r\n self._dirty = false;\r\n self._value = self.effect.run();\r\n }\r\n return self._value;\r\n }\r\n set value(newValue) {\r\n this._setter(newValue);\r\n }\r\n}\r\nfunction computed(getterOrOptions, debugOptions) {\r\n let getter;\r\n let setter;\r\n const onlyGetter = isFunction(getterOrOptions);\r\n if (onlyGetter) {\r\n getter = getterOrOptions;\r\n setter = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n console.warn('Write operation failed: computed value is readonly');\r\n }\r\n : NOOP;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter);\r\n if ((process.env.NODE_ENV !== 'production') && debugOptions) {\r\n cRef.effect.onTrack = debugOptions.onTrack;\r\n cRef.effect.onTrigger = debugOptions.onTrigger;\r\n }\r\n return cRef;\r\n}\n\nvar _a;\r\nconst tick = Promise.resolve();\r\nconst queue = [];\r\nlet queued = false;\r\nconst scheduler = (fn) => {\r\n queue.push(fn);\r\n if (!queued) {\r\n queued = true;\r\n tick.then(flush);\r\n }\r\n};\r\nconst flush = () => {\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i]();\r\n }\r\n queue.length = 0;\r\n queued = false;\r\n};\r\nclass DeferredComputedRefImpl {\r\n constructor(getter) {\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this[_a] = true;\r\n let compareTarget;\r\n let hasCompareTarget = false;\r\n let scheduled = false;\r\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\r\n if (this.dep) {\r\n if (computedTrigger) {\r\n compareTarget = this._value;\r\n hasCompareTarget = true;\r\n }\r\n else if (!scheduled) {\r\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\r\n scheduled = true;\r\n hasCompareTarget = false;\r\n scheduler(() => {\r\n if (this.effect.active && this._get() !== valueToCompare) {\r\n triggerRefValue(this);\r\n }\r\n scheduled = false;\r\n });\r\n }\r\n // chained upstream computeds are notified synchronously to ensure\r\n // value invalidation in case of sync access; normal effects are\r\n // deferred to be triggered in scheduler.\r\n for (const e of this.dep) {\r\n if (e.computed) {\r\n e.scheduler(true /* computedTrigger */);\r\n }\r\n }\r\n }\r\n this._dirty = true;\r\n });\r\n this.effect.computed = true;\r\n }\r\n _get() {\r\n if (this._dirty) {\r\n this._dirty = false;\r\n return (this._value = this.effect.run());\r\n }\r\n return this._value;\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n return toRaw(this)._get();\r\n }\r\n}\r\n_a = \"__v_isReadonly\" /* IS_READONLY */;\r\nfunction deferredComputed(getter) {\r\n return new DeferredComputedRefImpl(getter);\r\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { toRaw, ref, pauseTracking, resetTracking, reactive, computed, isRef, shallowReactive, trigger, ReactiveEffect, isProxy, shallowReadonly, track, EffectScope, markRaw, proxyRefs, isReactive, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, computed, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, isFunction, toNumber, hyphenate, camelize, isArray, isOn, hasOwn, isModelListener, isObject, remove, isString, invokeArrayFns, isPromise, NOOP, def, isReservedProp, EMPTY_ARR, capitalize, toRawType, makeMap, NO, normalizeClass, normalizeStyle, isGloballyWhitelisted, hasChanged, isSet, isMap, isPlainObject } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\n/* eslint-disable no-restricted-globals */\r\nlet isHmrUpdating = false;\r\nconst hmrDirtyComponents = new Set();\r\n// Expose the HMR runtime on the global object\r\n// This makes it entirely tree-shakable without polluting the exports and makes\r\n// it easier to be used in toolings like vue-loader\r\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\r\n// to be set so that its instances can be registered / removed.\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\r\n createRecord: tryWrap(createRecord),\r\n rerender: tryWrap(rerender),\r\n reload: tryWrap(reload)\r\n };\r\n}\r\nconst map = new Map();\r\nfunction registerHMR(instance) {\r\n const id = instance.type.__hmrId;\r\n let record = map.get(id);\r\n if (!record) {\r\n createRecord(id, instance.type);\r\n record = map.get(id);\r\n }\r\n record.instances.add(instance);\r\n}\r\nfunction unregisterHMR(instance) {\r\n map.get(instance.type.__hmrId).instances.delete(instance);\r\n}\r\nfunction createRecord(id, initialDef) {\r\n if (map.has(id)) {\r\n return false;\r\n }\r\n map.set(id, {\r\n initialDef: normalizeClassComponent(initialDef),\r\n instances: new Set()\r\n });\r\n return true;\r\n}\r\nfunction normalizeClassComponent(component) {\r\n return isClassComponent(component) ? component.__vccOpts : component;\r\n}\r\nfunction rerender(id, newRender) {\r\n const record = map.get(id);\r\n if (!record) {\r\n return;\r\n }\r\n // update initial record (for not-yet-rendered component)\r\n record.initialDef.render = newRender;\r\n [...record.instances].forEach(instance => {\r\n if (newRender) {\r\n instance.render = newRender;\r\n normalizeClassComponent(instance.type).render = newRender;\r\n }\r\n instance.renderCache = [];\r\n // this flag forces child components with slot content to update\r\n isHmrUpdating = true;\r\n instance.update();\r\n isHmrUpdating = false;\r\n });\r\n}\r\nfunction reload(id, newComp) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n newComp = normalizeClassComponent(newComp);\r\n // update initial def (for not-yet-rendered components)\r\n updateComponentDef(record.initialDef, newComp);\r\n // create a snapshot which avoids the set being mutated during updates\r\n const instances = [...record.instances];\r\n for (const instance of instances) {\r\n const oldComp = normalizeClassComponent(instance.type);\r\n if (!hmrDirtyComponents.has(oldComp)) {\r\n // 1. Update existing comp definition to match new one\r\n if (oldComp !== record.initialDef) {\r\n updateComponentDef(oldComp, newComp);\r\n }\r\n // 2. mark definition dirty. This forces the renderer to replace the\r\n // component on patch.\r\n hmrDirtyComponents.add(oldComp);\r\n }\r\n // 3. invalidate options resolution cache\r\n instance.appContext.optionsCache.delete(instance.type);\r\n // 4. actually update\r\n if (instance.ceReload) {\r\n // custom element\r\n hmrDirtyComponents.add(oldComp);\r\n instance.ceReload(newComp.styles);\r\n hmrDirtyComponents.delete(oldComp);\r\n }\r\n else if (instance.parent) {\r\n // 4. Force the parent instance to re-render. This will cause all updated\r\n // components to be unmounted and re-mounted. Queue the update so that we\r\n // don't end up forcing the same parent to re-render multiple times.\r\n queueJob(instance.parent.update);\r\n // instance is the inner component of an async custom element\r\n // invoke to reset styles\r\n if (instance.parent.type.__asyncLoader &&\r\n instance.parent.ceReload) {\r\n instance.parent.ceReload(newComp.styles);\r\n }\r\n }\r\n else if (instance.appContext.reload) {\r\n // root instance mounted via createApp() has a reload method\r\n instance.appContext.reload();\r\n }\r\n else if (typeof window !== 'undefined') {\r\n // root instance inside tree created via raw render(). Force reload.\r\n window.location.reload();\r\n }\r\n else {\r\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\r\n }\r\n }\r\n // 5. make sure to cleanup dirty hmr components after update\r\n queuePostFlushCb(() => {\r\n for (const instance of instances) {\r\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\r\n }\r\n });\r\n}\r\nfunction updateComponentDef(oldComp, newComp) {\r\n extend(oldComp, newComp);\r\n for (const key in oldComp) {\r\n if (key !== '__file' && !(key in newComp)) {\r\n delete oldComp[key];\r\n }\r\n }\r\n}\r\nfunction tryWrap(fn) {\r\n return (id, arg) => {\r\n try {\r\n return fn(id, arg);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\r\n `Full reload required.`);\r\n }\r\n };\r\n}\n\nlet devtools;\r\nlet buffer = [];\r\nlet devtoolsNotInstalled = false;\r\nfunction emit(event, ...args) {\r\n if (devtools) {\r\n devtools.emit(event, ...args);\r\n }\r\n else if (!devtoolsNotInstalled) {\r\n buffer.push({ event, args });\r\n }\r\n}\r\nfunction setDevtoolsHook(hook, target) {\r\n var _a, _b;\r\n devtools = hook;\r\n if (devtools) {\r\n devtools.enabled = true;\r\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\r\n buffer = [];\r\n }\r\n else if (\r\n // handle late devtools injection - only do this if we are in an actual\r\n // browser environment to avoid the timer handle stalling test runner exit\r\n // (#4815)\r\n // eslint-disable-next-line no-restricted-globals\r\n typeof window !== 'undefined' &&\r\n // some envs mock window but not fully\r\n window.HTMLElement &&\r\n // also exclude jsdom\r\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\r\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\r\n replay.push((newHook) => {\r\n setDevtoolsHook(newHook, target);\r\n });\r\n // clear buffer after 3s - the user probably doesn't have devtools installed\r\n // at all, and keeping the buffer will cause memory leaks (#4738)\r\n setTimeout(() => {\r\n if (!devtools) {\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n }, 3000);\r\n }\r\n else {\r\n // non-browser env, assume not installed\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n}\r\nfunction devtoolsInitApp(app, version) {\r\n emit(\"app:init\" /* APP_INIT */, app, version, {\r\n Fragment,\r\n Text,\r\n Comment,\r\n Static\r\n });\r\n}\r\nfunction devtoolsUnmountApp(app) {\r\n emit(\"app:unmount\" /* APP_UNMOUNT */, app);\r\n}\r\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\r\nconst devtoolsComponentUpdated = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\r\nconst devtoolsComponentRemoved = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* COMPONENT_REMOVED */);\r\nfunction createDevtoolsComponentHook(hook) {\r\n return (component) => {\r\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\r\n };\r\n}\r\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\r\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\r\nfunction createDevtoolsPerformanceHook(hook) {\r\n return (component, type, time) => {\r\n emit(hook, component.appContext.app, component.uid, component, type, time);\r\n };\r\n}\r\nfunction devtoolsComponentEmit(component, event, params) {\r\n emit(\"component:emit\" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);\r\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\r\n const props = instance.vnode.props || EMPTY_OBJ;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\r\n if (emitsOptions) {\r\n if (!(event in emitsOptions) &&\r\n !(false )) {\r\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\r\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\r\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\r\n }\r\n }\r\n else {\r\n const validator = emitsOptions[event];\r\n if (isFunction(validator)) {\r\n const isValid = validator(...rawArgs);\r\n if (!isValid) {\r\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let args = rawArgs;\r\n const isModelListener = event.startsWith('update:');\r\n // for v-model update:xxx events, apply modifiers on args\r\n const modelArg = isModelListener && event.slice(7);\r\n if (modelArg && modelArg in props) {\r\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\r\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\r\n if (trim) {\r\n args = rawArgs.map(a => a.trim());\r\n }\r\n else if (number) {\r\n args = rawArgs.map(toNumber);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentEmit(instance, event, args);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\r\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\r\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\r\n `Note that HTML attributes are case-insensitive and you cannot use ` +\r\n `v-on to listen to camelCase events when using in-DOM templates. ` +\r\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\r\n }\r\n }\r\n let handlerName;\r\n let handler = props[(handlerName = toHandlerKey(event))] ||\r\n // also try camelCase event handler (#2249)\r\n props[(handlerName = toHandlerKey(camelize(event)))];\r\n // for v-model update:xxx events, also trigger kebab-case equivalent\r\n // for props passed via kebab-case\r\n if (!handler && isModelListener) {\r\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\r\n }\r\n if (handler) {\r\n callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n const onceHandler = props[handlerName + `Once`];\r\n if (onceHandler) {\r\n if (!instance.emitted) {\r\n instance.emitted = {};\r\n }\r\n else if (instance.emitted[handlerName]) {\r\n return;\r\n }\r\n instance.emitted[handlerName] = true;\r\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n}\r\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.emitsCache;\r\n const cached = cache.get(comp);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n const raw = comp.emits;\r\n let normalized = {};\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendEmits = (raw) => {\r\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\r\n if (normalizedFromExtend) {\r\n hasExtends = true;\r\n extend(normalized, normalizedFromExtend);\r\n }\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendEmits);\r\n }\r\n if (comp.extends) {\r\n extendEmits(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendEmits);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, null);\r\n return null;\r\n }\r\n if (isArray(raw)) {\r\n raw.forEach(key => (normalized[key] = null));\r\n }\r\n else {\r\n extend(normalized, raw);\r\n }\r\n cache.set(comp, normalized);\r\n return normalized;\r\n}\r\n// Check if an incoming prop key is a declared emit event listener.\r\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\r\n// both considered matched listeners.\r\nfunction isEmitListener(options, key) {\r\n if (!options || !isOn(key)) {\r\n return false;\r\n }\r\n key = key.slice(2).replace(/Once$/, '');\r\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\r\n hasOwn(options, hyphenate(key)) ||\r\n hasOwn(options, key));\r\n}\n\n/**\r\n * mark the current rendering instance for asset resolution (e.g.\r\n * resolveComponent, resolveDirective) during render\r\n */\r\nlet currentRenderingInstance = null;\r\nlet currentScopeId = null;\r\n/**\r\n * Note: rendering calls maybe nested. The function returns the parent rendering\r\n * instance if present, which should be restored after the render is done:\r\n *\r\n * ```js\r\n * const prev = setCurrentRenderingInstance(i)\r\n * // ...render\r\n * setCurrentRenderingInstance(prev)\r\n * ```\r\n */\r\nfunction setCurrentRenderingInstance(instance) {\r\n const prev = currentRenderingInstance;\r\n currentRenderingInstance = instance;\r\n currentScopeId = (instance && instance.type.__scopeId) || null;\r\n return prev;\r\n}\r\n/**\r\n * Set scope id when creating hoisted vnodes.\r\n * @private compiler helper\r\n */\r\nfunction pushScopeId(id) {\r\n currentScopeId = id;\r\n}\r\n/**\r\n * Technically we no longer need this after 3.0.8 but we need to keep the same\r\n * API for backwards compat w/ code generated by compilers.\r\n * @private\r\n */\r\nfunction popScopeId() {\r\n currentScopeId = null;\r\n}\r\n/**\r\n * Only for backwards compat\r\n * @private\r\n */\r\nconst withScopeId = (_id) => withCtx;\r\n/**\r\n * Wrap a slot function to memoize current rendering instance\r\n * @private compiler helper\r\n */\r\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\r\n) {\r\n if (!ctx)\r\n return fn;\r\n // already normalized\r\n if (fn._n) {\r\n return fn;\r\n }\r\n const renderFnWithContext = (...args) => {\r\n // If a user calls a compiled slot inside a template expression (#1745), it\r\n // can mess up block tracking, so by default we disable block tracking and\r\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\r\n // This isn't necessary if rendering a compiled ``, so we flip the\r\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(-1);\r\n }\r\n const prevInstance = setCurrentRenderingInstance(ctx);\r\n const res = fn(...args);\r\n setCurrentRenderingInstance(prevInstance);\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(1);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentUpdated(ctx);\r\n }\r\n return res;\r\n };\r\n // mark normalized to avoid duplicated wrapping\r\n renderFnWithContext._n = true;\r\n // mark this as compiled by default\r\n // this is used in vnode.ts -> normalizeChildren() to set the slot\r\n // rendering flag.\r\n renderFnWithContext._c = true;\r\n // disable block tracking by default\r\n renderFnWithContext._d = true;\r\n return renderFnWithContext;\r\n}\n\n/**\r\n * dev only flag to track whether $attrs was used during render.\r\n * If $attrs was used during render then the warning for failed attrs\r\n * fallthrough can be suppressed.\r\n */\r\nlet accessedAttrs = false;\r\nfunction markAttrsAccessed() {\r\n accessedAttrs = true;\r\n}\r\nfunction renderComponentRoot(instance) {\r\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\r\n let result;\r\n let fallthroughAttrs;\r\n const prev = setCurrentRenderingInstance(instance);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n accessedAttrs = false;\r\n }\r\n try {\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n // withProxy is a proxy with a different `has` trap only for\r\n // runtime-compiled render functions using `with` block.\r\n const proxyToUse = withProxy || proxy;\r\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\r\n fallthroughAttrs = attrs;\r\n }\r\n else {\r\n // functional\r\n const render = Component;\r\n // in dev, mark attrs accessed if optional props (attrs === props)\r\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\r\n markAttrsAccessed();\r\n }\r\n result = normalizeVNode(render.length > 1\r\n ? render(props, (process.env.NODE_ENV !== 'production')\r\n ? {\r\n get attrs() {\r\n markAttrsAccessed();\r\n return attrs;\r\n },\r\n slots,\r\n emit\r\n }\r\n : { attrs, slots, emit })\r\n : render(props, null /* we know it doesn't need it */));\r\n fallthroughAttrs = Component.props\r\n ? attrs\r\n : getFunctionalFallthrough(attrs);\r\n }\r\n }\r\n catch (err) {\r\n blockStack.length = 0;\r\n handleError(err, instance, 1 /* RENDER_FUNCTION */);\r\n result = createVNode(Comment);\r\n }\r\n // attr merging\r\n // in dev mode, comments are preserved, and it's possible for a template\r\n // to have comments along side the root element which makes it a fragment\r\n let root = result;\r\n let setRoot = undefined;\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n result.patchFlag > 0 &&\r\n result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n [root, setRoot] = getChildRoot(result);\r\n }\r\n if (fallthroughAttrs && inheritAttrs !== false) {\r\n const keys = Object.keys(fallthroughAttrs);\r\n const { shapeFlag } = root;\r\n if (keys.length) {\r\n if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {\r\n if (propsOptions && keys.some(isModelListener)) {\r\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\r\n // prop, it indicates this component expects to handle v-model and\r\n // it should not fallthrough.\r\n // related: #1543, #1643, #1989\r\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\r\n }\r\n root = cloneVNode(root, fallthroughAttrs);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\r\n const allAttrs = Object.keys(attrs);\r\n const eventAttrs = [];\r\n const extraAttrs = [];\r\n for (let i = 0, l = allAttrs.length; i < l; i++) {\r\n const key = allAttrs[i];\r\n if (isOn(key)) {\r\n // ignore v-model handlers when they fail to fallthrough\r\n if (!isModelListener(key)) {\r\n // remove `on`, lowercase first letter to reflect event casing\r\n // accurately\r\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\r\n }\r\n }\r\n else {\r\n extraAttrs.push(key);\r\n }\r\n }\r\n if (extraAttrs.length) {\r\n warn(`Extraneous non-props attributes (` +\r\n `${extraAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes.`);\r\n }\r\n if (eventAttrs.length) {\r\n warn(`Extraneous non-emits event listeners (` +\r\n `${eventAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes. ` +\r\n `If the listener is intended to be a component custom event listener only, ` +\r\n `declare it using the \"emits\" option.`);\r\n }\r\n }\r\n }\r\n }\r\n // inherit directives\r\n if (vnode.dirs) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Runtime directive used on component with non-element root node. ` +\r\n `The directives will not function as intended.`);\r\n }\r\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\r\n }\r\n // inherit transition data\r\n if (vnode.transition) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Component inside renders non-element root node ` +\r\n `that cannot be animated.`);\r\n }\r\n root.transition = vnode.transition;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\r\n setRoot(root);\r\n }\r\n else {\r\n result = root;\r\n }\r\n setCurrentRenderingInstance(prev);\r\n return result;\r\n}\r\n/**\r\n * dev only\r\n * In dev mode, template root level comments are rendered, which turns the\r\n * template into a fragment root, but we need to locate the single element\r\n * root for attrs and scope id processing.\r\n */\r\nconst getChildRoot = (vnode) => {\r\n const rawChildren = vnode.children;\r\n const dynamicChildren = vnode.dynamicChildren;\r\n const childRoot = filterSingleRoot(rawChildren);\r\n if (!childRoot) {\r\n return [vnode, undefined];\r\n }\r\n const index = rawChildren.indexOf(childRoot);\r\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\r\n const setRoot = (updatedRoot) => {\r\n rawChildren[index] = updatedRoot;\r\n if (dynamicChildren) {\r\n if (dynamicIndex > -1) {\r\n dynamicChildren[dynamicIndex] = updatedRoot;\r\n }\r\n else if (updatedRoot.patchFlag > 0) {\r\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\r\n }\r\n }\r\n };\r\n return [normalizeVNode(childRoot), setRoot];\r\n};\r\nfunction filterSingleRoot(children) {\r\n let singleRoot;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isVNode(child)) {\r\n // ignore user comment\r\n if (child.type !== Comment || child.children === 'v-if') {\r\n if (singleRoot) {\r\n // has more than 1 non-comment child, return now\r\n return;\r\n }\r\n else {\r\n singleRoot = child;\r\n }\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return singleRoot;\r\n}\r\nconst getFunctionalFallthrough = (attrs) => {\r\n let res;\r\n for (const key in attrs) {\r\n if (key === 'class' || key === 'style' || isOn(key)) {\r\n (res || (res = {}))[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst filterModelListeners = (attrs, props) => {\r\n const res = {};\r\n for (const key in attrs) {\r\n if (!isModelListener(key) || !(key.slice(9) in props)) {\r\n res[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst isElementRoot = (vnode) => {\r\n return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||\r\n vnode.type === Comment // potential v-if branch switch\r\n );\r\n};\r\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\r\n const { props: prevProps, children: prevChildren, component } = prevVNode;\r\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\r\n const emits = component.emitsOptions;\r\n // Parent component's render function was hot-updated. Since this may have\r\n // caused the child component's slots content to have changed, we need to\r\n // force the child to update as well.\r\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\r\n return true;\r\n }\r\n // force child update for runtime directive or transition on component vnode.\r\n if (nextVNode.dirs || nextVNode.transition) {\r\n return true;\r\n }\r\n if (optimized && patchFlag >= 0) {\r\n if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n // slot content that references values that might have changed,\r\n // e.g. in a v-for\r\n return true;\r\n }\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n // presence of this flag indicates props are always non-null\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n else if (patchFlag & 8 /* PROPS */) {\r\n const dynamicProps = nextVNode.dynamicProps;\r\n for (let i = 0; i < dynamicProps.length; i++) {\r\n const key = dynamicProps[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emits, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // this path is only taken by manually written render functions\r\n // so presence of any children leads to a forced update\r\n if (prevChildren || nextChildren) {\r\n if (!nextChildren || !nextChildren.$stable) {\r\n return true;\r\n }\r\n }\r\n if (prevProps === nextProps) {\r\n return false;\r\n }\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n if (!nextProps) {\r\n return true;\r\n }\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n return false;\r\n}\r\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\r\n const nextKeys = Object.keys(nextProps);\r\n if (nextKeys.length !== Object.keys(prevProps).length) {\r\n return true;\r\n }\r\n for (let i = 0; i < nextKeys.length; i++) {\r\n const key = nextKeys[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emitsOptions, key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\r\n) {\r\n while (parent && parent.subTree === vnode) {\r\n (vnode = parent.vnode).el = el;\r\n parent = parent.parent;\r\n }\r\n}\n\nconst isSuspense = (type) => type.__isSuspense;\r\n// Suspense exposes a component-like API, and is treated like a component\r\n// in the compiler, but internally it's a special built-in type that hooks\r\n// directly into the renderer.\r\nconst SuspenseImpl = {\r\n name: 'Suspense',\r\n // In order to make Suspense tree-shakable, we need to avoid importing it\r\n // directly in the renderer. The renderer checks for the __isSuspense flag\r\n // on a vnode's type and calls the `process` method, passing in renderer\r\n // internals.\r\n __isSuspense: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \r\n // platform-specific impl passed from renderer\r\n rendererInternals) {\r\n if (n1 == null) {\r\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n else {\r\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n },\r\n hydrate: hydrateSuspense,\r\n create: createSuspenseBoundary,\r\n normalize: normalizeSuspenseChildren\r\n};\r\n// Force-casted public typing for h and TSX props inference\r\nconst Suspense = (SuspenseImpl );\r\nfunction triggerEvent(vnode, name) {\r\n const eventListener = vnode.props && vnode.props[name];\r\n if (isFunction(eventListener)) {\r\n eventListener();\r\n }\r\n}\r\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\r\n const { p: patch, o: { createElement } } = rendererInternals;\r\n const hiddenContainer = createElement('div');\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\r\n // start mounting the content subtree in an off-dom container\r\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\r\n // now check if we have encountered any async deps\r\n if (suspense.deps > 0) {\r\n // has async\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onPending');\r\n triggerEvent(vnode, 'onFallback');\r\n // mount the fallback tree\r\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds);\r\n setActiveBranch(suspense, vnode.ssFallback);\r\n }\r\n else {\r\n // Suspense has no async deps. Just resolve.\r\n suspense.resolve();\r\n }\r\n}\r\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\r\n const suspense = (n2.suspense = n1.suspense);\r\n suspense.vnode = n2;\r\n n2.el = n1.el;\r\n const newBranch = n2.ssContent;\r\n const newFallback = n2.ssFallback;\r\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\r\n if (pendingBranch) {\r\n suspense.pendingBranch = newBranch;\r\n if (isSameVNodeType(newBranch, pendingBranch)) {\r\n // same root type but content may have changed.\r\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else if (isInFallback) {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else {\r\n // toggled before pending tree is resolved\r\n suspense.pendingId++;\r\n if (isHydrating) {\r\n // if toggled before hydration is finished, the current DOM tree is\r\n // no longer valid. set it as the active branch so it will be unmounted\r\n // when resolved\r\n suspense.isHydrating = false;\r\n suspense.activeBranch = pendingBranch;\r\n }\r\n else {\r\n unmount(pendingBranch, parentComponent, suspense);\r\n }\r\n // increment pending ID. this is used to invalidate async callbacks\r\n // reset suspense state\r\n suspense.deps = 0;\r\n // discard effects from pending branch\r\n suspense.effects.length = 0;\r\n // discard previous container\r\n suspense.hiddenContainer = createElement('div');\r\n if (isInFallback) {\r\n // already in fallback state\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // toggled \"back\" to current active branch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n // force resolve\r\n suspense.resolve(true);\r\n }\r\n else {\r\n // switched to a 3rd branch\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // root did not change, just normal patch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newBranch);\r\n }\r\n else {\r\n // root node toggled\r\n // invoke @pending event\r\n triggerEvent(n2, 'onPending');\r\n // mount pending branch in off-dom container\r\n suspense.pendingBranch = newBranch;\r\n suspense.pendingId++;\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n // incoming branch has no async deps, resolve now.\r\n suspense.resolve();\r\n }\r\n else {\r\n const { timeout, pendingId } = suspense;\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (suspense.pendingId === pendingId) {\r\n suspense.fallback(newFallback);\r\n }\r\n }, timeout);\r\n }\r\n else if (timeout === 0) {\r\n suspense.fallback(newFallback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet hasWarned = false;\r\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\r\n hasWarned = true;\r\n // @ts-ignore `console.info` cannot be null error\r\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\r\n }\r\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\r\n const timeout = toNumber(vnode.props && vnode.props.timeout);\r\n const suspense = {\r\n vnode,\r\n parent,\r\n parentComponent,\r\n isSVG,\r\n container,\r\n hiddenContainer,\r\n anchor,\r\n deps: 0,\r\n pendingId: 0,\r\n timeout: typeof timeout === 'number' ? timeout : -1,\r\n activeBranch: null,\r\n pendingBranch: null,\r\n isInFallback: true,\r\n isHydrating,\r\n isUnmounted: false,\r\n effects: [],\r\n resolve(resume = false) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!resume && !suspense.pendingBranch) {\r\n throw new Error(`suspense.resolve() is called without a pending branch.`);\r\n }\r\n if (suspense.isUnmounted) {\r\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\r\n }\r\n }\r\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\r\n if (suspense.isHydrating) {\r\n suspense.isHydrating = false;\r\n }\r\n else if (!resume) {\r\n const delayEnter = activeBranch &&\r\n pendingBranch.transition &&\r\n pendingBranch.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = () => {\r\n if (pendingId === suspense.pendingId) {\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n };\r\n }\r\n // this is initial anchor on mount\r\n let { anchor } = suspense;\r\n // unmount current active tree\r\n if (activeBranch) {\r\n // if the fallback tree was mounted, it may have been moved\r\n // as part of a parent suspense. get the latest anchor for insertion\r\n anchor = next(activeBranch);\r\n unmount(activeBranch, parentComponent, suspense, true);\r\n }\r\n if (!delayEnter) {\r\n // move content from off-dom container to actual container\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n }\r\n setActiveBranch(suspense, pendingBranch);\r\n suspense.pendingBranch = null;\r\n suspense.isInFallback = false;\r\n // flush buffered effects\r\n // check if there is a pending parent suspense\r\n let parent = suspense.parent;\r\n let hasUnresolvedAncestor = false;\r\n while (parent) {\r\n if (parent.pendingBranch) {\r\n // found a pending parent suspense, merge buffered post jobs\r\n // into that parent\r\n parent.effects.push(...effects);\r\n hasUnresolvedAncestor = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n // no pending parent suspense, flush all jobs\r\n if (!hasUnresolvedAncestor) {\r\n queuePostFlushCb(effects);\r\n }\r\n suspense.effects = [];\r\n // invoke @resolve event\r\n triggerEvent(vnode, 'onResolve');\r\n },\r\n fallback(fallbackVNode) {\r\n if (!suspense.pendingBranch) {\r\n return;\r\n }\r\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onFallback');\r\n const anchor = next(activeBranch);\r\n const mountFallback = () => {\r\n if (!suspense.isInFallback) {\r\n return;\r\n }\r\n // mount the fallback tree\r\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, fallbackVNode);\r\n };\r\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = mountFallback;\r\n }\r\n suspense.isInFallback = true;\r\n // unmount current active branch\r\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\r\n true // shouldRemove\r\n );\r\n if (!delayEnter) {\r\n mountFallback();\r\n }\r\n },\r\n move(container, anchor, type) {\r\n suspense.activeBranch &&\r\n move(suspense.activeBranch, container, anchor, type);\r\n suspense.container = container;\r\n },\r\n next() {\r\n return suspense.activeBranch && next(suspense.activeBranch);\r\n },\r\n registerDep(instance, setupRenderEffect) {\r\n const isInPendingSuspense = !!suspense.pendingBranch;\r\n if (isInPendingSuspense) {\r\n suspense.deps++;\r\n }\r\n const hydratedEl = instance.vnode.el;\r\n instance\r\n .asyncDep.catch(err => {\r\n handleError(err, instance, 0 /* SETUP_FUNCTION */);\r\n })\r\n .then(asyncSetupResult => {\r\n // retry when the setup() promise resolves.\r\n // component may have been unmounted before resolve.\r\n if (instance.isUnmounted ||\r\n suspense.isUnmounted ||\r\n suspense.pendingId !== instance.suspenseId) {\r\n return;\r\n }\r\n // retry from this component\r\n instance.asyncResolved = true;\r\n const { vnode } = instance;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(vnode);\r\n }\r\n handleSetupResult(instance, asyncSetupResult, false);\r\n if (hydratedEl) {\r\n // vnode may have been replaced if an update happened before the\r\n // async dep is resolved.\r\n vnode.el = hydratedEl;\r\n }\r\n const placeholder = !hydratedEl && instance.subTree.el;\r\n setupRenderEffect(instance, vnode, \r\n // component may have been moved before resolve.\r\n // if this is not a hydration, instance.subTree will be the comment\r\n // placeholder.\r\n parentNode(hydratedEl || instance.subTree.el), \r\n // anchor will not be used if this is hydration, so only need to\r\n // consider the comment placeholder case.\r\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\r\n if (placeholder) {\r\n remove(placeholder);\r\n }\r\n updateHOCHostEl(instance, vnode.el);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n // only decrease deps count if suspense is not already resolved\r\n if (isInPendingSuspense && --suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n });\r\n },\r\n unmount(parentSuspense, doRemove) {\r\n suspense.isUnmounted = true;\r\n if (suspense.activeBranch) {\r\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n if (suspense.pendingBranch) {\r\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n }\r\n };\r\n return suspense;\r\n}\r\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\r\n /* eslint-disable no-restricted-globals */\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\r\n // there are two possible scenarios for server-rendered suspense:\r\n // - success: ssr content should be fully resolved\r\n // - failure: ssr content should be the fallback branch.\r\n // however, on the client we don't really know if it has failed or not\r\n // attempt to hydrate the DOM assuming it has succeeded, but we still\r\n // need to construct a suspense boundary first\r\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\r\n if (suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n return result;\r\n /* eslint-enable no-restricted-globals */\r\n}\r\nfunction normalizeSuspenseChildren(vnode) {\r\n const { shapeFlag, children } = vnode;\r\n const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;\r\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\r\n vnode.ssFallback = isSlotChildren\r\n ? normalizeSuspenseSlot(children.fallback)\r\n : createVNode(Comment);\r\n}\r\nfunction normalizeSuspenseSlot(s) {\r\n let block;\r\n if (isFunction(s)) {\r\n const trackBlock = isBlockTreeEnabled && s._c;\r\n if (trackBlock) {\r\n // disableTracking: false\r\n // allow block tracking for compiled slots\r\n // (see ./componentRenderContext.ts)\r\n s._d = false;\r\n openBlock();\r\n }\r\n s = s();\r\n if (trackBlock) {\r\n s._d = true;\r\n block = currentBlock;\r\n closeBlock();\r\n }\r\n }\r\n if (isArray(s)) {\r\n const singleChild = filterSingleRoot(s);\r\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\r\n warn(` slots expect a single root node.`);\r\n }\r\n s = singleChild;\r\n }\r\n s = normalizeVNode(s);\r\n if (block && !s.dynamicChildren) {\r\n s.dynamicChildren = block.filter(c => c !== s);\r\n }\r\n return s;\r\n}\r\nfunction queueEffectWithSuspense(fn, suspense) {\r\n if (suspense && suspense.pendingBranch) {\r\n if (isArray(fn)) {\r\n suspense.effects.push(...fn);\r\n }\r\n else {\r\n suspense.effects.push(fn);\r\n }\r\n }\r\n else {\r\n queuePostFlushCb(fn);\r\n }\r\n}\r\nfunction setActiveBranch(suspense, branch) {\r\n suspense.activeBranch = branch;\r\n const { vnode, parentComponent } = suspense;\r\n const el = (vnode.el = branch.el);\r\n // in case suspense is the root node of a component,\r\n // recursively update the HOC el\r\n if (parentComponent && parentComponent.subTree === vnode) {\r\n parentComponent.vnode.el = el;\r\n updateHOCHostEl(parentComponent, el);\r\n }\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`provide() can only be used inside setup().`);\r\n }\r\n }\r\n else {\r\n let provides = currentInstance.provides;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\r\n if (parentProvides === provides) {\r\n provides = currentInstance.provides = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n const instance = currentInstance || currentRenderingInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the intance is at root\r\n const provides = instance.parent == null\r\n ? instance.vnode.appContext && instance.vnode.appContext.provides\r\n : instance.parent.provides;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue.call(instance.proxy)\r\n : defaultValue;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injection \"${String(key)}\" not found.`);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`inject() can only be used inside setup() or functional components.`);\r\n }\r\n}\n\nfunction useTransitionState() {\r\n const state = {\r\n isMounted: false,\r\n isLeaving: false,\r\n isUnmounting: false,\r\n leavingVNodes: new Map()\r\n };\r\n onMounted(() => {\r\n state.isMounted = true;\r\n });\r\n onBeforeUnmount(() => {\r\n state.isUnmounting = true;\r\n });\r\n return state;\r\n}\r\nconst TransitionHookValidator = [Function, Array];\r\nconst BaseTransitionImpl = {\r\n name: `BaseTransition`,\r\n props: {\r\n mode: String,\r\n appear: Boolean,\r\n persisted: Boolean,\r\n // enter\r\n onBeforeEnter: TransitionHookValidator,\r\n onEnter: TransitionHookValidator,\r\n onAfterEnter: TransitionHookValidator,\r\n onEnterCancelled: TransitionHookValidator,\r\n // leave\r\n onBeforeLeave: TransitionHookValidator,\r\n onLeave: TransitionHookValidator,\r\n onAfterLeave: TransitionHookValidator,\r\n onLeaveCancelled: TransitionHookValidator,\r\n // appear\r\n onBeforeAppear: TransitionHookValidator,\r\n onAppear: TransitionHookValidator,\r\n onAfterAppear: TransitionHookValidator,\r\n onAppearCancelled: TransitionHookValidator\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevTransitionKey;\r\n return () => {\r\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\r\n if (!children || !children.length) {\r\n return;\r\n }\r\n // warn multiple elements\r\n if ((process.env.NODE_ENV !== 'production') && children.length > 1) {\r\n warn(' can only be used on a single element or component. Use ' +\r\n ' for lists.');\r\n }\r\n // there's no need to track reactivity for these props so use the raw\r\n // props for a bit better perf\r\n const rawProps = toRaw(props);\r\n const { mode } = rawProps;\r\n // check mode\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n mode &&\r\n mode !== 'in-out' && mode !== 'out-in' && mode !== 'default') {\r\n warn(`invalid mode: ${mode}`);\r\n }\r\n // at this point children has a guaranteed length of 1.\r\n const child = children[0];\r\n if (state.isLeaving) {\r\n return emptyPlaceholder(child);\r\n }\r\n // in the case of , we need to\r\n // compare the type of the kept-alive children.\r\n const innerChild = getKeepAliveChild(child);\r\n if (!innerChild) {\r\n return emptyPlaceholder(child);\r\n }\r\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\r\n setTransitionHooks(innerChild, enterHooks);\r\n const oldChild = instance.subTree;\r\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\r\n let transitionKeyChanged = false;\r\n const { getTransitionKey } = innerChild.type;\r\n if (getTransitionKey) {\r\n const key = getTransitionKey();\r\n if (prevTransitionKey === undefined) {\r\n prevTransitionKey = key;\r\n }\r\n else if (key !== prevTransitionKey) {\r\n prevTransitionKey = key;\r\n transitionKeyChanged = true;\r\n }\r\n }\r\n // handle mode\r\n if (oldInnerChild &&\r\n oldInnerChild.type !== Comment &&\r\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\r\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\r\n // update old tree's hooks in case of dynamic transition\r\n setTransitionHooks(oldInnerChild, leavingHooks);\r\n // switching between different views\r\n if (mode === 'out-in') {\r\n state.isLeaving = true;\r\n // return placeholder node and queue update when leave finishes\r\n leavingHooks.afterLeave = () => {\r\n state.isLeaving = false;\r\n instance.update();\r\n };\r\n return emptyPlaceholder(child);\r\n }\r\n else if (mode === 'in-out' && innerChild.type !== Comment) {\r\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\r\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\r\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\r\n // early removal callback\r\n el._leaveCb = () => {\r\n earlyRemove();\r\n el._leaveCb = undefined;\r\n delete enterHooks.delayedLeave;\r\n };\r\n enterHooks.delayedLeave = delayedLeave;\r\n };\r\n }\r\n }\r\n return child;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst BaseTransition = BaseTransitionImpl;\r\nfunction getLeavingNodesForType(state, vnode) {\r\n const { leavingVNodes } = state;\r\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\r\n if (!leavingVNodesCache) {\r\n leavingVNodesCache = Object.create(null);\r\n leavingVNodes.set(vnode.type, leavingVNodesCache);\r\n }\r\n return leavingVNodesCache;\r\n}\r\n// The transition hooks are attached to the vnode as vnode.transition\r\n// and will be called at appropriate timing in the renderer.\r\nfunction resolveTransitionHooks(vnode, props, state, instance) {\r\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\r\n const key = String(vnode.key);\r\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\r\n const callHook = (hook, args) => {\r\n hook &&\r\n callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);\r\n };\r\n const hooks = {\r\n mode,\r\n persisted,\r\n beforeEnter(el) {\r\n let hook = onBeforeEnter;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onBeforeAppear || onBeforeEnter;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // for same element (v-show)\r\n if (el._leaveCb) {\r\n el._leaveCb(true /* cancelled */);\r\n }\r\n // for toggled element with same key (v-if)\r\n const leavingVNode = leavingVNodesCache[key];\r\n if (leavingVNode &&\r\n isSameVNodeType(vnode, leavingVNode) &&\r\n leavingVNode.el._leaveCb) {\r\n // force early removal (not cancelled)\r\n leavingVNode.el._leaveCb();\r\n }\r\n callHook(hook, [el]);\r\n },\r\n enter(el) {\r\n let hook = onEnter;\r\n let afterHook = onAfterEnter;\r\n let cancelHook = onEnterCancelled;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onAppear || onEnter;\r\n afterHook = onAfterAppear || onAfterEnter;\r\n cancelHook = onAppearCancelled || onEnterCancelled;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n let called = false;\r\n const done = (el._enterCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n if (cancelled) {\r\n callHook(cancelHook, [el]);\r\n }\r\n else {\r\n callHook(afterHook, [el]);\r\n }\r\n if (hooks.delayedLeave) {\r\n hooks.delayedLeave();\r\n }\r\n el._enterCb = undefined;\r\n });\r\n if (hook) {\r\n hook(el, done);\r\n if (hook.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n leave(el, remove) {\r\n const key = String(vnode.key);\r\n if (el._enterCb) {\r\n el._enterCb(true /* cancelled */);\r\n }\r\n if (state.isUnmounting) {\r\n return remove();\r\n }\r\n callHook(onBeforeLeave, [el]);\r\n let called = false;\r\n const done = (el._leaveCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n remove();\r\n if (cancelled) {\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n else {\r\n callHook(onAfterLeave, [el]);\r\n }\r\n el._leaveCb = undefined;\r\n if (leavingVNodesCache[key] === vnode) {\r\n delete leavingVNodesCache[key];\r\n }\r\n });\r\n leavingVNodesCache[key] = vnode;\r\n if (onLeave) {\r\n onLeave(el, done);\r\n if (onLeave.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n clone(vnode) {\r\n return resolveTransitionHooks(vnode, props, state, instance);\r\n }\r\n };\r\n return hooks;\r\n}\r\n// the placeholder really only handles one special case: KeepAlive\r\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\r\n// placeholder with empty content to avoid the KeepAlive instance from being\r\n// unmounted.\r\nfunction emptyPlaceholder(vnode) {\r\n if (isKeepAlive(vnode)) {\r\n vnode = cloneVNode(vnode);\r\n vnode.children = null;\r\n return vnode;\r\n }\r\n}\r\nfunction getKeepAliveChild(vnode) {\r\n return isKeepAlive(vnode)\r\n ? vnode.children\r\n ? vnode.children[0]\r\n : undefined\r\n : vnode;\r\n}\r\nfunction setTransitionHooks(vnode, hooks) {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {\r\n setTransitionHooks(vnode.component.subTree, hooks);\r\n }\r\n else if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\r\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\r\n }\r\n else {\r\n vnode.transition = hooks;\r\n }\r\n}\r\nfunction getTransitionRawChildren(children, keepComment = false) {\r\n let ret = [];\r\n let keyedFragmentCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n // handle fragment children case, e.g. v-for\r\n if (child.type === Fragment) {\r\n if (child.patchFlag & 128 /* KEYED_FRAGMENT */)\r\n keyedFragmentCount++;\r\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment));\r\n }\r\n // comment placeholders should be skipped, e.g. v-if\r\n else if (keepComment || child.type !== Comment) {\r\n ret.push(child);\r\n }\r\n }\r\n // #1126 if a transition children list contains multiple sub fragments, these\r\n // fragments will be merged into a flat children array. Since each v-for\r\n // fragment may contain different static bindings inside, we need to de-op\r\n // these children to force full diffs to ensure correct behavior.\r\n if (keyedFragmentCount > 1) {\r\n for (let i = 0; i < ret.length; i++) {\r\n ret[i].patchFlag = -2 /* BAIL */;\r\n }\r\n }\r\n return ret;\r\n}\n\n// implementation, close to no-op\r\nfunction defineComponent(options) {\r\n return isFunction(options) ? { setup: options, name: options.name } : options;\r\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\r\nfunction defineAsyncComponent(source) {\r\n if (isFunction(source)) {\r\n source = { loader: source };\r\n }\r\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\r\n suspensible = true, onError: userOnError } = source;\r\n let pendingRequest = null;\r\n let resolvedComp;\r\n let retries = 0;\r\n const retry = () => {\r\n retries++;\r\n pendingRequest = null;\r\n return load();\r\n };\r\n const load = () => {\r\n let thisRequest;\r\n return (pendingRequest ||\r\n (thisRequest = pendingRequest =\r\n loader()\r\n .catch(err => {\r\n err = err instanceof Error ? err : new Error(String(err));\r\n if (userOnError) {\r\n return new Promise((resolve, reject) => {\r\n const userRetry = () => resolve(retry());\r\n const userFail = () => reject(err);\r\n userOnError(err, userRetry, userFail, retries + 1);\r\n });\r\n }\r\n else {\r\n throw err;\r\n }\r\n })\r\n .then((comp) => {\r\n if (thisRequest !== pendingRequest && pendingRequest) {\r\n return pendingRequest;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && !comp) {\r\n warn(`Async component loader resolved to undefined. ` +\r\n `If you are using retry(), make sure to return its return value.`);\r\n }\r\n // interop module default\r\n if (comp &&\r\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\r\n throw new Error(`Invalid async component load result: ${comp}`);\r\n }\r\n resolvedComp = comp;\r\n return comp;\r\n })));\r\n };\r\n return defineComponent({\r\n name: 'AsyncComponentWrapper',\r\n __asyncLoader: load,\r\n get __asyncResolved() {\r\n return resolvedComp;\r\n },\r\n setup() {\r\n const instance = currentInstance;\r\n // already resolved\r\n if (resolvedComp) {\r\n return () => createInnerComp(resolvedComp, instance);\r\n }\r\n const onError = (err) => {\r\n pendingRequest = null;\r\n handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\r\n };\r\n // suspense-controlled or SSR.\r\n if ((suspensible && instance.suspense) ||\r\n (isInSSRComponentSetup)) {\r\n return load()\r\n .then(comp => {\r\n return () => createInnerComp(comp, instance);\r\n })\r\n .catch(err => {\r\n onError(err);\r\n return () => errorComponent\r\n ? createVNode(errorComponent, {\r\n error: err\r\n })\r\n : null;\r\n });\r\n }\r\n const loaded = ref(false);\r\n const error = ref();\r\n const delayed = ref(!!delay);\r\n if (delay) {\r\n setTimeout(() => {\r\n delayed.value = false;\r\n }, delay);\r\n }\r\n if (timeout != null) {\r\n setTimeout(() => {\r\n if (!loaded.value && !error.value) {\r\n const err = new Error(`Async component timed out after ${timeout}ms.`);\r\n onError(err);\r\n error.value = err;\r\n }\r\n }, timeout);\r\n }\r\n load()\r\n .then(() => {\r\n loaded.value = true;\r\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\r\n // parent is keep-alive, force update so the loaded component's\r\n // name is taken into account\r\n queueJob(instance.parent.update);\r\n }\r\n })\r\n .catch(err => {\r\n onError(err);\r\n error.value = err;\r\n });\r\n return () => {\r\n if (loaded.value && resolvedComp) {\r\n return createInnerComp(resolvedComp, instance);\r\n }\r\n else if (error.value && errorComponent) {\r\n return createVNode(errorComponent, {\r\n error: error.value\r\n });\r\n }\r\n else if (loadingComponent && !delayed.value) {\r\n return createVNode(loadingComponent);\r\n }\r\n };\r\n }\r\n });\r\n}\r\nfunction createInnerComp(comp, { vnode: { ref, props, children } }) {\r\n const vnode = createVNode(comp, props, children);\r\n // ensure inner component inherits the async wrapper's ref owner\r\n vnode.ref = ref;\r\n return vnode;\r\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\r\nconst KeepAliveImpl = {\r\n name: `KeepAlive`,\r\n // Marker for special handling inside the renderer. We are not using a ===\r\n // check directly on KeepAlive in the renderer, because importing it directly\r\n // would prevent it from being tree-shaken.\r\n __isKeepAlive: true,\r\n props: {\r\n include: [String, RegExp, Array],\r\n exclude: [String, RegExp, Array],\r\n max: [String, Number]\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n // KeepAlive communicates with the instantiated renderer via the\r\n // ctx where the renderer passes in its internals,\r\n // and the KeepAlive instance exposes activate/deactivate implementations.\r\n // The whole point of this is to avoid importing KeepAlive directly in the\r\n // renderer to facilitate tree-shaking.\r\n const sharedContext = instance.ctx;\r\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\r\n // for KeepAlive, we just need to render its children\r\n if (!sharedContext.renderer) {\r\n return slots.default;\r\n }\r\n const cache = new Map();\r\n const keys = new Set();\r\n let current = null;\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n instance.__v_cache = cache;\r\n }\r\n const parentSuspense = instance.suspense;\r\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\r\n const storageContainer = createElement('div');\r\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\r\n const instance = vnode.component;\r\n move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);\r\n // in case props have changed\r\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\r\n queuePostRenderEffect(() => {\r\n instance.isDeactivated = false;\r\n if (instance.a) {\r\n invokeArrayFns(instance.a);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n }, parentSuspense);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n sharedContext.deactivate = (vnode) => {\r\n const instance = vnode.component;\r\n move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);\r\n queuePostRenderEffect(() => {\r\n if (instance.da) {\r\n invokeArrayFns(instance.da);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n instance.isDeactivated = true;\r\n }, parentSuspense);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n function unmount(vnode) {\r\n // reset the shapeFlag so it can be properly unmounted\r\n resetShapeFlag(vnode);\r\n _unmount(vnode, instance, parentSuspense);\r\n }\r\n function pruneCache(filter) {\r\n cache.forEach((vnode, key) => {\r\n const name = getComponentName(vnode.type);\r\n if (name && (!filter || !filter(name))) {\r\n pruneCacheEntry(key);\r\n }\r\n });\r\n }\r\n function pruneCacheEntry(key) {\r\n const cached = cache.get(key);\r\n if (!current || cached.type !== current.type) {\r\n unmount(cached);\r\n }\r\n else if (current) {\r\n // current active instance should no longer be kept-alive.\r\n // we can't unmount it now but it might be later, so reset its flag now.\r\n resetShapeFlag(current);\r\n }\r\n cache.delete(key);\r\n keys.delete(key);\r\n }\r\n // prune cache on include/exclude prop change\r\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\r\n include && pruneCache(name => matches(include, name));\r\n exclude && pruneCache(name => !matches(exclude, name));\r\n }, \r\n // prune post-render after `current` has been updated\r\n { flush: 'post', deep: true });\r\n // cache sub tree after render\r\n let pendingCacheKey = null;\r\n const cacheSubtree = () => {\r\n // fix #1621, the pendingCacheKey could be 0\r\n if (pendingCacheKey != null) {\r\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\r\n }\r\n };\r\n onMounted(cacheSubtree);\r\n onUpdated(cacheSubtree);\r\n onBeforeUnmount(() => {\r\n cache.forEach(cached => {\r\n const { subTree, suspense } = instance;\r\n const vnode = getInnerChild(subTree);\r\n if (cached.type === vnode.type) {\r\n // current instance will be unmounted as part of keep-alive's unmount\r\n resetShapeFlag(vnode);\r\n // but invoke its deactivated hook here\r\n const da = vnode.component.da;\r\n da && queuePostRenderEffect(da, suspense);\r\n return;\r\n }\r\n unmount(cached);\r\n });\r\n });\r\n return () => {\r\n pendingCacheKey = null;\r\n if (!slots.default) {\r\n return null;\r\n }\r\n const children = slots.default();\r\n const rawVNode = children[0];\r\n if (children.length > 1) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`KeepAlive should contain exactly one component child.`);\r\n }\r\n current = null;\r\n return children;\r\n }\r\n else if (!isVNode(rawVNode) ||\r\n (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&\r\n !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {\r\n current = null;\r\n return rawVNode;\r\n }\r\n let vnode = getInnerChild(rawVNode);\r\n const comp = vnode.type;\r\n // for async components, name check should be based in its loaded\r\n // inner component if available\r\n const name = getComponentName(isAsyncWrapper(vnode)\r\n ? vnode.type.__asyncResolved || {}\r\n : comp);\r\n const { include, exclude, max } = props;\r\n if ((include && (!name || !matches(include, name))) ||\r\n (exclude && name && matches(exclude, name))) {\r\n current = vnode;\r\n return rawVNode;\r\n }\r\n const key = vnode.key == null ? comp : vnode.key;\r\n const cachedVNode = cache.get(key);\r\n // clone vnode if it's reused because we are going to mutate it\r\n if (vnode.el) {\r\n vnode = cloneVNode(vnode);\r\n if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {\r\n rawVNode.ssContent = vnode;\r\n }\r\n }\r\n // #1513 it's possible for the returned vnode to be cloned due to attr\r\n // fallthrough or scopeId, so the vnode here may not be the final vnode\r\n // that is mounted. Instead of caching it directly, we store the pending\r\n // key and cache `instance.subTree` (the normalized vnode) in\r\n // beforeMount/beforeUpdate hooks.\r\n pendingCacheKey = key;\r\n if (cachedVNode) {\r\n // copy over mounted state\r\n vnode.el = cachedVNode.el;\r\n vnode.component = cachedVNode.component;\r\n if (vnode.transition) {\r\n // recursively update transition hooks on subTree\r\n setTransitionHooks(vnode, vnode.transition);\r\n }\r\n // avoid vnode being mounted as fresh\r\n vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;\r\n // make this key the freshest\r\n keys.delete(key);\r\n keys.add(key);\r\n }\r\n else {\r\n keys.add(key);\r\n // prune oldest entry\r\n if (max && keys.size > parseInt(max, 10)) {\r\n pruneCacheEntry(keys.values().next().value);\r\n }\r\n }\r\n // avoid vnode being unmounted\r\n vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n current = vnode;\r\n return rawVNode;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst KeepAlive = KeepAliveImpl;\r\nfunction matches(pattern, name) {\r\n if (isArray(pattern)) {\r\n return pattern.some((p) => matches(p, name));\r\n }\r\n else if (isString(pattern)) {\r\n return pattern.split(',').indexOf(name) > -1;\r\n }\r\n else if (pattern.test) {\r\n return pattern.test(name);\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n}\r\nfunction onActivated(hook, target) {\r\n registerKeepAliveHook(hook, \"a\" /* ACTIVATED */, target);\r\n}\r\nfunction onDeactivated(hook, target) {\r\n registerKeepAliveHook(hook, \"da\" /* DEACTIVATED */, target);\r\n}\r\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\r\n // cache the deactivate branch check wrapper for injected hooks so the same\r\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\r\n // deactivation check\".\r\n const wrappedHook = hook.__wdc ||\r\n (hook.__wdc = () => {\r\n // only fire the hook if the target instance is NOT in a deactivated branch.\r\n let current = target;\r\n while (current) {\r\n if (current.isDeactivated) {\r\n return;\r\n }\r\n current = current.parent;\r\n }\r\n return hook();\r\n });\r\n injectHook(type, wrappedHook, target);\r\n // In addition to registering it on the target instance, we walk up the parent\r\n // chain and register it on all ancestor instances that are keep-alive roots.\r\n // This avoids the need to walk the entire component tree when invoking these\r\n // hooks, and more importantly, avoids the need to track child components in\r\n // arrays.\r\n if (target) {\r\n let current = target.parent;\r\n while (current && current.parent) {\r\n if (isKeepAlive(current.parent.vnode)) {\r\n injectToKeepAliveRoot(wrappedHook, type, target, current);\r\n }\r\n current = current.parent;\r\n }\r\n }\r\n}\r\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\r\n // injectHook wraps the original for error handling, so make sure to remove\r\n // the wrapped version.\r\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\r\n onUnmounted(() => {\r\n remove(keepAliveRoot[type], injected);\r\n }, target);\r\n}\r\nfunction resetShapeFlag(vnode) {\r\n let shapeFlag = vnode.shapeFlag;\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n }\r\n if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;\r\n }\r\n vnode.shapeFlag = shapeFlag;\r\n}\r\nfunction getInnerChild(vnode) {\r\n return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;\r\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\r\n if (target) {\r\n const hooks = target[type] || (target[type] = []);\r\n // cache the error handling wrapper for injected hooks so the same hook\r\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\r\n // handling\".\r\n const wrappedHook = hook.__weh ||\r\n (hook.__weh = (...args) => {\r\n if (target.isUnmounted) {\r\n return;\r\n }\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n pauseTracking();\r\n // Set currentInstance during hook invocation.\r\n // This assumes the hook does not synchronously trigger other hooks, which\r\n // can only be false when the user does something really funky.\r\n setCurrentInstance(target);\r\n const res = callWithAsyncErrorHandling(hook, target, type, args);\r\n unsetCurrentInstance();\r\n resetTracking();\r\n return res;\r\n });\r\n if (prepend) {\r\n hooks.unshift(wrappedHook);\r\n }\r\n else {\r\n hooks.push(wrappedHook);\r\n }\r\n return wrappedHook;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\r\n warn(`${apiName} is called when there is no active component instance to be ` +\r\n `associated with. ` +\r\n `Lifecycle injection APIs can only be used during execution of setup().` +\r\n (` If you are using async setup(), make sure to register lifecycle ` +\r\n `hooks before the first await statement.`\r\n ));\r\n }\r\n}\r\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \r\n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\r\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* SERVER_PREFETCH */) &&\r\n injectHook(lifecycle, hook, target);\r\nconst onBeforeMount = createHook(\"bm\" /* BEFORE_MOUNT */);\r\nconst onMounted = createHook(\"m\" /* MOUNTED */);\r\nconst onBeforeUpdate = createHook(\"bu\" /* BEFORE_UPDATE */);\r\nconst onUpdated = createHook(\"u\" /* UPDATED */);\r\nconst onBeforeUnmount = createHook(\"bum\" /* BEFORE_UNMOUNT */);\r\nconst onUnmounted = createHook(\"um\" /* UNMOUNTED */);\r\nconst onServerPrefetch = createHook(\"sp\" /* SERVER_PREFETCH */);\r\nconst onRenderTriggered = createHook(\"rtg\" /* RENDER_TRIGGERED */);\r\nconst onRenderTracked = createHook(\"rtc\" /* RENDER_TRACKED */);\r\nfunction onErrorCaptured(hook, target = currentInstance) {\r\n injectHook(\"ec\" /* ERROR_CAPTURED */, hook, target);\r\n}\n\nfunction createDuplicateChecker() {\r\n const cache = Object.create(null);\r\n return (type, key) => {\r\n if (cache[key]) {\r\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\r\n }\r\n else {\r\n cache[key] = type;\r\n }\r\n };\r\n}\r\nlet shouldCacheAccess = true;\r\nfunction applyOptions(instance) {\r\n const options = resolveMergedOptions(instance);\r\n const publicThis = instance.proxy;\r\n const ctx = instance.ctx;\r\n // do not cache property access on public proxy during state initialization\r\n shouldCacheAccess = false;\r\n // call beforeCreate first before accessing other options since\r\n // the hook may mutate resolved options (#2791)\r\n if (options.beforeCreate) {\r\n callHook(options.beforeCreate, instance, \"bc\" /* BEFORE_CREATE */);\r\n }\r\n const { \r\n // state\r\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \r\n // lifecycle\r\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \r\n // public API\r\n expose, inheritAttrs, \r\n // assets\r\n components, directives, filters } = options;\r\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const [propsOptions] = instance.propsOptions;\r\n if (propsOptions) {\r\n for (const key in propsOptions) {\r\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\r\n }\r\n }\r\n }\r\n // options initialization order (to be consistent with Vue 2):\r\n // - props (already done outside of this function)\r\n // - inject\r\n // - methods\r\n // - data (deferred since it relies on `this` access)\r\n // - computed\r\n // - watch (deferred since it relies on `this` access)\r\n if (injectOptions) {\r\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\r\n }\r\n if (methods) {\r\n for (const key in methods) {\r\n const methodHandler = methods[key];\r\n if (isFunction(methodHandler)) {\r\n // In dev mode, we use the `createRenderContext` function to define\r\n // methods to the proxy target, and those are read-only but\r\n // reconfigurable, so it needs to be redefined here\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n Object.defineProperty(ctx, key, {\r\n value: methodHandler.bind(publicThis),\r\n configurable: true,\r\n enumerable: true,\r\n writable: true\r\n });\r\n }\r\n else {\r\n ctx[key] = methodHandler.bind(publicThis);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\r\n `Did you reference the function correctly?`);\r\n }\r\n }\r\n }\r\n if (dataOptions) {\r\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\r\n warn(`The data option must be a function. ` +\r\n `Plain object usage is no longer supported.`);\r\n }\r\n const data = dataOptions.call(publicThis, publicThis);\r\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\r\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\r\n `intend to perform data fetching before component renders, use ` +\r\n `async setup() + .`);\r\n }\r\n if (!isObject(data)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\r\n }\r\n else {\r\n instance.data = reactive(data);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n for (const key in data) {\r\n checkDuplicateProperties(\"Data\" /* DATA */, key);\r\n // expose data on ctx during dev\r\n if (key[0] !== '$' && key[0] !== '_') {\r\n Object.defineProperty(ctx, key, {\r\n configurable: true,\r\n enumerable: true,\r\n get: () => data[key],\r\n set: NOOP\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // state initialization complete at this point - start caching access\r\n shouldCacheAccess = true;\r\n if (computedOptions) {\r\n for (const key in computedOptions) {\r\n const opt = computedOptions[key];\r\n const get = isFunction(opt)\r\n ? opt.bind(publicThis, publicThis)\r\n : isFunction(opt.get)\r\n ? opt.get.bind(publicThis, publicThis)\r\n : NOOP;\r\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\r\n warn(`Computed property \"${key}\" has no getter.`);\r\n }\r\n const set = !isFunction(opt) && isFunction(opt.set)\r\n ? opt.set.bind(publicThis)\r\n : (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\r\n }\r\n : NOOP;\r\n const c = computed({\r\n get,\r\n set\r\n });\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => c.value,\r\n set: v => (c.value = v)\r\n });\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\r\n }\r\n }\r\n }\r\n if (watchOptions) {\r\n for (const key in watchOptions) {\r\n createWatcher(watchOptions[key], ctx, publicThis, key);\r\n }\r\n }\r\n if (provideOptions) {\r\n const provides = isFunction(provideOptions)\r\n ? provideOptions.call(publicThis)\r\n : provideOptions;\r\n Reflect.ownKeys(provides).forEach(key => {\r\n provide(key, provides[key]);\r\n });\r\n }\r\n if (created) {\r\n callHook(created, instance, \"c\" /* CREATED */);\r\n }\r\n function registerLifecycleHook(register, hook) {\r\n if (isArray(hook)) {\r\n hook.forEach(_hook => register(_hook.bind(publicThis)));\r\n }\r\n else if (hook) {\r\n register(hook.bind(publicThis));\r\n }\r\n }\r\n registerLifecycleHook(onBeforeMount, beforeMount);\r\n registerLifecycleHook(onMounted, mounted);\r\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\r\n registerLifecycleHook(onUpdated, updated);\r\n registerLifecycleHook(onActivated, activated);\r\n registerLifecycleHook(onDeactivated, deactivated);\r\n registerLifecycleHook(onErrorCaptured, errorCaptured);\r\n registerLifecycleHook(onRenderTracked, renderTracked);\r\n registerLifecycleHook(onRenderTriggered, renderTriggered);\r\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\r\n registerLifecycleHook(onUnmounted, unmounted);\r\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\r\n if (isArray(expose)) {\r\n if (expose.length) {\r\n const exposed = instance.exposed || (instance.exposed = {});\r\n expose.forEach(key => {\r\n Object.defineProperty(exposed, key, {\r\n get: () => publicThis[key],\r\n set: val => (publicThis[key] = val)\r\n });\r\n });\r\n }\r\n else if (!instance.exposed) {\r\n instance.exposed = {};\r\n }\r\n }\r\n // options that are handled when creating the instance but also need to be\r\n // applied from mixins\r\n if (render && instance.render === NOOP) {\r\n instance.render = render;\r\n }\r\n if (inheritAttrs != null) {\r\n instance.inheritAttrs = inheritAttrs;\r\n }\r\n // asset options.\r\n if (components)\r\n instance.components = components;\r\n if (directives)\r\n instance.directives = directives;\r\n}\r\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\r\n if (isArray(injectOptions)) {\r\n injectOptions = normalizeInject(injectOptions);\r\n }\r\n for (const key in injectOptions) {\r\n const opt = injectOptions[key];\r\n let injected;\r\n if (isObject(opt)) {\r\n if ('default' in opt) {\r\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\r\n }\r\n else {\r\n injected = inject(opt.from || key);\r\n }\r\n }\r\n else {\r\n injected = inject(opt);\r\n }\r\n if (isRef(injected)) {\r\n // TODO remove the check in 3.3\r\n if (unwrapRef) {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => injected.value,\r\n set: v => (injected.value = v)\r\n });\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\r\n `and no longer needs \\`.value\\` in the next minor release. ` +\r\n `To opt-in to the new behavior now, ` +\r\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\r\n `temporary and will not be needed in the future.)`);\r\n }\r\n ctx[key] = injected;\r\n }\r\n }\r\n else {\r\n ctx[key] = injected;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\r\n }\r\n }\r\n}\r\nfunction callHook(hook, instance, type) {\r\n callWithAsyncErrorHandling(isArray(hook)\r\n ? hook.map(h => h.bind(instance.proxy))\r\n : hook.bind(instance.proxy), instance, type);\r\n}\r\nfunction createWatcher(raw, ctx, publicThis, key) {\r\n const getter = key.includes('.')\r\n ? createPathGetter(publicThis, key)\r\n : () => publicThis[key];\r\n if (isString(raw)) {\r\n const handler = ctx[raw];\r\n if (isFunction(handler)) {\r\n watch(getter, handler);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\r\n }\r\n }\r\n else if (isFunction(raw)) {\r\n watch(getter, raw.bind(publicThis));\r\n }\r\n else if (isObject(raw)) {\r\n if (isArray(raw)) {\r\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\r\n }\r\n else {\r\n const handler = isFunction(raw.handler)\r\n ? raw.handler.bind(publicThis)\r\n : ctx[raw.handler];\r\n if (isFunction(handler)) {\r\n watch(getter, handler, raw);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\r\n }\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch option: \"${key}\"`, raw);\r\n }\r\n}\r\n/**\r\n * Resolve merged options and cache it on the component.\r\n * This is done only once per-component since the merging does not involve\r\n * instances.\r\n */\r\nfunction resolveMergedOptions(instance) {\r\n const base = instance.type;\r\n const { mixins, extends: extendsOptions } = base;\r\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\r\n const cached = cache.get(base);\r\n let resolved;\r\n if (cached) {\r\n resolved = cached;\r\n }\r\n else if (!globalMixins.length && !mixins && !extendsOptions) {\r\n {\r\n resolved = base;\r\n }\r\n }\r\n else {\r\n resolved = {};\r\n if (globalMixins.length) {\r\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\r\n }\r\n mergeOptions(resolved, base, optionMergeStrategies);\r\n }\r\n cache.set(base, resolved);\r\n return resolved;\r\n}\r\nfunction mergeOptions(to, from, strats, asMixin = false) {\r\n const { mixins, extends: extendsOptions } = from;\r\n if (extendsOptions) {\r\n mergeOptions(to, extendsOptions, strats, true);\r\n }\r\n if (mixins) {\r\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\r\n }\r\n for (const key in from) {\r\n if (asMixin && key === 'expose') {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\r\n `It should only be declared in the base component itself.`);\r\n }\r\n else {\r\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\r\n to[key] = strat ? strat(to[key], from[key]) : from[key];\r\n }\r\n }\r\n return to;\r\n}\r\nconst internalOptionMergeStrats = {\r\n data: mergeDataFn,\r\n props: mergeObjectOptions,\r\n emits: mergeObjectOptions,\r\n // objects\r\n methods: mergeObjectOptions,\r\n computed: mergeObjectOptions,\r\n // lifecycle\r\n beforeCreate: mergeAsArray,\r\n created: mergeAsArray,\r\n beforeMount: mergeAsArray,\r\n mounted: mergeAsArray,\r\n beforeUpdate: mergeAsArray,\r\n updated: mergeAsArray,\r\n beforeDestroy: mergeAsArray,\r\n beforeUnmount: mergeAsArray,\r\n destroyed: mergeAsArray,\r\n unmounted: mergeAsArray,\r\n activated: mergeAsArray,\r\n deactivated: mergeAsArray,\r\n errorCaptured: mergeAsArray,\r\n serverPrefetch: mergeAsArray,\r\n // assets\r\n components: mergeObjectOptions,\r\n directives: mergeObjectOptions,\r\n // watch\r\n watch: mergeWatchOptions,\r\n // provide / inject\r\n provide: mergeDataFn,\r\n inject: mergeInject\r\n};\r\nfunction mergeDataFn(to, from) {\r\n if (!from) {\r\n return to;\r\n }\r\n if (!to) {\r\n return from;\r\n }\r\n return function mergedDataFn() {\r\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\r\n };\r\n}\r\nfunction mergeInject(to, from) {\r\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\r\n}\r\nfunction normalizeInject(raw) {\r\n if (isArray(raw)) {\r\n const res = {};\r\n for (let i = 0; i < raw.length; i++) {\r\n res[raw[i]] = raw[i];\r\n }\r\n return res;\r\n }\r\n return raw;\r\n}\r\nfunction mergeAsArray(to, from) {\r\n return to ? [...new Set([].concat(to, from))] : from;\r\n}\r\nfunction mergeObjectOptions(to, from) {\r\n return to ? extend(extend(Object.create(null), to), from) : from;\r\n}\r\nfunction mergeWatchOptions(to, from) {\r\n if (!to)\r\n return from;\r\n if (!from)\r\n return to;\r\n const merged = extend(Object.create(null), to);\r\n for (const key in from) {\r\n merged[key] = mergeAsArray(to[key], from[key]);\r\n }\r\n return merged;\r\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\r\nisSSR = false) {\r\n const props = {};\r\n const attrs = {};\r\n def(attrs, InternalObjectKey, 1);\r\n instance.propsDefaults = Object.create(null);\r\n setFullProps(instance, rawProps, props, attrs);\r\n // ensure all declared prop keys are present\r\n for (const key in instance.propsOptions[0]) {\r\n if (!(key in props)) {\r\n props[key] = undefined;\r\n }\r\n }\r\n // validation\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n if (isStateful) {\r\n // stateful\r\n instance.props = isSSR ? props : shallowReactive(props);\r\n }\r\n else {\r\n if (!instance.type.props) {\r\n // functional w/ optional props, props === attrs\r\n instance.props = attrs;\r\n }\r\n else {\r\n // functional w/ declared props\r\n instance.props = props;\r\n }\r\n }\r\n instance.attrs = attrs;\r\n}\r\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\r\n const { props, attrs, vnode: { patchFlag } } = instance;\r\n const rawCurrentProps = toRaw(props);\r\n const [options] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n if (\r\n // always force full diff in dev\r\n // - #1942 if hmr is enabled with sfc component\r\n // - vite#872 non-sfc component used by sfc component\r\n !((process.env.NODE_ENV !== 'production') &&\r\n (instance.type.__hmrId ||\r\n (instance.parent && instance.parent.type.__hmrId))) &&\r\n (optimized || patchFlag > 0) &&\r\n !(patchFlag & 16 /* FULL_PROPS */)) {\r\n if (patchFlag & 8 /* PROPS */) {\r\n // Compiler-generated props & no keys change, just set the updated\r\n // the props.\r\n const propsToUpdate = instance.vnode.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n let key = propsToUpdate[i];\r\n // PROPS flag guarantees rawProps to be non-null\r\n const value = rawProps[key];\r\n if (options) {\r\n // attr / props separation was done on init and will be consistent\r\n // in this code path, so just check if attrs have it.\r\n if (hasOwn(attrs, key)) {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n else {\r\n const camelizedKey = camelize(key);\r\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\r\n }\r\n }\r\n else {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // full props update.\r\n if (setFullProps(instance, rawProps, props, attrs)) {\r\n hasAttrsChanged = true;\r\n }\r\n // in case of dynamic props, check if we need to delete keys from\r\n // the props object\r\n let kebabKey;\r\n for (const key in rawCurrentProps) {\r\n if (!rawProps ||\r\n // for camelCase\r\n (!hasOwn(rawProps, key) &&\r\n // it's possible the original props was passed in as kebab-case\r\n // and converted to camelCase (#955)\r\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\r\n if (options) {\r\n if (rawPrevProps &&\r\n // for camelCase\r\n (rawPrevProps[key] !== undefined ||\r\n // for kebab-case\r\n rawPrevProps[kebabKey] !== undefined)) {\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\r\n }\r\n }\r\n else {\r\n delete props[key];\r\n }\r\n }\r\n }\r\n // in the case of functional component w/o props declaration, props and\r\n // attrs point to the same object so it should already have been updated.\r\n if (attrs !== rawCurrentProps) {\r\n for (const key in attrs) {\r\n if (!rawProps || !hasOwn(rawProps, key)) {\r\n delete attrs[key];\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n // trigger updates for $attrs in case it's used in component slots\r\n if (hasAttrsChanged) {\r\n trigger(instance, \"set\" /* SET */, '$attrs');\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n}\r\nfunction setFullProps(instance, rawProps, props, attrs) {\r\n const [options, needCastKeys] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n let rawCastValues;\r\n if (rawProps) {\r\n for (let key in rawProps) {\r\n // key, ref are reserved and never passed down\r\n if (isReservedProp(key)) {\r\n continue;\r\n }\r\n const value = rawProps[key];\r\n // prop option names are camelized during normalization, so to support\r\n // kebab -> camel conversion here we need to camelize the key.\r\n let camelKey;\r\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\r\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\r\n props[camelKey] = value;\r\n }\r\n else {\r\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\r\n }\r\n }\r\n else if (!isEmitListener(instance.emitsOptions, key)) {\r\n if (!(key in attrs) || value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n if (needCastKeys) {\r\n const rawCurrentProps = toRaw(props);\r\n const castValues = rawCastValues || EMPTY_OBJ;\r\n for (let i = 0; i < needCastKeys.length; i++) {\r\n const key = needCastKeys[i];\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\r\n }\r\n }\r\n return hasAttrsChanged;\r\n}\r\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\r\n const opt = options[key];\r\n if (opt != null) {\r\n const hasDefault = hasOwn(opt, 'default');\r\n // default values\r\n if (hasDefault && value === undefined) {\r\n const defaultValue = opt.default;\r\n if (opt.type !== Function && isFunction(defaultValue)) {\r\n const { propsDefaults } = instance;\r\n if (key in propsDefaults) {\r\n value = propsDefaults[key];\r\n }\r\n else {\r\n setCurrentInstance(instance);\r\n value = propsDefaults[key] = defaultValue.call(null, props);\r\n unsetCurrentInstance();\r\n }\r\n }\r\n else {\r\n value = defaultValue;\r\n }\r\n }\r\n // boolean casting\r\n if (opt[0 /* shouldCast */]) {\r\n if (isAbsent && !hasDefault) {\r\n value = false;\r\n }\r\n else if (opt[1 /* shouldCastTrue */] &&\r\n (value === '' || value === hyphenate(key))) {\r\n value = true;\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.propsCache;\r\n const cached = cache.get(comp);\r\n if (cached) {\r\n return cached;\r\n }\r\n const raw = comp.props;\r\n const normalized = {};\r\n const needCastKeys = [];\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendProps = (raw) => {\r\n hasExtends = true;\r\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\r\n extend(normalized, props);\r\n if (keys)\r\n needCastKeys.push(...keys);\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendProps);\r\n }\r\n if (comp.extends) {\r\n extendProps(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendProps);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, EMPTY_ARR);\r\n return EMPTY_ARR;\r\n }\r\n if (isArray(raw)) {\r\n for (let i = 0; i < raw.length; i++) {\r\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\r\n warn(`props must be strings when using array syntax.`, raw[i]);\r\n }\r\n const normalizedKey = camelize(raw[i]);\r\n if (validatePropName(normalizedKey)) {\r\n normalized[normalizedKey] = EMPTY_OBJ;\r\n }\r\n }\r\n }\r\n else if (raw) {\r\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\r\n warn(`invalid props options`, raw);\r\n }\r\n for (const key in raw) {\r\n const normalizedKey = camelize(key);\r\n if (validatePropName(normalizedKey)) {\r\n const opt = raw[key];\r\n const prop = (normalized[normalizedKey] =\r\n isArray(opt) || isFunction(opt) ? { type: opt } : opt);\r\n if (prop) {\r\n const booleanIndex = getTypeIndex(Boolean, prop.type);\r\n const stringIndex = getTypeIndex(String, prop.type);\r\n prop[0 /* shouldCast */] = booleanIndex > -1;\r\n prop[1 /* shouldCastTrue */] =\r\n stringIndex < 0 || booleanIndex < stringIndex;\r\n // if the prop needs boolean casting or default value\r\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\r\n needCastKeys.push(normalizedKey);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const res = [normalized, needCastKeys];\r\n cache.set(comp, res);\r\n return res;\r\n}\r\nfunction validatePropName(key) {\r\n if (key[0] !== '$') {\r\n return true;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\r\n }\r\n return false;\r\n}\r\n// use function string name to check type constructors\r\n// so that it works across vms / iframes.\r\nfunction getType(ctor) {\r\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\r\n return match ? match[1] : ctor === null ? 'null' : '';\r\n}\r\nfunction isSameType(a, b) {\r\n return getType(a) === getType(b);\r\n}\r\nfunction getTypeIndex(type, expectedTypes) {\r\n if (isArray(expectedTypes)) {\r\n return expectedTypes.findIndex(t => isSameType(t, type));\r\n }\r\n else if (isFunction(expectedTypes)) {\r\n return isSameType(expectedTypes, type) ? 0 : -1;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProps(rawProps, props, instance) {\r\n const resolvedValues = toRaw(props);\r\n const options = instance.propsOptions[0];\r\n for (const key in options) {\r\n let opt = options[key];\r\n if (opt == null)\r\n continue;\r\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProp(name, value, prop, isAbsent) {\r\n const { type, required, validator } = prop;\r\n // required!\r\n if (required && isAbsent) {\r\n warn('Missing required prop: \"' + name + '\"');\r\n return;\r\n }\r\n // missing but optional\r\n if (value == null && !prop.required) {\r\n return;\r\n }\r\n // type check\r\n if (type != null && type !== true) {\r\n let isValid = false;\r\n const types = isArray(type) ? type : [type];\r\n const expectedTypes = [];\r\n // value is valid as long as one of the specified types match\r\n for (let i = 0; i < types.length && !isValid; i++) {\r\n const { valid, expectedType } = assertType(value, types[i]);\r\n expectedTypes.push(expectedType || '');\r\n isValid = valid;\r\n }\r\n if (!isValid) {\r\n warn(getInvalidTypeMessage(name, value, expectedTypes));\r\n return;\r\n }\r\n }\r\n // custom validator\r\n if (validator && !validator(value)) {\r\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\r\n }\r\n}\r\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\r\n/**\r\n * dev only\r\n */\r\nfunction assertType(value, type) {\r\n let valid;\r\n const expectedType = getType(type);\r\n if (isSimpleType(expectedType)) {\r\n const t = typeof value;\r\n valid = t === expectedType.toLowerCase();\r\n // for primitive wrapper objects\r\n if (!valid && t === 'object') {\r\n valid = value instanceof type;\r\n }\r\n }\r\n else if (expectedType === 'Object') {\r\n valid = isObject(value);\r\n }\r\n else if (expectedType === 'Array') {\r\n valid = isArray(value);\r\n }\r\n else if (expectedType === 'null') {\r\n valid = value === null;\r\n }\r\n else {\r\n valid = value instanceof type;\r\n }\r\n return {\r\n valid,\r\n expectedType\r\n };\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\r\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\r\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\r\n const expectedType = expectedTypes[0];\r\n const receivedType = toRawType(value);\r\n const expectedValue = styleValue(value, expectedType);\r\n const receivedValue = styleValue(value, receivedType);\r\n // check if we need to specify expected value\r\n if (expectedTypes.length === 1 &&\r\n isExplicable(expectedType) &&\r\n !isBoolean(expectedType, receivedType)) {\r\n message += ` with value ${expectedValue}`;\r\n }\r\n message += `, got ${receivedType} `;\r\n // check if we need to specify received value\r\n if (isExplicable(receivedType)) {\r\n message += `with value ${receivedValue}.`;\r\n }\r\n return message;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction styleValue(value, type) {\r\n if (type === 'String') {\r\n return `\"${value}\"`;\r\n }\r\n else if (type === 'Number') {\r\n return `${Number(value)}`;\r\n }\r\n else {\r\n return `${value}`;\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isExplicable(type) {\r\n const explicitTypes = ['string', 'number', 'boolean'];\r\n return explicitTypes.some(elem => type.toLowerCase() === elem);\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isBoolean(...args) {\r\n return args.some(elem => elem.toLowerCase() === 'boolean');\r\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\r\nconst normalizeSlotValue = (value) => isArray(value)\r\n ? value.map(normalizeVNode)\r\n : [normalizeVNode(value)];\r\nconst normalizeSlot = (key, rawSlot, ctx) => {\r\n const normalized = withCtx((...args) => {\r\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\r\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\r\n `this will not track dependencies used in the slot. ` +\r\n `Invoke the slot function inside the render function instead.`);\r\n }\r\n return normalizeSlotValue(rawSlot(...args));\r\n }, ctx);\r\n normalized._c = false;\r\n return normalized;\r\n};\r\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\r\n const ctx = rawSlots._ctx;\r\n for (const key in rawSlots) {\r\n if (isInternalKey(key))\r\n continue;\r\n const value = rawSlots[key];\r\n if (isFunction(value)) {\r\n slots[key] = normalizeSlot(key, value, ctx);\r\n }\r\n else if (value != null) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !(false )) {\r\n warn(`Non-function value encountered for slot \"${key}\". ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(value);\r\n slots[key] = () => normalized;\r\n }\r\n }\r\n};\r\nconst normalizeVNodeSlots = (instance, children) => {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !isKeepAlive(instance.vnode) &&\r\n !(false )) {\r\n warn(`Non-function value encountered for default slot. ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(children);\r\n instance.slots.default = () => normalized;\r\n};\r\nconst initSlots = (instance, children) => {\r\n if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // users can get the shallow readonly version of the slots object through `this.$slots`,\r\n // we should avoid the proxy object polluting the slots of the internal instance\r\n instance.slots = toRaw(children);\r\n // make compiler marker non-enumerable\r\n def(children, '_', type);\r\n }\r\n else {\r\n normalizeObjectSlots(children, (instance.slots = {}));\r\n }\r\n }\r\n else {\r\n instance.slots = {};\r\n if (children) {\r\n normalizeVNodeSlots(instance, children);\r\n }\r\n }\r\n def(instance.slots, InternalObjectKey, 1);\r\n};\r\nconst updateSlots = (instance, children, optimized) => {\r\n const { vnode, slots } = instance;\r\n let needDeletionCheck = true;\r\n let deletionComparisonTarget = EMPTY_OBJ;\r\n if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // compiled slots.\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // Parent was HMR updated so slot content may have changed.\r\n // force update slots and mark instance for hmr as well\r\n extend(slots, children);\r\n }\r\n else if (optimized && type === 1 /* STABLE */) {\r\n // compiled AND stable.\r\n // no need to update, and skip stale slots removal.\r\n needDeletionCheck = false;\r\n }\r\n else {\r\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\r\n // normalization.\r\n extend(slots, children);\r\n // #2893\r\n // when rendering the optimized slots by manually written render function,\r\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\r\n // i.e. let the `renderSlot` create the bailed Fragment\r\n if (!optimized && type === 1 /* STABLE */) {\r\n delete slots._;\r\n }\r\n }\r\n }\r\n else {\r\n needDeletionCheck = !children.$stable;\r\n normalizeObjectSlots(children, slots);\r\n }\r\n deletionComparisonTarget = children;\r\n }\r\n else if (children) {\r\n // non slot object children (direct value) passed to a component\r\n normalizeVNodeSlots(instance, children);\r\n deletionComparisonTarget = { default: 1 };\r\n }\r\n // delete stale slots\r\n if (needDeletionCheck) {\r\n for (const key in slots) {\r\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\r\n delete slots[key];\r\n }\r\n }\r\n }\r\n};\n\n/**\r\nRuntime helper for applying directives to a vnode. Example usage:\r\n\nconst comp = resolveComponent('comp')\r\nconst foo = resolveDirective('foo')\r\nconst bar = resolveDirective('bar')\r\n\nreturn withDirectives(h(comp), [\r\n [foo, this.x],\r\n [bar, this.y]\r\n])\r\n*/\r\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\r\nfunction validateDirectiveName(name) {\r\n if (isBuiltInDirective(name)) {\r\n warn('Do not use built-in directive ids as custom directive id: ' + name);\r\n }\r\n}\r\n/**\r\n * Adds directives to a VNode.\r\n */\r\nfunction withDirectives(vnode, directives) {\r\n const internalInstance = currentRenderingInstance;\r\n if (internalInstance === null) {\r\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\r\n return vnode;\r\n }\r\n const instance = internalInstance.proxy;\r\n const bindings = vnode.dirs || (vnode.dirs = []);\r\n for (let i = 0; i < directives.length; i++) {\r\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\r\n if (isFunction(dir)) {\r\n dir = {\r\n mounted: dir,\r\n updated: dir\r\n };\r\n }\r\n if (dir.deep) {\r\n traverse(value);\r\n }\r\n bindings.push({\r\n dir,\r\n instance,\r\n value,\r\n oldValue: void 0,\r\n arg,\r\n modifiers\r\n });\r\n }\r\n return vnode;\r\n}\r\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\r\n const bindings = vnode.dirs;\r\n const oldBindings = prevVNode && prevVNode.dirs;\r\n for (let i = 0; i < bindings.length; i++) {\r\n const binding = bindings[i];\r\n if (oldBindings) {\r\n binding.oldValue = oldBindings[i].value;\r\n }\r\n let hook = binding.dir[name];\r\n if (hook) {\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n pauseTracking();\r\n callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [\r\n vnode.el,\r\n binding,\r\n vnode,\r\n prevVNode\r\n ]);\r\n resetTracking();\r\n }\r\n }\r\n}\n\nfunction createAppContext() {\r\n return {\r\n app: null,\r\n config: {\r\n isNativeTag: NO,\r\n performance: false,\r\n globalProperties: {},\r\n optionMergeStrategies: {},\r\n errorHandler: undefined,\r\n warnHandler: undefined,\r\n compilerOptions: {}\r\n },\r\n mixins: [],\r\n components: {},\r\n directives: {},\r\n provides: Object.create(null),\r\n optionsCache: new WeakMap(),\r\n propsCache: new WeakMap(),\r\n emitsCache: new WeakMap()\r\n };\r\n}\r\nlet uid = 0;\r\nfunction createAppAPI(render, hydrate) {\r\n return function createApp(rootComponent, rootProps = null) {\r\n if (rootProps != null && !isObject(rootProps)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\r\n rootProps = null;\r\n }\r\n const context = createAppContext();\r\n const installedPlugins = new Set();\r\n let isMounted = false;\r\n const app = (context.app = {\r\n _uid: uid++,\r\n _component: rootComponent,\r\n _props: rootProps,\r\n _container: null,\r\n _context: context,\r\n _instance: null,\r\n version,\r\n get config() {\r\n return context.config;\r\n },\r\n set config(v) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`app.config cannot be replaced. Modify individual options instead.`);\r\n }\r\n },\r\n use(plugin, ...options) {\r\n if (installedPlugins.has(plugin)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\r\n }\r\n else if (plugin && isFunction(plugin.install)) {\r\n installedPlugins.add(plugin);\r\n plugin.install(app, ...options);\r\n }\r\n else if (isFunction(plugin)) {\r\n installedPlugins.add(plugin);\r\n plugin(app, ...options);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`A plugin must either be a function or an object with an \"install\" ` +\r\n `function.`);\r\n }\r\n return app;\r\n },\r\n mixin(mixin) {\r\n if (__VUE_OPTIONS_API__) {\r\n if (!context.mixins.includes(mixin)) {\r\n context.mixins.push(mixin);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixin has already been applied to target app' +\r\n (mixin.name ? `: ${mixin.name}` : ''));\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixins are only available in builds supporting Options API');\r\n }\r\n return app;\r\n },\r\n component(name, component) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateComponentName(name, context.config);\r\n }\r\n if (!component) {\r\n return context.components[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\r\n warn(`Component \"${name}\" has already been registered in target app.`);\r\n }\r\n context.components[name] = component;\r\n return app;\r\n },\r\n directive(name, directive) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateDirectiveName(name);\r\n }\r\n if (!directive) {\r\n return context.directives[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\r\n warn(`Directive \"${name}\" has already been registered in target app.`);\r\n }\r\n context.directives[name] = directive;\r\n return app;\r\n },\r\n mount(rootContainer, isHydrate, isSVG) {\r\n if (!isMounted) {\r\n const vnode = createVNode(rootComponent, rootProps);\r\n // store app context on the root VNode.\r\n // this will be set on the root instance on initial mount.\r\n vnode.appContext = context;\r\n // HMR root reload\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.reload = () => {\r\n render(cloneVNode(vnode), rootContainer, isSVG);\r\n };\r\n }\r\n if (isHydrate && hydrate) {\r\n hydrate(vnode, rootContainer);\r\n }\r\n else {\r\n render(vnode, rootContainer, isSVG);\r\n }\r\n isMounted = true;\r\n app._container = rootContainer;\r\n rootContainer.__vue_app__ = app;\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n app._instance = vnode.component;\r\n devtoolsInitApp(app, version);\r\n }\r\n return getExposeProxy(vnode.component) || vnode.component.proxy;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`App has already been mounted.\\n` +\r\n `If you want to remount the same app, move your app creation logic ` +\r\n `into a factory function and create fresh app instances for each ` +\r\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\r\n }\r\n },\r\n unmount() {\r\n if (isMounted) {\r\n render(null, app._container);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n app._instance = null;\r\n devtoolsUnmountApp(app);\r\n }\r\n delete app._container.__vue_app__;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot unmount an app that is not mounted.`);\r\n }\r\n },\r\n provide(key, value) {\r\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\r\n warn(`App already provides property with key \"${String(key)}\". ` +\r\n `It will be overwritten with the new value.`);\r\n }\r\n // TypeScript doesn't allow symbols as index type\r\n // https://github.com/Microsoft/TypeScript/issues/24587\r\n context.provides[key] = value;\r\n return app;\r\n }\r\n });\r\n return app;\r\n };\r\n}\n\n/**\r\n * Function for handling a template ref\r\n */\r\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\r\n if (isArray(rawRef)) {\r\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\r\n return;\r\n }\r\n if (isAsyncWrapper(vnode) && !isUnmount) {\r\n // when mounting async components, nothing needs to be done,\r\n // because the template ref is forwarded to inner component\r\n return;\r\n }\r\n const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */\r\n ? getExposeProxy(vnode.component) || vnode.component.proxy\r\n : vnode.el;\r\n const value = isUnmount ? null : refValue;\r\n const { i: owner, r: ref } = rawRef;\r\n if ((process.env.NODE_ENV !== 'production') && !owner) {\r\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\r\n `A vnode with ref must be created inside the render function.`);\r\n return;\r\n }\r\n const oldRef = oldRawRef && oldRawRef.r;\r\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\r\n const setupState = owner.setupState;\r\n // dynamic ref changed. unset old ref\r\n if (oldRef != null && oldRef !== ref) {\r\n if (isString(oldRef)) {\r\n refs[oldRef] = null;\r\n if (hasOwn(setupState, oldRef)) {\r\n setupState[oldRef] = null;\r\n }\r\n }\r\n else if (isRef(oldRef)) {\r\n oldRef.value = null;\r\n }\r\n }\r\n if (isFunction(ref)) {\r\n callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);\r\n }\r\n else {\r\n const _isString = isString(ref);\r\n const _isRef = isRef(ref);\r\n if (_isString || _isRef) {\r\n const doSet = () => {\r\n if (rawRef.f) {\r\n const existing = _isString ? refs[ref] : ref.value;\r\n if (isUnmount) {\r\n isArray(existing) && remove(existing, refValue);\r\n }\r\n else {\r\n if (!isArray(existing)) {\r\n if (_isString) {\r\n refs[ref] = [refValue];\r\n }\r\n else {\r\n ref.value = [refValue];\r\n if (rawRef.k)\r\n refs[rawRef.k] = ref.value;\r\n }\r\n }\r\n else if (!existing.includes(refValue)) {\r\n existing.push(refValue);\r\n }\r\n }\r\n }\r\n else if (_isString) {\r\n refs[ref] = value;\r\n if (hasOwn(setupState, ref)) {\r\n setupState[ref] = value;\r\n }\r\n }\r\n else if (isRef(ref)) {\r\n ref.value = value;\r\n if (rawRef.k)\r\n refs[rawRef.k] = value;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n };\r\n if (value) {\r\n doSet.id = -1;\r\n queuePostRenderEffect(doSet, parentSuspense);\r\n }\r\n else {\r\n doSet();\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n }\r\n}\n\nlet hasMismatch = false;\r\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\r\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\r\n// Note: hydration is DOM-specific\r\n// But we have to place it in core due to tight coupling with core - splitting\r\n// it out creates a ton of unnecessary complexity.\r\n// Hydration also depends on some renderer internal logic which needs to be\r\n// passed in via arguments.\r\nfunction createHydrationFunctions(rendererInternals) {\r\n const { mt: mountComponent, p: patch, o: { patchProp, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\r\n const hydrate = (vnode, container) => {\r\n if (!container.hasChildNodes()) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Attempting to hydrate existing markup but container is empty. ` +\r\n `Performing full mount instead.`);\r\n patch(null, vnode, container);\r\n flushPostFlushCbs();\r\n return;\r\n }\r\n hasMismatch = false;\r\n hydrateNode(container.firstChild, vnode, null, null, null);\r\n flushPostFlushCbs();\r\n if (hasMismatch && !false) {\r\n // this error should show up in production\r\n console.error(`Hydration completed but contains mismatches.`);\r\n }\r\n };\r\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\r\n const isFragmentStart = isComment(node) && node.data === '[';\r\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\r\n const { type, ref, shapeFlag } = vnode;\r\n const domType = node.nodeType;\r\n vnode.el = node;\r\n let nextNode = null;\r\n switch (type) {\r\n case Text:\r\n if (domType !== 3 /* TEXT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n if (node.data !== vnode.children) {\r\n hasMismatch = true;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Hydration text mismatch:` +\r\n `\\n- Client: ${JSON.stringify(node.data)}` +\r\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\r\n node.data = vnode.children;\r\n }\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Comment:\r\n if (domType !== 8 /* COMMENT */ || isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Static:\r\n if (domType !== 1 /* ELEMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n // determine anchor, adopt content\r\n nextNode = node;\r\n // if the static vnode has its content stripped during build,\r\n // adopt it from the server-rendered HTML.\r\n const needToAdoptContent = !vnode.children.length;\r\n for (let i = 0; i < vnode.staticCount; i++) {\r\n if (needToAdoptContent)\r\n vnode.children += nextNode.outerHTML;\r\n if (i === vnode.staticCount - 1) {\r\n vnode.anchor = nextNode;\r\n }\r\n nextNode = nextSibling(nextNode);\r\n }\r\n return nextNode;\r\n }\r\n break;\r\n case Fragment:\r\n if (!isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n if (domType !== 1 /* ELEMENT */ ||\r\n vnode.type.toLowerCase() !==\r\n node.tagName.toLowerCase()) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n // when setting up the render effect, if the initial vnode already\r\n // has .el set, the component will perform hydration instead of mount\r\n // on its sub-tree.\r\n vnode.slotScopeIds = slotScopeIds;\r\n const container = parentNode(node);\r\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\r\n // component may be async, so in the case of fragments we cannot rely\r\n // on component's rendered output to determine the end of the fragment\r\n // instead, we do a lookahead to find the end anchor node.\r\n nextNode = isFragmentStart\r\n ? locateClosingAsyncAnchor(node)\r\n : nextSibling(node);\r\n // #3787\r\n // if component is async, it may get moved / unmounted before its\r\n // inner component is loaded, so we need to give it a placeholder\r\n // vnode that matches its adopted DOM.\r\n if (isAsyncWrapper(vnode)) {\r\n let subTree;\r\n if (isFragmentStart) {\r\n subTree = createVNode(Fragment);\r\n subTree.anchor = nextNode\r\n ? nextNode.previousSibling\r\n : container.lastChild;\r\n }\r\n else {\r\n subTree =\r\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\r\n }\r\n subTree.el = node;\r\n vnode.component.subTree = subTree;\r\n }\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n if (domType !== 8 /* COMMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\r\n }\r\n }\r\n else if (shapeFlag & 128 /* SUSPENSE */) {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, vnode);\r\n }\r\n return nextNode;\r\n };\r\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\r\n optimized = optimized || !!vnode.dynamicChildren;\r\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\r\n // #4006 for form elements with non-string v-model value bindings\r\n // e.g.