intlayer-editor 6.1.5 → 6.1.6
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/client/dist/assets/index-BZsb0J9r.css +1 -0
- package/client/dist/assets/index-Dqu0HW5s.js +348 -0
- package/client/dist/index.html +2 -2
- package/package.json +20 -20
- package/server/dist/index.cjs +2 -2
- package/server/dist/index.cjs.map +1 -1
- package/server/dist/index.mjs +2 -2
- package/server/dist/index.mjs.map +1 -1
- package/client/dist/assets/index-CAihQhtQ.js +0 -348
- package/client/dist/assets/index-Dbx62zAZ.css +0 -1
package/client/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Intlayer Editor</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-Dqu0HW5s.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BZsb0J9r.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "intlayer-editor",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Integrate the Intlayer visual editor into your Intlayer projects, enabling CMS-like content management with multilingual support.",
|
|
6
6
|
"keywords": [
|
|
@@ -77,15 +77,15 @@
|
|
|
77
77
|
"react-dom": "^19.1.1",
|
|
78
78
|
"react-router-dom": "^7.4.0",
|
|
79
79
|
"rimraf": "^6.0.1",
|
|
80
|
-
"@intlayer/api": "6.1.
|
|
81
|
-
"@intlayer/
|
|
82
|
-
"@intlayer/
|
|
83
|
-
"@intlayer/design-system": "6.1.
|
|
84
|
-
"@intlayer/
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"express-intlayer": "6.1.
|
|
88
|
-
"vite-intlayer": "6.1.
|
|
80
|
+
"@intlayer/api": "6.1.6",
|
|
81
|
+
"@intlayer/config": "6.1.6",
|
|
82
|
+
"@intlayer/core": "6.1.6",
|
|
83
|
+
"@intlayer/design-system": "6.1.6",
|
|
84
|
+
"@intlayer/editor-react": "6.1.6",
|
|
85
|
+
"react-intlayer": "6.1.6",
|
|
86
|
+
"@intlayer/unmerged-dictionaries-entry": "6.1.6",
|
|
87
|
+
"express-intlayer": "6.1.6",
|
|
88
|
+
"vite-intlayer": "6.1.6"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
91
|
"@tailwindcss/vite": "^4.1.13",
|
|
@@ -117,16 +117,16 @@
|
|
|
117
117
|
"react-dom": ">=16.0.0",
|
|
118
118
|
"react-router-dom": ">=6.0.0",
|
|
119
119
|
"tailwind-merge": "^3.3.1",
|
|
120
|
-
"@intlayer/config": "6.1.
|
|
121
|
-
"@intlayer/core": "6.1.
|
|
122
|
-
"@intlayer/design-system": "6.1.
|
|
123
|
-
"@intlayer/editor-react": "6.1.
|
|
124
|
-
"@intlayer/unmerged-dictionaries-entry": "6.1.
|
|
125
|
-
"react-intlayer": "6.1.
|
|
126
|
-
"vite-intlayer": "6.1.
|
|
127
|
-
"
|
|
128
|
-
"@intlayer/
|
|
129
|
-
"intlayer": "6.1.
|
|
120
|
+
"@intlayer/config": "6.1.6",
|
|
121
|
+
"@intlayer/core": "6.1.6",
|
|
122
|
+
"@intlayer/design-system": "6.1.6",
|
|
123
|
+
"@intlayer/editor-react": "6.1.6",
|
|
124
|
+
"@intlayer/unmerged-dictionaries-entry": "6.1.6",
|
|
125
|
+
"react-intlayer": "6.1.6",
|
|
126
|
+
"vite-intlayer": "6.1.6",
|
|
127
|
+
"intlayer": "6.1.6",
|
|
128
|
+
"@intlayer/chokidar": "6.1.6",
|
|
129
|
+
"@intlayer/dictionaries-entry": "6.1.6"
|
|
130
130
|
},
|
|
131
131
|
"engines": {
|
|
132
132
|
"node": ">=14.18"
|
package/server/dist/index.cjs
CHANGED
|
@@ -33,7 +33,7 @@ var import_express_intlayer = require("express-intlayer");
|
|
|
33
33
|
var import_helmet = __toESM(require("helmet"), 1);
|
|
34
34
|
var import_mime = __toESM(require("mime"), 1);
|
|
35
35
|
var import_node_fs = require("node:fs");
|
|
36
|
-
var import_node_path =
|
|
36
|
+
var import_node_path = require("node:path");
|
|
37
37
|
var import_node_url = require("node:url");
|
|
38
38
|
const import_meta = {};
|
|
39
39
|
const __dirname = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url));
|
|
@@ -75,7 +75,7 @@ const startServer = async (app2) => {
|
|
|
75
75
|
app2.use("/api/config", import_config2.configurationRouter);
|
|
76
76
|
app2.use(import_express.default.static(clientDistPath));
|
|
77
77
|
app2.get(/(.*)/, (req, res) => {
|
|
78
|
-
const requestedPath = import_node_path.
|
|
78
|
+
const requestedPath = (0, import_node_path.join)(clientDistPath, req.url);
|
|
79
79
|
if ((0, import_node_fs.existsSync)(requestedPath) && (0, import_node_fs.lstatSync)(requestedPath).isFile()) {
|
|
80
80
|
const mimeType = import_mime.default.getType(requestedPath) ?? "application/octet-stream";
|
|
81
81
|
res.setHeader("Content-Type", mimeType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { getConfiguration, getEnvFilePath } from '@intlayer/config';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport express, { type Express } from 'express';\nimport { intlayer } from 'express-intlayer';\nimport helmet from 'helmet';\nimport mime from 'mime';\nimport { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { getConfiguration, getEnvFilePath } from '@intlayer/config';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport express, { type Express } from 'express';\nimport { intlayer } from 'express-intlayer';\nimport helmet from 'helmet';\nimport mime from 'mime';\nimport { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\n// Load package.json\nconst packageJson = JSON.parse(\n readFileSync(resolve(__dirname, '../../package.json'), 'utf8')\n);\n\nconst app: Express = express();\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nconst clientDistPath = resolve(__dirname, '../../client/dist');\n\nconst corsOptions: CorsOptions = {\n origin: '*',\n credentials: true,\n};\n\nconst startServer = async (app: Express) => {\n const isPortAvailable = await checkPortAvailability(port);\n\n if (!isPortAvailable) {\n console.error(`\\x1b[1;31mError: Port ${port} is already in use.\\x1b[0m`);\n process.exit(255);\n }\n\n app.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\n app.use(\n helmet({\n contentSecurityPolicy: false,\n })\n );\n\n app.use(cors(corsOptions));\n\n // Compress all HTTP responses\n app.use(compression());\n\n app.use(express.json());\n\n app.use(cookieParser());\n\n // Parse incoming requests with urlencoded payloads\n app.use(express.urlencoded({ extended: true }));\n\n app.use('/api/dictionary', dictionaryRouter);\n app.use('/api/config', configurationRouter);\n\n app.use(express.static(clientDistPath));\n\n // For single-page applications, redirect all unmatched routes to index.html\n app.get(/(.*)/, (req, res) => {\n const requestedPath = join(clientDistPath, req.url); // Full path of the requested file\n\n if (existsSync(requestedPath) && lstatSync(requestedPath).isFile()) {\n // If the requested file exists, determine its MIME type and serve it\n const mimeType =\n mime.getType(requestedPath) ?? 'application/octet-stream';\n res.setHeader('Content-Type', mimeType);\n res.sendFile(requestedPath);\n } else {\n // Otherwise, serve the index.html for React Router fallback\n res.sendFile(resolve(clientDistPath, 'index.html'));\n }\n });\n\n app.listen(port, () => {\n const dotEnvFilePath = getEnvFilePath(\n envFileOptions.env,\n envFileOptions.envFile\n );\n\n console.log(`\n \\x1b[1;90mINTLAYER v${packageJson.version}\\x1b[0m\n\n Editor running at: \\x1b[90mhttp://localhost:${port}\\x1b[0m\n - Watching application at: ${config.editor.applicationURL === '' ? '-' : `\\x1b[90m${config.editor.applicationURL}\\x1b[0m`}\n - Access key: ${config.editor.clientId ?? '-'}\n - Environment: ${dotEnvFilePath ?? '-'}\n `);\n });\n};\n\n// Start it up!\nstartServer(app);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,oBAAiD;AACjD,IAAAA,iBAAoC;AACpC,wBAAiC;AACjC,mCAAsC;AACtC,yBAAwB;AACxB,2BAAyB;AACzB,kBAAuC;AACvC,qBAAsC;AACtC,8BAAyB;AACzB,oBAAmB;AACnB,kBAAiB;AACjB,qBAAoD;AACpD,uBAAuC;AACvC,sBAA8B;AAb9B;AAeA,MAAM,gBAAY,8BAAQ,+BAAc,YAAY,GAAG,CAAC;AAExD,MAAM,iBAAiB;AAAA,EACrB,KAAK,QAAQ,IAAI;AAAA,EACjB,SAAS,QAAQ,IAAI;AACvB;AAGA,MAAM,cAAc,KAAK;AAAA,MACvB,iCAAa,0BAAQ,WAAW,oBAAoB,GAAG,MAAM;AAC/D;AAEA,MAAM,UAAe,eAAAC,SAAQ;AAG7B,IAAI,QAAI,kCAAS,CAAC;AAElB,MAAM,gBAAgB;AACtB,MAAM,aAAS,gCAAiB,cAAc;AAC9C,MAAM,OAAO,OAAO,OAAO,QAAQ;AAEnC,MAAM,qBAAiB,0BAAQ,WAAW,mBAAmB;AAE7D,MAAM,cAA2B;AAAA,EAC/B,QAAQ;AAAA,EACR,aAAa;AACf;AAEA,MAAM,cAAc,OAAOC,SAAiB;AAC1C,QAAM,kBAAkB,UAAM,oDAAsB,IAAI;AAExD,MAAI,CAAC,iBAAiB;AACpB,YAAQ,MAAM,yBAAyB,IAAI,4BAA4B;AACvE,YAAQ,KAAK,GAAG;AAAA,EAClB;AAEA,EAAAA,KAAI,QAAQ,cAAc;AAC1B,EAAAA,KAAI;AAAA,QACF,cAAAC,SAAO;AAAA,MACL,uBAAuB;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,EAAAD,KAAI,QAAI,YAAAE,SAAK,WAAW,CAAC;AAGzB,EAAAF,KAAI,QAAI,mBAAAG,SAAY,CAAC;AAErB,EAAAH,KAAI,IAAI,eAAAD,QAAQ,KAAK,CAAC;AAEtB,EAAAC,KAAI,QAAI,qBAAAI,SAAa,CAAC;AAGtB,EAAAJ,KAAI,IAAI,eAAAD,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAE9C,EAAAC,KAAI,IAAI,mBAAmB,kCAAgB;AAC3C,EAAAA,KAAI,IAAI,eAAe,kCAAmB;AAE1C,EAAAA,KAAI,IAAI,eAAAD,QAAQ,OAAO,cAAc,CAAC;AAGtC,EAAAC,KAAI,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAC5B,UAAM,oBAAgB,uBAAK,gBAAgB,IAAI,GAAG;AAElD,YAAI,2BAAW,aAAa,SAAK,0BAAU,aAAa,EAAE,OAAO,GAAG;AAElE,YAAM,WACJ,YAAAK,QAAK,QAAQ,aAAa,KAAK;AACjC,UAAI,UAAU,gBAAgB,QAAQ;AACtC,UAAI,SAAS,aAAa;AAAA,IAC5B,OAAO;AAEL,UAAI,aAAS,0BAAQ,gBAAgB,YAAY,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AAED,EAAAL,KAAI,OAAO,MAAM,MAAM;AACrB,UAAM,qBAAiB;AAAA,MACrB,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAEA,YAAQ,IAAI;AAAA,0BACU,YAAY,OAAO;AAAA;AAAA,2DAEc,IAAI;AAAA,kCAC7B,OAAO,OAAO,mBAAmB,KAAK,MAAM,WAAW,OAAO,OAAO,cAAc,SAAS;AAAA,kCAC5F,OAAO,OAAO,YAAY,GAAG;AAAA,kCAC7B,kBAAkB,GAAG;AAAA,KAClD;AAAA,EACH,CAAC;AACH;AAGA,YAAY,GAAG;","names":["import_config","express","app","helmet","cors","compression","cookieParser","mime"]}
|
package/server/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { intlayer } from "express-intlayer";
|
|
|
10
10
|
import helmet from "helmet";
|
|
11
11
|
import mime from "mime";
|
|
12
12
|
import { existsSync, lstatSync, readFileSync } from "node:fs";
|
|
13
|
-
import
|
|
13
|
+
import { dirname, join, resolve } from "node:path";
|
|
14
14
|
import { fileURLToPath } from "node:url";
|
|
15
15
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
16
16
|
const envFileOptions = {
|
|
@@ -51,7 +51,7 @@ const startServer = async (app2) => {
|
|
|
51
51
|
app2.use("/api/config", configurationRouter);
|
|
52
52
|
app2.use(express.static(clientDistPath));
|
|
53
53
|
app2.get(/(.*)/, (req, res) => {
|
|
54
|
-
const requestedPath =
|
|
54
|
+
const requestedPath = join(clientDistPath, req.url);
|
|
55
55
|
if (existsSync(requestedPath) && lstatSync(requestedPath).isFile()) {
|
|
56
56
|
const mimeType = mime.getType(requestedPath) ?? "application/octet-stream";
|
|
57
57
|
res.setHeader("Content-Type", mimeType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { getConfiguration, getEnvFilePath } from '@intlayer/config';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport express, { type Express } from 'express';\nimport { intlayer } from 'express-intlayer';\nimport helmet from 'helmet';\nimport mime from 'mime';\nimport { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { getConfiguration, getEnvFilePath } from '@intlayer/config';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport express, { type Express } from 'express';\nimport { intlayer } from 'express-intlayer';\nimport helmet from 'helmet';\nimport mime from 'mime';\nimport { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\n// Load package.json\nconst packageJson = JSON.parse(\n readFileSync(resolve(__dirname, '../../package.json'), 'utf8')\n);\n\nconst app: Express = express();\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nconst clientDistPath = resolve(__dirname, '../../client/dist');\n\nconst corsOptions: CorsOptions = {\n origin: '*',\n credentials: true,\n};\n\nconst startServer = async (app: Express) => {\n const isPortAvailable = await checkPortAvailability(port);\n\n if (!isPortAvailable) {\n console.error(`\\x1b[1;31mError: Port ${port} is already in use.\\x1b[0m`);\n process.exit(255);\n }\n\n app.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\n app.use(\n helmet({\n contentSecurityPolicy: false,\n })\n );\n\n app.use(cors(corsOptions));\n\n // Compress all HTTP responses\n app.use(compression());\n\n app.use(express.json());\n\n app.use(cookieParser());\n\n // Parse incoming requests with urlencoded payloads\n app.use(express.urlencoded({ extended: true }));\n\n app.use('/api/dictionary', dictionaryRouter);\n app.use('/api/config', configurationRouter);\n\n app.use(express.static(clientDistPath));\n\n // For single-page applications, redirect all unmatched routes to index.html\n app.get(/(.*)/, (req, res) => {\n const requestedPath = join(clientDistPath, req.url); // Full path of the requested file\n\n if (existsSync(requestedPath) && lstatSync(requestedPath).isFile()) {\n // If the requested file exists, determine its MIME type and serve it\n const mimeType =\n mime.getType(requestedPath) ?? 'application/octet-stream';\n res.setHeader('Content-Type', mimeType);\n res.sendFile(requestedPath);\n } else {\n // Otherwise, serve the index.html for React Router fallback\n res.sendFile(resolve(clientDistPath, 'index.html'));\n }\n });\n\n app.listen(port, () => {\n const dotEnvFilePath = getEnvFilePath(\n envFileOptions.env,\n envFileOptions.envFile\n );\n\n console.log(`\n \\x1b[1;90mINTLAYER v${packageJson.version}\\x1b[0m\n\n Editor running at: \\x1b[90mhttp://localhost:${port}\\x1b[0m\n - Watching application at: ${config.editor.applicationURL === '' ? '-' : `\\x1b[90m${config.editor.applicationURL}\\x1b[0m`}\n - Access key: ${config.editor.clientId ?? '-'}\n - Environment: ${dotEnvFilePath ?? '-'}\n `);\n });\n};\n\n// Start it up!\nstartServer(app);\n"],"mappings":"AAAA,SAAS,kBAAkB,sBAAsB;AACjD,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AACtC,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,UAAgC;AACvC,OAAO,aAA+B;AACtC,SAAS,gBAAgB;AACzB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,SAAS,YAAY,WAAW,oBAAoB;AACpD,SAAS,SAAS,MAAM,eAAe;AACvC,SAAS,qBAAqB;AAE9B,MAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAExD,MAAM,iBAAiB;AAAA,EACrB,KAAK,QAAQ,IAAI;AAAA,EACjB,SAAS,QAAQ,IAAI;AACvB;AAGA,MAAM,cAAc,KAAK;AAAA,EACvB,aAAa,QAAQ,WAAW,oBAAoB,GAAG,MAAM;AAC/D;AAEA,MAAM,MAAe,QAAQ;AAG7B,IAAI,IAAI,SAAS,CAAC;AAElB,MAAM,gBAAgB;AACtB,MAAM,SAAS,iBAAiB,cAAc;AAC9C,MAAM,OAAO,OAAO,OAAO,QAAQ;AAEnC,MAAM,iBAAiB,QAAQ,WAAW,mBAAmB;AAE7D,MAAM,cAA2B;AAAA,EAC/B,QAAQ;AAAA,EACR,aAAa;AACf;AAEA,MAAM,cAAc,OAAOA,SAAiB;AAC1C,QAAM,kBAAkB,MAAM,sBAAsB,IAAI;AAExD,MAAI,CAAC,iBAAiB;AACpB,YAAQ,MAAM,yBAAyB,IAAI,4BAA4B;AACvE,YAAQ,KAAK,GAAG;AAAA,EAClB;AAEA,EAAAA,KAAI,QAAQ,cAAc;AAC1B,EAAAA,KAAI;AAAA,IACF,OAAO;AAAA,MACL,uBAAuB;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,EAAAA,KAAI,IAAI,KAAK,WAAW,CAAC;AAGzB,EAAAA,KAAI,IAAI,YAAY,CAAC;AAErB,EAAAA,KAAI,IAAI,QAAQ,KAAK,CAAC;AAEtB,EAAAA,KAAI,IAAI,aAAa,CAAC;AAGtB,EAAAA,KAAI,IAAI,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAE9C,EAAAA,KAAI,IAAI,mBAAmB,gBAAgB;AAC3C,EAAAA,KAAI,IAAI,eAAe,mBAAmB;AAE1C,EAAAA,KAAI,IAAI,QAAQ,OAAO,cAAc,CAAC;AAGtC,EAAAA,KAAI,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAC5B,UAAM,gBAAgB,KAAK,gBAAgB,IAAI,GAAG;AAElD,QAAI,WAAW,aAAa,KAAK,UAAU,aAAa,EAAE,OAAO,GAAG;AAElE,YAAM,WACJ,KAAK,QAAQ,aAAa,KAAK;AACjC,UAAI,UAAU,gBAAgB,QAAQ;AACtC,UAAI,SAAS,aAAa;AAAA,IAC5B,OAAO;AAEL,UAAI,SAAS,QAAQ,gBAAgB,YAAY,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AAED,EAAAA,KAAI,OAAO,MAAM,MAAM;AACrB,UAAM,iBAAiB;AAAA,MACrB,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAEA,YAAQ,IAAI;AAAA,0BACU,YAAY,OAAO;AAAA;AAAA,2DAEc,IAAI;AAAA,kCAC7B,OAAO,OAAO,mBAAmB,KAAK,MAAM,WAAW,OAAO,OAAO,cAAc,SAAS;AAAA,kCAC5F,OAAO,OAAO,YAAY,GAAG;AAAA,kCAC7B,kBAAkB,GAAG;AAAA,KAClD;AAAA,EACH,CAAC;AACH;AAGA,YAAY,GAAG;","names":["app"]}
|