@saltcorn/server 0.8.7-beta.3 → 0.8.7-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/auth/admin.js CHANGED
@@ -55,7 +55,7 @@ module.exports = router;
55
55
  */
56
56
  const getUserFields = async (req) => {
57
57
  const userTable = Table.findOne({ name: "users" });
58
- const userFields = (await userTable.getFields()).filter(
58
+ const userFields = (userTable.getFields()).filter(
59
59
  (f) => !f.calculated && f.name !== "id"
60
60
  );
61
61
  //console.log("userFields:",userFields);
@@ -265,7 +265,7 @@ router.get(
265
265
  class: "form-control",
266
266
  type: "search",
267
267
  "data-filter-table": "table.user-admin",
268
- placeholder: "🔍 Search",
268
+ placeholder: `🔍 ${req.__("Search")}`,
269
269
  })
270
270
  )
271
271
  ),
@@ -280,7 +280,7 @@ router.get(
280
280
  label: "",
281
281
  key: (r) =>
282
282
  r.disabled
283
- ? span({ class: "badge bg-danger" }, "Disabled")
283
+ ? span({ class: "badge bg-danger" }, req.__("Disabled"))
284
284
  : "",
285
285
  },
286
286
  {
package/locales/en.json CHANGED
@@ -1175,5 +1175,21 @@
1175
1175
  "App version": "App version",
1176
1176
  "Forgot password?": "Forgot password?",
1177
1177
  "Details": "Details",
1178
- "URL is a formula?": "URL is a formula?"
1178
+ "URL is a formula?": "URL is a formula?",
1179
+ "Receive notifications by:": "Receive notifications by:",
1180
+ "Backup settings": "Backup settings",
1181
+ "Logo image": "Logo image",
1182
+ "Custom code": "Custom code",
1183
+ "Extension store": "Extension store",
1184
+ "Backup file prefix": "Backup file prefix",
1185
+ "Directory for backup files": "Directory for backup files",
1186
+ "Backup File Prefix": "Backup File Prefix",
1187
+ "Search for...": "Search for...",
1188
+ "Every 5 minutes": "Every 5 minutes",
1189
+ "Not scheduled but can be run as an action from a button click": "Not scheduled but can be run as an action from a button click",
1190
+ "Fixed and blocked fields": "Fixed and blocked fields",
1191
+ "Do not allow the following fields to have a value set from the query string or state": "Do not allow the following fields to have a value set from the query string or state",
1192
+ "Action configuration saved": "Action configuration saved",
1193
+ "Prevent any deletion of parent rows": "Prevent any deletion of parent rows",
1194
+ "If the parent row is deleted, set key fields on child rows to null": "If the parent row is deleted, set key fields on child rows to null"
1179
1195
  }
package/locales/no.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
- "Not found": "Not found",
2
+ "Not found": "Ikke funnet",
3
3
  "Page not found": "Side ikke funnet",
4
- "Incorrect user or password": "Incorrect user or password",
4
+ "Incorrect user or password": "Ugyldig bruker eller passord",
5
5
  "Internal Error": "Intern feil",
6
- "A report has been logged and a team of bug-squashing squirrels has been dispatched to deal with the situation.": "En rapport er loggført og et team med bug-squashing ekorn har blitt sendt for å håndtere situasjonen.",
7
- "User": "User",
6
+ "A report has been logged and a team of bug-squashing squirrels has been dispatched to deal with the situation.": "En rapport er loggført og et team med feilsøkende ekorn har blitt sendt for å håndtere situasjonen.",
7
+ "User": "Bruker",
8
8
  "User Settings": "Brukerinstillinger",
9
9
  "Logout": "Logg ut",
10
10
  "Tables": "Tabeller",
11
11
  "Views": "Views",
12
12
  "Pages": "Sider",
13
13
  "Files": "Filer",
14
- "Settings": "Settings",
14
+ "Settings": "Innstillinger",
15
15
  "Plugins": "Plugins",
16
16
  "Menu": "Meny",
17
17
  "Users": "Brukere",
@@ -22,12 +22,12 @@
22
22
  "Crash log": "Krasjlogg",
23
23
  "Sign up": "Melde deg på",
24
24
  "Login": "Logg Inn",
25
- "An error occurred": "An error occurred",
25
+ "An error occurred": "Det oppstod en feil",
26
26
  "ID": "ID",
27
27
  "Email": "E-post",
28
- "Role": "Roll",
28
+ "Role": "Rolle",
29
29
  "View": "View",
30
- "Delete": "Delete",
30
+ "Delete": "Slett",
31
31
  "Add user": "Legg til bruker",
32
32
  "New user": "Ny bruker",
33
33
  "New": "Ny",
@@ -35,35 +35,35 @@
35
35
  "Edit user": "Rediger bruker",
36
36
  "Edit user %s": "Rediger bruker %s",
37
37
  "User %s saved": "Bruker %s lagret",
38
- "User %s deleted": "User %s deleted",
38
+ "User %s deleted": "Bruker %s slettet",
39
39
  "E-mail": "E-post",
40
40
  "Password": "Passord",
41
41
  "User settings": "Brukerinstillinger",
42
42
  "Password reset not enabled. Contact your administrator.": "Tilbakestilling av passord er ikke aktivert. Kontakt administratoren din.",
43
- "Reset password": "Reset password",
44
- "Enter your email address below and we'll send you a link to reset your password.": "Enter your email address below and we'll send you a link to reset your password.",
43
+ "Reset password": "Gjenopprett password",
44
+ "Enter your email address below and we'll send you a link to reset your password.": "Legg inn e-postadressen din nedenfor, og vi sender deg en lenke for å sette et nytt passord.",
45
45
  "Enter your new password below": "Skriv inn ditt nye passord nedenfor",
46
- "Set password": "Set password",
47
- "Password reset. Log in with your new password": "Password reset. Log in with your new password",
46
+ "Set password": "Sett password",
47
+ "Password reset. Log in with your new password": "Passordet er endret. Logg inn med det nye passordet",
48
48
  "Change": "Endring",
49
- "Old password": "Old password",
49
+ "Old password": "Gammelt passord",
50
50
  "New password": "Nytt passord",
51
- "Email: ": "Email: ",
51
+ "Email: ": "E-post: ",
52
52
  "Change password": "Bytt passord",
53
- "Password changed": "Password changed",
54
- "Reset password instructions": "Reset password instructions",
53
+ "Password changed": "Passord endret",
54
+ "Reset password instructions": "Instruksjoner for å gjenopprette passord",
55
55
  "Hi %s": "Hei %s",
56
- "You have requested a link to change your password. You can do this through this link:": "You have requested a link to change your password. You can do this through this link:",
56
+ "You have requested a link to change your password. You can do this through this link:": "Du har bedt om en lenke for å endre passordet ditt. Du kan gjøre dette via denne linken:",
57
57
  "If you did not request this, please ignore this email.": "Hvis du ikke ba om dette, kan du ignorere denne e-posten.",
58
58
  "Your password will not change until you access the link above and set a new one.": "Passordet ditt endres ikke før du åpner lenken ovenfor og angir et nytt.",
59
- "Change my password": "Change my password",
60
- "Must be admin": "Must be admin",
59
+ "Change my password": "Endre passordet mitt",
60
+ "Must be admin": " være admin",
61
61
  "Site identity": "Nettstedsidentitet",
62
- "Authentication": "Godkjenning",
62
+ "Authentication": "Autentisering",
63
63
  "Development": "Utvikling",
64
64
  "Edit": "Redigere",
65
65
  "Unknown file": "Ukjent fil",
66
- "Other": "Other",
66
+ "Other": "Annet",
67
67
  "Edit configuration key %s": "Rediger konfigurasjonsnøkkel %s",
68
68
  "Configuration key %s saved": "Konfigurasjonsnøkkel %s lagret",
69
69
  "Configuration key %s deleted": "Konfigurasjonsnøkkel %s slettet",
@@ -79,46 +79,46 @@
79
79
  "Hosting on this site is provided for free and with no guarantee of availability or security of your application. ": "Hosting on this site is provided for free and with no guarantee of availability or security of your application. ",
80
80
  "This facility is intended solely for you to evaluate the suitability of Saltcorn. ": "This facility is intended solely for you to evaluate the suitability of Saltcorn. ",
81
81
  "If you would like to store private information that needs to be secure, please use self-hosted Saltcorn. ": "If you would like to store private information that needs to be secure, please use self-hosted Saltcorn. ",
82
- "Create application": "Create application",
83
- "Create": "Skape",
84
- "Please select a name for your application. The name will determine the address at which it will be available. ": "Velg et navn for søknaden din. Navnet bestemmer adressen der det vil være tilgjengelig.",
85
- "Application name": "Programnavn",
86
- "Success! Your new application is available at:": "Success! Your new application is available at:",
87
- "Please click the above link now to create the first user.": "Please click the above link now to create the first user.",
88
- "A site with this subdomain already exists": "A site with this subdomain already exists",
89
- "No such view: %s": "No such view: %s",
90
- "Search all tables": "Search all tables",
91
- "Show": "Show",
92
- "When": "When",
82
+ "Create application": "Opprett applikasjon",
83
+ "Create": "Opprett",
84
+ "Please select a name for your application. The name will determine the address at which it will be available. ": "Velg et navn for applikasjonen din. Navnet bestemmer adressen der den vil være tilgjengelig.",
85
+ "Application name": "Navn på applikasjon",
86
+ "Success! Your new application is available at:": "Hurra! Din nye applikasjon er tilgjengelig på:",
87
+ "Please click the above link now to create the first user.": "Klikk lenken ovenfor for å lage den første brukeren.",
88
+ "A site with this subdomain already exists": "En siden med dette subdomenet eksisterer allerede",
89
+ "No such view: %s": "Visning ukjent: %s",
90
+ "Search all tables": "Søk i alle tabeller",
91
+ "Show": "Vis",
92
+ "When": "Når",
93
93
  "Tenant": "Tenant",
94
- "Crash log entry %s": "Crash log entry %s",
95
- "New %s": "New %s",
94
+ "Crash log entry %s": "Krasjlogg-ID %s",
95
+ "New %s": "Ny %s",
96
96
  "Data": "Data",
97
- "Add row": "Add row",
98
- "Add %s": "Add %s",
97
+ "Add row": "Legg til rad",
98
+ "Add %s": "Legg til %s",
99
99
  "Edit row": "Rediger rad",
100
100
  "Edit %s": "Rediger %s",
101
- "No errors reported": "No errors reported",
102
- "Everything is going extremely well.": "Everything is going extremely well.",
103
- "Filename": "Filename",
104
- "Size (KiB)": "Size (KiB)",
105
- "Media type": "Media type",
106
- "Role to access": "Role to access",
107
- "Link": "Link",
101
+ "No errors reported": "Ingen feil funnet",
102
+ "Everything is going extremely well.": "Alt går veldig, veldig bra.",
103
+ "Filename": "Filnavn",
104
+ "Size (KiB)": "Størrelse (KiB)",
105
+ "Media type": "Mediatype",
106
+ "Role to access": "Rolle for tilgang",
107
+ "Link": "Lenke",
108
108
  "Download": "nedlasting",
109
- "Upload file ": "Upload file ",
110
- "Minimum role for %s updated to %s": "Minimum role for %s updated to %s",
111
- "File %s deleted": "File %s deleted",
112
- "More...": "More...",
113
- "Quick Start": "Quick Start",
114
- "Four different ways to get started using Saltcorn": "Four different ways to get started using Saltcorn",
109
+ "Upload file ": "Last opp fil ",
110
+ "Minimum role for %s updated to %s": "Minimumsrolle for %s oppdatert til %s",
111
+ "File %s deleted": "Fil %s slettet",
112
+ "More...": "Mer...",
113
+ "Quick Start": "Kjappstart",
114
+ "Four different ways to get started using Saltcorn": "Fire måter å start bruk av Saltcorn ",
115
115
  "Build": "Bygge",
116
- "Start by creating the tables to hold your data": "Start by creating the tables to hold your data",
117
- "Create a table »": "Lag et bord »",
116
+ "Start by creating the tables to hold your data": "Start med å lage tabller til dataene dine",
117
+ "Create a table »": "Lag en tabell »",
118
118
  "When you have created the tables, you can create views so users can interact with the data.": "Når du har opprettet tabellene, kan du opprette visninger slik at brukerne kan samhandle med dataene.",
119
- "You can also start by creating a page.": "You can also start by creating a page.",
120
- "Create a page »": "Create a page »",
121
- "Upload": "Upload",
119
+ "You can also start by creating a page.": "Du kan også starte med å lage en side.",
120
+ "Create a page »": "Opprett en side »",
121
+ "Upload": "Last opp",
122
122
  "You can skip creating a table by hand by uploading a CSV file from a spreadsheet.": "You can skip creating a table by hand by uploading a CSV file from a spreadsheet.",
123
123
  "Create table with CSV upload": "Create table with CSV upload",
124
124
  "If you have a backup from a previous Saltcorn instance, you can also restore it.": "If you have a backup from a previous Saltcorn instance, you can also restore it.",
@@ -148,8 +148,8 @@
148
148
  "%s History": "%s History",
149
149
  "back to table list": "back to table list",
150
150
  "Version %s restored": "Versjon %s gjenopprettet",
151
- "Site name": "Side navn",
152
- "Site logo": "Site logo",
151
+ "Site name": "Navn på side",
152
+ "Site logo": "Logo for siden",
153
153
  "Type": "Type",
154
154
  "Text label": "Tekstetikett",
155
155
  "Minimum role": "Minimum role",
package/locales/ru.json CHANGED
@@ -164,8 +164,8 @@
164
164
  "Installed": "Установлены",
165
165
  "Refresh": "Обновить",
166
166
  "Upgrade installed plugins": "Обновить установленные плагины",
167
- "Add another plugin": "Добавить еще один плагин",
168
- "Add another pack": "Добавить еще один пакет",
167
+ "Add another plugin": "Установить плагин",
168
+ "Add another pack": "Установить пакет",
169
169
  "Create pack": "Создать пакет",
170
170
  "Pack": "Пакет",
171
171
  "Install": "Установить",
@@ -261,8 +261,8 @@
261
261
  "New field:": "Новое поле:",
262
262
  "Field attributes": "Атрибуты поля",
263
263
  "Field %s created": "Поле %s создано",
264
- "Summary field": "Поле итога",
265
- "A default value is required when adding required fields to nonempty tables": "Для обязательных полей необходимо определить значение по-умолчанию",
264
+ "Summary field": "Поле сводки",
265
+ "A default value is required when adding required fields to nonempty tables": "Значение по умолчанию требуется при добавлении обязательных полей в непустные таблицы",
266
266
  "Create user": "Создать пользователя",
267
267
  "Please create your first user account, which will have administrative privileges. You can add other users and give them administrative privileges later.": "Пожалуйства создайте первого пользователя, который будет обладать правами администратора. Позже вы можете создать остальных пользователей и наделить их правами администратора при необходимости.",
268
268
  "Create first user": "Создать первого пользователя",
@@ -807,9 +807,9 @@
807
807
  "Automated backup": "Автоматическое резервное копирование",
808
808
  "Snapshots": "Снимки (снепшоты)",
809
809
  "Mobile app": "Мобильное приложение",
810
- "Module store": "Магазин модулей",
810
+ "Module store": "Магазин расширений",
811
811
  "Upgrade installed modules": "Обновить установленные модули",
812
- "Add another module": "Добавить модуль",
812
+ "Add another module": "Установить модуль",
813
813
  "Module": "Модуль",
814
814
  "Module installation and control": "Установка и управление модулями",
815
815
  "System logging verbosity": "Уровень логирования системы",
@@ -1004,10 +1004,51 @@
1004
1004
  "Connected views": "Связанные представления",
1005
1005
  "Embedded in": "Встроенно в",
1006
1006
  "Linked from": "Ссылается из",
1007
- "First user E-mail": "First user E-mail",
1007
+ "First user E-mail": "E-mail первого пользователя",
1008
1008
  "Table constraints": "Констрейнты таблиц",
1009
1009
  "Sessions": "Сессии",
1010
1010
  "Event logs": "Лог событий",
1011
1011
  "Migrations": "Миграции",
1012
- "Tag Entries": "Экземпляры тегов"
1012
+ "Tag Entries": "Экземпляры тегов",
1013
+ "Locale identifier short code, e.g. en, zh, fr, ar etc. ": "Короткий код локали, например: en, zh, fr, ar и т.д. ",
1014
+ " with password %s": " с паролем %s",
1015
+ "Import table %s": "Импорт таблицы %s",
1016
+ "Import CSV": "Импорт CSV",
1017
+ "Open": "Открыть",
1018
+ "App name": "Название приложения",
1019
+ "App version": "Версия приложения",
1020
+ "App icon": "Иконка приложения",
1021
+ "Splash Page": "Заставка",
1022
+ "Allow offline mode": "Разрешить режим оффлайн",
1023
+ "URL is a formula?": "Является ли URL формулой?",
1024
+ "In scope:": "В области (In scope):",
1025
+ "Destination page": "Целевая страница",
1026
+ "Include in full-text search": "Включить в полнотекстовый поиск",
1027
+ "The field that will be shown to the user when choosing a value": "Данное поле будет показано пользователю при выборе значения из связанной таблицы",
1028
+ "On delete": "При удалении",
1029
+ "If the parent row is deleted, do this to the child rows.": "В случае удаления родительской записи, выполнить указанное действие для дочерних записей.",
1030
+ "Set a default value for missing data": "Установить значение для недостающих данных",
1031
+ "Prevent any deletion of parent rows": "Запретить удаление родительских строк",
1032
+ "If the parent row is deleted, automatically delete the child rows.": "При удалении родительской записи автоматически удалять дочерние записи.",
1033
+ "If the parent row is deleted, set key fields on child rows to null": "При удалении родительской записи установить ключевые поля в null для дочерних записей",
1034
+ "Every 5 minutes": "Каждые 5 минут",
1035
+ "Not scheduled but can be run as an action from a button click": "Не запланировано, но может быть запущено по кнопке",
1036
+ "Action configuration saved": "Конфигурация действия сохранена",
1037
+ "Action information saved": "Информация о действии сохранена",
1038
+ "JavaScript code:": "JavaScript code:",
1039
+ "code here": "ваш программный код",
1040
+ "No notifications": "Нет уведомлений",
1041
+ "Receive notifications by:": "Receive notifications by:",
1042
+ "Backup file prefix": "Префикс имени файлов backup",
1043
+ "Directory for backup files": "Папка для файлов backup",
1044
+ "Backup File Prefix": "Префикс имени файлов backup",
1045
+ "Module %s installed": "Модуль %s установлен",
1046
+ "View patterns": "Паттерны представления",
1047
+ "%s module information": "Информация о модуле %s",
1048
+ "Search for...": "Поиск...",
1049
+ "Modules up-to-date. Please restart server": "Модули актуальны. Пожалуйста рестартуйте сервер",
1050
+ "Logo image": "Логотип сайта",
1051
+ "Custom code": "Пользовательский код",
1052
+ "Extension store": "Магазин расширений",
1053
+ "Progressive Web Application": "Прогрессивное веб-приложение (PWA)"
1013
1054
  }
package/markup/admin.js CHANGED
@@ -402,7 +402,7 @@ const config_fields_form = async ({
402
402
  if (typeof name0 === "object" && name0.section_header) {
403
403
  fields.push({
404
404
  input_type: "section_header",
405
- label: name0.section_header,
405
+ label: req.__(name0.section_header),
406
406
  });
407
407
  continue;
408
408
  }
package/markup/forms.js CHANGED
@@ -63,10 +63,16 @@ const fileUploadForm = (req, folder) => {
63
63
  name: "file",
64
64
  class: "form-control ms-1 w-unset d-inline",
65
65
  type: "file",
66
- onchange: "form.submit()",
66
+ onchange: "handle_upload_file_change(form)",
67
67
  multiple: true,
68
68
  }),
69
- folder && input({ type: "hidden", name: "folder", value: folder })
69
+ folder &&
70
+ input({
71
+ id: "uploadFolderInpId",
72
+ type: "hidden",
73
+ name: "folder",
74
+ value: folder,
75
+ })
70
76
  );
71
77
  return frm;
72
78
  };
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "0.8.7-beta.3",
3
+ "version": "0.8.7-beta.5",
4
4
  "description": "Server app for Saltcorn, open-source no-code platform",
5
5
  "homepage": "https://saltcorn.com",
6
6
  "main": "index.js",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
- "@saltcorn/base-plugin": "0.8.7-beta.3",
10
- "@saltcorn/builder": "0.8.7-beta.3",
11
- "@saltcorn/data": "0.8.7-beta.3",
12
- "@saltcorn/admin-models": "0.8.7-beta.3",
13
- "@saltcorn/filemanager": "0.8.7-beta.3",
14
- "@saltcorn/markup": "0.8.7-beta.3",
15
- "@saltcorn/sbadmin2": "0.8.7-beta.3",
9
+ "@saltcorn/base-plugin": "0.8.7-beta.5",
10
+ "@saltcorn/builder": "0.8.7-beta.5",
11
+ "@saltcorn/data": "0.8.7-beta.5",
12
+ "@saltcorn/admin-models": "0.8.7-beta.5",
13
+ "@saltcorn/filemanager": "0.8.7-beta.5",
14
+ "@saltcorn/markup": "0.8.7-beta.5",
15
+ "@saltcorn/sbadmin2": "0.8.7-beta.5",
16
16
  "@socket.io/cluster-adapter": "^0.2.1",
17
17
  "@socket.io/sticky": "^1.0.1",
18
18
  "adm-zip": "0.5.10",
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):"object"==typeof exports?exports.cytoscapePopper=t(require("@popperjs/core")):e.cytoscapePopper=t(e.Popper)}(this,function(n){return p={},r.m=o=[function(e,t,n){"use strict";e.exports=null!=Object.assign?Object.assign.bind(Object):function(n){for(var e=arguments.length,t=Array(1<e?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];return t.forEach(function(t){null!=t&&Object.keys(t).forEach(function(e){return n[e]=t[e]})}),n}},function(e,t,n){"use strict";var r=n(5).getBoundingBox;e.exports={getRef:function(e,t){return{getBoundingClientRect:function(){return r(e,t)}}}}},function(e,t,n){"use strict";var r=n(0),o=n(1).getRef,p=n(6).getContent,i={},c=n(8).createPopper;e.exports={getPopper:function(e,t){var n=o(e,t),e=p(e,t.content),t=r({},i,t.popper);return c(n,e,t)}}},function(e,t,n){"use strict";var r=n(0),o=n(2).getPopper,p=n(1).getRef;function i(e,t){function o(e){return e.isNode()?{w:e.renderedWidth(),h:e.renderedHeight()}:{w:3,h:3}}e=e.cy();return r({},{renderedDimensions:o,renderedPosition:function(e){return e.isNode()?(n=o,r=(t=e).renderedPosition(),n=n(t),t=n.w/2,n=n.h/2,{x:r.x-t,y:r.y-n}):(n=(r=e).midpoint(),e=r.cy().pan(),r=r.cy().zoom(),{x:n.x*r+e.x,y:n.y*r+e.y});var t,n,r},popper:{},cy:e},t)}function c(e){1<e.length&&(console.warn("Popper.js Extension should only be used on one element."),console.warn("Ignoring all subsequent elements"))}e.exports={popper:function(e){return c(this),o(this[0],i(this[0],e))},popperRef:function(e){return c(this),p(this[0],i(this[0],e))}}},function(e,t,n){"use strict";var r=n(0),o=n(2).getPopper,p=n(1).getRef;function i(e,t){return r({},{boundingBox:{top:0,left:0,right:0,bottom:0,w:3,h:3},renderedDimensions:function(){return{w:3,h:3}},renderedPosition:function(){return{x:0,y:0}},popper:{},cy:e},t)}e.exports={popper:function(e){return o(this,i(this,e))},popperRef:function(e){return p(this,i(this,e))}}},function(e,t,n){"use strict";e.exports={getBoundingBox:function(e,t){var n=t.renderedPosition,r=t.cy,t=t.renderedDimensions,r=r.container().getBoundingClientRect(),t=t(e);return{top:(e=n(e)).y+r.top,left:e.x+r.left,right:e.x+t.w+r.left,bottom:e.y+t.h+r.top,width:t.w,height:t.h}}}},function(e,t,n){"use strict";e.exports={getContent:function(e,t){var n=null;if("function"!=typeof t){if(t instanceof HTMLElement)return t;throw new Error("Can not create popper from 'target' with unknown type")}if(null===(n=t(e)))throw new Error("No 'target' specified to create popper");return n}}},function(e,t,n){"use strict";var r=n(4),o=n(3),n=function(e){e&&(e("core","popper",r.popper),e("collection","popper",o.popper),e("core","popperRef",r.popperRef),e("collection","popperRef",o.popperRef))};"undefined"!=typeof cytoscape&&n(cytoscape),e.exports=n},function(e,t){e.exports=n}],r.c=p,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7);function r(e){if(p[e])return p[e].exports;var t=p[e]={i:e,l:!1,exports:{}};return o[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,p});