diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json new file mode 100644 index 0000000000..0d4f9a5dfa --- /dev/null +++ b/frontend/assets/translations/en.json @@ -0,0 +1,921 @@ +{ + "globals":{ + "readDocumentation":"Read documentation", + "cancel":"Cancel", + "save":"Save", + "back":"Back", + "edit":"Edit", + "search":"Search", + "update":"Update", + "delete":"Delete", + "add":"Add", + "view":"View", + "create":"Create", + "enabled":"Enabled", + "disabled":"Disabled", + "yes":"Yes", + "submit":"Submit", + "select":"Select", + "environmentVar":"Environment Variables", + "saving":"Saving...", + "saveDatasource":"Save data source", + "authorize":"Authorize", + "connect":"Connect", + "reconnect":"Reconnect", + "components":"components", + "send":"Send", + "noConnection":"could not connect", + "connectionVerifeid":"connection verified", + "left":"Left", + "center":"Center", + "right":"Right", + "justified":"Justified", + "host":"Host", + "operation":"Operation", + "header":"HEADER", + "path":"PATH", + "query":"QUERY", + "requestBody":"REQUEST BODY" + }, + "errorBoundary":"Something went wrong.", + "viewer":"Sorry!. This app is under maintenance", + "app":{ + "updateAvailable":"Update available", + "newVersionReleased":"A new version of ToolJet has been released.", + "readReleaseNotes":"Read release notes & update", + "skipVersion":"Skip this version" + }, + "stripe":"Please wait whle we load the OpenAPI specification for Stripe.", + "openApi":{ + "noValidOpenApi":"Valid OpenAPI Spec is not available!.", + "selectHost":"Select a host", + "selectOperation":"Select an operation" + }, + "slack":{ + "authorize":"Authorize", + "connectToolJetToSlack":"ToolJet can connect to Slack and list users, send messages, etc. Please select appropriate permission scopes.", + "chatWrite":"chat:write", + "listUsersAndSendMessage":"Your ToolJet app will be able to list users and send messages to users & channels.", + "connectSlack":"Connect to Slack" + }, + "googleSheets":{ + "readOnly":"Read only", + "enableReadAndWrite":"If you want your ToolJet apps to modify your Google sheets, make sure to select read and write access", + "readDataFromSheets":"Your ToolJet apps can only read data from Google sheets", + "readWrite":"Read and write", + "readModifySheets":"Your ToolJet apps can read data from sheets, modify sheets, and more.", + "toGoogleSheets":"to Google Sheets" + + }, + "profile": { + "profileSettings": "Profile Settings" + }, + "loginSignupPage":{ + "forgotPassword":"Forgot Password", + "emailAddress":"Email address", + "enterEmail":"Enter email", + "resetPassword":"Reset Password", + "dontHaveAccount":"Don't have account yet?", + "signIn":"Sign in", + "signUp":"Sign up", + "createToolJetAccount":"Create a ToolJet account", + "enterBusinessEmail":"Enter your business email", + "alreadyHaveAnAccount":"Already have an account?", + "password":"Password", + "showPassword":"show password", + "loginTo":"Login to", + "yourAccount":"your account", + "noLoginMethodsEnabled":"No login methods enabled for this workspace", + "emailConfirmLink":"Please check your email for confirmation link", + "newPassword":"New Password", + "passwordConfirmation":"Password Confirmation" + }, + "editor": { + "preview": "Preview", + "share":"Share", + "shareModal": { + "makeApplicationPublic":"Make application public ?", + "shareableLink":"Get shareable link for this application", + "copy":"copy", + "embeddableLink":"Get embeddable link for this application", + "manageUsers":"Manage Users" + }, + "appVersionManager":{ + "version":"Version", + "currentlyReleased":"Currently Released", + "createVersion":"Create Version", + "versionName":"Version Name", + "createVersionFrom":"Create version from", + "save":"Save", + "create":"Create Version", + "editVersion": "Edit Version", + "deleteVersion":"Do you really want to delete this version?", + "enterVersionName":"Enter version name", + "versionAlreadyReleased":"Version already released. Kindly create a new version or switch to a different version to continue making changes." + }, + "queries":"Queries", + "inspectComponent":"Please select a component to inspect", + "release":"Release", + "searchQueries":"Search queries", + "createQuery":"Create query", + "queryManager":{ + "general":"General", + "advanced":"Advanced", + "preview":"Preview", + "Save":"Save", + "selectDatasource":"Select Datasource", + "addDatasource":"Add datasource", + "dataSourceManager":{ + "toast":{ + "success": { + "dataSourceAdded": "Datasource Added", + "dataSourceSaved": "Datasource Saved" + }, + "error" :{ + "noEmptyDsName" :"The name of datasource should not be empty" + } + }, + "suggestDataSource":"Suggest Datasource", + "suggestAnIntegration":"Suggest an integration", + "whatLookingFor":"Tell us what you were looking for?", + "noResultFound":"Don't see what you were looking for?", + "suggest":"Suggest", + "addNewDataSource":"Add new datasource", + "whiteListIP":"Please white-list our IP address if the data source is not publicly accessible", + "copied":"Copied", + "copy":"Copy", + "saving":"Saving", + "noResultsFor":"No results for", + "noteTaken":"Thank you, we've taken a note of that!", + "goToAllDatasources":"Go to all Datasource", + "send":"Send" + }, + "runQueryOnPageLoad":"Run this query on page load?", + "confirmBeforeQueryRun":"Request confirmation before running query?", + "notificationOnSuccess":"Show notification on success?", + "successMessage":"Success Message", + "queryRanSuccessfully":"Query ran successfully", + "notificationDuration":"Notification duration (s)", + "events":"Events", + "transformation":{ + "transformationToolTip":"Transformations can be used to transform the results of queries. All the app variables are accessible from transformers and supports JS libraries such as Lodash & Moment.", + "transformations":"Transformations" + } + }, + "inspector":{ + "eventManager":{ + "event": "Event", + "action": "Action", + "actionOptions": "Action Options", + "message": "Message", + "alertType": "Alert Type", + "url": "URL", + "modal": "Modal", + "text": "Text", + "query": "Query", + "key": "Key", + "value": "Value", + "type": "Type", + "fileName": "File name", + "data": "Data", + "table": "Table", + "pageIndex": "Page index", + "component": "Component", + "addHandler": "+ Add handler", + "addEventHandler": "+ Add event handler", + "emptyMessage": "This {{componentName}} doesn't have any event handlers" + } + } + }, + "header":{ + "darkModeToggle":{ + "activateLightMode" :"Activate light mode", + "activateDarkMode":"Activate dark mode" + }, + "languageSelection":{ + "changeLanguage":"Change language", + "searchLanguage":"Search language" + }, + "notificationCenter":{ + "notifications":"Notifications", + "markAllAs":"Mark all as", + "read":"read", + "un":"un", + "youDontHaveany":"You don't have any", + "youAreCaughtUp":"You're all caught up!", + "view":"View" + }, + "organization":{ + "loadOrganizations":"Load Organizations", + "createWorkspace":"Create workspace", + "workspaceName":"workspace name", + "editWorkspace":"Edit workspace", + "menus": { + "addWorkspace":"Add workspace", + "menusList":{ + "manageUsers":"Manage Users", + "manageGroups":"Manage Groups", + "manageSso":"Manage SSO", + "manageEnv":"Manage Environment Variables" + }, + "manageUsers":{ + "usersAndPermission":"Users & Permissions", + "inviteNewUser":"Invite new user", + "name":"NAME", + "email":"EMAIL", + "status":"STATUS", + "archive":"Archive", + "unarchive":"Unarchive", + "addNewUser":"Add new user", + "emailAddress":"Email address", + "createUser":"Create User", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "enterEmail":"Enter Email" + }, + "manageGroups":{ + "permissions":{ + "userGroups":"User Groups", + "createNewGroup":"Create new group", + "udpateGroup":"Update group", + "addNewGroup":"Add new group", + "enterName":"Enter Name", + "createGroup":"Create Group", + "name":"Name" + }, + "permissionResources":{ + "userGroup":"User group", + "apps":"Apps", + "users":"User", + "permissions":"Permissions", + "addAppsToGroup":"Select apps to add to the group", + "name":"name", + "addUsersToGroup":"Select users to add to the group", + "email":"email", + "resource":"resource", + "createUpdateDelete":"Create/Update/Delete", + "folder":"Folder" + } + }, + "manageSSO":{ + "manageSso":"Manage SSO", + "generalSettings":{ + "title":"General Settings", + "enableSignup":"Enable Signup", + "newAccountWillBeCreated":"New account will be created for user's first time SSO sign in", + "allowedDomains":"Allowed domains", + "enterDomains":"Enter Domains", + "supportMultiDomains":"Support multiple domains. Enter domain names separated by comma. example: tooljet.com,tooljet.io,yourorganization.com", + "loginUrl":"Login URL", + "workspaceLogin":"Use this URL to login directly to this workspace", + "allowDefaultSso":"Allow default SSO", + "ssoAuth":"Allow users to authenticate via default SSO. Default SSO configurations can be overridden by workspace level SSO." + }, + "google":{ + "title":"Google", + "enabled":"Enabled", + "disabled":"Disabled", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "redirectUrl":"Redirect URL" + }, + "github":{ + "title":"Github", + "hostName":"Host Name", + "enterHostName":"Enter Host Name", + "requiredGithub":"Required if GitHub is self hosted", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "clientSecret":"Client Secret", + "enterClientSecret":"Enter Client Secret", + "encrypted":"Encrypted", + "redirectUrl":"Redirect URL" + }, + "passwordLogin":"Password Login", + "environmentVar" : { + "noEnvConfig":"You haven't configured any environment variables, press the 'Add new variable' button to create one", + "envWillBeDeleted":"Variable will be deleted, do you want to continue?", + "addNewVariable":"Add new variable", + "variableForm":{ + "addNewVariable":"Add new variable", + "updatevariable":"Update variable", + "name":"Name", + "value":"Value", + "enterVariableName":"Enter Variable Name", + "enterValue":"Enter Value", + "type":"Type", + "enableEncryption":"Enable encryption", + "addVariable":"Add variable" + }, + "variableTable":{ + "name":"name", + "value":"value", + "type":"type", + "secret":"secret" + } + } + } + } + }, + "profileSettingPage":{ + "profileSettings":"Profile Settings", + "firstName":"First name", + "lastName":"Last name", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "email":"Email", + "avatar":"Avatar", + "update":"Update", + "profile":"Profile", + "changePassword":"Change password", + "currentPassword":"Current password", + "newPassword":"New password", + "confirmNewPassword":"Confirm new password", + "enterCurrentPassword":"Enter current password", + "enterNewPassword":"Enter new password" + }, + "profile":"Profile", + "logout":"Logout" + }, + "homePage":{ + "appCard":{ + "changeIcon":"Change Icon", + "addToFolder":"Add to folder", + "move":"Move", + "to":"to", + "selectFolder":"Select folder", + "deleteApp":"Delete app", + "exportApp":"Export app", + "cloneApp":"Clone app", + "launch":"Launch", + "maintenance":"Maintenance", + "noDeployedVersion":"App does not have a deployed version", + "openInAppViewer":"Open in app viewer", + "removeFromFolder":"Remove from folder" + }, + "blankPage":{ + "welcomeToToolJet":"Welcome to ToolJet!", + "getStartedCreateNewApp":"You can get started by creating a new application or by creating an application using a template in ToolJet Library.", + "importApplication":"Import an application" + }, + "foldersSection":{ + "allApplications":"All applications", + "folders":"Folders", + "createNewFolder":"+ Create new folder", + "noFolders":"You haven't created any folders. Use folders to organize your apps", + "createFolder":"Create folder", + "updateFolder":"Update folder", + "editFolder":"Edit folder", + "deleteFolder":"Delete folder", + "folderName":"Folder name", + "wishToDeleteFolder":"Are you sure you want to delete the folder? Apps within the folder will not be deleted." + + }, + "header":{ + "createNewApplication":"Create new application", + "import":"Import", + "chooseFromTemplate":"Choose from template" + }, + "pagination":{ + "showing":"Showing", + "of":"of", + "to":"to" + }, + "noApplicationFound":"No Applications found", + "thisFolderIsEmpty":"This folder is empty", + "deleteAppAndData":"The app and the associated data will be permanently deleted, do you want to continue?", + "removeAppFromFolder":"The app will be removed from this folder, do you want to continue?", + "change":"Change", + "templateCard":{ + "use":"Use", + "preview":"Preview", + "leadGeneretion":"Lead generetion" + }, + "templateLibraryModal":{ + "select":"Select template", + "createAppfromTemplate":"Create application from template" + } + }, + "confirmationPage":{ + "setupAccount":"Set up your account", + "signupWithGoogle":"Sign up with Google", + "signupWithGitHub":"Sign up with GitHub", + "or":"OR", + "firstName":"First name", + "lastName":"Last name", + "company":"Company", + "role":"Role", + "pleaseSelect":"Please select", + "password":"Password", + "confirmPassword":"Confirm Password", + "clickAndAgree":"By clicking the button below, you agree to our", + "termsAndConditions":"Terms and Conditions", + "finishAccountSetup":"Finish account setup", + "acceptInvite":"accept invite", + "accountExists":"Already have an account?", + "and":"and" + + }, + "onBoarding":{ + "finishToolJetInstallation":"Finish ToolJet installation", + "organization":"Organization", + "name":"Name", + "email":"Email", + "receiveUpdatesFromToolJet":"You will receive updates from the ToolJet team ( 1-2 emails every month, we do not spam )", + "finishSetup":"Finish setup", + "skip":"Skip" + }, + "redirectSso":{ + "upgradingTov1.13.0":"Upgrading to v1.13.0 and above.", + "fromV1.13.0":"From v1.13.0 we have introduced", + "multiWorkspace":"Multi-Workspace", + "singleSignOnConfig":"The Single Sign-On related configurations are moved from environment variables to database. Please refer this", + "link":"Link", + "toConfigureSSO":"to configure SSO.", + "haveGoogleGithubSSo":"If you have Google or GitHub SSO configurations before upgrade and disabled Multi-Workspace, then theSSO configurations will be migrated while upgrade but you have to re-configure the redirect URL in the SSO provider side. Redirect URLs for each SSO are given below.", + "isMultiWorkspaceEnabled":"If you have enabled Multi-Workspace, then the SSO configurations will not be migrated while upgrade so you have to re-configure the SSO under the respective workspace.", + "youHaveEnabled":"You have Enabled", + "setupSsoWorkspace":"Please login with password and you can setup sso using workspace", + "manageSsoMenu":"Manage SSO menu.", + "youHaveDisabled":"You have Disabled", + "configureRedirectUrl":"Please configure redirect url in SSO provider side.", + "google":"Google", + "redirectUrl":"Redirect URL:", + "gitHub":"GitHub" + }, + "oAuth2": { + "pleaseWait":"Please wait...", + "authSuccess":"Auth successful, you can close this tab now.", + "authFailed":"Auth failed" + }, + "widgetManager": { + "commonlyUsed": "commonly used", + "layouts" : "layouts", + "forms" : "forms", + "intregrations" : "integrations", + "others":"others", + "noResults": "No results found", + "tryAdjustingFilterMessage": "Try adjusting your search or filter to find what you're looking for.", + "clearQuery": "clear query" + }, + "widget":{ + "common":{ + "properties": "Properties", + "events": "Events", + "layout": "Layout", + "styles": "Styles", + "general": "General", + "validation": "Validation", + "documentation": "{{componentMeta}} documentation", + "widgetNameEmptyError": "Widget name cannot be empty", + "componentNameExistsError": "Component name already exists", + "invalidWidgetName": "Invalid widget name. Should be unique and only include letters, numbers and underscore." + }, + "commonProperties": { + "visibility": "Visibility", + "disable": "Disable", + "borderRadius": "Border Radius", + "boxShadow": "Box Shadow", + "tooltip": "Tooltip", + "showOnDesktop": "Show on desktop", + "showOnMobile": "Show on mobile", + "showLoadingState": "Show loading state", + "backgroundColor": "Background Color", + "textColor": "Text color", + "loaderColor": "Loader color", + "defaultValue": "Default Value", + "placeholder": "Placeholder", + "label": "Label", + "title": "Title", + "code": "Code", + "data": "Data", + "tableData": "Table data", + "tableColumns": "Table columns", + "searverSideSearch": "Server-side search", + "loadingState": "Loading State", + "serverSidePagination": "Server-side pagination", + "clientSidePagination": "Client-side pagination", + "serverSideSearch": "Server-side search", + "showSearchBox": "Show search box", + "showDownloadButton": "Show download button", + "showFilterButton": "Show filter button", + "showBulkUpdateActions": "Show bulk update actions", + "bulkSelection": "Bulk selection", + "highlightSelectedRow": "Highlight selected row", + "actionButtonRadius": "Action Button Radius", + "tableType": "Table type", + "cellSize": "Cell size", + "setPage": "Set page", + "page": "Page", + "buttonText": "Button Text", + "click": "Click", + "setText": "Set text", + "text": "Text", + "markerColor": "Marker color", + "showAxes": "Show axes", + "showGridLines": "Show grid lines", + "chartType": "Chart type", + "jsonDescription": "Json Description", + "usePlotlyJsonSchema": "Use Plotly JSON schema", + "padding": "Padding", + "hideTitleBar": "Hide title bar", + "hideCloseButton": "Hide close button", + "hideOnEscape": "Hide on escape", + "modalSize": "Modal size", + "open": "Open", + "close": "Close", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customValidation": "Custom validation", + "clear": "Clear", + "minimumValue": "Minimum value", + "maximumValue": "Maximum value", + "format": "Format", + "enableTimeSelection": "Enable time selection?", + "enableDateSelection": "Enable date selection?", + "disabledDates": "Disabled dates", + "setChecked": "Set checked", + "status": "status", + "defaultStatus": "Default Status", + "checkboxColor": "Checkbox Color", + "optionValues": "Option values", + "optionLabels": "Option labels", + "activeColor": "Active Color", + "selectOption": "Select option", + "option": "Option", + "toggleSwitchColor": "Toggle Switch Color", + "defaultStartDate": "Default start date", + "defaultEndDate": "Default end date", + "textSize": "Text Size", + "alignText": "Align Text", + "url": "URL", + "alternativeText": "Alternative text", + "zoomButton": "Zoom button", + "borderType": "Border type", + "imageFit": "Image fit", + "optionsLoadingState": "Options loading state", + "selectedTextColor": "Selected Text Color", + "select": "Select", + "deselectOption": "Deselect Option", + "clearSelections": "Clear selections", + "enableSelectAllOption": "Enable select All option", + "initialLocation": "Initial location", + "defaultMarkers": "Default markers", + "addNewMarkers": "Add new markers", + "searchForPlaces": "Search for places", + "setLocation": "Set Location", + "latitude": "Latitude", + "longitude": "Longitude", + "numberOfStars": "Number of stars", + "defaultNoOfSelectedStars": "Default no of selected stars", + "enableHalfStar": "Enable half star", + "tooltips": "Tooltips", + "starColor": "Star Color", + "labelColor": "Label Color", + "dividerColor": "Divider Color", + "clearFiles": "Clear Files", + "instructionText": "Instruction Text", + "useDropZone": "Use Drop zone", + "useFilePicker": "Use File Picker", + "pickMultipleFiles": "Pick multiple files", + "maxFileCount": "Max file count", + "acceptFileTypes": "Accept file types", + "maxSizeLimitBytes": "Max size limit (Bytes)", + "minSizeLimitBytes": "Min size limit (Bytes)", + "parseContent": "Parse content", + "fileType": "File type", + "dateFormat": "Date format", + "defaultDate": "Default date", + "events": "Events", + "resources": "Resources", + "defaultView": "Default view", + "startTimeOnWeekAndDayView": "Start time on week and day view", + "endTimeOnWeekAndDayView": "End time on week and day view", + "showToolbar": "Show toolbar", + "showViewSwitcher": "Show view switcher", + "highlightToday": "Highlight today", + "showPopoverWhenEventIsClicked": "Show popover when event is clicked", + "cellSizeInViewsClassifiedByResource": "Cell size in views classified by resource", + "headerDateFormatOnWeekView": "Header date format on week view", + "showLineNumber": "Show Line Number", + "mode": "Mode", + "tabs": "Tabs", + "defaultTab": "Default tab", + "hideTabs": "Hide Tabs", + "highlightColor": "Highlight Color", + "tabWidth": "Tab width", + "setCurrentTab": "Set current tab", + "id": "Id", + "timerType": "Timer type", + "listData": "List data", + "rowHeight": "Row height", + "showBottomBorder": "Show bottom border", + "tags": "Tags", + "numberOfPages": "Number of pages", + "defaultPageIndex": "Default page index", + "progress": "Progress", + "color": "Color", + "strokeWidth": "Stroke Width", + "counterClockwise": "Counter Clockwise", + "circleRatio": "Circle Ratio", + "colour": "Colour", + "size": "Size", + "primaryValueLabel": "Primary value label", + "primaryValue": "Primary value", + "hideSecondaryValue": "Hide secondary value", + "secondaryValueLabel": "Secondary value label", + "secondaryValue": "Secondary value", + "secondarySignDisplay": "Secondary sign display", + "primaryLabelColour": "Primary Label Colour", + "primaryTextColour": "Primary Text Colour", + "secondaryLabelColour": "Secondary Label Colour", + "secondaryTextColour": "Secondary Text Colour", + "min": "Min", + "max": "Max", + "value": "Value", + "twoHandles": "Two handles", + "lineColor": "Line color", + "handleColor": "Handle color", + "trackColor": "Track color", + "timelineData": "Timeline data", + "hideDate": "Hide Date", + "svgData": "Svg data", + "rawHtml": "Raw HTML", + "values": "values", + "labels": "Labels", + "defaultSelected": "Default selected", + "enableMutipleSelection": "Enable mutiple selection", + "selectedTextColour": "Selected text colour", + "selectedBackgroundColor": "Selected background color", + "fileUrl": "File URL", + "scalePageToWidth": "Scale page to width", + "showPageControls": "Show page controls", + "steps": "Steps", + "currentStep": "Current step", + "stepsSelectable": "Steps selectable", + "theme": "Theme", + "columns": "Columns", + "cardData": "Card Data", + "enableAddCard": "Enable Add Card", + "width": "Width", + "minWidth": "Min Width", + "accentColor": "Accent color", + "defaultColor": "Default Color", + "setColor": "Set Color", + "structure": "Structure", + "checkedValues": "Checked Values", + "expandedValues": "Expanded Values" + }, + "Table": { + "displayName": "Table", + "description": "Display paginated tabular data", + "columnType": "Column type", + "columnName": "Column name", + "overflow": "Overflow", + "key": "key", + "textColor": "Text color", + "validation": "Validation", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customRule": "Custom rule", + "values": "Values", + "labels": "Labels", + "cellBgColor": "Cell Background Color", + "dateDisplayformat": "Date Display Format", + "dateParseformat": "Date Parse Format", + "showTime": "show time", + "makeEditable": "make editable", + "buttonText": "Button Text", + "buttonPosition": "Button Position", + "remove": "Remove", + "addButton": "+ Add button", + "addColumn": "+ Add column", + "noActionMessage": "This table doesn't have any action buttons" + }, + "Button": { + "displayName": "Button", + "description": "Trigger actions: queries, alerts etc" + }, + "Chart": { + "displayName": "Chart", + "description": "Display charts" + }, + "Modal" : { + "displayName": "Modal", + "description": "Modal triggered by events" + }, + "TextInput" : { + "displayName": "Text Input", + "description": "Text field for forms" + }, + "NumberInput" :{ + "displayName": "Number Input", + "description": "Number field for forms" + }, + "PasswordInput":{ + "displayName": "Password Input", + "description": "Password input field for forms" + }, + "Datepicker" :{ + "displayName": "Date Picker", + "description": "Select a date and time" + }, + "Checkbox":{ + "displayName": "Checkbox", + "description": "A single checkbox" + }, + "Radio-button":{ + "displayName": "Radio Button", + "description": "Radio buttons" + }, + "ToggleSwitch":{ + "displayName": "Toggle Switch", + "description": "Toggle Switch" + }, + "Textarea":{ + "displayName": "Textarea", + "description": "Text area form field" + }, + "DateRangePicker":{ + "displayName": "Range Picker", + "description": "Select a date range" + }, + "Text":{ + "displayName": "Text", + "description": "Display markdown or HTML" + }, + "Image":{ + "displayName": "Image", + "description": "Display an Image" + }, + "Container":{ + "displayName": "Container", + "description": "Wrapper for multiple components" + }, + "Dropdown":{ + "displayName": "Dropdown", + "description": "Select one value from options" + }, + "Multiselect":{ + "displayName": "Multiselect", + "description": "Select multiple values from options" + }, + "RichTextEditor":{ + "displayName": "Text Editor", + "description": "Rich text editor" + }, + "Map":{ + "displayName": "Map", + "description": "Display Google Maps" + }, + "QrScanner":{ + "displayName": "QR Scanner", + "description": "Scan QR codes and hold its data" + }, + "StarRating":{ + "displayName": "Rating", + "description": "Star rating" + }, + "Divider":{ + "displayName": "Divider", + "description": "Separator between components" + }, + "FilePicker":{ + "displayName": "File Picker", + "description": "File Picker" + }, + "Calendar":{ + "displayName": "Calendar", + "description": "Calendar" + }, + "Iframe":{ + "displayName": "Iframe", + "description": "Display an Iframe" + }, + "CodeEditor":{ + "displayName": "Code Editor", + "description": "Code Editor" + }, + "Tabs":{ + "displayName": "Tabs", + "description": "Tabs component" + }, + "Timer":{ + "displayName": "Timer", + "description": "timer" + }, + "Listview":{ + "displayName": "List View", + "description": "Wrapper for multiple components" + }, + "Tags":{ + "displayName": "Tags", + "description": "Content can be shown as tags" + }, + "Pagination":{ + "displayName": "Pagination", + "description": "Pagination " + }, + "CircularProgressbar":{ + "displayName": "Circular Progressbar", + "description": "Show the progress using circular progressbar" + }, + "Spinner":{ + "displayName": "Spinner", + "description": "Spinner can be used to display loading status" + }, + "Statistics":{ + "displayName": "Statistics", + "description": "Statistics can be used to display different statistical information" + }, + "RangeSlider":{ + "displayName": "Range Slider", + "description": "Can be used to show slider with a range" + }, + "Timeline":{ + "displayName": "Timeline", + "description": "Visual representation of a sequence of events" + }, + "SvgImage":{ + "displayName": "Svg Image", + "description": "Svg image" + }, + "Html":{ + "displayName": "HTML Viewer", + "description": "HTML Viewer" + }, + "VerticalDivider":{ + "displayName": "Vertical Divider", + "description": "Vertical Separator between components" + }, + "CustomComponent":{ + "displayName": "Custom Component", + "description": "Add your custom react component" + }, + "ButtonGroup":{ + "displayName": "Button Group", + "description": "ButtonGroup" + }, + "PDF":{ + "displayName": "PDF", + "description": "Embed PDF file" + }, + "Steps":{ + "displayName": "Steps", + "description": "Steps" + }, + "KanbanBoard":{ + "displayName": "Kanban Board", + "description": "Kanban Board" + }, + "ColorPicker":{ + "displayName": "Color Picker", + "description": "Color Picker Pallete" + }, + "TreeSelect":{ + "displayName": "Tree Select", + "description": "Select values from a tree view" + } + }, + "leftSidebar":{ + "Inspector":{ + "text":"Inspector", + "tip" : "Inspector" + }, + "Sources" :{ + "text":"Sources", + "tip" : "Add or edit datasources", + "dataSources":"Data sources", + "addDataSource":"+ add data source" + }, + "Debugger":{ + "text":"Debugger", + "tip" : "Debugger", + "errors":"Errors", + "noErrors":"No errors found", + "clear":"clear" + }, + "Comments":{ + "text":"Comments", + "tip" : "toggle comments", + "commentBody":"There are no comments to display", + "typeComment":"Type your comment here" + }, + "Settings":{ + "text":"Settings", + "tip" : "Global Settings", + "hideHeader": "Hide header for launched apps", + "maintenanceMode":"Maintenance mode", + "maxWidthOfCanvas":"Max width of canvas", + "maxHeightOfCanvas" :"Max height of canvas", + "backgroundColorOfCanvas":"Background color of canvas" + + }, + "Back":{ + "text":"Back", + "tip" : "Back to Home" + } + } +} diff --git a/frontend/assets/translations/fr.json b/frontend/assets/translations/fr.json new file mode 100644 index 0000000000..0d4f9a5dfa --- /dev/null +++ b/frontend/assets/translations/fr.json @@ -0,0 +1,921 @@ +{ + "globals":{ + "readDocumentation":"Read documentation", + "cancel":"Cancel", + "save":"Save", + "back":"Back", + "edit":"Edit", + "search":"Search", + "update":"Update", + "delete":"Delete", + "add":"Add", + "view":"View", + "create":"Create", + "enabled":"Enabled", + "disabled":"Disabled", + "yes":"Yes", + "submit":"Submit", + "select":"Select", + "environmentVar":"Environment Variables", + "saving":"Saving...", + "saveDatasource":"Save data source", + "authorize":"Authorize", + "connect":"Connect", + "reconnect":"Reconnect", + "components":"components", + "send":"Send", + "noConnection":"could not connect", + "connectionVerifeid":"connection verified", + "left":"Left", + "center":"Center", + "right":"Right", + "justified":"Justified", + "host":"Host", + "operation":"Operation", + "header":"HEADER", + "path":"PATH", + "query":"QUERY", + "requestBody":"REQUEST BODY" + }, + "errorBoundary":"Something went wrong.", + "viewer":"Sorry!. This app is under maintenance", + "app":{ + "updateAvailable":"Update available", + "newVersionReleased":"A new version of ToolJet has been released.", + "readReleaseNotes":"Read release notes & update", + "skipVersion":"Skip this version" + }, + "stripe":"Please wait whle we load the OpenAPI specification for Stripe.", + "openApi":{ + "noValidOpenApi":"Valid OpenAPI Spec is not available!.", + "selectHost":"Select a host", + "selectOperation":"Select an operation" + }, + "slack":{ + "authorize":"Authorize", + "connectToolJetToSlack":"ToolJet can connect to Slack and list users, send messages, etc. Please select appropriate permission scopes.", + "chatWrite":"chat:write", + "listUsersAndSendMessage":"Your ToolJet app will be able to list users and send messages to users & channels.", + "connectSlack":"Connect to Slack" + }, + "googleSheets":{ + "readOnly":"Read only", + "enableReadAndWrite":"If you want your ToolJet apps to modify your Google sheets, make sure to select read and write access", + "readDataFromSheets":"Your ToolJet apps can only read data from Google sheets", + "readWrite":"Read and write", + "readModifySheets":"Your ToolJet apps can read data from sheets, modify sheets, and more.", + "toGoogleSheets":"to Google Sheets" + + }, + "profile": { + "profileSettings": "Profile Settings" + }, + "loginSignupPage":{ + "forgotPassword":"Forgot Password", + "emailAddress":"Email address", + "enterEmail":"Enter email", + "resetPassword":"Reset Password", + "dontHaveAccount":"Don't have account yet?", + "signIn":"Sign in", + "signUp":"Sign up", + "createToolJetAccount":"Create a ToolJet account", + "enterBusinessEmail":"Enter your business email", + "alreadyHaveAnAccount":"Already have an account?", + "password":"Password", + "showPassword":"show password", + "loginTo":"Login to", + "yourAccount":"your account", + "noLoginMethodsEnabled":"No login methods enabled for this workspace", + "emailConfirmLink":"Please check your email for confirmation link", + "newPassword":"New Password", + "passwordConfirmation":"Password Confirmation" + }, + "editor": { + "preview": "Preview", + "share":"Share", + "shareModal": { + "makeApplicationPublic":"Make application public ?", + "shareableLink":"Get shareable link for this application", + "copy":"copy", + "embeddableLink":"Get embeddable link for this application", + "manageUsers":"Manage Users" + }, + "appVersionManager":{ + "version":"Version", + "currentlyReleased":"Currently Released", + "createVersion":"Create Version", + "versionName":"Version Name", + "createVersionFrom":"Create version from", + "save":"Save", + "create":"Create Version", + "editVersion": "Edit Version", + "deleteVersion":"Do you really want to delete this version?", + "enterVersionName":"Enter version name", + "versionAlreadyReleased":"Version already released. Kindly create a new version or switch to a different version to continue making changes." + }, + "queries":"Queries", + "inspectComponent":"Please select a component to inspect", + "release":"Release", + "searchQueries":"Search queries", + "createQuery":"Create query", + "queryManager":{ + "general":"General", + "advanced":"Advanced", + "preview":"Preview", + "Save":"Save", + "selectDatasource":"Select Datasource", + "addDatasource":"Add datasource", + "dataSourceManager":{ + "toast":{ + "success": { + "dataSourceAdded": "Datasource Added", + "dataSourceSaved": "Datasource Saved" + }, + "error" :{ + "noEmptyDsName" :"The name of datasource should not be empty" + } + }, + "suggestDataSource":"Suggest Datasource", + "suggestAnIntegration":"Suggest an integration", + "whatLookingFor":"Tell us what you were looking for?", + "noResultFound":"Don't see what you were looking for?", + "suggest":"Suggest", + "addNewDataSource":"Add new datasource", + "whiteListIP":"Please white-list our IP address if the data source is not publicly accessible", + "copied":"Copied", + "copy":"Copy", + "saving":"Saving", + "noResultsFor":"No results for", + "noteTaken":"Thank you, we've taken a note of that!", + "goToAllDatasources":"Go to all Datasource", + "send":"Send" + }, + "runQueryOnPageLoad":"Run this query on page load?", + "confirmBeforeQueryRun":"Request confirmation before running query?", + "notificationOnSuccess":"Show notification on success?", + "successMessage":"Success Message", + "queryRanSuccessfully":"Query ran successfully", + "notificationDuration":"Notification duration (s)", + "events":"Events", + "transformation":{ + "transformationToolTip":"Transformations can be used to transform the results of queries. All the app variables are accessible from transformers and supports JS libraries such as Lodash & Moment.", + "transformations":"Transformations" + } + }, + "inspector":{ + "eventManager":{ + "event": "Event", + "action": "Action", + "actionOptions": "Action Options", + "message": "Message", + "alertType": "Alert Type", + "url": "URL", + "modal": "Modal", + "text": "Text", + "query": "Query", + "key": "Key", + "value": "Value", + "type": "Type", + "fileName": "File name", + "data": "Data", + "table": "Table", + "pageIndex": "Page index", + "component": "Component", + "addHandler": "+ Add handler", + "addEventHandler": "+ Add event handler", + "emptyMessage": "This {{componentName}} doesn't have any event handlers" + } + } + }, + "header":{ + "darkModeToggle":{ + "activateLightMode" :"Activate light mode", + "activateDarkMode":"Activate dark mode" + }, + "languageSelection":{ + "changeLanguage":"Change language", + "searchLanguage":"Search language" + }, + "notificationCenter":{ + "notifications":"Notifications", + "markAllAs":"Mark all as", + "read":"read", + "un":"un", + "youDontHaveany":"You don't have any", + "youAreCaughtUp":"You're all caught up!", + "view":"View" + }, + "organization":{ + "loadOrganizations":"Load Organizations", + "createWorkspace":"Create workspace", + "workspaceName":"workspace name", + "editWorkspace":"Edit workspace", + "menus": { + "addWorkspace":"Add workspace", + "menusList":{ + "manageUsers":"Manage Users", + "manageGroups":"Manage Groups", + "manageSso":"Manage SSO", + "manageEnv":"Manage Environment Variables" + }, + "manageUsers":{ + "usersAndPermission":"Users & Permissions", + "inviteNewUser":"Invite new user", + "name":"NAME", + "email":"EMAIL", + "status":"STATUS", + "archive":"Archive", + "unarchive":"Unarchive", + "addNewUser":"Add new user", + "emailAddress":"Email address", + "createUser":"Create User", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "enterEmail":"Enter Email" + }, + "manageGroups":{ + "permissions":{ + "userGroups":"User Groups", + "createNewGroup":"Create new group", + "udpateGroup":"Update group", + "addNewGroup":"Add new group", + "enterName":"Enter Name", + "createGroup":"Create Group", + "name":"Name" + }, + "permissionResources":{ + "userGroup":"User group", + "apps":"Apps", + "users":"User", + "permissions":"Permissions", + "addAppsToGroup":"Select apps to add to the group", + "name":"name", + "addUsersToGroup":"Select users to add to the group", + "email":"email", + "resource":"resource", + "createUpdateDelete":"Create/Update/Delete", + "folder":"Folder" + } + }, + "manageSSO":{ + "manageSso":"Manage SSO", + "generalSettings":{ + "title":"General Settings", + "enableSignup":"Enable Signup", + "newAccountWillBeCreated":"New account will be created for user's first time SSO sign in", + "allowedDomains":"Allowed domains", + "enterDomains":"Enter Domains", + "supportMultiDomains":"Support multiple domains. Enter domain names separated by comma. example: tooljet.com,tooljet.io,yourorganization.com", + "loginUrl":"Login URL", + "workspaceLogin":"Use this URL to login directly to this workspace", + "allowDefaultSso":"Allow default SSO", + "ssoAuth":"Allow users to authenticate via default SSO. Default SSO configurations can be overridden by workspace level SSO." + }, + "google":{ + "title":"Google", + "enabled":"Enabled", + "disabled":"Disabled", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "redirectUrl":"Redirect URL" + }, + "github":{ + "title":"Github", + "hostName":"Host Name", + "enterHostName":"Enter Host Name", + "requiredGithub":"Required if GitHub is self hosted", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "clientSecret":"Client Secret", + "enterClientSecret":"Enter Client Secret", + "encrypted":"Encrypted", + "redirectUrl":"Redirect URL" + }, + "passwordLogin":"Password Login", + "environmentVar" : { + "noEnvConfig":"You haven't configured any environment variables, press the 'Add new variable' button to create one", + "envWillBeDeleted":"Variable will be deleted, do you want to continue?", + "addNewVariable":"Add new variable", + "variableForm":{ + "addNewVariable":"Add new variable", + "updatevariable":"Update variable", + "name":"Name", + "value":"Value", + "enterVariableName":"Enter Variable Name", + "enterValue":"Enter Value", + "type":"Type", + "enableEncryption":"Enable encryption", + "addVariable":"Add variable" + }, + "variableTable":{ + "name":"name", + "value":"value", + "type":"type", + "secret":"secret" + } + } + } + } + }, + "profileSettingPage":{ + "profileSettings":"Profile Settings", + "firstName":"First name", + "lastName":"Last name", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "email":"Email", + "avatar":"Avatar", + "update":"Update", + "profile":"Profile", + "changePassword":"Change password", + "currentPassword":"Current password", + "newPassword":"New password", + "confirmNewPassword":"Confirm new password", + "enterCurrentPassword":"Enter current password", + "enterNewPassword":"Enter new password" + }, + "profile":"Profile", + "logout":"Logout" + }, + "homePage":{ + "appCard":{ + "changeIcon":"Change Icon", + "addToFolder":"Add to folder", + "move":"Move", + "to":"to", + "selectFolder":"Select folder", + "deleteApp":"Delete app", + "exportApp":"Export app", + "cloneApp":"Clone app", + "launch":"Launch", + "maintenance":"Maintenance", + "noDeployedVersion":"App does not have a deployed version", + "openInAppViewer":"Open in app viewer", + "removeFromFolder":"Remove from folder" + }, + "blankPage":{ + "welcomeToToolJet":"Welcome to ToolJet!", + "getStartedCreateNewApp":"You can get started by creating a new application or by creating an application using a template in ToolJet Library.", + "importApplication":"Import an application" + }, + "foldersSection":{ + "allApplications":"All applications", + "folders":"Folders", + "createNewFolder":"+ Create new folder", + "noFolders":"You haven't created any folders. Use folders to organize your apps", + "createFolder":"Create folder", + "updateFolder":"Update folder", + "editFolder":"Edit folder", + "deleteFolder":"Delete folder", + "folderName":"Folder name", + "wishToDeleteFolder":"Are you sure you want to delete the folder? Apps within the folder will not be deleted." + + }, + "header":{ + "createNewApplication":"Create new application", + "import":"Import", + "chooseFromTemplate":"Choose from template" + }, + "pagination":{ + "showing":"Showing", + "of":"of", + "to":"to" + }, + "noApplicationFound":"No Applications found", + "thisFolderIsEmpty":"This folder is empty", + "deleteAppAndData":"The app and the associated data will be permanently deleted, do you want to continue?", + "removeAppFromFolder":"The app will be removed from this folder, do you want to continue?", + "change":"Change", + "templateCard":{ + "use":"Use", + "preview":"Preview", + "leadGeneretion":"Lead generetion" + }, + "templateLibraryModal":{ + "select":"Select template", + "createAppfromTemplate":"Create application from template" + } + }, + "confirmationPage":{ + "setupAccount":"Set up your account", + "signupWithGoogle":"Sign up with Google", + "signupWithGitHub":"Sign up with GitHub", + "or":"OR", + "firstName":"First name", + "lastName":"Last name", + "company":"Company", + "role":"Role", + "pleaseSelect":"Please select", + "password":"Password", + "confirmPassword":"Confirm Password", + "clickAndAgree":"By clicking the button below, you agree to our", + "termsAndConditions":"Terms and Conditions", + "finishAccountSetup":"Finish account setup", + "acceptInvite":"accept invite", + "accountExists":"Already have an account?", + "and":"and" + + }, + "onBoarding":{ + "finishToolJetInstallation":"Finish ToolJet installation", + "organization":"Organization", + "name":"Name", + "email":"Email", + "receiveUpdatesFromToolJet":"You will receive updates from the ToolJet team ( 1-2 emails every month, we do not spam )", + "finishSetup":"Finish setup", + "skip":"Skip" + }, + "redirectSso":{ + "upgradingTov1.13.0":"Upgrading to v1.13.0 and above.", + "fromV1.13.0":"From v1.13.0 we have introduced", + "multiWorkspace":"Multi-Workspace", + "singleSignOnConfig":"The Single Sign-On related configurations are moved from environment variables to database. Please refer this", + "link":"Link", + "toConfigureSSO":"to configure SSO.", + "haveGoogleGithubSSo":"If you have Google or GitHub SSO configurations before upgrade and disabled Multi-Workspace, then theSSO configurations will be migrated while upgrade but you have to re-configure the redirect URL in the SSO provider side. Redirect URLs for each SSO are given below.", + "isMultiWorkspaceEnabled":"If you have enabled Multi-Workspace, then the SSO configurations will not be migrated while upgrade so you have to re-configure the SSO under the respective workspace.", + "youHaveEnabled":"You have Enabled", + "setupSsoWorkspace":"Please login with password and you can setup sso using workspace", + "manageSsoMenu":"Manage SSO menu.", + "youHaveDisabled":"You have Disabled", + "configureRedirectUrl":"Please configure redirect url in SSO provider side.", + "google":"Google", + "redirectUrl":"Redirect URL:", + "gitHub":"GitHub" + }, + "oAuth2": { + "pleaseWait":"Please wait...", + "authSuccess":"Auth successful, you can close this tab now.", + "authFailed":"Auth failed" + }, + "widgetManager": { + "commonlyUsed": "commonly used", + "layouts" : "layouts", + "forms" : "forms", + "intregrations" : "integrations", + "others":"others", + "noResults": "No results found", + "tryAdjustingFilterMessage": "Try adjusting your search or filter to find what you're looking for.", + "clearQuery": "clear query" + }, + "widget":{ + "common":{ + "properties": "Properties", + "events": "Events", + "layout": "Layout", + "styles": "Styles", + "general": "General", + "validation": "Validation", + "documentation": "{{componentMeta}} documentation", + "widgetNameEmptyError": "Widget name cannot be empty", + "componentNameExistsError": "Component name already exists", + "invalidWidgetName": "Invalid widget name. Should be unique and only include letters, numbers and underscore." + }, + "commonProperties": { + "visibility": "Visibility", + "disable": "Disable", + "borderRadius": "Border Radius", + "boxShadow": "Box Shadow", + "tooltip": "Tooltip", + "showOnDesktop": "Show on desktop", + "showOnMobile": "Show on mobile", + "showLoadingState": "Show loading state", + "backgroundColor": "Background Color", + "textColor": "Text color", + "loaderColor": "Loader color", + "defaultValue": "Default Value", + "placeholder": "Placeholder", + "label": "Label", + "title": "Title", + "code": "Code", + "data": "Data", + "tableData": "Table data", + "tableColumns": "Table columns", + "searverSideSearch": "Server-side search", + "loadingState": "Loading State", + "serverSidePagination": "Server-side pagination", + "clientSidePagination": "Client-side pagination", + "serverSideSearch": "Server-side search", + "showSearchBox": "Show search box", + "showDownloadButton": "Show download button", + "showFilterButton": "Show filter button", + "showBulkUpdateActions": "Show bulk update actions", + "bulkSelection": "Bulk selection", + "highlightSelectedRow": "Highlight selected row", + "actionButtonRadius": "Action Button Radius", + "tableType": "Table type", + "cellSize": "Cell size", + "setPage": "Set page", + "page": "Page", + "buttonText": "Button Text", + "click": "Click", + "setText": "Set text", + "text": "Text", + "markerColor": "Marker color", + "showAxes": "Show axes", + "showGridLines": "Show grid lines", + "chartType": "Chart type", + "jsonDescription": "Json Description", + "usePlotlyJsonSchema": "Use Plotly JSON schema", + "padding": "Padding", + "hideTitleBar": "Hide title bar", + "hideCloseButton": "Hide close button", + "hideOnEscape": "Hide on escape", + "modalSize": "Modal size", + "open": "Open", + "close": "Close", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customValidation": "Custom validation", + "clear": "Clear", + "minimumValue": "Minimum value", + "maximumValue": "Maximum value", + "format": "Format", + "enableTimeSelection": "Enable time selection?", + "enableDateSelection": "Enable date selection?", + "disabledDates": "Disabled dates", + "setChecked": "Set checked", + "status": "status", + "defaultStatus": "Default Status", + "checkboxColor": "Checkbox Color", + "optionValues": "Option values", + "optionLabels": "Option labels", + "activeColor": "Active Color", + "selectOption": "Select option", + "option": "Option", + "toggleSwitchColor": "Toggle Switch Color", + "defaultStartDate": "Default start date", + "defaultEndDate": "Default end date", + "textSize": "Text Size", + "alignText": "Align Text", + "url": "URL", + "alternativeText": "Alternative text", + "zoomButton": "Zoom button", + "borderType": "Border type", + "imageFit": "Image fit", + "optionsLoadingState": "Options loading state", + "selectedTextColor": "Selected Text Color", + "select": "Select", + "deselectOption": "Deselect Option", + "clearSelections": "Clear selections", + "enableSelectAllOption": "Enable select All option", + "initialLocation": "Initial location", + "defaultMarkers": "Default markers", + "addNewMarkers": "Add new markers", + "searchForPlaces": "Search for places", + "setLocation": "Set Location", + "latitude": "Latitude", + "longitude": "Longitude", + "numberOfStars": "Number of stars", + "defaultNoOfSelectedStars": "Default no of selected stars", + "enableHalfStar": "Enable half star", + "tooltips": "Tooltips", + "starColor": "Star Color", + "labelColor": "Label Color", + "dividerColor": "Divider Color", + "clearFiles": "Clear Files", + "instructionText": "Instruction Text", + "useDropZone": "Use Drop zone", + "useFilePicker": "Use File Picker", + "pickMultipleFiles": "Pick multiple files", + "maxFileCount": "Max file count", + "acceptFileTypes": "Accept file types", + "maxSizeLimitBytes": "Max size limit (Bytes)", + "minSizeLimitBytes": "Min size limit (Bytes)", + "parseContent": "Parse content", + "fileType": "File type", + "dateFormat": "Date format", + "defaultDate": "Default date", + "events": "Events", + "resources": "Resources", + "defaultView": "Default view", + "startTimeOnWeekAndDayView": "Start time on week and day view", + "endTimeOnWeekAndDayView": "End time on week and day view", + "showToolbar": "Show toolbar", + "showViewSwitcher": "Show view switcher", + "highlightToday": "Highlight today", + "showPopoverWhenEventIsClicked": "Show popover when event is clicked", + "cellSizeInViewsClassifiedByResource": "Cell size in views classified by resource", + "headerDateFormatOnWeekView": "Header date format on week view", + "showLineNumber": "Show Line Number", + "mode": "Mode", + "tabs": "Tabs", + "defaultTab": "Default tab", + "hideTabs": "Hide Tabs", + "highlightColor": "Highlight Color", + "tabWidth": "Tab width", + "setCurrentTab": "Set current tab", + "id": "Id", + "timerType": "Timer type", + "listData": "List data", + "rowHeight": "Row height", + "showBottomBorder": "Show bottom border", + "tags": "Tags", + "numberOfPages": "Number of pages", + "defaultPageIndex": "Default page index", + "progress": "Progress", + "color": "Color", + "strokeWidth": "Stroke Width", + "counterClockwise": "Counter Clockwise", + "circleRatio": "Circle Ratio", + "colour": "Colour", + "size": "Size", + "primaryValueLabel": "Primary value label", + "primaryValue": "Primary value", + "hideSecondaryValue": "Hide secondary value", + "secondaryValueLabel": "Secondary value label", + "secondaryValue": "Secondary value", + "secondarySignDisplay": "Secondary sign display", + "primaryLabelColour": "Primary Label Colour", + "primaryTextColour": "Primary Text Colour", + "secondaryLabelColour": "Secondary Label Colour", + "secondaryTextColour": "Secondary Text Colour", + "min": "Min", + "max": "Max", + "value": "Value", + "twoHandles": "Two handles", + "lineColor": "Line color", + "handleColor": "Handle color", + "trackColor": "Track color", + "timelineData": "Timeline data", + "hideDate": "Hide Date", + "svgData": "Svg data", + "rawHtml": "Raw HTML", + "values": "values", + "labels": "Labels", + "defaultSelected": "Default selected", + "enableMutipleSelection": "Enable mutiple selection", + "selectedTextColour": "Selected text colour", + "selectedBackgroundColor": "Selected background color", + "fileUrl": "File URL", + "scalePageToWidth": "Scale page to width", + "showPageControls": "Show page controls", + "steps": "Steps", + "currentStep": "Current step", + "stepsSelectable": "Steps selectable", + "theme": "Theme", + "columns": "Columns", + "cardData": "Card Data", + "enableAddCard": "Enable Add Card", + "width": "Width", + "minWidth": "Min Width", + "accentColor": "Accent color", + "defaultColor": "Default Color", + "setColor": "Set Color", + "structure": "Structure", + "checkedValues": "Checked Values", + "expandedValues": "Expanded Values" + }, + "Table": { + "displayName": "Table", + "description": "Display paginated tabular data", + "columnType": "Column type", + "columnName": "Column name", + "overflow": "Overflow", + "key": "key", + "textColor": "Text color", + "validation": "Validation", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customRule": "Custom rule", + "values": "Values", + "labels": "Labels", + "cellBgColor": "Cell Background Color", + "dateDisplayformat": "Date Display Format", + "dateParseformat": "Date Parse Format", + "showTime": "show time", + "makeEditable": "make editable", + "buttonText": "Button Text", + "buttonPosition": "Button Position", + "remove": "Remove", + "addButton": "+ Add button", + "addColumn": "+ Add column", + "noActionMessage": "This table doesn't have any action buttons" + }, + "Button": { + "displayName": "Button", + "description": "Trigger actions: queries, alerts etc" + }, + "Chart": { + "displayName": "Chart", + "description": "Display charts" + }, + "Modal" : { + "displayName": "Modal", + "description": "Modal triggered by events" + }, + "TextInput" : { + "displayName": "Text Input", + "description": "Text field for forms" + }, + "NumberInput" :{ + "displayName": "Number Input", + "description": "Number field for forms" + }, + "PasswordInput":{ + "displayName": "Password Input", + "description": "Password input field for forms" + }, + "Datepicker" :{ + "displayName": "Date Picker", + "description": "Select a date and time" + }, + "Checkbox":{ + "displayName": "Checkbox", + "description": "A single checkbox" + }, + "Radio-button":{ + "displayName": "Radio Button", + "description": "Radio buttons" + }, + "ToggleSwitch":{ + "displayName": "Toggle Switch", + "description": "Toggle Switch" + }, + "Textarea":{ + "displayName": "Textarea", + "description": "Text area form field" + }, + "DateRangePicker":{ + "displayName": "Range Picker", + "description": "Select a date range" + }, + "Text":{ + "displayName": "Text", + "description": "Display markdown or HTML" + }, + "Image":{ + "displayName": "Image", + "description": "Display an Image" + }, + "Container":{ + "displayName": "Container", + "description": "Wrapper for multiple components" + }, + "Dropdown":{ + "displayName": "Dropdown", + "description": "Select one value from options" + }, + "Multiselect":{ + "displayName": "Multiselect", + "description": "Select multiple values from options" + }, + "RichTextEditor":{ + "displayName": "Text Editor", + "description": "Rich text editor" + }, + "Map":{ + "displayName": "Map", + "description": "Display Google Maps" + }, + "QrScanner":{ + "displayName": "QR Scanner", + "description": "Scan QR codes and hold its data" + }, + "StarRating":{ + "displayName": "Rating", + "description": "Star rating" + }, + "Divider":{ + "displayName": "Divider", + "description": "Separator between components" + }, + "FilePicker":{ + "displayName": "File Picker", + "description": "File Picker" + }, + "Calendar":{ + "displayName": "Calendar", + "description": "Calendar" + }, + "Iframe":{ + "displayName": "Iframe", + "description": "Display an Iframe" + }, + "CodeEditor":{ + "displayName": "Code Editor", + "description": "Code Editor" + }, + "Tabs":{ + "displayName": "Tabs", + "description": "Tabs component" + }, + "Timer":{ + "displayName": "Timer", + "description": "timer" + }, + "Listview":{ + "displayName": "List View", + "description": "Wrapper for multiple components" + }, + "Tags":{ + "displayName": "Tags", + "description": "Content can be shown as tags" + }, + "Pagination":{ + "displayName": "Pagination", + "description": "Pagination " + }, + "CircularProgressbar":{ + "displayName": "Circular Progressbar", + "description": "Show the progress using circular progressbar" + }, + "Spinner":{ + "displayName": "Spinner", + "description": "Spinner can be used to display loading status" + }, + "Statistics":{ + "displayName": "Statistics", + "description": "Statistics can be used to display different statistical information" + }, + "RangeSlider":{ + "displayName": "Range Slider", + "description": "Can be used to show slider with a range" + }, + "Timeline":{ + "displayName": "Timeline", + "description": "Visual representation of a sequence of events" + }, + "SvgImage":{ + "displayName": "Svg Image", + "description": "Svg image" + }, + "Html":{ + "displayName": "HTML Viewer", + "description": "HTML Viewer" + }, + "VerticalDivider":{ + "displayName": "Vertical Divider", + "description": "Vertical Separator between components" + }, + "CustomComponent":{ + "displayName": "Custom Component", + "description": "Add your custom react component" + }, + "ButtonGroup":{ + "displayName": "Button Group", + "description": "ButtonGroup" + }, + "PDF":{ + "displayName": "PDF", + "description": "Embed PDF file" + }, + "Steps":{ + "displayName": "Steps", + "description": "Steps" + }, + "KanbanBoard":{ + "displayName": "Kanban Board", + "description": "Kanban Board" + }, + "ColorPicker":{ + "displayName": "Color Picker", + "description": "Color Picker Pallete" + }, + "TreeSelect":{ + "displayName": "Tree Select", + "description": "Select values from a tree view" + } + }, + "leftSidebar":{ + "Inspector":{ + "text":"Inspector", + "tip" : "Inspector" + }, + "Sources" :{ + "text":"Sources", + "tip" : "Add or edit datasources", + "dataSources":"Data sources", + "addDataSource":"+ add data source" + }, + "Debugger":{ + "text":"Debugger", + "tip" : "Debugger", + "errors":"Errors", + "noErrors":"No errors found", + "clear":"clear" + }, + "Comments":{ + "text":"Comments", + "tip" : "toggle comments", + "commentBody":"There are no comments to display", + "typeComment":"Type your comment here" + }, + "Settings":{ + "text":"Settings", + "tip" : "Global Settings", + "hideHeader": "Hide header for launched apps", + "maintenanceMode":"Maintenance mode", + "maxWidthOfCanvas":"Max width of canvas", + "maxHeightOfCanvas" :"Max height of canvas", + "backgroundColorOfCanvas":"Background color of canvas" + + }, + "Back":{ + "text":"Back", + "tip" : "Back to Home" + } + } +} diff --git a/frontend/assets/translations/languages.json b/frontend/assets/translations/languages.json new file mode 100644 index 0000000000..8f3f7572cf --- /dev/null +++ b/frontend/assets/translations/languages.json @@ -0,0 +1,6 @@ +{ + "languageList": [ + { "lang": "English", "code": "en", "nativeLang": "English" }, + { "lang": "French", "code": "fr", "nativeLang": "Français" } + ] +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0b53dac471..7df9bd498a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -25,6 +25,11 @@ "emoji-mart": "^3.0.1", "fuse.js": "^6.4.6", "history": "^4.9.0", + "html-loader": "^3.1.0", + "html-webpack-plugin": "^5.3.2", + "i18next": "^21.8.14", + "i18next-browser-languagedetector": "^6.1.4", + "i18next-http-backend": "^1.4.1", "immer": "^9.0.6", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", @@ -54,6 +59,7 @@ "react-google-login": "^5.2.2", "react-hot-toast": "^2.1.1", "react-hotkeys-hook": "^3.4.4", + "react-i18next": "^11.18.3", "react-json-tree": "^0.16.1", "react-json-view": "^1.21.3", "react-lazy-load-image-component": "^1.5.1", @@ -13605,9 +13611,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "devOptional": true, "engines": { "node": ">=6.9.0" @@ -13687,12 +13693,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "devOptional": true, "dependencies": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -13726,12 +13732,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "devOptional": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -13752,14 +13758,14 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.18.9", @@ -13773,9 +13779,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -13836,13 +13842,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "devOptional": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -13884,9 +13890,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "devOptional": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -13894,9 +13900,9 @@ "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -13915,9 +13921,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -14019,15 +14025,15 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -14060,9 +14066,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "devOptional": true, "bin": { "parser": "bin/babel-parser.js" @@ -14104,13 +14110,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -14649,16 +14655,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" @@ -14845,14 +14852,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -14880,13 +14887,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", + "integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -14983,16 +14990,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -15117,12 +15124,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { @@ -15209,18 +15216,18 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-async-generator-functions": "^7.19.0", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -15254,9 +15261,9 @@ "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.13", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -15266,9 +15273,9 @@ "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-parameters": "^7.18.8", @@ -15276,14 +15283,14 @@ "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-spread": "^7.19.0", "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", + "@babel/types": "^7.19.0", "babel-plugin-polyfill-corejs2": "^0.3.2", "babel-plugin-polyfill-corejs3": "^0.5.3", "babel-plugin-polyfill-regenerator": "^0.4.0", @@ -15372,19 +15379,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "devOptional": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^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.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -15393,9 +15400,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dependencies": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -15569,9 +15576,9 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.3.tgz", - "integrity": "sha512-pe7L+LnITFHUSUnuhSQRyYN2E5Anl0r7x/jW+ufc+4fBcaK3Q51b/3ufFWWhmIiuCkr7oKtmVSpaJ1DxbtSfuw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", + "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", "cpu": [ "loong64" ], @@ -17074,13 +17081,13 @@ } }, "node_modules/@sentry/browser": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.0.tgz", - "integrity": "sha512-VoqZj3wJm5aUIDG+7LjeSHIw9/pujrUlA1QMu2YOY3LaP6UQsAAsOSo52brnaQQcwBrRySksaaaTxg6obJwInw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.1.tgz", + "integrity": "sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA==", "dependencies": { - "@sentry/core": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/core": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { @@ -17088,13 +17095,13 @@ } }, "node_modules/@sentry/core": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.0.tgz", - "integrity": "sha512-ERkeB/XdThvdSVZH4XysMPyWRG653HDq0AkJh8SgapExCZbwgj1lutCIpT1LIbZ8lUhRx5P+ua9OR2qj+vo5RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.1.tgz", + "integrity": "sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ==", "dependencies": { - "@sentry/hub": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { @@ -17102,12 +17109,12 @@ } }, "node_modules/@sentry/hub": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.0.tgz", - "integrity": "sha512-UgpC9WiHQAfcoEIIgeIopp3jeabllK6beLl5vA4ei6ay2TDMjA4NqUpzGq/GWVG0ewnblvHkqmjwAls2AEMtWg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.1.tgz", + "integrity": "sha512-KLVnVqXf+CRmXNy9/T8K2/js7QvOQ94xtgP5KnWJbu2rl+JhxnIGiBRF51lPXFIatt7zWwB9qNdMS8lVsvLMGQ==", "dependencies": { - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { @@ -17115,13 +17122,13 @@ } }, "node_modules/@sentry/react": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.0.tgz", - "integrity": "sha512-ESWDE0JGTF57ax+NHkQwHStRHR2pR2IiOkwYTHTFfKkltyLZHkJZMBX3oLMRwU7pgS5LKTtVYAoPDndWfIJGqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.1.tgz", + "integrity": "sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g==", "dependencies": { - "@sentry/browser": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/browser": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -17133,13 +17140,13 @@ } }, "node_modules/@sentry/tracing": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.0.tgz", - "integrity": "sha512-TK30G/g15KplKOPncu61XvNLjaI+Kbe64UBTSTANMkidlEjiZ8N0P8L9AqUG+rUIk7YbIu11DS6edGY/LK0WEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.1.tgz", + "integrity": "sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A==", "dependencies": { - "@sentry/hub": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { @@ -17147,19 +17154,19 @@ } }, "node_modules/@sentry/types": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.0.tgz", - "integrity": "sha512-ldcuRzEx2ccZvaJjTSemWj+7TiWCV5A/vV7fEtZeoETFI+SiVbmqI5whdH7ZVVfhRNFf25Ib+TfTeaM9PM7A1A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.1.tgz", + "integrity": "sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-GVB8E0V3RJHQClvi0gsRRJvDXP5c7M5ByYAvspJDczOOxNF8LTjTYVkBXAUdR9kcs+nya1q1YVsKvde2WGORTA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.1.tgz", + "integrity": "sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ==", "dependencies": { - "@sentry/types": "7.12.0", + "@sentry/types": "7.12.1", "tslib": "^1.9.3" }, "engines": { @@ -19685,9 +19692,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001388", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", - "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==", + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==", "funding": [ { "type": "opencollective", @@ -20142,27 +20149,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.0.tgz", - "integrity": "sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "dev": true, "dependencies": { - "browserslist": "^4.21.3", - "semver": "7.0.0" + "browserslist": "^4.21.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-js-pure": { "version": "3.10.0", "integrity": "sha512-CC582enhrFZStO4F8lGI7QL3SYx7/AIRc+IdSi3btrQGrVsTawo5K/crmKbRrQ+MOMhNX4v+PATn0k2NN6wI7A==", @@ -20932,9 +20930,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.240", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.240.tgz", - "integrity": "sha512-r20dUOtZ4vUPTqAajDGonIM1uas5tf85Up+wPdtNBNvBSqGCfkpvMVvQ1T8YJzPV9/Y9g3FbUDcXb94Rafycow==" + "version": "1.4.244", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.244.tgz", + "integrity": "sha512-E21saXLt2eTDaTxgUtiJtBUqanF9A32wZasAwDZ8gvrqXoxrBrbwtDCx7c/PQTLp81wj4X0OLDeoGQg7eMo3+w==" }, "node_modules/emittery": { "version": "0.8.1", @@ -21114,9 +21112,9 @@ } }, "node_modules/esbuild": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.3.tgz", - "integrity": "sha512-D1qLizJTYlGIOK5m/1ckH8vR2U573eLMMA57qvWg/9jj8jPIhjpafv4kxb6ra2eeTlVq8tISxjsyRKbTaeF6PA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", + "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", "dev": true, "hasInstallScript": true, "bin": { @@ -21126,33 +21124,33 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.3", - "esbuild-android-64": "0.15.3", - "esbuild-android-arm64": "0.15.3", - "esbuild-darwin-64": "0.15.3", - "esbuild-darwin-arm64": "0.15.3", - "esbuild-freebsd-64": "0.15.3", - "esbuild-freebsd-arm64": "0.15.3", - "esbuild-linux-32": "0.15.3", - "esbuild-linux-64": "0.15.3", - "esbuild-linux-arm": "0.15.3", - "esbuild-linux-arm64": "0.15.3", - "esbuild-linux-mips64le": "0.15.3", - "esbuild-linux-ppc64le": "0.15.3", - "esbuild-linux-riscv64": "0.15.3", - "esbuild-linux-s390x": "0.15.3", - "esbuild-netbsd-64": "0.15.3", - "esbuild-openbsd-64": "0.15.3", - "esbuild-sunos-64": "0.15.3", - "esbuild-windows-32": "0.15.3", - "esbuild-windows-64": "0.15.3", - "esbuild-windows-arm64": "0.15.3" + "@esbuild/linux-loong64": "0.15.7", + "esbuild-android-64": "0.15.7", + "esbuild-android-arm64": "0.15.7", + "esbuild-darwin-64": "0.15.7", + "esbuild-darwin-arm64": "0.15.7", + "esbuild-freebsd-64": "0.15.7", + "esbuild-freebsd-arm64": "0.15.7", + "esbuild-linux-32": "0.15.7", + "esbuild-linux-64": "0.15.7", + "esbuild-linux-arm": "0.15.7", + "esbuild-linux-arm64": "0.15.7", + "esbuild-linux-mips64le": "0.15.7", + "esbuild-linux-ppc64le": "0.15.7", + "esbuild-linux-riscv64": "0.15.7", + "esbuild-linux-s390x": "0.15.7", + "esbuild-netbsd-64": "0.15.7", + "esbuild-openbsd-64": "0.15.7", + "esbuild-sunos-64": "0.15.7", + "esbuild-windows-32": "0.15.7", + "esbuild-windows-64": "0.15.7", + "esbuild-windows-arm64": "0.15.7" } }, "node_modules/esbuild-android-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.3.tgz", - "integrity": "sha512-sHGQ50Bb80ow+DZ8s6mabWn/j+vgfsNDMhipv4v410O++C6gpEcR9A5jR9bTkMsVbr46Id0MMhUGpBasq8H92A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", + "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", "cpu": [ "x64" ], @@ -21166,9 +21164,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.3.tgz", - "integrity": "sha512-+Oiwzgp7HTyeNkgpQySGLCq3zFmvVVyBiNz8bO+7Tc6tlnxSYf8jjQBThRTUsy6vrrjG91h9vZNlYkiikzzWUg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", + "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", "cpu": [ "arm64" ], @@ -21182,9 +21180,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.3.tgz", - "integrity": "sha512-n2BkxzCPHv6OOOs9gxp4AYsccawuw9bDeW9rpSASHao0zQ/u0kP6bjD4ATf2G4A3cml8HGwp18aROl4ws+4Ytg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", + "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", "cpu": [ "x64" ], @@ -21198,9 +21196,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.3.tgz", - "integrity": "sha512-fSk5M1vQ+y48csVJ4QxweT//DdDytDAb0AvU1gYITqZGA1kL1/i4C5fjKDNZMjB7dkg2a+rfkMyrpZUli+To/w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", + "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", "cpu": [ "arm64" ], @@ -21214,9 +21212,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.3.tgz", - "integrity": "sha512-b21XfM0Wrxu0CzFQN7B4xuAMGUNLT3F3J2NMeLxbUq6lcl2N3Isho1q2AF5bOCpCXVM04k1+PgoQLwNzGYtnjw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", + "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", "cpu": [ "x64" ], @@ -21230,9 +21228,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.3.tgz", - "integrity": "sha512-E0LkWSz7Ch1B2WFXbGvfN3q9uUlQCahBi3S7wTSJO2T41x0BPnIFHw79/RuGKVyA17mX/I7RVOSRnrla2D4tag==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", + "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", "cpu": [ "arm64" ], @@ -21246,9 +21244,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.3.tgz", - "integrity": "sha512-af7BhXXKwzXL83bfJX8vkxsyDbOr9T5auxyBJnBfkd2w7VwXC1heDT2TQ1cWCWyjqVatyKudW5RCSAySDKDW2Q==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", + "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", "cpu": [ "ia32" ], @@ -21262,9 +21260,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.3.tgz", - "integrity": "sha512-Wwq+5ZF2IPE/6W2kJLPnh7eXqtz5XtdPBRB77nhm02my6PsZR3aa/q/fRkJhwO6ExM+t9l3kFhWL4pMwk3wREA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", + "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", "cpu": [ "x64" ], @@ -21278,9 +21276,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.3.tgz", - "integrity": "sha512-88ycpH4GrbOzaZIIXIzljbeCUkzoaJ5luP6+LATa5hk/Wl+OHkAieDfjAHdH8KuHkGYTojKE1npQq9gll9efUA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", + "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", "cpu": [ "arm" ], @@ -21294,9 +21292,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.3.tgz", - "integrity": "sha512-qNvYyYjNm4JPXJcCJv7gXEnyqw2k9W+SeYMoG7RiwWHWv1cMX6xlxPLGz5yIxjH9+VBXkA1nrY/YohaiKq2O3g==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", + "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", "cpu": [ "arm64" ], @@ -21310,9 +21308,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.3.tgz", - "integrity": "sha512-t5TXW6Cw8S9Lts7SDZ8rlx/dqPJx8hndYKL6xEgA2vdlrE60eIYTAYWJqsGN0dgePtFC1RPyH6To15l7s9WdYA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", + "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", "cpu": [ "mips64el" ], @@ -21326,9 +21324,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.3.tgz", - "integrity": "sha512-TXxPgEWOPCY4F6ZMf7+915+H0eOB6AlcZBwjeBs+78ULpzvcmMzZ2ujF2IejKZXYWuMTORPNoG+MuVGBuyUysA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", + "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", "cpu": [ "ppc64" ], @@ -21342,9 +21340,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.3.tgz", - "integrity": "sha512-04tvrbHA83N+tg+qQeJmUQ3jWStUP7+rw+v/l2h3PsNGbcH3WmsgR0Tf0e1ext09asV4x2PX2b2Nm/gBIOrpqg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", + "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", "cpu": [ "riscv64" ], @@ -21358,9 +21356,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.3.tgz", - "integrity": "sha512-LHxnvvFMhA/uy9CSrnlCtPZnTfWahR9NPLKwXBgfg16YqpKbRHty+mek1o7l+2G5qLeFEEvhB0a7c+hYgbW/3w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", + "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", "cpu": [ "s390x" ], @@ -21374,9 +21372,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.3.tgz", - "integrity": "sha512-8W0UxNuNsgBBa1SLjwqbbDLJF9mf+lvytaYPt5kXbBrz0DI4mKYFlujLQrxLKh8tvs2zRdFNy9HVqmMdbZ1OIQ==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", + "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", "cpu": [ "x64" ], @@ -21390,9 +21388,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.3.tgz", - "integrity": "sha512-QL7xYQ4noukuqh8UGnsrk1m+ShPMYIXjOnAQl3siA7VV6cjuUoCxx6cThgcUDzih8iL5u2xgsGRhsviQIMsUuA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", + "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", "cpu": [ "x64" ], @@ -21406,9 +21404,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.3.tgz", - "integrity": "sha512-vID32ZCZahWDqlEoq9W7OAZDtofAY8aW0V58V5l+kXEvaKvR0m99FLNRuGGY3IDNwjUoOkvoFiMMiy+ONnN7GA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", + "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", "cpu": [ "x64" ], @@ -21422,9 +21420,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.3.tgz", - "integrity": "sha512-dnrlwu6T85QU9fO0a35HAzgAXm3vVqg+3Kr9EXkmnf5PHv9t7hT/EYW6g/8YYu91DDyGTk9JSyN32YzQ3OS9Lw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", + "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", "cpu": [ "ia32" ], @@ -21438,9 +21436,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.3.tgz", - "integrity": "sha512-HUSlVCpTtOnIKeIn05zz0McNCfZhnu5UgUypmpNrv4Ff1XTvl6vBpQwIZ49eIAkY9zI6oe1Mu6N5ZG7u6X4s7A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", + "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", "cpu": [ "x64" ], @@ -21454,9 +21452,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.3.tgz", - "integrity": "sha512-sk6fVXCzGB0uW089+8LdeanZkQUZ+3/xdbWshgLGRawV0NyjSFH4sZPIy+DJnhEnT0pPt1DabZtqrq2DT0FWNw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", + "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", "cpu": [ "arm64" ], @@ -23778,6 +23776,14 @@ "node": ">= 6" } }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" + } + }, "node_modules/html-webpack-plugin": { "version": "5.3.2", "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", @@ -24048,6 +24054,66 @@ "node": ">=10.17.0" } }, + "node_modules/i18next": { + "version": "21.8.14", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.14.tgz", + "integrity": "sha512-4Yi+DtexvMm/Yw3Q9fllzY12SgLk+Mcmar+rCAccsOPul/2UmnBzoHbTGn/L48IPkFcmrNaH7xTLboBWIbH6pw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.17.2" + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz", + "integrity": "sha512-wukWnFeU7rKIWT66VU5i8I+3Zc4wReGcuDK2+kuFhtoxBRGWGdvYI9UQmqNL/yQH1KogWwh+xGEaIPH8V/i2Zg==", + "dependencies": { + "@babel/runtime": "^7.14.6" + } + }, + "node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/i18next-http-backend": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.1.tgz", + "integrity": "sha512-s4Q9hK2jS29iyhniMP82z+yYY8riGTrWbnyvsSzi5TaF7Le4E7b5deTmtuaRuab9fdDcYXtcwdBgawZG+JCEjA==", + "dependencies": { + "cross-fetch": "3.1.5" + } + }, + "node_modules/i18next/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", @@ -28748,9 +28814,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "dependencies": { "moment": ">= 2.9.0" }, @@ -30362,6 +30428,38 @@ "react-dom": ">=16.8.1" } }, + "node_modules/react-i18next": { + "version": "11.18.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.3.tgz", + "integrity": "sha512-EttTX31HbqzZymUM3SIrMPuvamfSXFZVsDHm/ZAqoDfTLjhzlwyxqfbDNxcKNAGOi2mjZaXfR7hSNMlvLNpB/g==", + "dependencies": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-i18next/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/react-input-autosize": { "version": "3.0.0", "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", @@ -32384,9 +32482,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.4.tgz", - "integrity": "sha512-SmnkUhBxLDcBfTIeaq+ZqJXLVEyXxSaNcCeSezECdKjfkMrTTnPvapBILylYwyEvHFZAn2cJ8dtiXel5XnfOfQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -32445,9 +32543,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -32999,6 +33097,14 @@ "extsprintf": "^1.2.0" } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", @@ -34039,9 +34145,9 @@ } }, "@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "devOptional": true }, "@babel/core": { @@ -34099,12 +34205,12 @@ } }, "@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "devOptional": true, "requires": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -34129,12 +34235,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "devOptional": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -34148,14 +34254,14 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.18.9", @@ -34163,9 +34269,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -34210,13 +34316,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "devOptional": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -34246,9 +34352,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "devOptional": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -34256,9 +34362,9 @@ "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-optimise-call-expression": { @@ -34271,9 +34377,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -34345,15 +34451,15 @@ "devOptional": true }, "@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helpers": { @@ -34377,9 +34483,9 @@ } }, "@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "devOptional": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -34403,13 +34509,13 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } @@ -34759,16 +34865,17 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" @@ -34883,14 +34990,14 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } @@ -34906,13 +35013,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", + "integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { @@ -34970,16 +35077,16 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" } }, "@babel/plugin-transform-react-jsx-development": { @@ -35058,12 +35165,12 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, @@ -35114,18 +35221,18 @@ } }, "@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-async-generator-functions": "^7.19.0", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -35159,9 +35266,9 @@ "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.13", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -35171,9 +35278,9 @@ "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-parameters": "^7.18.8", @@ -35181,14 +35288,14 @@ "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-spread": "^7.19.0", "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", + "@babel/types": "^7.19.0", "babel-plugin-polyfill-corejs2": "^0.3.2", "babel-plugin-polyfill-corejs3": "^0.5.3", "babel-plugin-polyfill-regenerator": "^0.4.0", @@ -35258,27 +35365,27 @@ } }, "@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "devOptional": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^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.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "requires": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -35435,9 +35542,9 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@esbuild/linux-loong64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.3.tgz", - "integrity": "sha512-pe7L+LnITFHUSUnuhSQRyYN2E5Anl0r7x/jW+ufc+4fBcaK3Q51b/3ufFWWhmIiuCkr7oKtmVSpaJ1DxbtSfuw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", + "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", "dev": true, "optional": true }, @@ -36582,71 +36689,71 @@ } }, "@sentry/browser": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.0.tgz", - "integrity": "sha512-VoqZj3wJm5aUIDG+7LjeSHIw9/pujrUlA1QMu2YOY3LaP6UQsAAsOSo52brnaQQcwBrRySksaaaTxg6obJwInw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.1.tgz", + "integrity": "sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA==", "requires": { - "@sentry/core": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/core": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/core": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.0.tgz", - "integrity": "sha512-ERkeB/XdThvdSVZH4XysMPyWRG653HDq0AkJh8SgapExCZbwgj1lutCIpT1LIbZ8lUhRx5P+ua9OR2qj+vo5RA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.1.tgz", + "integrity": "sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ==", "requires": { - "@sentry/hub": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/hub": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.0.tgz", - "integrity": "sha512-UgpC9WiHQAfcoEIIgeIopp3jeabllK6beLl5vA4ei6ay2TDMjA4NqUpzGq/GWVG0ewnblvHkqmjwAls2AEMtWg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.1.tgz", + "integrity": "sha512-KLVnVqXf+CRmXNy9/T8K2/js7QvOQ94xtgP5KnWJbu2rl+JhxnIGiBRF51lPXFIatt7zWwB9qNdMS8lVsvLMGQ==", "requires": { - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/react": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.0.tgz", - "integrity": "sha512-ESWDE0JGTF57ax+NHkQwHStRHR2pR2IiOkwYTHTFfKkltyLZHkJZMBX3oLMRwU7pgS5LKTtVYAoPDndWfIJGqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.1.tgz", + "integrity": "sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g==", "requires": { - "@sentry/browser": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/browser": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" } }, "@sentry/tracing": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.0.tgz", - "integrity": "sha512-TK30G/g15KplKOPncu61XvNLjaI+Kbe64UBTSTANMkidlEjiZ8N0P8L9AqUG+rUIk7YbIu11DS6edGY/LK0WEQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.1.tgz", + "integrity": "sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A==", "requires": { - "@sentry/hub": "7.12.0", - "@sentry/types": "7.12.0", - "@sentry/utils": "7.12.0", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/types": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.0.tgz", - "integrity": "sha512-ldcuRzEx2ccZvaJjTSemWj+7TiWCV5A/vV7fEtZeoETFI+SiVbmqI5whdH7ZVVfhRNFf25Ib+TfTeaM9PM7A1A==" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.1.tgz", + "integrity": "sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ==" }, "@sentry/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-GVB8E0V3RJHQClvi0gsRRJvDXP5c7M5ByYAvspJDczOOxNF8LTjTYVkBXAUdR9kcs+nya1q1YVsKvde2WGORTA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.1.tgz", + "integrity": "sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ==", "requires": { - "@sentry/types": "7.12.0", + "@sentry/types": "7.12.1", "tslib": "^1.9.3" } }, @@ -48728,9 +48835,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001388", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", - "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==" + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==" }, "caseless": { "version": "0.12.0", @@ -49077,20 +49184,12 @@ "integrity": "sha512-MQx/7TLgmmDVamSyfE+O+5BHvG1aUGj/gHhLn1wVtm2B5u1eVIPvh7vkfjwWKNCjrTJB8+He99IntSQ1qP+vYQ==" }, "core-js-compat": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.0.tgz", - "integrity": "sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "dev": true, "requires": { - "browserslist": "^4.21.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.3" } }, "core-js-pure": { @@ -49702,9 +49801,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.240", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.240.tgz", - "integrity": "sha512-r20dUOtZ4vUPTqAajDGonIM1uas5tf85Up+wPdtNBNvBSqGCfkpvMVvQ1T8YJzPV9/Y9g3FbUDcXb94Rafycow==" + "version": "1.4.244", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.244.tgz", + "integrity": "sha512-E21saXLt2eTDaTxgUtiJtBUqanF9A32wZasAwDZ8gvrqXoxrBrbwtDCx7c/PQTLp81wj4X0OLDeoGQg7eMo3+w==" }, "emittery": { "version": "0.8.1", @@ -49835,171 +49934,171 @@ } }, "esbuild": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.3.tgz", - "integrity": "sha512-D1qLizJTYlGIOK5m/1ckH8vR2U573eLMMA57qvWg/9jj8jPIhjpafv4kxb6ra2eeTlVq8tISxjsyRKbTaeF6PA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", + "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", "dev": true, "requires": { - "@esbuild/linux-loong64": "0.15.3", - "esbuild-android-64": "0.15.3", - "esbuild-android-arm64": "0.15.3", - "esbuild-darwin-64": "0.15.3", - "esbuild-darwin-arm64": "0.15.3", - "esbuild-freebsd-64": "0.15.3", - "esbuild-freebsd-arm64": "0.15.3", - "esbuild-linux-32": "0.15.3", - "esbuild-linux-64": "0.15.3", - "esbuild-linux-arm": "0.15.3", - "esbuild-linux-arm64": "0.15.3", - "esbuild-linux-mips64le": "0.15.3", - "esbuild-linux-ppc64le": "0.15.3", - "esbuild-linux-riscv64": "0.15.3", - "esbuild-linux-s390x": "0.15.3", - "esbuild-netbsd-64": "0.15.3", - "esbuild-openbsd-64": "0.15.3", - "esbuild-sunos-64": "0.15.3", - "esbuild-windows-32": "0.15.3", - "esbuild-windows-64": "0.15.3", - "esbuild-windows-arm64": "0.15.3" + "@esbuild/linux-loong64": "0.15.7", + "esbuild-android-64": "0.15.7", + "esbuild-android-arm64": "0.15.7", + "esbuild-darwin-64": "0.15.7", + "esbuild-darwin-arm64": "0.15.7", + "esbuild-freebsd-64": "0.15.7", + "esbuild-freebsd-arm64": "0.15.7", + "esbuild-linux-32": "0.15.7", + "esbuild-linux-64": "0.15.7", + "esbuild-linux-arm": "0.15.7", + "esbuild-linux-arm64": "0.15.7", + "esbuild-linux-mips64le": "0.15.7", + "esbuild-linux-ppc64le": "0.15.7", + "esbuild-linux-riscv64": "0.15.7", + "esbuild-linux-s390x": "0.15.7", + "esbuild-netbsd-64": "0.15.7", + "esbuild-openbsd-64": "0.15.7", + "esbuild-sunos-64": "0.15.7", + "esbuild-windows-32": "0.15.7", + "esbuild-windows-64": "0.15.7", + "esbuild-windows-arm64": "0.15.7" } }, "esbuild-android-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.3.tgz", - "integrity": "sha512-sHGQ50Bb80ow+DZ8s6mabWn/j+vgfsNDMhipv4v410O++C6gpEcR9A5jR9bTkMsVbr46Id0MMhUGpBasq8H92A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", + "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.3.tgz", - "integrity": "sha512-+Oiwzgp7HTyeNkgpQySGLCq3zFmvVVyBiNz8bO+7Tc6tlnxSYf8jjQBThRTUsy6vrrjG91h9vZNlYkiikzzWUg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", + "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.3.tgz", - "integrity": "sha512-n2BkxzCPHv6OOOs9gxp4AYsccawuw9bDeW9rpSASHao0zQ/u0kP6bjD4ATf2G4A3cml8HGwp18aROl4ws+4Ytg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", + "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.3.tgz", - "integrity": "sha512-fSk5M1vQ+y48csVJ4QxweT//DdDytDAb0AvU1gYITqZGA1kL1/i4C5fjKDNZMjB7dkg2a+rfkMyrpZUli+To/w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", + "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.3.tgz", - "integrity": "sha512-b21XfM0Wrxu0CzFQN7B4xuAMGUNLT3F3J2NMeLxbUq6lcl2N3Isho1q2AF5bOCpCXVM04k1+PgoQLwNzGYtnjw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", + "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.3.tgz", - "integrity": "sha512-E0LkWSz7Ch1B2WFXbGvfN3q9uUlQCahBi3S7wTSJO2T41x0BPnIFHw79/RuGKVyA17mX/I7RVOSRnrla2D4tag==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", + "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.3.tgz", - "integrity": "sha512-af7BhXXKwzXL83bfJX8vkxsyDbOr9T5auxyBJnBfkd2w7VwXC1heDT2TQ1cWCWyjqVatyKudW5RCSAySDKDW2Q==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", + "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.3.tgz", - "integrity": "sha512-Wwq+5ZF2IPE/6W2kJLPnh7eXqtz5XtdPBRB77nhm02my6PsZR3aa/q/fRkJhwO6ExM+t9l3kFhWL4pMwk3wREA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", + "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.3.tgz", - "integrity": "sha512-88ycpH4GrbOzaZIIXIzljbeCUkzoaJ5luP6+LATa5hk/Wl+OHkAieDfjAHdH8KuHkGYTojKE1npQq9gll9efUA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", + "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.3.tgz", - "integrity": "sha512-qNvYyYjNm4JPXJcCJv7gXEnyqw2k9W+SeYMoG7RiwWHWv1cMX6xlxPLGz5yIxjH9+VBXkA1nrY/YohaiKq2O3g==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", + "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.3.tgz", - "integrity": "sha512-t5TXW6Cw8S9Lts7SDZ8rlx/dqPJx8hndYKL6xEgA2vdlrE60eIYTAYWJqsGN0dgePtFC1RPyH6To15l7s9WdYA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", + "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.3.tgz", - "integrity": "sha512-TXxPgEWOPCY4F6ZMf7+915+H0eOB6AlcZBwjeBs+78ULpzvcmMzZ2ujF2IejKZXYWuMTORPNoG+MuVGBuyUysA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", + "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.3.tgz", - "integrity": "sha512-04tvrbHA83N+tg+qQeJmUQ3jWStUP7+rw+v/l2h3PsNGbcH3WmsgR0Tf0e1ext09asV4x2PX2b2Nm/gBIOrpqg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", + "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.3.tgz", - "integrity": "sha512-LHxnvvFMhA/uy9CSrnlCtPZnTfWahR9NPLKwXBgfg16YqpKbRHty+mek1o7l+2G5qLeFEEvhB0a7c+hYgbW/3w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", + "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.3.tgz", - "integrity": "sha512-8W0UxNuNsgBBa1SLjwqbbDLJF9mf+lvytaYPt5kXbBrz0DI4mKYFlujLQrxLKh8tvs2zRdFNy9HVqmMdbZ1OIQ==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", + "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.3.tgz", - "integrity": "sha512-QL7xYQ4noukuqh8UGnsrk1m+ShPMYIXjOnAQl3siA7VV6cjuUoCxx6cThgcUDzih8iL5u2xgsGRhsviQIMsUuA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", + "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.3.tgz", - "integrity": "sha512-vID32ZCZahWDqlEoq9W7OAZDtofAY8aW0V58V5l+kXEvaKvR0m99FLNRuGGY3IDNwjUoOkvoFiMMiy+ONnN7GA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", + "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.3.tgz", - "integrity": "sha512-dnrlwu6T85QU9fO0a35HAzgAXm3vVqg+3Kr9EXkmnf5PHv9t7hT/EYW6g/8YYu91DDyGTk9JSyN32YzQ3OS9Lw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", + "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.3.tgz", - "integrity": "sha512-HUSlVCpTtOnIKeIn05zz0McNCfZhnu5UgUypmpNrv4Ff1XTvl6vBpQwIZ49eIAkY9zI6oe1Mu6N5ZG7u6X4s7A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", + "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.3.tgz", - "integrity": "sha512-sk6fVXCzGB0uW089+8LdeanZkQUZ+3/xdbWshgLGRawV0NyjSFH4sZPIy+DJnhEnT0pPt1DabZtqrq2DT0FWNw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", + "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", "dev": true, "optional": true }, @@ -51721,6 +51820,14 @@ } } }, + "html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "requires": { + "void-elements": "3.1.0" + } + }, "html-webpack-plugin": { "version": "5.3.2", "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", @@ -51915,6 +52022,50 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "i18next": { + "version": "21.8.14", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.14.tgz", + "integrity": "sha512-4Yi+DtexvMm/Yw3Q9fllzY12SgLk+Mcmar+rCAccsOPul/2UmnBzoHbTGn/L48IPkFcmrNaH7xTLboBWIbH6pw==", + "requires": { + "@babel/runtime": "^7.17.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "i18next-browser-languagedetector": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz", + "integrity": "sha512-wukWnFeU7rKIWT66VU5i8I+3Zc4wReGcuDK2+kuFhtoxBRGWGdvYI9UQmqNL/yQH1KogWwh+xGEaIPH8V/i2Zg==", + "requires": { + "@babel/runtime": "^7.14.6" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "i18next-http-backend": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.1.tgz", + "integrity": "sha512-s4Q9hK2jS29iyhniMP82z+yYY8riGTrWbnyvsSzi5TaF7Le4E7b5deTmtuaRuab9fdDcYXtcwdBgawZG+JCEjA==", + "requires": { + "cross-fetch": "3.1.5" + } + }, "iconv-lite": { "version": "0.4.24", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", @@ -55401,9 +55552,9 @@ "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" }, "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "requires": { "moment": ">= 2.9.0" } @@ -56592,6 +56743,25 @@ "hotkeys-js": "3.8.7" } }, + "react-i18next": { + "version": "11.18.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.3.tgz", + "integrity": "sha512-EttTX31HbqzZymUM3SIrMPuvamfSXFZVsDHm/ZAqoDfTLjhzlwyxqfbDNxcKNAGOi2mjZaXfR7hSNMlvLNpB/g==", + "requires": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, "react-input-autosize": { "version": "3.0.0", "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", @@ -58146,9 +58316,9 @@ } }, "terser-webpack-plugin": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.4.tgz", - "integrity": "sha512-SmnkUhBxLDcBfTIeaq+ZqJXLVEyXxSaNcCeSezECdKjfkMrTTnPvapBILylYwyEvHFZAn2cJ8dtiXel5XnfOfQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "requires": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -58173,9 +58343,9 @@ } }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -58580,6 +58750,11 @@ "extsprintf": "^1.2.0" } }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + }, "w3c-hr-time": { "version": "1.0.2", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", diff --git a/frontend/package.json b/frontend/package.json index 75ddf2f6ab..1eb1e10b8b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,6 +21,11 @@ "emoji-mart": "^3.0.1", "fuse.js": "^6.4.6", "history": "^4.9.0", + "html-loader": "^3.1.0", + "html-webpack-plugin": "^5.3.2", + "i18next": "^21.8.14", + "i18next-browser-languagedetector": "^6.1.4", + "i18next-http-backend": "^1.4.1", "immer": "^9.0.6", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", @@ -50,6 +55,7 @@ "react-google-login": "^5.2.2", "react-hot-toast": "^2.1.1", "react-hotkeys-hook": "^3.4.4", + "react-i18next": "^11.18.3", "react-json-tree": "^0.16.1", "react-json-view": "^1.21.3", "react-lazy-load-image-component": "^1.5.1", diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index fc2872b215..44530bf71c 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Suspense } from 'react'; import config from 'config'; import { BrowserRouter, Route, Redirect } from 'react-router-dom'; import { history } from '@/_helpers'; @@ -86,7 +86,7 @@ class App extends React.Component { } return ( - <> +
{updateAvailable && ( @@ -261,7 +261,7 @@ class App extends React.Component {
- +
); } } diff --git a/frontend/src/ConfirmationPage/ConfirmationPage.jsx b/frontend/src/ConfirmationPage/ConfirmationPage.jsx index 511ea470b0..bd88bb3ab6 100644 --- a/frontend/src/ConfirmationPage/ConfirmationPage.jsx +++ b/frontend/src/ConfirmationPage/ConfirmationPage.jsx @@ -4,8 +4,9 @@ import { toast } from 'react-hot-toast'; import GoogleSSOLoginButton from '@ee/components/LoginPage/GoogleSSOLoginButton'; import GitSSOLoginButton from '@ee/components/LoginPage/GitSSOLoginButton'; import { ShowLoading } from '@/_components'; +import { withTranslation } from 'react-i18next'; -class ConfirmationPage extends React.Component { +class ConfirmationPageComponent extends React.Component { constructor(props) { super(props); @@ -150,30 +151,33 @@ class ConfirmationPage extends React.Component { ) : (

- Set up your account + {this.props.t('confirmationPage.setupAccount', 'Set up your account')}

{this.state.configs?.enable_sign_up && (
{this.state.configs?.google?.enabled && ( )} {this.state.configs?.git?.enabled && ( - + )}

- OR + {this.props.t('confirmationPage.or', 'OR')}

)}
- Role + {this.props.t('confirmationPage.role', 'Role')}

- By clicking the button below, you agree to our{' '} - Terms and Conditions. + {this.props.t('confirmationPage.clickAndAgree', 'By clicking the button below, you agree to our')}{' '} + + {this.props.t('confirmationPage.termsAndConditions', 'Terms and Conditions')} + + .

@@ -291,4 +298,4 @@ class ConfirmationPage extends React.Component { } } -export { ConfirmationPage }; +export const ConfirmationPage = withTranslation()(ConfirmationPageComponent); diff --git a/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx b/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx index 9de472f7b0..9297cc98d2 100644 --- a/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx +++ b/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx @@ -4,8 +4,9 @@ import { toast } from 'react-hot-toast'; import GoogleSSOLoginButton from '@ee/components/LoginPage/GoogleSSOLoginButton'; import GitSSOLoginButton from '@ee/components/LoginPage/GitSSOLoginButton'; import { ShowLoading } from '@/_components'; +import { withTranslation } from 'react-i18next'; -class OrganizationInvitationPage extends React.Component { +class OrganizationInvitationPageComponent extends React.Component { constructor(props) { super(props); @@ -101,7 +102,7 @@ class OrganizationInvitationPage extends React.Component { {!this.single_organization ? ( <>

- Already have an account? + {this.props.t('confirmationPage.accountExists', 'Already have an account?')}

) : ( <>

- Set up your account + {this.props.t('confirmationPage.setupAccount', 'Set up your account')}

{this.state.configs?.enable_sign_up && (
{this.state.configs?.google?.enabled && ( )} {this.state.configs?.git?.enabled && ( - + )}

- OR + {this.props.t('confirmationPage.or', 'OR')}

)}

- By clicking the button below, you agree to our{' '} - Terms and Conditions. + {this.props.t( + 'confirmationPage.clickAndAgree', + 'By clicking the button below, you agree to our' + )}{' '} + + {this.props.t('confirmationPage.termsAndConditions', 'Terms and Conditions')} + + .

@@ -195,4 +207,4 @@ class OrganizationInvitationPage extends React.Component { } } -export { OrganizationInvitationPage }; +export const OrganizationInvitationPage = withTranslation()(OrganizationInvitationPageComponent); diff --git a/frontend/src/Editor/AppVersionsManager.jsx b/frontend/src/Editor/AppVersionsManager.jsx index 7ae6ad689f..3ba27f5d1e 100644 --- a/frontend/src/Editor/AppVersionsManager.jsx +++ b/frontend/src/Editor/AppVersionsManager.jsx @@ -5,6 +5,8 @@ import { appVersionService } from '@/_services'; import { Confirm } from './Viewer/Confirm'; import Select from '../_ui/Select'; import defaultStyle from '../_ui/Select/styles'; +import { useTranslation } from 'react-i18next'; + export const AppVersionsManager = function AppVersionsManager({ appId, editingVersion, @@ -13,6 +15,7 @@ export const AppVersionsManager = function AppVersionsManager({ showCreateVersionModalPrompt, closeCreateVersionModalPrompt, }) { + const { t } = useTranslation(); const [showDropDown, setShowDropDown] = useState(false); const [showModal, setShowModal] = useState(false); const [isCreatingVersion, setIsCreatingVersion] = useState(false); @@ -173,7 +176,7 @@ export const AppVersionsManager = function AppVersionsManager({ return (
- Version + {t('editor.appVersionManager.version', 'Version')} { @@ -198,8 +201,10 @@ export const AppVersionsManager = function AppVersionsManager({ >
{version.name}
- - Currently Released + + + {t('editor.appVersionManager.currentlyReleased', 'Currently Released')} +
@@ -271,11 +276,13 @@ export const AppVersionsManager = function AppVersionsManager({ setShowModal(true); }} > - Create Version + + {t('editor.appVersionManager.createVersion', 'Create Version')} +
deleteAppVersion(versionId)} queryConfirmationData={deletingVersionId} @@ -297,14 +304,18 @@ export const AppVersionsManager = function AppVersionsManager({ showCreateVersionModalPrompt={showCreateVersionModalPrompt} /> - setShowVersionUpdateModal(false)} title="Edit version"> + setShowVersionUpdateModal(false)} + title={t('editor.appVersionManager.editVersion', 'Edit Version')} + >
setVersionName(e.target.value)} className="form-control" - placeholder="version name" + placeholder={t('editor.appVersionManager.versionName', 'Version name')} disabled={isEditingVersion} value={versionName} maxLength={25} @@ -314,10 +325,10 @@ export const AppVersionsManager = function AppVersionsManager({
@@ -338,6 +349,7 @@ const CreateVersionModal = function CreateVersionModal({ appVersions, showCreateVersionModalPrompt, }) { + const { t } = useTranslation(); const handleKeyPress = (event) => { if (event.key === 'Enter') { // eslint-disable-next-line no-undef @@ -379,18 +391,18 @@ const CreateVersionModal = function CreateVersionModal({ setShowModal(false)} >
- + setVersionName(e.target.value)} className="form-control" - placeholder="Enter version name" + placeholder={t('editor.appVersionManager.enterVersionName', 'Enter version name')} disabled={isCreatingVersion} value={versionName} autoFocus={true} @@ -400,7 +412,7 @@ const CreateVersionModal = function CreateVersionModal({
- +
diff --git a/frontend/src/Editor/Components/Table/CustomSelect.jsx b/frontend/src/Editor/Components/Table/CustomSelect.jsx index 752ccfd8d4..f49e23b2c5 100644 --- a/frontend/src/Editor/Components/Table/CustomSelect.jsx +++ b/frontend/src/Editor/Components/Table/CustomSelect.jsx @@ -1,7 +1,10 @@ import React from 'react'; import SelectSearch from 'react-select-search'; +import { useTranslation } from 'react-i18next'; export const CustomSelect = ({ options, value, multiple, onChange }) => { + const { t } = useTranslation(); + function renderValue(valueProps) { if (valueProps) { return valueProps.value.split(', ').map((value, index) => ( @@ -22,7 +25,7 @@ export const CustomSelect = ({ options, value, multiple, onChange }) => { search={false} onChange={onChange} multiple={multiple} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
); diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx index 9edef64d3a..75bc0ae178 100644 --- a/frontend/src/Editor/Components/Table/Table.jsx +++ b/frontend/src/Editor/Components/Table/Table.jsx @@ -26,6 +26,7 @@ import { Datepicker } from './Datepicker'; import { GlobalFilter } from './GlobalFilter'; var _ = require('lodash'); import { EditorContext } from '@/Editor/Context/EditorContextWrapper'; +import { useTranslation } from 'react-i18next'; export function Table({ id, @@ -45,6 +46,8 @@ export function Table({ registerAction, properties, }) { + const { t } = useTranslation(); + const color = component.definition.styles.textColor.value !== '#000' ? component.definition.styles.textColor.value @@ -498,7 +501,7 @@ export function Table({ handleCellValueChange(cell.row.index, column.key || column.name, value, cell.row.original); }} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} disabled={!column.isEditable} />
{validationError}
@@ -512,7 +515,7 @@ export function Table({ printOptions="on-focus" multiple search={true} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} options={columnOptions.selectOptions} value={cellValue} onChange={(value) => { @@ -1133,7 +1136,7 @@ export function Table({ filterColumnChanged(index, value); }} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
@@ -1155,7 +1158,7 @@ export function Table({ filterOperationChanged(index, value); }} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
diff --git a/frontend/src/Editor/DataSourceManager/DataSourceManager.jsx b/frontend/src/Editor/DataSourceManager/DataSourceManager.jsx index f1afed8a7b..ffaa07ce5c 100644 --- a/frontend/src/Editor/DataSourceManager/DataSourceManager.jsx +++ b/frontend/src/Editor/DataSourceManager/DataSourceManager.jsx @@ -15,8 +15,9 @@ import { CopyToClipboard } from 'react-copy-to-clipboard'; import config from 'config'; import { isEmpty } from 'lodash'; import { Card } from '@/_ui/card'; +import { withTranslation, useTranslation } from 'react-i18next'; -class DataSourceManager extends React.Component { +class DataSourceManagerComponent extends React.Component { constructor(props) { super(props); @@ -132,7 +133,10 @@ class DataSourceManager extends React.Component { datasourceService.save(selectedDataSource.id, appId, name, parsedOptions).then(() => { this.setState({ isSaving: false }); this.hideModal(); - toast.success('Datasource Saved', { position: 'top-center' }); + toast.success( + this.props.t('editor.queryManager.dataSourceManager.toast.success.dataSourceSaved', 'Datasource Saved'), + { position: 'top-center' } + ); this.props.dataSourcesChanged(); }); } else { @@ -140,12 +144,21 @@ class DataSourceManager extends React.Component { datasourceService.create(appId, appVersionId, name, kind, parsedOptions).then(() => { this.setState({ isSaving: false }); this.hideModal(); - toast.success('Datasource Added', { position: 'top-center' }); + toast.success( + this.props.t('editor.queryManager.dataSourceManager.toast.success.dataSourceAdded', 'Datasource Added'), + { position: 'top-center' } + ); this.props.dataSourcesChanged(); }); } } else { - toast.error('The name of datasource should not be empty', { position: 'top-center' }); + toast.error( + this.props.t( + 'editor.queryManager.dataSourceManager.toast.error.noEmptyDsName', + 'The name of datasource should not be empty' + ), + { position: 'top-center' } + ); } }; @@ -221,7 +234,10 @@ class DataSourceManager extends React.Component { queryString={this.state.queryString} handleBackToAllDatasources={goBacktoAllDatasources} darkMode={this.props.darkMode} - placeholder={'Suggest an integration'} + placeholder={this.props.t( + 'editor.queryManager.dataSourceManager.suggestAnIntegration', + 'Suggest an integration' + )} />
); @@ -244,7 +260,9 @@ class DataSourceManager extends React.Component { {suggestingDatasources ? (
-

Suggest Datasource

+

+ {this.props.t('editor.queryManager.dataSourceManager.suggestDataSource', 'Suggest Datasource')} +

{datasourceSuggestionUI()}
) : ( @@ -276,7 +294,10 @@ class DataSourceManager extends React.Component { queryString={this.state.queryString} handleBackToAllDatasources={this.handleBackToAllDatasources} darkMode={this.props.darkMode} - placeholder={'Tell us what you were looking for?'} + placeholder={this.props.t( + 'editor.queryManager.dataSourceManager.whatLookingFor', + 'Tell us what you were looking for?' + )} />
)} @@ -349,10 +370,15 @@ class DataSourceManager extends React.Component {

- Don't see what you were looking for? + + {this.props.t( + 'editor.queryManager.dataSourceManager.noResultFound', + `Don't see what you were looking for?` + )} +
- Suggest + {this.props.t('editor.queryManager.dataSourceManager.suggest', 'Suggest')}

@@ -544,7 +570,11 @@ class DataSourceManager extends React.Component {
)} - {!selectedDataSource && Add new datasource} + {!selectedDataSource && ( + + {this.props.t('editor.queryManager.dataSourceManager.addNewDataSource', 'Add new datasource')} + + )}
-

Please white-list our IP address if the data source is not publicly accessible.

+

+ {this.props.t( + 'editor.queryManager.dataSourceManager.whiteListIP', + 'Please white-list our IP address if the data source is not publicly accessible.' + )} +

{isCopied ? (
- Copied + + {this.props.t('editor.queryManager.dataSourceManager.copied', 'Copied')} +
) : ( - Copy + {this.props.t('editor.queryManager.dataSourceManager.copy', 'Copy')} )} @@ -632,7 +669,7 @@ class DataSourceManager extends React.Component { target="_blank" rel="noreferrer" > - Read documentation + {this.props.t('globals.readDocumentation', 'Read documentation')}
@@ -651,7 +688,7 @@ class DataSourceManager extends React.Component { variant="primary" onClick={this.createDataSource} > - {'Save'} + {this.props.t('globals.save', 'Save')}
@@ -666,13 +703,15 @@ class DataSourceManager extends React.Component { target="_blank" rel="noreferrer" > - Read documentation + {this.props.t('globals.readDocumentation', 'Read documentation')}
@@ -690,6 +729,7 @@ const EmptyStateContainer = ({ darkMode, placeholder, }) => { + const { t } = useTranslation(); const [inputValue, set] = React.useState(() => ''); const [status, setStatus] = React.useState(false); @@ -706,17 +746,26 @@ const EmptyStateContainer = ({ return (
- {queryString && !suggestionUI &&

No results for "{queryString} "

} + {queryString && !suggestionUI && ( +

+ {t( + `editor.queryManager.dataSourceManager.noResultsFor + "${queryString}"`, + `No results for "${queryString}"` + )} +

+ )}
{status ? (
-

Thank you, we've taken a note of that!

+

+ {t('editor.queryManager.dataSourceManager.noteTaken', `Thank you, we've taken a note of that!`)} +

) : ( @@ -734,7 +783,7 @@ const EmptyStateContainer = ({
@@ -746,7 +795,7 @@ const EmptyStateContainer = ({ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceList }) => { const [searchText, setSearchText] = React.useState(queryString ?? ''); - + const { t } = useTranslation(); const handleChange = (e) => { setSearchText(e.target.value); onChange(e.target.value, activeDatasourceList); @@ -832,7 +881,7 @@ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceLi value={searchText} onChange={handleChange} className="form-control" - placeholder="Search" + placeholder={t('globals.search', 'Search')} autoFocus />
@@ -840,4 +889,4 @@ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceLi ); }; -export { DataSourceManager }; +export const DataSourceManager = withTranslation()(DataSourceManagerComponent); diff --git a/frontend/src/Editor/DataSourceManager/TestConnection.jsx b/frontend/src/Editor/DataSourceManager/TestConnection.jsx index 1e7447e6bb..e83228b056 100644 --- a/frontend/src/Editor/DataSourceManager/TestConnection.jsx +++ b/frontend/src/Editor/DataSourceManager/TestConnection.jsx @@ -1,11 +1,13 @@ import React, { useEffect, useState } from 'react'; import { toast } from 'react-hot-toast'; import { datasourceService } from '@/_services'; +import { useTranslation } from 'react-i18next'; export const TestConnection = ({ kind, options, onConnectionTestFailed, darkMode }) => { const [isTesting, setTestingStatus] = useState(false); const [connectionStatus, setConnectionStatus] = useState('unknown'); const [buttonText, setButtonText] = useState('Test Connection'); + const { t } = useTranslation(); useEffect(() => { if (isTesting) { @@ -44,9 +46,13 @@ export const TestConnection = ({ kind, options, onConnectionTestFailed, darkMode return (
- {connectionStatus === 'failed' && could not connect} + {connectionStatus === 'failed' && ( + {t('globals.noConnection', 'could not connect')} + )} - {connectionStatus === 'success' && connection verified} + {connectionStatus === 'success' && ( + {t('globals.connectionVerifeid', 'connection verified')} + )} {connectionStatus === 'unknown' && (
@@ -1451,7 +1452,7 @@ class Editor extends React.Component {
@@ -1464,7 +1465,7 @@ class Editor extends React.Component { style={{ fontSize: '14px', marginLeft: ' 6px' }} className="py-1 px-3 mt-2 text-muted" > - Queries + {this.props.t('editor.queries', 'Queries')}
@@ -1529,7 +1530,7 @@ class Editor extends React.Component { }) } > - {'Create query'} + {this.props.t('editor.createQuery', 'Create query')}
@@ -1658,7 +1659,9 @@ class Editor extends React.Component { handleEditorEscapeKeyPress={this.handleEditorEscapeKeyPress} > ) : ( -
Please select a component to inspect
+
+ {this.props.t('editor.inspectComponent', 'Please select a component to inspect')} +
)}
)} @@ -1687,4 +1690,4 @@ class Editor extends React.Component { } } -export { Editor }; +export const Editor = withTranslation()(EditorComponent); diff --git a/frontend/src/Editor/ErrorBoundary.jsx b/frontend/src/Editor/ErrorBoundary.jsx index 46968f5bf8..aa1ab2e9a8 100644 --- a/frontend/src/Editor/ErrorBoundary.jsx +++ b/frontend/src/Editor/ErrorBoundary.jsx @@ -1,11 +1,11 @@ import React, { Component } from 'react'; +import { withTranslation } from 'react-i18next'; class ErrorBoundary extends Component { constructor(props) { super(props); this.state = { hasError: false }; } - // eslint-disable-next-line no-unused-vars static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. @@ -20,11 +20,11 @@ class ErrorBoundary extends Component { render() { if (this.state.hasError) { // You can render any custom fallback UI - return this.props.showFallback ?

Something went wrong.

:
; + return this.props.showFallback ?

{this.props.t('errorBoundary', 'Something went wrong.')}

:
; } return this.props.children; } } -export default ErrorBoundary; +export default withTranslation()(ErrorBoundary); diff --git a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx index b4f5f99518..3e52b10dca 100644 --- a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx +++ b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx @@ -2,12 +2,14 @@ import React, { useState, useEffect } from 'react'; import Select from '@/_ui/Select'; import defaultStyles from '@/_ui/Select/styles'; import { CodeHinter } from '../../CodeBuilder/CodeHinter'; +import { useTranslation } from 'react-i18next'; export function GotoApp({ getAllApps, currentState, event, handlerChanged, eventIndex, darkMode }) { const queryParamChangeHandler = (index, key, value) => { event.queryParams[index][key] = value; handlerChanged(eventIndex, 'queryParams', event.queryParams); }; + const { t } = useTranslation(); const addQueryParam = () => { if (!event.queryParams) { @@ -53,7 +55,7 @@ export function GotoApp({ getAllApps, currentState, event, handlerChanged, event onChange={(value) => { handlerChanged(eventIndex, 'slug', value); }} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} className={`${darkMode ? 'select-search-dark' : 'select-search'}`} diff --git a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx index a79a392631..24db43e330 100644 --- a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx +++ b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx @@ -2,6 +2,8 @@ import React from 'react'; import Accordion from '@/_ui/Accordion'; import { EventManager } from '../EventManager'; import { renderElement } from '../Utils'; +// eslint-disable-next-line import/no-unresolved +import i18next from 'i18next'; export const DefaultComponent = ({ componentMeta, darkMode, ...restProps }) => { const { @@ -64,7 +66,7 @@ export const baseComponentProperties = ( let items = []; if (properties.length > 0) { items.push({ - title: 'Properties', + title: `${i18next.t('widget.common.properties', 'Properties')}`, children: properties.map((property) => renderElement( component, @@ -83,7 +85,7 @@ export const baseComponentProperties = ( if (events.length > 0) { items.push({ - title: 'Events', + title: `${i18next.t('widget.common.events', 'Events')}`, isOpen: false, children: ( 0) { items.push({ - title: 'Validation', + title: `${i18next.t('widget.common.validation', 'Validation')}`, children: validations.map((property) => renderElement( component, @@ -120,7 +122,7 @@ export const baseComponentProperties = ( } items.push({ - title: 'General', + title: `${i18next.t('widget.common.general', 'General')}`, isOpen: false, children: ( <> @@ -139,7 +141,7 @@ export const baseComponentProperties = ( }); items.push({ - title: 'Layout', + title: `${i18next.t('widget.common.layout', 'Layout')}`, isOpen: false, children: ( <> diff --git a/frontend/src/Editor/Inspector/Components/Table.jsx b/frontend/src/Editor/Inspector/Components/Table.jsx index 7f06e142f8..fa6f7803f2 100644 --- a/frontend/src/Editor/Inspector/Components/Table.jsx +++ b/frontend/src/Editor/Inspector/Components/Table.jsx @@ -13,8 +13,8 @@ import SelectSearch, { fuzzySearch } from 'react-select-search'; import { v4 as uuidv4 } from 'uuid'; import { EventManager } from '../EventManager'; import { CodeHinter } from '../../CodeBuilder/CodeHinter'; - -class Table extends React.Component { +import { withTranslation } from 'react-i18next'; +class TableComponent extends React.Component { constructor(props) { super(props); @@ -164,7 +164,7 @@ class Table extends React.Component {
- +
- + {(column.columnType === 'string' || column.columnType === undefined || column.columnType === 'default') && (
- +
)}
- +
- + {column.isEditable && (
-
Validation
+
{this.props.t('widget.Table.validation', 'Validation')}
- +
- +
- +
- +
- +
- + {column.isEditable && (
-
Validation
+
{this.props.t('widget.Table.validation', 'Validation')}
- + - + - +
- +
- show time + {this.props.t('widget.Table.showTime', 'show time')}
@@ -498,7 +500,7 @@ class Table extends React.Component { onClick={() => this.onColumnItemChange(index, 'isEditable', !column.isEditable)} checked={column.isEditable} /> - make editable + {this.props.t('widget.Table.makeEditable', 'make editable')}
@@ -518,7 +520,7 @@ class Table extends React.Component {
- +
- + @@ -717,7 +719,7 @@ class Table extends React.Component { onClick={this.addNewColumn} className="btn btn-sm border-0 font-weight-normal padding-2 col-auto color-primary inspector-add-button" > - + Add column + {this.props.t('widget.Table.addColumn', '+ Add column')}
@@ -803,14 +805,16 @@ class Table extends React.Component { onClick={this.addNewAction} className="btn btn-sm border-0 font-weight-normal padding-2 col-auto color-primary inspector-add-button" > - + Add button + {this.props.t('widget.Table.addButton', '+ Add button')}
{actions.value.map((action, index) => this.actionButton(action, index))}
{actions.value.length === 0 && (
- This table doesn't have any action buttons + + {this.props.t('widget.Table.noActionMessage', "This table doesn't have any action buttons")} +
)}
@@ -896,4 +900,4 @@ class Table extends React.Component { } } -export { Table }; +export const Table = withTranslation()(TableComponent); diff --git a/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx b/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx index 9c80d46b81..27fbfdd1dd 100644 --- a/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx +++ b/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx @@ -1,11 +1,13 @@ import React from 'react'; import { ToolTip } from './Components/ToolTip'; +import { useTranslation } from 'react-i18next'; export const AlignButtons = ({ param, definition, onChange, paramType, componentMeta }) => { const initialValue = definition ? definition.value : ''; const paramMeta = componentMeta[paramType][param.name]; const displayName = paramMeta.displayName || param.name; const options = paramMeta.options || {}; + const { t } = useTranslation(); function handleOptionChanged(event) { onChange(param, 'value', event.currentTarget.value, paramType); @@ -33,7 +35,7 @@ export const AlignButtons = ({ param, definition, onChange, paramType, component />
- Left + {t('globals.left', 'Left')}
- Center + {t('globals.center', 'Center')}
- Right + {t('globals.right', 'Right')}
- Justified + {t('globals.justified', 'Justified')}
diff --git a/frontend/src/Editor/Inspector/Elements/Select.jsx b/frontend/src/Editor/Inspector/Elements/Select.jsx index 85633f576a..08781bd57f 100644 --- a/frontend/src/Editor/Inspector/Elements/Select.jsx +++ b/frontend/src/Editor/Inspector/Elements/Select.jsx @@ -1,12 +1,14 @@ import React from 'react'; import { ToolTip } from './Components/ToolTip'; import SelectSearch, { fuzzySearch } from 'react-select-search'; +import { useTranslation } from 'react-i18next'; export const Select = ({ param, definition, onChange, paramType, componentMeta }) => { const paramMeta = componentMeta[paramType][param.name]; const displayName = paramMeta.displayName || param.name; const options = paramMeta.options; const value = definition ? definition.value : ''; + const { t } = useTranslation(); return (
@@ -17,7 +19,7 @@ export const Select = ({ param, definition, onChange, paramType, componentMeta } search={true} onChange={(newVal) => onChange(param, 'value', newVal, paramType)} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
); diff --git a/frontend/src/Editor/Inspector/EventManager.jsx b/frontend/src/Editor/Inspector/EventManager.jsx index 27362f862d..407ced9f6e 100644 --- a/frontend/src/Editor/Inspector/EventManager.jsx +++ b/frontend/src/Editor/Inspector/EventManager.jsx @@ -10,6 +10,7 @@ import _ from 'lodash'; import { componentTypes } from '../WidgetManager/components'; import Select from '@/_ui/Select'; import defaultStyles from '@/_ui/Select/styles'; +import { useTranslation } from 'react-i18next'; export const EventManager = ({ component, @@ -24,6 +25,7 @@ export const EventManager = ({ popoverPlacement, }) => { const [focusedEventIndex, setFocusedEventIndex] = useState(null); + const { t } = useTranslation(); let actionOptions = ActionTypes.map((action) => { return { name: action.name, value: action.id }; @@ -196,7 +198,7 @@ export const EventManager = ({
- Event + {t('editor.inspector.eventManager.event', 'Event')}
handlerChanged(index, 'actionId', value)} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} /> @@ -231,7 +233,7 @@ export const EventManager = ({ {actionLookup[event.actionId].options?.length > 0 && (
- Action options + {t('editor.inspector.eventManager.actionOptions', 'Action options')}
)}
@@ -239,7 +241,7 @@ export const EventManager = ({ <>
- Message + {t('editor.inspector.eventManager.message', 'Message')}
- Alert Type + {t('editor.inspector.eventManager.alertType', 'Alert Type')}
{ handlerChanged(index, 'modal', value); }} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} /> @@ -317,7 +319,7 @@ export const EventManager = ({ {event.actionId === 'close-modal' && (
-
Modal
+
{t('editor.inspector.eventManager.modal', 'Modal')}
@@ -374,7 +376,7 @@ export const EventManager = ({ {event.actionId === 'set-localstorage-value' && ( <>
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
-
Value
+
{t('editor.inspector.eventManager.value', 'Value')}
-
Type
+
{t('editor.inspector.eventManager.type', 'Type')}
{ handlerChanged(index, 'table', value); }} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} />
-
Page index
+
{t('editor.inspector.eventManager.pageIndex', 'Page index')}
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
-
Value
+
{t('editor.inspector.eventManager.value', 'Value')}
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
- Component + {t('editor.inspector.eventManager.component', 'Component')}
@@ -780,12 +782,14 @@ export const EventManager = ({ onClick={addHandler} data-cy="add-event-handler" > - + Add event handler + {t('editor.inspector.eventManager.addEventHandler', '+ Add event handler')}
- This {componentName.toLowerCase()} doesn't have any event handlers + {t('editor.inspector.eventManager.emptyMessage', "This {{componentName}} doesn't have any event handlers", { + componentName: componentName.toLowerCase(), + })}
@@ -800,7 +804,7 @@ export const EventManager = ({ onClick={addHandler} data-cy="add-more-event-handler" > - + Add handler + {t('editor.inspector.eventManager.addHandler', '+ Add handler')}
{renderHandlers(events)} diff --git a/frontend/src/Editor/Inspector/Inspector.jsx b/frontend/src/Editor/Inspector/Inspector.jsx index a330da2ccb..b236ce6627 100644 --- a/frontend/src/Editor/Inspector/Inspector.jsx +++ b/frontend/src/Editor/Inspector/Inspector.jsx @@ -14,6 +14,7 @@ import { FilePicker } from './Components/FilePicker'; import { CustomComponent } from './Components/CustomComponent'; import useFocus from '@/_hooks/use-focus'; import Accordion from '@/_ui/Accordion'; +import { useTranslation } from 'react-i18next'; export const Inspector = ({ selectedComponentId, @@ -41,6 +42,7 @@ export const Inspector = ({ const componentNameRef = useRef(null); const [newComponentName, setNewComponentName] = useState(component.component.name); const [inputRef, setInputFocus] = useFocus(); + const { t } = useTranslation(); useHotkeys('backspace', () => setWidgetDeleteConfirmation(true)); useHotkeys('escape', () => switchSidebarTab(2)); @@ -78,12 +80,12 @@ export const Inspector = ({ function handleComponentNameChange(newName) { if (component.component.name === newName) return; if (newName.length === 0) { - toast.error('Widget name cannot be empty'); + toast.error(t('widget.common.widgetNameEmptyError', 'Widget name cannot be empty')); return setInputFocus(); } if (!validateComponentName(newName)) { - toast.error('Component name already exists'); + toast.error(t('widget.common.componentNameExistsError', 'Component name already exists')); return setInputFocus(); } @@ -92,7 +94,12 @@ export const Inspector = ({ newComponent.component.name = newName; componentDefinitionChanged(newComponent); } else { - toast.error('Invalid widget name. Should be unique and only include letters, numbers and underscore.'); + toast.error( + t( + 'widget.common.invalidWidgetName', + 'Invalid widget name. Should be unique and only include letters, numbers and underscore.' + ) + ); setInputFocus(); } } @@ -318,7 +325,7 @@ export const Inspector = ({ const items = []; items.push({ - title: 'General', + title: `${t('widget.common.general', 'General')}`, isOpen: false, children: ( <> @@ -359,7 +366,7 @@ export const Inspector = ({ />
handleTabSelect(k)} className={`tabs-inspector ${darkMode && 'dark'}`}> - +
@@ -388,7 +395,7 @@ export const Inspector = ({
{getAccordion(componentMeta.component)} - +
{Object.keys(componentMeta.styles).map((style) => @@ -440,7 +447,9 @@ export const Inspector = ({ rel="noreferrer" data-cy="widget-documentation-link" > - {componentMeta.name} documentation + + {t('widget.common.documentation', '{{componentMeta}} documentation', { componentMeta: componentMeta.name })} +
diff --git a/frontend/src/Editor/Inspector/QuerySelector.jsx b/frontend/src/Editor/Inspector/QuerySelector.jsx index 61853acc5f..a045ee4f53 100644 --- a/frontend/src/Editor/Inspector/QuerySelector.jsx +++ b/frontend/src/Editor/Inspector/QuerySelector.jsx @@ -1,9 +1,11 @@ import React, { useState } from 'react'; import SelectSearch, { fuzzySearch } from 'react-select-search'; import Collapse from 'react-bootstrap/Collapse'; +import { useTranslation } from 'react-i18next'; export const QuerySelector = ({ param, definition, eventOptionUpdated, dataQueries, extraData, eventMeta }) => { const [open, setOpen] = useState(false); + const { t } = useTranslation(); function onChange(value) { const query = dataQueries.find((dataquery) => dataquery.id === value); @@ -42,7 +44,7 @@ export const QuerySelector = ({ param, definition, eventOptionUpdated, dataQueri onChange(value); }} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
diff --git a/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx b/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx index 6d0460aec2..9c0d67aa9f 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx @@ -10,7 +10,7 @@ import { getSvgIcon } from '@/_helpers/appUtils'; import { datasourceService } from '@/_services'; import { ConfirmDialog } from '@/_components'; import toast from 'react-hot-toast'; - +import { useTranslation } from 'react-i18next'; export const LeftSidebarDataSources = ({ appId, editingVersionId, @@ -124,12 +124,13 @@ export const LeftSidebarDataSources = ({ }; const LeftSidebarDataSourcesContainer = ({ renderDataSource, dataSources = [], toggleDataSourceManagerModal }) => { + const { t } = useTranslation(); return (
-
Data sources
+
{t('leftSidebar.Sources.dataSources', 'Data sources')}
{dataSources.length === 0 ? (
toggleDataSourceManagerModal(true)} className="p-2 color-primary cursor-pointer"> - + add data source + {t(`leftSidebar.Sources.addDataSource`, '+ add data source')}
) : (
{dataSources?.map((source, idx) => renderDataSource(source, idx))}
diff --git a/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx b/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx index ff726db7bd..2d16b33c3e 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx @@ -4,9 +4,11 @@ import { LeftSidebarItem } from './SidebarItem'; import _ from 'lodash'; import moment from 'moment'; import { SidebarPinnedButton } from './SidebarPinnedButton'; +import { useTranslation } from 'react-i18next'; import JSONTreeViewer from '@/_ui/JSONTreeViewer'; export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => { + const { t } = useTranslation(); const [open, trigger, content, popoverPinned, updatePopoverPinnedState] = usePinnedPopover(false); const [errorLogs, setErrorLogs] = React.useState([]); const [unReadErrorCount, setUnReadErrorCount] = React.useState({ read: 0, unread: 0 }); @@ -84,7 +86,7 @@ export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => {
  • - Errors + {t(`leftSidebar.Debugger.errors`, 'Errors')}
  • {errorLogs.length > 0 && ( @@ -94,7 +96,7 @@ export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => { className="btn btn-light btn-sm m-1 py-1" aria-label="clear button" > - clear + {t(`leftSidebar.Debugger.clear`, 'clear')} )} {
- {errorLogs.length === 0 &&
No errors found.
} + {errorLogs.length === 0 && ( +
{t(`leftSidebar.Debugger.noErrors`, 'No errors found.')}
+ )}
{errorLogs.map((error, index) => ( diff --git a/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx b/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx index 5de0a57e86..f90663e692 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx @@ -7,6 +7,7 @@ import { LeftSidebarItem } from './SidebarItem'; import FxButton from '../CodeBuilder/Elements/FxButton'; import { CodeHinter } from '../CodeBuilder/CodeHinter'; import { resolveReferences } from '@/_helpers/utils'; +import { useTranslation } from 'react-i18next'; export const LeftSidebarGlobalSettings = ({ globalSettings, @@ -16,6 +17,7 @@ export const LeftSidebarGlobalSettings = ({ is_maintenance_on, currentState, }) => { + const { t } = useTranslation(); const [open, trigger, content] = usePopover(false); const { hideHeader, canvasMaxWidth, canvasMaxHeight, canvasBackgroundColor, backgroundFxQuery } = globalSettings; const [showPicker, setShowPicker] = React.useState(false); @@ -65,7 +67,7 @@ export const LeftSidebarGlobalSettings = ({
- Hide header for launched apps + {t('leftSidebar.Settings.hideHeader', 'Hide header for launched apps')}
- Maintenance mode + {t('leftSidebar.Settings.maintenanceMode', 'Maintenance mode')}
- Max width of canvas + {t('leftSidebar.Settings.maxWidthOfCanvas', 'Max width of canvas')}
- Max height of canvas + + {t('leftSidebar.Settings.maxHeightOfCanvas', 'Max height of canvas')} +
- Background color of canvas + + {t('leftSidebar.Settings.backgroundColorOfCanvas', 'Background color of canvas')} +
{showPicker && (
diff --git a/frontend/src/Editor/LeftSidebar/SidebarItem.jsx b/frontend/src/Editor/LeftSidebar/SidebarItem.jsx index d26050e909..5c9fa005d5 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarItem.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarItem.jsx @@ -1,6 +1,7 @@ import React from 'react'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Tooltip from 'react-bootstrap/Tooltip'; +import { useTranslation } from 'react-i18next'; export const LeftSidebarItem = ({ tip = '', @@ -13,12 +14,13 @@ export const LeftSidebarItem = ({ count, ...rest }) => { + const { t } = useTranslation(); return ( {tip}} + overlay={{t(`leftSidebar.${text}.tip`, tip)}} >
)} {badge && } -

{text && text}

+

{text && t(`leftSidebar.${text}.text`, text)}

diff --git a/frontend/src/Editor/ManageAppUsers.jsx b/frontend/src/Editor/ManageAppUsers.jsx index 1d54d878aa..8f141157e7 100644 --- a/frontend/src/Editor/ManageAppUsers.jsx +++ b/frontend/src/Editor/ManageAppUsers.jsx @@ -7,8 +7,10 @@ import { CopyToClipboard } from 'react-copy-to-clipboard'; import Skeleton from 'react-loading-skeleton'; import { debounce } from 'lodash'; import Textarea from '@/_ui/Textarea'; +import { withTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -class ManageAppUsers extends React.Component { + +class ManageAppUsersComponent extends React.Component { constructor(props) { super(props); @@ -133,7 +135,7 @@ class ManageAppUsers extends React.Component { return (
- Share + {this.props.t('editor.share', 'Share')}
{appLink} @@ -200,7 +206,9 @@ class ManageAppUsers extends React.Component {
toast.success('Link copied to clipboard')}> - +
{slugError}
@@ -209,7 +217,9 @@ class ManageAppUsers extends React.Component {