diff --git a/fxmanifest.lua b/fxmanifest.lua index e8c09f5..c9324e0 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -7,7 +7,7 @@ rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aw --[[ Resource Information ]]-- name 'ox_lib' -author 'Linden' +author 'Overextended' version '2.21.0' license 'LGPL-3.0-or-later' repository 'https://github.com/overextended/ox_lib' @@ -41,6 +41,7 @@ client_scripts { 'imports/callback/client.lua', 'imports/requestModel/client.lua', 'imports/requestAnimDict/client.lua', + 'imports/addKeybind/client.lua', 'resource/**/client.lua', 'resource/**/client/*.lua' } diff --git a/imports/getCore/es_extended/client.lua b/imports/getCore/es_extended/client.lua deleted file mode 100644 index 790e039..0000000 --- a/imports/getCore/es_extended/client.lua +++ /dev/null @@ -1,54 +0,0 @@ -if cache.game == 'redm' then return end -if not lib.player then lib.player() end - -return function(resource) - local ESX = exports[resource]:getSharedObject() - - RegisterNetEvent('esx:playerLoaded', function(xPlayer) - ESX.PlayerData = xPlayer - end) - - RegisterNetEvent('esx:setJob', function(job) - ESX.PlayerData.job = job - end) - - local CPlayer = lib.getPlayer() - - function lib.getPlayer() - return setmetatable({ - id = cache.playerId, - serverId = cache.serverId, - }, CPlayer) - end - - function CPlayer:hasGroup(filter) - local data = ESX.PlayerData - local type = type(filter) - - if type == 'string' then - if data.job.name == filter then - return data.job.name, data.job.grade - end - else - local tabletype = table.type(filter) - - if tabletype == 'hash' then - local grade = filter[data.job.name] - - if grade and grade <= data.job.grade then - return data.job.name, data.job.grade - end - elseif tabletype == 'array' then - for i = 1, #filter do - if data.job.name == filter[i] then - return data.job.name, data.job.grade - end - end - end - end - end - - player = lib.getPlayer() - - return ESX -end diff --git a/imports/getCore/es_extended/server.lua b/imports/getCore/es_extended/server.lua deleted file mode 100644 index 55e9250..0000000 --- a/imports/getCore/es_extended/server.lua +++ /dev/null @@ -1,47 +0,0 @@ -if cache.game == 'redm' then return end -if not lib.player then lib.player() end - -return function(resource) - local ESX = exports[resource]:getSharedObject() - -- Eventually add some functions here to simplify the creation of framework-agnostic resources. - - local CPlayer = lib.getPlayer() - - function lib.getPlayer(player) - player = type(player) == 'table' and player.playerId or ESX.GetPlayerFromId(player) - - if not player then - error(("'%s' is not a valid player"):format(player)) - end - - return setmetatable(player, CPlayer) - end - - function CPlayer:hasGroup(filter) - local type = type(filter) - - if type == 'string' then - if self.job.name == filter then - return self.job.name, self.job.grade - end - else - local tabletype = table.type(filter) - - if tabletype == 'hash' then - local grade = filter[self.job.name] - - if grade and grade <= self.job.grade then - return self.job.name, self.job.grade - end - elseif tabletype == 'array' then - for i = 1, #filter do - if self.job.name == filter[i] then - return self.job.name, self.job.grade - end - end - end - end - end - - return ESX -end diff --git a/imports/getCore/qb-core/client.lua b/imports/getCore/qb-core/client.lua deleted file mode 100644 index c5be652..0000000 --- a/imports/getCore/qb-core/client.lua +++ /dev/null @@ -1,73 +0,0 @@ -if cache.game == 'redm' then return end -if not lib.player then lib.player() end - -return function(resource) - local QBCore = exports[resource]:GetCoreObject() - local PlayerData - - RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() - PlayerData = QBCore.Functions.GetPlayerData() - end) - - RegisterNetEvent('QBCore:Client:OnJobUpdate', function(job) - PlayerData.job = job - end) - - RegisterNetEvent('QBCore:Client:OnGangUpdate', function(gang) - PlayerData.gang = gang - end) - - local CPlayer = lib.getPlayer() - - function lib.getPlayer() - return setmetatable({ - id = cache.playerId, - serverId = cache.serverId, - }, CPlayer) - end - - local groups = { 'job', 'gang' } - - function CPlayer:hasGroup(filter) - local type = type(filter) - - if type == 'string' then - for i = 1, #groups do - local data = PlayerData[groups[i]] - - if data.name == filter then - return data.name, data.grade.level - end - end - else - local tabletype = table.type(filter) - - if tabletype == 'hash' then - for i = 1, #groups do - local data = PlayerData[groups[i]] - local grade = filter[data.name] - - if grade and grade <= data.grade.level then - return data.name, data.grade.level - end - end - elseif tabletype == 'array' then - for i = 1, #filter do - local group = filter[i] - - for j = 1, #groups do - local data = PlayerData[groups[j]] - - if data.name == group then - return data.name, data.grade.level - end - end - end - end - end - end - - player = lib.getPlayer() - - return QBCore -end diff --git a/imports/getCore/qb-core/server.lua b/imports/getCore/qb-core/server.lua deleted file mode 100644 index 999b50c..0000000 --- a/imports/getCore/qb-core/server.lua +++ /dev/null @@ -1,62 +0,0 @@ -if cache.game == 'redm' then return end -if not lib.player then lib.player() end - -return function(resource) - local QBCore = exports[resource]:GetCoreObject() - -- Eventually add some functions here to simplify the creation of framework-agnostic resources. - - local CPlayer = lib.getPlayer() - - function lib.getPlayer(player) - player = type(player) == 'table' and player.playerId or QBCore.Functions.GetPlayer(player) - - if not player then - error(("'%s' is not a valid player"):format(player)) - end - - return setmetatable(player, CPlayer) - end - - local groups = { 'job', 'gang' } - - function CPlayer:hasGroup(filter) - local type = type(filter) - - if type == 'string' then - for i = 1, #groups do - local data = self.PlayerData[groups[i]] - - if data.name == filter then - return data.name, data.grade.level - end - end - else - local tabletype = table.type(filter) - - if tabletype == 'hash' then - for i = 1, #groups do - local data = self.PlayerData[groups[i]] - local grade = filter[data.name] - - if grade and grade <= data.grade.level then - return data.name, data.grade.level - end - end - elseif tabletype == 'array' then - for i = 1, #filter do - local group = filter[i] - - for j = 1, #groups do - local data = self.PlayerData[groups[j]] - - if data.name == group then - return data.name, data.grade.level - end - end - end - end - end - end - - return QBCore -end diff --git a/imports/getCore/shared.lua b/imports/getCore/shared.lua deleted file mode 100644 index 955200b..0000000 --- a/imports/getCore/shared.lua +++ /dev/null @@ -1,81 +0,0 @@ -if cache.game == 'redm' then return end ---[[ - This module was experimental and won't be worked on or used further. - May be removed in the future. -]] - -local Core = { - Ox = 'ox_core', - QB = 'qb-core', - ESX = 'es_extended', -} - ----@deprecated -function lib.getCore() - print('^3lib.getCore will be removed in a future update (v3.0.0).^0') - local result - - Citizen.CreateThreadNow(function() - local framework = GetConvar('framework', '') - - if framework == '' then - framework = GetResourceState(Core.Ox):find('start') and Core.Ox - or GetResourceState(Core.QB):find('start') and Core.QB - or GetResourceState(Core.ESX):find('start') and Core.ESX - - if not framework then - error('Unable to determine framework (convar is not set, or resource was renamed)') - end - end - - local success - local import - local resource - - if framework == Core.Ox then - import = ('imports/%s.lua'):format(lib.context) - resource = Core.Ox - else - import = ('imports/getCore/%s/%s.lua'):format(framework, lib.context) - resource = lib.name - end - - success, result = pcall(LoadResourceFile, resource, import) - - if not result then - error(("Unable to load '@%s/%s'"):format(resource, import)) - end - - if not success then - error(result and result or ("Unable to load '@%s/%s'"):format(resource, import), 0) - end - - success, result = load(result, ('@@%s/%s'):format(resource, import)) - - if not success then - error(result, 0) - end - - success, result = pcall(success, framework) - - if not success then error(result) end - - if framework == Core.Ox then - ---@diagnostic disable-next-line: undefined-global - result = Ox - end - - if not result then - error(('no loader exists for %s'):format(framework)) - elseif type(result) == 'function' then - result = result(framework) - end - - result.resource = framework - end) - - return result -end - ----@diagnostic disable-next-line: deprecated -return lib.getCore diff --git a/imports/player/client.lua b/imports/player/client.lua deleted file mode 100644 index a4b298f..0000000 --- a/imports/player/client.lua +++ /dev/null @@ -1,35 +0,0 @@ ---[[ - This module was experimental and won't be worked on or used further. - May be removed in the future. -]] - -local CPlayer = {} - -function CPlayer:__index(index, ...) - local method = CPlayer[index] - - if method then - return function(...) - return method(self, ...) - end - end -end - -function CPlayer:getCoords(update) - if update or not self.coords then - self.coords = GetEntityCoords(cache.ped) - end - - return self.coords -end - -function CPlayer:getDistance(coords) - return #(self:getCoords() - coords) -end - ----@deprecated -function lib.getPlayer() - return CPlayer -end - -return lib.getPlayer diff --git a/imports/player/server.lua b/imports/player/server.lua deleted file mode 100644 index 88cfe72..0000000 --- a/imports/player/server.lua +++ /dev/null @@ -1,40 +0,0 @@ ---[[ - This module was experimental and won't be worked on or used further. - May be removed in the future. -]] - -local CPlayer = {} - -function CPlayer:__index(index, ...) - local method = CPlayer[index] - - if method then - return function(...) - return method(self, ...) - end - end -end - -function CPlayer:getCoords(update) - if update or not self.coords then - self.coords = GetEntityCoords(self.getPed()) - end - - return self.coords -end - -function CPlayer:getDistance(coords) - return #(self:getCoords() - coords) -end - -function CPlayer:getPed() - self.ped = GetPlayerPed(self.source) - return self.ped -end - ----@deprecated -function lib.getPlayer() - return CPlayer -end - -return lib.getPlayer diff --git a/init.lua b/init.lua index 7600763..2a1db27 100644 --- a/init.lua +++ b/init.lua @@ -76,8 +76,6 @@ end lib = setmetatable({ name = ox_lib, - ---@deprecated - service = context, context = context, exports = {}, onCache = function(key, cb) diff --git a/package/client/resource/index.ts b/package/client/resource/index.ts index ae0f429..a271ed0 100644 --- a/package/client/resource/index.ts +++ b/package/client/resource/index.ts @@ -7,6 +7,7 @@ export * from './interface/notify'; export * from './interface/progress'; export * from './interface/textui'; export * from './interface/skillcheck'; +export * from './interface/radial'; export * from './streaming'; export * from './vehicleProperties'; diff --git a/package/client/resource/interface/alert.ts b/package/client/resource/interface/alert.ts index e75c927..f599b73 100644 --- a/package/client/resource/interface/alert.ts +++ b/package/client/resource/interface/alert.ts @@ -2,6 +2,8 @@ interface AlertDialogProps { header: string; content: string; centered?: boolean; + size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; + overflow?: boolean; cancel?: boolean; labels?: { cancel?: string; diff --git a/package/client/resource/interface/context.ts b/package/client/resource/interface/context.ts index 0a00054..64bb48e 100644 --- a/package/client/resource/interface/context.ts +++ b/package/client/resource/interface/context.ts @@ -1,14 +1,17 @@ import { IconName, IconPrefix } from '@fortawesome/fontawesome-common-types'; interface ContextMenuItem { - title?: string; menu?: string; + title?: string; + description?: string; + arrow?: boolean; + image?: string; icon?: IconName | [IconPrefix, IconName]; iconColor?: string; + progress?: number; + colorScheme?: string; onSelect?: (args: any) => void; - arrow?: boolean; - description?: string; - metadata?: string | { [key: string]: any } | string[]; + metadata?: string[] | { [key: string]: any } | { label: string; value: any; progress?: number }[]; disabled?: boolean; event?: string; serverEvent?: string; diff --git a/package/client/resource/interface/input.ts b/package/client/resource/interface/input.ts index ebfe1aa..a03ddbb 100644 --- a/package/client/resource/interface/input.ts +++ b/package/client/resource/interface/input.ts @@ -1,7 +1,19 @@ import { IconName, IconPrefix } from '@fortawesome/fontawesome-common-types'; +// Should really be improved at some point to only display properties depending on the input type interface InputDialogRowProps { - type: 'input' | 'number' | 'checkbox' | 'select' | 'slider'; + type: + | 'input' + | 'number' + | 'checkbox' + | 'select' + | 'multi-select' + | 'slider' + | 'color' + | 'date' + | 'date-range' + | 'time' + | 'text-area'; label: string; options?: { value: string; label: string; default?: string }[]; password?: boolean; @@ -13,13 +25,19 @@ interface InputDialogRowProps { checked?: boolean; min?: number; max?: number; + autosize?: boolean; step?: number; + required?: boolean; + format?: string; description?: string; } type inputDialog = ( heading: string, - rows: string[] | InputDialogRowProps[] + rows: string[] | InputDialogRowProps[], + options: { + allowCancel?: boolean; + } ) => Promise | undefined>; export const inputDialog: inputDialog = async (heading, rows) => await exports.ox_lib.inputDialog(heading, rows); diff --git a/package/client/resource/interface/notify.ts b/package/client/resource/interface/notify.ts index 66714be..bc01638 100644 --- a/package/client/resource/interface/notify.ts +++ b/package/client/resource/interface/notify.ts @@ -1,11 +1,19 @@ import { CSSProperties } from 'react'; import { IconName, IconPrefix } from '@fortawesome/fontawesome-common-types'; -type NotificationPosition = 'top' | 'top-right' | 'top-left' | 'bottom' | 'bottom-right' | 'bottom-left'; +type NotificationPosition = + | 'top' + | 'top-right' + | 'top-left' + | 'bottom' + | 'bottom-right' + | 'bottom-left' + | 'center-right' + | 'center-left'; type NotificationType = 'inform' | 'error' | 'success'; interface NotifyProps { - id?: string; + id?: string | number; title?: string; description?: string; duration?: number; @@ -18,6 +26,7 @@ interface NotifyProps { export const notify = (data: NotifyProps): void => exports.ox_lib.notify(data); +// Keep for backwards compat with v2 interface DefaultNotifyProps { title?: string; description?: string; diff --git a/package/client/resource/interface/radial.ts b/package/client/resource/interface/radial.ts new file mode 100644 index 0000000..d05528c --- /dev/null +++ b/package/client/resource/interface/radial.ts @@ -0,0 +1,18 @@ +import { IconName, IconPrefix } from '@fortawesome/fontawesome-common-types'; + +type RadialItem = { + id: string; + label: string; + icon: IconName | [IconPrefix, IconName]; + onSelect?: () => void; + menu?: string; +}; + +export const addRadialItem = (items: RadialItem | RadialItem[]) => exports.ox_lib.addRadialItem(items); + +export const removeRadialItem = (item: string) => exports.ox_lib.removeRadialItem(item); + +export const registerRadial = (radial: { id: string; items: Omit[] }) => + exports.ox_lib.registerRadial(radial); + +export const hideRadial = () => exports.ox_lib.hideRadial(); diff --git a/package/client/resource/interface/skillcheck.ts b/package/client/resource/interface/skillcheck.ts index 8056354..cbb5e5b 100644 --- a/package/client/resource/interface/skillcheck.ts +++ b/package/client/resource/interface/skillcheck.ts @@ -1,4 +1,4 @@ type SkillCheckDifficulty = 'easy' | 'medium' | 'hard' | { areaSize: number; speedMultiplier: number }; -export const skillCheck = (difficulty: SkillCheckDifficulty | SkillCheckDifficulty[]) => +export const skillCheck = (difficulty: SkillCheckDifficulty | SkillCheckDifficulty[], inputs?: string[]) => exports.ox_lib.skillCheck(difficulty); diff --git a/package/package.json b/package/package.json index 15d39f5..a683df3 100644 --- a/package/package.json +++ b/package/package.json @@ -27,10 +27,10 @@ "@citizenfx/server": "2.0.5885-1", "@fortawesome/fontawesome-common-types": "6.1.1", "@types/node": "16.9.1", - "@types/react": "^18.0.20", - "typescript": "^4.8.3" + "@types/react": "^18.0.26", + "typescript": "^4.9.4" }, "devDependencies": { - "prettier": "^2.7.1" + "prettier": "^2.8.1" } } diff --git a/package/pnpm-lock.yaml b/package/pnpm-lock.yaml index c14dd3d..8e2612d 100644 --- a/package/pnpm-lock.yaml +++ b/package/pnpm-lock.yaml @@ -5,20 +5,20 @@ specifiers: '@citizenfx/server': 2.0.5885-1 '@fortawesome/fontawesome-common-types': 6.1.1 '@types/node': 16.9.1 - '@types/react': ^18.0.20 - prettier: ^2.7.1 - typescript: ^4.8.3 + '@types/react': ^18.0.26 + prettier: ^2.8.1 + typescript: ^4.9.4 dependencies: '@citizenfx/client': 2.0.5885-1 '@citizenfx/server': 2.0.5885-1 '@fortawesome/fontawesome-common-types': 6.1.1 '@types/node': 16.9.1 - '@types/react': 18.0.20 - typescript: 4.8.3 + '@types/react': 18.0.26 + typescript: 4.9.4 devDependencies: - prettier: 2.7.1 + prettier: 2.8.1 packages: @@ -44,8 +44,8 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/react/18.0.20: - resolution: {integrity: sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==} + /@types/react/18.0.26: + resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -60,14 +60,14 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier/2.8.1: + resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /typescript/4.8.3: - resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + /typescript/4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: false diff --git a/resource/client.lua b/resource/client.lua index f94961f..45b5129 100644 --- a/resource/client.lua +++ b/resource/client.lua @@ -10,3 +10,10 @@ function RegisterCommand(commandName, callback, restricted) end end) end + +RegisterNUICallback('getConfig', function(_, cb) + cb({ + primaryColor = GetConvar('ox:primaryColor', 'blue'), + primaryShade = GetConvarInt('ox:primaryShade', 8) + }) +end) \ No newline at end of file diff --git a/resource/interface/client/alert.lua b/resource/interface/client/alert.lua index 9ffc5b4..cd52c2b 100644 --- a/resource/interface/client/alert.lua +++ b/resource/interface/client/alert.lua @@ -10,6 +10,8 @@ end ---@field header string; ---@field content string; ---@field centered? boolean?; +---@field size? 'xs' | 'sm' | 'md' | 'lg' | 'xl'; +---@field overflow? boolean?; ---@field cancel? boolean?; ---@field labels? {cancel?: string, confirm?: string} diff --git a/resource/interface/client/input.lua b/resource/interface/client/input.lua index 75144b8..929cfc3 100644 --- a/resource/interface/client/input.lua +++ b/resource/interface/client/input.lua @@ -1,7 +1,7 @@ local input ---@class InputDialogRowProps ----@field type 'input' | 'number' | 'checkbox' | 'select' | 'slider' +---@field type 'input' | 'number' | 'checkbox' | 'select' | 'slider' | 'multi-select' | 'date' | 'date-range' | 'time' | 'textarea' ---@field label string ---@field options? { value: string, label: string, default?: string }[] ---@field password? boolean @@ -14,12 +14,20 @@ local input ---@field min? number ---@field max? number ---@field step? number +---@field autosize? boolean +---@field required? boolean +---@field format? string +---@field clearable? string ---@field description? string +---@class InputDialogOptionsProps +---@field allowCancel? boolean + ---@param heading string ---@param rows string[] | InputDialogRowProps[] +---@param options InputDialogOptionsProps[] ---@return string[] | number[] | boolean[] | nil -function lib.inputDialog(heading, rows) +function lib.inputDialog(heading, rows, options) if input then return end input = promise.new() @@ -35,7 +43,8 @@ function lib.inputDialog(heading, rows) action = 'openDialog', data = { heading = heading, - rows = rows + rows = rows, + options = options } }) diff --git a/resource/interface/client/notify.lua b/resource/interface/client/notify.lua index deb298e..2b240ea 100644 --- a/resource/interface/client/notify.lua +++ b/resource/interface/client/notify.lua @@ -1,4 +1,4 @@ ----@alias NotificationPosition 'top' | 'top-right' | 'top-left' | 'bottom' | 'bottom-right' | 'bottom-left' +---@alias NotificationPosition 'top' | 'top-right' | 'top-left' | 'bottom' | 'bottom-right' | 'bottom-left' | 'center-right' | 'center-left' ---@alias NotificationType 'inform' | 'error' | 'success' ---@class NotifyProps @@ -15,7 +15,7 @@ ---@param data NotifyProps function lib.notify(data) SendNUIMessage({ - action = 'customNotify', + action = 'notify', data = data }) end @@ -30,10 +30,10 @@ end ---@param data DefaultNotifyProps function lib.defaultNotify(data) - SendNUIMessage({ - action = 'notify', - data = data - }) + -- Backwards compat for v3 + data.type = data.status + if data.type == 'info' or data.type == 'warning' then data.type = 'inform' end + return lib.notify(data) end RegisterNetEvent('ox_lib:notify', lib.notify) diff --git a/resource/interface/client/progress.lua b/resource/interface/client/progress.lua index 1ee24de..290d990 100644 --- a/resource/interface/client/progress.lua +++ b/resource/interface/client/progress.lua @@ -198,8 +198,6 @@ end function lib.cancelProgress() if not progress then error('No progress bar is active') - elseif not progress.canCancel then - error('Progress bar cannot be cancelled') end progress = false diff --git a/resource/interface/client/radial.lua b/resource/interface/client/radial.lua new file mode 100644 index 0000000..2ad3156 --- /dev/null +++ b/resource/interface/client/radial.lua @@ -0,0 +1,173 @@ +local isOpen = false +local menus = {} +local menuItems = {} +local currentRadial = nil + +---@class RadialMenuItem +---@field id string +---@field icon string +---@field label string +---@field menu? string +---@field onSelect? function + +---@class RadialMenuProps +---@field id string +---@field items RadialMenuItem[] + +---Registers a radial sub menu with predefined options. +---@param radial RadialMenuProps +function lib.registerRadial(radial) + menus[radial.id] = radial +end + +---Open a registered radial submenu with the given id. +---@param id string +local function showRadial(id) + local radial = menus[id] + + if not radial then return error('No radial menu with such id found.') end + + currentRadial = radial + + SendNUIMessage({ + action = 'openRadialMenu', + data = { + items = radial.items, + sub = true + } + }) +end + +function lib.hideRadial() + if not isOpen then return end + + SendNUIMessage({ + action = 'openRadialMenu', + data = false + }) + + SetNuiFocus(false, false) + + isOpen = false + currentRadial = nil +end + +---Registers an item or array of items in the global radial menu. +---@param items RadialMenuItem | RadialMenuItem[] +function lib.addRadialItem(items) + local menuSize = #menuItems + local invokingResource = GetInvokingResource() + + if table.type(items) == 'array' then + for i = 1, #items do + local item = items[i] + item.resource = invokingResource + menuSize += 1 + menuItems[menuSize] = item + end + else + items.resource = invokingResource + menuItems[menuSize + 1] = items + end + + if isOpen then + SendNUIMessage({ + action = 'refreshItems', + data = menuItems + }) + end +end + +---Removes an item from the global radial menu with the given id. +---@param id string +function lib.removeRadialItem(id) + for i = 1, #menuItems do + local item = menuItems[i] + if item.id == id then + table.remove(menuItems, i) + break + end + end + if isOpen then + SendNUIMessage({ + action = 'refreshItems', + data = menuItems + }) + end +end + +RegisterNUICallback('radialClick', function(index, cb) + cb(1) + local item = not currentRadial and menuItems[index + 1] or currentRadial.items[index + 1] + + if item.onSelect then item.onSelect() end + if item.menu then return showRadial(item.menu) end + + lib.hideRadial() +end) + +RegisterNUICallback('radialBack', function(_, cb) + cb(1) + if currentRadial.menu then + return showRadial(currentRadial.menu) + end + + currentRadial = nil + + SendNUIMessage({ + action = 'openRadialMenu', + data = { + items = menuItems + } + }) +end) + +RegisterNUICallback('radialClose', function(_, cb) + cb(1) + + if not isOpen then return end + + SetNuiFocus(false, false) + + isOpen = false + currentRadial = nil +end) + +lib.addKeybind({ + name = 'ox_lib-radial', + description = 'Open radial menu', + defaultKey = 'z', + onPressed = function() + if isOpen or #menuItems == 0 or IsNuiFocused() or IsPauseMenuActive() then return end + + isOpen = true + + SendNUIMessage({ + action = 'openRadialMenu', + data = { + items = menuItems + } + }) + SetNuiFocus(true, true) + SetNuiFocusKeepInput(true) + SetCursorLocation(0.5, 0.5) + + while isOpen do + DisablePlayerFiring(cache.playerId, true) + DisableControlAction(0, 1, true) + DisableControlAction(0, 2, true) + Wait(0) + end + end, + onReleased = lib.hideRadial, +}) + +AddEventHandler('onClientResourceStop', function(resource) + for i = #menuItems, 1, -1 do + local item = menuItems[i] + + if item.resource == resource then + table.remove(menuItems, i) + end + end +end) diff --git a/resource/interface/client/skillcheck.lua b/resource/interface/client/skillcheck.lua index cbae068..e5890e8 100644 --- a/resource/interface/client/skillcheck.lua +++ b/resource/interface/client/skillcheck.lua @@ -4,15 +4,19 @@ local skillcheck ---@alias SkillCheckDifficulity 'easy' | 'medium' | 'hard' | { areaSize: number, speedMultiplier: number } ---@param difficulty SkillCheckDifficulity | SkillCheckDifficulity[] +---@param inputs string[] ---@return boolean? -function lib.skillCheck(difficulty) +function lib.skillCheck(difficulty, inputs) if skillcheck then return end skillcheck = promise:new() SetNuiFocus(true, false) SendNUIMessage({ action = 'startSkillCheck', - data = difficulty + data = { + difficulty = difficulty, + inputs = inputs + } }) return Citizen.Await(skillcheck) diff --git a/web/package.json b/web/package.json index 4870e69..ad115ff 100644 --- a/web/package.json +++ b/web/package.json @@ -1,33 +1,31 @@ { - "name": "web", + "name": "ox_lib", "version": "0.1.0", "homepage": "web/build", "private": true, "dependencies": { - "@chakra-ui/react": "2.3.6", - "@emotion/react": "^11.8.2", - "@emotion/styled": "^11.8.1", - "@fortawesome/fontawesome-svg-core": "^6.1.1", - "@fortawesome/free-brands-svg-icons": "^6.1.1", - "@fortawesome/free-regular-svg-icons": "^6.1.1", - "@fortawesome/free-solid-svg-icons": "^6.1.1", - "@fortawesome/react-fontawesome": "^0.1.18", - "@testing-library/jest-dom": "^5.16.3", - "@testing-library/react": "^12.1.4", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^26.0.24", - "@types/node": "^16.11.26", - "@types/react": "^18.0.24", - "@types/react-dom": "^18.0.8", - "@vitejs/plugin-react": "^1.3.2", + "@emotion/react": "^11.10.5", + "@fortawesome/fontawesome-svg-core": "^6.3.0", + "@fortawesome/free-brands-svg-icons": "^6.3.0", + "@fortawesome/free-regular-svg-icons": "^6.3.0", + "@fortawesome/free-solid-svg-icons": "^6.3.0", + "@fortawesome/react-fontawesome": "^0.1.19", + "@mantine/core": "^5.10.0", + "@mantine/dates": "^5.10.0", + "@mantine/hooks": "^5.10.0", + "@vitejs/plugin-react": "^3.0.1", + "dayjs": "^1.11.7", "focus-trap-react": "^9.0.2", - "framer-motion": "^6.2.8", + "framer-motion": "^8.0.2", "prettier": "^2.7.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-hook-form": "^7.41.3", + "react-hot-toast": "^2.4.0", "react-markdown": "^8.0.1", + "remark-gfm": "^3.0.1", "typescript": "^4.6.3", - "vite": "^2.9.13", + "vite": "^4.0.4", "web-vitals": "^2.1.4" }, "scripts": { @@ -36,33 +34,23 @@ "build": "tsc && vite build", "preview": "vite preview" }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, "devDependencies": { "@babel/core": ">=7.0.0 <8.0.0", "@babel/plugin-syntax-flow": "^7.14.5", "@babel/plugin-transform-react-jsx": "^7.14.9", - "@testing-library/dom": "^8.11.4", "autoprefixer": "^10.0.2", "cross-env": "^7.0.3", + "csstype": "^3.0.10", "postcss": "^8.1.0", "prop-types": "^15.8.1", - "rimraf": "^3.0.2" + "rimraf": "^3.0.2", + "@types/node": "^16.11.26", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8" + }, + "pnpm": { + "patchedDependencies": { + "react-hot-toast@2.4.0": "patches/react-hot-toast@2.4.0.patch" + } } } diff --git a/web/patches/react-hot-toast@2.4.0.patch b/web/patches/react-hot-toast@2.4.0.patch new file mode 100644 index 0000000..2c7310a --- /dev/null +++ b/web/patches/react-hot-toast@2.4.0.patch @@ -0,0 +1,228 @@ +diff --git a/dist/index.d.ts b/dist/index.d.ts +index 4b208397b30693e124aa0d8802be41104bb4ae23..8c9d448c9e10173616d58ac3ab443ea726bb2806 100644 +--- a/dist/index.d.ts ++++ b/dist/index.d.ts +@@ -3,7 +3,7 @@ import { CSSProperties } from 'react'; + import * as goober from 'goober'; + + declare type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom'; +-declare type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'; ++declare type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-right' | 'center-left'; + declare type Renderable = JSX.Element | string | null; + interface IconTheme { + primary: string; +diff --git a/dist/index.js b/dist/index.js +index 3cf68f6f3f944047d29538341561ed58d6484823..34dd98b4d79a6dace516caa4435d214d1c920804 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -1,4 +1,4 @@ +-"use strict";var Y=Object.create;var E=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var ee=(e,t)=>{for(var o in t)E(e,o,{get:t[o],enumerable:!0})},j=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G(t))!Z.call(e,r)&&r!==o&&E(e,r,{get:()=>t[r],enumerable:!(s=q(t,r))||s.enumerable});return e};var W=(e,t,o)=>(o=e!=null?Y(K(e)):{},j(t||!e||!e.__esModule?E(o,"default",{value:e,enumerable:!0}):o,e)),te=e=>j(E({},"__esModule",{value:!0}),e);var Ve={};ee(Ve,{CheckmarkIcon:()=>F,ErrorIcon:()=>w,LoaderIcon:()=>M,ToastBar:()=>$,ToastIcon:()=>U,Toaster:()=>J,default:()=>_e,resolveValue:()=>u,toast:()=>n,useToaster:()=>V,useToasterStore:()=>_});module.exports=te(Ve);var oe=e=>typeof e=="function",u=(e,t)=>oe(e)?e(t):e;var Q=(()=>{let e=0;return()=>(++e).toString()})(),R=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})();var k=require("react"),re=20;var v=new Map,se=1e3,X=e=>{if(v.has(e))return;let t=setTimeout(()=>{v.delete(e),l({type:4,toastId:e})},se);v.set(e,t)},ae=e=>{let t=v.get(e);t&&clearTimeout(t)},H=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,re)};case 1:return t.toast.id&&ae(t.toast.id),{...e,toasts:e.toasts.map(a=>a.id===t.toast.id?{...a,...t.toast}:a)};case 2:let{toast:o}=t;return e.toasts.find(a=>a.id===o.id)?H(e,{type:1,toast:o}):H(e,{type:0,toast:o});case 3:let{toastId:s}=t;return s?X(s):e.toasts.forEach(a=>{X(a.id)}),{...e,toasts:e.toasts.map(a=>a.id===s||s===void 0?{...a,visible:!1}:a)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(a=>a.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let r=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(a=>({...a,pauseDuration:a.pauseDuration+r}))}}},I=[],D={toasts:[],pausedAt:void 0},l=e=>{D=H(D,e),I.forEach(t=>{t(D)})},ie={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},_=(e={})=>{let[t,o]=(0,k.useState)(D);(0,k.useEffect)(()=>(I.push(o),()=>{let r=I.indexOf(o);r>-1&&I.splice(r,1)}),[t]);let s=t.toasts.map(r=>{var a,c;return{...e,...e[r.type],...r,duration:r.duration||((a=e[r.type])==null?void 0:a.duration)||(e==null?void 0:e.duration)||ie[r.type],style:{...e.style,...(c=e[r.type])==null?void 0:c.style,...r.style}}});return{...t,toasts:s}};var ce=(e,t="blank",o)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||Q()}),S=e=>(t,o)=>{let s=ce(t,e,o);return l({type:2,toast:s}),s.id},n=(e,t)=>S("blank")(e,t);n.error=S("error");n.success=S("success");n.loading=S("loading");n.custom=S("custom");n.dismiss=e=>{l({type:3,toastId:e})};n.remove=e=>l({type:4,toastId:e});n.promise=(e,t,o)=>{let s=n.loading(t.loading,{...o,...o==null?void 0:o.loading});return e.then(r=>(n.success(u(t.success,r),{id:s,...o,...o==null?void 0:o.success}),r)).catch(r=>{n.error(u(t.error,r),{id:s,...o,...o==null?void 0:o.error})}),e};var A=require("react");var pe=(e,t)=>{l({type:1,toast:{id:e,height:t}})},de=()=>{l({type:5,time:Date.now()})},V=e=>{let{toasts:t,pausedAt:o}=_(e);(0,A.useEffect)(()=>{if(o)return;let a=Date.now(),c=t.map(i=>{if(i.duration===1/0)return;let d=(i.duration||0)+i.pauseDuration-(a-i.createdAt);if(d<0){i.visible&&n.dismiss(i.id);return}return setTimeout(()=>n.dismiss(i.id),d)});return()=>{c.forEach(i=>i&&clearTimeout(i))}},[t,o]);let s=(0,A.useCallback)(()=>{o&&l({type:6,time:Date.now()})},[o]),r=(0,A.useCallback)((a,c)=>{let{reverseOrder:i=!1,gutter:d=8,defaultPosition:p}=c||{},g=t.filter(m=>(m.position||p)===(a.position||p)&&m.height),z=g.findIndex(m=>m.id===a.id),O=g.filter((m,B)=>Bm.visible).slice(...i?[O+1]:[0,O]).reduce((m,B)=>m+(B.height||0)+d,0)},[t]);return{toasts:t,handlers:{updateHeight:pe,startPause:de,endPause:s,calculateOffset:r}}};var T=W(require("react")),b=require("goober");var y=W(require("react")),x=require("goober");var h=require("goober"),me=h.keyframes` ++"use strict";var Y=Object.create;var E=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var ee=(e,t)=>{for(var o in t)E(e,o,{get:t[o],enumerable:!0})},j=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G(t))!Z.call(e,r)&&r!==o&&E(e,r,{get:()=>t[r],enumerable:!(s=q(t,r))||s.enumerable});return e};var W=(e,t,o)=>(o=e!=null?Y(K(e)):{},j(t||!e||!e.__esModule?E(o,"default",{value:e,enumerable:!0}):o,e)),te=e=>j(E({},"__esModule",{value:!0}),e);var Ve={};ee(Ve,{CheckmarkIcon:()=>F,ErrorIcon:()=>w,LoaderIcon:()=>M,ToastBar:()=>$,ToastIcon:()=>U,Toaster:()=>J,default:()=>_e,resolveValue:()=>m,toast:()=>i,useToaster:()=>V,useToasterStore:()=>_});module.exports=te(Ve);var oe=e=>typeof e=="function",m=(e,t)=>oe(e)?e(t):e;var Q=(()=>{let e=0;return()=>(++e).toString()})(),R=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})();var k=require("react"),re=20;var v=new Map,se=1e3,X=e=>{if(v.has(e))return;let t=setTimeout(()=>{v.delete(e),l({type:4,toastId:e})},se);v.set(e,t)},ae=e=>{let t=v.get(e);t&&clearTimeout(t)},H=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,re)};case 1:return t.toast.id&&ae(t.toast.id),{...e,toasts:e.toasts.map(a=>a.id===t.toast.id?{...a,...t.toast}:a)};case 2:let{toast:o}=t;return e.toasts.find(a=>a.id===o.id)?H(e,{type:1,toast:o}):H(e,{type:0,toast:o});case 3:let{toastId:s}=t;return s?X(s):e.toasts.forEach(a=>{X(a.id)}),{...e,toasts:e.toasts.map(a=>a.id===s||s===void 0?{...a,visible:!1}:a)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(a=>a.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let r=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(a=>({...a,pauseDuration:a.pauseDuration+r}))}}},I=[],D={toasts:[],pausedAt:void 0},l=e=>{D=H(D,e),I.forEach(t=>{t(D)})},ne={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},_=(e={})=>{let[t,o]=(0,k.useState)(D);(0,k.useEffect)(()=>(I.push(o),()=>{let r=I.indexOf(o);r>-1&&I.splice(r,1)}),[t]);let s=t.toasts.map(r=>{var a,c;return{...e,...e[r.type],...r,duration:r.duration||((a=e[r.type])==null?void 0:a.duration)||(e==null?void 0:e.duration)||ne[r.type],style:{...e.style,...(c=e[r.type])==null?void 0:c.style,...r.style}}});return{...t,toasts:s}};var ce=(e,t="blank",o)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||Q()}),S=e=>(t,o)=>{let s=ce(t,e,o);return l({type:2,toast:s}),s.id},i=(e,t)=>S("blank")(e,t);i.error=S("error");i.success=S("success");i.loading=S("loading");i.custom=S("custom");i.dismiss=e=>{l({type:3,toastId:e})};i.remove=e=>l({type:4,toastId:e});i.promise=(e,t,o)=>{let s=i.loading(t.loading,{...o,...o==null?void 0:o.loading});return e.then(r=>(i.success(m(t.success,r),{id:s,...o,...o==null?void 0:o.success}),r)).catch(r=>{i.error(m(t.error,r),{id:s,...o,...o==null?void 0:o.error})}),e};var A=require("react");var pe=(e,t)=>{l({type:1,toast:{id:e,height:t}})},de=()=>{l({type:5,time:Date.now()})},V=e=>{let{toasts:t,pausedAt:o}=_(e);(0,A.useEffect)(()=>{if(o)return;let a=Date.now(),c=t.map(n=>{if(n.duration===1/0)return;let d=(n.duration||0)+n.pauseDuration-(a-n.createdAt);if(d<0){n.visible&&i.dismiss(n.id);return}return setTimeout(()=>i.dismiss(n.id),d)});return()=>{c.forEach(n=>n&&clearTimeout(n))}},[t,o]);let s=(0,A.useCallback)(()=>{o&&l({type:6,time:Date.now()})},[o]),r=(0,A.useCallback)((a,c)=>{let{reverseOrder:n=!1,gutter:d=8,defaultPosition:p}=c||{},g=t.filter(u=>(u.position||p)===(a.position||p)&&u.height),z=g.findIndex(u=>u.id===a.id),O=g.filter((u,B)=>Bu.visible).slice(...n?[O+1]:[0,O]).reduce((u,B)=>u+(B.height||0)+d,0)},[t]);return{toasts:t,handlers:{updateHeight:pe,startPause:de,endPause:s,calculateOffset:r}}};var f=W(require("react")),b=require("goober");var y=W(require("react")),x=require("goober");var h=require("goober"),ue=h.keyframes` + from { + transform: scale(0) rotate(45deg); + opacity: 0; +@@ -6,7 +6,7 @@ from { + to { + transform: scale(1) rotate(45deg); + opacity: 1; +-}`,ue=h.keyframes` ++}`,me=h.keyframes` + from { + transform: scale(0); + opacity: 0; +@@ -31,14 +31,14 @@ to { + position: relative; + transform: rotate(45deg); + +- animation: ${me} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) ++ animation: ${ue} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) + forwards; + animation-delay: 100ms; + + &:after, + &:before { + content: ''; +- animation: ${ue} 0.15s ease-out forwards; ++ animation: ${me} 0.15s ease-out forwards; + animation-delay: 150ms; + position: absolute; + border-radius: 3px; +@@ -55,7 +55,7 @@ to { + animation-delay: 180ms; + transform: rotate(90deg); + } +-`;var C=require("goober"),Te=C.keyframes` ++`;var C=require("goober"),fe=C.keyframes` + from { + transform: rotate(0deg); + } +@@ -70,8 +70,8 @@ to { + border-radius: 100%; + border-color: ${e=>e.secondary||"#e0e0e0"}; + border-right-color: ${e=>e.primary||"#616161"}; +- animation: ${Te} 1s linear infinite; +-`;var P=require("goober"),fe=P.keyframes` ++ animation: ${fe} 1s linear infinite; ++`;var P=require("goober"),Te=P.keyframes` + from { + transform: scale(0) rotate(45deg); + opacity: 0; +@@ -102,7 +102,7 @@ to { + position: relative; + transform: rotate(45deg); + +- animation: ${fe} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) ++ animation: ${Te} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) + forwards; + animation-delay: 100ms; + &:after { +@@ -169,10 +169,10 @@ to { + color: inherit; + flex: 1 1 auto; + white-space: pre-line; +-`,ve=(e,t)=>{let s=e.includes("top")?1:-1,[r,a]=R()?[Pe,Oe]:[Se(s),Ae(s)];return{animation:t?`${(0,b.keyframes)(r)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${(0,b.keyframes)(a)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},$=T.memo(({toast:e,position:t,style:o,children:s})=>{let r=e.height?ve(e.position||t||"top-center",e.visible):{opacity:0},a=T.createElement(U,{toast:e}),c=T.createElement(Re,{...e.ariaProps},u(e.message,e));return T.createElement(Ee,{className:e.className,style:{...r,...o,...e.style}},typeof s=="function"?s({icon:a,message:c}):T.createElement(T.Fragment,null,a,c))});var N=require("goober"),f=W(require("react"));(0,N.setup)(f.createElement);var Ie=({id:e,className:t,style:o,onHeightUpdate:s,children:r})=>{let a=f.useCallback(c=>{if(c){let i=()=>{let d=c.getBoundingClientRect().height;s(e,d)};i(),new MutationObserver(i).observe(c,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return f.createElement("div",{ref:a,className:t,style:o},r)},De=(e,t)=>{let o=e.includes("top"),s=o?{top:0}:{bottom:0},r=e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:R()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${t*(o?1:-1)}px)`,...s,...r}},ke=N.css` ++`,ve=(e,t)=>{let s=e.includes("top")?1:-1,[r,a]=R()?[Pe,Oe]:[Se(s),Ae(s)];return{animation:t?`${(0,b.keyframes)(r)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${(0,b.keyframes)(a)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},$=f.memo(({toast:e,position:t,style:o,children:s})=>{let r=e.height?ve(e.position||t||"top-center",e.visible):{opacity:0},a=f.createElement(U,{toast:e}),c=f.createElement(Re,{...e.ariaProps},m(e.message,e));return f.createElement(Ee,{className:e.className,style:{...r,...o,...e.style}},typeof s=="function"?s({icon:a,message:c}):f.createElement(f.Fragment,null,a,c))});var N=require("goober"),T=W(require("react"));(0,N.setup)(T.createElement);var Ie=({id:e,className:t,style:o,onHeightUpdate:s,children:r})=>{let a=T.useCallback(c=>{if(c){let n=()=>{let d=c.getBoundingClientRect().height;s(e,d)};n(),new MutationObserver(n).observe(c,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return T.createElement("div",{ref:a,className:t,style:o},r)},De=(e,t)=>{let o=e.includes("top")||e.includes("center-"),s=o?{top:e.includes("center-")?"50%":0}:{bottom:0},r=e.includes("center-right")?{justifyContent:"flex-end"}:e.includes("center-left")?{justifyContent:"flex-start"}:e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:R()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${t*(o?1:-1)}px)`,...s,...r}},ke=N.css` + z-index: 9999; + > * { + pointer-events: auto; + } +-`,L=16,J=({reverseOrder:e,position:t="top-center",toastOptions:o,gutter:s,children:r,containerStyle:a,containerClassName:c})=>{let{toasts:i,handlers:d}=V(o);return f.createElement("div",{style:{position:"fixed",zIndex:9999,top:L,left:L,right:L,bottom:L,pointerEvents:"none",...a},className:c,onMouseEnter:d.startPause,onMouseLeave:d.endPause},i.map(p=>{let g=p.position||t,z=d.calculateOffset(p,{reverseOrder:e,gutter:s,defaultPosition:t}),O=De(g,z);return f.createElement(Ie,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?ke:"",style:O},p.type==="custom"?u(p.message,p):r?r(p):f.createElement($,{toast:p,position:g}))}))};var _e=n;0&&(module.exports={CheckmarkIcon,ErrorIcon,LoaderIcon,ToastBar,ToastIcon,Toaster,resolveValue,toast,useToaster,useToasterStore}); ++`,L=16,J=({reverseOrder:e,position:t="top-center",toastOptions:o,gutter:s,children:r,containerStyle:a,containerClassName:c})=>{let{toasts:n,handlers:d}=V(o);return T.createElement("div",{style:{position:"fixed",zIndex:9999,top:L,left:L,right:L,bottom:L,pointerEvents:"none",...a},className:c,onMouseEnter:d.startPause,onMouseLeave:d.endPause},n.map(p=>{let g=p.position||t,z=d.calculateOffset(p,{reverseOrder:e,gutter:s,defaultPosition:t}),O=De(g,z);return T.createElement(Ie,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?ke:"",style:O},p.type==="custom"?m(p.message,p):r?r(p):T.createElement($,{toast:p,position:g}))}))};var _e=i;0&&(module.exports={CheckmarkIcon,ErrorIcon,LoaderIcon,ToastBar,ToastIcon,Toaster,resolveValue,toast,useToaster,useToasterStore}); + //# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/dist/index.js.map b/dist/index.js.map +index d7510655f2644f5a0b9d8c104d0a6d23ee4a7717..53d2c71f53732a2041b232d1a73593d16e025723 100644 +--- a/dist/index.js.map ++++ b/dist/index.js.map +@@ -1 +1 @@ +-{"version":3,"sources":["../src/index.ts","../src/core/types.ts","../src/core/utils.ts","../src/core/store.ts","../src/core/toast.ts","../src/core/use-toaster.ts","../src/components/toast-bar.tsx","../src/components/toast-icon.tsx","../src/components/error.tsx","../src/components/loader.tsx","../src/components/checkmark.tsx","../src/components/toaster.tsx"],"sourcesContent":["import { toast } from './core/toast';\n\nexport * from './headless';\n\nexport { ToastBar } from './components/toast-bar';\nexport { ToastIcon } from './components/toast-icon';\nexport { Toaster } from './components/toaster';\nexport { CheckmarkIcon } from './components/checkmark';\nexport { ErrorIcon } from './components/error';\nexport { LoaderIcon } from './components/loader';\n\nexport { toast };\nexport default toast;\n","import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n primary: string;\n secondary: string;\n}\n\nexport type ValueFunction = (arg: TArg) => TValue;\nexport type ValueOrFunction =\n | TValue\n | ValueFunction;\n\nconst isFunction = (\n valOrFunction: ValueOrFunction\n): valOrFunction is ValueFunction =>\n typeof valOrFunction === 'function';\n\nexport const resolveValue = (\n valOrFunction: ValueOrFunction,\n arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n type: ToastType;\n id: string;\n message: ValueOrFunction;\n icon?: Renderable;\n duration?: number;\n pauseDuration: number;\n position?: ToastPosition;\n\n ariaProps: {\n role: 'status' | 'alert';\n 'aria-live': 'assertive' | 'off' | 'polite';\n };\n\n style?: CSSProperties;\n className?: string;\n iconTheme?: IconTheme;\n\n createdAt: number;\n visible: boolean;\n height?: number;\n}\n\nexport type ToastOptions = Partial<\n Pick<\n Toast,\n | 'id'\n | 'icon'\n | 'duration'\n | 'ariaProps'\n | 'className'\n | 'style'\n | 'position'\n | 'iconTheme'\n >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n position?: ToastPosition;\n toastOptions?: DefaultToastOptions;\n reverseOrder?: boolean;\n gutter?: number;\n containerStyle?: React.CSSProperties;\n containerClassName?: string;\n children?: (toast: Toast) => JSX.Element;\n}\n\nexport interface ToastWrapperProps {\n id: string;\n className?: string;\n style?: React.CSSProperties;\n onHeightUpdate: (id: string, height: number) => void;\n children?: React.ReactNode;\n}\n","export const genId = (() => {\n let count = 0;\n return () => {\n return (++count).toString();\n };\n})();\n\nexport const prefersReducedMotion = (() => {\n // Cache result\n let shouldReduceMotion: boolean | undefined = undefined;\n\n return () => {\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n }\n return shouldReduceMotion;\n };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n ADD_TOAST,\n UPDATE_TOAST,\n UPSERT_TOAST,\n DISMISS_TOAST,\n REMOVE_TOAST,\n START_PAUSE,\n END_PAUSE,\n}\n\ntype Action =\n | {\n type: ActionType.ADD_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPSERT_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPDATE_TOAST;\n toast: Partial;\n }\n | {\n type: ActionType.DISMISS_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.REMOVE_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.START_PAUSE;\n time: number;\n }\n | {\n type: ActionType.END_PAUSE;\n time: number;\n };\n\ninterface State {\n toasts: Toast[];\n pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map>();\n\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionType.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_EXPIRE_DISMISS_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n const timeout = toastTimeouts.get(toastId);\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionType.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionType.UPDATE_TOAST:\n // ! Side effects !\n if (action.toast.id) {\n clearFromRemoveQueue(action.toast.id);\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionType.UPSERT_TOAST:\n const { toast } = action;\n return state.toasts.find((t) => t.id === toast.id)\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n case ActionType.DISMISS_TOAST:\n const { toastId } = action;\n\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n visible: false,\n }\n : t\n ),\n };\n case ActionType.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n\n case ActionType.START_PAUSE:\n return {\n ...state,\n pausedAt: action.time,\n };\n\n case ActionType.END_PAUSE:\n const diff = action.time - (state.pausedAt || 0);\n\n return {\n ...state,\n pausedAt: undefined,\n toasts: state.toasts.map((t) => ({\n ...t,\n pauseDuration: t.pauseDuration + diff,\n })),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\nexport const defaultTimeouts: {\n [key in ToastType]: number;\n} = {\n blank: 4000,\n error: 4000,\n success: 2000,\n loading: Infinity,\n custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n const [state, setState] = useState(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const mergedToasts = state.toasts.map((t) => ({\n ...toastOptions,\n ...toastOptions[t.type],\n ...t,\n duration:\n t.duration ||\n toastOptions[t.type]?.duration ||\n toastOptions?.duration ||\n defaultTimeouts[t.type],\n style: {\n ...toastOptions.style,\n ...toastOptions[t.type]?.style,\n ...t.style,\n },\n }));\n\n return {\n ...state,\n toasts: mergedToasts,\n };\n};\n","import {\n Renderable,\n Toast,\n ToastOptions,\n ToastType,\n DefaultToastOptions,\n ValueOrFunction,\n resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n message: Message,\n type: ToastType = 'blank',\n opts?: ToastOptions\n): Toast => ({\n createdAt: Date.now(),\n visible: true,\n type,\n ariaProps: {\n role: 'status',\n 'aria-live': 'polite',\n },\n message,\n pauseDuration: 0,\n ...opts,\n id: opts?.id || genId(),\n});\n\nconst createHandler =\n (type?: ToastType): ToastHandler =>\n (message, options) => {\n const toast = createToast(message, type, options);\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\n return toast.id;\n };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n dispatch({\n type: ActionType.DISMISS_TOAST,\n toastId,\n });\n};\n\ntoast.remove = (toastId?: string) =>\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = (\n promise: Promise,\n msgs: {\n loading: Renderable;\n success: ValueOrFunction;\n error: ValueOrFunction;\n },\n opts?: DefaultToastOptions\n) => {\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n promise\n .then((p) => {\n toast.success(resolveValue(msgs.success, p), {\n id,\n ...opts,\n ...opts?.success,\n });\n return p;\n })\n .catch((e) => {\n toast.error(resolveValue(msgs.error, e), {\n id,\n ...opts,\n ...opts?.error,\n });\n });\n\n return promise;\n};\n\nexport { toast };\n","import { useEffect, useCallback } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nconst updateHeight = (toastId: string, height: number) => {\n dispatch({\n type: ActionType.UPDATE_TOAST,\n toast: { id: toastId, height },\n });\n};\nconst startPause = () => {\n dispatch({\n type: ActionType.START_PAUSE,\n time: Date.now(),\n });\n};\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n const { toasts, pausedAt } = useStore(toastOptions);\n\n useEffect(() => {\n if (pausedAt) {\n return;\n }\n\n const now = Date.now();\n const timeouts = toasts.map((t) => {\n if (t.duration === Infinity) {\n return;\n }\n\n const durationLeft =\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n if (durationLeft < 0) {\n if (t.visible) {\n toast.dismiss(t.id);\n }\n return;\n }\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\n });\n\n return () => {\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n };\n }, [toasts, pausedAt]);\n\n const endPause = useCallback(() => {\n if (pausedAt) {\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n }\n }, [pausedAt]);\n\n const calculateOffset = useCallback(\n (\n toast: Toast,\n opts?: {\n reverseOrder?: boolean;\n gutter?: number;\n defaultPosition?: ToastPosition;\n }\n ) => {\n const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\n\n const relevantToasts = toasts.filter(\n (t) =>\n (t.position || defaultPosition) ===\n (toast.position || defaultPosition) && t.height\n );\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n const toastsBefore = relevantToasts.filter(\n (toast, i) => i < toastIndex && toast.visible\n ).length;\n\n const offset = relevantToasts\n .filter((t) => t.visible)\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n return offset;\n },\n [toasts]\n );\n\n return {\n toasts,\n handlers: {\n updateHeight,\n startPause,\n endPause,\n calculateOffset,\n },\n };\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div')`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n toast: Toast;\n position?: ToastPosition;\n style?: React.CSSProperties;\n children?: (components: {\n icon: Renderable;\n message: Renderable;\n }) => Renderable;\n}\n\nconst getAnimationStyle = (\n position: ToastPosition,\n visible: boolean\n): React.CSSProperties => {\n const top = position.includes('top');\n const factor = top ? 1 : -1;\n\n const [enter, exit] = prefersReducedMotion()\n ? [fadeInAnimation, fadeOutAnimation]\n : [enterAnimation(factor), exitAnimation(factor)];\n\n return {\n animation: visible\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n };\n};\n\nexport const ToastBar: React.FC = React.memo(\n ({ toast, position, style, children }) => {\n const animationStyle: React.CSSProperties = toast.height\n ? getAnimationStyle(\n toast.position || position || 'top-center',\n toast.visible\n )\n : { opacity: 0 };\n\n const icon = ;\n const message = (\n \n {resolveValue(toast.message, toast)}\n \n );\n\n return (\n \n {typeof children === 'function' ? (\n children({\n icon,\n message,\n })\n ) : (\n <>\n {icon}\n {message}\n \n )}\n \n );\n }\n);\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`;\n\nexport type IconThemes = Partial<{\n success: CheckmarkTheme;\n error: ErrorTheme;\n loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n toast: Toast;\n}> = ({ toast }) => {\n const { icon, type, iconTheme } = toast;\n if (icon !== undefined) {\n if (typeof icon === 'string') {\n return {icon};\n } else {\n return icon;\n }\n }\n\n if (type === 'blank') {\n return null;\n }\n\n return (\n \n \n {type !== 'loading' && (\n \n {type === 'error' ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#ff4b4b'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${(p) => p.secondary || '#fff'};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport interface LoaderTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${(p) => p.secondary || '#e0e0e0'};\n border-right-color: ${(p) => p.primary || '#616161'};\n animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#61d345'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${(p) => p.secondary || '#fff'};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport {\n resolveValue,\n ToasterProps,\n ToastPosition,\n ToastWrapperProps,\n} from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst ToastWrapper = ({\n id,\n className,\n style,\n onHeightUpdate,\n children,\n}: ToastWrapperProps) => {\n const ref = React.useCallback(\n (el: HTMLElement | null) => {\n if (el) {\n const updateHeight = () => {\n const height = el.getBoundingClientRect().height;\n onHeightUpdate(id, height);\n };\n updateHeight();\n new MutationObserver(updateHeight).observe(el, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n },\n [id, onHeightUpdate]\n );\n\n return (\n
\n {children}\n
\n );\n};\n\nconst getPositionStyle = (\n position: ToastPosition,\n offset: number\n): React.CSSProperties => {\n const top = position.includes('top');\n const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n const horizontalStyle: React.CSSProperties = position.includes('center')\n ? {\n justifyContent: 'center',\n }\n : position.includes('right')\n ? {\n justifyContent: 'flex-end',\n }\n : {};\n return {\n left: 0,\n right: 0,\n display: 'flex',\n position: 'absolute',\n transition: prefersReducedMotion()\n ? undefined\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n ...verticalStyle,\n ...horizontalStyle,\n };\n};\n\nconst activeClass = css`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC = ({\n reverseOrder,\n position = 'top-center',\n toastOptions,\n gutter,\n children,\n containerStyle,\n containerClassName,\n}) => {\n const { toasts, handlers } = useToaster(toastOptions);\n\n return (\n \n {toasts.map((t) => {\n const toastPosition = t.position || position;\n const offset = handlers.calculateOffset(t, {\n reverseOrder,\n gutter,\n defaultPosition: position,\n });\n const positionStyle = getPositionStyle(toastPosition, offset);\n\n return (\n \n {t.type === 'custom' ? (\n resolveValue(t.message, t)\n ) : children ? (\n children(t)\n ) : (\n \n )}\n \n );\n })}\n \n );\n};\n"],"mappings":"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","names":[]} +\ No newline at end of file ++{"version":3,"sources":["../src/index.ts","../src/core/types.ts","../src/core/utils.ts","../src/core/store.ts","../src/core/toast.ts","../src/core/use-toaster.ts","../src/components/toast-bar.tsx","../src/components/toast-icon.tsx","../src/components/error.tsx","../src/components/loader.tsx","../src/components/checkmark.tsx","../src/components/toaster.tsx"],"sourcesContent":["import { toast } from './core/toast';\r\n\r\nexport * from './headless';\r\n\r\nexport { ToastBar } from './components/toast-bar';\r\nexport { ToastIcon } from './components/toast-icon';\r\nexport { Toaster } from './components/toaster';\r\nexport { CheckmarkIcon } from './components/checkmark';\r\nexport { ErrorIcon } from './components/error';\r\nexport { LoaderIcon } from './components/loader';\r\n\r\nexport { toast };\r\nexport default toast;\r\n","import { CSSProperties } from 'react';\r\n\r\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\r\nexport type ToastPosition =\r\n | 'top-left'\r\n | 'top-center'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-center'\r\n | 'bottom-right'\r\n | 'center-right'\r\n | 'center-left';\r\n\r\nexport type Renderable = JSX.Element | string | null;\r\n\r\nexport interface IconTheme {\r\n primary: string;\r\n secondary: string;\r\n}\r\n\r\nexport type ValueFunction = (arg: TArg) => TValue;\r\nexport type ValueOrFunction =\r\n | TValue\r\n | ValueFunction;\r\n\r\nconst isFunction = (\r\n valOrFunction: ValueOrFunction\r\n): valOrFunction is ValueFunction =>\r\n typeof valOrFunction === 'function';\r\n\r\nexport const resolveValue = (\r\n valOrFunction: ValueOrFunction,\r\n arg: TArg\r\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\r\n\r\nexport interface Toast {\r\n type: ToastType;\r\n id: string;\r\n message: ValueOrFunction;\r\n icon?: Renderable;\r\n duration?: number;\r\n pauseDuration: number;\r\n position?: ToastPosition;\r\n\r\n ariaProps: {\r\n role: 'status' | 'alert';\r\n 'aria-live': 'assertive' | 'off' | 'polite';\r\n };\r\n\r\n style?: CSSProperties;\r\n className?: string;\r\n iconTheme?: IconTheme;\r\n\r\n createdAt: number;\r\n visible: boolean;\r\n height?: number;\r\n}\r\n\r\nexport type ToastOptions = Partial<\r\n Pick<\r\n Toast,\r\n | 'id'\r\n | 'icon'\r\n | 'duration'\r\n | 'ariaProps'\r\n | 'className'\r\n | 'style'\r\n | 'position'\r\n | 'iconTheme'\r\n >\r\n>;\r\n\r\nexport type DefaultToastOptions = ToastOptions & {\r\n [key in ToastType]?: ToastOptions;\r\n};\r\n\r\nexport interface ToasterProps {\r\n position?: ToastPosition;\r\n toastOptions?: DefaultToastOptions;\r\n reverseOrder?: boolean;\r\n gutter?: number;\r\n containerStyle?: React.CSSProperties;\r\n containerClassName?: string;\r\n children?: (toast: Toast) => JSX.Element;\r\n}\r\n\r\nexport interface ToastWrapperProps {\r\n id: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n onHeightUpdate: (id: string, height: number) => void;\r\n children?: React.ReactNode;\r\n}\r\n","export const genId = (() => {\r\n let count = 0;\r\n return () => {\r\n return (++count).toString();\r\n };\r\n})();\r\n\r\nexport const prefersReducedMotion = (() => {\r\n // Cache result\r\n let shouldReduceMotion: boolean | undefined = undefined;\r\n\r\n return () => {\r\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\r\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\r\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\r\n }\r\n return shouldReduceMotion;\r\n };\r\n})();\r\n","import { useEffect, useState } from 'react';\r\nimport { DefaultToastOptions, Toast, ToastType } from './types';\r\n\r\nconst TOAST_LIMIT = 20;\r\n\r\nexport enum ActionType {\r\n ADD_TOAST,\r\n UPDATE_TOAST,\r\n UPSERT_TOAST,\r\n DISMISS_TOAST,\r\n REMOVE_TOAST,\r\n START_PAUSE,\r\n END_PAUSE,\r\n}\r\n\r\ntype Action =\r\n | {\r\n type: ActionType.ADD_TOAST;\r\n toast: Toast;\r\n }\r\n | {\r\n type: ActionType.UPSERT_TOAST;\r\n toast: Toast;\r\n }\r\n | {\r\n type: ActionType.UPDATE_TOAST;\r\n toast: Partial;\r\n }\r\n | {\r\n type: ActionType.DISMISS_TOAST;\r\n toastId?: string;\r\n }\r\n | {\r\n type: ActionType.REMOVE_TOAST;\r\n toastId?: string;\r\n }\r\n | {\r\n type: ActionType.START_PAUSE;\r\n time: number;\r\n }\r\n | {\r\n type: ActionType.END_PAUSE;\r\n time: number;\r\n };\r\n\r\ninterface State {\r\n toasts: Toast[];\r\n pausedAt: number | undefined;\r\n}\r\n\r\nconst toastTimeouts = new Map>();\r\n\r\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n if (toastTimeouts.has(toastId)) {\r\n return;\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n toastTimeouts.delete(toastId);\r\n dispatch({\r\n type: ActionType.REMOVE_TOAST,\r\n toastId: toastId,\r\n });\r\n }, TOAST_EXPIRE_DISMISS_DELAY);\r\n\r\n toastTimeouts.set(toastId, timeout);\r\n};\r\n\r\nconst clearFromRemoveQueue = (toastId: string) => {\r\n const timeout = toastTimeouts.get(toastId);\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n};\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case ActionType.ADD_TOAST:\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n };\r\n\r\n case ActionType.UPDATE_TOAST:\r\n // ! Side effects !\r\n if (action.toast.id) {\r\n clearFromRemoveQueue(action.toast.id);\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === action.toast.id ? { ...t, ...action.toast } : t\r\n ),\r\n };\r\n\r\n case ActionType.UPSERT_TOAST:\r\n const { toast } = action;\r\n return state.toasts.find((t) => t.id === toast.id)\r\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\r\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\r\n\r\n case ActionType.DISMISS_TOAST:\r\n const { toastId } = action;\r\n\r\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\r\n if (toastId) {\r\n addToRemoveQueue(toastId);\r\n } else {\r\n state.toasts.forEach((toast) => {\r\n addToRemoveQueue(toast.id);\r\n });\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? {\r\n ...t,\r\n visible: false,\r\n }\r\n : t\r\n ),\r\n };\r\n case ActionType.REMOVE_TOAST:\r\n if (action.toastId === undefined) {\r\n return {\r\n ...state,\r\n toasts: [],\r\n };\r\n }\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n };\r\n\r\n case ActionType.START_PAUSE:\r\n return {\r\n ...state,\r\n pausedAt: action.time,\r\n };\r\n\r\n case ActionType.END_PAUSE:\r\n const diff = action.time - (state.pausedAt || 0);\r\n\r\n return {\r\n ...state,\r\n pausedAt: undefined,\r\n toasts: state.toasts.map((t) => ({\r\n ...t,\r\n pauseDuration: t.pauseDuration + diff,\r\n })),\r\n };\r\n }\r\n};\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\n\r\nlet memoryState: State = { toasts: [], pausedAt: undefined };\r\n\r\nexport const dispatch = (action: Action) => {\r\n memoryState = reducer(memoryState, action);\r\n listeners.forEach((listener) => {\r\n listener(memoryState);\r\n });\r\n};\r\n\r\nexport const defaultTimeouts: {\r\n [key in ToastType]: number;\r\n} = {\r\n blank: 4000,\r\n error: 4000,\r\n success: 2000,\r\n loading: Infinity,\r\n custom: 4000,\r\n};\r\n\r\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\r\n const [state, setState] = useState(memoryState);\r\n useEffect(() => {\r\n listeners.push(setState);\r\n return () => {\r\n const index = listeners.indexOf(setState);\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n }\r\n };\r\n }, [state]);\r\n\r\n const mergedToasts = state.toasts.map((t) => ({\r\n ...toastOptions,\r\n ...toastOptions[t.type],\r\n ...t,\r\n duration:\r\n t.duration ||\r\n toastOptions[t.type]?.duration ||\r\n toastOptions?.duration ||\r\n defaultTimeouts[t.type],\r\n style: {\r\n ...toastOptions.style,\r\n ...toastOptions[t.type]?.style,\r\n ...t.style,\r\n },\r\n }));\r\n\r\n return {\r\n ...state,\r\n toasts: mergedToasts,\r\n };\r\n};\r\n","import {\r\n Renderable,\r\n Toast,\r\n ToastOptions,\r\n ToastType,\r\n DefaultToastOptions,\r\n ValueOrFunction,\r\n resolveValue,\r\n} from './types';\r\nimport { genId } from './utils';\r\nimport { dispatch, ActionType } from './store';\r\n\r\ntype Message = ValueOrFunction;\r\n\r\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\r\n\r\nconst createToast = (\r\n message: Message,\r\n type: ToastType = 'blank',\r\n opts?: ToastOptions\r\n): Toast => ({\r\n createdAt: Date.now(),\r\n visible: true,\r\n type,\r\n ariaProps: {\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n },\r\n message,\r\n pauseDuration: 0,\r\n ...opts,\r\n id: opts?.id || genId(),\r\n});\r\n\r\nconst createHandler =\r\n (type?: ToastType): ToastHandler =>\r\n (message, options) => {\r\n const toast = createToast(message, type, options);\r\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\r\n return toast.id;\r\n };\r\n\r\nconst toast = (message: Message, opts?: ToastOptions) =>\r\n createHandler('blank')(message, opts);\r\n\r\ntoast.error = createHandler('error');\r\ntoast.success = createHandler('success');\r\ntoast.loading = createHandler('loading');\r\ntoast.custom = createHandler('custom');\r\n\r\ntoast.dismiss = (toastId?: string) => {\r\n dispatch({\r\n type: ActionType.DISMISS_TOAST,\r\n toastId,\r\n });\r\n};\r\n\r\ntoast.remove = (toastId?: string) =>\r\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\r\n\r\ntoast.promise = (\r\n promise: Promise,\r\n msgs: {\r\n loading: Renderable;\r\n success: ValueOrFunction;\r\n error: ValueOrFunction;\r\n },\r\n opts?: DefaultToastOptions\r\n) => {\r\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\r\n\r\n promise\r\n .then((p) => {\r\n toast.success(resolveValue(msgs.success, p), {\r\n id,\r\n ...opts,\r\n ...opts?.success,\r\n });\r\n return p;\r\n })\r\n .catch((e) => {\r\n toast.error(resolveValue(msgs.error, e), {\r\n id,\r\n ...opts,\r\n ...opts?.error,\r\n });\r\n });\r\n\r\n return promise;\r\n};\r\n\r\nexport { toast };\r\n","import { useEffect, useCallback } from 'react';\r\nimport { dispatch, ActionType, useStore } from './store';\r\nimport { toast } from './toast';\r\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\r\n\r\nconst updateHeight = (toastId: string, height: number) => {\r\n dispatch({\r\n type: ActionType.UPDATE_TOAST,\r\n toast: { id: toastId, height },\r\n });\r\n};\r\nconst startPause = () => {\r\n dispatch({\r\n type: ActionType.START_PAUSE,\r\n time: Date.now(),\r\n });\r\n};\r\n\r\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\r\n const { toasts, pausedAt } = useStore(toastOptions);\r\n\r\n useEffect(() => {\r\n if (pausedAt) {\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n const timeouts = toasts.map((t) => {\r\n if (t.duration === Infinity) {\r\n return;\r\n }\r\n\r\n const durationLeft =\r\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\r\n\r\n if (durationLeft < 0) {\r\n if (t.visible) {\r\n toast.dismiss(t.id);\r\n }\r\n return;\r\n }\r\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\r\n });\r\n\r\n return () => {\r\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\r\n };\r\n }, [toasts, pausedAt]);\r\n\r\n const endPause = useCallback(() => {\r\n if (pausedAt) {\r\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\r\n }\r\n }, [pausedAt]);\r\n\r\n const calculateOffset = useCallback(\r\n (\r\n toast: Toast,\r\n opts?: {\r\n reverseOrder?: boolean;\r\n gutter?: number;\r\n defaultPosition?: ToastPosition;\r\n }\r\n ) => {\r\n const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\r\n\r\n const relevantToasts = toasts.filter(\r\n (t) =>\r\n (t.position || defaultPosition) ===\r\n (toast.position || defaultPosition) && t.height\r\n );\r\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\r\n const toastsBefore = relevantToasts.filter(\r\n (toast, i) => i < toastIndex && toast.visible\r\n ).length;\r\n\r\n const offset = relevantToasts\r\n .filter((t) => t.visible)\r\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\r\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\r\n\r\n return offset;\r\n },\r\n [toasts]\r\n );\r\n\r\n return {\r\n toasts,\r\n handlers: {\r\n updateHeight,\r\n startPause,\r\n endPause,\r\n calculateOffset,\r\n },\r\n };\r\n};\r\n","import * as React from 'react';\r\nimport { styled, keyframes } from 'goober';\r\n\r\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\r\nimport { ToastIcon } from './toast-icon';\r\nimport { prefersReducedMotion } from '../core/utils';\r\n\r\nconst enterAnimation = (factor: number) => `\r\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\r\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\r\n`;\r\n\r\nconst exitAnimation = (factor: number) => `\r\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\r\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\r\n`;\r\n\r\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\r\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\r\n\r\nconst ToastBarBase = styled('div')`\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #363636;\r\n line-height: 1.3;\r\n will-change: transform;\r\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\r\n max-width: 350px;\r\n pointer-events: auto;\r\n padding: 8px 10px;\r\n border-radius: 8px;\r\n`;\r\n\r\nconst Message = styled('div')`\r\n display: flex;\r\n justify-content: center;\r\n margin: 4px 10px;\r\n color: inherit;\r\n flex: 1 1 auto;\r\n white-space: pre-line;\r\n`;\r\n\r\ninterface ToastBarProps {\r\n toast: Toast;\r\n position?: ToastPosition;\r\n style?: React.CSSProperties;\r\n children?: (components: {\r\n icon: Renderable;\r\n message: Renderable;\r\n }) => Renderable;\r\n}\r\n\r\nconst getAnimationStyle = (\r\n position: ToastPosition,\r\n visible: boolean\r\n): React.CSSProperties => {\r\n const top = position.includes('top');\r\n const factor = top ? 1 : -1;\r\n\r\n const [enter, exit] = prefersReducedMotion()\r\n ? [fadeInAnimation, fadeOutAnimation]\r\n : [enterAnimation(factor), exitAnimation(factor)];\r\n\r\n return {\r\n animation: visible\r\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\r\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\r\n };\r\n};\r\n\r\nexport const ToastBar: React.FC = React.memo(\r\n ({ toast, position, style, children }) => {\r\n const animationStyle: React.CSSProperties = toast.height\r\n ? getAnimationStyle(\r\n toast.position || position || 'top-center',\r\n toast.visible\r\n )\r\n : { opacity: 0 };\r\n\r\n const icon = ;\r\n const message = (\r\n \r\n {resolveValue(toast.message, toast)}\r\n \r\n );\r\n\r\n return (\r\n \r\n {typeof children === 'function' ? (\r\n children({\r\n icon,\r\n message,\r\n })\r\n ) : (\r\n <>\r\n {icon}\r\n {message}\r\n \r\n )}\r\n \r\n );\r\n }\r\n);\r\n","import * as React from 'react';\r\nimport { styled, keyframes } from 'goober';\r\n\r\nimport { Toast } from '../core/types';\r\nimport { ErrorIcon, ErrorTheme } from './error';\r\nimport { LoaderIcon, LoaderTheme } from './loader';\r\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\r\n\r\nconst StatusWrapper = styled('div')`\r\n position: absolute;\r\n`;\r\n\r\nconst IndicatorWrapper = styled('div')`\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-width: 20px;\r\n min-height: 20px;\r\n`;\r\n\r\nconst enter = keyframes`\r\nfrom {\r\n transform: scale(0.6);\r\n opacity: 0.4;\r\n}\r\nto {\r\n transform: scale(1);\r\n opacity: 1;\r\n}`;\r\n\r\nexport const AnimatedIconWrapper = styled('div')`\r\n position: relative;\r\n transform: scale(0.6);\r\n opacity: 0.4;\r\n min-width: 20px;\r\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n`;\r\n\r\nexport type IconThemes = Partial<{\r\n success: CheckmarkTheme;\r\n error: ErrorTheme;\r\n loading: LoaderTheme;\r\n}>;\r\n\r\nexport const ToastIcon: React.FC<{\r\n toast: Toast;\r\n}> = ({ toast }) => {\r\n const { icon, type, iconTheme } = toast;\r\n if (icon !== undefined) {\r\n if (typeof icon === 'string') {\r\n return {icon};\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n if (type === 'blank') {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {type !== 'loading' && (\r\n \r\n {type === 'error' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst circleAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(45deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(45deg);\r\n opacity: 1;\r\n}`;\r\n\r\nconst firstLineAnimation = keyframes`\r\nfrom {\r\n transform: scale(0);\r\n opacity: 0;\r\n}\r\nto {\r\n transform: scale(1);\r\n opacity: 1;\r\n}`;\r\n\r\nconst secondLineAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(90deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(90deg);\r\n\topacity: 1;\r\n}`;\r\n\r\nexport interface ErrorTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const ErrorIcon = styled('div')`\r\n width: 20px;\r\n opacity: 0;\r\n height: 20px;\r\n border-radius: 10px;\r\n background: ${(p) => p.primary || '#ff4b4b'};\r\n position: relative;\r\n transform: rotate(45deg);\r\n\r\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n animation-delay: 100ms;\r\n\r\n &:after,\r\n &:before {\r\n content: '';\r\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\r\n animation-delay: 150ms;\r\n position: absolute;\r\n border-radius: 3px;\r\n opacity: 0;\r\n background: ${(p) => p.secondary || '#fff'};\r\n bottom: 9px;\r\n left: 4px;\r\n height: 2px;\r\n width: 12px;\r\n }\r\n\r\n &:before {\r\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\r\n animation-delay: 180ms;\r\n transform: rotate(90deg);\r\n }\r\n`;\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst rotate = keyframes`\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n`;\r\n\r\nexport interface LoaderTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const LoaderIcon = styled('div')`\r\n width: 12px;\r\n height: 12px;\r\n box-sizing: border-box;\r\n border: 2px solid;\r\n border-radius: 100%;\r\n border-color: ${(p) => p.secondary || '#e0e0e0'};\r\n border-right-color: ${(p) => p.primary || '#616161'};\r\n animation: ${rotate} 1s linear infinite;\r\n`;\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst circleAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(45deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(45deg);\r\n\topacity: 1;\r\n}`;\r\n\r\nconst checkmarkAnimation = keyframes`\r\n0% {\r\n\theight: 0;\r\n\twidth: 0;\r\n\topacity: 0;\r\n}\r\n40% {\r\n height: 0;\r\n\twidth: 6px;\r\n\topacity: 1;\r\n}\r\n100% {\r\n opacity: 1;\r\n height: 10px;\r\n}`;\r\n\r\nexport interface CheckmarkTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const CheckmarkIcon = styled('div')`\r\n width: 20px;\r\n opacity: 0;\r\n height: 20px;\r\n border-radius: 10px;\r\n background: ${(p) => p.primary || '#61d345'};\r\n position: relative;\r\n transform: rotate(45deg);\r\n\r\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n animation-delay: 100ms;\r\n &:after {\r\n content: '';\r\n box-sizing: border-box;\r\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\r\n opacity: 0;\r\n animation-delay: 200ms;\r\n position: absolute;\r\n border-right: 2px solid;\r\n border-bottom: 2px solid;\r\n border-color: ${(p) => p.secondary || '#fff'};\r\n bottom: 6px;\r\n left: 6px;\r\n height: 10px;\r\n width: 6px;\r\n }\r\n`;\r\n","import { css, setup } from 'goober';\r\nimport * as React from 'react';\r\nimport {\r\n resolveValue,\r\n ToasterProps,\r\n ToastPosition,\r\n ToastWrapperProps,\r\n} from '../core/types';\r\nimport { useToaster } from '../core/use-toaster';\r\nimport { prefersReducedMotion } from '../core/utils';\r\nimport { ToastBar } from './toast-bar';\r\n\r\nsetup(React.createElement);\r\n\r\nconst ToastWrapper = ({\r\n id,\r\n className,\r\n style,\r\n onHeightUpdate,\r\n children,\r\n}: ToastWrapperProps) => {\r\n const ref = React.useCallback(\r\n (el: HTMLElement | null) => {\r\n if (el) {\r\n const updateHeight = () => {\r\n const height = el.getBoundingClientRect().height;\r\n onHeightUpdate(id, height);\r\n };\r\n updateHeight();\r\n new MutationObserver(updateHeight).observe(el, {\r\n subtree: true,\r\n childList: true,\r\n characterData: true,\r\n });\r\n }\r\n },\r\n [id, onHeightUpdate]\r\n );\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nconst getPositionStyle = (\r\n position: ToastPosition,\r\n offset: number\r\n): React.CSSProperties => {\r\n const top = position.includes('top') || position.includes('center-');\r\n const verticalStyle: React.CSSProperties = top\r\n ? {\r\n top: position.includes('center-') ? '50%' : 0,\r\n }\r\n : { bottom: 0 };\r\n const horizontalStyle: React.CSSProperties = position.includes('center-right')\r\n ? { justifyContent: 'flex-end' }\r\n : position.includes('center-left')\r\n ? { justifyContent: 'flex-start' }\r\n : position.includes('center')\r\n ? {\r\n justifyContent: 'center',\r\n }\r\n : position.includes('right')\r\n ? {\r\n justifyContent: 'flex-end',\r\n }\r\n : {};\r\n return {\r\n left: 0,\r\n right: 0,\r\n display: 'flex',\r\n position: 'absolute',\r\n transition: prefersReducedMotion()\r\n ? undefined\r\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\r\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\r\n ...verticalStyle,\r\n ...horizontalStyle,\r\n };\r\n};\r\n\r\nconst activeClass = css`\r\n z-index: 9999;\r\n > * {\r\n pointer-events: auto;\r\n }\r\n`;\r\n\r\nconst DEFAULT_OFFSET = 16;\r\n\r\nexport const Toaster: React.FC = ({\r\n reverseOrder,\r\n position = 'top-center',\r\n toastOptions,\r\n gutter,\r\n children,\r\n containerStyle,\r\n containerClassName,\r\n}) => {\r\n const { toasts, handlers } = useToaster(toastOptions);\r\n\r\n return (\r\n \r\n {toasts.map((t) => {\r\n const toastPosition = t.position || position;\r\n const offset = handlers.calculateOffset(t, {\r\n reverseOrder,\r\n gutter,\r\n defaultPosition: position,\r\n });\r\n const positionStyle = getPositionStyle(toastPosition, offset);\r\n\r\n return (\r\n \r\n {t.type === 'custom' ? (\r\n resolveValue(t.message, t)\r\n ) : children ? (\r\n children(t)\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n"],"mappings":"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","names":[]} +\ No newline at end of file +diff --git a/dist/index.mjs b/dist/index.mjs +index 9d9e5a07f2526134ccffc5d501ad60baa913e6ba..c36187d9f1d5a05b493f5032e868d0a56c4869b8 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -1,4 +1,4 @@ +-var W=e=>typeof e=="function",T=(e,t)=>W(e)?e(t):e;var U=(()=>{let e=0;return()=>(++e).toString()})(),b=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})();import{useEffect as H,useState as j}from"react";var Q=20;var S=new Map,X=1e3,$=e=>{if(S.has(e))return;let t=setTimeout(()=>{S.delete(e),u({type:4,toastId:e})},X);S.set(e,t)},J=e=>{let t=S.get(e);t&&clearTimeout(t)},v=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,Q)};case 1:return t.toast.id&&J(t.toast.id),{...e,toasts:e.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case 2:let{toast:o}=t;return e.toasts.find(r=>r.id===o.id)?v(e,{type:1,toast:o}):v(e,{type:0,toast:o});case 3:let{toastId:s}=t;return s?$(s):e.toasts.forEach(r=>{$(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===s||s===void 0?{...r,visible:!1}:r)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(r=>r.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(r=>({...r,pauseDuration:r.pauseDuration+a}))}}},A=[],P={toasts:[],pausedAt:void 0},u=e=>{P=v(P,e),A.forEach(t=>{t(P)})},Y={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},I=(e={})=>{let[t,o]=j(P);H(()=>(A.push(o),()=>{let a=A.indexOf(o);a>-1&&A.splice(a,1)}),[t]);let s=t.toasts.map(a=>{var r,c;return{...e,...e[a.type],...a,duration:a.duration||((r=e[a.type])==null?void 0:r.duration)||(e==null?void 0:e.duration)||Y[a.type],style:{...e.style,...(c=e[a.type])==null?void 0:c.style,...a.style}}});return{...t,toasts:s}};var G=(e,t="blank",o)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||U()}),h=e=>(t,o)=>{let s=G(t,e,o);return u({type:2,toast:s}),s.id},n=(e,t)=>h("blank")(e,t);n.error=h("error");n.success=h("success");n.loading=h("loading");n.custom=h("custom");n.dismiss=e=>{u({type:3,toastId:e})};n.remove=e=>u({type:4,toastId:e});n.promise=(e,t,o)=>{let s=n.loading(t.loading,{...o,...o==null?void 0:o.loading});return e.then(a=>(n.success(T(t.success,a),{id:s,...o,...o==null?void 0:o.success}),a)).catch(a=>{n.error(T(t.error,a),{id:s,...o,...o==null?void 0:o.error})}),e};import{useEffect as K,useCallback as L}from"react";var Z=(e,t)=>{u({type:1,toast:{id:e,height:t}})},ee=()=>{u({type:5,time:Date.now()})},D=e=>{let{toasts:t,pausedAt:o}=I(e);K(()=>{if(o)return;let r=Date.now(),c=t.map(i=>{if(i.duration===1/0)return;let d=(i.duration||0)+i.pauseDuration-(r-i.createdAt);if(d<0){i.visible&&n.dismiss(i.id);return}return setTimeout(()=>n.dismiss(i.id),d)});return()=>{c.forEach(i=>i&&clearTimeout(i))}},[t,o]);let s=L(()=>{o&&u({type:6,time:Date.now()})},[o]),a=L((r,c)=>{let{reverseOrder:i=!1,gutter:d=8,defaultPosition:p}=c||{},g=t.filter(m=>(m.position||p)===(r.position||p)&&m.height),E=g.findIndex(m=>m.id===r.id),x=g.filter((m,R)=>Rm.visible).slice(...i?[x+1]:[0,x]).reduce((m,R)=>m+(R.height||0)+d,0)},[t]);return{toasts:t,handlers:{updateHeight:Z,startPause:ee,endPause:s,calculateOffset:a}}};import*as l from"react";import{styled as B,keyframes as z}from"goober";import*as y from"react";import{styled as C,keyframes as me}from"goober";import{styled as te,keyframes as k}from"goober";var oe=k` ++var W=e=>typeof e=="function",f=(e,t)=>W(e)?e(t):e;var U=(()=>{let e=0;return()=>(++e).toString()})(),b=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})();import{useEffect as H,useState as j}from"react";var Q=20;var S=new Map,X=1e3,$=e=>{if(S.has(e))return;let t=setTimeout(()=>{S.delete(e),m({type:4,toastId:e})},X);S.set(e,t)},J=e=>{let t=S.get(e);t&&clearTimeout(t)},v=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,Q)};case 1:return t.toast.id&&J(t.toast.id),{...e,toasts:e.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case 2:let{toast:o}=t;return e.toasts.find(r=>r.id===o.id)?v(e,{type:1,toast:o}):v(e,{type:0,toast:o});case 3:let{toastId:s}=t;return s?$(s):e.toasts.forEach(r=>{$(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===s||s===void 0?{...r,visible:!1}:r)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(r=>r.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(r=>({...r,pauseDuration:r.pauseDuration+a}))}}},A=[],P={toasts:[],pausedAt:void 0},m=e=>{P=v(P,e),A.forEach(t=>{t(P)})},Y={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},I=(e={})=>{let[t,o]=j(P);H(()=>(A.push(o),()=>{let a=A.indexOf(o);a>-1&&A.splice(a,1)}),[t]);let s=t.toasts.map(a=>{var r,c;return{...e,...e[a.type],...a,duration:a.duration||((r=e[a.type])==null?void 0:r.duration)||(e==null?void 0:e.duration)||Y[a.type],style:{...e.style,...(c=e[a.type])==null?void 0:c.style,...a.style}}});return{...t,toasts:s}};var G=(e,t="blank",o)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||U()}),h=e=>(t,o)=>{let s=G(t,e,o);return m({type:2,toast:s}),s.id},i=(e,t)=>h("blank")(e,t);i.error=h("error");i.success=h("success");i.loading=h("loading");i.custom=h("custom");i.dismiss=e=>{m({type:3,toastId:e})};i.remove=e=>m({type:4,toastId:e});i.promise=(e,t,o)=>{let s=i.loading(t.loading,{...o,...o==null?void 0:o.loading});return e.then(a=>(i.success(f(t.success,a),{id:s,...o,...o==null?void 0:o.success}),a)).catch(a=>{i.error(f(t.error,a),{id:s,...o,...o==null?void 0:o.error})}),e};import{useEffect as K,useCallback as L}from"react";var Z=(e,t)=>{m({type:1,toast:{id:e,height:t}})},ee=()=>{m({type:5,time:Date.now()})},D=e=>{let{toasts:t,pausedAt:o}=I(e);K(()=>{if(o)return;let r=Date.now(),c=t.map(n=>{if(n.duration===1/0)return;let d=(n.duration||0)+n.pauseDuration-(r-n.createdAt);if(d<0){n.visible&&i.dismiss(n.id);return}return setTimeout(()=>i.dismiss(n.id),d)});return()=>{c.forEach(n=>n&&clearTimeout(n))}},[t,o]);let s=L(()=>{o&&m({type:6,time:Date.now()})},[o]),a=L((r,c)=>{let{reverseOrder:n=!1,gutter:d=8,defaultPosition:p}=c||{},g=t.filter(u=>(u.position||p)===(r.position||p)&&u.height),E=g.findIndex(u=>u.id===r.id),x=g.filter((u,R)=>Ru.visible).slice(...n?[x+1]:[0,x]).reduce((u,R)=>u+(R.height||0)+d,0)},[t]);return{toasts:t,handlers:{updateHeight:Z,startPause:ee,endPause:s,calculateOffset:a}}};import*as l from"react";import{styled as B,keyframes as z}from"goober";import*as y from"react";import{styled as C,keyframes as ue}from"goober";import{styled as te,keyframes as k}from"goober";var oe=k` + from { + transform: scale(0) rotate(45deg); + opacity: 0; +@@ -55,7 +55,7 @@ to { + animation-delay: 180ms; + transform: rotate(90deg); + } +-`;import{styled as ae,keyframes as ie}from"goober";var ne=ie` ++`;import{styled as ae,keyframes as ne}from"goober";var ie=ne` + from { + transform: rotate(0deg); + } +@@ -70,7 +70,7 @@ to { + border-radius: 100%; + border-color: ${e=>e.secondary||"#e0e0e0"}; + border-right-color: ${e=>e.primary||"#616161"}; +- animation: ${ne} 1s linear infinite; ++ animation: ${ie} 1s linear infinite; + `;import{styled as ce,keyframes as N}from"goober";var pe=N` + from { + transform: scale(0) rotate(45deg); +@@ -120,7 +120,7 @@ to { + height: 10px; + width: 6px; + } +-`;var ue=C("div")` ++`;var me=C("div")` + position: absolute; + `,le=C("div")` + position: relative; +@@ -129,7 +129,7 @@ to { + align-items: center; + min-width: 20px; + min-height: 20px; +-`,Te=me` ++`,fe=ue` + from { + transform: scale(0.6); + opacity: 0.4; +@@ -137,14 +137,14 @@ from { + to { + transform: scale(1); + opacity: 1; +-}`,fe=C("div")` ++}`,Te=C("div")` + position: relative; + transform: scale(0.6); + opacity: 0.4; + min-width: 20px; +- animation: ${Te} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275) ++ animation: ${fe} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275) + forwards; +-`,M=({toast:e})=>{let{icon:t,type:o,iconTheme:s}=e;return t!==void 0?typeof t=="string"?y.createElement(fe,null,t):t:o==="blank"?null:y.createElement(le,null,y.createElement(V,{...s}),o!=="loading"&&y.createElement(ue,null,o==="error"?y.createElement(_,{...s}):y.createElement(w,{...s})))};var ye=e=>` ++`,M=({toast:e})=>{let{icon:t,type:o,iconTheme:s}=e;return t!==void 0?typeof t=="string"?y.createElement(Te,null,t):t:o==="blank"?null:y.createElement(le,null,y.createElement(V,{...s}),o!=="loading"&&y.createElement(me,null,o==="error"?y.createElement(_,{...s}):y.createElement(w,{...s})))};var ye=e=>` + 0% {transform: translate3d(0,${e*-200}%,0) scale(.6); opacity:.5;} + 100% {transform: translate3d(0,0,0) scale(1); opacity:1;} + `,ge=e=>` +@@ -169,10 +169,10 @@ to { + color: inherit; + flex: 1 1 auto; + white-space: pre-line; +-`,Ae=(e,t)=>{let s=e.includes("top")?1:-1,[a,r]=b()?[he,xe]:[ye(s),ge(s)];return{animation:t?`${z(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${z(r)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},F=l.memo(({toast:e,position:t,style:o,children:s})=>{let a=e.height?Ae(e.position||t||"top-center",e.visible):{opacity:0},r=l.createElement(M,{toast:e}),c=l.createElement(Se,{...e.ariaProps},T(e.message,e));return l.createElement(be,{className:e.className,style:{...a,...o,...e.style}},typeof s=="function"?s({icon:r,message:c}):l.createElement(l.Fragment,null,r,c))});import{css as Pe,setup as Oe}from"goober";import*as f from"react";Oe(f.createElement);var Ee=({id:e,className:t,style:o,onHeightUpdate:s,children:a})=>{let r=f.useCallback(c=>{if(c){let i=()=>{let d=c.getBoundingClientRect().height;s(e,d)};i(),new MutationObserver(i).observe(c,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return f.createElement("div",{ref:r,className:t,style:o},a)},Re=(e,t)=>{let o=e.includes("top"),s=o?{top:0}:{bottom:0},a=e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:b()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${t*(o?1:-1)}px)`,...s,...a}},ve=Pe` ++`,Ae=(e,t)=>{let s=e.includes("top")?1:-1,[a,r]=b()?[he,xe]:[ye(s),ge(s)];return{animation:t?`${z(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${z(r)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},F=l.memo(({toast:e,position:t,style:o,children:s})=>{let a=e.height?Ae(e.position||t||"top-center",e.visible):{opacity:0},r=l.createElement(M,{toast:e}),c=l.createElement(Se,{...e.ariaProps},f(e.message,e));return l.createElement(be,{className:e.className,style:{...a,...o,...e.style}},typeof s=="function"?s({icon:r,message:c}):l.createElement(l.Fragment,null,r,c))});import{css as Pe,setup as Oe}from"goober";import*as T from"react";Oe(T.createElement);var Ee=({id:e,className:t,style:o,onHeightUpdate:s,children:a})=>{let r=T.useCallback(c=>{if(c){let n=()=>{let d=c.getBoundingClientRect().height;s(e,d)};n(),new MutationObserver(n).observe(c,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return T.createElement("div",{ref:r,className:t,style:o},a)},Re=(e,t)=>{let o=e.includes("top")||e.includes("center-"),s=o?{top:e.includes("center-")?"50%":0}:{bottom:0},a=e.includes("center-right")?{justifyContent:"flex-end"}:e.includes("center-left")?{justifyContent:"flex-start"}:e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:b()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${t*(o?1:-1)}px)`,...s,...a}},ve=Pe` + z-index: 9999; + > * { + pointer-events: auto; + } +-`,O=16,Ie=({reverseOrder:e,position:t="top-center",toastOptions:o,gutter:s,children:a,containerStyle:r,containerClassName:c})=>{let{toasts:i,handlers:d}=D(o);return f.createElement("div",{style:{position:"fixed",zIndex:9999,top:O,left:O,right:O,bottom:O,pointerEvents:"none",...r},className:c,onMouseEnter:d.startPause,onMouseLeave:d.endPause},i.map(p=>{let g=p.position||t,E=d.calculateOffset(p,{reverseOrder:e,gutter:s,defaultPosition:t}),x=Re(g,E);return f.createElement(Ee,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?ve:"",style:x},p.type==="custom"?T(p.message,p):a?a(p):f.createElement(F,{toast:p,position:g}))}))};var _t=n;export{w as CheckmarkIcon,_ as ErrorIcon,V as LoaderIcon,F as ToastBar,M as ToastIcon,Ie as Toaster,_t as default,T as resolveValue,n as toast,D as useToaster,I as useToasterStore}; ++`,O=16,Ie=({reverseOrder:e,position:t="top-center",toastOptions:o,gutter:s,children:a,containerStyle:r,containerClassName:c})=>{let{toasts:n,handlers:d}=D(o);return T.createElement("div",{style:{position:"fixed",zIndex:9999,top:O,left:O,right:O,bottom:O,pointerEvents:"none",...r},className:c,onMouseEnter:d.startPause,onMouseLeave:d.endPause},n.map(p=>{let g=p.position||t,E=d.calculateOffset(p,{reverseOrder:e,gutter:s,defaultPosition:t}),x=Re(g,E);return T.createElement(Ee,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?ve:"",style:x},p.type==="custom"?f(p.message,p):a?a(p):T.createElement(F,{toast:p,position:g}))}))};var _t=i;export{w as CheckmarkIcon,_ as ErrorIcon,V as LoaderIcon,F as ToastBar,M as ToastIcon,Ie as Toaster,_t as default,f as resolveValue,i as toast,D as useToaster,I as useToasterStore}; + //# sourceMappingURL=index.mjs.map +\ No newline at end of file +diff --git a/dist/index.mjs.map b/dist/index.mjs.map +index 43971e037c7a5c4986c7cad876afff9d85dd0da0..c71b1f52b35a2a880d78f53e2c8376ae2dd7227f 100644 +--- a/dist/index.mjs.map ++++ b/dist/index.mjs.map +@@ -1 +1 @@ +-{"version":3,"sources":["../src/core/types.ts","../src/core/utils.ts","../src/core/store.ts","../src/core/toast.ts","../src/core/use-toaster.ts","../src/components/toast-bar.tsx","../src/components/toast-icon.tsx","../src/components/error.tsx","../src/components/loader.tsx","../src/components/checkmark.tsx","../src/components/toaster.tsx","../src/index.ts"],"sourcesContent":["import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n primary: string;\n secondary: string;\n}\n\nexport type ValueFunction = (arg: TArg) => TValue;\nexport type ValueOrFunction =\n | TValue\n | ValueFunction;\n\nconst isFunction = (\n valOrFunction: ValueOrFunction\n): valOrFunction is ValueFunction =>\n typeof valOrFunction === 'function';\n\nexport const resolveValue = (\n valOrFunction: ValueOrFunction,\n arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n type: ToastType;\n id: string;\n message: ValueOrFunction;\n icon?: Renderable;\n duration?: number;\n pauseDuration: number;\n position?: ToastPosition;\n\n ariaProps: {\n role: 'status' | 'alert';\n 'aria-live': 'assertive' | 'off' | 'polite';\n };\n\n style?: CSSProperties;\n className?: string;\n iconTheme?: IconTheme;\n\n createdAt: number;\n visible: boolean;\n height?: number;\n}\n\nexport type ToastOptions = Partial<\n Pick<\n Toast,\n | 'id'\n | 'icon'\n | 'duration'\n | 'ariaProps'\n | 'className'\n | 'style'\n | 'position'\n | 'iconTheme'\n >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n position?: ToastPosition;\n toastOptions?: DefaultToastOptions;\n reverseOrder?: boolean;\n gutter?: number;\n containerStyle?: React.CSSProperties;\n containerClassName?: string;\n children?: (toast: Toast) => JSX.Element;\n}\n\nexport interface ToastWrapperProps {\n id: string;\n className?: string;\n style?: React.CSSProperties;\n onHeightUpdate: (id: string, height: number) => void;\n children?: React.ReactNode;\n}\n","export const genId = (() => {\n let count = 0;\n return () => {\n return (++count).toString();\n };\n})();\n\nexport const prefersReducedMotion = (() => {\n // Cache result\n let shouldReduceMotion: boolean | undefined = undefined;\n\n return () => {\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n }\n return shouldReduceMotion;\n };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n ADD_TOAST,\n UPDATE_TOAST,\n UPSERT_TOAST,\n DISMISS_TOAST,\n REMOVE_TOAST,\n START_PAUSE,\n END_PAUSE,\n}\n\ntype Action =\n | {\n type: ActionType.ADD_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPSERT_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPDATE_TOAST;\n toast: Partial;\n }\n | {\n type: ActionType.DISMISS_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.REMOVE_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.START_PAUSE;\n time: number;\n }\n | {\n type: ActionType.END_PAUSE;\n time: number;\n };\n\ninterface State {\n toasts: Toast[];\n pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map>();\n\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionType.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_EXPIRE_DISMISS_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n const timeout = toastTimeouts.get(toastId);\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionType.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionType.UPDATE_TOAST:\n // ! Side effects !\n if (action.toast.id) {\n clearFromRemoveQueue(action.toast.id);\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionType.UPSERT_TOAST:\n const { toast } = action;\n return state.toasts.find((t) => t.id === toast.id)\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n case ActionType.DISMISS_TOAST:\n const { toastId } = action;\n\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n visible: false,\n }\n : t\n ),\n };\n case ActionType.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n\n case ActionType.START_PAUSE:\n return {\n ...state,\n pausedAt: action.time,\n };\n\n case ActionType.END_PAUSE:\n const diff = action.time - (state.pausedAt || 0);\n\n return {\n ...state,\n pausedAt: undefined,\n toasts: state.toasts.map((t) => ({\n ...t,\n pauseDuration: t.pauseDuration + diff,\n })),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\nexport const defaultTimeouts: {\n [key in ToastType]: number;\n} = {\n blank: 4000,\n error: 4000,\n success: 2000,\n loading: Infinity,\n custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n const [state, setState] = useState(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const mergedToasts = state.toasts.map((t) => ({\n ...toastOptions,\n ...toastOptions[t.type],\n ...t,\n duration:\n t.duration ||\n toastOptions[t.type]?.duration ||\n toastOptions?.duration ||\n defaultTimeouts[t.type],\n style: {\n ...toastOptions.style,\n ...toastOptions[t.type]?.style,\n ...t.style,\n },\n }));\n\n return {\n ...state,\n toasts: mergedToasts,\n };\n};\n","import {\n Renderable,\n Toast,\n ToastOptions,\n ToastType,\n DefaultToastOptions,\n ValueOrFunction,\n resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n message: Message,\n type: ToastType = 'blank',\n opts?: ToastOptions\n): Toast => ({\n createdAt: Date.now(),\n visible: true,\n type,\n ariaProps: {\n role: 'status',\n 'aria-live': 'polite',\n },\n message,\n pauseDuration: 0,\n ...opts,\n id: opts?.id || genId(),\n});\n\nconst createHandler =\n (type?: ToastType): ToastHandler =>\n (message, options) => {\n const toast = createToast(message, type, options);\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\n return toast.id;\n };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n dispatch({\n type: ActionType.DISMISS_TOAST,\n toastId,\n });\n};\n\ntoast.remove = (toastId?: string) =>\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = (\n promise: Promise,\n msgs: {\n loading: Renderable;\n success: ValueOrFunction;\n error: ValueOrFunction;\n },\n opts?: DefaultToastOptions\n) => {\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n promise\n .then((p) => {\n toast.success(resolveValue(msgs.success, p), {\n id,\n ...opts,\n ...opts?.success,\n });\n return p;\n })\n .catch((e) => {\n toast.error(resolveValue(msgs.error, e), {\n id,\n ...opts,\n ...opts?.error,\n });\n });\n\n return promise;\n};\n\nexport { toast };\n","import { useEffect, useCallback } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nconst updateHeight = (toastId: string, height: number) => {\n dispatch({\n type: ActionType.UPDATE_TOAST,\n toast: { id: toastId, height },\n });\n};\nconst startPause = () => {\n dispatch({\n type: ActionType.START_PAUSE,\n time: Date.now(),\n });\n};\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n const { toasts, pausedAt } = useStore(toastOptions);\n\n useEffect(() => {\n if (pausedAt) {\n return;\n }\n\n const now = Date.now();\n const timeouts = toasts.map((t) => {\n if (t.duration === Infinity) {\n return;\n }\n\n const durationLeft =\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n if (durationLeft < 0) {\n if (t.visible) {\n toast.dismiss(t.id);\n }\n return;\n }\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\n });\n\n return () => {\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n };\n }, [toasts, pausedAt]);\n\n const endPause = useCallback(() => {\n if (pausedAt) {\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n }\n }, [pausedAt]);\n\n const calculateOffset = useCallback(\n (\n toast: Toast,\n opts?: {\n reverseOrder?: boolean;\n gutter?: number;\n defaultPosition?: ToastPosition;\n }\n ) => {\n const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\n\n const relevantToasts = toasts.filter(\n (t) =>\n (t.position || defaultPosition) ===\n (toast.position || defaultPosition) && t.height\n );\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n const toastsBefore = relevantToasts.filter(\n (toast, i) => i < toastIndex && toast.visible\n ).length;\n\n const offset = relevantToasts\n .filter((t) => t.visible)\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n return offset;\n },\n [toasts]\n );\n\n return {\n toasts,\n handlers: {\n updateHeight,\n startPause,\n endPause,\n calculateOffset,\n },\n };\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div')`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n toast: Toast;\n position?: ToastPosition;\n style?: React.CSSProperties;\n children?: (components: {\n icon: Renderable;\n message: Renderable;\n }) => Renderable;\n}\n\nconst getAnimationStyle = (\n position: ToastPosition,\n visible: boolean\n): React.CSSProperties => {\n const top = position.includes('top');\n const factor = top ? 1 : -1;\n\n const [enter, exit] = prefersReducedMotion()\n ? [fadeInAnimation, fadeOutAnimation]\n : [enterAnimation(factor), exitAnimation(factor)];\n\n return {\n animation: visible\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n };\n};\n\nexport const ToastBar: React.FC = React.memo(\n ({ toast, position, style, children }) => {\n const animationStyle: React.CSSProperties = toast.height\n ? getAnimationStyle(\n toast.position || position || 'top-center',\n toast.visible\n )\n : { opacity: 0 };\n\n const icon = ;\n const message = (\n \n {resolveValue(toast.message, toast)}\n \n );\n\n return (\n \n {typeof children === 'function' ? (\n children({\n icon,\n message,\n })\n ) : (\n <>\n {icon}\n {message}\n \n )}\n \n );\n }\n);\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`;\n\nexport type IconThemes = Partial<{\n success: CheckmarkTheme;\n error: ErrorTheme;\n loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n toast: Toast;\n}> = ({ toast }) => {\n const { icon, type, iconTheme } = toast;\n if (icon !== undefined) {\n if (typeof icon === 'string') {\n return {icon};\n } else {\n return icon;\n }\n }\n\n if (type === 'blank') {\n return null;\n }\n\n return (\n \n \n {type !== 'loading' && (\n \n {type === 'error' ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#ff4b4b'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${(p) => p.secondary || '#fff'};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport interface LoaderTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${(p) => p.secondary || '#e0e0e0'};\n border-right-color: ${(p) => p.primary || '#616161'};\n animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#61d345'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${(p) => p.secondary || '#fff'};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport {\n resolveValue,\n ToasterProps,\n ToastPosition,\n ToastWrapperProps,\n} from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst ToastWrapper = ({\n id,\n className,\n style,\n onHeightUpdate,\n children,\n}: ToastWrapperProps) => {\n const ref = React.useCallback(\n (el: HTMLElement | null) => {\n if (el) {\n const updateHeight = () => {\n const height = el.getBoundingClientRect().height;\n onHeightUpdate(id, height);\n };\n updateHeight();\n new MutationObserver(updateHeight).observe(el, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n },\n [id, onHeightUpdate]\n );\n\n return (\n
\n {children}\n
\n );\n};\n\nconst getPositionStyle = (\n position: ToastPosition,\n offset: number\n): React.CSSProperties => {\n const top = position.includes('top');\n const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n const horizontalStyle: React.CSSProperties = position.includes('center')\n ? {\n justifyContent: 'center',\n }\n : position.includes('right')\n ? {\n justifyContent: 'flex-end',\n }\n : {};\n return {\n left: 0,\n right: 0,\n display: 'flex',\n position: 'absolute',\n transition: prefersReducedMotion()\n ? undefined\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n ...verticalStyle,\n ...horizontalStyle,\n };\n};\n\nconst activeClass = css`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC = ({\n reverseOrder,\n position = 'top-center',\n toastOptions,\n gutter,\n children,\n containerStyle,\n containerClassName,\n}) => {\n const { toasts, handlers } = useToaster(toastOptions);\n\n return (\n \n {toasts.map((t) => {\n const toastPosition = t.position || position;\n const offset = handlers.calculateOffset(t, {\n reverseOrder,\n gutter,\n defaultPosition: position,\n });\n const positionStyle = getPositionStyle(toastPosition, offset);\n\n return (\n \n {t.type === 'custom' ? (\n resolveValue(t.message, t)\n ) : children ? (\n children(t)\n ) : (\n \n )}\n \n );\n })}\n \n );\n};\n","import { toast } from './core/toast';\n\nexport * from './headless';\n\nexport { ToastBar } from './components/toast-bar';\nexport { ToastIcon } from './components/toast-icon';\nexport { Toaster } from './components/toaster';\nexport { CheckmarkIcon } from './components/checkmark';\nexport { ErrorIcon } from './components/error';\nexport { LoaderIcon } from './components/loader';\n\nexport { toast };\nexport default toast;\n"],"mappings":"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","names":[]} +\ No newline at end of file ++{"version":3,"sources":["../src/core/types.ts","../src/core/utils.ts","../src/core/store.ts","../src/core/toast.ts","../src/core/use-toaster.ts","../src/components/toast-bar.tsx","../src/components/toast-icon.tsx","../src/components/error.tsx","../src/components/loader.tsx","../src/components/checkmark.tsx","../src/components/toaster.tsx","../src/index.ts"],"sourcesContent":["import { CSSProperties } from 'react';\r\n\r\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\r\nexport type ToastPosition =\r\n | 'top-left'\r\n | 'top-center'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-center'\r\n | 'bottom-right'\r\n | 'center-right'\r\n | 'center-left';\r\n\r\nexport type Renderable = JSX.Element | string | null;\r\n\r\nexport interface IconTheme {\r\n primary: string;\r\n secondary: string;\r\n}\r\n\r\nexport type ValueFunction = (arg: TArg) => TValue;\r\nexport type ValueOrFunction =\r\n | TValue\r\n | ValueFunction;\r\n\r\nconst isFunction = (\r\n valOrFunction: ValueOrFunction\r\n): valOrFunction is ValueFunction =>\r\n typeof valOrFunction === 'function';\r\n\r\nexport const resolveValue = (\r\n valOrFunction: ValueOrFunction,\r\n arg: TArg\r\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\r\n\r\nexport interface Toast {\r\n type: ToastType;\r\n id: string;\r\n message: ValueOrFunction;\r\n icon?: Renderable;\r\n duration?: number;\r\n pauseDuration: number;\r\n position?: ToastPosition;\r\n\r\n ariaProps: {\r\n role: 'status' | 'alert';\r\n 'aria-live': 'assertive' | 'off' | 'polite';\r\n };\r\n\r\n style?: CSSProperties;\r\n className?: string;\r\n iconTheme?: IconTheme;\r\n\r\n createdAt: number;\r\n visible: boolean;\r\n height?: number;\r\n}\r\n\r\nexport type ToastOptions = Partial<\r\n Pick<\r\n Toast,\r\n | 'id'\r\n | 'icon'\r\n | 'duration'\r\n | 'ariaProps'\r\n | 'className'\r\n | 'style'\r\n | 'position'\r\n | 'iconTheme'\r\n >\r\n>;\r\n\r\nexport type DefaultToastOptions = ToastOptions & {\r\n [key in ToastType]?: ToastOptions;\r\n};\r\n\r\nexport interface ToasterProps {\r\n position?: ToastPosition;\r\n toastOptions?: DefaultToastOptions;\r\n reverseOrder?: boolean;\r\n gutter?: number;\r\n containerStyle?: React.CSSProperties;\r\n containerClassName?: string;\r\n children?: (toast: Toast) => JSX.Element;\r\n}\r\n\r\nexport interface ToastWrapperProps {\r\n id: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n onHeightUpdate: (id: string, height: number) => void;\r\n children?: React.ReactNode;\r\n}\r\n","export const genId = (() => {\r\n let count = 0;\r\n return () => {\r\n return (++count).toString();\r\n };\r\n})();\r\n\r\nexport const prefersReducedMotion = (() => {\r\n // Cache result\r\n let shouldReduceMotion: boolean | undefined = undefined;\r\n\r\n return () => {\r\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\r\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\r\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\r\n }\r\n return shouldReduceMotion;\r\n };\r\n})();\r\n","import { useEffect, useState } from 'react';\r\nimport { DefaultToastOptions, Toast, ToastType } from './types';\r\n\r\nconst TOAST_LIMIT = 20;\r\n\r\nexport enum ActionType {\r\n ADD_TOAST,\r\n UPDATE_TOAST,\r\n UPSERT_TOAST,\r\n DISMISS_TOAST,\r\n REMOVE_TOAST,\r\n START_PAUSE,\r\n END_PAUSE,\r\n}\r\n\r\ntype Action =\r\n | {\r\n type: ActionType.ADD_TOAST;\r\n toast: Toast;\r\n }\r\n | {\r\n type: ActionType.UPSERT_TOAST;\r\n toast: Toast;\r\n }\r\n | {\r\n type: ActionType.UPDATE_TOAST;\r\n toast: Partial;\r\n }\r\n | {\r\n type: ActionType.DISMISS_TOAST;\r\n toastId?: string;\r\n }\r\n | {\r\n type: ActionType.REMOVE_TOAST;\r\n toastId?: string;\r\n }\r\n | {\r\n type: ActionType.START_PAUSE;\r\n time: number;\r\n }\r\n | {\r\n type: ActionType.END_PAUSE;\r\n time: number;\r\n };\r\n\r\ninterface State {\r\n toasts: Toast[];\r\n pausedAt: number | undefined;\r\n}\r\n\r\nconst toastTimeouts = new Map>();\r\n\r\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n if (toastTimeouts.has(toastId)) {\r\n return;\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n toastTimeouts.delete(toastId);\r\n dispatch({\r\n type: ActionType.REMOVE_TOAST,\r\n toastId: toastId,\r\n });\r\n }, TOAST_EXPIRE_DISMISS_DELAY);\r\n\r\n toastTimeouts.set(toastId, timeout);\r\n};\r\n\r\nconst clearFromRemoveQueue = (toastId: string) => {\r\n const timeout = toastTimeouts.get(toastId);\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n};\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case ActionType.ADD_TOAST:\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n };\r\n\r\n case ActionType.UPDATE_TOAST:\r\n // ! Side effects !\r\n if (action.toast.id) {\r\n clearFromRemoveQueue(action.toast.id);\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === action.toast.id ? { ...t, ...action.toast } : t\r\n ),\r\n };\r\n\r\n case ActionType.UPSERT_TOAST:\r\n const { toast } = action;\r\n return state.toasts.find((t) => t.id === toast.id)\r\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\r\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\r\n\r\n case ActionType.DISMISS_TOAST:\r\n const { toastId } = action;\r\n\r\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\r\n if (toastId) {\r\n addToRemoveQueue(toastId);\r\n } else {\r\n state.toasts.forEach((toast) => {\r\n addToRemoveQueue(toast.id);\r\n });\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? {\r\n ...t,\r\n visible: false,\r\n }\r\n : t\r\n ),\r\n };\r\n case ActionType.REMOVE_TOAST:\r\n if (action.toastId === undefined) {\r\n return {\r\n ...state,\r\n toasts: [],\r\n };\r\n }\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n };\r\n\r\n case ActionType.START_PAUSE:\r\n return {\r\n ...state,\r\n pausedAt: action.time,\r\n };\r\n\r\n case ActionType.END_PAUSE:\r\n const diff = action.time - (state.pausedAt || 0);\r\n\r\n return {\r\n ...state,\r\n pausedAt: undefined,\r\n toasts: state.toasts.map((t) => ({\r\n ...t,\r\n pauseDuration: t.pauseDuration + diff,\r\n })),\r\n };\r\n }\r\n};\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\n\r\nlet memoryState: State = { toasts: [], pausedAt: undefined };\r\n\r\nexport const dispatch = (action: Action) => {\r\n memoryState = reducer(memoryState, action);\r\n listeners.forEach((listener) => {\r\n listener(memoryState);\r\n });\r\n};\r\n\r\nexport const defaultTimeouts: {\r\n [key in ToastType]: number;\r\n} = {\r\n blank: 4000,\r\n error: 4000,\r\n success: 2000,\r\n loading: Infinity,\r\n custom: 4000,\r\n};\r\n\r\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\r\n const [state, setState] = useState(memoryState);\r\n useEffect(() => {\r\n listeners.push(setState);\r\n return () => {\r\n const index = listeners.indexOf(setState);\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n }\r\n };\r\n }, [state]);\r\n\r\n const mergedToasts = state.toasts.map((t) => ({\r\n ...toastOptions,\r\n ...toastOptions[t.type],\r\n ...t,\r\n duration:\r\n t.duration ||\r\n toastOptions[t.type]?.duration ||\r\n toastOptions?.duration ||\r\n defaultTimeouts[t.type],\r\n style: {\r\n ...toastOptions.style,\r\n ...toastOptions[t.type]?.style,\r\n ...t.style,\r\n },\r\n }));\r\n\r\n return {\r\n ...state,\r\n toasts: mergedToasts,\r\n };\r\n};\r\n","import {\r\n Renderable,\r\n Toast,\r\n ToastOptions,\r\n ToastType,\r\n DefaultToastOptions,\r\n ValueOrFunction,\r\n resolveValue,\r\n} from './types';\r\nimport { genId } from './utils';\r\nimport { dispatch, ActionType } from './store';\r\n\r\ntype Message = ValueOrFunction;\r\n\r\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\r\n\r\nconst createToast = (\r\n message: Message,\r\n type: ToastType = 'blank',\r\n opts?: ToastOptions\r\n): Toast => ({\r\n createdAt: Date.now(),\r\n visible: true,\r\n type,\r\n ariaProps: {\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n },\r\n message,\r\n pauseDuration: 0,\r\n ...opts,\r\n id: opts?.id || genId(),\r\n});\r\n\r\nconst createHandler =\r\n (type?: ToastType): ToastHandler =>\r\n (message, options) => {\r\n const toast = createToast(message, type, options);\r\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\r\n return toast.id;\r\n };\r\n\r\nconst toast = (message: Message, opts?: ToastOptions) =>\r\n createHandler('blank')(message, opts);\r\n\r\ntoast.error = createHandler('error');\r\ntoast.success = createHandler('success');\r\ntoast.loading = createHandler('loading');\r\ntoast.custom = createHandler('custom');\r\n\r\ntoast.dismiss = (toastId?: string) => {\r\n dispatch({\r\n type: ActionType.DISMISS_TOAST,\r\n toastId,\r\n });\r\n};\r\n\r\ntoast.remove = (toastId?: string) =>\r\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\r\n\r\ntoast.promise = (\r\n promise: Promise,\r\n msgs: {\r\n loading: Renderable;\r\n success: ValueOrFunction;\r\n error: ValueOrFunction;\r\n },\r\n opts?: DefaultToastOptions\r\n) => {\r\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\r\n\r\n promise\r\n .then((p) => {\r\n toast.success(resolveValue(msgs.success, p), {\r\n id,\r\n ...opts,\r\n ...opts?.success,\r\n });\r\n return p;\r\n })\r\n .catch((e) => {\r\n toast.error(resolveValue(msgs.error, e), {\r\n id,\r\n ...opts,\r\n ...opts?.error,\r\n });\r\n });\r\n\r\n return promise;\r\n};\r\n\r\nexport { toast };\r\n","import { useEffect, useCallback } from 'react';\r\nimport { dispatch, ActionType, useStore } from './store';\r\nimport { toast } from './toast';\r\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\r\n\r\nconst updateHeight = (toastId: string, height: number) => {\r\n dispatch({\r\n type: ActionType.UPDATE_TOAST,\r\n toast: { id: toastId, height },\r\n });\r\n};\r\nconst startPause = () => {\r\n dispatch({\r\n type: ActionType.START_PAUSE,\r\n time: Date.now(),\r\n });\r\n};\r\n\r\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\r\n const { toasts, pausedAt } = useStore(toastOptions);\r\n\r\n useEffect(() => {\r\n if (pausedAt) {\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n const timeouts = toasts.map((t) => {\r\n if (t.duration === Infinity) {\r\n return;\r\n }\r\n\r\n const durationLeft =\r\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\r\n\r\n if (durationLeft < 0) {\r\n if (t.visible) {\r\n toast.dismiss(t.id);\r\n }\r\n return;\r\n }\r\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\r\n });\r\n\r\n return () => {\r\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\r\n };\r\n }, [toasts, pausedAt]);\r\n\r\n const endPause = useCallback(() => {\r\n if (pausedAt) {\r\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\r\n }\r\n }, [pausedAt]);\r\n\r\n const calculateOffset = useCallback(\r\n (\r\n toast: Toast,\r\n opts?: {\r\n reverseOrder?: boolean;\r\n gutter?: number;\r\n defaultPosition?: ToastPosition;\r\n }\r\n ) => {\r\n const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\r\n\r\n const relevantToasts = toasts.filter(\r\n (t) =>\r\n (t.position || defaultPosition) ===\r\n (toast.position || defaultPosition) && t.height\r\n );\r\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\r\n const toastsBefore = relevantToasts.filter(\r\n (toast, i) => i < toastIndex && toast.visible\r\n ).length;\r\n\r\n const offset = relevantToasts\r\n .filter((t) => t.visible)\r\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\r\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\r\n\r\n return offset;\r\n },\r\n [toasts]\r\n );\r\n\r\n return {\r\n toasts,\r\n handlers: {\r\n updateHeight,\r\n startPause,\r\n endPause,\r\n calculateOffset,\r\n },\r\n };\r\n};\r\n","import * as React from 'react';\r\nimport { styled, keyframes } from 'goober';\r\n\r\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\r\nimport { ToastIcon } from './toast-icon';\r\nimport { prefersReducedMotion } from '../core/utils';\r\n\r\nconst enterAnimation = (factor: number) => `\r\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\r\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\r\n`;\r\n\r\nconst exitAnimation = (factor: number) => `\r\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\r\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\r\n`;\r\n\r\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\r\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\r\n\r\nconst ToastBarBase = styled('div')`\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #363636;\r\n line-height: 1.3;\r\n will-change: transform;\r\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\r\n max-width: 350px;\r\n pointer-events: auto;\r\n padding: 8px 10px;\r\n border-radius: 8px;\r\n`;\r\n\r\nconst Message = styled('div')`\r\n display: flex;\r\n justify-content: center;\r\n margin: 4px 10px;\r\n color: inherit;\r\n flex: 1 1 auto;\r\n white-space: pre-line;\r\n`;\r\n\r\ninterface ToastBarProps {\r\n toast: Toast;\r\n position?: ToastPosition;\r\n style?: React.CSSProperties;\r\n children?: (components: {\r\n icon: Renderable;\r\n message: Renderable;\r\n }) => Renderable;\r\n}\r\n\r\nconst getAnimationStyle = (\r\n position: ToastPosition,\r\n visible: boolean\r\n): React.CSSProperties => {\r\n const top = position.includes('top');\r\n const factor = top ? 1 : -1;\r\n\r\n const [enter, exit] = prefersReducedMotion()\r\n ? [fadeInAnimation, fadeOutAnimation]\r\n : [enterAnimation(factor), exitAnimation(factor)];\r\n\r\n return {\r\n animation: visible\r\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\r\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\r\n };\r\n};\r\n\r\nexport const ToastBar: React.FC = React.memo(\r\n ({ toast, position, style, children }) => {\r\n const animationStyle: React.CSSProperties = toast.height\r\n ? getAnimationStyle(\r\n toast.position || position || 'top-center',\r\n toast.visible\r\n )\r\n : { opacity: 0 };\r\n\r\n const icon = ;\r\n const message = (\r\n \r\n {resolveValue(toast.message, toast)}\r\n \r\n );\r\n\r\n return (\r\n \r\n {typeof children === 'function' ? (\r\n children({\r\n icon,\r\n message,\r\n })\r\n ) : (\r\n <>\r\n {icon}\r\n {message}\r\n \r\n )}\r\n \r\n );\r\n }\r\n);\r\n","import * as React from 'react';\r\nimport { styled, keyframes } from 'goober';\r\n\r\nimport { Toast } from '../core/types';\r\nimport { ErrorIcon, ErrorTheme } from './error';\r\nimport { LoaderIcon, LoaderTheme } from './loader';\r\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\r\n\r\nconst StatusWrapper = styled('div')`\r\n position: absolute;\r\n`;\r\n\r\nconst IndicatorWrapper = styled('div')`\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-width: 20px;\r\n min-height: 20px;\r\n`;\r\n\r\nconst enter = keyframes`\r\nfrom {\r\n transform: scale(0.6);\r\n opacity: 0.4;\r\n}\r\nto {\r\n transform: scale(1);\r\n opacity: 1;\r\n}`;\r\n\r\nexport const AnimatedIconWrapper = styled('div')`\r\n position: relative;\r\n transform: scale(0.6);\r\n opacity: 0.4;\r\n min-width: 20px;\r\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n`;\r\n\r\nexport type IconThemes = Partial<{\r\n success: CheckmarkTheme;\r\n error: ErrorTheme;\r\n loading: LoaderTheme;\r\n}>;\r\n\r\nexport const ToastIcon: React.FC<{\r\n toast: Toast;\r\n}> = ({ toast }) => {\r\n const { icon, type, iconTheme } = toast;\r\n if (icon !== undefined) {\r\n if (typeof icon === 'string') {\r\n return {icon};\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n if (type === 'blank') {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {type !== 'loading' && (\r\n \r\n {type === 'error' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst circleAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(45deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(45deg);\r\n opacity: 1;\r\n}`;\r\n\r\nconst firstLineAnimation = keyframes`\r\nfrom {\r\n transform: scale(0);\r\n opacity: 0;\r\n}\r\nto {\r\n transform: scale(1);\r\n opacity: 1;\r\n}`;\r\n\r\nconst secondLineAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(90deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(90deg);\r\n\topacity: 1;\r\n}`;\r\n\r\nexport interface ErrorTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const ErrorIcon = styled('div')`\r\n width: 20px;\r\n opacity: 0;\r\n height: 20px;\r\n border-radius: 10px;\r\n background: ${(p) => p.primary || '#ff4b4b'};\r\n position: relative;\r\n transform: rotate(45deg);\r\n\r\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n animation-delay: 100ms;\r\n\r\n &:after,\r\n &:before {\r\n content: '';\r\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\r\n animation-delay: 150ms;\r\n position: absolute;\r\n border-radius: 3px;\r\n opacity: 0;\r\n background: ${(p) => p.secondary || '#fff'};\r\n bottom: 9px;\r\n left: 4px;\r\n height: 2px;\r\n width: 12px;\r\n }\r\n\r\n &:before {\r\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\r\n animation-delay: 180ms;\r\n transform: rotate(90deg);\r\n }\r\n`;\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst rotate = keyframes`\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n`;\r\n\r\nexport interface LoaderTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const LoaderIcon = styled('div')`\r\n width: 12px;\r\n height: 12px;\r\n box-sizing: border-box;\r\n border: 2px solid;\r\n border-radius: 100%;\r\n border-color: ${(p) => p.secondary || '#e0e0e0'};\r\n border-right-color: ${(p) => p.primary || '#616161'};\r\n animation: ${rotate} 1s linear infinite;\r\n`;\r\n","import { styled, keyframes } from 'goober';\r\n\r\nconst circleAnimation = keyframes`\r\nfrom {\r\n transform: scale(0) rotate(45deg);\r\n\topacity: 0;\r\n}\r\nto {\r\n transform: scale(1) rotate(45deg);\r\n\topacity: 1;\r\n}`;\r\n\r\nconst checkmarkAnimation = keyframes`\r\n0% {\r\n\theight: 0;\r\n\twidth: 0;\r\n\topacity: 0;\r\n}\r\n40% {\r\n height: 0;\r\n\twidth: 6px;\r\n\topacity: 1;\r\n}\r\n100% {\r\n opacity: 1;\r\n height: 10px;\r\n}`;\r\n\r\nexport interface CheckmarkTheme {\r\n primary?: string;\r\n secondary?: string;\r\n}\r\n\r\nexport const CheckmarkIcon = styled('div')`\r\n width: 20px;\r\n opacity: 0;\r\n height: 20px;\r\n border-radius: 10px;\r\n background: ${(p) => p.primary || '#61d345'};\r\n position: relative;\r\n transform: rotate(45deg);\r\n\r\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\r\n forwards;\r\n animation-delay: 100ms;\r\n &:after {\r\n content: '';\r\n box-sizing: border-box;\r\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\r\n opacity: 0;\r\n animation-delay: 200ms;\r\n position: absolute;\r\n border-right: 2px solid;\r\n border-bottom: 2px solid;\r\n border-color: ${(p) => p.secondary || '#fff'};\r\n bottom: 6px;\r\n left: 6px;\r\n height: 10px;\r\n width: 6px;\r\n }\r\n`;\r\n","import { css, setup } from 'goober';\r\nimport * as React from 'react';\r\nimport {\r\n resolveValue,\r\n ToasterProps,\r\n ToastPosition,\r\n ToastWrapperProps,\r\n} from '../core/types';\r\nimport { useToaster } from '../core/use-toaster';\r\nimport { prefersReducedMotion } from '../core/utils';\r\nimport { ToastBar } from './toast-bar';\r\n\r\nsetup(React.createElement);\r\n\r\nconst ToastWrapper = ({\r\n id,\r\n className,\r\n style,\r\n onHeightUpdate,\r\n children,\r\n}: ToastWrapperProps) => {\r\n const ref = React.useCallback(\r\n (el: HTMLElement | null) => {\r\n if (el) {\r\n const updateHeight = () => {\r\n const height = el.getBoundingClientRect().height;\r\n onHeightUpdate(id, height);\r\n };\r\n updateHeight();\r\n new MutationObserver(updateHeight).observe(el, {\r\n subtree: true,\r\n childList: true,\r\n characterData: true,\r\n });\r\n }\r\n },\r\n [id, onHeightUpdate]\r\n );\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nconst getPositionStyle = (\r\n position: ToastPosition,\r\n offset: number\r\n): React.CSSProperties => {\r\n const top = position.includes('top') || position.includes('center-');\r\n const verticalStyle: React.CSSProperties = top\r\n ? {\r\n top: position.includes('center-') ? '50%' : 0,\r\n }\r\n : { bottom: 0 };\r\n const horizontalStyle: React.CSSProperties = position.includes('center-right')\r\n ? { justifyContent: 'flex-end' }\r\n : position.includes('center-left')\r\n ? { justifyContent: 'flex-start' }\r\n : position.includes('center')\r\n ? {\r\n justifyContent: 'center',\r\n }\r\n : position.includes('right')\r\n ? {\r\n justifyContent: 'flex-end',\r\n }\r\n : {};\r\n return {\r\n left: 0,\r\n right: 0,\r\n display: 'flex',\r\n position: 'absolute',\r\n transition: prefersReducedMotion()\r\n ? undefined\r\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\r\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\r\n ...verticalStyle,\r\n ...horizontalStyle,\r\n };\r\n};\r\n\r\nconst activeClass = css`\r\n z-index: 9999;\r\n > * {\r\n pointer-events: auto;\r\n }\r\n`;\r\n\r\nconst DEFAULT_OFFSET = 16;\r\n\r\nexport const Toaster: React.FC = ({\r\n reverseOrder,\r\n position = 'top-center',\r\n toastOptions,\r\n gutter,\r\n children,\r\n containerStyle,\r\n containerClassName,\r\n}) => {\r\n const { toasts, handlers } = useToaster(toastOptions);\r\n\r\n return (\r\n \r\n {toasts.map((t) => {\r\n const toastPosition = t.position || position;\r\n const offset = handlers.calculateOffset(t, {\r\n reverseOrder,\r\n gutter,\r\n defaultPosition: position,\r\n });\r\n const positionStyle = getPositionStyle(toastPosition, offset);\r\n\r\n return (\r\n \r\n {t.type === 'custom' ? (\r\n resolveValue(t.message, t)\r\n ) : children ? (\r\n children(t)\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import { toast } from './core/toast';\r\n\r\nexport * from './headless';\r\n\r\nexport { ToastBar } from './components/toast-bar';\r\nexport { ToastIcon } from './components/toast-icon';\r\nexport { Toaster } from './components/toaster';\r\nexport { CheckmarkIcon } from './components/checkmark';\r\nexport { ErrorIcon } from './components/error';\r\nexport { LoaderIcon } from './components/loader';\r\n\r\nexport { toast };\r\nexport default toast;\r\n"],"mappings":"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","names":[]} +\ No newline at end of file +diff --git a/src/components/toaster.tsx b/src/components/toaster.tsx +index 16182faddcaa2b6d2c40d448068db6421f39b64c..9d03025e1b04dc511091a10918f2fe53aad57fc1 100644 +--- a/src/components/toaster.tsx ++++ b/src/components/toaster.tsx +@@ -48,9 +48,17 @@ const getPositionStyle = ( + position: ToastPosition, + offset: number + ): React.CSSProperties => { +- const top = position.includes('top'); +- const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 }; +- const horizontalStyle: React.CSSProperties = position.includes('center') ++ const top = position.includes('top') || position.includes('center-'); ++ const verticalStyle: React.CSSProperties = top ++ ? { ++ top: position.includes('center-') ? '50%' : 0, ++ } ++ : { bottom: 0 }; ++ const horizontalStyle: React.CSSProperties = position.includes('center-right') ++ ? { justifyContent: 'flex-end' } ++ : position.includes('center-left') ++ ? { justifyContent: 'flex-start' } ++ : position.includes('center') + ? { + justifyContent: 'center', + } +diff --git a/src/core/types.ts b/src/core/types.ts +index cd6f67af4cea51b73ce9225c2f6fd9ff0c3e0d2e..4789baa61b9a40ac9726777a8d1a1f93bc09d2b2 100644 +--- a/src/core/types.ts ++++ b/src/core/types.ts +@@ -7,7 +7,9 @@ export type ToastPosition = + | 'top-right' + | 'bottom-left' + | 'bottom-center' +- | 'bottom-right'; ++ | 'bottom-right' ++ | 'center-right' ++ | 'center-left'; + + export type Renderable = JSX.Element | string | null; + \ No newline at end of file diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 72e8794..74f4453 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,1638 +1,371 @@ lockfileVersion: 5.4 +patchedDependencies: + react-hot-toast@2.4.0: + hash: 6dztgcaza2bodipt2i5a4is4mu + path: patches/react-hot-toast@2.4.0.patch + specifiers: '@babel/core': '>=7.0.0 <8.0.0' '@babel/plugin-syntax-flow': ^7.14.5 '@babel/plugin-transform-react-jsx': ^7.14.9 - '@chakra-ui/react': 2.3.6 - '@emotion/react': ^11.8.2 - '@emotion/styled': ^11.8.1 - '@fortawesome/fontawesome-svg-core': ^6.1.1 - '@fortawesome/free-brands-svg-icons': ^6.1.1 - '@fortawesome/free-regular-svg-icons': ^6.1.1 - '@fortawesome/free-solid-svg-icons': ^6.1.1 - '@fortawesome/react-fontawesome': ^0.1.18 - '@testing-library/dom': ^8.11.4 - '@testing-library/jest-dom': ^5.16.3 - '@testing-library/react': ^12.1.4 - '@testing-library/user-event': ^13.5.0 - '@types/jest': ^26.0.24 + '@emotion/react': ^11.10.5 + '@fortawesome/fontawesome-svg-core': ^6.3.0 + '@fortawesome/free-brands-svg-icons': ^6.3.0 + '@fortawesome/free-regular-svg-icons': ^6.3.0 + '@fortawesome/free-solid-svg-icons': ^6.3.0 + '@fortawesome/react-fontawesome': ^0.1.19 + '@mantine/core': ^5.10.0 + '@mantine/dates': ^5.10.0 + '@mantine/hooks': ^5.10.0 '@types/node': ^16.11.26 '@types/react': ^18.0.24 '@types/react-dom': ^18.0.8 - '@vitejs/plugin-react': ^1.3.2 + '@vitejs/plugin-react': ^3.0.1 autoprefixer: ^10.0.2 cross-env: ^7.0.3 + csstype: ^3.0.10 + dayjs: ^1.11.7 focus-trap-react: ^9.0.2 - framer-motion: ^6.2.8 + framer-motion: ^8.0.2 postcss: ^8.1.0 prettier: ^2.7.1 prop-types: ^15.8.1 react: 18.2.0 react-dom: 18.2.0 + react-hook-form: ^7.41.3 + react-hot-toast: ^2.4.0 react-markdown: ^8.0.1 + remark-gfm: ^3.0.1 rimraf: ^3.0.2 typescript: ^4.6.3 - vite: ^2.9.13 + vite: ^4.0.4 web-vitals: ^2.1.4 dependencies: - '@chakra-ui/react': 2.3.6_zmrz2cmshjklcm3tj4hldbkley - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - '@emotion/styled': 11.8.1_va75oy65rvpv5pp5ts2rjqhzoe - '@fortawesome/fontawesome-svg-core': 6.1.1 - '@fortawesome/free-brands-svg-icons': 6.1.1 - '@fortawesome/free-regular-svg-icons': 6.1.1 - '@fortawesome/free-solid-svg-icons': 6.1.1 - '@fortawesome/react-fontawesome': 0.1.18_sdfg7szeivrzzj63kiqxwaxkwu - '@testing-library/jest-dom': 5.16.3 - '@testing-library/react': 12.1.4_biqbaboplfbrettd7655fr4n2y - '@testing-library/user-event': 13.5.0_tejv2mq25i2itkdftmp7m2s2de - '@types/jest': 26.0.24 - '@types/node': 16.11.26 - '@types/react': 18.0.24 - '@types/react-dom': 18.0.8 - '@vitejs/plugin-react': 1.3.2 + '@emotion/react': 11.10.5_wkiylh6bncbdhwh6tncqb3s2nm + '@fortawesome/fontawesome-svg-core': 6.3.0 + '@fortawesome/free-brands-svg-icons': 6.3.0 + '@fortawesome/free-regular-svg-icons': 6.3.0 + '@fortawesome/free-solid-svg-icons': 6.3.0 + '@fortawesome/react-fontawesome': 0.1.19_d5rbrisxfyemehbvmdbryvgjte + '@mantine/core': 5.10.3_fgulr5lwjg33k6x5zho5ihipbq + '@mantine/dates': 5.10.3_hbx4cmgegpaplaf4wb6njc2lv4 + '@mantine/hooks': 5.10.3_react@18.2.0 + '@vitejs/plugin-react': 3.1.0_vite@4.1.1 + dayjs: 1.11.7 focus-trap-react: 9.0.2_v2m5e27vhdewzwhryxwfaorcca - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - prettier: 2.7.1 + framer-motion: 8.5.5_biqbaboplfbrettd7655fr4n2y + prettier: 2.8.4 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-markdown: 8.0.1_bbvjflvjoibwhtpmedigb26h6y - typescript: 4.6.3 - vite: 2.9.13 + react-hook-form: 7.43.1_react@18.2.0 + react-hot-toast: 2.4.0_6dztgcaza2bodipt2i5a4is4mu_owo25xnefcwdq3zjgtohz6dbju + react-markdown: 8.0.5_pmekkgnqduwlme35zpnqhenc34 + remark-gfm: 3.0.1 + typescript: 4.9.5 + vite: 4.1.1_@types+node@16.18.12 web-vitals: 2.1.4 devDependencies: - '@babel/core': 7.17.8 - '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 - '@testing-library/dom': 8.11.4 - autoprefixer: 10.4.4_postcss@8.4.12 + '@babel/core': 7.20.12 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@types/node': 16.18.12 + '@types/react': 18.0.28 + '@types/react-dom': 18.0.10 + autoprefixer: 10.4.13_postcss@8.4.21 cross-env: 7.0.3 - postcss: 8.4.12 + csstype: 3.1.1 + postcss: 8.4.21 prop-types: 15.8.1 rimraf: 3.0.2 packages: - /@ampproject/remapping/2.1.2: - resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.4 - - /@babel/code-frame/7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.16.10 + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - dev: false - /@babel/compat-data/7.17.7: - resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} + /@babel/compat-data/7.20.14: + resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} engines: {node: '>=6.9.0'} - /@babel/compat-data/7.18.6: - resolution: {integrity: sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/core/7.17.8: - resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} + /@babel/core/7.20.12: + resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.1.2 - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.7 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 - '@babel/helper-module-transforms': 7.17.7 - '@babel/helpers': 7.17.8 - '@babel/parser': 7.17.8 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - /@babel/core/7.18.6: - resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.1.2 + '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-module-transforms': 7.18.6 - '@babel/helpers': 7.18.6 - '@babel/parser': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 - convert-source-map: 1.8.0 + '@babel/generator': 7.20.14 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helpers': 7.20.13 + '@babel/parser': 7.20.15 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/generator/7.17.7: - resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + /@babel/generator/7.20.14: + resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 - jsesc: 2.5.2 - source-map: 0.5.7 - - /@babel/generator/7.18.7: - resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.7 + '@babel/types': 7.20.7 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - dev: false - - /@babel/helper-annotate-as-pure/7.16.7: - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 - dev: false + '@babel/types': 7.20.7 + dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.2 - semver: 6.3.0 - - /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.6 - '@babel/core': 7.18.6 + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 '@babel/helper-validator-option': 7.18.6 - browserslist: 4.20.2 + browserslist: 4.21.5 + lru-cache: 5.1.1 semver: 6.3.0 - dev: false - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 - - /@babel/helper-environment-visitor/7.18.6: - resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-function-name/7.16.7: - resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.16.7 - '@babel/types': 7.17.0 - - /@babel/helper-function-name/7.18.6: - resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.7 - dev: false - - /@babel/helper-get-function-arity/7.16.7: - resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 - - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 - dev: false - - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.7 /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 - dev: false + '@babel/types': 7.20.7 - /@babel/helper-module-transforms/7.17.7: - resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} + /@babel/helper-module-transforms/7.20.11: + resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.17.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - transitivePeerDependencies: - - supports-color - - /@babel/helper-module-transforms/7.18.6: - resolution: {integrity: sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-plugin-utils/7.16.7: - resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - /@babel/helper-plugin-utils/7.18.6: - resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-simple-access/7.17.7: - resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 - - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.7 - dev: false - - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.7 /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.7 - dev: false + '@babel/types': 7.20.7 - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option/7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helpers/7.17.8: - resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} + /@babel/helpers/7.20.13: + resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color - /@babel/helpers/7.18.6: - resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.6 - '@babel/types': 7.18.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/highlight/7.16.10: - resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 - dev: false - /@babel/parser/7.17.8: - resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} + /@babel/parser/7.20.15: + resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.7 - /@babel/parser/7.18.6: - resolution: {integrity: sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.7 - dev: false - - /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.16.7 - - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.6: - resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.16.7 - dev: false - - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - dev: false + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 - dev: false - - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.8: - resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} + /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 - '@babel/types': 7.17.0 - dev: true - - /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.18.6: - resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.6 - '@babel/types': 7.17.0 - dev: false - - /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 - '@babel/types': 7.18.7 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + dev: true + + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 dev: false - /@babel/runtime/7.17.8: - resolution: {integrity: sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.9 - - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.8 - '@babel/types': 7.17.0 - - /@babel/template/7.18.6: - resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.6 - '@babel/types': 7.18.7 - dev: false + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 - /@babel/traverse/7.17.3: - resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.17.8 - '@babel/types': 7.17.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/traverse/7.18.6: - resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} + /@babel/traverse/7.20.13: + resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 + '@babel/generator': 7.20.14 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.6 - '@babel/types': 7.18.7 + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/types/7.17.0: - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@babel/types/7.18.7: - resolution: {integrity: sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: false - - /@chakra-ui/accordion/2.1.2_kmlicq6bwxmlcznv6sr6tuc4dy: - resolution: {integrity: sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/descendant': 3.0.10_react@18.2.0 - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/transition': 2.0.11_4tlgiwfhwimjjb62viejpa3zx4 - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/alert/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/spinner': 2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/anatomy/2.0.7: - resolution: {integrity: sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg==} - dev: false - - /@chakra-ui/avatar/2.2.0_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/image': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/breadcrumb/2.1.0_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/breakpoint-utils/2.0.4: - resolution: {integrity: sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg==} - dev: false - - /@chakra-ui/button/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/spinner': 2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/checkbox/2.2.2_kmlicq6bwxmlcznv6sr6tuc4dy: - resolution: {integrity: sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/visually-hidden': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@zag-js/focus-visible': 0.1.0 - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/clickable/2.0.10_react@18.2.0: - resolution: {integrity: sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/close-button/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/color-mode/2.1.9_react@18.2.0: - resolution: {integrity: sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/control-box/2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/counter/2.0.10_react@18.2.0: - resolution: {integrity: sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/number-utils': 2.0.4 - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/css-reset/2.0.8_uipakss5pgtuqzobjvamnha64i: - resolution: {integrity: sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg==} - peerDependencies: - '@emotion/react': '>=10.0.35' - react: '>=18' - dependencies: - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - react: 18.2.0 - dev: false - - /@chakra-ui/descendant/3.0.10_react@18.2.0: - resolution: {integrity: sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/dom-utils/2.0.3: - resolution: {integrity: sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA==} - dev: false - - /@chakra-ui/editable/2.0.13_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.2 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/event-utils/2.0.5: - resolution: {integrity: sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg==} - dev: false - - /@chakra-ui/focus-lock/2.0.12_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.3 - react: 18.2.0 - react-focus-lock: 2.9.1_bbvjflvjoibwhtpmedigb26h6y - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/form-control/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/hooks/2.1.0_react@18.2.0: - resolution: {integrity: sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-utils': 2.0.8_react@18.2.0 - '@chakra-ui/utils': 2.0.11 - compute-scroll-into-view: 1.0.14 - copy-to-clipboard: 3.3.1 - react: 18.2.0 - dev: false - - /@chakra-ui/icon/3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/shared-utils': 2.0.2 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/image/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/input/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/object-utils': 2.0.4 - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.2 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/layout/2.1.9_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/breakpoint-utils': 2.0.4 - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/object-utils': 2.0.4 - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.2 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/lazy-utils/2.0.2: - resolution: {integrity: sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w==} - dev: false - - /@chakra-ui/live-region/2.0.10_react@18.2.0: - resolution: {integrity: sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/media-query/3.2.7_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/breakpoint-utils': 2.0.4 - '@chakra-ui/react-env': 2.0.10_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/menu/2.1.2_kmlicq6bwxmlcznv6sr6tuc4dy: - resolution: {integrity: sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/clickable': 2.0.10_react@18.2.0 - '@chakra-ui/descendant': 3.0.10_react@18.2.0 - '@chakra-ui/lazy-utils': 2.0.2 - '@chakra-ui/popper': 3.0.8_react@18.2.0 - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-animation-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-focus-effect': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-outside-click': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/transition': 2.0.11_4tlgiwfhwimjjb62viejpa3zx4 - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/modal/2.2.2_fxic6zwo3wicn63jm64z3m2h6e: - resolution: {integrity: sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/close-button': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/focus-lock': 2.0.12_bbvjflvjoibwhtpmedigb26h6y - '@chakra-ui/portal': 2.0.10_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/transition': 2.0.11_4tlgiwfhwimjjb62viejpa3zx4 - aria-hidden: 1.1.3 - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-remove-scroll: 2.5.5_bbvjflvjoibwhtpmedigb26h6y - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/number-input/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/counter': 2.0.10_react@18.2.0 - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-event-listener': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-interval': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/number-utils/2.0.4: - resolution: {integrity: sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw==} - dev: false - - /@chakra-ui/object-utils/2.0.4: - resolution: {integrity: sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ==} - dev: false - - /@chakra-ui/pin-input/2.0.15_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/descendant': 3.0.10_react@18.2.0 - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/popover/2.1.1_kmlicq6bwxmlcznv6sr6tuc4dy: - resolution: {integrity: sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/close-button': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/lazy-utils': 2.0.2 - '@chakra-ui/popper': 3.0.8_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-animation-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-focus-effect': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/popper/3.0.8_react@18.2.0: - resolution: {integrity: sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@popperjs/core': 2.11.4 - react: 18.2.0 - dev: false - - /@chakra-ui/portal/2.0.10_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg==} - peerDependencies: - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/progress/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/provider/2.0.20_jhqg3ct5bm4gstf7pwswqr5qsi: - resolution: {integrity: sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/css-reset': 2.0.8_uipakss5pgtuqzobjvamnha64i - '@chakra-ui/portal': 2.0.10_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-env': 2.0.10_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/utils': 2.0.11 - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - '@emotion/styled': 11.8.1_va75oy65rvpv5pp5ts2rjqhzoe - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/radio/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@zag-js/focus-visible': 0.1.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-children-utils/2.0.3_react@18.2.0: - resolution: {integrity: sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-context/2.0.4_react@18.2.0: - resolution: {integrity: sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-env/2.0.10_react@18.2.0: - resolution: {integrity: sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-types/2.0.3_react@18.2.0: - resolution: {integrity: sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-animation-state/2.0.5_react@18.2.0: - resolution: {integrity: sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.3 - '@chakra-ui/react-use-event-listener': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-callback-ref/2.0.4_react@18.2.0: - resolution: {integrity: sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-controllable-state/2.0.5_react@18.2.0: - resolution: {integrity: sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-disclosure/2.0.5_react@18.2.0: - resolution: {integrity: sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-event-listener/2.0.4_react@18.2.0: - resolution: {integrity: sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-focus-effect/2.0.5_react@18.2.0: - resolution: {integrity: sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.3 - '@chakra-ui/react-use-event-listener': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-focus-on-pointer-down/2.0.3_react@18.2.0: - resolution: {integrity: sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-event-listener': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-interval/2.0.2_react@18.2.0: - resolution: {integrity: sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-latest-ref/2.0.2_react@18.2.0: - resolution: {integrity: sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-merge-refs/2.0.4_react@18.2.0: - resolution: {integrity: sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-outside-click/2.0.4_react@18.2.0: - resolution: {integrity: sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-pan-event/2.0.5_react@18.2.0: - resolution: {integrity: sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/event-utils': 2.0.5 - '@chakra-ui/react-use-latest-ref': 2.0.2_react@18.2.0 - framesync: 5.3.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-previous/2.0.2_react@18.2.0: - resolution: {integrity: sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-safe-layout-effect/2.0.2_react@18.2.0: - resolution: {integrity: sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-size/2.0.4_react@18.2.0: - resolution: {integrity: sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew==} - peerDependencies: - react: '>=18' - dependencies: - '@zag-js/element-size': 0.1.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-timeout/2.0.2_react@18.2.0: - resolution: {integrity: sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-update-effect/2.0.4_react@18.2.0: - resolution: {integrity: sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-utils/2.0.8_react@18.2.0: - resolution: {integrity: sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/utils': 2.0.11 - react: 18.2.0 - dev: false - - /@chakra-ui/react/2.3.6_zmrz2cmshjklcm3tj4hldbkley: - resolution: {integrity: sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/accordion': 2.1.2_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/alert': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/avatar': 2.2.0_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/breadcrumb': 2.1.0_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/button': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/checkbox': 2.2.2_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/close-button': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/control-box': 2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/counter': 2.0.10_react@18.2.0 - '@chakra-ui/css-reset': 2.0.8_uipakss5pgtuqzobjvamnha64i - '@chakra-ui/editable': 2.0.13_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/hooks': 2.1.0_react@18.2.0 - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/image': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/input': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/layout': 2.1.9_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/live-region': 2.0.10_react@18.2.0 - '@chakra-ui/media-query': 3.2.7_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/menu': 2.1.2_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/modal': 2.2.2_fxic6zwo3wicn63jm64z3m2h6e - '@chakra-ui/number-input': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/pin-input': 2.0.15_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/popover': 2.1.1_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/popper': 3.0.8_react@18.2.0 - '@chakra-ui/portal': 2.0.10_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/progress': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/provider': 2.0.20_jhqg3ct5bm4gstf7pwswqr5qsi - '@chakra-ui/radio': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-env': 2.0.10_react@18.2.0 - '@chakra-ui/select': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/skeleton': 2.0.17_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/slider': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/spinner': 2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/stat': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/styled-system': 2.3.4 - '@chakra-ui/switch': 2.0.14_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/table': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/tabs': 2.1.4_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/tag': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/textarea': 2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/theme': 2.1.14_kzevwk2hxgy6fnrjqv25jdmqp4 - '@chakra-ui/theme-utils': 2.0.1 - '@chakra-ui/toast': 4.0.0_i5i4bpvpaizvkddebpliczlnaa - '@chakra-ui/tooltip': 2.2.0_i5i4bpvpaizvkddebpliczlnaa - '@chakra-ui/transition': 2.0.11_4tlgiwfhwimjjb62viejpa3zx4 - '@chakra-ui/utils': 2.0.11 - '@chakra-ui/visually-hidden': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - '@emotion/styled': 11.8.1_va75oy65rvpv5pp5ts2rjqhzoe - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/select/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/shared-utils/2.0.2: - resolution: {integrity: sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==} - dev: false - - /@chakra-ui/skeleton/2.0.17_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/media-query': 3.2.7_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-use-previous': 2.0.2_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/slider/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/number-utils': 2.0.4 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-latest-ref': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-pan-event': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-size': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/spinner/2.0.10_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/stat/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/styled-system/2.3.4: - resolution: {integrity: sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w==} - dependencies: - csstype: 3.0.11 - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/switch/2.0.14_kmlicq6bwxmlcznv6sr6tuc4dy: - resolution: {integrity: sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/checkbox': 2.2.2_kmlicq6bwxmlcznv6sr6tuc4dy - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/system/2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y: - resolution: {integrity: sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - dependencies: - '@chakra-ui/color-mode': 2.1.9_react@18.2.0 - '@chakra-ui/react-utils': 2.0.8_react@18.2.0 - '@chakra-ui/styled-system': 2.3.4 - '@chakra-ui/theme-utils': 2.0.1 - '@chakra-ui/utils': 2.0.11 - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - '@emotion/styled': 11.8.1_va75oy65rvpv5pp5ts2rjqhzoe - react: 18.2.0 - react-fast-compare: 3.2.0 - dev: false - - /@chakra-ui/table/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/tabs/2.1.4_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/clickable': 2.0.10_react@18.2.0 - '@chakra-ui/descendant': 3.0.10_react@18.2.0 - '@chakra-ui/lazy-utils': 2.0.2 - '@chakra-ui/react-children-utils': 2.0.3_react@18.2.0 - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.2_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/tag/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/react-context': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/textarea/2.0.12_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@chakra-ui/theme-tools/2.0.12_kzevwk2hxgy6fnrjqv25jdmqp4: - resolution: {integrity: sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.0.7 - '@chakra-ui/styled-system': 2.3.4 - '@ctrl/tinycolor': 3.4.0 - dev: false - - /@chakra-ui/theme-utils/2.0.1: - resolution: {integrity: sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w==} - dependencies: - '@chakra-ui/styled-system': 2.3.4 - '@chakra-ui/theme': 2.1.14_kzevwk2hxgy6fnrjqv25jdmqp4 - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/theme/2.1.14_kzevwk2hxgy6fnrjqv25jdmqp4: - resolution: {integrity: sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.0.7 - '@chakra-ui/styled-system': 2.3.4 - '@chakra-ui/theme-tools': 2.0.12_kzevwk2hxgy6fnrjqv25jdmqp4 - dev: false - - /@chakra-ui/toast/4.0.0_i5i4bpvpaizvkddebpliczlnaa: - resolution: {integrity: sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og==} - peerDependencies: - '@chakra-ui/system': 2.3.0 - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/alert': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/close-button': 2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u - '@chakra-ui/portal': 2.0.10_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-use-timeout': 2.0.2_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.4_react@18.2.0 - '@chakra-ui/styled-system': 2.3.4 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - '@chakra-ui/theme': 2.1.14_kzevwk2hxgy6fnrjqv25jdmqp4 - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/tooltip/2.2.0_i5i4bpvpaizvkddebpliczlnaa: - resolution: {integrity: sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/popper': 3.0.8_react@18.2.0 - '@chakra-ui/portal': 2.0.10_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-types': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-event-listener': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.4_react@18.2.0 - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/transition/2.0.11_4tlgiwfhwimjjb62viejpa3zx4: - resolution: {integrity: sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw==} - peerDependencies: - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - framer-motion: 6.2.8_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/utils/2.0.11: - resolution: {integrity: sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA==} - dependencies: - '@types/lodash.mergewith': 4.6.6 - css-box-model: 1.2.1 - framesync: 5.3.0 - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/visually-hidden/2.0.11_e5d2utcogkjxxdp5h2rcoxuz2u: - resolution: {integrity: sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.0_7cgzoxu72zx6aoub5hu3xkfl3y - react: 18.2.0 - dev: false - - /@ctrl/tinycolor/3.4.0: - resolution: {integrity: sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==} - engines: {node: '>=10'} - dev: false - - /@emotion/babel-plugin/11.7.2_@babel+core@7.17.8: - resolution: {integrity: sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==} + /@emotion/babel-plugin/11.10.5_@babel+core@7.20.12: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-imports': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 - '@babel/runtime': 7.17.8 - '@emotion/hash': 0.8.0 - '@emotion/memoize': 0.7.5 - '@emotion/serialize': 1.0.2 - babel-plugin-macros: 2.8.0 - convert-source-map: 1.8.0 + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/runtime': 7.20.13 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/serialize': 1.1.1 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 find-root: 1.1.0 source-map: 0.5.7 - stylis: 4.0.13 + stylis: 4.1.3 dev: false - /@emotion/cache/11.7.1: - resolution: {integrity: sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==} + /@emotion/cache/11.10.5: + resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: - '@emotion/memoize': 0.7.5 - '@emotion/sheet': 1.1.0 - '@emotion/utils': 1.1.0 - '@emotion/weak-memoize': 0.2.5 - stylis: 4.0.13 + '@emotion/memoize': 0.8.0 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + stylis: 4.1.3 dev: false - /@emotion/hash/0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + /@emotion/hash/0.9.0: + resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} dev: false /@emotion/is-prop-valid/0.8.8: @@ -1643,23 +376,17 @@ packages: dev: false optional: true - /@emotion/is-prop-valid/1.1.2: - resolution: {integrity: sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==} - dependencies: - '@emotion/memoize': 0.7.5 - dev: false - /@emotion/memoize/0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false optional: true - /@emotion/memoize/0.7.5: - resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} + /@emotion/memoize/0.8.0: + resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.8.2_tazjupc4o35ph7b3pedstd2nsy: - resolution: {integrity: sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA==} + /@emotion/react/11.10.5_wkiylh6bncbdhwh6tncqb3s2nm: + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' @@ -1670,228 +397,591 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/runtime': 7.17.8 - '@emotion/babel-plugin': 11.7.2_@babel+core@7.17.8 - '@emotion/cache': 11.7.1 - '@emotion/serialize': 1.0.2 - '@emotion/utils': 1.1.0 - '@emotion/weak-memoize': 0.2.5 - '@types/react': 18.0.24 + '@babel/core': 7.20.12 + '@babel/runtime': 7.20.13 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.20.12 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false - /@emotion/serialize/1.0.2: - resolution: {integrity: sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==} + /@emotion/serialize/1.1.1: + resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: - '@emotion/hash': 0.8.0 - '@emotion/memoize': 0.7.5 - '@emotion/unitless': 0.7.5 - '@emotion/utils': 1.1.0 - csstype: 3.0.11 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/unitless': 0.8.0 + '@emotion/utils': 1.2.0 + csstype: 3.1.1 dev: false - /@emotion/sheet/1.1.0: - resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} + /@emotion/sheet/1.2.1: + resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.8.1_va75oy65rvpv5pp5ts2rjqhzoe: - resolution: {integrity: sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==} + /@emotion/unitless/0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: + resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} peerDependencies: - '@babel/core': ^7.0.0 - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' react: '>=16.8.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/react': - optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/runtime': 7.17.8 - '@emotion/babel-plugin': 11.7.2_@babel+core@7.17.8 - '@emotion/is-prop-valid': 1.1.2 - '@emotion/react': 11.8.2_tazjupc4o35ph7b3pedstd2nsy - '@emotion/serialize': 1.0.2 - '@emotion/utils': 1.1.0 - '@types/react': 18.0.24 react: 18.2.0 dev: false - /@emotion/unitless/0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + /@emotion/utils/1.2.0: + resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} dev: false - /@emotion/utils/1.1.0: - resolution: {integrity: sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==} + /@emotion/weak-memoize/0.3.0: + resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@emotion/weak-memoize/0.2.5: - resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@floating-ui/core/1.2.0: + resolution: {integrity: sha512-GHUXPEhMEmTpnpIfesFA2KAoMJPb1SPQw964tToQwt+BbGXdhqTCWT1rOb0VURGylsxsYxiGMnseJ3IlclVpVA==} dev: false - /@fortawesome/fontawesome-common-types/6.1.1: - resolution: {integrity: sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==} + /@floating-ui/dom/1.2.0: + resolution: {integrity: sha512-QXzg57o1cjLz3cGETzKXjI3kx1xyS49DW9l7kV2jw2c8Yftd434t2hllX0sVGn2Q8MtcW/4pNm8bfE1/4n6mng==} + dependencies: + '@floating-ui/core': 1.2.0 + dev: false + + /@floating-ui/react-dom/1.2.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-DbmFBLwFrZhtXgCI2ra7wXYT8L2BN4/4AMQKyu05qzsVji51tXOfF36VE2gpMB6nhJGHa85PdEg75FB4+vnLFQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@floating-ui/react/0.19.1_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-h7hr53rLp+VVvWvbu0dOBvGsLeeZwn1DTLIllIaLYjGWw20YhAgEqegHU+nc7BJ30ttxq4Sq6hqARm0ne6chXQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/react-dom': 1.2.2_biqbaboplfbrettd7655fr4n2y + aria-hidden: 1.2.2_pmekkgnqduwlme35zpnqhenc34 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + tabbable: 6.0.1 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@fortawesome/fontawesome-common-types/6.3.0: + resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core/6.1.1: - resolution: {integrity: sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==} + /@fortawesome/fontawesome-svg-core/6.3.0: + resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.1.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/free-brands-svg-icons/6.1.1: - resolution: {integrity: sha512-mFbI/czjBZ+paUtw5NPr2IXjun5KAC8eFqh1hnxowjA4mMZxWz4GCIksq6j9ZSa6Uxj9JhjjDVEd77p2LN2Blg==} + /@fortawesome/free-brands-svg-icons/6.3.0: + resolution: {integrity: sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.1.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/free-regular-svg-icons/6.1.1: - resolution: {integrity: sha512-xXiW7hcpgwmWtndKPOzG+43fPH7ZjxOaoeyooptSztGmJxCAflHZxXNK0GcT0uEsR4jTGQAfGklDZE5NHoBhKg==} + /@fortawesome/free-regular-svg-icons/6.3.0: + resolution: {integrity: sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.1.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/free-solid-svg-icons/6.1.1: - resolution: {integrity: sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==} + /@fortawesome/free-solid-svg-icons/6.3.0: + resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.1.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/react-fontawesome/0.1.18_sdfg7szeivrzzj63kiqxwaxkwu: - resolution: {integrity: sha512-RwLIB4TZw0M9gvy5u+TusAA0afbwM4JQIimNH/j3ygd6aIvYPQLqXMhC9ErY26J23rDPyDZldIfPq/HpTTJ/tQ==} + /@fortawesome/react-fontawesome/0.1.19_d5rbrisxfyemehbvmdbryvgjte: + resolution: {integrity: sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.x' dependencies: - '@fortawesome/fontawesome-svg-core': 6.1.1 + '@fortawesome/fontawesome-svg-core': 6.3.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@jest/types/26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.26 - '@types/yargs': 15.0.14 - chalk: 4.1.2 - dev: false + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.11 - '@jridgewell/trace-mapping': 0.3.14 - dev: false + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/resolve-uri/3.0.5: - resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: false - /@jridgewell/sourcemap-codec/1.4.11: - resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: - '@jridgewell/resolve-uri': 3.0.5 - '@jridgewell/sourcemap-codec': 1.4.11 - dev: false + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.4: - resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} - dependencies: - '@jridgewell/resolve-uri': 3.0.5 - '@jridgewell/sourcemap-codec': 1.4.11 - - /@popperjs/core/2.11.4: - resolution: {integrity: sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==} - dev: false - - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: false - - /@testing-library/dom/8.11.4: - resolution: {integrity: sha512-7vZ6ZoBEbr6bfEM89W1nzl0vHbuI0g0kRrI0hwSXH3epnuqGO3KulFLQCKfmmW+60t7e4sevAkJPASSMmnNCRw==} - engines: {node: '>=12'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/runtime': 7.17.8 - '@types/aria-query': 4.2.2 - aria-query: 5.0.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.13 - lz-string: 1.4.4 - pretty-format: 27.5.1 - - /@testing-library/jest-dom/5.16.3: - resolution: {integrity: sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA==} - engines: {node: '>=8', npm: '>=6', yarn: '>=1'} - dependencies: - '@babel/runtime': 7.17.8 - '@types/testing-library__jest-dom': 5.14.3 - aria-query: 5.0.0 - chalk: 3.0.0 - css: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.13 - lodash: 4.17.21 - redent: 3.0.0 - dev: false - - /@testing-library/react/12.1.4_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==} - engines: {node: '>=12'} + /@mantine/core/5.10.3_fgulr5lwjg33k6x5zho5ihipbq: + resolution: {integrity: sha512-kBb8l085vg+MjAVxEDyI/koT/l2hXTBVdg6pkSJlFlMtUlhBGkp8fzqaaUiJ7C1oU//NnHAogPymHw0tjpPBgA==} peerDependencies: - react: '*' - react-dom: '*' + '@mantine/hooks': 5.10.3 + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.17.8 - '@testing-library/dom': 8.11.4 - '@types/react-dom': 18.0.8 + '@floating-ui/react': 0.19.1_zula6vjvt3wdocc4mwcxqa6nzi + '@mantine/hooks': 5.10.3_react@18.2.0 + '@mantine/styles': 5.10.3_sogmqz4enknxtkxk3k5s6bqwnq + '@mantine/utils': 5.10.3_react@18.2.0 + '@radix-ui/react-scroll-area': 1.0.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-textarea-autosize: 8.3.4_pmekkgnqduwlme35zpnqhenc34 + transitivePeerDependencies: + - '@emotion/react' + - '@types/react' + dev: false + + /@mantine/dates/5.10.3_hbx4cmgegpaplaf4wb6njc2lv4: + resolution: {integrity: sha512-coXU4S9+xzW6ROvLPQpW69veqOdyAH0LCJVbW8lzzfwWf/J4SCslDsAm23G6jmQ9Srmt6J1sCkHfLVaKcCUQ1g==} + peerDependencies: + '@mantine/core': 5.10.3 + '@mantine/hooks': 5.10.3 + dayjs: '>=1.0.0' + react: '>=16.8.0' + dependencies: + '@mantine/core': 5.10.3_fgulr5lwjg33k6x5zho5ihipbq + '@mantine/hooks': 5.10.3_react@18.2.0 + '@mantine/utils': 5.10.3_react@18.2.0 + dayjs: 1.11.7 + react: 18.2.0 + dev: false + + /@mantine/hooks/5.10.3_react@18.2.0: + resolution: {integrity: sha512-fFDXF0A596z10QKeWAGtTZJ4QotsMxhhbjfWWRHMogY/hXHQ2S+7+GFotpF2JbzefYztpawHEJevy3eYF8cQmQ==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /@mantine/styles/5.10.3_sogmqz4enknxtkxk3k5s6bqwnq: + resolution: {integrity: sha512-OpKY207BgkJd59wSNuNaZILAUbNh1b87iY5bZOVm9u49X5cOo/n4nrkaUMw2FCZIKi6psyobtW7XYCuoldrI4w==} + peerDependencies: + '@emotion/react': '>=11.9.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@emotion/react': 11.10.5_wkiylh6bncbdhwh6tncqb3s2nm + clsx: 1.1.1 + csstype: 3.0.9 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /@testing-library/user-event/13.5.0_tejv2mq25i2itkdftmp7m2s2de: - resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} - engines: {node: '>=10', npm: '>=6'} + /@mantine/utils/5.10.3_react@18.2.0: + resolution: {integrity: sha512-ZfR1wouA/rz3xTOb2wBnrQpIiyjLcCLLvbUo7rzaG3LhFy7UoGjZ6uqIW9qDrzs7SR4tETRfMxedYagjcoCiEg==} peerDependencies: - '@testing-library/dom': '>=7.21.4' + react: '>=16.8.0' dependencies: - '@babel/runtime': 7.17.8 - '@testing-library/dom': 8.11.4 + react: 18.2.0 dev: false - /@types/aria-query/4.2.2: - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + /@motionone/animation/10.15.1: + resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + dependencies: + '@motionone/easing': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.5.0 + dev: false + + /@motionone/dom/10.15.5: + resolution: {integrity: sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==} + dependencies: + '@motionone/animation': 10.15.1 + '@motionone/generators': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.5.0 + dev: false + + /@motionone/easing/10.15.1: + resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + dependencies: + '@motionone/utils': 10.15.1 + tslib: 2.5.0 + dev: false + + /@motionone/generators/10.15.1: + resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + dependencies: + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.5.0 + dev: false + + /@motionone/types/10.15.1: + resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + dev: false + + /@motionone/utils/10.15.1: + resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + dependencies: + '@motionone/types': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.5.0 + dev: false + + /@radix-ui/number/1.0.0: + resolution: {integrity: sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==} + dependencies: + '@babel/runtime': 7.20.13 + dev: false + + /@radix-ui/primitive/1.0.0: + resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + dependencies: + '@babel/runtime': 7.20.13 + dev: false + + /@radix-ui/react-compose-refs/1.0.0_react@18.2.0: + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + react: 18.2.0 + dev: false + + /@radix-ui/react-context/1.0.0_react@18.2.0: + resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + react: 18.2.0 + dev: false + + /@radix-ui/react-direction/1.0.0_react@18.2.0: + resolution: {integrity: sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + react: 18.2.0 + dev: false + + /@radix-ui/react-presence/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0 + '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@radix-ui/react-primitive/1.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + '@radix-ui/react-slot': 1.0.1_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@radix-ui/react-scroll-area/1.0.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + '@radix-ui/number': 1.0.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0 + '@radix-ui/react-context': 1.0.0_react@18.2.0 + '@radix-ui/react-direction': 1.0.0_react@18.2.0 + '@radix-ui/react-presence': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-primitive': 1.0.1_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-use-callback-ref': 1.0.0_react@18.2.0 + '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@radix-ui/react-slot/1.0.1_react@18.2.0: + resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref/1.0.0_react@18.2.0: + resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect/1.0.0_react@18.2.0: + resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.20.13 + react: 18.2.0 + dev: false /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} @@ -1905,186 +995,106 @@ packages: '@types/unist': 2.0.6 dev: false - /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: false - - /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: false - - /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: false - - /@types/jest/26.0.24: - resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} - dependencies: - jest-diff: 26.6.2 - pretty-format: 26.6.2 - dev: false - - /@types/lodash.mergewith/4.6.6: - resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} - dependencies: - '@types/lodash': 4.14.180 - dev: false - - /@types/lodash/4.14.180: - resolution: {integrity: sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==} - dev: false - /@types/mdast/3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/mdurl/1.0.2: - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} - dev: false - /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/16.11.26: - resolution: {integrity: sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==} - dev: false + /@types/node/16.18.12: + resolution: {integrity: sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==} /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/prop-types/15.7.4: - resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==} - dev: false + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom/18.0.8: - resolution: {integrity: sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==} + /@types/react-dom/18.0.10: + resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} dependencies: - '@types/react': 18.0.24 - dev: false + '@types/react': 18.0.28 + dev: true - /@types/react/18.0.24: - resolution: {integrity: sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==} + /@types/react/18.0.28: + resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: - '@types/prop-types': 15.7.4 + '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 - csstype: 3.0.11 - dev: false + csstype: 3.1.1 /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: false - - /@types/testing-library__jest-dom/5.14.3: - resolution: {integrity: sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==} - dependencies: - '@types/jest': 26.0.24 - dev: false /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: false - - /@types/yargs/15.0.14: - resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} + /@vitejs/plugin-react/3.1.0_vite@4.1.1: + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 dependencies: - '@types/yargs-parser': 21.0.0 - dev: false - - /@vitejs/plugin-react/1.3.2: - resolution: {integrity: sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==} - engines: {node: '>=12.0.0'} - dependencies: - '@babel/core': 7.18.6 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.6 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.6 - '@rollup/pluginutils': 4.2.1 - react-refresh: 0.13.0 - resolve: 1.22.0 + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 + magic-string: 0.27.0 + react-refresh: 0.14.0 + vite: 4.1.1_@types+node@16.18.12 transitivePeerDependencies: - supports-color dev: false - /@zag-js/element-size/0.1.0: - resolution: {integrity: sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==} - dev: false - - /@zag-js/focus-visible/0.1.0: - resolution: {integrity: sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==} - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles/5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + /aria-hidden/1.2.2_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} engines: {node: '>=10'} - - /aria-hidden/1.1.3: - resolution: {integrity: sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==} - engines: {node: '>=8.5.0'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - tslib: 1.14.1 + '@types/react': 18.0.28 + react: 18.2.0 + tslib: 2.5.0 dev: false - /aria-query/5.0.0: - resolution: {integrity: sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==} - engines: {node: '>=6.0'} - - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - - /autoprefixer/10.4.4_postcss@8.4.12: - resolution: {integrity: sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==} + /autoprefixer/10.4.13_postcss@8.4.21: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.20.2 - caniuse-lite: 1.0.30001320 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001451 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.12 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true - /babel-plugin-macros/2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.17.8 - cosmiconfig: 6.0.0 - resolve: 1.22.0 + '@babel/runtime': 7.20.13 + cosmiconfig: 7.1.0 + resolve: 1.22.1 dev: false /bail/2.0.2: @@ -2102,24 +1112,27 @@ packages: concat-map: 0.0.1 dev: true - /browserslist/4.20.2: - resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001320 - electron-to-chromium: 1.4.94 - escalade: 3.1.1 - node-releases: 2.0.2 - picocolors: 1.0.0 + caniuse-lite: 1.0.30001451 + electron-to-chromium: 1.4.295 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: false - /caniuse-lite/1.0.30001320: - resolution: {integrity: sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==} + /caniuse-lite/1.0.30001451: + resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} + + /ccount/2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2129,23 +1142,13 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + /character-entities/2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: false - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /character-entities/2.0.1: - resolution: {integrity: sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==} + /clsx/1.1.1: + resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} + engines: {node: '>=6'} dev: false /color-convert/1.9.3: @@ -2153,44 +1156,23 @@ packages: dependencies: color-name: 1.1.3 - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /comma-separated-tokens/2.0.2: - resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} - dev: false - - /compute-scroll-into-view/1.0.14: - resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} + /comma-separated-tokens/2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /copy-to-clipboard/3.3.1: - resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} - dependencies: - toggle-selection: 1.0.6 - dev: false - - /cosmiconfig/6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 @@ -2216,26 +1198,15 @@ packages: which: 2.0.2 dev: true - /css-box-model/1.2.1: - resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} - dependencies: - tiny-invariant: 1.2.0 + /csstype/3.0.9: + resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==} dev: false - /css.escape/1.5.1: - resolution: {integrity: sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=} - dev: false + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - /css/3.0.0: - resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.6.0 - dev: false - - /csstype/3.0.11: - resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + /dayjs/1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false /debug/4.3.4: @@ -2249,41 +1220,24 @@ packages: dependencies: ms: 2.1.2 - /decode-named-character-reference/1.0.1: - resolution: {integrity: sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==} + /decode-named-character-reference/1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: - character-entities: 2.0.1 + character-entities: 2.0.2 dev: false - /decode-uri-component/0.2.0: - resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} - engines: {node: '>=0.10'} - dev: false - - /dequal/2.0.2: - resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: false - /detect-node-es/1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false - - /diff-sequences/26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} - engines: {node: '>= 10.14.2'} - dev: false - - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: false - /dom-accessibility-api/0.5.13: - resolution: {integrity: sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==} - - /electron-to-chromium/1.4.94: - resolution: {integrity: sha512-CoOKsuACoa0PAG3hQXxbh/XDiFcjGuSyGKUi09cjMHOt6RCi7/EXgXhaFF3I+aC89Omudqmkzd0YOQKxwtf/Bg==} + /electron-to-chromium/1.4.295: + resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==} /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2291,212 +1245,34 @@ packages: is-arrayish: 0.2.1 dev: false - /esbuild-android-64/0.14.48: - resolution: {integrity: sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /esbuild-android-arm64/0.14.48: - resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /esbuild-darwin-64/0.14.48: - resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /esbuild-darwin-arm64/0.14.48: - resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /esbuild-freebsd-64/0.14.48: - resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-freebsd-arm64/0.14.48: - resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-32/0.14.48: - resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-64/0.14.48: - resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-arm/0.14.48: - resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-arm64/0.14.48: - resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-mips64le/0.14.48: - resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-ppc64le/0.14.48: - resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-riscv64/0.14.48: - resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-s390x/0.14.48: - resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-netbsd-64/0.14.48: - resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-openbsd-64/0.14.48: - resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-sunos-64/0.14.48: - resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-32/0.14.48: - resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-64/0.14.48: - resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-arm64/0.14.48: - resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild/0.14.48: - resolution: {integrity: sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==} + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.48 - esbuild-android-arm64: 0.14.48 - esbuild-darwin-64: 0.14.48 - esbuild-darwin-arm64: 0.14.48 - esbuild-freebsd-64: 0.14.48 - esbuild-freebsd-arm64: 0.14.48 - esbuild-linux-32: 0.14.48 - esbuild-linux-64: 0.14.48 - esbuild-linux-arm: 0.14.48 - esbuild-linux-arm64: 0.14.48 - esbuild-linux-mips64le: 0.14.48 - esbuild-linux-ppc64le: 0.14.48 - esbuild-linux-riscv64: 0.14.48 - esbuild-linux-s390x: 0.14.48 - esbuild-netbsd-64: 0.14.48 - esbuild-openbsd-64: 0.14.48 - esbuild-sunos-64: 0.14.48 - esbuild-windows-32: 0.14.48 - esbuild-windows-64: 0.14.48 - esbuild-windows-arm64: 0.14.48 + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 dev: false /escalade/3.1.1: @@ -2504,7 +1280,7 @@ packages: engines: {node: '>=6'} /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} /escape-string-regexp/4.0.0: @@ -2512,8 +1288,9 @@ packages: engines: {node: '>=10'} dev: false - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /escape-string-regexp/5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} dev: false /extend/3.0.2: @@ -2524,13 +1301,6 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /focus-lock/0.11.3: - resolution: {integrity: sha512-4n0pYcPTa/uI7Q66BZna61nRT7lDhnuJ9PJr6wiDjx4uStg491ks41y7uOG+s0umaaa+hulNKSldU9aTg9/yVg==} - engines: {node: '>=10'} - dependencies: - tslib: 2.3.1 - dev: false - /focus-trap-react/9.0.2_v2m5e27vhdewzwhryxwfaorcca: resolution: {integrity: sha512-ZwhO5by6KG5r3dy48Lk00A1/0zNYw1Z3RZTN6O6kgAPsWFcwTFszOcQ1dLSfM8pIxpS/ttc7wTttJowjVT3jpg==} peerDependencies: @@ -2555,37 +1325,23 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /framer-motion/6.2.8_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-4PtBWFJ6NqR350zYVt9AsFDtISTqsdqna79FvSYPfYDXuuqFmiKtZdkTnYPslnsOMedTW0pEvaQ7eqjD+sA+HA==} + /framer-motion/8.5.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-5IDx5bxkjWHWUF3CVJoSyUVOtrbAxtzYBBowRE2uYI/6VYhkEBD+rbTHEGuUmbGHRj6YqqSfoG7Aa1cLyWCrBA==} peerDependencies: - react: '>=16.8 || ^17.0.0 || ^18.0.0' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - framesync: 6.0.1 + '@motionone/dom': 10.15.5 hey-listen: 1.0.8 - popmotion: 11.0.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - style-value-types: 5.0.0 - tslib: 2.3.1 + tslib: 2.5.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false - /framesync/5.3.0: - resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} - dependencies: - tslib: 2.3.1 - dev: false - - /framesync/6.0.1: - resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} - dependencies: - tslib: 2.3.1 - dev: false - /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents/2.3.2: @@ -2604,13 +1360,8 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-nonce/1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false - - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -2624,13 +1375,17 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} - engines: {node: '>=4'} + /goober/2.1.12_csstype@3.1.1: + resolution: {integrity: sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==} + peerDependencies: + csstype: ^3.0.10 + dependencies: + csstype: 3.1.1 + dev: false - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -2639,8 +1394,8 @@ packages: function-bind: 1.1.1 dev: false - /hast-util-whitespace/2.0.0: - resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + /hast-util-whitespace/2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: false /hey-listen/1.0.8: @@ -2661,13 +1416,8 @@ packages: resolve-from: 4.0.0 dev: false - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -2675,19 +1425,14 @@ packages: /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /inline-style-parser/0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /invariant/2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: false - /is-arrayish/0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false /is-buffer/2.0.5: @@ -2695,36 +1440,21 @@ packages: engines: {node: '>=4'} dev: false - /is-core-module/2.8.1: - resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: false - /is-plain-obj/4.0.0: - resolution: {integrity: sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==} + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: false /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jest-diff/26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} - engines: {node: '>= 10.14.2'} - dependencies: - chalk: 4.1.2 - diff-sequences: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - dev: false - - /jest-get-type/26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} - dev: false - /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2737,13 +1467,13 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /kleur/4.1.4: - resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: false @@ -2751,12 +1481,8 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /lodash.mergewith/4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - dev: false - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /longest-streak/3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false /loose-envify/1.4.0: @@ -2765,64 +1491,157 @@ packages: dependencies: js-tokens: 4.0.0 - /lz-string/1.4.4: - resolution: {integrity: sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=} - hasBin: true - - /mdast-util-definitions/5.1.0: - resolution: {integrity: sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==} + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - unist-util-visit: 3.1.0 + yallist: 3.1.1 + + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /mdast-util-from-markdown/1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + /markdown-table/3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /mdast-util-definitions/5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} dependencies: '@types/mdast': 3.0.10 '@types/unist': 2.0.6 - decode-named-character-reference: 1.0.1 - mdast-util-to-string: 3.1.0 - micromark: 3.0.10 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-find-and-replace/2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + dependencies: + '@types/mdast': 3.0.10 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 + dev: false + + /mdast-util-from-markdown/1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.1.1 + micromark: 3.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-decode-string: 1.0.2 micromark-util-normalize-identifier: 1.0.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - unist-util-stringify-position: 3.0.2 - uvu: 0.5.3 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 transitivePeerDependencies: - supports-color dev: false - /mdast-util-to-hast/12.1.1: - resolution: {integrity: sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==} + /mdast-util-gfm-autolink-literal/1.0.3: + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + dependencies: + '@types/mdast': 3.0.10 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.1.0 + dev: false + + /mdast-util-gfm-footnote/1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.0.0 + dev: false + + /mdast-util-gfm-strikethrough/1.0.3: + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm-table/1.0.7: + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + dependencies: + '@types/mdast': 3.0.10 + markdown-table: 3.0.3 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item/1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm/2.0.2: + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + dependencies: + mdast-util-from-markdown: 1.3.0 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing/3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.10 + unist-util-is: 5.2.0 + dev: false + + /mdast-util-to-hast/12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.10 - '@types/mdurl': 1.0.2 - mdast-util-definitions: 5.1.0 - mdurl: 1.0.1 - micromark-util-sanitize-uri: 1.0.0 - unist-builder: 3.0.0 - unist-util-generated: 2.0.0 - unist-util-position: 4.0.2 - unist-util-visit: 4.1.0 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.1.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 dev: false - /mdast-util-to-string/3.1.0: - resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + /mdast-util-to-markdown/1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.1.1 + micromark-util-decode-string: 1.0.2 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 dev: false - /mdurl/1.0.1: - resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=} + /mdast-util-to-string/3.1.1: + resolution: {integrity: sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==} + dependencies: + '@types/mdast': 3.0.10 dev: false /micromark-core-commonmark/1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: - decode-named-character-reference: 1.0.1 + decode-named-character-reference: 1.0.2 micromark-factory-destination: 1.0.0 micromark-factory-label: 1.0.2 micromark-factory-space: 1.0.0 @@ -2831,13 +1650,86 @@ packages: micromark-util-character: 1.1.0 micromark-util-chunked: 1.0.0 micromark-util-classify-character: 1.0.0 - micromark-util-html-tag-name: 1.0.0 + micromark-util-html-tag-name: 1.1.0 micromark-util-normalize-identifier: 1.0.0 micromark-util-resolve-all: 1.0.0 micromark-util-subtokenize: 1.0.2 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.3 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-autolink-literal/1.0.3: + resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-footnote/1.0.4: + resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} + dependencies: + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-strikethrough/1.0.4: + resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-table/1.0.5: + resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-tagfilter/1.0.1: + resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-extension-gfm-task-list-item/1.0.3: + resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm/2.0.1: + resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.3 + micromark-extension-gfm-footnote: 1.0.4 + micromark-extension-gfm-strikethrough: 1.0.4 + micromark-extension-gfm-table: 1.0.5 + micromark-extension-gfm-tagfilter: 1.0.1 + micromark-extension-gfm-task-list-item: 1.0.3 + micromark-util-combine-extensions: 1.0.0 + micromark-util-types: 1.0.2 dev: false /micromark-factory-destination/1.0.0: @@ -2854,7 +1746,7 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.3 + uvu: 0.5.6 dev: false /micromark-factory-space/1.0.0: @@ -2871,7 +1763,7 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.3 + uvu: 0.5.6 dev: false /micromark-factory-whitespace/1.0.0: @@ -2920,7 +1812,7 @@ packages: /micromark-util-decode-string/1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} dependencies: - decode-named-character-reference: 1.0.1 + decode-named-character-reference: 1.0.2 micromark-util-character: 1.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-symbol: 1.0.1 @@ -2930,8 +1822,8 @@ packages: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: false - /micromark-util-html-tag-name/1.0.0: - resolution: {integrity: sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==} + /micromark-util-html-tag-name/1.1.0: + resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} dev: false /micromark-util-normalize-identifier/1.0.0: @@ -2946,8 +1838,8 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-util-sanitize-uri/1.0.0: - resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} + /micromark-util-sanitize-uri/1.1.0: + resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} dependencies: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 @@ -2960,7 +1852,7 @@ packages: micromark-util-chunked: 1.0.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.3 + uvu: 0.5.6 dev: false /micromark-util-symbol/1.0.1: @@ -2971,12 +1863,12 @@ packages: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} dev: false - /micromark/3.0.10: - resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} + /micromark/3.1.0: + resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} dependencies: '@types/debug': 4.1.7 debug: 4.3.4 - decode-named-character-reference: 1.0.1 + decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -2986,20 +1878,15 @@ packages: micromark-util-encode: 1.0.1 micromark-util-normalize-identifier: 1.0.0 micromark-util-resolve-all: 1.0.0 - micromark-util-sanitize-uri: 1.0.0 + micromark-util-sanitize-uri: 1.1.0 micromark-util-subtokenize: 1.0.2 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.3 + uvu: 0.5.6 transitivePeerDependencies: - supports-color dev: false - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: false - /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3014,23 +1901,16 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /nanoid/3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false - /node-releases/2.0.2: - resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} /normalize-range/0.1.2: - resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: true @@ -3039,7 +1919,7 @@ packages: engines: {node: '>=0.10.0'} /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true @@ -3055,14 +1935,14 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.16.7 + '@babel/code-frame': 7.18.6 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: false /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true @@ -3083,66 +1963,24 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /popmotion/11.0.3: - resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - dependencies: - framesync: 6.0.1 - hey-listen: 1.0.8 - style-value-types: 5.0.0 - tslib: 2.3.1 - dev: false - /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.12: - resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.1 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss/8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier/2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} engines: {node: '>=10.13.0'} hasBin: true dev: false - /pretty-format/26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 - dev: false - - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -3150,17 +1988,8 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 - /property-information/6.1.1: - resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} - dev: false - - /react-clientside-effect/1.2.6_react@18.2.0: - resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.17.8 - react: 18.2.0 + /property-information/6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} dev: false /react-dom/18.2.0_react@18.2.0: @@ -3173,117 +2002,81 @@ packages: scheduler: 0.23.0 dev: false - /react-fast-compare/3.2.0: - resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} + /react-hook-form/7.43.1_react@18.2.0: + resolution: {integrity: sha512-+s3+s8LLytRMriwwuSqeLStVjRXFGxgjjx2jED7Z+wz1J/88vpxieRQGvJVvzrzVxshZ0BRuocFERb779m2kNg==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + react: 18.2.0 dev: false - /react-focus-lock/2.9.1_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==} + /react-hot-toast/2.4.0_6dztgcaza2bodipt2i5a4is4mu_owo25xnefcwdq3zjgtohz6dbju: + resolution: {integrity: sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==} + engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: '>=16' + react-dom: '>=16' dependencies: - '@babel/runtime': 7.17.8 - '@types/react': 18.0.24 - focus-lock: 0.11.3 - prop-types: 15.8.1 + goober: 2.1.12_csstype@3.1.1 react: 18.2.0 - react-clientside-effect: 1.2.6_react@18.2.0 - use-callback-ref: 1.3.0_bbvjflvjoibwhtpmedigb26h6y - use-sidecar: 1.1.2_bbvjflvjoibwhtpmedigb26h6y + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - csstype dev: false + patched: true /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false - /react-markdown/8.0.1_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-g78B0KtUk8oDRt59fX9SWhMikn3/qYcQW+aVMxdIulcjCNeecAZNOmR8uXy5p4bhbuPIS8gZly81bF4pAQWYXw==} + /react-markdown/8.0.5_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/hast': 2.3.4 - '@types/prop-types': 15.7.4 - '@types/react': 18.0.24 + '@types/prop-types': 15.7.5 + '@types/react': 18.0.28 '@types/unist': 2.0.6 - comma-separated-tokens: 2.0.2 - hast-util-whitespace: 2.0.0 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 2.0.1 prop-types: 15.8.1 - property-information: 6.1.1 + property-information: 6.2.0 react: 18.2.0 - react-is: 17.0.2 + react-is: 18.2.0 remark-parse: 10.0.1 remark-rehype: 10.1.0 - space-separated-tokens: 2.0.1 - style-to-object: 0.3.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.1 unified: 10.1.2 - unist-util-visit: 4.1.0 - vfile: 5.3.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 transitivePeerDependencies: - supports-color dev: false - /react-refresh/0.13.0: - resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} + /react-refresh/0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: false - /react-remove-scroll-bar/2.3.4_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + /react-textarea-autosize/8.3.4_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true dependencies: - '@types/react': 18.0.24 + '@babel/runtime': 7.20.13 react: 18.2.0 - react-style-singleton: 2.2.1_bbvjflvjoibwhtpmedigb26h6y - tslib: 2.3.1 - dev: false - - /react-remove-scroll/2.5.5_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.0.24 - react: 18.2.0 - react-remove-scroll-bar: 2.3.4_bbvjflvjoibwhtpmedigb26h6y - react-style-singleton: 2.2.1_bbvjflvjoibwhtpmedigb26h6y - tslib: 2.3.1 - use-callback-ref: 1.3.0_bbvjflvjoibwhtpmedigb26h6y - use-sidecar: 1.1.2_bbvjflvjoibwhtpmedigb26h6y - dev: false - - /react-style-singleton/2.2.1_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.0.24 - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.2.0 - tslib: 2.3.1 + use-composed-ref: 1.3.0_react@18.2.0 + use-latest: 1.2.1_pmekkgnqduwlme35zpnqhenc34 + transitivePeerDependencies: + - '@types/react' dev: false /react/18.2.0: @@ -3293,22 +2086,26 @@ packages: loose-envify: 1.4.0 dev: false - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false - /regenerator-runtime/0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + /remark-gfm/3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-gfm: 2.0.2 + micromark-extension-gfm: 2.0.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false /remark-parse/10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -3319,7 +2116,7 @@ packages: dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.10 - mdast-util-to-hast: 12.1.1 + mdast-util-to-hast: 12.3.0 unified: 10.1.2 dev: false @@ -3328,11 +2125,11 @@ packages: engines: {node: '>=4'} dev: false - /resolve/1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.8.1 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: false @@ -3341,12 +2138,12 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 dev: true - /rollup/2.75.7: - resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==} - engines: {node: '>=10.0.0'} + /rollup/3.15.0: + resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 @@ -3359,9 +2156,6 @@ packages: mri: 1.2.0 dev: false - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -3388,49 +2182,23 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-resolve/0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - dev: false - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: false - /space-separated-tokens/2.0.1: - resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + /space-separated-tokens/2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: false - - /style-to-object/0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + /style-to-object/0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} dependencies: inline-style-parser: 0.1.1 dev: false - /style-value-types/5.0.0: - resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} - dependencies: - hey-listen: 1.0.8 - tslib: 2.3.1 - dev: false - - /stylis/4.0.13: - resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} + /stylis/4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false /supports-color/5.5.0: @@ -3439,12 +2207,6 @@ packages: dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3454,32 +2216,28 @@ packages: resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} dev: false - /tiny-invariant/1.2.0: - resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} + /tabbable/6.0.1: + resolution: {integrity: sha512-SYJSIgeyXW7EuX1ytdneO5e8jip42oHWg9xl/o3oTYhmXusZVgiA+VlPvjIN+kHii9v90AmzTZEBcsEvuAY+TA==} dev: false /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /toggle-selection/1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + /trim-lines/3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /tslib/1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false - /tslib/2.3.1: - resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: false - - /typescript/4.6.3: - resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: false @@ -3491,145 +2249,148 @@ packages: bail: 2.0.2 extend: 3.0.2 is-buffer: 2.0.5 - is-plain-obj: 4.0.0 + is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.2 + vfile: 5.3.7 dev: false - /unist-builder/3.0.0: - resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} + /unist-util-generated/2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + dev: false + + /unist-util-is/5.2.0: + resolution: {integrity: sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==} + dev: false + + /unist-util-position/4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-generated/2.0.0: - resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} - dev: false - - /unist-util-is/5.1.1: - resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} - dev: false - - /unist-util-position/4.0.2: - resolution: {integrity: sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==} + /unist-util-stringify-position/3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-stringify-position/3.0.2: - resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} + /unist-util-visit-parents/5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: '@types/unist': 2.0.6 + unist-util-is: 5.2.0 dev: false - /unist-util-visit-parents/4.1.1: - resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} + /unist-util-visit/4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 dev: false - /unist-util-visit-parents/5.1.0: - resolution: {integrity: sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - dev: false - - /unist-util-visit/3.1.0: - resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 4.1.1 - dev: false - - /unist-util-visit/4.1.0: - resolution: {integrity: sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.0 - dev: false - - /use-callback-ref/1.3.0_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + + /use-composed-ref/1.3.0_react@18.2.0: + resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /use-isomorphic-layout-effect/1.1.2_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@types/react': 18.0.24 + '@types/react': 18.0.28 react: 18.2.0 - tslib: 2.3.1 dev: false - /use-sidecar/1.1.2_bbvjflvjoibwhtpmedigb26h6y: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} + /use-latest/1.2.1_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@types/react': 18.0.24 - detect-node-es: 1.1.0 + '@types/react': 18.0.28 react: 18.2.0 - tslib: 2.3.1 + use-isomorphic-layout-effect: 1.1.2_pmekkgnqduwlme35zpnqhenc34 dev: false - /uvu/0.5.3: - resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==} + /uvu/0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} hasBin: true dependencies: - dequal: 2.0.2 - diff: 5.0.0 - kleur: 4.1.4 + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 sade: 1.8.1 dev: false - /vfile-message/3.1.2: - resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} + /vfile-message/3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: '@types/unist': 2.0.6 - unist-util-stringify-position: 3.0.2 + unist-util-stringify-position: 3.0.3 dev: false - /vfile/5.3.2: - resolution: {integrity: sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==} + /vfile/5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 dev: false - /vite/2.9.13: - resolution: {integrity: sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==} - engines: {node: '>=12.2.0'} + /vite/4.1.1_@types+node@16.18.12: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: + '@types/node': '>= 14' less: '*' sass: '*' stylus: '*' + sugarss: '*' + terser: ^5.4.0 peerDependenciesMeta: + '@types/node': + optional: true less: optional: true sass: optional: true stylus: optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - esbuild: 0.14.48 - postcss: 8.4.14 - resolve: 1.22.0 - rollup: 2.75.7 + '@types/node': 16.18.12 + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.15.0 optionalDependencies: fsevents: 2.3.2 dev: false @@ -3647,10 +2408,17 @@ packages: dev: true /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false + + /zwitch/2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false diff --git a/web/src/App.tsx b/web/src/App.tsx index da4dbac..bc6e9f4 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -12,8 +12,14 @@ import ListMenu from './features/menu/list'; import Dev from './features/dev'; import { isEnvBrowser } from './utils/misc'; import SkillCheck from './features/skillcheck'; +import RadialMenu from './features/menu/radial'; +import { theme } from './theme'; +import { MantineProvider } from '@mantine/core'; +import { useConfig } from './providers/ConfigProvider'; const App: React.FC = () => { + const { config } = useConfig(); + useNuiEvent('setClipboard', (data: string) => { setClipboard(data); }); @@ -21,7 +27,7 @@ const App: React.FC = () => { fetchNui('init'); return ( - <> + @@ -30,9 +36,10 @@ const App: React.FC = () => { + {isEnvBrowser() && } - + ); }; diff --git a/web/src/features/dev/debug/alert.ts b/web/src/features/dev/debug/alert.ts index 8f98586..2fcb5b8 100644 --- a/web/src/features/dev/debug/alert.ts +++ b/web/src/features/dev/debug/alert.ts @@ -1,5 +1,5 @@ import { debugData } from '../../../utils/debugData'; -import { AlertProps } from '../../dialog/AlertDialog'; +import { AlertProps } from '../../../typings'; export const debugAlert = () => { debugData([ @@ -9,11 +9,13 @@ export const debugAlert = () => { header: 'Hello there', content: 'General kenobi \n Markdown works', centered: true, + size: 'lg', + overflow: true, cancel: true, - labels: { - confirm: 'Ok', - cancel: 'Not ok', - }, + // labels: { + // confirm: 'Ok', + // cancel: 'Not ok', + // }, }, }, ]); diff --git a/web/src/features/dev/debug/context.ts b/web/src/features/dev/debug/context.ts index 0d20746..cfefefb 100644 --- a/web/src/features/dev/debug/context.ts +++ b/web/src/features/dev/debug/context.ts @@ -1,4 +1,4 @@ -import { ContextMenuProps } from '../../../interfaces/context'; +import { ContextMenuProps } from '../../../typings'; import { debugData } from '../../../utils/debugData'; export const debugContext = () => { @@ -9,6 +9,32 @@ export const debugContext = () => { title: 'Vehicle garage', options: [ { title: 'Empty button' }, + { + title: 'Karin Kuruma', + image: 'https://cdn.discordapp.com/attachments/1063098499027173461/1064276343585505330/screenshot.jpg', + arrow: true, + colorScheme: 'blue', + metadata: [ + { + ['label']: 'Body', + ['value']: '55%', + ['progress']: 55, + }, + { + ['label']: 'Engine', + ['value']: '100%', + ['progress']: 100, + }, + { + ['label']: 'Oil', + ['progress']: 11, + }, + { + ['label']: 'Fuel', + ['progress']: 87, + }, + ], + }, { title: 'Example button', description: 'Example button description', @@ -30,7 +56,7 @@ export const debugContext = () => { progress: 80, icon: 'car-side', metadata: [{ label: 'Durability', value: '80%' }], - colorScheme: 'blue' + colorScheme: 'blue', }, { title: 'Menu button', diff --git a/web/src/features/dev/debug/input.ts b/web/src/features/dev/debug/input.ts index 0a23a70..35424c3 100644 --- a/web/src/features/dev/debug/input.ts +++ b/web/src/features/dev/debug/input.ts @@ -1,5 +1,5 @@ import { debugData } from '../../../utils/debugData'; -import { InputProps } from '../../dialog/InputDialog'; +import type { InputProps } from '../../../typings'; export const debugInput = () => { debugData([ @@ -14,6 +14,12 @@ export const debugInput = () => { placeholder: '420', description: 'Description that tells you what this input field does', }, + { + type: 'time', + format: '12', + label: 'Locker Time', + description: 'Description that tells you what this input field does', + }, { type: 'checkbox', label: 'Some checkbox' }, { type: 'input', label: 'Locker PIN', password: true, icon: 'lock' }, { type: 'checkbox', label: 'Some other checkbox', checked: true }, diff --git a/web/src/features/dev/debug/menu.ts b/web/src/features/dev/debug/menu.ts index 1a0a1ec..e583e2d 100644 --- a/web/src/features/dev/debug/menu.ts +++ b/web/src/features/dev/debug/menu.ts @@ -1,5 +1,5 @@ import { debugData } from '../../../utils/debugData'; -import { MenuSettings } from '../../menu/list'; +import { MenuSettings } from '../../../typings'; export const debugMenu = () => { debugData([ @@ -34,7 +34,7 @@ export const debugMenu = () => { icon: 'car-side', description: 'Durability: 80%', colorScheme: 'blue', - iconColor: '#55778d' + iconColor: '#55778d', }, { label: 'Option 1' }, { label: 'Option 2' }, diff --git a/web/src/features/dev/debug/notification.ts b/web/src/features/dev/debug/notification.ts index 704e4f2..6cbef40 100644 --- a/web/src/features/dev/debug/notification.ts +++ b/web/src/features/dev/debug/notification.ts @@ -1,30 +1,47 @@ -import { CustomNotificationProps, NotificationProps } from '../../notifications/NotificationWrapper'; +import { NotificationProps } from '../../../typings'; import { debugData } from '../../../utils/debugData'; -export const debugNotification = () => { +export const debugCustomNotification = () => { debugData([ { action: 'notify', data: { - description: 'Dunak is nerd', - title: 'Dunak', - id: 1, + title: 'Success', + description: 'Notification description', + type: 'success', + id: 'pogchamp', }, }, ]); -}; - -export const debugCustomNotification = () => { - debugData([ + debugData([ { - action: 'customNotify', + action: 'notify', data: { - description: 'Dunak is nerd', - icon: 'basket-shopping', - style: { - backgroundColor: '#2D3748', - color: 'white', - }, + title: 'Success', + description: 'Notification description', + type: 'success', + id: 'pogchamp', + }, + }, + ]); + debugData([ + { + action: 'notify', + data: { + title: 'Error', + description: 'Notification description', + type: 'error', + }, + }, + ]); + debugData([ + { + action: 'notify', + data: { + title: 'Custom icon success', + description: 'Notification description', + type: 'success', + icon: 'microchip', }, }, ]); diff --git a/web/src/features/dev/debug/progress.ts b/web/src/features/dev/debug/progress.ts index 4409bfb..116501d 100644 --- a/web/src/features/dev/debug/progress.ts +++ b/web/src/features/dev/debug/progress.ts @@ -1,5 +1,5 @@ import { debugData } from '../../../utils/debugData'; -import { ProgressbarProps } from '../../progress/Progressbar'; +import { ProgressbarProps } from '../../../typings'; export const debugProgressbar = () => { debugData([ diff --git a/web/src/features/dev/debug/radial.ts b/web/src/features/dev/debug/radial.ts new file mode 100644 index 0000000..48dcd08 --- /dev/null +++ b/web/src/features/dev/debug/radial.ts @@ -0,0 +1,19 @@ +import { debugData } from '../../../utils/debugData'; +import type { MenuItem } from '../../../typings'; + +export const debugRadial = () => { + debugData<{ items: MenuItem[]; sub?: boolean }>([ + { + action: 'openRadialMenu', + data: { + items: [ + { icon: 'palette', label: 'Paint' }, + { icon: 'warehouse', label: 'Garage' }, + { icon: 'palette', label: 'Quite long text' }, + { icon: 'palette', label: 'Paint' }, + { icon: 'warehouse', label: 'Garage' }, + ], + }, + }, + ]); +}; diff --git a/web/src/features/dev/debug/skillcheck.ts b/web/src/features/dev/debug/skillcheck.ts index ad50032..a5bcc5b 100644 --- a/web/src/features/dev/debug/skillcheck.ts +++ b/web/src/features/dev/debug/skillcheck.ts @@ -1,11 +1,14 @@ import { debugData } from '../../../utils/debugData'; -import { GameDifficulty } from '../../skillcheck'; +import { GameDifficulty } from '../../../typings'; export const debugSkillCheck = () => { - debugData([ + debugData<{ difficulty: GameDifficulty | GameDifficulty[]; inputs?: string[] }>([ { action: 'startSkillCheck', - data: ['easy', 'easy', 'hard'], + data: { + difficulty: ['easy', 'easy', 'hard'], + inputs: ['W', 'A', 'S', 'D'], + }, }, ]); }; diff --git a/web/src/features/dev/debug/textui.ts b/web/src/features/dev/debug/textui.ts index de97806..a40c8db 100644 --- a/web/src/features/dev/debug/textui.ts +++ b/web/src/features/dev/debug/textui.ts @@ -1,4 +1,4 @@ -import { TextUiProps } from '../../textui/TextUI'; +import { TextUiProps } from '../../../typings'; import { debugData } from '../../../utils/debugData'; export const debugTextUI = () => { diff --git a/web/src/features/dev/index.tsx b/web/src/features/dev/index.tsx index f75224e..db4b4d7 100644 --- a/web/src/features/dev/index.tsx +++ b/web/src/features/dev/index.tsx @@ -1,91 +1,75 @@ -import { - Button, - Drawer, - DrawerBody, - DrawerContent, - DrawerHeader, - DrawerOverlay, - IconButton, - Tooltip, - VStack, - Divider, - useDisclosure, -} from '@chakra-ui/react'; +import { ActionIcon, Tooltip, Drawer, Stack, Divider, Button } from '@mantine/core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { debugAlert } from './debug/alert'; import { debugContext } from './debug/context'; import { debugInput } from './debug/input'; import { debugMenu } from './debug/menu'; -import { debugCustomNotification, debugNotification } from './debug/notification'; +import { debugCustomNotification } from './debug/notification'; import { debugCircleProgressbar, debugProgressbar } from './debug/progress'; import { debugTextUI } from './debug/textui'; import { debugSkillCheck } from './debug/skillcheck'; +import { useState } from 'react'; +import { debugRadial } from './debug/radial'; const Dev: React.FC = () => { - const { isOpen, onOpen, onClose } = useDisclosure(); + const [opened, setOpened] = useState(false); return ( <> - - } - colorScheme="orange" - size="lg" - aria-label="Dev tools" - onClick={() => onOpen()} - /> + + setOpened(true)} + radius="xl" + variant="filled" + color="orange" + sx={{ position: 'absolute', bottom: 0, right: 0, width: 50, height: 50 }} + size="xl" + mr={50} + mb={50} + > + + - - - - Developer drawer - - - - - - - - - - - - - - - - - - - - - + + setOpened(false)} opened={opened} title="Developer drawer" padding="xl"> + + + + + + + + + + + + + + + + + + ); diff --git a/web/src/features/dialog/AlertDialog.tsx b/web/src/features/dialog/AlertDialog.tsx index 5cf03a6..e92aceb 100644 --- a/web/src/features/dialog/AlertDialog.tsx +++ b/web/src/features/dialog/AlertDialog.tsx @@ -1,83 +1,72 @@ -import { - AlertDialog as Dialog, - AlertDialogBody, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogContent, - AlertDialogOverlay, - useDisclosure, - Button, -} from '@chakra-ui/react'; -import { useRef, useState } from 'react'; +import { Modal, Button, Stack, Group, useMantineTheme } from '@mantine/core'; +import { useState } from 'react'; import ReactMarkdown from 'react-markdown'; import { useNuiEvent } from '../../hooks/useNuiEvent'; import { fetchNui } from '../../utils/fetchNui'; import { useLocales } from '../../providers/LocaleProvider'; - -export interface AlertProps { - header: string; - content: string; - centered?: boolean; - cancel?: boolean; - labels?: { - cancel?: string; - confirm?: string; - }; -} +import remarkGfm from 'remark-gfm'; +import type { AlertProps } from '../../typings'; const AlertDialog: React.FC = () => { const { locale } = useLocales(); - const { isOpen, onOpen, onClose } = useDisclosure(); - const cancelRef = useRef(null); + const theme = useMantineTheme(); + const [opened, setOpened] = useState(false); const [dialogData, setDialogData] = useState({ header: '', content: '', }); const closeAlert = (button: string) => { - onClose(); + setOpened(false); fetchNui('closeAlert', button); }; useNuiEvent('sendAlert', (data: AlertProps) => { setDialogData(data); - onOpen(); + setOpened(true); }); useNuiEvent('closeAlertDialog', () => { - onClose(); + setOpened(false); }); return ( <> - closeAlert('cancel')} + { + setOpened(false); + closeAlert('cancel'); + }} + withCloseButton={false} + overlayOpacity={0.5} + exitTransitionDuration={150} + transition="fade" + title={{dialogData.header}} > - - - - {dialogData.header} - - - {dialogData.content} - - + + {dialogData.content} + {dialogData.cancel && ( - )} - - - - + + + ); }; diff --git a/web/src/features/dialog/InputDialog.tsx b/web/src/features/dialog/InputDialog.tsx index f9cf774..11d9321 100644 --- a/web/src/features/dialog/InputDialog.tsx +++ b/web/src/features/dialog/InputDialog.tsx @@ -1,103 +1,165 @@ -import { Modal, ModalOverlay, ModalContent, ModalFooter, ModalHeader, ModalBody, Button } from '@chakra-ui/react'; +import { Group, Modal, Button, Stack } from '@mantine/core'; import React from 'react'; import { useNuiEvent } from '../../hooks/useNuiEvent'; import { useLocales } from '../../providers/LocaleProvider'; import { fetchNui } from '../../utils/fetchNui'; -import { IInput, ICheckbox, ISelect, INumber, ISlider } from '../../interfaces/dialog'; +import { OptionValue } from '../../typings'; import InputField from './components/fields/input'; import CheckboxField from './components/fields/checkbox'; import SelectField from './components/fields/select'; import NumberField from './components/fields/number'; import SliderField from './components/fields/slider'; +import { useFieldArray, useForm } from 'react-hook-form'; +import ColorField from './components/fields/color'; +import DateField from './components/fields/date'; +import TextareaField from './components/fields/textarea'; +import TimeField from './components/fields/time'; +import type { InputProps } from '../../typings'; -export interface InputProps { - heading: string; - rows: Array; -} +export type FormValues = { + test: { + value: any; + }[]; +}; const InputDialog: React.FC = () => { const [fields, setFields] = React.useState({ heading: '', rows: [{ type: 'input', label: '' }], }); - const [inputData, setInputData] = React.useState>([]); - const [passwordStates, setPasswordStates] = React.useState([]); const [visible, setVisible] = React.useState(false); const { locale } = useLocales(); - const handlePasswordStates = (index: number) => { - setPasswordStates({ - ...passwordStates, - [index]: !passwordStates[index], - }); - }; + const form = useForm<{ test: { value: any }[] }>({}); + const fieldForm = useFieldArray({ + control: form.control, + name: 'test', + }); useNuiEvent('openDialog', (data) => { - setPasswordStates([]); setFields(data); - setInputData([]); setVisible(true); + data.rows.forEach((row, index) => { + fieldForm.insert( + index, + { + value: + row.type !== 'checkbox' + ? row.type === 'date' || row.type === 'date-range' || row.type === 'time' + ? // Set date to current one if default is set to true + row.default === true + ? new Date().getTime() + : Array.isArray(row.default) + ? row.default.map((date) => new Date(date).getTime()) + : row.default && new Date(row.default).getTime() + : row.default + : row.checked, + } || { value: null } + ); + // Backwards compat with new Select data type + if (row.type === 'select' || row.type === 'multi-select') { + row.options = row.options.map((option) => + !option.label ? { ...option, label: option.value } : option + ) as Array; + } + }); }); useNuiEvent('closeInputDialog', () => { setVisible(false); }); - const handleClose = () => { + const handleClose = async () => { setVisible(false); fetchNui('inputData'); + await new Promise((resolve) => setTimeout(resolve, 200)); + form.reset(); + fieldForm.remove(); }; - const handleChange = (value: string | number | boolean, index: number) => { - setInputData((previousData) => { - previousData[index] = value; - return previousData; - }); - }; - - const handleConfirm = () => { + const onSubmit = form.handleSubmit(async (data) => { setVisible(false); - fetchNui('inputData', inputData); - }; + const values: any[] = []; + Object.values(data.test).forEach((obj: { value: any }) => values.push(obj.value)); + console.log(values); + fetchNui('inputData', values); + await new Promise((resolve) => setTimeout(resolve, 200)); + form.reset(); + fieldForm.remove(); + }); return ( <> - - - { - if (e.key === 'Enter' && visible) return handleConfirm(); - }} - > - {fields.heading} - - {fields.rows.map((row: IInput | ICheckbox | ISelect | INumber | ISlider, index) => ( - - {row.type === 'input' && ( - - )} - {row.type === 'checkbox' && } - {row.type === 'select' && } - {row.type === 'number' && } - {row.type === 'slider' && } - - ))} - - - - - - + +
+ + {fieldForm.fields.map((item, index) => { + const row = fields.rows[index]; + return ( + + {row.type === 'input' && ( + + )} + {row.type === 'checkbox' && ( + + )} + {(row.type === 'select' || row.type === 'multi-select') && ( + + )} + {row.type === 'number' && } + {row.type === 'slider' && } + {row.type === 'color' && } + {row.type === 'time' && } + {row.type === 'date' || row.type === 'date-range' ? ( + + ) : null} + {row.type === 'textarea' && ( + + )} + + ); + })} + + + + + +
); diff --git a/web/src/features/dialog/components/InfoTooltip.tsx b/web/src/features/dialog/components/InfoTooltip.tsx deleted file mode 100644 index 967ce1a..0000000 --- a/web/src/features/dialog/components/InfoTooltip.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Box, Tooltip } from '@chakra-ui/react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; - -const InfoTooltip: React.FC<{ description: string }> = ({ description }) => { - return ( - - - - - - ); -}; - -export default InfoTooltip; diff --git a/web/src/features/dialog/components/Label.tsx b/web/src/features/dialog/components/Label.tsx deleted file mode 100644 index 90e0a0a..0000000 --- a/web/src/features/dialog/components/Label.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { HStack, Text } from '@chakra-ui/react'; -import InfoTooltip from './InfoTooltip'; - -const Label: React.FC<{ label: string; description?: string }> = ({ label, description }) => { - return ( - - {label} - {description && } - - ); -}; - -export default Label; diff --git a/web/src/features/dialog/components/fields/checkbox.tsx b/web/src/features/dialog/components/fields/checkbox.tsx index 6c36afc..aadeaf2 100644 --- a/web/src/features/dialog/components/fields/checkbox.tsx +++ b/web/src/features/dialog/components/fields/checkbox.tsx @@ -1,30 +1,22 @@ -import { Box, Checkbox, HStack, Text } from '@chakra-ui/react'; -import { useEffect } from 'react'; -import { ICheckbox } from '../../../../interfaces/dialog'; -import Label from '../Label'; +import { Checkbox } from '@mantine/core'; +import { ICheckbox } from '../../../../typings/dialog'; +import { UseFormRegisterReturn } from 'react-hook-form'; interface Props { row: ICheckbox; index: number; - handleChange: (value: boolean, index: number) => void; + register: UseFormRegisterReturn; } const CheckboxField: React.FC = (props) => { - useEffect(() => { - if (props.row.checked) props.handleChange(props.row.checked, props.index); - }, []); - return ( - <> - - ) => props.handleChange(e.target.checked, props.index)} - defaultChecked={props.row.checked} - > - - - + ); }; diff --git a/web/src/features/dialog/components/fields/color.tsx b/web/src/features/dialog/components/fields/color.tsx new file mode 100644 index 0000000..4579cc8 --- /dev/null +++ b/web/src/features/dialog/components/fields/color.tsx @@ -0,0 +1,40 @@ +import { IColorInput } from '../../../../typings/dialog'; +import { Control, useController } from 'react-hook-form'; +import { FormValues } from '../../InputDialog'; +import { ColorInput } from '@mantine/core'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +interface Props { + row: IColorInput; + index: number; + control: Control; +} + +const ColorField: React.FC = (props) => { + const controller = useController({ + name: `test.${props.index}.value`, + control: props.control, + defaultValue: props.row.default, + rules: { required: props.row.required }, + }); + + return ( + } + /> + ); +}; + +export default ColorField; diff --git a/web/src/features/dialog/components/fields/date.tsx b/web/src/features/dialog/components/fields/date.tsx new file mode 100644 index 0000000..1208b29 --- /dev/null +++ b/web/src/features/dialog/components/fields/date.tsx @@ -0,0 +1,73 @@ +import { IDateInput } from '../../../../typings/dialog'; +import { Control, useController } from 'react-hook-form'; +import { FormValues } from '../../InputDialog'; +import { DatePicker, DateRangePicker, TimeInput } from '@mantine/dates'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +interface Props { + row: IDateInput; + index: number; + control: Control; +} + +const DateField: React.FC = (props) => { + const controller = useController({ + name: `test.${props.index}.value`, + control: props.control, + rules: { required: props.row.required }, + }); + + return ( + <> + {props.row.type === 'date' && ( + controller.field.onChange(date ? date.getTime() : null)} + label={props.row.label} + description={props.row.description} + placeholder={props.row.format} + disabled={props.row.disabled} + inputFormat={props.row.format} + withAsterisk={props.row.required} + clearable={props.row.clearable} + icon={props.row.icon && } + minDate={props.row.min ? new Date(props.row.min) : undefined} + maxDate={props.row.max ? new Date(props.row.max) : undefined} + /> + )} + {props.row.type === 'date-range' && ( + new Date(date)) + : controller.field.value + : controller.field.value + } + name={controller.field.name} + ref={controller.field.ref} + onBlur={controller.field.onBlur} + onChange={(dates) => + controller.field.onChange(dates.map((date: Date | null) => (date ? date.getTime() : null))) + } + label={props.row.label} + description={props.row.description} + placeholder={props.row.format} + disabled={props.row.disabled} + inputFormat={props.row.format} + withAsterisk={props.row.required} + clearable={props.row.clearable} + icon={props.row.icon && } + minDate={props.row.min ? new Date(props.row.min) : undefined} + maxDate={props.row.max ? new Date(props.row.max) : undefined} + /> + )} + + ); +}; + +export default DateField; diff --git a/web/src/features/dialog/components/fields/input.tsx b/web/src/features/dialog/components/fields/input.tsx index 0535e0f..bcf4678 100644 --- a/web/src/features/dialog/components/fields/input.tsx +++ b/web/src/features/dialog/components/fields/input.tsx @@ -1,53 +1,58 @@ -import { Box, InputGroup, InputLeftElement, InputRightElement, Input } from '@chakra-ui/react'; +import { createStyles, PasswordInput, TextInput } from '@mantine/core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { useEffect } from 'react'; -import { IInput } from '../../../../interfaces/dialog'; -import Label from '../Label'; +import React from 'react'; +import { IInput } from '../../../../typings/dialog'; +import { UseFormRegisterReturn } from 'react-hook-form'; interface Props { + register: UseFormRegisterReturn; row: IInput; index: number; - handleChange: (value: string, index: number) => void; - passwordStates: boolean[]; - handlePasswordStates: (index: number) => void; } +const useStyles = createStyles((theme) => ({ + eyeIcon: { + color: theme.colors.dark[2], + }, +})); + const InputField: React.FC = (props) => { - useEffect(() => { - if (props.row.default) props.handleChange(props.row.default, props.index); - }, []); + const { classes } = useStyles(); return ( <> - - + /> + )} ); }; diff --git a/web/src/features/dialog/components/fields/number.tsx b/web/src/features/dialog/components/fields/number.tsx index 4a82969..6ea06d2 100644 --- a/web/src/features/dialog/components/fields/number.tsx +++ b/web/src/features/dialog/components/fields/number.tsx @@ -1,52 +1,39 @@ -import { - Box, - NumberInput, - NumberInputField, - NumberInputStepper, - NumberIncrementStepper, - NumberDecrementStepper, - InputLeftElement, - InputGroup, -} from '@chakra-ui/react'; -import { useEffect } from 'react'; -import { INumber } from '../../../../interfaces/dialog'; +import { NumberInput } from '@mantine/core'; +import { INumber } from '../../../../typings/dialog'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import Label from '../Label'; +import { Control, useController } from 'react-hook-form'; +import { FormValues } from '../../InputDialog'; interface Props { row: INumber; index: number; - handleChange: (value: number, index: number) => void; + control: Control; } const NumberField: React.FC = (props) => { - useEffect(() => { - if (props.row.default) props.handleChange(props.row.default, props.index); - }, []); + const controller = useController({ + name: `test.${props.index}.value`, + control: props.control, + defaultValue: props.row.default, + rules: { required: props.row.required }, + }); return ( - - + } + withAsterisk={props.row.required} + /> ); }; diff --git a/web/src/features/dialog/components/fields/select.tsx b/web/src/features/dialog/components/fields/select.tsx index 28b7dea..9ba1af6 100644 --- a/web/src/features/dialog/components/fields/select.tsx +++ b/web/src/features/dialog/components/fields/select.tsx @@ -1,45 +1,60 @@ -import { Box, Select } from '@chakra-ui/react'; -import { useEffect } from 'react'; -import { ISelect } from '../../../../interfaces/dialog'; +import { MultiSelect, Select } from '@mantine/core'; +import { ISelect } from '../../../../typings/dialog'; +import { Control, useController } from 'react-hook-form'; +import { FormValues } from '../../InputDialog'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; interface Props { row: ISelect; index: number; - handleChange: (value: string, index: number) => void; + control: Control; } const SelectField: React.FC = (props) => { - useEffect(() => { - if (props.row.default) { - props.row.options?.map((option) => { - if (props.row.default === option.value) { - props.handleChange(option.value, props.index); - } - }); - } - }, []); + const controller = useController({ + name: `test.${props.index}.value`, + control: props.control, + defaultValue: props.row.default || props.row.type !== 'multi-select' ? props.row.options[0].value : undefined, + rules: { required: props.row.required }, + }); return ( <> - + {props.row.type === 'select' ? ( - + + )} ); }; diff --git a/web/src/features/dialog/components/fields/slider.tsx b/web/src/features/dialog/components/fields/slider.tsx index 479c4da..183a9f9 100644 --- a/web/src/features/dialog/components/fields/slider.tsx +++ b/web/src/features/dialog/components/fields/slider.tsx @@ -1,47 +1,42 @@ -import { Box, Text, Slider, SliderTrack, SliderFilledTrack, SliderThumb, HStack, Tooltip } from '@chakra-ui/react'; -import { useEffect, useState } from 'react'; -import { ISlider } from '../../../../interfaces/dialog'; -import Label from '../Label'; +import { Box, Slider, Text } from '@mantine/core'; +import { ISlider } from '../../../../typings/dialog'; +import { Control, useController } from 'react-hook-form'; +import { FormValues } from '../../InputDialog'; interface Props { row: ISlider; index: number; - handleChange: (value: number, index: number) => void; + control: Control; } const SliderField: React.FC = (props) => { - useEffect(() => { - if (props.row.default || props.row.min) props.handleChange(props.row.default || props.row.min!, props.index); - }, []); - - const [sliderValue, setSliderValue] = useState(props.row.default || props.row.min || 0); + const controller = useController({ + name: `test.${props.index}.value`, + control: props.control, + defaultValue: props.row.default || props.row.min || 0, + }); return ( - <> - - - + + {props.row.label} + + ); }; diff --git a/web/src/features/dialog/components/fields/textarea.tsx b/web/src/features/dialog/components/fields/textarea.tsx new file mode 100644 index 0000000..2fbbd3b --- /dev/null +++ b/web/src/features/dialog/components/fields/textarea.tsx @@ -0,0 +1,31 @@ +import { Textarea } from '@mantine/core'; +import { UseFormRegisterReturn } from 'react-hook-form'; +import { ITextarea } from '../../../../typings/dialog'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import React from 'react'; + +interface Props { + register: UseFormRegisterReturn; + row: ITextarea; + index: number; +} + +const TextareaField: React.FC = (props) => { + return ( +