⚡ (embedBubble) Enable variable embed height
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import { VariablesButton } from '@/features/variables'
|
||||
import {
|
||||
NumberInputProps,
|
||||
NumberInput,
|
||||
@ -5,49 +6,80 @@ import {
|
||||
NumberInputStepper,
|
||||
NumberIncrementStepper,
|
||||
NumberDecrementStepper,
|
||||
HStack,
|
||||
FormControl,
|
||||
FormLabel,
|
||||
} from '@chakra-ui/react'
|
||||
import { Variable, VariableString } from 'models'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useDebouncedCallback } from 'use-debounce'
|
||||
import { env } from 'utils'
|
||||
import { MoreInfoTooltip } from '../MoreInfoTooltip'
|
||||
|
||||
type Props = {
|
||||
value?: number
|
||||
type Value<HasVariable> = HasVariable extends undefined | true
|
||||
? number | VariableString
|
||||
: number
|
||||
|
||||
type Props<HasVariable extends boolean> = {
|
||||
defaultValue?: Value<HasVariable>
|
||||
debounceTimeout?: number
|
||||
withVariableButton?: boolean
|
||||
onValueChange: (value?: number) => void
|
||||
} & NumberInputProps
|
||||
withVariableButton?: HasVariable
|
||||
label?: string
|
||||
moreInfoTooltip?: string
|
||||
isRequired?: boolean
|
||||
onValueChange: (value?: Value<HasVariable>) => void
|
||||
} & Omit<NumberInputProps, 'defaultValue' | 'value' | 'onChange' | 'isRequired'>
|
||||
|
||||
export const SmartNumberInput = ({
|
||||
value,
|
||||
export const SmartNumberInput = <HasVariable extends boolean>({
|
||||
defaultValue,
|
||||
onValueChange,
|
||||
withVariableButton,
|
||||
debounceTimeout = 1000,
|
||||
label,
|
||||
moreInfoTooltip,
|
||||
isRequired,
|
||||
...props
|
||||
}: Props) => {
|
||||
const [currentValue, setCurrentValue] = useState(value?.toString() ?? '')
|
||||
const debounced = useDebouncedCallback(
|
||||
}: Props<HasVariable>) => {
|
||||
const [value, setValue] = useState(defaultValue?.toString() ?? '')
|
||||
|
||||
const onValueChangeDebounced = useDebouncedCallback(
|
||||
onValueChange,
|
||||
env('E2E_TEST') === 'true' ? 0 : debounceTimeout
|
||||
)
|
||||
|
||||
useEffect(
|
||||
() => () => {
|
||||
debounced.flush()
|
||||
onValueChangeDebounced.flush()
|
||||
},
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[]
|
||||
[onValueChangeDebounced]
|
||||
)
|
||||
|
||||
const handleValueChange = (value: string) => {
|
||||
setCurrentValue(value)
|
||||
setValue(value)
|
||||
if (value.endsWith('.') || value.endsWith(',')) return
|
||||
if (value === '') return debounced(undefined)
|
||||
if (value === '') return onValueChangeDebounced(undefined)
|
||||
if (
|
||||
value.startsWith('{{') &&
|
||||
value.endsWith('}}') &&
|
||||
value.length > 4 &&
|
||||
(withVariableButton ?? true)
|
||||
) {
|
||||
onValueChangeDebounced(value as Value<HasVariable>)
|
||||
return
|
||||
}
|
||||
const newValue = parseFloat(value)
|
||||
if (isNaN(newValue)) return
|
||||
debounced(newValue)
|
||||
onValueChangeDebounced(newValue)
|
||||
}
|
||||
|
||||
return (
|
||||
<NumberInput onChange={handleValueChange} value={currentValue} {...props}>
|
||||
const handleVariableSelected = (variable?: Variable) => {
|
||||
if (!variable) return
|
||||
const newValue = `{{${variable.name}}}`
|
||||
handleValueChange(newValue)
|
||||
}
|
||||
|
||||
const Input = (
|
||||
<NumberInput onChange={handleValueChange} value={value} {...props}>
|
||||
<NumberInputField placeholder={props.placeholder} />
|
||||
<NumberInputStepper>
|
||||
<NumberIncrementStepper />
|
||||
@ -55,4 +87,29 @@ export const SmartNumberInput = ({
|
||||
</NumberInputStepper>
|
||||
</NumberInput>
|
||||
)
|
||||
|
||||
return (
|
||||
<FormControl
|
||||
as={HStack}
|
||||
isRequired={isRequired}
|
||||
justifyContent="space-between"
|
||||
>
|
||||
{label && (
|
||||
<FormLabel mb="0" flexShrink={0}>
|
||||
{label}{' '}
|
||||
{moreInfoTooltip && (
|
||||
<MoreInfoTooltip>{moreInfoTooltip}</MoreInfoTooltip>
|
||||
)}
|
||||
</FormLabel>
|
||||
)}
|
||||
{withVariableButton ?? true ? (
|
||||
<HStack spacing={0}>
|
||||
{Input}
|
||||
<VariablesButton onSelectVariable={handleVariableSelected} />
|
||||
</HStack>
|
||||
) : (
|
||||
Input
|
||||
)}
|
||||
</FormControl>
|
||||
)
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ export const EmbedUploadContent = ({ content, onSubmit }: Props) => {
|
||||
onSubmit({ ...content, url: iframeUrl })
|
||||
}
|
||||
|
||||
const handleHeightChange = (height?: number) =>
|
||||
const handleHeightChange = (height?: EmbedBubbleContent['height']) =>
|
||||
height && onSubmit({ ...content, height })
|
||||
|
||||
return (
|
||||
@ -32,12 +32,13 @@ export const EmbedUploadContent = ({ content, onSubmit }: Props) => {
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<HStack justify="space-between">
|
||||
<Text>Height: </Text>
|
||||
<HStack>
|
||||
<SmartNumberInput
|
||||
value={content?.height}
|
||||
label="Height:"
|
||||
defaultValue={content?.height}
|
||||
onValueChange={handleHeightChange}
|
||||
/>
|
||||
<Text>px</Text>
|
||||
</HStack>
|
||||
</Stack>
|
||||
)
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { FormLabel, Stack } from '@chakra-ui/react'
|
||||
import { FormLabel, HStack, Stack, Text } from '@chakra-ui/react'
|
||||
import { CodeEditor } from '@/components/CodeEditor'
|
||||
import { FileInputOptions, Variable } from 'models'
|
||||
import React from 'react'
|
||||
@ -48,16 +48,16 @@ export const FileInputSettings = ({ options, onOptionsChange }: Props) => {
|
||||
initialValue={options.isMultipleAllowed}
|
||||
onCheckChange={handleMultipleFilesChange}
|
||||
/>
|
||||
<Stack>
|
||||
<FormLabel mb="0" htmlFor="limit">
|
||||
Size limit (MB):
|
||||
</FormLabel>
|
||||
<HStack>
|
||||
<SmartNumberInput
|
||||
id="limit"
|
||||
value={options.sizeLimit ?? 10}
|
||||
label={'Size limit:'}
|
||||
defaultValue={options.sizeLimit ?? 10}
|
||||
onValueChange={handleSizeLimitChange}
|
||||
withVariableButton={false}
|
||||
/>
|
||||
</Stack>
|
||||
<Text>MB</Text>
|
||||
</HStack>
|
||||
|
||||
<Stack>
|
||||
<FormLabel mb="0">Placeholder:</FormLabel>
|
||||
<CodeEditor
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Input, SmartNumberInput } from '@/components/inputs'
|
||||
import { VariableSearchInput } from '@/components/VariableSearchInput'
|
||||
import { removeUndefinedFields } from '@/utils/helpers'
|
||||
import { FormLabel, HStack, Stack } from '@chakra-ui/react'
|
||||
import { FormLabel, Stack } from '@chakra-ui/react'
|
||||
import { NumberInputOptions, Variable } from 'models'
|
||||
import React from 'react'
|
||||
|
||||
@ -50,36 +50,24 @@ export const NumberInputSettingsBody = ({
|
||||
onChange={handleButtonLabelChange}
|
||||
/>
|
||||
</Stack>
|
||||
<HStack justifyContent="space-between">
|
||||
<FormLabel mb="0" htmlFor="min">
|
||||
Min:
|
||||
</FormLabel>
|
||||
<SmartNumberInput
|
||||
id="min"
|
||||
value={options.min}
|
||||
onValueChange={handleMinChange}
|
||||
/>
|
||||
</HStack>
|
||||
<HStack justifyContent="space-between">
|
||||
<FormLabel mb="0" htmlFor="max">
|
||||
Max:
|
||||
</FormLabel>
|
||||
<SmartNumberInput
|
||||
id="max"
|
||||
value={options.max}
|
||||
onValueChange={handleMaxChange}
|
||||
/>
|
||||
</HStack>
|
||||
<HStack justifyContent="space-between">
|
||||
<FormLabel mb="0" htmlFor="step">
|
||||
Step:
|
||||
</FormLabel>
|
||||
<SmartNumberInput
|
||||
id="step"
|
||||
value={options.step}
|
||||
onValueChange={handleBlockChange}
|
||||
/>
|
||||
</HStack>
|
||||
<SmartNumberInput
|
||||
label="Min:"
|
||||
defaultValue={options.min}
|
||||
onValueChange={handleMinChange}
|
||||
withVariableButton={false}
|
||||
/>
|
||||
<SmartNumberInput
|
||||
label="Max:"
|
||||
defaultValue={options.max}
|
||||
onValueChange={handleMaxChange}
|
||||
withVariableButton={false}
|
||||
/>
|
||||
<SmartNumberInput
|
||||
label="Step:"
|
||||
defaultValue={options.step}
|
||||
onValueChange={handleBlockChange}
|
||||
withVariableButton={false}
|
||||
/>
|
||||
<Stack>
|
||||
<FormLabel mb="0" htmlFor="variable">
|
||||
Save answer in a variable:
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Input, SmartNumberInput } from '@/components/inputs'
|
||||
import { SwitchWithLabel } from '@/components/SwitchWithLabel'
|
||||
import { FormControl, FormLabel, HStack, Stack } from '@chakra-ui/react'
|
||||
import { Stack } from '@chakra-ui/react'
|
||||
import { isDefined } from '@udecode/plate-common'
|
||||
import { SmtpCredentialsData } from 'models'
|
||||
import React from 'react'
|
||||
@ -73,14 +73,14 @@ export const SmtpConfigForm = ({ config, onConfigChange }: Props) => {
|
||||
onCheckChange={handleTlsCheck}
|
||||
moreInfoContent="If enabled, the connection will use TLS when connecting to server. If disabled then TLS is used if server supports the STARTTLS extension. In most cases enable it if you are connecting to port 465. For port 587 or 25 keep it disabled."
|
||||
/>
|
||||
<FormControl as={HStack} justifyContent="space-between" isRequired>
|
||||
<FormLabel mb="0">Port number:</FormLabel>
|
||||
<SmartNumberInput
|
||||
placeholder="25"
|
||||
value={config.port}
|
||||
onValueChange={handlePortNumberChange}
|
||||
/>
|
||||
</FormControl>
|
||||
<SmartNumberInput
|
||||
isRequired
|
||||
label="Port number:"
|
||||
placeholder="25"
|
||||
defaultValue={config.port}
|
||||
onValueChange={handlePortNumberChange}
|
||||
withVariableButton={false}
|
||||
/>
|
||||
</Stack>
|
||||
)
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ test('should be configurable', async ({ page }) => {
|
||||
await page.waitForTimeout(1000)
|
||||
await page.click('input[value="My link typebot 2"]', { clickCount: 3 })
|
||||
await page.press('input[value="My link typebot 2"]', 'Backspace')
|
||||
await page.click('button >> text=My link typebot 1')
|
||||
await page.click('button >> text=Current typebot')
|
||||
await page.click('input[placeholder="Select a block"]', {
|
||||
clickCount: 3,
|
||||
})
|
||||
|
@ -36,32 +36,24 @@ export const TypingEmulationForm = ({ typingEmulation, onUpdate }: Props) => {
|
||||
</Flex>
|
||||
{typingEmulation.enabled && (
|
||||
<Stack pl={10}>
|
||||
<Flex justify="space-between" align="center">
|
||||
<FormLabel htmlFor="speed" mb="0">
|
||||
Words per minutes:
|
||||
</FormLabel>
|
||||
<SmartNumberInput
|
||||
id="speed"
|
||||
data-testid="speed"
|
||||
value={typingEmulation.speed}
|
||||
onValueChange={handleSpeedChange}
|
||||
maxW="100px"
|
||||
step={30}
|
||||
/>
|
||||
</Flex>
|
||||
<Flex justify="space-between" align="center">
|
||||
<FormLabel htmlFor="max-delay" mb="0">
|
||||
Max delay (in seconds):
|
||||
</FormLabel>
|
||||
<SmartNumberInput
|
||||
id="max-delay"
|
||||
data-testid="max-delay"
|
||||
value={typingEmulation.maxDelay}
|
||||
onValueChange={handleMaxDelayChange}
|
||||
maxW="100px"
|
||||
step={0.1}
|
||||
/>
|
||||
</Flex>
|
||||
<SmartNumberInput
|
||||
label="Words per minutes:"
|
||||
data-testid="speed"
|
||||
defaultValue={typingEmulation.speed}
|
||||
onValueChange={handleSpeedChange}
|
||||
withVariableButton={false}
|
||||
maxW="100px"
|
||||
step={30}
|
||||
/>
|
||||
<SmartNumberInput
|
||||
label="Max delay (in seconds):"
|
||||
data-testid="max-delay"
|
||||
defaultValue={typingEmulation.maxDelay}
|
||||
onValueChange={handleMaxDelayChange}
|
||||
withVariableButton={false}
|
||||
maxW="100px"
|
||||
step={0.1}
|
||||
/>
|
||||
</Stack>
|
||||
)}
|
||||
</Stack>
|
||||
|
@ -1,5 +1,7 @@
|
||||
import { deepParseVariable } from '@/features/variables'
|
||||
import {
|
||||
BubbleBlock,
|
||||
BubbleBlockType,
|
||||
ChatReply,
|
||||
Group,
|
||||
InputBlock,
|
||||
@ -38,7 +40,7 @@ export const executeGroup =
|
||||
|
||||
if (isBubbleBlock(block)) {
|
||||
messages.push(
|
||||
deepParseVariable(newSessionState.typebot.variables)(block)
|
||||
parseBubbleBlock(newSessionState.typebot.variables)(block)
|
||||
)
|
||||
lastBubbleBlockId = block.id
|
||||
continue
|
||||
@ -126,3 +128,25 @@ const getPrefilledInputValue =
|
||||
)?.value ?? undefined
|
||||
)
|
||||
}
|
||||
|
||||
const parseBubbleBlock =
|
||||
(variables: SessionState['typebot']['variables']) =>
|
||||
(block: BubbleBlock): ChatReply['messages'][0] => {
|
||||
switch (block.type) {
|
||||
case BubbleBlockType.EMBED: {
|
||||
const message = deepParseVariable(variables)(block)
|
||||
return {
|
||||
...message,
|
||||
content: {
|
||||
...message.content,
|
||||
height:
|
||||
typeof message.content.height === 'string'
|
||||
? parseFloat(message.content.height)
|
||||
: message.content.height,
|
||||
},
|
||||
}
|
||||
}
|
||||
default:
|
||||
return deepParseVariable(variables)(block)
|
||||
}
|
||||
}
|
||||
|
@ -26,12 +26,12 @@
|
||||
"cross-env": "7.0.3",
|
||||
"cz-emoji": "1.3.2-canary.2",
|
||||
"husky": "^8.0.3",
|
||||
"turbo": "1.7.4"
|
||||
"turbo": "1.8.1"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "node_modules/cz-emoji"
|
||||
}
|
||||
},
|
||||
"packageManager": "pnpm@7.25.1"
|
||||
"packageManager": "pnpm@7.27.1"
|
||||
}
|
||||
|
@ -36,6 +36,12 @@ export const EmbedBubble = ({ block, onTransitionEnd }: Props) => {
|
||||
}
|
||||
}, [isLoading, isTyping, onTypingEnd])
|
||||
|
||||
const height = block.content.height
|
||||
? typeof block.content.height === 'string'
|
||||
? parseVariables(typebot.variables)(block.content.height) + 'px'
|
||||
: block.content.height
|
||||
: '2rem'
|
||||
|
||||
return (
|
||||
<div className="flex flex-col w-full" ref={messageContainer}>
|
||||
<div className="flex mb-2 w-full lg:w-11/12 items-center">
|
||||
@ -61,7 +67,7 @@ export const EmbedBubble = ({ block, onTransitionEnd }: Props) => {
|
||||
(isTyping ? 'opacity-0' : 'opacity-100')
|
||||
}
|
||||
style={{
|
||||
height: isTyping ? '2rem' : block.content.height,
|
||||
height: isTyping ? '2rem' : height,
|
||||
borderRadius: '15px',
|
||||
}}
|
||||
/>
|
||||
|
@ -1,10 +1,11 @@
|
||||
import { z } from 'zod'
|
||||
import { variableStringSchema } from '../../utils'
|
||||
import { blockBaseSchema } from '../baseSchemas'
|
||||
import { BubbleBlockType } from './enums'
|
||||
|
||||
export const embedBubbleContentSchema = z.object({
|
||||
url: z.string().optional(),
|
||||
height: z.number(),
|
||||
height: z.number().or(variableStringSchema),
|
||||
})
|
||||
|
||||
export const embedBubbleBlockSchema = blockBaseSchema.and(
|
||||
|
@ -84,7 +84,11 @@ const audioMessageSchema = z.object({
|
||||
|
||||
const embedMessageSchema = z.object({
|
||||
type: z.enum([BubbleBlockType.EMBED]),
|
||||
content: embedBubbleContentSchema,
|
||||
content: embedBubbleContentSchema
|
||||
.omit({
|
||||
height: true,
|
||||
})
|
||||
.and(z.object({ height: z.number().optional() })),
|
||||
})
|
||||
|
||||
const chatMessageSchema = z
|
||||
|
@ -7,3 +7,9 @@ export const schemaForType =
|
||||
<S extends z.ZodType<T, any, any>>(arg: S) => {
|
||||
return arg
|
||||
}
|
||||
|
||||
export const variableStringSchema = z.custom<`{{${string}}}`>((val) =>
|
||||
/^{{.+}}$/g.test(val as string)
|
||||
)
|
||||
|
||||
export type VariableString = z.infer<typeof variableStringSchema>
|
||||
|
139
pnpm-lock.yaml
generated
139
pnpm-lock.yaml
generated
@ -7,12 +7,12 @@ importers:
|
||||
cross-env: 7.0.3
|
||||
cz-emoji: 1.3.2-canary.2
|
||||
husky: ^8.0.3
|
||||
turbo: 1.7.4
|
||||
turbo: 1.8.1
|
||||
devDependencies:
|
||||
cross-env: 7.0.3
|
||||
cz-emoji: 1.3.2-canary.2
|
||||
husky: 8.0.3
|
||||
turbo: 1.7.4
|
||||
turbo: 1.8.1
|
||||
|
||||
apps/builder:
|
||||
specifiers:
|
||||
@ -570,12 +570,12 @@ importers:
|
||||
eslint-plugin-react: 7.32.1
|
||||
dependencies:
|
||||
eslint: 8.32.0
|
||||
eslint-config-next: 13.1.6_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
eslint-config-next: 13.1.6_7uibuqfxkfaozanbtbziikiqje
|
||||
eslint-config-prettier: 8.6.0_eslint@8.32.0
|
||||
eslint-plugin-react: 7.32.1_eslint@8.32.0
|
||||
devDependencies:
|
||||
'@typescript-eslint/eslint-plugin': 5.50.0_insdzuwemx2bpvgu2m32dsrzvm
|
||||
'@typescript-eslint/parser': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/eslint-plugin': 5.50.0_skqhap4rvjneq2n5v2vocxqt74
|
||||
'@typescript-eslint/parser': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
|
||||
packages/js:
|
||||
specifiers:
|
||||
@ -7183,7 +7183,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/yargs-parser': 21.0.0
|
||||
|
||||
/@typescript-eslint/eslint-plugin/5.50.0_insdzuwemx2bpvgu2m32dsrzvm:
|
||||
/@typescript-eslint/eslint-plugin/5.50.0_skqhap4rvjneq2n5v2vocxqt74:
|
||||
resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -7194,10 +7194,10 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/parser': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/scope-manager': 5.50.0
|
||||
'@typescript-eslint/type-utils': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/utils': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/type-utils': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
'@typescript-eslint/utils': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
grapheme-splitter: 1.0.4
|
||||
@ -7205,13 +7205,13 @@ packages:
|
||||
natural-compare-lite: 1.4.0
|
||||
regexpp: 3.2.0
|
||||
semver: 7.3.8
|
||||
tsutils: 3.21.0_typescript@4.9.5
|
||||
typescript: 4.9.5
|
||||
tsutils: 3.21.0_typescript@4.9.4
|
||||
typescript: 4.9.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/parser/5.50.0_et5x32uxl7z5ldub3ye5rhlyqm:
|
||||
/@typescript-eslint/parser/5.50.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -7223,10 +7223,10 @@ packages:
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 5.50.0
|
||||
'@typescript-eslint/types': 5.50.0
|
||||
'@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5
|
||||
'@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.4
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
typescript: 4.9.5
|
||||
typescript: 4.9.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@ -7237,7 +7237,7 @@ packages:
|
||||
'@typescript-eslint/types': 5.50.0
|
||||
'@typescript-eslint/visitor-keys': 5.50.0
|
||||
|
||||
/@typescript-eslint/type-utils/5.50.0_et5x32uxl7z5ldub3ye5rhlyqm:
|
||||
/@typescript-eslint/type-utils/5.50.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@ -7247,12 +7247,12 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5
|
||||
'@typescript-eslint/utils': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.4
|
||||
'@typescript-eslint/utils': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 4.3.4
|
||||
eslint: 8.32.0
|
||||
tsutils: 3.21.0_typescript@4.9.5
|
||||
typescript: 4.9.5
|
||||
tsutils: 3.21.0_typescript@4.9.4
|
||||
typescript: 4.9.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@ -7280,27 +7280,6 @@ packages:
|
||||
typescript: 4.9.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree/5.50.0_typescript@4.9.5:
|
||||
resolution: {integrity: sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.50.0
|
||||
'@typescript-eslint/visitor-keys': 5.50.0
|
||||
debug: 4.3.4
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
semver: 7.3.8
|
||||
tsutils: 3.21.0_typescript@4.9.5
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@typescript-eslint/utils/5.50.0_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==}
|
||||
@ -7322,26 +7301,6 @@ packages:
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/utils/5.50.0_et5x32uxl7z5ldub3ye5rhlyqm:
|
||||
resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.11
|
||||
'@types/semver': 7.3.13
|
||||
'@typescript-eslint/scope-manager': 5.50.0
|
||||
'@typescript-eslint/types': 5.50.0
|
||||
'@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5
|
||||
eslint: 8.32.0
|
||||
eslint-scope: 5.1.1
|
||||
eslint-utils: 3.0.0_eslint@8.32.0
|
||||
semver: 7.3.8
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/visitor-keys/5.50.0:
|
||||
resolution: {integrity: sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@ -10983,7 +10942,7 @@ packages:
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
/eslint-config-next/13.1.6_et5x32uxl7z5ldub3ye5rhlyqm:
|
||||
/eslint-config-next/13.1.6_7uibuqfxkfaozanbtbziikiqje:
|
||||
resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==}
|
||||
peerDependencies:
|
||||
eslint: ^7.23.0 || ^8.0.0
|
||||
@ -10994,7 +10953,7 @@ packages:
|
||||
dependencies:
|
||||
'@next/eslint-plugin-next': 13.1.6
|
||||
'@rushstack/eslint-patch': 1.2.0
|
||||
'@typescript-eslint/parser': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/parser': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
eslint: 8.32.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-import-resolver-typescript: 3.5.3_ps7hf4l2dvbuxvtusmrfhmzsba
|
||||
@ -11002,7 +10961,7 @@ packages:
|
||||
eslint-plugin-jsx-a11y: 6.7.1_eslint@8.32.0
|
||||
eslint-plugin-react: 7.32.1_eslint@8.32.0
|
||||
eslint-plugin-react-hooks: 4.6.0_eslint@8.32.0
|
||||
typescript: 4.9.5
|
||||
typescript: 4.9.4
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
@ -11068,7 +11027,7 @@ packages:
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/parser': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
debug: 3.2.7
|
||||
eslint: 8.32.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
@ -11086,7 +11045,7 @@ packages:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.50.0_et5x32uxl7z5ldub3ye5rhlyqm
|
||||
'@typescript-eslint/parser': 5.50.0_7uibuqfxkfaozanbtbziikiqje
|
||||
array-includes: 3.1.6
|
||||
array.prototype.flat: 1.3.1
|
||||
array.prototype.flatmap: 1.3.1
|
||||
@ -19268,16 +19227,6 @@ packages:
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
typescript: 4.9.4
|
||||
dev: true
|
||||
|
||||
/tsutils/3.21.0_typescript@4.9.5:
|
||||
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
|
||||
engines: {node: '>= 6'}
|
||||
peerDependencies:
|
||||
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
typescript: 4.9.5
|
||||
|
||||
/tsx/3.12.2:
|
||||
resolution: {integrity: sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ==}
|
||||
@ -19290,65 +19239,65 @@ packages:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/turbo-darwin-64/1.7.4:
|
||||
resolution: {integrity: sha512-ZyYrQlUl8K/mYN1e6R7bEhPPYjMakz0DYMaexkyD7TAijQtWmTSd4a+I7VknOYNEssnUZ/v41GU3gPV1JAzxxQ==}
|
||||
/turbo-darwin-64/1.8.1:
|
||||
resolution: {integrity: sha512-H7pxGF/vsYG7kbY+vB8h+3r8VXn2L6hhYQi0XWA+EjZ1e2zu7+TzEMRWFYmvJPx8TRo5cV5txtg0I22/Y7bxUA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo-darwin-arm64/1.7.4:
|
||||
resolution: {integrity: sha512-CKIXg9uqp1a+Yeq/c4U0alPOqvwLUq5SBZf1PGYhGqJsfG0fRBtJfkUjHuBsuJIOGXg8rCmcGSWGIsIF6fqYuw==}
|
||||
/turbo-darwin-arm64/1.8.1:
|
||||
resolution: {integrity: sha512-zMcvplVGluR6v4oJXW7S1/R9QFsHdDkXMhPq8PIdvT3HwTb69ms0MNv7aKiQ0ZFy5D/eKCTyBRUFZvjorZmBqA==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo-linux-64/1.7.4:
|
||||
resolution: {integrity: sha512-RIUl4RUFFyzD2T024vL7509Ygwcw+SEa8NOwPfaN6TtJHK7RZV/SBP3fLNVOptG9WRLnOWX3OvsLMbiOqDLLyA==}
|
||||
/turbo-linux-64/1.8.1:
|
||||
resolution: {integrity: sha512-eJNx8iWDn5Lt8d0221RFd6lBjViLiPCVWNFF5JtqOohgRYplvepY3y/THa1GivMxY4px6zjTiy2oPE/VscVP4w==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo-linux-arm64/1.7.4:
|
||||
resolution: {integrity: sha512-Bg65F0AjYYYxqE6RPf2H5TIGuA/EyWMeGOATHVSZOWAbYcnG3Ly03GZii8AHnUi7ntWBdjwvXf/QbOS1ayNB6A==}
|
||||
/turbo-linux-arm64/1.8.1:
|
||||
resolution: {integrity: sha512-hFZkm8tq9kLE8tdbOzD6EbNzftdzMR4JEuuoKC6AbTzx1ZsWRvXJ/BGTeSH9/dYYm/wfuIEUiOP7HeXWiZRx7g==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo-windows-64/1.7.4:
|
||||
resolution: {integrity: sha512-rTaV50XZ2BRxRHOHqt1UsWfeDmYLbn8UKE6g2D2ED+uW+kmnTvR9s01nmlGWd2sAuWcRYQyQ2V+O09VfKPKcQw==}
|
||||
/turbo-windows-64/1.8.1:
|
||||
resolution: {integrity: sha512-o3oDg0lTYZl5KZD3Mi753On2vQT51unIiungoUmHDCeDH5JXfWPFu+6p+GAoIyRwQkZPvaEzMLuUtRgklKcBJw==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo-windows-arm64/1.7.4:
|
||||
resolution: {integrity: sha512-h8sxdKPvHTnWUPtwnYszFMmSO0P/iUUwmYY9n7iYThA71zSao28UeZ0H0Gw75cY3MPjvkjn2C4EBAUGPjuZJLw==}
|
||||
/turbo-windows-arm64/1.8.1:
|
||||
resolution: {integrity: sha512-NDYr2Mra21KOdl18BhMRoH2jQmlu+oqkpqRd+cGB8+c5P0B6LDVCM83cfcXQ+PNqX9S3Y1eZDRENZJx9I03sSw==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/turbo/1.7.4:
|
||||
resolution: {integrity: sha512-8RLedDoUL0kkVKWEZ/RMM70BvKLyDFen06QuKKhYC2XNOfNKqFDqzIdcY/vGick869bNIWalChoy4O07k0HLsA==}
|
||||
/turbo/1.8.1:
|
||||
resolution: {integrity: sha512-g8RltmG5zd0nYbKpkBQwnTSXTWUiup9+yileQ1TETNzpjxI3TL5k7kt2WkgUHEqR947IPUV+ckIduZHVITJmIQ==}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
turbo-darwin-64: 1.7.4
|
||||
turbo-darwin-arm64: 1.7.4
|
||||
turbo-linux-64: 1.7.4
|
||||
turbo-linux-arm64: 1.7.4
|
||||
turbo-windows-64: 1.7.4
|
||||
turbo-windows-arm64: 1.7.4
|
||||
turbo-darwin-64: 1.8.1
|
||||
turbo-darwin-arm64: 1.8.1
|
||||
turbo-linux-64: 1.8.1
|
||||
turbo-linux-arm64: 1.8.1
|
||||
turbo-windows-64: 1.8.1
|
||||
turbo-windows-arm64: 1.8.1
|
||||
dev: true
|
||||
|
||||
/type-check/0.3.2:
|
||||
|
Reference in New Issue
Block a user