diff --git a/.env b/.env index 26d0f94..515c704 100644 --- a/.env +++ b/.env @@ -159,7 +159,7 @@ CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4" -DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" +# DATABASE_URL=mysql://root:@127.0.0.1:/barcelona?serverVersion=mariadb-10.10.2&charset=utf8mb4 ###< doctrine/doctrine-bundle ### ###> symfony/lock ### @@ -174,3 +174,8 @@ LOCK_DSN=flock # Delivery is disabled by default via "null://localhost" MAILER_URL=null://localhost ###< symfony/swiftmailer-bundle ### + +###> ibexa/connector-openai ### +OPENAI_API_KEY=sk-123456 +###< ibexa/connector-openai ### +PS_VECTOR_STORE_CONNECTION_STRING=CHANGEME diff --git a/composer.json b/composer.json index 5f398d8..b10bec5 100644 --- a/composer.json +++ b/composer.json @@ -2,11 +2,19 @@ "type": "project", "license": ["proprietary"], "require": { - "php": ">=7.4", + "php": ">=8.1", "ext-ctype": "*", "ext-iconv": "*", + "ext-pgsql": "*", + "fastvolt/markdown": "^0.2.1", + "hkulekci/qdrant": "^0.5.8", "http-interop/http-factory-guzzle": "^1.2", + "ibexa/connector-ai": "^4.6", + "ibexa/connector-openai": "^4.6", "ibexa/experience": "4.6.15", + "league/html-to-markdown": "^5.1", + "mathsgod/langchain-text-splitter": "^1.0", + "pgvector/pgvector": "^0.2.0", "symfony/console": "5.4.*", "symfony/dotenv": "5.4.*", "symfony/flex": "^1.17|^2", @@ -78,5 +86,11 @@ "url": "https://updates.ibexa.co" } }, - "name": "ibexa/experience-skeleton" + "name": "ibexa/experience-skeleton", + "require-dev": { + "symfony/debug-bundle": "5.4.*", + "symfony/monolog-bundle": "^3.0", + "symfony/stopwatch": "5.4.*", + "symfony/web-profiler-bundle": "5.4.*" + } } diff --git a/composer.lock b/composer.lock index 2b21558..396db91 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,901 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "792524c50c6a9284f1a79b27ed6cc3fa", + "content-hash": "d8eeca96fc8d913683563cca3553dd49", "packages": [ + { + "name": "amphp/amp", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "138801fb68cfc9c329da8a7b39d01ce7291ee4b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/138801fb68cfc9c329da8a7b39d01ce7291ee4b0", + "reference": "138801fb68cfc9c329da8a7b39d01ce7291ee4b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23.1" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Future/functions.php", + "src/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v3.0.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-05-10T21:37:46+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/daa00f2efdbd71565bf64ffefa89e37542addf93", + "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/parser": "^1.1", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2.3" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.22.1" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "https://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-02-17T04:49:38+00:00" + }, + { + "name": "amphp/cache", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/cache.git", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/cache/zipball/46912e387e6aa94933b61ea1ead9cf7540b7797c", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Cache\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + } + ], + "description": "A fiber-aware cache API based on Amp and Revolt.", + "homepage": "https://amphp.org/cache", + "support": { + "issues": "https://github.com/amphp/cache/issues", + "source": "https://github.com/amphp/cache/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-19T03:38:06+00:00" + }, + { + "name": "amphp/dns", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/dns.git", + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/process": "^2", + "daverandom/libdns": "^2.0.2", + "ext-filter": "*", + "ext-json": "*", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Dns\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Wright", + "email": "addr@daverandom.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + } + ], + "description": "Async DNS resolution for Amp.", + "homepage": "https://github.com/amphp/dns", + "keywords": [ + "amp", + "amphp", + "async", + "client", + "dns", + "resolve" + ], + "support": { + "issues": "https://github.com/amphp/dns/issues", + "source": "https://github.com/amphp/dns/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2025-01-19T15:43:40+00:00" + }, + { + "name": "amphp/file", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/file.git", + "reference": "28b38a805d2c235bb581d24415e78a42cd03aedc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/file/zipball/28b38a805d2c235bb581d24415e78a42cd03aedc", + "reference": "28b38a805d2c235bb581d24415e78a42cd03aedc", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parallel": "^2.3", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.22.2" + }, + "suggest": { + "ext-eio": "^2 || ^3", + "ext-uv": "^0.3 || ^0.2" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\File\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Non-blocking access to the filesystem based on Amp and Revolt.", + "homepage": "https://github.com/amphp/file", + "keywords": [ + "amp", + "amphp", + "async", + "disk", + "file", + "filesystem", + "io", + "non-blocking", + "static" + ], + "support": { + "issues": "https://github.com/amphp/file/issues", + "source": "https://github.com/amphp/file/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-12-06T23:39:02+00:00" + }, + { + "name": "amphp/parallel", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/parallel.git", + "reference": "5113111de02796a782f5d90767455e7391cca190" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190", + "reference": "5113111de02796a782f5d90767455e7391cca190", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/pipeline": "^1", + "amphp/process": "^2", + "amphp/serialization": "^1", + "amphp/socket": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" + }, + "type": "library", + "autoload": { + "files": [ + "src/Context/functions.php", + "src/Context/Internal/functions.php", + "src/Ipc/functions.php", + "src/Worker/functions.php" + ], + "psr-4": { + "Amp\\Parallel\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Parallel processing component for Amp.", + "homepage": "https://github.com/amphp/parallel", + "keywords": [ + "async", + "asynchronous", + "concurrent", + "multi-processing", + "multi-threading" + ], + "support": { + "issues": "https://github.com/amphp/parallel/issues", + "source": "https://github.com/amphp/parallel/tree/v2.3.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-12-21T01:56:09+00:00" + }, + { + "name": "amphp/parser", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/parser.git", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Parser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A generator parser to make streaming parsers simple.", + "homepage": "https://github.com/amphp/parser", + "keywords": [ + "async", + "non-blocking", + "parser", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/parser/issues", + "source": "https://github.com/amphp/parser/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-21T19:16:53+00:00" + }, + { + "name": "amphp/pipeline", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/pipeline.git", + "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/97cbf289f4d8877acfe58dd90ed5a4370a43caa4", + "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Pipeline\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Asynchronous iterators and operators.", + "homepage": "https://amphp.org/pipeline", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "iterator", + "non-blocking" + ], + "support": { + "issues": "https://github.com/amphp/pipeline/issues", + "source": "https://github.com/amphp/pipeline/tree/v1.2.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2025-01-19T15:42:46+00:00" + }, + { + "name": "amphp/process", + "version": "v2.0.3", + "source": { + "type": "git", + "url": "https://github.com/amphp/process.git", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Process\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A fiber-aware process manager based on Amp and Revolt.", + "homepage": "https://amphp.org/process", + "support": { + "issues": "https://github.com/amphp/process/issues", + "source": "https://github.com/amphp/process/tree/v2.0.3" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-19T03:13:44+00:00" + }, + { + "name": "amphp/serialization", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/serialization.git", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "phpunit/phpunit": "^9 || ^8 || ^7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Serialization\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Serialization tools for IPC and data storage in PHP.", + "homepage": "https://github.com/amphp/serialization", + "keywords": [ + "async", + "asynchronous", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/amphp/serialization/issues", + "source": "https://github.com/amphp/serialization/tree/master" + }, + "time": "2020-03-25T21:39:07+00:00" + }, + { + "name": "amphp/socket", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/socket.git", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/socket/zipball/58e0422221825b79681b72c50c47a930be7bf1e1", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/dns": "^2", + "ext-openssl": "*", + "kelunik/certificate": "^1.1", + "league/uri": "^6.5 | ^7", + "league/uri-interfaces": "^2.3 | ^7", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "amphp/process": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php", + "src/SocketAddress/functions.php" + ], + "psr-4": { + "Amp\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@gmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.", + "homepage": "https://github.com/amphp/socket", + "keywords": [ + "amp", + "async", + "encryption", + "non-blocking", + "sockets", + "tcp", + "tls" + ], + "support": { + "issues": "https://github.com/amphp/socket/issues", + "source": "https://github.com/amphp/socket/tree/v2.3.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-21T14:33:03+00:00" + }, + { + "name": "amphp/sync", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/sync.git", + "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/sync/zipball/217097b785130d77cfcc58ff583cf26cd1770bf1", + "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Sync\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.", + "homepage": "https://github.com/amphp/sync", + "keywords": [ + "async", + "asynchronous", + "mutex", + "semaphore", + "synchronization" + ], + "support": { + "issues": "https://github.com/amphp/sync/issues", + "source": "https://github.com/amphp/sync/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-08-03T19:31:26+00:00" + }, { "name": "babdev/pagerfanta-bundle", "version": "v2.11.0", @@ -407,6 +1300,50 @@ }, "time": "2024-11-13T21:04:33+00:00" }, + { + "name": "daverandom/libdns", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/DaveRandom/LibDNS.git", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "Required for IDN support" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "LibDNS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "DNS protocol implementation written in pure PHP", + "keywords": [ + "dns" + ], + "support": { + "issues": "https://github.com/DaveRandom/LibDNS/issues", + "source": "https://github.com/DaveRandom/LibDNS/tree/v2.1.0" + }, + "time": "2024-04-12T12:12:48+00:00" + }, { "name": "doctrine/annotations", "version": "1.14.4", @@ -664,20 +1601,20 @@ }, { "name": "doctrine/common", - "version": "3.4.5", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "6c8fef961f67b8bc802ce3e32e3ebd1022907286" + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/6c8fef961f67b8bc802ce3e32e3ebd1022907286", - "reference": "6c8fef961f67b8bc802ce3e32e3ebd1022907286", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0 || ^3.0", + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", "php": "^7.1 || ^8.0" }, "require-dev": { @@ -735,7 +1672,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.4.5" + "source": "https://github.com/doctrine/common/tree/3.5.0" }, "funding": [ { @@ -751,7 +1688,7 @@ "type": "tidelift" } ], - "time": "2024-10-08T15:53:43+00:00" + "time": "2025-01-01T22:12:03+00:00" }, { "name": "doctrine/dbal", @@ -2166,6 +3103,56 @@ ], "time": "2021-12-16T07:46:35+00:00" }, + { + "name": "fastvolt/markdown", + "version": "v0.2.1", + "source": { + "type": "git", + "url": "https://github.com/fastvolt/markdown.git", + "reference": "c068d3644ac544e024b8f04381f7995b79f60849" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fastvolt/markdown/zipball/c068d3644ac544e024b8f04381f7995b79f60849", + "reference": "c068d3644ac544e024b8f04381f7995b79f60849", + "shasum": "" + }, + "require": { + "amphp/file": "^3.0", + "php": "^8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastVolt\\Helper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oladoyinbo Vincent", + "email": "oladoyinboadverts@gmail.com" + } + ], + "description": "A Fast, Simple and Straight-forward Markdown to HTML Converter for PHP.", + "keywords": [ + "markdown", + "markdown-library", + "markdown-parser", + "markdown-to-html" + ], + "support": { + "issues": "https://github.com/fastvolt/markdown/issues", + "source": "https://github.com/fastvolt/markdown/tree/v0.2.1" + }, + "time": "2024-08-28T22:09:35+00:00" + }, { "name": "friendsofphp/proxy-manager-lts", "version": "v1.0.18", @@ -3024,21 +4011,77 @@ "issues": "https://github.com/guzzle/psr7/issues", "source": "https://github.com/guzzle/psr7/tree/1.9.1" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-04-17T16:00:37+00:00" + }, + { + "name": "hkulekci/qdrant", + "version": "v0.5.8", + "source": { + "type": "git", + "url": "https://github.com/hkulekci/qdrant-php.git", + "reference": "9be8fa3c52514c35f3e6c7db1c34f43335891fa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hkulekci/qdrant-php/zipball/9be8fa3c52514c35f3e6c7db1c34f43335891fa2", + "reference": "9be8fa3c52514c35f3e6c7db1c34f43335891fa2", + "shasum": "" + }, + "require": { + "php": "^8.1", + "php-http/discovery": "^1.19", + "psr/http-client": "^1.0", + "psr/http-client-implementation": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message": "^1.0|^2.0", + "psr/log": "^1.0|^2.0|^3.0", + "webmozart/assert": "^1.11" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "nyholm/psr7": "^1.8@dev", + "php-http/mock-client": "1.x-dev", + "phpunit/php-code-coverage": "^10.1@dev", + "phpunit/phpunit": "^10.0", + "symfony/http-client": "^6.4.3|^7.1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Qdrant\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" + "name": "Haydar Kulekci", + "email": "haydarkulekci@gmail.com" } ], - "time": "2023-04-17T16:00:37+00:00" + "description": "PHP Client for Qdrant", + "support": { + "issues": "https://github.com/hkulekci/qdrant-php/issues", + "source": "https://github.com/hkulekci/qdrant-php/tree/v0.5.8" + }, + "time": "2024-11-30T06:03:37+00:00" }, { "name": "http-interop/http-factory-guzzle", @@ -3629,6 +4672,114 @@ }, "time": "2024-12-13T13:39:03+00:00" }, + { + "name": "ibexa/connector-ai", + "version": "v4.6.15", + "source": { + "type": "git", + "url": "git@github.com:ibexa/connector-ai.git", + "reference": "dcbab6d29d54bfed74c2de3f0914a5a83b92e001" + }, + "dist": { + "type": "zip", + "url": "https://updates.ibexa.co/dist/ibexa/connector-ai/ibexa-connector-ai-dcbab6d29d54bfed74c2de3f0914a5a83b92e001-zip-341eb5.zip", + "reference": "dcbab6d29d54bfed74c2de3f0914a5a83b92e001" + }, + "require": { + "ext-json": "*", + "http-interop/http-factory-guzzle": "^1.2", + "ibexa/admin-ui": "~4.6", + "ibexa/core": "~4.6", + "ibexa/core-persistence": "~4.6", + "ibexa/core-search": "~4.6", + "ibexa/fieldtype-richtext": "~4.6", + "ibexa/polyfill-php82": "^1.0", + "ibexa/product-catalog": "~4.6", + "ibexa/rest": "~4.6", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/event-dispatcher-contracts": "^2.2", + "symfony/form": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/yaml": "^5.4" + }, + "require-dev": { + "dama/doctrine-test-bundle": "^v6.7", + "ibexa/behat": "~4.6", + "ibexa/code-style": "~2.0.0", + "ibexa/content-forms": "~4.6", + "ibexa/doctrine-schema": "~4.6", + "ibexa/graphql": "~4.6", + "ibexa/installer": "~4.6", + "ibexa/migrations": "~4.6", + "ibexa/personalization": "~4.6", + "ibexa/search": "~4.6", + "ibexa/taxonomy": "~4.6", + "ibexa/test-core": "~4.6", + "ibexa/test-rest": "~4.6", + "matthiasnoback/symfony-dependency-injection-test": "^4.2", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^9", + "qossmic/deptrac-shim": "^0.24.0 || ^1.0.2" + }, + "type": "ibexa-bundle", + "extra": { + "branch-alias": { + "dev-main": "4.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ibexa\\Bundle\\ConnectorAi\\": "src/bundle/", + "Ibexa\\Contracts\\ConnectorAi\\": "src/contracts/", + "Ibexa\\ConnectorAi\\": "src/lib/" + } + }, + "autoload-dev": { + "psr-4": { + "Ibexa\\Tests\\Bundle\\ConnectorAi\\": "tests/bundle/", + "Ibexa\\Tests\\Integration\\ConnectorAi\\": "tests/integration/", + "Ibexa\\Tests\\ConnectorAi\\": "tests/lib/" + } + }, + "notification-url": "https://updates.ibexa.co/notifystats", + "scripts": { + "fix-cs": [ + "php-cs-fixer fix --config=.php-cs-fixer.php --show-progress=dots" + ], + "check-cs": [ + "@fix-cs --dry-run" + ], + "test": [ + "phpunit -c phpunit.xml.dist" + ], + "test-integration": [ + "phpunit -c phpunit.integration.xml" + ], + "phpstan": [ + "phpstan analyse -c phpstan.neon" + ], + "deptrac": [ + "php vendor/bin/deptrac analyse" + ] + }, + "license": [ + "proprietary" + ], + "keywords": [ + "ibexa-dxp" + ], + "support": { + "source": "https://github.com/ibexa/connector-ai/tree/v4.6.15", + "issues": "https://github.com/ibexa/connector-ai/issues" + }, + "time": "2024-12-13T13:39:33+00:00" + }, { "name": "ibexa/connector-dam", "version": "v4.6.15", @@ -3725,6 +4876,110 @@ }, "time": "2024-12-13T13:37:26+00:00" }, + { + "name": "ibexa/connector-openai", + "version": "v4.6.15", + "source": { + "type": "git", + "url": "git@github.com:ibexa/connector-openai.git", + "reference": "3c854d0b93d16421f72cbe377d259e14a2f8c1e7" + }, + "dist": { + "type": "zip", + "url": "https://updates.ibexa.co/dist/ibexa/connector-openai/ibexa-connector-openai-3c854d0b93d16421f72cbe377d259e14a2f8c1e7-zip-f61af6.zip", + "reference": "3c854d0b93d16421f72cbe377d259e14a2f8c1e7" + }, + "require": { + "ext-json": "*", + "ibexa/connector-ai": "~4.6", + "ibexa/core-search": "~4.6", + "orhanerday/open-ai": "^5.2", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/yaml": "^5.4" + }, + "require-dev": { + "dama/doctrine-test-bundle": "^v6.7", + "ibexa/admin-ui": "~4.6", + "ibexa/behat": "~4.6", + "ibexa/code-style": "~2.0.0", + "ibexa/content-forms": "~4.6", + "ibexa/core": "~4.6", + "ibexa/core-persistence": "~4.6", + "ibexa/doctrine-schema": "~4.6", + "ibexa/fieldtype-richtext": "~4.6", + "ibexa/graphql": "~4.6", + "ibexa/installer": "~4.6", + "ibexa/migrations": "~4.6", + "ibexa/personalization": "~4.6", + "ibexa/product-catalog": "~4.6", + "ibexa/rest": "~4.6", + "ibexa/search": "~4.6", + "ibexa/taxonomy": "~4.6", + "ibexa/test-core": "~4.6", + "matthiasnoback/symfony-dependency-injection-test": "^4.2", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^9", + "qossmic/deptrac-shim": "^0.24.0 || ^1.0.2" + }, + "type": "ibexa-bundle", + "extra": { + "branch-alias": { + "dev-main": "4.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ibexa\\Bundle\\ConnectorOpenAi\\": "src/bundle/", + "Ibexa\\Contracts\\ConnectorOpenAi\\": "src/contracts/", + "Ibexa\\ConnectorOpenAi\\": "src/lib/" + } + }, + "autoload-dev": { + "psr-4": { + "Ibexa\\Tests\\Bundle\\ConnectorOpenAi\\": "tests/bundle/", + "Ibexa\\Tests\\Integration\\ConnectorOpenAi\\": "tests/integration/", + "Ibexa\\Tests\\ConnectorOpenAi\\": "tests/lib/" + } + }, + "notification-url": "https://updates.ibexa.co/notifystats", + "scripts": { + "fix-cs": [ + "php-cs-fixer fix --config=.php-cs-fixer.php --show-progress=dots" + ], + "check-cs": [ + "@fix-cs --dry-run" + ], + "test": [ + "phpunit -c phpunit.xml.dist" + ], + "test-integration": [ + "phpunit -c phpunit.integration.xml" + ], + "phpstan": [ + "phpstan analyse -c phpstan.neon" + ], + "deptrac": [ + "php vendor/bin/deptrac analyse" + ] + }, + "license": [ + "proprietary" + ], + "keywords": [ + "ibexa-dxp" + ], + "support": { + "source": "https://github.com/ibexa/connector-openai/tree/v4.6.15", + "issues": "https://github.com/ibexa/connector-openai/issues" + }, + "time": "2024-12-13T13:39:34+00:00" + }, { "name": "ibexa/connector-qualifio", "version": "v4.6.15", @@ -9042,48 +10297,106 @@ "symfony/templating": "^4.3 || ^5.4", "symfony/twig-bundle": "^4.3.11 || ^5.4" }, - "type": "symfony-bundle", + "type": "symfony-bundle", + "extra": { + "symfony": { + "require": "^5.4", + "allow-contrib": true + }, + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "JMS\\TranslationBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Puts the Symfony Translation Component on steroids", + "homepage": "http://jmsyst.com/bundles/JMSTranslationBundle", + "keywords": [ + "extract", + "extraction", + "i18n", + "interface", + "multilanguage", + "translation", + "ui", + "webinterface" + ], + "support": { + "issues": "https://github.com/schmittjoh/JMSTranslationBundle/issues", + "source": "https://github.com/schmittjoh/JMSTranslationBundle/tree/1.9.1" + }, + "time": "2023-03-27T17:06:32+00:00" + }, + { + "name": "kelunik/certificate", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/kelunik/certificate.git", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=7.0" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^6 | 7 | ^8 | ^9" + }, + "type": "library", "extra": { - "symfony": { - "require": "^5.4", - "allow-contrib": true - }, "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "JMS\\TranslationBundle\\": "" + "Kelunik\\Certificate\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Puts the Symfony Translation Component on steroids", - "homepage": "http://jmsyst.com/bundles/JMSTranslationBundle", + "description": "Access certificate details and transform between different formats.", "keywords": [ - "extract", - "extraction", - "i18n", - "interface", - "multilanguage", - "translation", - "ui", - "webinterface" + "DER", + "certificate", + "certificates", + "openssl", + "pem", + "x509" ], "support": { - "issues": "https://github.com/schmittjoh/JMSTranslationBundle/issues", - "source": "https://github.com/schmittjoh/JMSTranslationBundle/tree/1.9.1" + "issues": "https://github.com/kelunik/certificate/issues", + "source": "https://github.com/kelunik/certificate/tree/v1.1.3" }, - "time": "2023-03-27T17:06:32+00:00" + "time": "2023-02-03T21:26:53+00:00" }, { "name": "knplabs/knp-menu", @@ -9160,20 +10473,20 @@ }, { "name": "knplabs/knp-menu-bundle", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "6a1e3e1f4131f9a5a967e36717a1fe680c183637" + "reference": "5f85a4908343c3d6a6009c2f8a74c2d102c0aa80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/6a1e3e1f4131f9a5a967e36717a1fe680c183637", - "reference": "6a1e3e1f4131f9a5a967e36717a1fe680c183637", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/5f85a4908343c3d6a6009c2f8a74c2d102c0aa80", + "reference": "5f85a4908343c3d6a6009c2f8a74c2d102c0aa80", "shasum": "" }, "require": { - "knplabs/knp-menu": "^3.3", + "knplabs/knp-menu": "^3.6", "php": "^8.1", "symfony/deprecation-contracts": "^2.5 | ^3.3", "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0" @@ -9219,9 +10532,9 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.4.2" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.5.0" }, - "time": "2024-06-03T08:48:36+00:00" + "time": "2024-12-25T16:34:19+00:00" }, { "name": "knpuniversity/oauth2-client-bundle", @@ -9617,6 +10930,95 @@ }, "time": "2021-02-12T19:24:17+00:00" }, + { + "name": "league/html-to-markdown", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/html-to-markdown.git", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xml": "*", + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "mikehaertl/php-shellcommand": "^1.1.0", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^8.5 || ^9.2", + "scrutinizer/ocular": "^1.6", + "unleashedtech/php-coding-standard": "^2.7 || ^3.0", + "vimeo/psalm": "^4.22 || ^5.0" + }, + "bin": [ + "bin/html-to-markdown" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\HTMLToMarkdown\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + }, + { + "name": "Nick Cernis", + "email": "nick@cern.is", + "homepage": "http://modernnerd.net", + "role": "Original Author" + } + ], + "description": "An HTML-to-markdown conversion helper for PHP", + "homepage": "https://github.com/thephpleague/html-to-markdown", + "keywords": [ + "html", + "markdown" + ], + "support": { + "issues": "https://github.com/thephpleague/html-to-markdown/issues", + "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", + "type": "tidelift" + } + ], + "time": "2023-07-12T21:21:09+00:00" + }, { "name": "league/mime-type-detection", "version": "1.16.0", @@ -9738,6 +11140,180 @@ }, "time": "2024-12-11T05:05:52+00:00" }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, { "name": "lexik/jwt-authentication-bundle", "version": "v2.21.0", @@ -9963,6 +11539,47 @@ }, "time": "2024-12-12T09:38:23+00:00" }, + { + "name": "mathsgod/langchain-text-splitter", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/mathsgod/langchain-text-splitter-php.git", + "reference": "d37a0882d7465783189a5b36be2b78a209f3110a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mathsgod/langchain-text-splitter-php/zipball/d37a0882d7465783189a5b36be2b78a209f3110a", + "reference": "d37a0882d7465783189a5b36be2b78a209f3110a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Langchain\\TextSplitter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raymond Chong", + "email": "mathsgod@yahoo.com" + } + ], + "description": "A PHP library to split text into sentences and words.", + "support": { + "issues": "https://github.com/mathsgod/langchain-text-splitter-php/issues", + "source": "https://github.com/mathsgod/langchain-text-splitter-php/tree/1.0.0" + }, + "time": "2024-02-27T08:40:18+00:00" + }, { "name": "mck89/peast", "version": "v1.16.3", @@ -10611,16 +12228,75 @@ "description": "Integrates Flysystem filesystem abstraction library to your Symfony project.", "homepage": "https://1up.io", "keywords": [ - "Flysystem", - "abstraction", - "filesystem", - "symfony" + "Flysystem", + "abstraction", + "filesystem", + "symfony" + ], + "support": { + "issues": "https://github.com/1up-lab/OneupFlysystemBundle/issues", + "source": "https://github.com/1up-lab/OneupFlysystemBundle/tree/4.12.3" + }, + "time": "2024-10-15T06:27:06+00:00" + }, + { + "name": "orhanerday/open-ai", + "version": "5.2", + "source": { + "type": "git", + "url": "https://github.com/orhanerday/open-ai.git", + "reference": "d8c78fe2f5fed59e0ba458f90b5589ed9f13a367" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orhanerday/open-ai/zipball/d8c78fe2f5fed59e0ba458f90b5589ed9f13a367", + "reference": "d8c78fe2f5fed59e0ba458f90b5589ed9f13a367", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "pestphp/pest": "^1.20", + "spatie/ray": "^1.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "Orhanerday\\OpenAi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Orhan Erday", + "email": "orhanerday@gmail.com", + "role": "Developer" + } + ], + "description": "OpenAI GPT-3 Api Client in PHP", + "homepage": "https://github.com/orhanerday/open-ai", + "keywords": [ + "open-ai", + "orhanerday" ], "support": { - "issues": "https://github.com/1up-lab/OneupFlysystemBundle/issues", - "source": "https://github.com/1up-lab/OneupFlysystemBundle/tree/4.12.3" + "issues": "https://github.com/orhanerday/open-ai/issues", + "source": "https://github.com/orhanerday/open-ai/tree/5.2" }, - "time": "2024-10-15T06:27:06+00:00" + "funding": [ + { + "url": "https://github.com/orhanerday", + "type": "github" + } + ], + "time": "2024-05-29T12:31:54+00:00" }, { "name": "overblog/graphiql-bundle", @@ -10933,6 +12609,58 @@ }, "time": "2020-10-15T08:29:30+00:00" }, + { + "name": "pgvector/pgvector", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/pgvector/pgvector-php.git", + "reference": "d209ac1003686b5e142b1025476023553fdb41f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pgvector/pgvector-php/zipball/d209ac1003686b5e142b1025476023553fdb41f1", + "reference": "d209ac1003686b5e142b1025476023553fdb41f1", + "shasum": "" + }, + "require": { + "php": ">= 8.1" + }, + "require-dev": { + "illuminate/database": ">= 10", + "phpunit/phpunit": "^10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Pgvector\\Laravel\\PgvectorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Pgvector\\": "src/", + "Pgvector\\Laravel\\": "src/laravel/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrew Kane", + "email": "andrew@ankane.org" + } + ], + "description": "pgvector support for PHP", + "support": { + "issues": "https://github.com/pgvector/pgvector-php/issues", + "source": "https://github.com/pgvector/pgvector-php" + }, + "time": "2024-06-26T06:17:24+00:00" + }, { "name": "php-http/client-common", "version": "2.7.2", @@ -12421,6 +14149,78 @@ ], "time": "2023-11-16T16:16:50+00:00" }, + { + "name": "revolt/event-loop", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/revoltphp/event-loop.git", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/25de49af7223ba039f64da4ae9a28ec2d10d0254", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Revolt\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Rock-solid event loop for concurrent PHP applications.", + "keywords": [ + "async", + "asynchronous", + "concurrency", + "event", + "event-loop", + "non-blocking", + "scheduler" + ], + "support": { + "issues": "https://github.com/revoltphp/event-loop/issues", + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.6" + }, + "time": "2023-11-30T05:34:44+00:00" + }, { "name": "scssphp/scssphp", "version": "v1.13.0", @@ -13097,12 +14897,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -13439,12 +15239,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -13853,12 +15653,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -17318,12 +19118,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -17790,12 +19590,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -18778,7 +20578,7 @@ }, { "name": "twig/extra-bundle", - "version": "v3.17.0", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", @@ -18836,7 +20636,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.17.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.18.0" }, "funding": [ { @@ -18852,7 +20652,7 @@ }, { "name": "twig/intl-extra", - "version": "v3.17.0", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", @@ -18900,7 +20700,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.17.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.18.0" }, "funding": [ { @@ -18916,7 +20716,7 @@ }, { "name": "twig/string-extra", - "version": "v3.17.0", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", @@ -18967,7 +20767,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.17.0" + "source": "https://github.com/twigphp/string-extra/tree/v3.18.0" }, "funding": [ { @@ -18983,16 +20783,16 @@ }, { "name": "twig/twig", - "version": "v3.17.1", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "677ef8da6497a03048192aeeb5aa3018e379ac71" + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/677ef8da6497a03048192aeeb5aa3018e379ac71", - "reference": "677ef8da6497a03048192aeeb5aa3018e379ac71", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", "shasum": "" }, "require": { @@ -19047,7 +20847,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.17.1" + "source": "https://github.com/twigphp/Twig/tree/v3.18.0" }, "funding": [ { @@ -19059,7 +20859,7 @@ "type": "tidelift" } ], - "time": "2024-12-12T09:58:10+00:00" + "time": "2024-12-29T10:51:50+00:00" }, { "name": "webmozart/assert", @@ -19509,16 +21309,177 @@ "time": "2023-08-18T12:36:18+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "symfony/debug-bundle", + "version": "v5.4.45", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "653c7629d036ef24ac5de54a157aecdc400d2570" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/653c7629d036ef24ac5de54a157aecdc400d2570", + "reference": "653c7629d036ef24ac5de54a157aecdc400d2570", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug-bundle/tree/v5.4.45" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:11:13+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v5.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "4afb0399456b966be92410d2bbd6146cc3ce2174" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4afb0399456b966be92410d2bbd6146cc3ce2174", + "reference": "4afb0399456b966be92410d2bbd6146cc3ce2174", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<4.4" + }, + "require-dev": { + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-19T09:26:40+00:00" + } + ], "aliases": [], "minimum-stability": "stable", "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4", + "php": ">=8.1", "ext-ctype": "*", - "ext-iconv": "*" + "ext-iconv": "*", + "ext-pgsql": "*" }, "platform-dev": {}, "plugin-api-version": "2.6.0" diff --git a/config/bundles.php b/config/bundles.php index 19f1e16..a5c36c3 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -87,4 +87,8 @@ KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle::class => ['all' => true], Ibexa\Bundle\Connect\IbexaConnectBundle::class => ['all' => true], Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], + Ibexa\Bundle\ConnectorAi\IbexaConnectorAiBundle::class => ['all' => true], + Ibexa\Bundle\ConnectorOpenAi\IbexaConnectorOpenAiBundle::class => ['all' => true], ]; diff --git a/config/graphql/types/ibexa/ArticleItem.types.yaml b/config/graphql/types/ibexa/ArticleItem.types.yaml new file mode 100644 index 0000000..9c991d2 --- /dev/null +++ b/config/graphql/types/ibexa/ArticleItem.types.yaml @@ -0,0 +1,42 @@ +ArticleItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + title: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "title", args])' + args: + language: { type: RepositoryLanguage } + shortTitle: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "short_title", args])' + args: + language: { type: RepositoryLanguage } + author: + type: '[AuthorFieldValue]' + resolve: '@=resolver("ItemFieldValue", [value, "author", args]) !== null ? resolver("ItemFieldValue", [value, "author", args]).authors : null' + args: + language: { type: RepositoryLanguage } + intro: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "intro", args])' + args: + language: { type: RepositoryLanguage } + body: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "body", args])' + args: + language: { type: RepositoryLanguage } + enableComments: + type: Boolean + resolve: '@=resolver("ItemFieldValue", [value, "enable_comments", args]) !== null ? resolver("ItemFieldValue", [value, "enable_comments", args]).bool : null' + image: + type: Item + resolve: '@=resolver("RelationFieldValue", [resolver("ItemFieldValue", [value, "image", args]), false])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/ArticleItemConnection.types.yaml b/config/graphql/types/ibexa/ArticleItemConnection.types.yaml new file mode 100644 index 0000000..f380a00 --- /dev/null +++ b/config/graphql/types/ibexa/ArticleItemConnection.types.yaml @@ -0,0 +1,9 @@ +ArticleItemConnection: + type: relay-connection + config: + nodeType: ArticleItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/ArticleItemCreateInput.types.yaml b/config/graphql/types/ibexa/ArticleItemCreateInput.types.yaml new file mode 100644 index 0000000..a551a7a --- /dev/null +++ b/config/graphql/types/ibexa/ArticleItemCreateInput.types.yaml @@ -0,0 +1,18 @@ +ArticleItemCreateInput: + type: input-object + config: + fields: + title: + type: String! + shortTitle: + type: String + author: + type: '[AuthorInput]' + intro: + type: RichTextFieldInput! + body: + type: RichTextFieldInput + enableComments: + type: Boolean + image: + type: Int diff --git a/config/graphql/types/ibexa/ArticleItemType.types.yaml b/config/graphql/types/ibexa/ArticleItemType.types.yaml new file mode 100644 index 0000000..13f0421 --- /dev/null +++ b/config/graphql/types/ibexa/ArticleItemType.types.yaml @@ -0,0 +1,29 @@ +ArticleItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + title: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("title")' + shortTitle: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("short_title")' + author: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("author")' + intro: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("intro")' + body: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("body")' + enableComments: + type: CheckboxFieldDefinition + resolve: '@=value.getFieldDefinition("enable_comments")' + image: + type: RelationFieldDefinition + resolve: '@=value.getFieldDefinition("image")' diff --git a/config/graphql/types/ibexa/ArticleItemUpdateInput.types.yaml b/config/graphql/types/ibexa/ArticleItemUpdateInput.types.yaml new file mode 100644 index 0000000..f9e2688 --- /dev/null +++ b/config/graphql/types/ibexa/ArticleItemUpdateInput.types.yaml @@ -0,0 +1,18 @@ +ArticleItemUpdateInput: + type: input-object + config: + fields: + title: + type: String + shortTitle: + type: String + author: + type: '[AuthorInput]' + intro: + type: RichTextFieldInput + body: + type: RichTextFieldInput + enableComments: + type: Boolean + image: + type: Int diff --git a/config/graphql/types/ibexa/BannerPageBlock.types.yaml b/config/graphql/types/ibexa/BannerPageBlock.types.yaml new file mode 100644 index 0000000..928d222 --- /dev/null +++ b/config/graphql/types/ibexa/BannerPageBlock.types.yaml @@ -0,0 +1,12 @@ +BannerPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + contentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("contentId").getValue()])' + url: + type: String + resolve: '@=value.getAttribute("url").getValue()' diff --git a/config/graphql/types/ibexa/BannerPageBlockViews.types.yaml b/config/graphql/types/ibexa/BannerPageBlockViews.types.yaml new file mode 100644 index 0000000..0b1016e --- /dev/null +++ b/config/graphql/types/ibexa/BannerPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +BannerPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/banner.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/BestsellersPageBlock.types.yaml b/config/graphql/types/ibexa/BestsellersPageBlock.types.yaml new file mode 100644 index 0000000..2e578a3 --- /dev/null +++ b/config/graphql/types/ibexa/BestsellersPageBlock.types.yaml @@ -0,0 +1,9 @@ +BestsellersPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/BestsellersPageBlockViews.types.yaml b/config/graphql/types/ibexa/BestsellersPageBlockViews.types.yaml new file mode 100644 index 0000000..231584b --- /dev/null +++ b/config/graphql/types/ibexa/BestsellersPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +BestsellersPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/page_builder/blocks/bestsellers.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/CatalogPageBlock.types.yaml b/config/graphql/types/ibexa/CatalogPageBlock.types.yaml new file mode 100644 index 0000000..56c50a8 --- /dev/null +++ b/config/graphql/types/ibexa/CatalogPageBlock.types.yaml @@ -0,0 +1,9 @@ +CatalogPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/CatalogPageBlockViews.types.yaml b/config/graphql/types/ibexa/CatalogPageBlockViews.types.yaml new file mode 100644 index 0000000..cff06a2 --- /dev/null +++ b/config/graphql/types/ibexa/CatalogPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +CatalogPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/product_catalog/page_builder/blocks/catalog.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/CollectionPageBlock.types.yaml b/config/graphql/types/ibexa/CollectionPageBlock.types.yaml new file mode 100644 index 0000000..afb3257 --- /dev/null +++ b/config/graphql/types/ibexa/CollectionPageBlock.types.yaml @@ -0,0 +1,9 @@ +CollectionPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + locationlist: + type: '[Location]' + resolve: '@=resolver("LocationListStorageValue", [value.getAttribute("locationlist").getValue()])' diff --git a/config/graphql/types/ibexa/CollectionPageBlockViews.types.yaml b/config/graphql/types/ibexa/CollectionPageBlockViews.types.yaml new file mode 100644 index 0000000..945f055 --- /dev/null +++ b/config/graphql/types/ibexa/CollectionPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +CollectionPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/collection.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/CommonContentPageBlock.types.yaml b/config/graphql/types/ibexa/CommonContentPageBlock.types.yaml new file mode 100644 index 0000000..a4524d0 --- /dev/null +++ b/config/graphql/types/ibexa/CommonContentPageBlock.types.yaml @@ -0,0 +1,4 @@ +CommonContentPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/CommonContentPageBlockViews.types.yaml b/config/graphql/types/ibexa/CommonContentPageBlockViews.types.yaml new file mode 100644 index 0000000..ac345f8 --- /dev/null +++ b/config/graphql/types/ibexa/CommonContentPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +CommonContentPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/dashboard/blocks/common_content.html.twig' + description: 'Default view' diff --git a/config/graphql/types/ibexa/ContentTypeIdentifier.types.yaml b/config/graphql/types/ibexa/ContentTypeIdentifier.types.yaml new file mode 100644 index 0000000..64d117d --- /dev/null +++ b/config/graphql/types/ibexa/ContentTypeIdentifier.types.yaml @@ -0,0 +1,28 @@ +ContentTypeIdentifier: + type: enum + config: + values: + article: + description: 'No description available' + folder: + description: 'No description available' + form: + description: 'No description available' + tag: + description: 'No description available' + landing_page: { } + product_category_tag: + description: 'No description available' + editor: { } + user: + description: 'No description available' + user_group: + description: 'No description available' + file: + description: 'No description available' + image: + description: 'No description available' + customer_portal: + description: 'No description available' + customer_portal_page: + description: 'No description available' diff --git a/config/graphql/types/ibexa/ContentlistPageBlock.types.yaml b/config/graphql/types/ibexa/ContentlistPageBlock.types.yaml new file mode 100644 index 0000000..4431b09 --- /dev/null +++ b/config/graphql/types/ibexa/ContentlistPageBlock.types.yaml @@ -0,0 +1,15 @@ +ContentlistPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + contentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("contentId").getValue()])' + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' + contentType: + type: '[ContentType]' + resolve: '@=resolver("ContentTypeListStorageValue", [value.getAttribute("contentType").getValue()])' diff --git a/config/graphql/types/ibexa/ContentlistPageBlockViews.types.yaml b/config/graphql/types/ibexa/ContentlistPageBlockViews.types.yaml new file mode 100644 index 0000000..5ec54ca --- /dev/null +++ b/config/graphql/types/ibexa/ContentlistPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +ContentlistPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/contentlist.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/CustomerPortalItem.types.yaml b/config/graphql/types/ibexa/CustomerPortalItem.types.yaml new file mode 100644 index 0000000..2b719db --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalItem.types.yaml @@ -0,0 +1,12 @@ +CustomerPortalItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' diff --git a/config/graphql/types/ibexa/CustomerPortalItemConnection.types.yaml b/config/graphql/types/ibexa/CustomerPortalItemConnection.types.yaml new file mode 100644 index 0000000..065f7b4 --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalItemConnection.types.yaml @@ -0,0 +1,9 @@ +CustomerPortalItemConnection: + type: relay-connection + config: + nodeType: CustomerPortalItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/CustomerPortalItemCreateInput.types.yaml b/config/graphql/types/ibexa/CustomerPortalItemCreateInput.types.yaml new file mode 100644 index 0000000..307d79a --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalItemCreateInput.types.yaml @@ -0,0 +1,6 @@ +CustomerPortalItemCreateInput: + type: input-object + config: + fields: + name: + type: String! diff --git a/config/graphql/types/ibexa/CustomerPortalItemType.types.yaml b/config/graphql/types/ibexa/CustomerPortalItemType.types.yaml new file mode 100644 index 0000000..12fb617 --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalItemType.types.yaml @@ -0,0 +1,11 @@ +CustomerPortalItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' diff --git a/config/graphql/types/ibexa/CustomerPortalItemUpdateInput.types.yaml b/config/graphql/types/ibexa/CustomerPortalItemUpdateInput.types.yaml new file mode 100644 index 0000000..bc74bbc --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalItemUpdateInput.types.yaml @@ -0,0 +1,6 @@ +CustomerPortalItemUpdateInput: + type: input-object + config: + fields: + name: + type: String diff --git a/config/graphql/types/ibexa/CustomerPortalPageItem.types.yaml b/config/graphql/types/ibexa/CustomerPortalPageItem.types.yaml new file mode 100644 index 0000000..de96f68 --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalPageItem.types.yaml @@ -0,0 +1,20 @@ +CustomerPortalPageItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + description: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + page: + type: Page + resolve: '@=resolver("Page", [resolver("ItemFieldValue", [value, "page", args]), context])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/CustomerPortalPageItemConnection.types.yaml b/config/graphql/types/ibexa/CustomerPortalPageItemConnection.types.yaml new file mode 100644 index 0000000..a28b8a7 --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalPageItemConnection.types.yaml @@ -0,0 +1,9 @@ +CustomerPortalPageItemConnection: + type: relay-connection + config: + nodeType: CustomerPortalPageItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/CustomerPortalPageItemCreateInput.types.yaml b/config/graphql/types/ibexa/CustomerPortalPageItemCreateInput.types.yaml new file mode 100644 index 0000000..5568acd --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalPageItemCreateInput.types.yaml @@ -0,0 +1,10 @@ +CustomerPortalPageItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + description: + type: String! + page: + type: String! diff --git a/config/graphql/types/ibexa/CustomerPortalPageItemType.types.yaml b/config/graphql/types/ibexa/CustomerPortalPageItemType.types.yaml new file mode 100644 index 0000000..b162ab8 --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalPageItemType.types.yaml @@ -0,0 +1,17 @@ +CustomerPortalPageItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + description: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("description")' + page: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("page")' diff --git a/config/graphql/types/ibexa/CustomerPortalPageItemUpdateInput.types.yaml b/config/graphql/types/ibexa/CustomerPortalPageItemUpdateInput.types.yaml new file mode 100644 index 0000000..97cf82d --- /dev/null +++ b/config/graphql/types/ibexa/CustomerPortalPageItemUpdateInput.types.yaml @@ -0,0 +1,10 @@ +CustomerPortalPageItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + description: + type: String + page: + type: String diff --git a/config/graphql/types/ibexa/Domain.types.yaml b/config/graphql/types/ibexa/Domain.types.yaml new file mode 100644 index 0000000..ceb88d7 --- /dev/null +++ b/config/graphql/types/ibexa/Domain.types.yaml @@ -0,0 +1,24 @@ +Domain: + type: object + inherits: + - Platform + config: + fields: + content: + type: ItemGroupContent + resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Content"])' + users: + type: ItemGroupUsers + resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Users"])' + media: + type: ItemGroupMedia + resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Media"])' + customerPortal: + type: ItemGroupCustomerPortal + resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Customer Portal"])' + productCategoriesTaxonomy: + type: TaxonomyProduct_categories + resolve: '@=query("Taxonomy", "product_categories", args)' + tagsTaxonomy: + type: TaxonomyTags + resolve: '@=query("Taxonomy", "tags", args)' diff --git a/config/graphql/types/ibexa/DynamicTargetingPageBlock.types.yaml b/config/graphql/types/ibexa/DynamicTargetingPageBlock.types.yaml new file mode 100644 index 0000000..f2b2c58 --- /dev/null +++ b/config/graphql/types/ibexa/DynamicTargetingPageBlock.types.yaml @@ -0,0 +1,9 @@ +DynamicTargetingPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/DynamicTargetingPageBlockViews.types.yaml b/config/graphql/types/ibexa/DynamicTargetingPageBlockViews.types.yaml new file mode 100644 index 0000000..8113990 --- /dev/null +++ b/config/graphql/types/ibexa/DynamicTargetingPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +DynamicTargetingPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/page_builder/blocks/dynamic_targeting.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/EditorItem.types.yaml b/config/graphql/types/ibexa/EditorItem.types.yaml new file mode 100644 index 0000000..e682c7e --- /dev/null +++ b/config/graphql/types/ibexa/EditorItem.types.yaml @@ -0,0 +1,51 @@ +EditorItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + firstName: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "first_name", args])' + args: + language: { type: RepositoryLanguage } + lastName: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "last_name", args])' + args: + language: { type: RepositoryLanguage } + userAccount: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "user_account", args]).id' + image: + type: ImageFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "image", args])' + args: + language: { type: RepositoryLanguage } + signature: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "signature", args])' + args: + language: { type: RepositoryLanguage } + position: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "position", args])' + department: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "department", args])' + location: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "location", args])' + phone: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "phone", args])' + args: + language: { type: RepositoryLanguage } + linkedIn: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "linked_in", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/EditorItemConnection.types.yaml b/config/graphql/types/ibexa/EditorItemConnection.types.yaml new file mode 100644 index 0000000..f8e36e6 --- /dev/null +++ b/config/graphql/types/ibexa/EditorItemConnection.types.yaml @@ -0,0 +1,9 @@ +EditorItemConnection: + type: relay-connection + config: + nodeType: EditorItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/EditorItemCreateInput.types.yaml b/config/graphql/types/ibexa/EditorItemCreateInput.types.yaml new file mode 100644 index 0000000..3a4c1ad --- /dev/null +++ b/config/graphql/types/ibexa/EditorItemCreateInput.types.yaml @@ -0,0 +1,24 @@ +EditorItemCreateInput: + type: input-object + config: + fields: + firstName: + type: String! + lastName: + type: String! + userAccount: + type: String! + image: + type: ImageFieldInput + signature: + type: String + position: + type: String + department: + type: String + location: + type: String + phone: + type: String + linkedIn: + type: String diff --git a/config/graphql/types/ibexa/EditorItemType.types.yaml b/config/graphql/types/ibexa/EditorItemType.types.yaml new file mode 100644 index 0000000..9ac5b79 --- /dev/null +++ b/config/graphql/types/ibexa/EditorItemType.types.yaml @@ -0,0 +1,38 @@ +EditorItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + firstName: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("first_name")' + lastName: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("last_name")' + userAccount: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("user_account")' + image: + type: BinaryFieldDefinition + resolve: '@=value.getFieldDefinition("image")' + signature: + type: TextBlockFieldDefinition + resolve: '@=value.getFieldDefinition("signature")' + position: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("position")' + department: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("department")' + location: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("location")' + phone: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("phone")' + linkedIn: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("linked_in")' diff --git a/config/graphql/types/ibexa/EditorItemUpdateInput.types.yaml b/config/graphql/types/ibexa/EditorItemUpdateInput.types.yaml new file mode 100644 index 0000000..0468543 --- /dev/null +++ b/config/graphql/types/ibexa/EditorItemUpdateInput.types.yaml @@ -0,0 +1,24 @@ +EditorItemUpdateInput: + type: input-object + config: + fields: + firstName: + type: String + lastName: + type: String + userAccount: + type: String + image: + type: ImageFieldInput + signature: + type: String + position: + type: String + department: + type: String + location: + type: String + phone: + type: String + linkedIn: + type: String diff --git a/config/graphql/types/ibexa/EmbedPageBlock.types.yaml b/config/graphql/types/ibexa/EmbedPageBlock.types.yaml new file mode 100644 index 0000000..6222446 --- /dev/null +++ b/config/graphql/types/ibexa/EmbedPageBlock.types.yaml @@ -0,0 +1,9 @@ +EmbedPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + contentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("contentId").getValue()])' diff --git a/config/graphql/types/ibexa/EmbedPageBlockViews.types.yaml b/config/graphql/types/ibexa/EmbedPageBlockViews.types.yaml new file mode 100644 index 0000000..01952c8 --- /dev/null +++ b/config/graphql/types/ibexa/EmbedPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +EmbedPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/embed.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/FileItem.types.yaml b/config/graphql/types/ibexa/FileItem.types.yaml new file mode 100644 index 0000000..1b14a9d --- /dev/null +++ b/config/graphql/types/ibexa/FileItem.types.yaml @@ -0,0 +1,24 @@ +FileItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + description: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } + file: + type: BinaryFileFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "file", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/FileItemConnection.types.yaml b/config/graphql/types/ibexa/FileItemConnection.types.yaml new file mode 100644 index 0000000..d8fb7a0 --- /dev/null +++ b/config/graphql/types/ibexa/FileItemConnection.types.yaml @@ -0,0 +1,9 @@ +FileItemConnection: + type: relay-connection + config: + nodeType: FileItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/FileItemCreateInput.types.yaml b/config/graphql/types/ibexa/FileItemCreateInput.types.yaml new file mode 100644 index 0000000..0253f88 --- /dev/null +++ b/config/graphql/types/ibexa/FileItemCreateInput.types.yaml @@ -0,0 +1,10 @@ +FileItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + description: + type: RichTextFieldInput + file: + type: BinaryFieldInput! diff --git a/config/graphql/types/ibexa/FileItemType.types.yaml b/config/graphql/types/ibexa/FileItemType.types.yaml new file mode 100644 index 0000000..5639b73 --- /dev/null +++ b/config/graphql/types/ibexa/FileItemType.types.yaml @@ -0,0 +1,17 @@ +FileItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + description: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("description")' + file: + type: BinaryFieldDefinition + resolve: '@=value.getFieldDefinition("file")' diff --git a/config/graphql/types/ibexa/FileItemUpdateInput.types.yaml b/config/graphql/types/ibexa/FileItemUpdateInput.types.yaml new file mode 100644 index 0000000..4e93441 --- /dev/null +++ b/config/graphql/types/ibexa/FileItemUpdateInput.types.yaml @@ -0,0 +1,10 @@ +FileItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + description: + type: RichTextFieldInput + file: + type: BinaryFieldInput diff --git a/config/graphql/types/ibexa/FolderItem.types.yaml b/config/graphql/types/ibexa/FolderItem.types.yaml new file mode 100644 index 0000000..6ce4772 --- /dev/null +++ b/config/graphql/types/ibexa/FolderItem.types.yaml @@ -0,0 +1,29 @@ +FolderItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + shortName: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "short_name", args])' + args: + language: { type: RepositoryLanguage } + shortDescription: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "short_description", args])' + args: + language: { type: RepositoryLanguage } + description: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/FolderItemConnection.types.yaml b/config/graphql/types/ibexa/FolderItemConnection.types.yaml new file mode 100644 index 0000000..89dca60 --- /dev/null +++ b/config/graphql/types/ibexa/FolderItemConnection.types.yaml @@ -0,0 +1,9 @@ +FolderItemConnection: + type: relay-connection + config: + nodeType: FolderItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/FolderItemCreateInput.types.yaml b/config/graphql/types/ibexa/FolderItemCreateInput.types.yaml new file mode 100644 index 0000000..15e25c1 --- /dev/null +++ b/config/graphql/types/ibexa/FolderItemCreateInput.types.yaml @@ -0,0 +1,12 @@ +FolderItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + shortName: + type: String + shortDescription: + type: RichTextFieldInput + description: + type: RichTextFieldInput diff --git a/config/graphql/types/ibexa/FolderItemType.types.yaml b/config/graphql/types/ibexa/FolderItemType.types.yaml new file mode 100644 index 0000000..a8f4aa5 --- /dev/null +++ b/config/graphql/types/ibexa/FolderItemType.types.yaml @@ -0,0 +1,20 @@ +FolderItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + shortName: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("short_name")' + shortDescription: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("short_description")' + description: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("description")' diff --git a/config/graphql/types/ibexa/FolderItemUpdateInput.types.yaml b/config/graphql/types/ibexa/FolderItemUpdateInput.types.yaml new file mode 100644 index 0000000..7cea7f0 --- /dev/null +++ b/config/graphql/types/ibexa/FolderItemUpdateInput.types.yaml @@ -0,0 +1,12 @@ +FolderItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + shortName: + type: String + shortDescription: + type: RichTextFieldInput + description: + type: RichTextFieldInput diff --git a/config/graphql/types/ibexa/FormItem.types.yaml b/config/graphql/types/ibexa/FormItem.types.yaml new file mode 100644 index 0000000..39449b0 --- /dev/null +++ b/config/graphql/types/ibexa/FormItem.types.yaml @@ -0,0 +1,19 @@ +FormItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + title: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "title", args])' + args: + language: { type: RepositoryLanguage } + form: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "form", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/FormItemConnection.types.yaml b/config/graphql/types/ibexa/FormItemConnection.types.yaml new file mode 100644 index 0000000..2eb5c5f --- /dev/null +++ b/config/graphql/types/ibexa/FormItemConnection.types.yaml @@ -0,0 +1,9 @@ +FormItemConnection: + type: relay-connection + config: + nodeType: FormItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/FormItemCreateInput.types.yaml b/config/graphql/types/ibexa/FormItemCreateInput.types.yaml new file mode 100644 index 0000000..d46c7dd --- /dev/null +++ b/config/graphql/types/ibexa/FormItemCreateInput.types.yaml @@ -0,0 +1,8 @@ +FormItemCreateInput: + type: input-object + config: + fields: + title: + type: String! + form: + type: String diff --git a/config/graphql/types/ibexa/FormItemType.types.yaml b/config/graphql/types/ibexa/FormItemType.types.yaml new file mode 100644 index 0000000..812dc8d --- /dev/null +++ b/config/graphql/types/ibexa/FormItemType.types.yaml @@ -0,0 +1,14 @@ +FormItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + title: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("title")' + form: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("form")' diff --git a/config/graphql/types/ibexa/FormItemUpdateInput.types.yaml b/config/graphql/types/ibexa/FormItemUpdateInput.types.yaml new file mode 100644 index 0000000..ce34c6c --- /dev/null +++ b/config/graphql/types/ibexa/FormItemUpdateInput.types.yaml @@ -0,0 +1,8 @@ +FormItemUpdateInput: + type: input-object + config: + fields: + title: + type: String + form: + type: String diff --git a/config/graphql/types/ibexa/FormPageBlock.types.yaml b/config/graphql/types/ibexa/FormPageBlock.types.yaml new file mode 100644 index 0000000..934bd4d --- /dev/null +++ b/config/graphql/types/ibexa/FormPageBlock.types.yaml @@ -0,0 +1,4 @@ +FormPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/FormPageBlockViews.types.yaml b/config/graphql/types/ibexa/FormPageBlockViews.types.yaml new file mode 100644 index 0000000..98df597 --- /dev/null +++ b/config/graphql/types/ibexa/FormPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +FormPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFormBuilder/blocks/form.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/GalleryPageBlock.types.yaml b/config/graphql/types/ibexa/GalleryPageBlock.types.yaml new file mode 100644 index 0000000..31b3b0a --- /dev/null +++ b/config/graphql/types/ibexa/GalleryPageBlock.types.yaml @@ -0,0 +1,9 @@ +GalleryPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + contentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("contentId").getValue()])' diff --git a/config/graphql/types/ibexa/GalleryPageBlockViews.types.yaml b/config/graphql/types/ibexa/GalleryPageBlockViews.types.yaml new file mode 100644 index 0000000..5d76543 --- /dev/null +++ b/config/graphql/types/ibexa/GalleryPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +GalleryPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/gallery.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/IbexaActivityLogListPageBlock.types.yaml b/config/graphql/types/ibexa/IbexaActivityLogListPageBlock.types.yaml new file mode 100644 index 0000000..92ca2ea --- /dev/null +++ b/config/graphql/types/ibexa/IbexaActivityLogListPageBlock.types.yaml @@ -0,0 +1,9 @@ +IbexaActivityLogListPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/IbexaActivityLogListPageBlockViews.types.yaml b/config/graphql/types/ibexa/IbexaActivityLogListPageBlockViews.types.yaml new file mode 100644 index 0000000..0d75903 --- /dev/null +++ b/config/graphql/types/ibexa/IbexaActivityLogListPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +IbexaActivityLogListPageBlockViews: + type: enum + config: + values: + activity_log_list: + value: '@ibexadesign/dashboard/blocks/activity_log.html.twig' + description: 'Ibexa Data Grid' diff --git a/config/graphql/types/ibexa/IbexaConnectBlockPageBlock.types.yaml b/config/graphql/types/ibexa/IbexaConnectBlockPageBlock.types.yaml new file mode 100644 index 0000000..651c1b2 --- /dev/null +++ b/config/graphql/types/ibexa/IbexaConnectBlockPageBlock.types.yaml @@ -0,0 +1,9 @@ +IbexaConnectBlockPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + url: + type: String + resolve: '@=value.getAttribute("url").getValue()' diff --git a/config/graphql/types/ibexa/IbexaNewsPageBlock.types.yaml b/config/graphql/types/ibexa/IbexaNewsPageBlock.types.yaml new file mode 100644 index 0000000..74b152d --- /dev/null +++ b/config/graphql/types/ibexa/IbexaNewsPageBlock.types.yaml @@ -0,0 +1,9 @@ +IbexaNewsPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/IbexaNewsPageBlockViews.types.yaml b/config/graphql/types/ibexa/IbexaNewsPageBlockViews.types.yaml new file mode 100644 index 0000000..e7ae83f --- /dev/null +++ b/config/graphql/types/ibexa/IbexaNewsPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +IbexaNewsPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/dashboard/blocks/ibexa_news.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/ImageItem.types.yaml b/config/graphql/types/ibexa/ImageItem.types.yaml new file mode 100644 index 0000000..2eca35f --- /dev/null +++ b/config/graphql/types/ibexa/ImageItem.types.yaml @@ -0,0 +1,29 @@ +ImageItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + caption: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "caption", args])' + args: + language: { type: RepositoryLanguage } + image: + type: ImageFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "image", args])' + args: + language: { type: RepositoryLanguage } + tags: + type: '[String]' + resolve: '@=resolver("ItemFieldValue", [value, "tags", args]) !== null ? resolver("ItemFieldValue", [value, "tags", args]).values : null' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/ImageItemConnection.types.yaml b/config/graphql/types/ibexa/ImageItemConnection.types.yaml new file mode 100644 index 0000000..5897b16 --- /dev/null +++ b/config/graphql/types/ibexa/ImageItemConnection.types.yaml @@ -0,0 +1,9 @@ +ImageItemConnection: + type: relay-connection + config: + nodeType: ImageItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/ImageItemCreateInput.types.yaml b/config/graphql/types/ibexa/ImageItemCreateInput.types.yaml new file mode 100644 index 0000000..a3ea680 --- /dev/null +++ b/config/graphql/types/ibexa/ImageItemCreateInput.types.yaml @@ -0,0 +1,12 @@ +ImageItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + caption: + type: RichTextFieldInput + image: + type: ImageFieldInput + tags: + type: '[String]' diff --git a/config/graphql/types/ibexa/ImageItemType.types.yaml b/config/graphql/types/ibexa/ImageItemType.types.yaml new file mode 100644 index 0000000..f68a51e --- /dev/null +++ b/config/graphql/types/ibexa/ImageItemType.types.yaml @@ -0,0 +1,20 @@ +ImageItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + caption: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("caption")' + image: + type: BinaryFieldDefinition + resolve: '@=value.getFieldDefinition("image")' + tags: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("tags")' diff --git a/config/graphql/types/ibexa/ImageItemUpdateInput.types.yaml b/config/graphql/types/ibexa/ImageItemUpdateInput.types.yaml new file mode 100644 index 0000000..36e9048 --- /dev/null +++ b/config/graphql/types/ibexa/ImageItemUpdateInput.types.yaml @@ -0,0 +1,12 @@ +ImageItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + caption: + type: RichTextFieldInput + image: + type: ImageFieldInput + tags: + type: '[String]' diff --git a/config/graphql/types/ibexa/ImageVariationIdentifier.types.yaml b/config/graphql/types/ibexa/ImageVariationIdentifier.types.yaml new file mode 100644 index 0000000..c20f66a --- /dev/null +++ b/config/graphql/types/ibexa/ImageVariationIdentifier.types.yaml @@ -0,0 +1,12 @@ +ImageVariationIdentifier: + type: enum + config: + values: + original: { } + reference: { } + small: { } + tiny: { } + medium: { } + large: { } + gallery: { } + ezplatform_admin_ui_profile_picture_user_menu: { } diff --git a/config/graphql/types/ibexa/ItemGroupContent.types.yaml b/config/graphql/types/ibexa/ItemGroupContent.types.yaml new file mode 100644 index 0000000..46d709b --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupContent.types.yaml @@ -0,0 +1,115 @@ +ItemGroupContent: + type: object + inherits: + - DomainContentTypeGroup + config: + fields: + _types: + type: ItemGroupContentTypes + resolve: { } + articles: + type: ArticleItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["article", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + article: + type: ArticleItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "article"])' + args: + contentId: { type: Int, description: 'Content ID of the article' } + remoteId: { type: String, description: 'Content remote ID of the article' } + locationId: { type: Int, description: 'Location ID of the article' } + locationRemoteId: { type: String, description: 'Location remote ID of the article' } + urlAlias: { type: String, description: 'URL alias of the article' } + folders: + type: FolderItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["folder", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + folder: + type: FolderItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "folder"])' + args: + contentId: { type: Int, description: 'Content ID of the folder' } + remoteId: { type: String, description: 'Content remote ID of the folder' } + locationId: { type: Int, description: 'Location ID of the folder' } + locationRemoteId: { type: String, description: 'Location remote ID of the folder' } + urlAlias: { type: String, description: 'URL alias of the folder' } + forms: + type: FormItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["form", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + form: + type: FormItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "form"])' + args: + contentId: { type: Int, description: 'Content ID of the form' } + remoteId: { type: String, description: 'Content remote ID of the form' } + locationId: { type: Int, description: 'Location ID of the form' } + locationRemoteId: { type: String, description: 'Location remote ID of the form' } + urlAlias: { type: String, description: 'URL alias of the form' } + tags: + type: TagItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["tag", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + tag: + type: TagItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "tag"])' + args: + contentId: { type: Int, description: 'Content ID of the tag' } + remoteId: { type: String, description: 'Content remote ID of the tag' } + locationId: { type: Int, description: 'Location ID of the tag' } + locationRemoteId: { type: String, description: 'Location remote ID of the tag' } + urlAlias: { type: String, description: 'URL alias of the tag' } + landingPages: + type: LandingPageItemConnection + resolve: '@=resolver("ItemsOfTypeAsConnection", ["landing_page", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + landingPage: + type: LandingPageItem + resolve: '@=resolver("ItemOfType", [args, "landing_page"])' + args: + contentId: { type: Int, description: 'Content ID of the landing_page' } + remoteId: { type: String, description: 'Content remote ID of the landing_page' } + locationId: { type: Int, description: 'Location ID of the landing_page' } + locationRemoteId: { type: String, description: 'Location remote ID of the landing_page' } + urlAlias: { type: String, description: 'URL alias of the landing_page' } + productCategoryTags: + type: ProductCategoryTagItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["product_category_tag", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + productCategoryTag: + type: ProductCategoryTagItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "product_category_tag"])' + args: + contentId: { type: Int, description: 'Content ID of the product_category_tag' } + remoteId: { type: String, description: 'Content remote ID of the product_category_tag' } + locationId: { type: Int, description: 'Location ID of the product_category_tag' } + locationRemoteId: { type: String, description: 'Location remote ID of the product_category_tag' } + urlAlias: { type: String, description: 'URL alias of the product_category_tag' } diff --git a/config/graphql/types/ibexa/ItemGroupContentTypes.types.yaml b/config/graphql/types/ibexa/ItemGroupContentTypes.types.yaml new file mode 100644 index 0000000..bb28d81 --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupContentTypes.types.yaml @@ -0,0 +1,22 @@ +ItemGroupContentTypes: + type: object + config: + fields: + article: + type: ArticleItemType + resolve: '@=resolver("ContentType", [{"identifier": "article"}])' + folder: + type: FolderItemType + resolve: '@=resolver("ContentType", [{"identifier": "folder"}])' + form: + type: FormItemType + resolve: '@=resolver("ContentType", [{"identifier": "form"}])' + tag: + type: TagItemType + resolve: '@=resolver("ContentType", [{"identifier": "tag"}])' + landingPage: + type: LandingPageItemType + resolve: '@=resolver("ContentType", [{"identifier": "landing_page"}])' + productCategoryTag: + type: ProductCategoryTagItemType + resolve: '@=resolver("ContentType", [{"identifier": "product_category_tag"}])' diff --git a/config/graphql/types/ibexa/ItemGroupCustomerPortal.types.yaml b/config/graphql/types/ibexa/ItemGroupCustomerPortal.types.yaml new file mode 100644 index 0000000..de3745f --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupCustomerPortal.types.yaml @@ -0,0 +1,45 @@ +ItemGroupCustomerPortal: + type: object + inherits: + - DomainContentTypeGroup + config: + fields: + _types: + type: ItemGroupCustomerPortalTypes + resolve: { } + customerPortals: + type: CustomerPortalItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["customer_portal", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + customerPortal: + type: CustomerPortalItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "customer_portal"])' + args: + contentId: { type: Int, description: 'Content ID of the customer_portal' } + remoteId: { type: String, description: 'Content remote ID of the customer_portal' } + locationId: { type: Int, description: 'Location ID of the customer_portal' } + locationRemoteId: { type: String, description: 'Location remote ID of the customer_portal' } + urlAlias: { type: String, description: 'URL alias of the customer_portal' } + customerPortalPages: + type: CustomerPortalPageItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["customer_portal_page", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + customerPortalPage: + type: CustomerPortalPageItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "customer_portal_page"])' + args: + contentId: { type: Int, description: 'Content ID of the customer_portal_page' } + remoteId: { type: String, description: 'Content remote ID of the customer_portal_page' } + locationId: { type: Int, description: 'Location ID of the customer_portal_page' } + locationRemoteId: { type: String, description: 'Location remote ID of the customer_portal_page' } + urlAlias: { type: String, description: 'URL alias of the customer_portal_page' } diff --git a/config/graphql/types/ibexa/ItemGroupCustomerPortalTypes.types.yaml b/config/graphql/types/ibexa/ItemGroupCustomerPortalTypes.types.yaml new file mode 100644 index 0000000..3e43ecd --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupCustomerPortalTypes.types.yaml @@ -0,0 +1,10 @@ +ItemGroupCustomerPortalTypes: + type: object + config: + fields: + customerPortal: + type: CustomerPortalItemType + resolve: '@=resolver("ContentType", [{"identifier": "customer_portal"}])' + customerPortalPage: + type: CustomerPortalPageItemType + resolve: '@=resolver("ContentType", [{"identifier": "customer_portal_page"}])' diff --git a/config/graphql/types/ibexa/ItemGroupMedia.types.yaml b/config/graphql/types/ibexa/ItemGroupMedia.types.yaml new file mode 100644 index 0000000..57cf5b4 --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupMedia.types.yaml @@ -0,0 +1,45 @@ +ItemGroupMedia: + type: object + inherits: + - DomainContentTypeGroup + config: + fields: + _types: + type: ItemGroupMediaTypes + resolve: { } + files: + type: FileItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["file", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + file: + type: FileItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "file"])' + args: + contentId: { type: Int, description: 'Content ID of the file' } + remoteId: { type: String, description: 'Content remote ID of the file' } + locationId: { type: Int, description: 'Location ID of the file' } + locationRemoteId: { type: String, description: 'Location remote ID of the file' } + urlAlias: { type: String, description: 'URL alias of the file' } + images: + type: ImageItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["image", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + image: + type: ImageItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "image"])' + args: + contentId: { type: Int, description: 'Content ID of the image' } + remoteId: { type: String, description: 'Content remote ID of the image' } + locationId: { type: Int, description: 'Location ID of the image' } + locationRemoteId: { type: String, description: 'Location remote ID of the image' } + urlAlias: { type: String, description: 'URL alias of the image' } diff --git a/config/graphql/types/ibexa/ItemGroupMediaTypes.types.yaml b/config/graphql/types/ibexa/ItemGroupMediaTypes.types.yaml new file mode 100644 index 0000000..65fb172 --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupMediaTypes.types.yaml @@ -0,0 +1,10 @@ +ItemGroupMediaTypes: + type: object + config: + fields: + file: + type: FileItemType + resolve: '@=resolver("ContentType", [{"identifier": "file"}])' + image: + type: ImageItemType + resolve: '@=resolver("ContentType", [{"identifier": "image"}])' diff --git a/config/graphql/types/ibexa/ItemGroupUsers.types.yaml b/config/graphql/types/ibexa/ItemGroupUsers.types.yaml new file mode 100644 index 0000000..58bc78c --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupUsers.types.yaml @@ -0,0 +1,61 @@ +ItemGroupUsers: + type: object + inherits: + - DomainContentTypeGroup + config: + fields: + _types: + type: ItemGroupUsersTypes + resolve: { } + editors: + type: EditorItemConnection + resolve: '@=resolver("ItemsOfTypeAsConnection", ["editor", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + editor: + type: EditorItem + resolve: '@=resolver("ItemOfType", [args, "editor"])' + args: + contentId: { type: Int, description: 'Content ID of the editor' } + remoteId: { type: String, description: 'Content remote ID of the editor' } + locationId: { type: Int, description: 'Location ID of the editor' } + locationRemoteId: { type: String, description: 'Location remote ID of the editor' } + urlAlias: { type: String, description: 'URL alias of the editor' } + users: + type: UserItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["user", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + user: + type: UserItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "user"])' + args: + contentId: { type: Int, description: 'Content ID of the user' } + remoteId: { type: String, description: 'Content remote ID of the user' } + locationId: { type: Int, description: 'Location ID of the user' } + locationRemoteId: { type: String, description: 'Location remote ID of the user' } + urlAlias: { type: String, description: 'URL alias of the user' } + userGroups: + type: UserGroupItemConnection + description: 'No description available' + resolve: '@=resolver("ItemsOfTypeAsConnection", ["user_group", args])' + argsBuilder: 'Relay::Connection' + args: + query: { type: ContentSearchQuery, description: 'A Content query used to filter results' } + sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' } + userGroup: + type: UserGroupItem + description: 'No description available' + resolve: '@=resolver("ItemOfType", [args, "user_group"])' + args: + contentId: { type: Int, description: 'Content ID of the user_group' } + remoteId: { type: String, description: 'Content remote ID of the user_group' } + locationId: { type: Int, description: 'Location ID of the user_group' } + locationRemoteId: { type: String, description: 'Location remote ID of the user_group' } + urlAlias: { type: String, description: 'URL alias of the user_group' } diff --git a/config/graphql/types/ibexa/ItemGroupUsersTypes.types.yaml b/config/graphql/types/ibexa/ItemGroupUsersTypes.types.yaml new file mode 100644 index 0000000..0de1f56 --- /dev/null +++ b/config/graphql/types/ibexa/ItemGroupUsersTypes.types.yaml @@ -0,0 +1,13 @@ +ItemGroupUsersTypes: + type: object + config: + fields: + editor: + type: EditorItemType + resolve: '@=resolver("ContentType", [{"identifier": "editor"}])' + user: + type: UserItemType + resolve: '@=resolver("ContentType", [{"identifier": "user"}])' + userGroup: + type: UserGroupItemType + resolve: '@=resolver("ContentType", [{"identifier": "user_group"}])' diff --git a/config/graphql/types/ibexa/ItemMutation.types.yaml b/config/graphql/types/ibexa/ItemMutation.types.yaml new file mode 100644 index 0000000..99ab8cf --- /dev/null +++ b/config/graphql/types/ibexa/ItemMutation.types.yaml @@ -0,0 +1,214 @@ +ItemMutation: + type: object + inherits: + - PlatformMutation + config: + fields: + createArticle: + type: ArticleItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "article", args["parentLocationId"], args["language"])' + args: + input: { type: ArticleItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateArticle: + type: ArticleItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: ArticleItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createFolder: + type: FolderItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "folder", args["parentLocationId"], args["language"])' + args: + input: { type: FolderItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateFolder: + type: FolderItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: FolderItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createForm: + type: FormItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "form", args["parentLocationId"], args["language"])' + args: + input: { type: FormItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateForm: + type: FormItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: FormItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createTag: + type: TagItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "tag", args["parentLocationId"], args["language"])' + args: + input: { type: TagItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateTag: + type: TagItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: TagItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createLandingPage: + type: LandingPageItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "landing_page", args["parentLocationId"], args["language"])' + args: + input: { type: LandingPageItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateLandingPage: + type: LandingPageItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: LandingPageItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createProductCategoryTag: + type: ProductCategoryTagItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "product_category_tag", args["parentLocationId"], args["language"])' + args: + input: { type: ProductCategoryTagItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateProductCategoryTag: + type: ProductCategoryTagItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: ProductCategoryTagItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createEditor: + type: EditorItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "editor", args["parentLocationId"], args["language"])' + args: + input: { type: EditorItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateEditor: + type: EditorItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: EditorItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createUser: + type: UserItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "user", args["parentLocationId"], args["language"])' + args: + input: { type: UserItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateUser: + type: UserItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: UserItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createUserGroup: + type: UserGroupItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "user_group", args["parentLocationId"], args["language"])' + args: + input: { type: UserGroupItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateUserGroup: + type: UserGroupItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: UserGroupItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createFile: + type: FileItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "file", args["parentLocationId"], args["language"])' + args: + input: { type: FileItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateFile: + type: FileItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: FileItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createImage: + type: ImageItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "image", args["parentLocationId"], args["language"])' + args: + input: { type: ImageItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateImage: + type: ImageItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: ImageItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createCustomerPortal: + type: CustomerPortalItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "customer_portal", args["parentLocationId"], args["language"])' + args: + input: { type: CustomerPortalItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateCustomerPortal: + type: CustomerPortalItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: CustomerPortalItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } + createCustomerPortalPage: + type: CustomerPortalPageItem! + resolve: '@=mutation("CreateDomainContent", args["input"], "customer_portal_page", args["parentLocationId"], args["language"])' + args: + input: { type: CustomerPortalPageItemCreateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + parentLocationId: { type: Int! } + updateCustomerPortalPage: + type: CustomerPortalPageItem! + resolve: '@=mutation("UpdateDomainContent", args["input"], args, args["versionNo"], args["language"])' + args: + input: { type: CustomerPortalPageItemUpdateInput! } + language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' } + id: { type: ID, description: 'ID of the content item to update' } + contentId: { type: Int, description: 'Repository content ID of the content item to update' } + versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' } diff --git a/config/graphql/types/ibexa/LandingPageItem.types.yaml b/config/graphql/types/ibexa/LandingPageItem.types.yaml new file mode 100644 index 0000000..feafe00 --- /dev/null +++ b/config/graphql/types/ibexa/LandingPageItem.types.yaml @@ -0,0 +1,24 @@ +LandingPageItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + description: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } + page: + type: Page + resolve: '@=resolver("Page", [resolver("ItemFieldValue", [value, "page", args]), context])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/LandingPageItemConnection.types.yaml b/config/graphql/types/ibexa/LandingPageItemConnection.types.yaml new file mode 100644 index 0000000..7ccfd83 --- /dev/null +++ b/config/graphql/types/ibexa/LandingPageItemConnection.types.yaml @@ -0,0 +1,9 @@ +LandingPageItemConnection: + type: relay-connection + config: + nodeType: LandingPageItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/LandingPageItemCreateInput.types.yaml b/config/graphql/types/ibexa/LandingPageItemCreateInput.types.yaml new file mode 100644 index 0000000..887ddaf --- /dev/null +++ b/config/graphql/types/ibexa/LandingPageItemCreateInput.types.yaml @@ -0,0 +1,13 @@ +LandingPageItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + description: Title + description: + type: String! + description: 'Landing page description' + page: + type: String + description: 'Landing page' diff --git a/config/graphql/types/ibexa/LandingPageItemType.types.yaml b/config/graphql/types/ibexa/LandingPageItemType.types.yaml new file mode 100644 index 0000000..de5a690 --- /dev/null +++ b/config/graphql/types/ibexa/LandingPageItemType.types.yaml @@ -0,0 +1,20 @@ +LandingPageItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + description: Title + resolve: '@=value.getFieldDefinition("name")' + description: + type: TextLineFieldDefinition + description: 'Landing page description' + resolve: '@=value.getFieldDefinition("description")' + page: + type: MatrixFieldDefinition + description: 'Landing page' + resolve: '@=value.getFieldDefinition("page")' diff --git a/config/graphql/types/ibexa/LandingPageItemUpdateInput.types.yaml b/config/graphql/types/ibexa/LandingPageItemUpdateInput.types.yaml new file mode 100644 index 0000000..f43e774 --- /dev/null +++ b/config/graphql/types/ibexa/LandingPageItemUpdateInput.types.yaml @@ -0,0 +1,13 @@ +LandingPageItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + description: Title + description: + type: String + description: 'Landing page description' + page: + type: String + description: 'Landing page' diff --git a/config/graphql/types/ibexa/LastPurchasedPageBlock.types.yaml b/config/graphql/types/ibexa/LastPurchasedPageBlock.types.yaml new file mode 100644 index 0000000..8656692 --- /dev/null +++ b/config/graphql/types/ibexa/LastPurchasedPageBlock.types.yaml @@ -0,0 +1,9 @@ +LastPurchasedPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/LastPurchasedPageBlockViews.types.yaml b/config/graphql/types/ibexa/LastPurchasedPageBlockViews.types.yaml new file mode 100644 index 0000000..5ccc8d8 --- /dev/null +++ b/config/graphql/types/ibexa/LastPurchasedPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +LastPurchasedPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/page_builder/blocks/last_purchased.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/LastViewedPageBlock.types.yaml b/config/graphql/types/ibexa/LastViewedPageBlock.types.yaml new file mode 100644 index 0000000..35b1417 --- /dev/null +++ b/config/graphql/types/ibexa/LastViewedPageBlock.types.yaml @@ -0,0 +1,9 @@ +LastViewedPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/LastViewedPageBlockViews.types.yaml b/config/graphql/types/ibexa/LastViewedPageBlockViews.types.yaml new file mode 100644 index 0000000..b6f135f --- /dev/null +++ b/config/graphql/types/ibexa/LastViewedPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +LastViewedPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/page_builder/blocks/last_viewed.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/MyContentPageBlock.types.yaml b/config/graphql/types/ibexa/MyContentPageBlock.types.yaml new file mode 100644 index 0000000..f6d6a44 --- /dev/null +++ b/config/graphql/types/ibexa/MyContentPageBlock.types.yaml @@ -0,0 +1,4 @@ +MyContentPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/MyContentPageBlockViews.types.yaml b/config/graphql/types/ibexa/MyContentPageBlockViews.types.yaml new file mode 100644 index 0000000..ba31b91 --- /dev/null +++ b/config/graphql/types/ibexa/MyContentPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +MyContentPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/dashboard/blocks/my_content.html.twig' + description: 'Default view' diff --git a/config/graphql/types/ibexa/PageBlocksList.types.yaml b/config/graphql/types/ibexa/PageBlocksList.types.yaml new file mode 100644 index 0000000..788740b --- /dev/null +++ b/config/graphql/types/ibexa/PageBlocksList.types.yaml @@ -0,0 +1,68 @@ +PageBlocksList: + type: enum + config: + values: + qualifio: + value: QualifioPageBlock + ibexa_news: + value: IbexaNewsPageBlock + quick_actions: + value: QuickActionsPageBlock + my_content: + value: MyContentPageBlock + common_content: + value: CommonContentPageBlock + review_queue: + value: ReviewQueuePageBlock + ibexa_activity_log_list: + value: IbexaActivityLogListPageBlock + sales_rep: + value: SalesRepPageBlock + targeting: + value: TargetingPageBlock + form: + value: FormPageBlock + tag: + value: TagPageBlock + contentlist: + value: ContentlistPageBlock + banner: + value: BannerPageBlock + collection: + value: CollectionPageBlock + embed: + value: EmbedPageBlock + gallery: + value: GalleryPageBlock + video: + value: VideoPageBlock + rss: + value: RssPageBlock + schedule: + value: SchedulePageBlock + richtext: + value: RichtextPageBlock + catalog: + value: CatalogPageBlock + product_collection: + value: ProductCollectionPageBlock + products_with_lowest_stock: + value: ProductsWithLowestStockPageBlock + products_by_categories: + value: ProductsByCategoriesPageBlock + personalized: + value: PersonalizedPageBlock + dynamic_targeting: + value: DynamicTargetingPageBlock + last_viewed: + value: LastViewedPageBlock + last_purchased: + value: LastPurchasedPageBlock + bestsellers: + value: BestsellersPageBlock + recently_added: + value: RecentlyAddedPageBlock + top_clicked_items: + value: TopClickedItemsPageBlock + ibexa_connect_block: + value: IbexaConnectBlockPageBlock diff --git a/config/graphql/types/ibexa/PersonalizedPageBlock.types.yaml b/config/graphql/types/ibexa/PersonalizedPageBlock.types.yaml new file mode 100644 index 0000000..56504a5 --- /dev/null +++ b/config/graphql/types/ibexa/PersonalizedPageBlock.types.yaml @@ -0,0 +1,9 @@ +PersonalizedPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + number: + type: Int + resolve: '@=value.getAttribute("number").getValue()' diff --git a/config/graphql/types/ibexa/PersonalizedPageBlockViews.types.yaml b/config/graphql/types/ibexa/PersonalizedPageBlockViews.types.yaml new file mode 100644 index 0000000..9c8cdf1 --- /dev/null +++ b/config/graphql/types/ibexa/PersonalizedPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +PersonalizedPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaPersonalization/blocks/personalized.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/ProductCategoryTagItem.types.yaml b/config/graphql/types/ibexa/ProductCategoryTagItem.types.yaml new file mode 100644 index 0000000..5c90993 --- /dev/null +++ b/config/graphql/types/ibexa/ProductCategoryTagItem.types.yaml @@ -0,0 +1,30 @@ +ProductCategoryTagItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + identifier: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "identifier", args])' + parent: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "parent", args])' + description: + type: RichTextFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } + image: + type: ImageFieldValue + resolve: '@=resolver("DomainImageAssetFieldValue", [resolver("ItemFieldValue", [value, "image", args])])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/ProductCategoryTagItemConnection.types.yaml b/config/graphql/types/ibexa/ProductCategoryTagItemConnection.types.yaml new file mode 100644 index 0000000..7096445 --- /dev/null +++ b/config/graphql/types/ibexa/ProductCategoryTagItemConnection.types.yaml @@ -0,0 +1,9 @@ +ProductCategoryTagItemConnection: + type: relay-connection + config: + nodeType: ProductCategoryTagItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/ProductCategoryTagItemCreateInput.types.yaml b/config/graphql/types/ibexa/ProductCategoryTagItemCreateInput.types.yaml new file mode 100644 index 0000000..42062f8 --- /dev/null +++ b/config/graphql/types/ibexa/ProductCategoryTagItemCreateInput.types.yaml @@ -0,0 +1,14 @@ +ProductCategoryTagItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + identifier: + type: String! + parent: + type: String + description: + type: RichTextFieldInput + image: + type: String diff --git a/config/graphql/types/ibexa/ProductCategoryTagItemType.types.yaml b/config/graphql/types/ibexa/ProductCategoryTagItemType.types.yaml new file mode 100644 index 0000000..f197702 --- /dev/null +++ b/config/graphql/types/ibexa/ProductCategoryTagItemType.types.yaml @@ -0,0 +1,23 @@ +ProductCategoryTagItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + identifier: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("identifier")' + parent: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("parent")' + description: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("description")' + image: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("image")' diff --git a/config/graphql/types/ibexa/ProductCategoryTagItemUpdateInput.types.yaml b/config/graphql/types/ibexa/ProductCategoryTagItemUpdateInput.types.yaml new file mode 100644 index 0000000..5de312c --- /dev/null +++ b/config/graphql/types/ibexa/ProductCategoryTagItemUpdateInput.types.yaml @@ -0,0 +1,14 @@ +ProductCategoryTagItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + identifier: + type: String + parent: + type: String + description: + type: RichTextFieldInput + image: + type: String diff --git a/config/graphql/types/ibexa/ProductCollectionPageBlock.types.yaml b/config/graphql/types/ibexa/ProductCollectionPageBlock.types.yaml new file mode 100644 index 0000000..ed6654d --- /dev/null +++ b/config/graphql/types/ibexa/ProductCollectionPageBlock.types.yaml @@ -0,0 +1,4 @@ +ProductCollectionPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/ProductCollectionPageBlockViews.types.yaml b/config/graphql/types/ibexa/ProductCollectionPageBlockViews.types.yaml new file mode 100644 index 0000000..959a498 --- /dev/null +++ b/config/graphql/types/ibexa/ProductCollectionPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +ProductCollectionPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/product_catalog/page_builder/blocks/product_collection.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/ProductsByCategoriesPageBlock.types.yaml b/config/graphql/types/ibexa/ProductsByCategoriesPageBlock.types.yaml new file mode 100644 index 0000000..a6522c1 --- /dev/null +++ b/config/graphql/types/ibexa/ProductsByCategoriesPageBlock.types.yaml @@ -0,0 +1,9 @@ +ProductsByCategoriesPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/ProductsByCategoriesPageBlockViews.types.yaml b/config/graphql/types/ibexa/ProductsByCategoriesPageBlockViews.types.yaml new file mode 100644 index 0000000..41ee87d --- /dev/null +++ b/config/graphql/types/ibexa/ProductsByCategoriesPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +ProductsByCategoriesPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/product_catalog/dashboard/blocks/product_by_category.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/ProductsWithLowestStockPageBlock.types.yaml b/config/graphql/types/ibexa/ProductsWithLowestStockPageBlock.types.yaml new file mode 100644 index 0000000..58ee98c --- /dev/null +++ b/config/graphql/types/ibexa/ProductsWithLowestStockPageBlock.types.yaml @@ -0,0 +1,12 @@ +ProductsWithLowestStockPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' + stock: + type: Int + resolve: '@=value.getAttribute("stock").getValue()' diff --git a/config/graphql/types/ibexa/ProductsWithLowestStockPageBlockViews.types.yaml b/config/graphql/types/ibexa/ProductsWithLowestStockPageBlockViews.types.yaml new file mode 100644 index 0000000..b964780 --- /dev/null +++ b/config/graphql/types/ibexa/ProductsWithLowestStockPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +ProductsWithLowestStockPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/product_catalog/dashboard/blocks/products_with_lowest_stock.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/QualifioPageBlock.types.yaml b/config/graphql/types/ibexa/QualifioPageBlock.types.yaml new file mode 100644 index 0000000..780f91e --- /dev/null +++ b/config/graphql/types/ibexa/QualifioPageBlock.types.yaml @@ -0,0 +1,4 @@ +QualifioPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/QualifioPageBlockViews.types.yaml b/config/graphql/types/ibexa/QualifioPageBlockViews.types.yaml new file mode 100644 index 0000000..acc6a4f --- /dev/null +++ b/config/graphql/types/ibexa/QualifioPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +QualifioPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/blocks/qualifio/default.html.twig' + description: Default diff --git a/config/graphql/types/ibexa/QuickActionsPageBlock.types.yaml b/config/graphql/types/ibexa/QuickActionsPageBlock.types.yaml new file mode 100644 index 0000000..54364b4 --- /dev/null +++ b/config/graphql/types/ibexa/QuickActionsPageBlock.types.yaml @@ -0,0 +1,9 @@ +QuickActionsPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + actions: + type: String + resolve: '@=value.getAttribute("actions").getValue()' diff --git a/config/graphql/types/ibexa/QuickActionsPageBlockViews.types.yaml b/config/graphql/types/ibexa/QuickActionsPageBlockViews.types.yaml new file mode 100644 index 0000000..0929ca6 --- /dev/null +++ b/config/graphql/types/ibexa/QuickActionsPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +QuickActionsPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/dashboard/blocks/quick_actions.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/RecentlyAddedPageBlock.types.yaml b/config/graphql/types/ibexa/RecentlyAddedPageBlock.types.yaml new file mode 100644 index 0000000..c2992fb --- /dev/null +++ b/config/graphql/types/ibexa/RecentlyAddedPageBlock.types.yaml @@ -0,0 +1,9 @@ +RecentlyAddedPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' diff --git a/config/graphql/types/ibexa/RecentlyAddedPageBlockViews.types.yaml b/config/graphql/types/ibexa/RecentlyAddedPageBlockViews.types.yaml new file mode 100644 index 0000000..8144ed9 --- /dev/null +++ b/config/graphql/types/ibexa/RecentlyAddedPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +RecentlyAddedPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/page_builder/blocks/recently_added.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/RepositoryLanguage.types.yaml b/config/graphql/types/ibexa/RepositoryLanguage.types.yaml new file mode 100644 index 0000000..9d92437 --- /dev/null +++ b/config/graphql/types/ibexa/RepositoryLanguage.types.yaml @@ -0,0 +1,7 @@ +RepositoryLanguage: + type: enum + config: + values: + eng-GB: + value: eng-GB + description: 'English (United Kingdom)' diff --git a/config/graphql/types/ibexa/ReviewQueuePageBlock.types.yaml b/config/graphql/types/ibexa/ReviewQueuePageBlock.types.yaml new file mode 100644 index 0000000..719f23a --- /dev/null +++ b/config/graphql/types/ibexa/ReviewQueuePageBlock.types.yaml @@ -0,0 +1,4 @@ +ReviewQueuePageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/ReviewQueuePageBlockViews.types.yaml b/config/graphql/types/ibexa/ReviewQueuePageBlockViews.types.yaml new file mode 100644 index 0000000..f2101df --- /dev/null +++ b/config/graphql/types/ibexa/ReviewQueuePageBlockViews.types.yaml @@ -0,0 +1,7 @@ +ReviewQueuePageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/dashboard/blocks/review_queue.html.twig' + description: 'Default view' diff --git a/config/graphql/types/ibexa/RichtextPageBlock.types.yaml b/config/graphql/types/ibexa/RichtextPageBlock.types.yaml new file mode 100644 index 0000000..880cc57 --- /dev/null +++ b/config/graphql/types/ibexa/RichtextPageBlock.types.yaml @@ -0,0 +1,9 @@ +RichtextPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + content: + type: RichTextBlockAttributeValue + resolve: '@=value.getAttribute("content").getValue()' diff --git a/config/graphql/types/ibexa/RichtextPageBlockViews.types.yaml b/config/graphql/types/ibexa/RichtextPageBlockViews.types.yaml new file mode 100644 index 0000000..3ab019c --- /dev/null +++ b/config/graphql/types/ibexa/RichtextPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +RichtextPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/richtext.html.twig' + description: 'Default view' diff --git a/config/graphql/types/ibexa/RssPageBlock.types.yaml b/config/graphql/types/ibexa/RssPageBlock.types.yaml new file mode 100644 index 0000000..a648854 --- /dev/null +++ b/config/graphql/types/ibexa/RssPageBlock.types.yaml @@ -0,0 +1,15 @@ +RssPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + url: + type: String + resolve: '@=value.getAttribute("url").getValue()' + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' + offset: + type: Int + resolve: '@=value.getAttribute("offset").getValue()' diff --git a/config/graphql/types/ibexa/RssPageBlockViews.types.yaml b/config/graphql/types/ibexa/RssPageBlockViews.types.yaml new file mode 100644 index 0000000..7f3d40a --- /dev/null +++ b/config/graphql/types/ibexa/RssPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +RssPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/rss.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/SalesRepPageBlock.types.yaml b/config/graphql/types/ibexa/SalesRepPageBlock.types.yaml new file mode 100644 index 0000000..c7b4dc5 --- /dev/null +++ b/config/graphql/types/ibexa/SalesRepPageBlock.types.yaml @@ -0,0 +1,4 @@ +SalesRepPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/SalesRepPageBlockViews.types.yaml b/config/graphql/types/ibexa/SalesRepPageBlockViews.types.yaml new file mode 100644 index 0000000..80c4aac --- /dev/null +++ b/config/graphql/types/ibexa/SalesRepPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +SalesRepPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/customer_portal/page_builder/blocks/sales_rep.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/SchedulePageBlock.types.yaml b/config/graphql/types/ibexa/SchedulePageBlock.types.yaml new file mode 100644 index 0000000..4ebed5b --- /dev/null +++ b/config/graphql/types/ibexa/SchedulePageBlock.types.yaml @@ -0,0 +1,24 @@ +SchedulePageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + limit: + type: Int + resolve: '@=value.getAttribute("limit").getValue()' + events: + type: '[SchedulerBlockEvent]' + resolve: '@=value.getAttribute("events").getValue()' + snapshots: + type: '[SchedulerBlockSnapshot]' + resolve: '@=value.getAttribute("snapshots").getValue()' + initialItems: + type: '[SchedulerBlockItem]' + resolve: '@=value.getAttribute("initial_items").getValue()' + slots: + type: '[SchedulerBlockSlot]' + resolve: '@=value.getAttribute("slots").getValue()' + loadedSnapshot: + type: SchedulerBlockSnapshot + resolve: '@=value.getAttribute("loaded_snapshot").getValue()' diff --git a/config/graphql/types/ibexa/SchedulePageBlockViews.types.yaml b/config/graphql/types/ibexa/SchedulePageBlockViews.types.yaml new file mode 100644 index 0000000..98d599d --- /dev/null +++ b/config/graphql/types/ibexa/SchedulePageBlockViews.types.yaml @@ -0,0 +1,7 @@ +SchedulePageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/schedule.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/TagItem.types.yaml b/config/graphql/types/ibexa/TagItem.types.yaml new file mode 100644 index 0000000..4562bbc --- /dev/null +++ b/config/graphql/types/ibexa/TagItem.types.yaml @@ -0,0 +1,30 @@ +TagItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + identifier: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "identifier", args])' + parent: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "parent", args])' + description: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } + image: + type: ImageFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "image", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/TagItemConnection.types.yaml b/config/graphql/types/ibexa/TagItemConnection.types.yaml new file mode 100644 index 0000000..645453a --- /dev/null +++ b/config/graphql/types/ibexa/TagItemConnection.types.yaml @@ -0,0 +1,9 @@ +TagItemConnection: + type: relay-connection + config: + nodeType: TagItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/TagItemCreateInput.types.yaml b/config/graphql/types/ibexa/TagItemCreateInput.types.yaml new file mode 100644 index 0000000..9a7e82e --- /dev/null +++ b/config/graphql/types/ibexa/TagItemCreateInput.types.yaml @@ -0,0 +1,14 @@ +TagItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + identifier: + type: String! + parent: + type: String + description: + type: String + image: + type: ImageFieldInput diff --git a/config/graphql/types/ibexa/TagItemType.types.yaml b/config/graphql/types/ibexa/TagItemType.types.yaml new file mode 100644 index 0000000..195dbd1 --- /dev/null +++ b/config/graphql/types/ibexa/TagItemType.types.yaml @@ -0,0 +1,23 @@ +TagItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + identifier: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("identifier")' + parent: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("parent")' + description: + type: TextBlockFieldDefinition + resolve: '@=value.getFieldDefinition("description")' + image: + type: BinaryFieldDefinition + resolve: '@=value.getFieldDefinition("image")' diff --git a/config/graphql/types/ibexa/TagItemUpdateInput.types.yaml b/config/graphql/types/ibexa/TagItemUpdateInput.types.yaml new file mode 100644 index 0000000..617970d --- /dev/null +++ b/config/graphql/types/ibexa/TagItemUpdateInput.types.yaml @@ -0,0 +1,14 @@ +TagItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + identifier: + type: String + parent: + type: String + description: + type: String + image: + type: ImageFieldInput diff --git a/config/graphql/types/ibexa/TagPageBlock.types.yaml b/config/graphql/types/ibexa/TagPageBlock.types.yaml new file mode 100644 index 0000000..a96bc13 --- /dev/null +++ b/config/graphql/types/ibexa/TagPageBlock.types.yaml @@ -0,0 +1,9 @@ +TagPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + content: + type: String + resolve: '@=value.getAttribute("content").getValue()' diff --git a/config/graphql/types/ibexa/TagPageBlockViews.types.yaml b/config/graphql/types/ibexa/TagPageBlockViews.types.yaml new file mode 100644 index 0000000..2ce090e --- /dev/null +++ b/config/graphql/types/ibexa/TagPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +TagPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/tag.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/TargetingPageBlock.types.yaml b/config/graphql/types/ibexa/TargetingPageBlock.types.yaml new file mode 100644 index 0000000..e2b6336 --- /dev/null +++ b/config/graphql/types/ibexa/TargetingPageBlock.types.yaml @@ -0,0 +1,9 @@ +TargetingPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + defaultContentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("default_content_id").getValue()])' diff --git a/config/graphql/types/ibexa/TargetingPageBlockViews.types.yaml b/config/graphql/types/ibexa/TargetingPageBlockViews.types.yaml new file mode 100644 index 0000000..68cc77c --- /dev/null +++ b/config/graphql/types/ibexa/TargetingPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +TargetingPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/segmentation/page_builder/blocks/targeting.html.twig' + description: 'Default block layout' diff --git a/config/graphql/types/ibexa/TaxonomyProduct_categories.types.yaml b/config/graphql/types/ibexa/TaxonomyProduct_categories.types.yaml new file mode 100644 index 0000000..c5cd324 --- /dev/null +++ b/config/graphql/types/ibexa/TaxonomyProduct_categories.types.yaml @@ -0,0 +1,19 @@ +TaxonomyProduct_categories: + type: object + inherits: + - BaseTaxonomy + config: + fields: + single: + type: TaxonomyEntry + description: 'Fetch single Taxonomy Entry using ID, identifier or contentId' + resolve: '@=query("TaxonomyEntry", args, "product_categories")' + args: + id: { type: Int } + identifier: { type: String } + contentId: { type: Int } + all: + type: TaxonomyEntryConnection + description: 'Fetch multiple Taxonomy Entries' + resolve: '@=query("TaxonomyEntryAll", args, "product_categories")' + argsBuilder: 'Relay::Connection' diff --git a/config/graphql/types/ibexa/TaxonomyTags.types.yaml b/config/graphql/types/ibexa/TaxonomyTags.types.yaml new file mode 100644 index 0000000..119ce46 --- /dev/null +++ b/config/graphql/types/ibexa/TaxonomyTags.types.yaml @@ -0,0 +1,19 @@ +TaxonomyTags: + type: object + inherits: + - BaseTaxonomy + config: + fields: + single: + type: TaxonomyEntry + description: 'Fetch single Taxonomy Entry using ID, identifier or contentId' + resolve: '@=query("TaxonomyEntry", args, "tags")' + args: + id: { type: Int } + identifier: { type: String } + contentId: { type: Int } + all: + type: TaxonomyEntryConnection + description: 'Fetch multiple Taxonomy Entries' + resolve: '@=query("TaxonomyEntryAll", args, "tags")' + argsBuilder: 'Relay::Connection' diff --git a/config/graphql/types/ibexa/TopClickedItemsPageBlock.types.yaml b/config/graphql/types/ibexa/TopClickedItemsPageBlock.types.yaml new file mode 100644 index 0000000..557d9b6 --- /dev/null +++ b/config/graphql/types/ibexa/TopClickedItemsPageBlock.types.yaml @@ -0,0 +1,4 @@ +TopClickedItemsPageBlock: + type: object + inherits: + - BasePageBlock diff --git a/config/graphql/types/ibexa/TopClickedItemsPageBlockViews.types.yaml b/config/graphql/types/ibexa/TopClickedItemsPageBlockViews.types.yaml new file mode 100644 index 0000000..5c357f8 --- /dev/null +++ b/config/graphql/types/ibexa/TopClickedItemsPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +TopClickedItemsPageBlockViews: + type: enum + config: + values: + default: + value: '@ibexadesign/personalization/dashboard/blocks/top_clicked_items.html.twig' + description: 'Default view' diff --git a/config/graphql/types/ibexa/UserGroupItem.types.yaml b/config/graphql/types/ibexa/UserGroupItem.types.yaml new file mode 100644 index 0000000..7b84fd4 --- /dev/null +++ b/config/graphql/types/ibexa/UserGroupItem.types.yaml @@ -0,0 +1,19 @@ +UserGroupItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + name: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "name", args])' + args: + language: { type: RepositoryLanguage } + description: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "description", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/UserGroupItemConnection.types.yaml b/config/graphql/types/ibexa/UserGroupItemConnection.types.yaml new file mode 100644 index 0000000..09372d7 --- /dev/null +++ b/config/graphql/types/ibexa/UserGroupItemConnection.types.yaml @@ -0,0 +1,9 @@ +UserGroupItemConnection: + type: relay-connection + config: + nodeType: UserGroupItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/UserGroupItemCreateInput.types.yaml b/config/graphql/types/ibexa/UserGroupItemCreateInput.types.yaml new file mode 100644 index 0000000..dacb8f8 --- /dev/null +++ b/config/graphql/types/ibexa/UserGroupItemCreateInput.types.yaml @@ -0,0 +1,8 @@ +UserGroupItemCreateInput: + type: input-object + config: + fields: + name: + type: String! + description: + type: String diff --git a/config/graphql/types/ibexa/UserGroupItemType.types.yaml b/config/graphql/types/ibexa/UserGroupItemType.types.yaml new file mode 100644 index 0000000..c117559 --- /dev/null +++ b/config/graphql/types/ibexa/UserGroupItemType.types.yaml @@ -0,0 +1,14 @@ +UserGroupItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + name: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("name")' + description: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("description")' diff --git a/config/graphql/types/ibexa/UserGroupItemUpdateInput.types.yaml b/config/graphql/types/ibexa/UserGroupItemUpdateInput.types.yaml new file mode 100644 index 0000000..9be5fbc --- /dev/null +++ b/config/graphql/types/ibexa/UserGroupItemUpdateInput.types.yaml @@ -0,0 +1,8 @@ +UserGroupItemUpdateInput: + type: input-object + config: + fields: + name: + type: String + description: + type: String diff --git a/config/graphql/types/ibexa/UserItem.types.yaml b/config/graphql/types/ibexa/UserItem.types.yaml new file mode 100644 index 0000000..2700e38 --- /dev/null +++ b/config/graphql/types/ibexa/UserItem.types.yaml @@ -0,0 +1,32 @@ +UserItem: + type: object + inherits: + - AbstractItem + config: + interfaces: + - Item + - Node + fields: + firstName: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "first_name", args])' + args: + language: { type: RepositoryLanguage } + lastName: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "last_name", args])' + args: + language: { type: RepositoryLanguage } + userAccount: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "user_account", args]).id' + signature: + type: String + resolve: '@=resolver("ItemFieldValue", [value, "signature", args])' + args: + language: { type: RepositoryLanguage } + image: + type: ImageFieldValue + resolve: '@=resolver("ItemFieldValue", [value, "image", args])' + args: + language: { type: RepositoryLanguage } diff --git a/config/graphql/types/ibexa/UserItemConnection.types.yaml b/config/graphql/types/ibexa/UserItemConnection.types.yaml new file mode 100644 index 0000000..1031782 --- /dev/null +++ b/config/graphql/types/ibexa/UserItemConnection.types.yaml @@ -0,0 +1,9 @@ +UserItemConnection: + type: relay-connection + config: + nodeType: UserItem + connectionFields: + sliceSize: + type: Int! + orderBy: + type: String diff --git a/config/graphql/types/ibexa/UserItemCreateInput.types.yaml b/config/graphql/types/ibexa/UserItemCreateInput.types.yaml new file mode 100644 index 0000000..217b174 --- /dev/null +++ b/config/graphql/types/ibexa/UserItemCreateInput.types.yaml @@ -0,0 +1,14 @@ +UserItemCreateInput: + type: input-object + config: + fields: + firstName: + type: String! + lastName: + type: String! + userAccount: + type: String! + signature: + type: String + image: + type: ImageFieldInput diff --git a/config/graphql/types/ibexa/UserItemType.types.yaml b/config/graphql/types/ibexa/UserItemType.types.yaml new file mode 100644 index 0000000..61585bf --- /dev/null +++ b/config/graphql/types/ibexa/UserItemType.types.yaml @@ -0,0 +1,23 @@ +UserItemType: + type: object + inherits: + - BaseItemType + config: + interfaces: + - ItemType + fields: + firstName: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("first_name")' + lastName: + type: TextLineFieldDefinition + resolve: '@=value.getFieldDefinition("last_name")' + userAccount: + type: MatrixFieldDefinition + resolve: '@=value.getFieldDefinition("user_account")' + signature: + type: TextBlockFieldDefinition + resolve: '@=value.getFieldDefinition("signature")' + image: + type: BinaryFieldDefinition + resolve: '@=value.getFieldDefinition("image")' diff --git a/config/graphql/types/ibexa/UserItemUpdateInput.types.yaml b/config/graphql/types/ibexa/UserItemUpdateInput.types.yaml new file mode 100644 index 0000000..055427b --- /dev/null +++ b/config/graphql/types/ibexa/UserItemUpdateInput.types.yaml @@ -0,0 +1,14 @@ +UserItemUpdateInput: + type: input-object + config: + fields: + firstName: + type: String + lastName: + type: String + userAccount: + type: String + signature: + type: String + image: + type: ImageFieldInput diff --git a/config/graphql/types/ibexa/VideoPageBlock.types.yaml b/config/graphql/types/ibexa/VideoPageBlock.types.yaml new file mode 100644 index 0000000..2b875c3 --- /dev/null +++ b/config/graphql/types/ibexa/VideoPageBlock.types.yaml @@ -0,0 +1,9 @@ +VideoPageBlock: + type: object + inherits: + - BasePageBlock + config: + fields: + contentId: + type: Item + resolve: '@=resolver("EmbedAttributeValue", [value.getAttribute("contentId").getValue()])' diff --git a/config/graphql/types/ibexa/VideoPageBlockViews.types.yaml b/config/graphql/types/ibexa/VideoPageBlockViews.types.yaml new file mode 100644 index 0000000..788c3e1 --- /dev/null +++ b/config/graphql/types/ibexa/VideoPageBlockViews.types.yaml @@ -0,0 +1,7 @@ +VideoPageBlockViews: + type: enum + config: + values: + default: + value: '@IbexaFieldTypePage/blocks/video.html.twig' + description: 'Default block layout' diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml new file mode 100644 index 0000000..ad874af --- /dev/null +++ b/config/packages/debug.yaml @@ -0,0 +1,5 @@ +when@dev: + debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/ibexa.yaml b/config/packages/ibexa.yaml index 1b2fe98..ac16d29 100644 --- a/config/packages/ibexa.yaml +++ b/config/packages/ibexa.yaml @@ -117,6 +117,12 @@ ibexa: user_content_type_identifier: ['user'] site: languages: [eng-GB] + content_view: + full: + blog_post: + template: 'blog_post.html.twig' + match: + Identifier\ContentType: [blog_post] corporate_group: languages: [eng-GB] diff --git a/config/packages/web_profiler.yaml b/config/packages/web_profiler.yaml new file mode 100644 index 0000000..17893da --- /dev/null +++ b/config/packages/web_profiler.yaml @@ -0,0 +1,15 @@ +when@dev: + web_profiler: + toolbar: true + intercept_redirects: false + + framework: + profiler: { only_exceptions: false } + +when@test: + web_profiler: + toolbar: false + intercept_redirects: false + + framework: + profiler: { collect: false } diff --git a/config/routes/ibexa_connector_ai.yaml b/config/routes/ibexa_connector_ai.yaml new file mode 100644 index 0000000..16a9f26 --- /dev/null +++ b/config/routes/ibexa_connector_ai.yaml @@ -0,0 +1,8 @@ +ibexa.connector.ai.rest: + resource: '@IbexaConnectorAiBundle/Resources/config/routing_rest.yaml' + prefix: '%ibexa.rest.path_prefix%' + +ibexa.connector.ai.admin: + resource: '@IbexaConnectorAiBundle/Resources/config/routing_admin.yaml' + defaults: + siteaccess_group_whitelist: '%admin_group_name%' diff --git a/config/routes/web_profiler.yaml b/config/routes/web_profiler.yaml new file mode 100644 index 0000000..8d85319 --- /dev/null +++ b/config/routes/web_profiler.yaml @@ -0,0 +1,8 @@ +when@dev: + web_profiler_wdt: + resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml' + prefix: /_wdt + + web_profiler_profiler: + resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml' + prefix: /_profiler diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f..ce24fdd 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -22,3 +22,98 @@ services: # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones + + # Subscribers + App\EventSubscriber\BlogPostAIEventSubscriber: + arguments: + $richTextConverter: '@ibexa.richtext.converter.output.xhtml5' + + # GenerateText + App\AI\Action\GenerateText\ActionType: + arguments: + $actionHandlers: !tagged_iterator + tag: app.connector_ai.action.handler.text_to_text + default_index_method: getIdentifier + index_by: key + tags: + - { name: ibexa.ai.action.type, identifier: !php/const \App\AI\Action\GenerateText\ActionType::IDENTIFIER } + + App\AI\Handler\OllamaTextToTextActionHandler: + tags: + - { name: ibexa.ai.action.handler, priority: 0 } + - { name: app.connector_ai.action.handler.text_to_text, priority: 0 } + + app.connector_ai.action_configuration.handler.ollama_text_to_text.form_mapper.options: + class: Ibexa\Bundle\ConnectorAi\Form\FormMapper\ActionConfiguration\ActionHandlerOptionsFormMapper + arguments: + $formType: 'App\Form\Type\TextToTextOptionsType' + tags: + - name: ibexa.connector_ai.action_configuration.form_mapper.options + type: !php/const \App\AI\Handler\OllamaTextToTextActionHandler::IDENTIFIER + + # Embeddings + App\AI\Action\TextToEmbeddings\ActionType: + arguments: + $actionHandlers: !tagged_iterator + tag: app.connector_ai.action.handler.text_to_embeddings + default_index_method: getIdentifier + index_by: key + tags: + - { name: ibexa.ai.action.type, identifier: !php/const \App\AI\Action\TextToEmbeddings\ActionType::IDENTIFIER } + + App\AI\Handler\OllamaTextToEmbeddingsActionHandler: + tags: + - { name: ibexa.ai.action.handler, priority: 0 } + - { name: app.connector_ai.action.handler.text_to_embeddings, priority: 0 } + + # Vector Store + App\AI\Embeddings\PsVectorStore: + arguments: + $connectionString: '%env(PS_VECTOR_STORE_CONNECTION_STRING)%' + + + # Tools + App\AI\Action\TextWithFunction\ActionType: + arguments: + $actionHandlers: !tagged_iterator + tag: app.connector_ai.action.handler.text_with_tools + default_index_method: getIdentifier + index_by: key + tags: + - { name: ibexa.ai.action.type, identifier: !php/const \App\AI\Action\TextWithFunction\ActionType::IDENTIFIER } + + App\AI\Handler\OllamaTextToToolActionHandler: + tags: + - { name: ibexa.ai.action.handler, priority: 0 } + - { name: app.connector_ai.action.handler.text_with_tools, priority: 0 } + + app.connector_ai.action_configuration.handler.text_with_tools.form_mapper.options: + class: Ibexa\Bundle\ConnectorAi\Form\FormMapper\ActionConfiguration\ActionHandlerOptionsFormMapper + arguments: + $formType: 'App\Form\Type\FunctionAwareTextToTextOptionsType' + tags: + - name: ibexa.connector_ai.action_configuration.form_mapper.options + type: !php/const \App\AI\Handler\OllamaTextToToolActionHandler::IDENTIFIER + + # Question with Context + App\AI\Action\AnswerQuestionWithContext\ActionType: + arguments: + $actionHandlers: !tagged_iterator + tag: app.connector_ai.action.handler.answer_question_with_context + default_index_method: getIdentifier + index_by: key + tags: + - { name: ibexa.ai.action.type, identifier: !php/const \App\AI\Action\AnswerQuestionWithContext\ActionType::IDENTIFIER } + + App\AI\Handler\OllamaTextWithContextToTextActionHandler: + tags: + - { name: ibexa.ai.action.handler, priority: 0 } + - { name: app.connector_ai.action.handler.answer_question_with_context, priority: 0 } + + app.connector_ai.action_configuration.handler.answer_question_with_context.form_mapper.options: + class: Ibexa\Bundle\ConnectorAi\Form\FormMapper\ActionConfiguration\ActionHandlerOptionsFormMapper + arguments: + $formType: 'App\Form\Type\AnswerQuestionWithContextOptionsType' + tags: + - name: ibexa.connector_ai.action_configuration.form_mapper.options + type: !php/const \App\AI\Handler\OllamaTextWithContextToTextActionHandler::IDENTIFIER \ No newline at end of file diff --git a/public/assets/ibexa/build/entrypoints.json b/public/assets/ibexa/build/entrypoints.json index b169c59..fecf5b9 100644 --- a/public/assets/ibexa/build/entrypoints.json +++ b/public/assets/ibexa/build/entrypoints.json @@ -998,6 +998,27 @@ "css": [ "/assets/ibexa/build/ibexa-qualifio-block-css.css" ] + }, + "ibexa-connector-ai-action-configuration-list-js": { + "js": [ + "/assets/ibexa/build/runtime.js", + "/assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js" + ] + }, + "ibexa-connector-ai-action-configuration-view-js": { + "js": [ + "/assets/ibexa/build/runtime.js", + "/assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js" + ] + }, + "ibexa-connector-ai-action-view-css": { + "js": [ + "/assets/ibexa/build/runtime.js", + "/assets/ibexa/build/ibexa-connector-ai-action-view-css.js" + ], + "css": [ + "/assets/ibexa/build/ibexa-connector-ai-action-view-css.css" + ] } } } \ No newline at end of file diff --git a/public/assets/ibexa/build/ibexa-admin-ui-content-edit-parts-js.js b/public/assets/ibexa/build/ibexa-admin-ui-content-edit-parts-js.js index 30b1ddb..f08f8e0 100644 --- a/public/assets/ibexa/build/ibexa-admin-ui-content-edit-parts-js.js +++ b/public/assets/ibexa/build/ibexa-admin-ui-content-edit-parts-js.js @@ -9357,6 +9357,25 @@ var isSafari = function isSafari() { }; +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js": +/*!************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getEditLanguageCode: () => (/* binding */ getEditLanguageCode) +/* harmony export */ }); +var getEditLanguageCode = function getEditLanguageCode() { + var _window$document$quer; + return (_window$document$quer = window.document.querySelector('meta[name="LanguageCode"]')) === null || _window$document$quer === void 0 ? void 0 : _window$document$quer.content; +}; + + /***/ }), /***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js": @@ -9496,6 +9515,304 @@ var isExternalInstance = function isExternalInstance() { return window.origin !== instanceUrl; }; +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js": +/*!*****************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ showErrorNotification: () => (/* binding */ showErrorNotification), +/* harmony export */ showInfoNotification: () => (/* binding */ showInfoNotification), +/* harmony export */ showNotification: () => (/* binding */ showNotification), +/* harmony export */ showSuccessNotification: () => (/* binding */ showSuccessNotification), +/* harmony export */ showWarningNotification: () => (/* binding */ showWarningNotification) +/* harmony export */ }); +/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); + +var NOTIFICATION_INFO_LABEL = 'info'; +var NOTIFICATION_SUCCESS_LABEL = 'success'; +var NOTIFICATION_WARNING_LABEL = 'warning'; +var NOTIFICATION_ERROR_LABEL = 'error'; + +/** + * Dispatches notification event + * + * @function showNotification + * @param {Object} detail + * @param {String} detail.message + * @param {String} detail.label + * @param {Function} [detail.onShow] to be called after notification Node was added + * @param {Object} detail.rawPlaceholdersMap + */ +var showNotification = function showNotification(detail) { + var rootDOMElement = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getRootDOMElement)(); + var event = new CustomEvent('ibexa-notify', { + detail: detail + }); + rootDOMElement.dispatchEvent(event); +}; + +/** + * Dispatches info notification event + * + * @function showInfoNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showInfoNotification = function showInfoNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_INFO_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches success notification event + * + * @function showSuccessNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showSuccessNotification = function showSuccessNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_SUCCESS_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches warning notification event + * + * @function showWarningNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showWarningNotification = function showWarningNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_WARNING_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches error notification event + * + * @function showErrorNotification + * @param {(string | Error)} error + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showErrorNotification = function showErrorNotification(error, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var isErrorObj = error instanceof Error; + var message = isErrorObj ? error.message : error; + showNotification({ + message: message, + label: NOTIFICATION_ERROR_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js": +/*!**************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ clearInstance: () => (/* binding */ clearInstance), +/* harmony export */ getInstance: () => (/* binding */ getInstance), +/* harmony export */ setInstance: () => (/* binding */ setInstance) +/* harmony export */ }); +var setInstance = function setInstance(domElement, instance) { + if (domElement.ibexaInstance) { + throw new Error('Instance for this DOM element already exists!'); + } + domElement.ibexaInstance = instance; +}; +var getInstance = function getInstance(domElement) { + return domElement.ibexaInstance; +}; +var clearInstance = function clearInstance(domElement) { + delete domElement.ibexaInstance; +}; + + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js": +/*!************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getJsonFromResponse: () => (/* binding */ getJsonFromResponse), +/* harmony export */ getRequestHeaders: () => (/* binding */ getRequestHeaders), +/* harmony export */ getRequestMode: () => (/* binding */ getRequestMode), +/* harmony export */ getStatusFromResponse: () => (/* binding */ getStatusFromResponse), +/* harmony export */ getTextFromResponse: () => (/* binding */ getTextFromResponse) +/* harmony export */ }); +/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } + +var getErrorMessage = function getErrorMessage(response) { + var responseErrorMessage = response.json().then(function (jsonResponse) { + var _jsonResponse$ErrorMe; + return (_jsonResponse$ErrorMe = jsonResponse.ErrorMessage) === null || _jsonResponse$ErrorMe === void 0 ? void 0 : _jsonResponse$ErrorMe.errorMessage; + }); + return responseErrorMessage; +}; +var handleRequest = /*#__PURE__*/function () { + var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) { + var Translator, responseErrorMessage, errorMessage, defaultErrorMsg; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (response.ok) { + _context.next = 8; + break; + } + Translator = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getTranslator)(); + _context.next = 4; + return getErrorMessage(response); + case 4: + responseErrorMessage = _context.sent; + errorMessage = responseErrorMessage || response.statusText; + defaultErrorMsg = Translator.trans(/*@Desc("Something went wrong. Try to refresh the page or contact your administrator.")*/'error.request.default_msg'); + throw Error(errorMessage || defaultErrorMsg); + case 8: + return _context.abrupt("return", response); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function handleRequest(_x) { + return _ref.apply(this, arguments); + }; +}(); +var getJsonFromResponse = /*#__PURE__*/function () { + var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context2.sent; + return _context2.abrupt("return", parsedRequest.json()); + case 4: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return function getJsonFromResponse(_x2) { + return _ref2.apply(this, arguments); + }; +}(); +var getTextFromResponse = /*#__PURE__*/function () { + var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context3.sent; + return _context3.abrupt("return", parsedRequest.text()); + case 4: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return function getTextFromResponse(_x3) { + return _ref3.apply(this, arguments); + }; +}(); +var getStatusFromResponse = /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context4.sent; + return _context4.abrupt("return", parsedRequest.status); + case 4: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return function getStatusFromResponse(_x4) { + return _ref4.apply(this, arguments); + }; +}(); +var getRequestMode = function getRequestMode(_ref5) { + var instanceUrl = _ref5.instanceUrl; + return window.location.origin === instanceUrl ? 'same-origin' : 'cors'; +}; +var getRequestHeaders = function getRequestHeaders(_ref6) { + var token = _ref6.token, + siteaccess = _ref6.siteaccess, + accessToken = _ref6.accessToken, + extraHeaders = _ref6.extraHeaders; + if (accessToken) { + return _objectSpread(_objectSpread({ + Authorization: "Bearer ".concat(accessToken) + }, siteaccess && { + 'X-Siteaccess': siteaccess + }), extraHeaders); + } + return _objectSpread(_objectSpread(_objectSpread({}, token && { + 'X-CSRF-Token': token + }), siteaccess && { + 'X-Siteaccess': siteaccess + }), extraHeaders); +}; + + /***/ }), /***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/tooltips.helper.js": @@ -9861,6 +10178,492 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length) }); })(window, window.document, window.ibexa); +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/base.ai.component.js": +/*!********************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/base.ai.component.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ BaseAIComponent) +/* harmony export */ }); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_notification_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_tooltips_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/tooltips.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/tooltips.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_object_instances__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + +var BaseAIComponent = /*#__PURE__*/function () { + function BaseAIComponent(mainElement, config) { + var _this$container$query, _this$config$generati; + _classCallCheck(this, BaseAIComponent); + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__.getTranslator)(); + var _mainElement$dataset = mainElement.dataset, + btnSelector = _mainElement$dataset.btnSelector, + optionsSelector = _mainElement$dataset.optionsSelector, + inputSelector = _mainElement$dataset.inputSelector, + outputSelector = _mainElement$dataset.outputSelector, + cancelWrapperSelector = _mainElement$dataset.cancelWrapperSelector, + extraConfig = _mainElement$dataset.extraConfig, + savePrevValue = _mainElement$dataset.savePrevValue; + this.mainElement = mainElement; + this.container = this.getContainer(); + this.btnElement = this.container.querySelector(btnSelector); + this.optionsElements = this.container.querySelector(optionsSelector); + this.inputElement = this.container.querySelector(inputSelector); + this.outputElement = this.container.querySelector(outputSelector); + this.cancelWrapperElement = (_this$container$query = this.container.querySelector(cancelWrapperSelector)) !== null && _this$container$query !== void 0 ? _this$container$query : this.outputElement; + this.config = JSON.parse(extraConfig !== null && extraConfig !== void 0 ? extraConfig : '{}'); + this.languageCode = config === null || config === void 0 ? void 0 : config.languageCode; + this.savePrevValue = !!savePrevValue; + this.generatingMsg = (_this$config$generati = this.config.generatingMsg) !== null && _this$config$generati !== void 0 ? _this$config$generati : Translator.trans(/*@Desc("AI is generating...")*/'ibexa_connector_ai.generating_msg', {}, 'ibexa_connector_ai'); + this.endpointURL = '/api/ibexa/v2/ai/action/execute/{{ID}}'; + this.abortFetch = this.abortFetch.bind(this); + this.fetchData = this.fetchData.bind(this); + this.handleOptionClick = this.handleOptionClick.bind(this); + (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_object_instances__WEBPACK_IMPORTED_MODULE_4__.setInstance)(this.mainElement, this); + } + return _createClass(BaseAIComponent, [{ + key: "getContainer", + value: function getContainer() { + var _this$mainElement$dat; + if ((_this$mainElement$dat = this.mainElement.dataset) !== null && _this$mainElement$dat !== void 0 && _this$mainElement$dat.containerSelector) { + return this.mainElement.closest(this.mainElement.dataset.containerSelector); + } + return window.document.body; + } + }, { + key: "toggle", + value: function toggle(forceEnabled) { + var _forceEnabled; + this.btnElement.disabled = (_forceEnabled = !forceEnabled) !== null && _forceEnabled !== void 0 ? _forceEnabled : !this.btnElement.disabled; + this.mainElement.classList.toggle('ibexa-ai-component--disabled', !forceEnabled); + } + }, { + key: "beforeFetchData", + value: function beforeFetchData() { + this.toggle(false); + this.injectCancelBtn(); + } + }, { + key: "afterFetchData", + value: function afterFetchData() { + this.toggle(true); + this.removeCancelBtn(); + } + }, { + key: "getRequestBody", + value: function getRequestBody() {} + }, { + key: "processError", + value: function processError(error) { + (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_notification_helper__WEBPACK_IMPORTED_MODULE_1__.showErrorNotification)(error); + } + }, { + key: "getEndpointURL", + value: function getEndpointURL(requestArguments) { + return this.endpointURL.replace('{{ID}}', requestArguments.id); + } + }, { + key: "fetchData", + value: function fetchData(requestArguments) { + var _this = this; + this.beforeFetchData(requestArguments); + this.abortController = new AbortController(); + var endpointURL = this.getEndpointURL(requestArguments); + var body = this.getRequestBody(requestArguments); + var _getRestInfo = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__.getRestInfo)(), + token = _getRestInfo.token, + siteaccess = _getRestInfo.siteaccess, + accessToken = _getRestInfo.accessToken; + var signal = this.abortController.signal; + var request = new Request(endpointURL, { + method: 'POST', + headers: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_0__.getRequestHeaders)({ + token: token, + siteaccess: siteaccess, + accessToken: accessToken, + extraHeaders: this.requestHeaders + }), + body: body, + mode: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_0__.getRequestMode)({ + instanceUrl: this.endpointURL + }) + }); + return fetch(request, { + signal: signal + }).then(_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_0__.getJsonFromResponse).then(function (response) { + _this.afterFetchData(response, requestArguments); + })["catch"](function (error) { + if (error.name === 'AbortError') { + return; + } + _this.afterFetchData(null, requestArguments); + _this.processError(error); + }); + } + }, { + key: "abortFetch", + value: function abortFetch() { + this.abortController.abort(); + this.toggle(true); + this.removeCancelBtn(); + } + }, { + key: "injectCancelBtn", + value: function injectCancelBtn() { + var cancelBtnTemplate = this.mainElement.querySelector('.ibexa-ai-component__cancel-btn-template'); + var clonedCancelBtnTemplate = cancelBtnTemplate.content.cloneNode(true); + this.cancelWrapperElement.append(clonedCancelBtnTemplate); + this.cancelBtn = this.cancelWrapperElement.querySelector('.ibexa-ai-component__cancel-btn'); + (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_tooltips_helper__WEBPACK_IMPORTED_MODULE_3__.parse)(this.cancelBtn); + this.cancelBtn.addEventListener('click', this.abortFetch, false); + } + }, { + key: "removeCancelBtn", + value: function removeCancelBtn() { + this.cancelBtn.remove(); + } + }, { + key: "handleOptionClick", + value: function handleOptionClick(event) { + var id = event.currentTarget.dataset.id; + this.fetchData({ + id: id + }); + this.optionsMenu.closeMenu(); + } + }, { + key: "initOptionsMenu", + value: function initOptionsMenu() { + var _this2 = this; + this.optionsMenu = new window.ibexa.core.MultilevelPopupMenu({ + container: this.optionsElements, + triggerElement: this.btnElement, + initialBranchPlacement: 'bottom-end', + initialBranchFallbackPlacements: ['top-end'], + processItemOnInitAfter: function processItemOnInitAfter(element) { + var btn = element.querySelector('[data-id]'); + btn.addEventListener('click', _this2.handleOptionClick, false); + } + }); + this.optionsMenu.init(); + } + }, { + key: "init", + value: function init() { + this.initOptionsMenu(); + } + }]); +}(); + + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/create.ai.module.js": +/*!*******************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/create.ai.module.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ addModule: () => (/* binding */ addModule), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _modules_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules.map */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/modules.map.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + +var modulesMap = _objectSpread({}, _modules_map__WEBPACK_IMPORTED_MODULE_0__); +var addModule = function addModule(module) { + modulesMap[module.name] = module; +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (moduleName) { + if (!modulesMap[moduleName]) { + throw new Error("No module found for identifier \"".concat(moduleName, "\"")); + } + return modulesMap[moduleName]; +}); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/img.to.text.js": +/*!**************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/img.to.text.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ImageToText) +/* harmony export */ }); +/* harmony import */ var _base_ai_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base.ai.component */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/base.ai.component.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } +function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } +function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + +var ImageToText = /*#__PURE__*/function (_BaseAIComponent) { + function ImageToText(mainElement, config) { + var _this; + _classCallCheck(this, ImageToText); + _this = _callSuper(this, ImageToText, [mainElement, config]); + _this.imageQuality = _this.config.image_quality; + _this.maxSize = _this.config.image_max_size; + if (_this.savePrevValue) { + _this.prevValue = ''; + } + return _this; + } + _inherits(ImageToText, _BaseAIComponent); + return _createClass(ImageToText, [{ + key: "getScale", + value: function getScale(img) { + if (!this.maxSize) { + return 1; + } + var widthScale = this.maxSize.width / img.width; + var heightScale = this.maxSize.height / img.height; + return Math.min(widthScale, heightScale, 1); + } + }, { + key: "getBase64Image", + value: function getBase64Image(img) { + var canvas = document.createElement('canvas'); + var scale = this.getScale(img); + canvas.width = img.width * scale; + canvas.height = img.height * scale; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + var dataURL = canvas.toDataURL('image/jpeg', this.imageQuality); + canvas.remove(); + return dataURL; + } + }, { + key: "getImgInput", + value: function getImgInput() { + if (this.tempImageElement.src.indexOf('data:image') === 0) { + return this.tempImageElement.src; + } + return this.getBase64Image(this.tempImageElement); + } + }, { + key: "getRequestBody", + value: function getRequestBody() {} + }, { + key: "getResponseValue", + value: function getResponseValue() {} + }, { + key: "beforeFetchData", + value: function beforeFetchData() { + _superPropGet(ImageToText, "beforeFetchData", this, 3)([]); + if (this.savePrevValue) { + this.prevValue = this.outputElement.value; + } + this.outputElement.value = this.generatingMsg; + } + }, { + key: "afterFetchData", + value: function afterFetchData(response) { + _superPropGet(ImageToText, "afterFetchData", this, 3)([]); + if (response) { + this.outputElement.value = this.getResponseValue(response); + } else { + this.outputElement.value = this.savePrevValue ? this.prevValue : ''; + } + } + }, { + key: "abortFetch", + value: function abortFetch() { + _superPropGet(ImageToText, "abortFetch", this, 3)([]); + this.outputElement.value = this.savePrevValue ? this.prevValue : ''; + } + }, { + key: "toggle", + value: function toggle(forceEnabled) { + _superPropGet(ImageToText, "toggle", this, 3)([forceEnabled]); + this.outputElement.disabled = !forceEnabled || !this.outputElement.disabled; + } + }, { + key: "initTempImage", + value: function initTempImage() { + this.tempImageElement = document.createElement('img'); + this.tempImageElement.src = this.inputElement.src; + this.tempImageElement.style.maxWidth = 'initial'; + this.tempImageElement.style.width = 'initial'; + this.tempImageElement.style.height = 'initial'; + this.tempImageElement.style.display = 'none'; + this.container.append(this.tempImageElement); + } + }, { + key: "initImageObserver", + value: function initImageObserver() { + var _this2 = this; + var observerConfig = { + attributes: true, + attributeFilter: ['src'] + }; + this.imageObserver = new MutationObserver(function () { + _this2.tempImageElement.remove(); + _this2.initTempImage(); + }); + this.imageObserver.observe(this.inputElement, observerConfig); + } + }, { + key: "init", + value: function init() { + _superPropGet(ImageToText, "init", this, 3)([]); + this.initTempImage(); + this.initImageObserver(); + } + }]); +}(_base_ai_component__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/modules.map.js": +/*!**************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/modules.map.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ImgAlternativeText: () => (/* reexport safe */ _modules_img_alternative_text__WEBPACK_IMPORTED_MODULE_0__["default"]) +/* harmony export */ }); +/* harmony import */ var _modules_img_alternative_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/img.alternative.text */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/modules/img.alternative.text.js"); + + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/init.ai.js": +/*!*****************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/init.ai.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_content_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js"); +/* harmony import */ var _core_create_ai_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core/create.ai.module */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/create.ai.module.js"); + + +(function (global, doc) { + var aiComponentBtns = doc.querySelectorAll('.ibexa-ai-component'); + var languageCode = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_content_helper__WEBPACK_IMPORTED_MODULE_0__.getEditLanguageCode)(); + var initAIComponent = function initAIComponent(aiComponentBtn) { + var AIModule = (0,_core_create_ai_module__WEBPACK_IMPORTED_MODULE_1__["default"])(aiComponentBtn.dataset.type); + var aiComponent = new AIModule(aiComponentBtn, { + languageCode: languageCode + }); + aiComponent.init(); + }; + aiComponentBtns.forEach(initAIComponent); + doc.body.addEventListener('ibexa-ai-component:initialize', function (event) { + return initAIComponent(event.detail.element); + }); +})(window, window.document); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/modules/img.alternative.text.js": +/*!**************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/modules/img.alternative.text.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ImgAlternativeText) +/* harmony export */ }); +/* harmony import */ var _core_img_to_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/img.to.text */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/img.to.text.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + +var ImgAlternativeText = /*#__PURE__*/function (_ImgToText) { + function ImgAlternativeText(mainElement, config) { + var _this; + _classCallCheck(this, ImgAlternativeText); + _this = _callSuper(this, ImgAlternativeText, [mainElement, config]); + _this.requestHeaders = { + Accept: 'application/vnd.ibexa.api.ai.AltText+json', + 'Content-Type': 'application/vnd.ibexa.api.ai.GenerateAltText+json' + }; + return _this; + } + _inherits(ImgAlternativeText, _ImgToText); + return _createClass(ImgAlternativeText, [{ + key: "getRequestBody", + value: function getRequestBody() { + var body = { + GenerateAltText: { + Image: { + base64: this.getImgInput() + }, + RuntimeContext: {} + } + }; + if (this.languageCode) { + body.GenerateAltText.RuntimeContext.languageCode = this.languageCode; + } + return JSON.stringify(body); + } + }, { + key: "getResponseValue", + value: function getResponseValue(response) { + return response.AltText.Text.text[0]; + } + }]); +}(_core_img_to_text__WEBPACK_IMPORTED_MODULE_0__["default"]); + + /***/ }), /***/ "./vendor/ibexa/connector-dam/src/bundle/Resources/public/js/ezdam.js": @@ -10853,6 +11656,6 @@ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/leaflet/dist/leaflet.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/admin.content.edit.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-file-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-preview-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/multi-input-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezauthor.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezcountry.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezdate.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezdatetime.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezinteger.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezrichtext.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/eztext.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/eztime.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezuser.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/sidebar/extra.actions.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/edit.header.js"), __webpack_exec__("./vendor/ibexa/fieldtype-matrix/src/bundle/Resources/public/js/scripts/fieldType/ezmatrix.js"), __webpack_exec__("./vendor/ibexa/connector-dam/src/bundle/Resources/public/js/ezdam.js"), __webpack_exec__("./vendor/ibexa/measurement/src/bundle/Resources/public/js/field.measurement.validator.js"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/js/ezimage.edit.js"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/js/ezimageasset.edit.js"), __webpack_exec__("./vendor/ibexa/taxonomy/src/bundle/Resources/public/js/fieldType/ibexa_taxonomy_entry_assignment.js"), __webpack_exec__("./vendor/ibexa/fieldtype-address/src/bundle/Resources/public/js/scripts/fieldType/ibexa_address.js")); +/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/leaflet/dist/leaflet.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/admin.content.edit.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-file-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/base-preview-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/base/multi-input-field.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezauthor.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezcountry.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezdate.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezdatetime.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezinteger.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezrichtext.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/eztext.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/eztime.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/fieldType/ezuser.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/sidebar/extra.actions.js"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/edit.header.js"), __webpack_exec__("./vendor/ibexa/fieldtype-matrix/src/bundle/Resources/public/js/scripts/fieldType/ezmatrix.js"), __webpack_exec__("./vendor/ibexa/connector-dam/src/bundle/Resources/public/js/ezdam.js"), __webpack_exec__("./vendor/ibexa/measurement/src/bundle/Resources/public/js/field.measurement.validator.js"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/js/ezimage.edit.js"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/js/ezimageasset.edit.js"), __webpack_exec__("./vendor/ibexa/taxonomy/src/bundle/Resources/public/js/fieldType/ibexa_taxonomy_entry_assignment.js"), __webpack_exec__("./vendor/ibexa/fieldtype-address/src/bundle/Resources/public/js/scripts/fieldType/ibexa_address.js"), __webpack_exec__("./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/init.ai.js")); /******/ } ]); \ No newline at end of file diff --git a/public/assets/ibexa/build/ibexa-admin-ui-layout-css.css b/public/assets/ibexa/build/ibexa-admin-ui-layout-css.css index 588bf03..6ceb967 100644 --- a/public/assets/ibexa/build/ibexa-admin-ui-layout-css.css +++ b/public/assets/ibexa/build/ibexa-admin-ui-layout-css.css @@ -26282,3 +26282,134 @@ body.ibexa-theme.ibexa-theme--dark .c-tb-element.c-tb-element--use-theme .c-tb-t display: inline-block; padding: 0.1875rem 0.625rem; } +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/@symfony/webpack-encore/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/connector-ai.scss ***! + \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +:root { + --ibexa-hover-color: var(--ibexa-hover-color, $ibexa-color-primary); + --ibexa-border-color: var(--ibexa-border-color, $ibexa-color-dark); +} + +@keyframes remove-field { + 100% { + height: 0; + margin-bottom: 0; + opacity: 0; + transform: scale(0); + } +} +@keyframes item-remove-pulse { + 0% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } + 10% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } + 20% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0.625rem #f3f3f6; + } + 100% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } +} +@keyframes item-highlight-pulse { + 0% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0 #ecf4ff; + } + 10% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0 #ecf4ff; + } + 20% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0.625rem #ecf4ff; + } + 100% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0.25rem 0.125rem 1.0625rem 0 rgba(65, 145, 255, 0.05); + } +} +@keyframes spinner-animation { + to { + transform: rotate(1turn); + } +} +.ibexa-ai-component__options-footer { + display: flex; + justify-content: space-between; + align-items: center; + border-top: 0.0625rem solid #e0e0e8; + font-size: 0.875rem; + margin: 0 1.0625rem; + padding: 0.5rem 0; +} +.ibexa-ai-component__btn-icon-wrapper { + margin-right: 0.75rem; + line-height: 1; +} +.ibexa-ai-component__btn-icon.ibexa-icon { + margin-right: 0; +} +.ibexa-ai-component__btn-spinner { + --mask: conic-gradient(rgba(0, 0, 0, 0) 10%, #000000), + linear-gradient(#000000 0 0) content-box; + width: 1rem; + height: 1rem; + padding: 0.125rem; + aspect-ratio: 1; + border-radius: 50%; + background: #ae1164; + -webkit-mask: var(--mask); + mask: var(--mask); + -webkit-mask-composite: source-out; + mask-composite: subtract; + animation: spinner-animation 1s infinite linear; + display: none; +} +.ibexa-ai-component__cancel-btn { + display: flex; + align-items: center; + justify-content: center; + width: 1.5rem; + height: 1.5rem; + padding: 0; +} +.ibexa-ai-component--disabled .ibexa-ai-component__btn-icon { + display: none; +} +.ibexa-ai-component--disabled .ibexa-ai-component__btn-spinner { + display: block; +} + +.ibexa-ai-component-output--text .ibexa-input--text:disabled { + border-color: #8b0e50; + color: #71767c; + background-color: #ffffff; +} + +.ibexa-ai-input-wrapper { + display: flex; + align-items: flex-end; + width: 100%; +} +.ibexa-ai-input-wrapper .ibexa-ai-component-output { + flex-grow: 1; + margin-bottom: 1.5rem; +} +.ibexa-ai-input-wrapper__btn { + height: 3rem; + margin-left: 1rem; + margin-bottom: 1.5rem; +} +.ibexa-ai-input-wrapper .ibexa-data-form-field { + margin-bottom: 0; +} diff --git a/public/assets/ibexa/build/ibexa-admin-ui-layout-css.js b/public/assets/ibexa/build/ibexa-admin-ui-layout-css.js index 54ec8e2..28c3320 100644 --- a/public/assets/ibexa/build/ibexa-admin-ui-layout-css.js +++ b/public/assets/ibexa/build/ibexa-admin-ui-layout-css.js @@ -59,6 +59,18 @@ __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/connector-ai.scss": +/*!**************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/connector-ai.scss ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + /***/ }), /***/ "./vendor/ibexa/connector-dam/src/bundle/Resources/public/scss/connector-dam.scss": @@ -184,6 +196,6 @@ __webpack_require__.r(__webpack_exports__); }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ibexa-bootstrap.scss"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ibexa.scss"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ui/ibexa-modules.scss"), __webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/flatpickr.min.css"), __webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/plugins/confirmDate/confirmDate.css"), __webpack_exec__("./vendor/ibexa/fieldtype-matrix/src/bundle/Resources/public/scss/matrix-content-type.scss"), __webpack_exec__("./vendor/ibexa/connector-dam/src/bundle/Resources/public/scss/connector-dam.scss"), __webpack_exec__("./vendor/ibexa/seo/src/bundle/Resources/public/scss/seo-content-card-preview.scss"), __webpack_exec__("./vendor/ibexa/measurement/src/bundle/Resources/public/scss/measurement-content-type.scss"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/scss/ui/image-editor.scss"), __webpack_exec__("./vendor/ibexa/taxonomy/src/bundle/Resources/public/scss/taxonomy.scss"), __webpack_exec__("./vendor/ibexa/tree-builder/src/bundle/Resources/public/scss/tree.builder.scss"), __webpack_exec__("./vendor/ibexa/content-tree/src/bundle/Resources/public/scss/content.tree.scss"), __webpack_exec__("./vendor/ibexa/image-picker/src/bundle/Resources/public/scss/image.picker.scss"), __webpack_exec__("./vendor/ibexa/site-context/src/bundle/Resources/public/scss/site-context.scss")); +/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ibexa-bootstrap.scss"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ibexa.scss"), __webpack_exec__("./vendor/ibexa/admin-ui/src/bundle/Resources/public/scss/ui/ibexa-modules.scss"), __webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/flatpickr.min.css"), __webpack_exec__("./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/plugins/confirmDate/confirmDate.css"), __webpack_exec__("./vendor/ibexa/fieldtype-matrix/src/bundle/Resources/public/scss/matrix-content-type.scss"), __webpack_exec__("./vendor/ibexa/connector-dam/src/bundle/Resources/public/scss/connector-dam.scss"), __webpack_exec__("./vendor/ibexa/seo/src/bundle/Resources/public/scss/seo-content-card-preview.scss"), __webpack_exec__("./vendor/ibexa/measurement/src/bundle/Resources/public/scss/measurement-content-type.scss"), __webpack_exec__("./vendor/ibexa/image-editor/src/bundle/Resources/public/scss/ui/image-editor.scss"), __webpack_exec__("./vendor/ibexa/taxonomy/src/bundle/Resources/public/scss/taxonomy.scss"), __webpack_exec__("./vendor/ibexa/tree-builder/src/bundle/Resources/public/scss/tree.builder.scss"), __webpack_exec__("./vendor/ibexa/content-tree/src/bundle/Resources/public/scss/content.tree.scss"), __webpack_exec__("./vendor/ibexa/image-picker/src/bundle/Resources/public/scss/image.picker.scss"), __webpack_exec__("./vendor/ibexa/site-context/src/bundle/Resources/public/scss/site-context.scss"), __webpack_exec__("./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/connector-ai.scss")); /******/ } ]); \ No newline at end of file diff --git a/public/assets/ibexa/build/ibexa-admin-ui-layout-js.js b/public/assets/ibexa/build/ibexa-admin-ui-layout-js.js index 63e9921..01f3e07 100644 --- a/public/assets/ibexa/build/ibexa-admin-ui-layout-js.js +++ b/public/assets/ibexa/build/ibexa-admin-ui-layout-js.js @@ -14251,6 +14251,13 @@ t.add("ibexa.segmentation.validator.segment_unique_identifier", "Segment identifier \"{{ identifier }}\" is not unique", "validators", "en"); t.add("ibexa.corporate_account.invitation.invalid_site_access", "SiteAccess \"{{ name }}\" isn\u2019t a part of corporate SiteAccess group", "validators", "en"); t.add("Bad code value", "Code does not match", "validators", "en"); + t.add("Max length must be between 50 and 300 characters.", "Max length must be between 50 and 300 characters.", "validators", "en"); + t.add("ibexa.connector_ai.action_configuration.handler_options.valid", "Invalid AI action handler options", "validators", "en"); + t.add("ibexa.connector_ai.action_configuration.identifier.pattern", "AI action identifier may only contain letters from \"a\" to \"z\", numbers, dashes and underscores.", "validators", "en"); + t.add("ibexa.connector_ai.action_configuration.identifier.unique", "AI action identifier is not unique", "validators", "en"); + t.add("ibexa.connector_ai.action_configuration.type_options.valid", "Invalid AI action type options", "validators", "en"); + t.add("Max tokens must be greater than 0 and equal or lower or than 4096.", "Max tokens must be greater than 0 and equal or lower than 4096.", "validators", "en"); + t.add("Temperature must be a number between 0 and 2.", "Temperature must be a number between 0 and 2.", "validators", "en"); t.add("role.policy.all_modules_all_functions", "All modules \/ All functions", "forms", "en"); t.add("role.policy.class", "Content type", "forms", "en"); t.add("role.policy.class.all_functions", "Content type \/ All functions", "forms", "en"); @@ -14500,6 +14507,13 @@ t.add("role.policy.dashboard", "Dashboard", "forms", "en"); t.add("role.policy.dashboard.all_functions", "Dashboard \/ All functions", "forms", "en"); t.add("role.policy.dashboard.customize", "Dashboard \/ Customize", "forms", "en"); + t.add("role.policy.action_configuration", "AI action", "forms", "en"); + t.add("role.policy.action_configuration.all_functions", "AI action \/ All Functions", "forms", "en"); + t.add("role.policy.action_configuration.create", "AI action \/ Create", "forms", "en"); + t.add("role.policy.action_configuration.delete", "AI action \/ Delete", "forms", "en"); + t.add("role.policy.action_configuration.edit", "AI action \/ Edit", "forms", "en"); + t.add("role.policy.action_configuration.execute", "AI action \/ Execute", "forms", "en"); + t.add("role.policy.action_configuration.view", "AI action \/ View", "forms", "en"); t.add("Enter login or email", "Enter login or email", "messages", "en"); t.add("Enter password", "Enter password", "messages", "en"); t.add("Login", "Login", "messages", "en"); @@ -14723,6 +14737,15 @@ t.add("dropdown.filter.placeholder", "Search...", "ck_editor", "en"); t.add("measurement_input.alert.title", "If size fields are blank, the system sets default template values. Adjust them for better results.", "ck_editor", "en"); t.add("measurement_input.unit.label", "Unit", "ck_editor", "en"); + t.add("ck_editor.dropdown.filter.placeholder", "Search...", "ck_editor", "en"); + t.add("ck_editor.go_to_ai_actions.label", "Go to AI actions", "ck_editor", "en"); + t.add("ck_editor.richtext.generating_msg", "AI is generating...", "ck_editor", "en"); + t.add("ck_editor.richtext.preview.action.cancel", "Stop", "ck_editor", "en"); + t.add("ck_editor.richtext.preview.action.insert_below", "Insert below", "ck_editor", "en"); + t.add("ck_editor.richtext.preview.action.replace", "Replace", "ck_editor", "en"); + t.add("ck_editor.richtext.preview.action.try_again", "Try again", "ck_editor", "en"); + t.add("ck_editor.richtext.preview.header", "AI Assistant: %name%", "ck_editor", "en"); + t.add("ck_editor.richtext.toolbar_btn", "Improve text", "ck_editor", "en"); t.add("content.autosave.turn_off.message", "You can turn autosave off in your user settings", "ibexa_content", "en"); t.add("content.create_draft.success", "Created a new draft for '%name%'.", "ibexa_content", "en"); t.add("content.draft.conflict.error", "Cannot check if the draft has conflicts with other drafts. %error%.", "ibexa_content", "en"); @@ -17107,6 +17130,84 @@ t.add("user.status_change.confirmation_modal.activate", "Activate", "ibexa_corporate_account", "en"); t.add("user.status_change.confirmation_modal.cancel", "Cancel", "ibexa_corporate_account", "en"); t.add("user.status_change.confirmation_modal.deactivate", "De-activate", "ibexa_corporate_account", "en"); + t.add("Generate alt text for given image", "Generate alt text for given image.", "ibexa_connector_ai", "en"); + t.add("Refine given text", "Refine given text.", "ibexa_connector_ai", "en"); + t.add("action_configuration.disabled", "Disabled", "ibexa_connector_ai", "en"); + t.add("action_configuration.enabled", "Enabled", "ibexa_connector_ai", "en"); + t.add("breadcrumb.admin", "Admin", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.breadcrumb.list", "AI actions", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.breadcrumb.view", "%action_configuration_name%", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.bulk_delete.success", "{1}AI action '%deletedNames%' removed.|]1,Inf[ AI actions '%deletedNames%' removed.", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.create.action_handler", "Action handler", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.create.action_type", "Action type", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.create.success", "AI action '%name%' created.", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.delete.success", "AI action '%name%' removed.", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.action_type", "Action type", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.description", "Description", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.identifier", "Identifier", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.modified_at", "Modification date", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.name", "Name", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.status", "Status", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.status.disabled", "Disabled", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.details.column.status.enabled", "Enabled", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.list.search.query.placeholder", "Search by name, identifier", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.list.status.disabled", "Disabled", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.list.status.enabled", "Enabled", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.list.title", "AI actions", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.prompt_length", "Length of prompt output", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.search.enabled.label", "Enabled", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.status.label", "Status", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.translations.label", "Translations", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.update.success", "AI action '%name%' updated.", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.view.preview", "Preview", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.view.tab.global_properties.label", "Global properties", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.view.tab.settings.label", "Settings", "ibexa_connector_ai", "en"); + t.add("ibexa.action_configuration.view.title", "%action_configuration_name% AI action", "ibexa_connector_ai", "en"); + t.add("ibexa.ai.action.generate_alt_text.name", "Generate alternative text", "ibexa_connector_ai", "en"); + t.add("ibexa.ai.action.refine_text.name", "Refine text", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.anchor_navigation.global_properties", "Global properties", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.anchor_navigation.settings", "Settings", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.create.discard", "Discard", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.create.submit", "Create", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.edit.action_name", "Editing AI action", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.enabled.label", "Enabled", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.bulk_delete.confirm_message", "Delete selected AI actions?", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.bulk_delete.delete.btn.label", "Delete", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.empty.action_text", "Try again with new search criteria", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.empty.info", "No AI actions available", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.header.action_type", "Action type", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.header.identifier", "Identifier", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.header.modification_date", "Modification date", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.header.name", "Name", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.list.table.header.status", "Status", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.new.action_name", "Creating", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.new.subtitle", "in %language_name%", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.action_configuration.new.title", "New %action_type_name% AI action", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.anchor_navigation.action_options", "Settings", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.anchor_navigation.global_properties", "Global properties", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.enabled.no", "No", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.enabled.yes", "Yes", "ibexa_connector_ai", "en"); + t.add("ibexa.connector_ai.pre_create.title", "Create AI action", "ibexa_connector_ai", "en"); + t.add("ibexa.list.action.create", "Create", "ibexa_connector_ai", "en"); + t.add("ibexa.modal.delete", "Delete", "ibexa_connector_ai", "en"); + t.add("ibexa.modal.delete.action_configuration.confirm_message", "Delete this AI action?", "ibexa_connector_ai", "en"); + t.add("ibexa_connector_ai.generating_msg", "AI is generating...", "ibexa_connector_ai", "en"); + t.add("ibexa_connector_ai.go_to_ai_actions.label", "Go to AI actions", "ibexa_connector_ai", "en"); + t.add("ibexa_connector_ai.stop_generating.label", "Stop generating", "ibexa_connector_ai", "en"); + t.add("ibexa_connector_ai.use_ai.label", "Use AI", "ibexa_connector_ai", "en"); + t.add("tab.action_handler_options.label", "Action handler options", "ibexa_connector_ai", "en"); + t.add("tab.action_type_options.label", "Action type options", "ibexa_connector_ai", "en"); + t.add("tab.properties.label", "Properties", "ibexa_connector_ai", "en"); + t.add("tab.translations.action.add", "Add", "ibexa_connector_ai", "en"); + t.add("tab.translations.action.delete", "Delete", "ibexa_connector_ai", "en"); + t.add("tab.translations.add.cancel", "Cancel", "ibexa_connector_ai", "en"); + t.add("tab.translations.add.submit", "Add translation", "ibexa_connector_ai", "en"); + t.add("tab.translations.add.title", "Create a new translation", "ibexa_connector_ai", "en"); + t.add("tab.translations.language_code", "Language code", "ibexa_connector_ai", "en"); + t.add("tab.translations.language_name", "Language name", "ibexa_connector_ai", "en"); + t.add("tab.translations.modal.message", "Do you want to delete the translation ?", "ibexa_connector_ai", "en"); + t.add("tab.translations.translation_manager", "Translation manager", "ibexa_connector_ai", "en"); + t.add("translation.base_language.no_language", "No language", "ibexa_connector_ai", "en"); })(Translator); /***/ }), diff --git a/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js b/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js new file mode 100644 index 0000000..f5783da --- /dev/null +++ b/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js @@ -0,0 +1,339 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["ibexa-connector-ai-action-configuration-list-js"],{ + +/***/ "./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js": +/*!***********************************************************************!*\ + !*** ./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js ***! + \***********************************************************************/ +/***/ (() => { + +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +(function (global, doc) { + var toggleForms = doc.querySelectorAll('.ibexa-toggle-btn-state'); + toggleForms.forEach(function (toggleForm) { + var checkboxes = _toConsumableArray(toggleForm.querySelectorAll('.ibexa-table__cell--has-checkbox .ibexa-input--checkbox')); + var buttonRemove = doc.querySelector(toggleForm.dataset.toggleButtonId); + if (!buttonRemove) { + return; + } + var toggleButtonState = function toggleButtonState() { + var isAnythingSelected = checkboxes.some(function (el) { + return el.checked; + }); + buttonRemove.disabled = !isAnythingSelected; + }; + toggleButtonState(); + checkboxes.forEach(function (checkbox) { + return checkbox.addEventListener('change', toggleButtonState, false); + }); + }); +})(window, window.document); + +/***/ }), + +/***/ "./public/bundles/ibexaadminui/js/scripts/filters.action.btns.js": +/*!***********************************************************************!*\ + !*** ./public/bundles/ibexaadminui/js/scripts/filters.action.btns.js ***! + \***********************************************************************/ +/***/ (() => { + +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +(function (global, doc, ibexa) { + var containers = doc.querySelectorAll('.ibexa-adaptive-filters'); + containers.forEach(function (container) { + var clearBtn = container.querySelector('.ibexa-adaptive-filters__clear-btn'); + var applyBtn = container.querySelector('.ibexa-adaptive-filters__submit-btn'); + var dropdownNodes = _toConsumableArray(container.querySelectorAll('.ibexa-dropdown')); + var textInputNodes = _toConsumableArray(container.querySelectorAll('.ibexa-input--text')); + var dateInputNodes = _toConsumableArray(container.querySelectorAll('.ibexa-input--date')); + var originalValuesMap = new Map(); + var dropdownSelectionsEqual = function dropdownSelectionsEqual(selection1, selection2) { + if (selection1.length !== selection2.length) { + return false; + } + for (var i = 0; i < selection1.length; ++i) { + if (selection1[i] !== selection2[i]) return false; + } + return true; + }; + var checkFieldsValuesChanged = function checkFieldsValuesChanged() { + return dropdownNodes.some(function (dropdownNode) { + var dropdown = dropdownNode.ibexaInstance; + var value = _toConsumableArray(dropdown.getSelectedItems()).map(function (item) { + return item.value; + }); + var originalValue = originalValuesMap.get(dropdown); + return !dropdownSelectionsEqual(value, originalValue); + }) || textInputNodes.some(function (textInputNode) { + var value = textInputNode.value; + var originalValue = originalValuesMap.get(textInputNode); + return value !== originalValue; + }); + }; + var checkAreFiltersCleared = function checkAreFiltersCleared() { + return textInputNodes.every(function (textInputNode) { + return textInputNode.disabled || textInputNode.value === ''; + }) && dropdownNodes.every(function (dropdownNode) { + var isDisabled = dropdownNode.classList.contains('ibexa-dropdown--disabled'); + var selectNode = dropdownNode.querySelector('.ibexa-input--select'); + var dropdown = dropdownNode.ibexaInstance; + return isDisabled || (dropdown.canSelectOnlyOne ? selectNode.selectedIndex === 0 : selectNode.selectedIndex === -1); + }); + }; + var clearForm = function clearForm() { + textInputNodes.forEach(function (textInputNode) { + if (!textInputNode.disabled) { + textInputNode.value = ''; + } + }); + dateInputNodes.forEach(function (dateInputNode) { + if (!dateInputNode.disabled) { + var datePickerNode = dateInputNode.closest('.ibexa-picker'); + var datePickerInstance = ibexa.helpers.objectInstances.getInstance(datePickerNode); + datePickerInstance.clear(); + } + }); + dropdownNodes.forEach(function (dropdownNode) { + var isDisabled = dropdownNode.classList.contains('ibexa-dropdown--disabled'); + if (!isDisabled) { + var dropdown = dropdownNode.ibexaInstance; + if (dropdown.canSelectOnlyOne) { + dropdown.selectFirstOption(); + } else { + dropdown.clearCurrentSelection(); + } + } + }); + }; + var handleFormClear = function handleFormClear() { + clearForm(); + clearBtn.disabled = true; + applyBtn.disabled = !checkFieldsValuesChanged(); + applyBtn.click(); + }; + var handleInputChange = function handleInputChange() { + clearBtn.disabled = checkAreFiltersCleared(); + applyBtn.disabled = !checkFieldsValuesChanged(); + }; + dropdownNodes.forEach(function (dropdownNode) { + var dropdown = dropdownNode.ibexaInstance; + var originalValue = _toConsumableArray(dropdown.getSelectedItems()).map(function (item) { + return item.value; + }); + originalValuesMap.set(dropdown, originalValue); + }); + textInputNodes.forEach(function (textInputNode) { + var originalValue = textInputNode.value; + originalValuesMap.set(textInputNode, originalValue); + }); + if (applyBtn) { + applyBtn.disabled = true; + } + if (clearBtn) { + clearBtn.disabled = checkAreFiltersCleared(); + clearBtn.addEventListener('click', handleFormClear, false); + } + dropdownNodes.forEach(function (dropdownNode) { + var select = dropdownNode.querySelector('.ibexa-input--select'); + select.addEventListener('change', handleInputChange, false); + }); + textInputNodes.forEach(function (textInputNode) { + return textInputNode.addEventListener('input', handleInputChange, false); + }); + }); +})(window, window.document, window.ibexa); + +/***/ }), + +/***/ "./public/bundles/ibexaadminui/js/scripts/sidebar/extra.actions.js": +/*!*************************************************************************!*\ + !*** ./public/bundles/ibexaadminui/js/scripts/sidebar/extra.actions.js ***! + \*************************************************************************/ +/***/ (() => { + +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +(function (global, doc, ibexa) { + var CLASS_HIDDEN = 'ibexa-extra-actions--hidden'; + var CLASS_EXPANDED = 'ibexa-context-menu--expanded'; + var CLASS_PREVENT_SHOW = 'ibexa-extra-actions--prevent-show'; + var closeBtns = doc.querySelectorAll('.ibexa-extra-actions .ibexa-btn--close, .ibexa-extra-actions .ibexa-extra-actions__btn--cancel'); + var btns = _toConsumableArray(doc.querySelectorAll('.ibexa-btn--extra-actions')); + var menu = doc.querySelector('.ibexa-context-menu'); + var backdrop = new ibexa.core.Backdrop(); + var haveHiddenPart = function haveHiddenPart(element) { + return element.classList.contains(CLASS_HIDDEN) && !element.classList.contains(CLASS_PREVENT_SHOW); + }; + var removeBackdrop = function removeBackdrop() { + backdrop.hide(); + doc.body.classList.remove('ibexa-scroll-disabled'); + }; + var closeExtraActions = function closeExtraActions(actions) { + actions.classList.add(CLASS_HIDDEN); + if (menu) { + menu.classList.remove(CLASS_EXPANDED); + } + doc.body.dispatchEvent(new CustomEvent('ibexa-extra-actions:after-close')); + removeBackdrop(); + }; + var toggleExtraActionsWidget = function toggleExtraActionsWidget(widgetData) { + var actions = doc.querySelector(".ibexa-extra-actions[data-actions=\"".concat(widgetData.actions, "\"]")); + if (widgetData.validate && !parseInt(widgetData.isFormValid, 10)) { + return; + } + var isHidden = haveHiddenPart(actions); + var focusElement = actions.querySelector(widgetData.focusElement); + var _detectClickOutside = function detectClickOutside(event) { + if (event.target.classList.contains('ibexa-backdrop')) { + closeExtraActions(actions); + doc.body.removeEventListener('click', _detectClickOutside, false); + } + }; + actions.classList.toggle(CLASS_HIDDEN, !isHidden); + if (menu) { + menu.classList.toggle(CLASS_EXPANDED, isHidden); + } + if (!actions.classList.contains(CLASS_HIDDEN)) { + backdrop.show(); + doc.body.addEventListener('click', _detectClickOutside, false); + doc.body.classList.add('ibexa-scroll-disabled'); + } else { + doc.body.removeEventListener('click', _detectClickOutside); + removeBackdrop(); + } + if (focusElement) { + focusElement.focus(); + } + }; + var initExtraActionsWidget = function initExtraActionsWidget(dataset) { + var hashes = window.location.hash.split('#'); + if (hashes.includes(dataset.actions)) { + toggleExtraActionsWidget(dataset); + } + }; + var hideMenu = function hideMenu(btn) { + var menuBranch = btn.closest('.ibexa-multilevel-popup-menu__branch'); + if (!(menuBranch !== null && menuBranch !== void 0 && menuBranch.menuInstanceElement)) { + return; + } + var menuInstance = ibexa.helpers.objectInstances.getInstance(menuBranch.menuInstanceElement); + menuInstance.closeMenu(); + }; + btns.forEach(function (btn) { + var dataset = btn.dataset; + btn.addEventListener('click', function () { + toggleExtraActionsWidget(dataset); + hideMenu(btn); + }, false); + initExtraActionsWidget(dataset); + }); + doc.body.addEventListener('ibexa-extra-actions:toggle-widget', function (event) { + return toggleExtraActionsWidget(event.detail); + }, false); + closeBtns.forEach(function (closeBtn) { + return closeBtn.addEventListener('click', function (event) { + closeExtraActions(event.currentTarget.closest('.ibexa-extra-actions')); + }, false); + }); +})(window, window.document, window.ibexa); + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js": +/*!**************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ clearInstance: () => (/* binding */ clearInstance), +/* harmony export */ getInstance: () => (/* binding */ getInstance), +/* harmony export */ setInstance: () => (/* binding */ setInstance) +/* harmony export */ }); +var setInstance = function setInstance(domElement, instance) { + if (domElement.ibexaInstance) { + throw new Error('Instance for this DOM element already exists!'); + } + domElement.ibexaInstance = instance; +}; +var getInstance = function getInstance(domElement) { + return domElement.ibexaInstance; +}; +var clearInstance = function clearInstance(domElement) { + delete domElement.ibexaInstance; +}; + + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/extra.actions.js": +/*!***********************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/extra.actions.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_object_instances__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/object.instances.js"); +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + +(function (global, doc) { + var createActions = doc.querySelector('.ibexa-extra-actions.ibexa-extra-actions--action-configuration'); + if (!createActions) { + return; + } + var actionTypeDropdown = createActions.querySelector('.ibexa-form-field--action-type .ibexa-dropdown'); + var actionHandlerDropdown = createActions.querySelector('.ibexa-form-field--action-handler .ibexa-dropdown'); + var actionTypeDropdownInstance = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_object_instances__WEBPACK_IMPORTED_MODULE_0__.getInstance)(actionTypeDropdown); + var actionHandlerDropdownInstance = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_object_instances__WEBPACK_IMPORTED_MODULE_0__.getInstance)(actionHandlerDropdown); + var filterActionHandlers = function filterActionHandlers() { + var actionTypeValue = actionTypeDropdownInstance.sourceInput.value; + var actionHandlerOptions = actionHandlerDropdownInstance.sourceInput.querySelectorAll("option[data-action-type=\"".concat(actionTypeValue, "\"]")); + var actionHandlerDropdownItems = actionHandlerDropdownInstance.itemsListContainer.querySelectorAll('.ibexa-dropdown__item'); + var actionHandlerVisibleOptionsIds = _toConsumableArray(actionHandlerOptions).map(function (_ref) { + var value = _ref.value; + return value; + }); + actionHandlerDropdownItems.forEach(function (itemNode) { + itemNode.hidden = !actionHandlerVisibleOptionsIds.includes(itemNode.dataset.value); + }); + var firstVisibleItem = actionHandlerDropdownInstance.itemsListContainer.querySelector('.ibexa-dropdown__item:not([hidden])'); + var firstVisibleItemId = firstVisibleItem.dataset.value; + if (firstVisibleItemId !== actionHandlerDropdownInstance.sourceInput.value) { + actionHandlerDropdownInstance.selectOption(firstVisibleItemId); + } + }; + filterActionHandlers(); + actionTypeDropdownInstance.sourceInput.addEventListener('change', function () { + filterActionHandlers(); + }, false); +})(window, window.document); + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ var __webpack_exports__ = (__webpack_exec__("./public/bundles/ibexaadminui/js/scripts/sidebar/extra.actions.js"), __webpack_exec__("./public/bundles/ibexaadminui/js/scripts/filters.action.btns.js"), __webpack_exec__("./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js"), __webpack_exec__("./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/extra.actions.js")); +/******/ } +]); \ No newline at end of file diff --git a/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js b/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js new file mode 100644 index 0000000..b274a62 --- /dev/null +++ b/public/assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js @@ -0,0 +1,62 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([["ibexa-connector-ai-action-configuration-view-js"],{ + +/***/ "./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js": +/*!***********************************************************************!*\ + !*** ./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js ***! + \***********************************************************************/ +/***/ (() => { + +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +(function (global, doc) { + var toggleForms = doc.querySelectorAll('.ibexa-toggle-btn-state'); + toggleForms.forEach(function (toggleForm) { + var checkboxes = _toConsumableArray(toggleForm.querySelectorAll('.ibexa-table__cell--has-checkbox .ibexa-input--checkbox')); + var buttonRemove = doc.querySelector(toggleForm.dataset.toggleButtonId); + if (!buttonRemove) { + return; + } + var toggleButtonState = function toggleButtonState() { + var isAnythingSelected = checkboxes.some(function (el) { + return el.checked; + }); + buttonRemove.disabled = !isAnythingSelected; + }; + toggleButtonState(); + checkboxes.forEach(function (checkbox) { + return checkbox.addEventListener('change', toggleButtonState, false); + }); + }); +})(window, window.document); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/details.language.switcher.js": +/*!***********************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/details.language.switcher.js ***! + \***********************************************************************************************/ +/***/ (() => { + +(function (global, doc) { + var languageSwitcherForm = doc.querySelector('.ibexa-raw-content-title__language-form'); + if (!languageSwitcherForm) { + return; + } + var languageSwitcherDropdownSourceInput = languageSwitcherForm.querySelector('.ibexa-dropdown__source select'); + languageSwitcherDropdownSourceInput.addEventListener('change', function () { + return languageSwitcherForm.submit(); + }, false); +})(window, window.document); + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/details.language.switcher.js"), __webpack_exec__("./public/bundles/ibexaadminui/js/scripts/button.state.toggle.js")); +/******/ } +]); \ No newline at end of file diff --git a/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.css b/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.css new file mode 100644 index 0000000..6f06326 --- /dev/null +++ b/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.css @@ -0,0 +1,6 @@ +/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/@symfony/webpack-encore/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/ibexa-connector-ai-view.scss ***! + \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +.ibexa-ai-action-view__settings .ibexa-details { + margin-top: 0; +} diff --git a/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.js b/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.js new file mode 100644 index 0000000..09d1bdf --- /dev/null +++ b/public/assets/ibexa/build/ibexa-connector-ai-action-view-css.js @@ -0,0 +1,21 @@ +"use strict"; +(self["webpackChunk"] = self["webpackChunk"] || []).push([["ibexa-connector-ai-action-view-css"],{ + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/ibexa-connector-ai-view.scss": +/*!*************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/ibexa-connector-ai-view.scss ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ var __webpack_exports__ = (__webpack_exec__("./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/ibexa-connector-ai-view.scss")); +/******/ } +]); \ No newline at end of file diff --git a/public/assets/ibexa/build/manifest.json b/public/assets/ibexa/build/manifest.json index 791140a..560d735 100644 --- a/public/assets/ibexa/build/manifest.json +++ b/public/assets/ibexa/build/manifest.json @@ -186,6 +186,10 @@ "assets/ibexa/build/ibexa-qualifio-css.js": "/assets/ibexa/build/ibexa-qualifio-css.js", "assets/ibexa/build/ibexa-qualifio-block-css.css": "/assets/ibexa/build/ibexa-qualifio-block-css.css", "assets/ibexa/build/ibexa-qualifio-block-css.js": "/assets/ibexa/build/ibexa-qualifio-block-css.js", + "assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js": "/assets/ibexa/build/ibexa-connector-ai-action-configuration-list-js.js", + "assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js": "/assets/ibexa/build/ibexa-connector-ai-action-configuration-view-js.js", + "assets/ibexa/build/ibexa-connector-ai-action-view-css.css": "/assets/ibexa/build/ibexa-connector-ai-action-view-css.css", + "assets/ibexa/build/ibexa-connector-ai-action-view-css.js": "/assets/ibexa/build/ibexa-connector-ai-action-view-css.js", "assets/ibexa/build/runtime.js": "/assets/ibexa/build/runtime.js", "assets/ibexa/build/images/upload-images.svg": "/assets/ibexa/build/images/upload-images.40d5dc2a.svg", "assets/ibexa/build/images/user_group.svg": "/assets/ibexa/build/images/user_group.82314755.svg", diff --git a/public/assets/richtext/build/ibexa-richtext-onlineeditor-css.css b/public/assets/richtext/build/ibexa-richtext-onlineeditor-css.css index 40826b7..5a0c038 100644 --- a/public/assets/richtext/build/ibexa-richtext-onlineeditor-css.css +++ b/public/assets/richtext/build/ibexa-richtext-onlineeditor-css.css @@ -762,3 +762,226 @@ .ck.ck-reset_all .ibexa-ckeditor-alert--warning .ibexa-ckeditor-alert__close-btn:active .ck-icon, .ck.ck-reset_all .ibexa-ckeditor-alert--warning .ibexa-ckeditor-alert__close-btn:focus-visible .ck-icon { fill: #976828; } +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/@symfony/webpack-encore/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./vendor/ibexa/connector-ai/src/bundle/Resources/public/scss/connector-ai-ckeditor.scss ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +:root { + --ibexa-hover-color: var(--ibexa-hover-color, $ibexa-color-primary); + --ibexa-border-color: var(--ibexa-border-color, $ibexa-color-dark); +} + +@keyframes remove-field { + 100% { + height: 0; + margin-bottom: 0; + opacity: 0; + transform: scale(0); + } +} +@keyframes item-remove-pulse { + 0% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } + 10% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } + 20% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0.625rem #f3f3f6; + } + 100% { + border-color: #f3f3f6; + box-shadow: 0 0 0 0 #f3f3f6; + } +} +@keyframes item-highlight-pulse { + 0% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0 #ecf4ff; + } + 10% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0 #ecf4ff; + } + 20% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0 0 0 0.625rem #ecf4ff; + } + 100% { + border-color: #b3d3ff; + background-color: #ecf4ff; + box-shadow: 0.25rem 0.125rem 1.0625rem 0 rgba(65, 145, 255, 0.05); + } +} +@keyframes spinner-animation { + to { + transform: rotate(1turn); + } +} +.ck-rounded-corners .ibexa-ckeditor-ai-component.ck-dropdown .ck-reset.ck .ck-list .ck-list__item[role=presentation] { + display: flex; + align-items: center; + min-width: 9.375rem; + padding: 0 0.5rem; + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); +} +.ck-rounded-corners .ibexa-ckeditor-ai-component.ck-dropdown .ck-reset.ck .ck-list .ck-list__item[role=presentation] .ck-button { + position: relative; + display: flex; + align-items: center; + align-items: baseline; + width: 100%; + cursor: pointer; + padding: 0.5625rem; + color: #131c26; + font-size: 0.875rem; + text-align: left; + text-decoration: none; + border: none; + border-radius: 0.625rem; + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); +} +.ck-rounded-corners .ibexa-ckeditor-ai-component.ck-dropdown .ck-reset.ck .ck-list .ck-list__item[role=presentation] .ck-button:hover { + background-color: #f3f3f6; + color: #000000; + text-decoration: none; +} +.ck-rounded-corners .ibexa-ckeditor-ai-component.ck-dropdown .ck-reset.ck .ibexa-ckeditor-ai-component__options-footer { + display: flex; + justify-content: space-between; + align-items: center; + border-top: 0.0625rem solid #e0e0e8; + font-size: 0.875rem; + margin: 0 1.0625rem; + padding: 0.5rem 0; + color: #131c26; +} +.ck-rounded-corners .ibexa-ckeditor-ai-component.ck-dropdown .ck-reset.ck .ibexa-ckeditor-ai-component__options-footer .ck-icon { + width: 1rem; + height: 1rem; + cursor: pointer; +} + +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview { + box-shadow: 0 0 1rem 0 rgba(19, 28, 38, 0.15); +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ibexa-ckeditor-balloon-form__header { + position: relative; + padding: 1.25rem 0 0.75rem 0; + margin: 0 1rem 1rem; + border-bottom: 0.0625rem solid #e0e0e8; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ibexa-ckeditor-balloon-form__actions { + padding-bottom: 2rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ibexa-ckeditor-balloon-form__actions .ck.ck-button { + margin-right: 1rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ibexa-ckeditor-balloon-form__close-btn.ck-button { + position: absolute; + min-height: auto; + min-width: auto; + top: 50%; + margin-top: -0.625rem; + margin-right: 0; + right: 0; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ibexa-ckeditor-balloon-form__close-btn.ck-button .ck-icon { + fill: #131c26; + width: 0.75rem; + height: 0.75rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button { + color: #131c26; + font-size: 0.875rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button:hover { + color: #ae1164; + background-color: transparent; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button:hover .ck-icon { + fill: #ae1164; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button:focus { + color: #ae1164; + border-color: #ae1164; + box-shadow: 0 0 0 0.1875rem rgba(174, 17, 100, 0.5); +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button:focus .ibexa-icon { + fill: #ae1164; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button.disabled, .ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button[disabled], .ck.ck-reset_all .ibexa-ckeditor-ai-component-preview .ck-button:disabled { + color: #a0a4a8; + fill: #a0a4a8; + cursor: default; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__input-wrapper { + position: relative; + margin-bottom: -0.5rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__input { + width: 38.75rem; + font-size: 0.875rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__input--generating { + padding-left: 1.75rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__spinner-wrapper { + display: none; + position: absolute; + left: 0.5rem; + top: 0.375rem; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__spinner-wrapper--visible { + display: block; +} +.ck.ck-reset_all .ibexa-ckeditor-ai-component-preview__spinner { + --mask: conic-gradient(rgba(0, 0, 0, 0) 10%, #000000), + linear-gradient(#000000 0 0) content-box; + width: 1rem; + height: 1rem; + padding: 0.125rem; + aspect-ratio: 1; + border-radius: 50%; + background: #ae1164; + -webkit-mask: var(--mask); + mask: var(--mask); + -webkit-mask-composite: source-out; + mask-composite: subtract; + animation: spinner-animation 1s infinite linear; +} + +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input { + padding: 0.5rem; + position: relative; +} +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input .ck.ck-input { + width: 100%; +} +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input .ck.ck-input:placeholder-shown + .ibexa-ckeditor-ai-component-filter-input__clear-btn { + display: none; +} +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input__icon-wrapper .ck.ck-icon { + position: absolute; + right: 1rem; + top: 0.875rem; + width: 1rem; + height: 1rem; + fill: #71767c; +} +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input__clear-btn { + position: absolute; + right: 2.5rem; + top: 0.625rem; + cursor: pointer; +} +.ck-reset.ck .ibexa-ckeditor-ai-component-filter-input__clear-btn .ck.ck-icon { + width: 0.625rem; + height: 0.625rem; + fill: #71767c; +} diff --git a/public/assets/richtext/build/ibexa-richtext-onlineeditor-js.js b/public/assets/richtext/build/ibexa-richtext-onlineeditor-js.js index dd33284..a8638c2 100644 --- a/public/assets/richtext/build/ibexa-richtext-onlineeditor-js.js +++ b/public/assets/richtext/build/ibexa-richtext-onlineeditor-js.js @@ -106255,6 +106255,25 @@ function getDeepestEmptyElementAncestor(schema, element) { return deepestEmptyAncestor; } +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js": +/*!************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getEditLanguageCode: () => (/* binding */ getEditLanguageCode) +/* harmony export */ }); +var getEditLanguageCode = function getEditLanguageCode() { + var _window$document$quer; + return (_window$document$quer = window.document.querySelector('meta[name="LanguageCode"]')) === null || _window$document$quer === void 0 ? void 0 : _window$document$quer.content; +}; + + /***/ }), /***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js": @@ -106358,65 +106377,1306 @@ var setTranslator = function setTranslator(TranslatorInstance) { if (!Translator || forceSet) { Translator = TranslatorInstance; } -}; -var setRootDOMElement = function setRootDOMElement(rootDOMElementParam) { - return rootDOMElement = rootDOMElementParam; -}; -var getAdminUiConfig = function getAdminUiConfig() { - return adminUiConfig; -}; -var getBootstrap = function getBootstrap() { - return bootstrap; -}; -var getFlatpickr = function getFlatpickr() { - return flatpickr; -}; -var getMoment = function getMoment() { - return moment; -}; -var getPopper = function getPopper() { - return Popper; -}; -var getRouting = function getRouting() { - return Routing; -}; -var getTranslator = function getTranslator() { - return Translator; -}; -var getRestInfo = function getRestInfo() { - return restInfo; -}; -var getRootDOMElement = function getRootDOMElement() { - return rootDOMElement; -}; -var isExternalInstance = function isExternalInstance() { - var instanceUrl = restInfo.instanceUrl; - return window.origin !== instanceUrl; -}; +}; +var setRootDOMElement = function setRootDOMElement(rootDOMElementParam) { + return rootDOMElement = rootDOMElementParam; +}; +var getAdminUiConfig = function getAdminUiConfig() { + return adminUiConfig; +}; +var getBootstrap = function getBootstrap() { + return bootstrap; +}; +var getFlatpickr = function getFlatpickr() { + return flatpickr; +}; +var getMoment = function getMoment() { + return moment; +}; +var getPopper = function getPopper() { + return Popper; +}; +var getRouting = function getRouting() { + return Routing; +}; +var getTranslator = function getTranslator() { + return Translator; +}; +var getRestInfo = function getRestInfo() { + return restInfo; +}; +var getRootDOMElement = function getRootDOMElement() { + return rootDOMElement; +}; +var isExternalInstance = function isExternalInstance() { + var instanceUrl = restInfo.instanceUrl; + return window.origin !== instanceUrl; +}; + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper.js": +/*!*********************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getIconPath: () => (/* binding */ getIconPath) +/* harmony export */ }); +/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); + +var getIconPath = function getIconPath(path, iconSet) { + var adminUiConfig = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getAdminUiConfig)(); + if (!iconSet) { + iconSet = adminUiConfig.iconPaths.defaultIconSet; + } + var iconSetPath = adminUiConfig.iconPaths.iconSets[iconSet]; + return "".concat(iconSetPath, "#").concat(path); +}; + + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js": +/*!*****************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ showErrorNotification: () => (/* binding */ showErrorNotification), +/* harmony export */ showInfoNotification: () => (/* binding */ showInfoNotification), +/* harmony export */ showNotification: () => (/* binding */ showNotification), +/* harmony export */ showSuccessNotification: () => (/* binding */ showSuccessNotification), +/* harmony export */ showWarningNotification: () => (/* binding */ showWarningNotification) +/* harmony export */ }); +/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); + +var NOTIFICATION_INFO_LABEL = 'info'; +var NOTIFICATION_SUCCESS_LABEL = 'success'; +var NOTIFICATION_WARNING_LABEL = 'warning'; +var NOTIFICATION_ERROR_LABEL = 'error'; + +/** + * Dispatches notification event + * + * @function showNotification + * @param {Object} detail + * @param {String} detail.message + * @param {String} detail.label + * @param {Function} [detail.onShow] to be called after notification Node was added + * @param {Object} detail.rawPlaceholdersMap + */ +var showNotification = function showNotification(detail) { + var rootDOMElement = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getRootDOMElement)(); + var event = new CustomEvent('ibexa-notify', { + detail: detail + }); + rootDOMElement.dispatchEvent(event); +}; + +/** + * Dispatches info notification event + * + * @function showInfoNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showInfoNotification = function showInfoNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_INFO_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches success notification event + * + * @function showSuccessNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showSuccessNotification = function showSuccessNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_SUCCESS_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches warning notification event + * + * @function showWarningNotification + * @param {String} message + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showWarningNotification = function showWarningNotification(message, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return showNotification({ + message: message, + label: NOTIFICATION_WARNING_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + +/** + * Dispatches error notification event + * + * @function showErrorNotification + * @param {(string | Error)} error + * @param {Function} [onShow] to be called after notification Node was added + * @param {Object} rawPlaceholdersMap + */ +var showErrorNotification = function showErrorNotification(error, onShow) { + var rawPlaceholdersMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var isErrorObj = error instanceof Error; + var message = isErrorObj ? error.message : error; + showNotification({ + message: message, + label: NOTIFICATION_ERROR_LABEL, + onShow: onShow, + rawPlaceholdersMap: rawPlaceholdersMap + }); +}; + + +/***/ }), + +/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js": +/*!************************************************************************************************!*\ + !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getJsonFromResponse: () => (/* binding */ getJsonFromResponse), +/* harmony export */ getRequestHeaders: () => (/* binding */ getRequestHeaders), +/* harmony export */ getRequestMode: () => (/* binding */ getRequestMode), +/* harmony export */ getStatusFromResponse: () => (/* binding */ getStatusFromResponse), +/* harmony export */ getTextFromResponse: () => (/* binding */ getTextFromResponse) +/* harmony export */ }); +/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } + +var getErrorMessage = function getErrorMessage(response) { + var responseErrorMessage = response.json().then(function (jsonResponse) { + var _jsonResponse$ErrorMe; + return (_jsonResponse$ErrorMe = jsonResponse.ErrorMessage) === null || _jsonResponse$ErrorMe === void 0 ? void 0 : _jsonResponse$ErrorMe.errorMessage; + }); + return responseErrorMessage; +}; +var handleRequest = /*#__PURE__*/function () { + var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) { + var Translator, responseErrorMessage, errorMessage, defaultErrorMsg; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (response.ok) { + _context.next = 8; + break; + } + Translator = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getTranslator)(); + _context.next = 4; + return getErrorMessage(response); + case 4: + responseErrorMessage = _context.sent; + errorMessage = responseErrorMessage || response.statusText; + defaultErrorMsg = Translator.trans(/*@Desc("Something went wrong. Try to refresh the page or contact your administrator.")*/'error.request.default_msg'); + throw Error(errorMessage || defaultErrorMsg); + case 8: + return _context.abrupt("return", response); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function handleRequest(_x) { + return _ref.apply(this, arguments); + }; +}(); +var getJsonFromResponse = /*#__PURE__*/function () { + var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context2.sent; + return _context2.abrupt("return", parsedRequest.json()); + case 4: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return function getJsonFromResponse(_x2) { + return _ref2.apply(this, arguments); + }; +}(); +var getTextFromResponse = /*#__PURE__*/function () { + var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context3.sent; + return _context3.abrupt("return", parsedRequest.text()); + case 4: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return function getTextFromResponse(_x3) { + return _ref3.apply(this, arguments); + }; +}(); +var getStatusFromResponse = /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(response) { + var parsedRequest; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return handleRequest(response); + case 2: + parsedRequest = _context4.sent; + return _context4.abrupt("return", parsedRequest.status); + case 4: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return function getStatusFromResponse(_x4) { + return _ref4.apply(this, arguments); + }; +}(); +var getRequestMode = function getRequestMode(_ref5) { + var instanceUrl = _ref5.instanceUrl; + return window.location.origin === instanceUrl ? 'same-origin' : 'cors'; +}; +var getRequestHeaders = function getRequestHeaders(_ref6) { + var token = _ref6.token, + siteaccess = _ref6.siteaccess, + accessToken = _ref6.accessToken, + extraHeaders = _ref6.extraHeaders; + if (accessToken) { + return _objectSpread(_objectSpread({ + Authorization: "Bearer ".concat(accessToken) + }, siteaccess && { + 'X-Siteaccess': siteaccess + }), extraHeaders); + } + return _objectSpread(_objectSpread(_objectSpread({}, token && { + 'X-CSRF-Token': token + }), siteaccess && { + 'X-Siteaccess': siteaccess + }), extraHeaders); +}; + + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-editing.js": +/*!**********************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-editing.js ***! + \**********************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core/src/plugin */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-core/src/plugin.js"); +/* harmony import */ var _insert_text_command__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./insert-text-command */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/insert-text-command.js"); +/* harmony import */ var _replace_text_command__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./replace-text-command */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/replace-text-command.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + + + +var IbexaAIImproveTextEditing = /*#__PURE__*/function (_Plugin) { + function IbexaAIImproveTextEditing() { + _classCallCheck(this, IbexaAIImproveTextEditing); + return _callSuper(this, IbexaAIImproveTextEditing, arguments); + } + _inherits(IbexaAIImproveTextEditing, _Plugin); + return _createClass(IbexaAIImproveTextEditing, [{ + key: "init", + value: function init() { + this.editor.commands.add('ibexaInsertRefinedText', new _insert_text_command__WEBPACK_IMPORTED_MODULE_1__["default"](this.editor)); + this.editor.commands.add('ibexaReplaceWithRefinedText', new _replace_text_command__WEBPACK_IMPORTED_MODULE_2__["default"](this.editor)); + } + }], [{ + key: "requires", + get: function get() { + return []; + } + }]); +}(_ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IbexaAIImproveTextEditing); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-ui.js": +/*!*****************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-ui.js ***! + \*****************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core/src/plugin */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-core/src/plugin.js"); +/* harmony import */ var _ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/index.js"); +/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-utils/src/index.js"); +/* harmony import */ var _ckeditor_ckeditor5_clipboard_src_utils_plaintexttohtml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml.js"); +/* harmony import */ var _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view */ "./vendor/ibexa/fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/request.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_notification_helper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/notification.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_content_helper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/content.helper.js"); +/* harmony import */ var _common_dropdown_filter_input_dropdown_filter_input__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/dropdown-filter-input/dropdown-filter-input */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/common/dropdown-filter-input/dropdown-filter-input.js"); +/* harmony import */ var _ui_dropdown_footer_view__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/dropdown-footer-view */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/dropdown-footer-view.js"); +/* harmony import */ var _ui_preview_view__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui/preview-view */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/preview-view.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + + + + + + + + + + + + +var REQUEST_HEADERS = { + Accept: 'application/vnd.ibexa.api.ai.RefineText+json', + 'Content-Type': 'application/vnd.ibexa.api.ai.RefineText+json' +}; +var IbexaAIImproveTextUI = /*#__PURE__*/function (_Plugin) { + function IbexaAIImproveTextUI(props) { + var _this; + _classCallCheck(this, IbexaAIImproveTextUI); + _this = _callSuper(this, IbexaAIImproveTextUI, [props]); + _this.configName = 'refine_text'; + _this.balloon = _this.editor.plugins.get('ContextualBalloon'); + _this.previewView = _this.createPreviewView(); + _this.set('mainBtnEnabled', false); + _this.replaceText = _this.replaceText.bind(_this); + return _this; + } + _inherits(IbexaAIImproveTextUI, _Plugin); + return _createClass(IbexaAIImproveTextUI, [{ + key: "transformToModel", + value: function transformToModel(refinedText) { + var rawHtml = (0,_ckeditor_ckeditor5_clipboard_src_utils_plaintexttohtml__WEBPACK_IMPORTED_MODULE_3__["default"])(refinedText); + var content = this.editor.data.htmlProcessor.toView(rawHtml); + var model = this.editor.data.toModel(content); + return model; + } + }, { + key: "createPreviewView", + value: function createPreviewView() { + var _this2 = this; + var previewView = new _ui_preview_view__WEBPACK_IMPORTED_MODULE_11__["default"]({ + locale: this.editor.locale + }); + this.listenTo(previewView, 'ibexa:replace', function () { + var model = _this2.transformToModel(previewView.refinedText); + _this2.replaceText(model); + _this2.hidePreview(); + }); + this.listenTo(previewView, 'ibexa:insert-below', function () { + var model = _this2.transformToModel(previewView.refinedText); + _this2.insertText(model); + _this2.hidePreview(); + }); + this.listenTo(previewView, 'ibexa:regenerate', function () { + _this2.previousRefinedText = previewView.refinedText; + _this2.fetchData(previewView.actionId, previewView.originalText); + }); + this.listenTo(previewView, 'ibexa:cancel', function () { + _this2.cancelGenerating(); + }); + this.listenTo(previewView, 'ibexa:hide-form', function () { + _this2.hidePreview(); + }); + return previewView; + } + }, { + key: "getBalloonPositionData", + value: function getBalloonPositionData() { + var view = this.editor.editing.view; + var viewDocument = view.document; + var range = viewDocument.selection.getFirstRange(); + return { + target: view.domConverter.viewRangeToDom(range) + }; + } + }, { + key: "showPreview", + value: function showPreview(id, originalText) { + var actionConfiguration = this.actionConfigurations.find(function (_ref) { + var identifier = _ref.identifier; + return identifier === id; + }); + this.previousRefinedText = ''; + this.previewView.set('actionId', id); + this.previewView.set('actionName', actionConfiguration.name); + this.previewView.set('originalText', originalText); + this.balloon.add({ + view: this.previewView, + position: this.getBalloonPositionData() + }); + this.balloon.updatePosition(this.getBalloonPositionData()); + this.refreshMainBtnState(); + } + }, { + key: "hidePreview", + value: function hidePreview() { + this.balloon.remove(this.previewView); + this.editor.editing.view.focus(); + this.refreshMainBtnState(); + } + }, { + key: "insertText", + value: function insertText(refinedText, insertPosition) { + this.editor.execute('ibexaInsertRefinedText', { + refinedText: refinedText, + insertPosition: insertPosition + }); + } + }, { + key: "replaceText", + value: function replaceText(refinedText) { + this.editor.execute('ibexaReplaceWithRefinedText', { + refinedText: refinedText + }); + } + }, { + key: "cancelGenerating", + value: function cancelGenerating() { + this.abortController.abort(); + this.previewView.set('refinedText', this.previousRefinedText); + this.editor.editing.view.focus(); + } + }, { + key: "fetchData", + value: function fetchData(id, originalText) { + var _this3 = this; + this.abortController = new AbortController(); + var endpointURL = "/api/ibexa/v2/ai/action/execute/".concat(id); + var _getRestInfo = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_5__.getRestInfo)(), + token = _getRestInfo.token, + siteaccess = _getRestInfo.siteaccess, + accessToken = _getRestInfo.accessToken; + var body = JSON.stringify({ + RefineText: { + Text: { + text: originalText + }, + RuntimeContext: { + languageCode: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_content_helper__WEBPACK_IMPORTED_MODULE_8__.getEditLanguageCode)() + } + } + }); + var signal = this.abortController.signal; + var request = new Request(endpointURL, { + method: 'POST', + headers: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_6__.getRequestHeaders)({ + token: token, + siteaccess: siteaccess, + accessToken: accessToken, + extraHeaders: REQUEST_HEADERS + }), + body: body, + mode: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_6__.getRequestMode)({ + instanceUrl: endpointURL + }) + }); + this.previewView.set('refinedText', null); + this.editor.editing.view.focus(); + return fetch(request, { + signal: signal + }).then(_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_request_helper__WEBPACK_IMPORTED_MODULE_6__.getJsonFromResponse).then(function (response) { + var refinedText = response.RefineText.Text.text[0]; + _this3.previewView.set('refinedText', refinedText); + })["catch"](function (error) { + if (error.name === 'AbortError') { + return; + } + (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_notification_helper__WEBPACK_IMPORTED_MODULE_7__.showErrorNotification)(error); + }); + } + }, { + key: "shouldShowItem", + value: function shouldShowItem(itemFilterValue, searchedTerm) { + var itemFilterValueLowerCase = itemFilterValue.toLowerCase(); + var searchedTermLowerCase = searchedTerm.toLowerCase(); + return itemFilterValueLowerCase.includes(searchedTermLowerCase); + } + }, { + key: "createDropdownList", + value: function createDropdownList(actionConfigurations) { + var _this4 = this; + var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var itemsList = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_2__.Collection(); + actionConfigurations.forEach(function (actionConfiguration) { + if (!_this4.shouldShowItem(actionConfiguration.name, query)) { + return; + } + var itemList = { + type: 'button', + model: new _ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_1__.Model({ + label: actionConfiguration.name, + id: actionConfiguration.identifier, + withText: true + }) + }; + itemsList.add(itemList); + }); + return itemsList; + } + }, { + key: "createDropdownView", + value: function createDropdownView(locale) { + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_5__.getTranslator)(); + var dropdownView = (0,_ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_1__.createDropdown)(locale); + var itemsList = this.createDropdownList(this.actionConfigurations); + var filterInputView = new _common_dropdown_filter_input_dropdown_filter_input__WEBPACK_IMPORTED_MODULE_9__["default"](locale); + var footerView = new _ui_dropdown_footer_view__WEBPACK_IMPORTED_MODULE_10__["default"]({ + locale: locale + }); + dropdownView.extendTemplate({ + attributes: { + "class": 'ibexa-ckeditor-ai-component' + } + }); + dropdownView.footerView = footerView; + dropdownView.buttonView.iconView = new _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_4__["default"](); + dropdownView.buttonView.set({ + label: Translator.trans(/*@Desc("Improve text")*/'ck_editor.richtext.toolbar_btn', {}, 'ck_editor'), + tooltip: true, + icon: window.ibexa.helpers.icon.getIconPath('explore') + }); + dropdownView.panelView.children.add(filterInputView); + dropdownView.panelView.extendTemplate({ + attributes: { + "class": 'ck-reset_all-excluded' + } + }); + dropdownView.filterInputView = filterInputView; + (0,_ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_1__.addListToDropdown)(dropdownView, itemsList); + dropdownView.once('change:isOpen', function () { + dropdownView.panelView.children.add(footerView); + }, { + priority: 'highest' + }); + return dropdownView; + } + }, { + key: "getSelectedText", + value: function getSelectedText() { + var range = this.editor.model.document.selection.getFirstRange(); + var requestText = ''; + var _iterator = _createForOfIteratorHelper(range.getItems()), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _item$data; + var item = _step.value; + requestText += "".concat((_item$data = item.data) !== null && _item$data !== void 0 ? _item$data : '', " "); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return requestText; + } + }, { + key: "moveFooterViewToBottom", + value: function moveFooterViewToBottom(dropdownView) { + var footerIndex = dropdownView.panelView.children.getIndex(dropdownView.footerView); + dropdownView.panelView.children.remove(footerIndex); + dropdownView.panelView.children.add(dropdownView.footerView); + } + }, { + key: "refreshDropdownContent", + value: function refreshDropdownContent(dropdownView, query) { + var _this5 = this; + var filteredItemsList = this.createDropdownList(this.actionConfigurations, query); + var listIndex = dropdownView.panelView.children.getIndex(dropdownView.listView); + dropdownView.panelView.children.remove(listIndex); + (0,_ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_1__.addListToDropdown)(dropdownView, filteredItemsList); + if (dropdownView.isOpen) { + this.moveFooterViewToBottom(dropdownView); + } else { + dropdownView.once('change:isOpen', function () { + _this5.moveFooterViewToBottom(dropdownView); + }, { + priority: 'highest' + }); + } + } + }, { + key: "bindDropdownEvents", + value: function bindDropdownEvents(dropdownView) { + var _this6 = this; + dropdownView.on('change:isOpen', function (event, name, isOpen) { + if (!isOpen) { + dropdownView.filterInputView.clearInput(); + } + }, { + priority: 'highest' + }); + dropdownView.on('execute', function (eventInfo) { + var id = eventInfo.source.id; + var requestText = _this6.getSelectedText(); + _this6.showPreview(id, requestText, true); + _this6.fetchData(id, requestText); + }); + dropdownView.bind('isEnabled').to(this, 'mainBtnEnabled'); + } + }, { + key: "bindSearchEvents", + value: function bindSearchEvents(dropdownView) { + var _this7 = this; + dropdownView.filterInputView.on('input', function (event) { + _this7.refreshDropdownContent(dropdownView, event.source.element.querySelector('input').value); + }); + } + }, { + key: "getMainBtnState", + value: function getMainBtnState() { + var selection = this.getSelectedText(); + var hasSelection = selection !== ''; + var isPreviewVisible = this.balloon.hasView(this.previewView); + return hasSelection && !isPreviewVisible; + } + }, { + key: "refreshMainBtnState", + value: function refreshMainBtnState() { + this.set('mainBtnEnabled', this.getMainBtnState()); + } + }, { + key: "init", + value: function init() { + var _this8 = this; + var aiConfigElement = document.querySelector("[data-ai-config-name=\"".concat(this.configName, "\"]")); + this.actionConfigurations = JSON.parse(aiConfigElement.dataset.aiConfig).actionConfigurations; + this.editor.ui.componentFactory.add('ibexaAIImproveText', function (locale) { + var dropdownView = _this8.createDropdownView(locale); + _this8.bindDropdownEvents(dropdownView); + _this8.bindSearchEvents(dropdownView); + _this8.editor.model.document.selection.on('change:range', function () { + _this8.refreshMainBtnState(); + }); + return dropdownView; + }); + } + }]); +}(_ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IbexaAIImproveTextUI); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text.js": +/*!**************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text.js ***! + \**************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core/src/plugin */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-core/src/plugin.js"); +/* harmony import */ var _ai_improve_text_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ai-improve-text-ui */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-ui.js"); +/* harmony import */ var _ai_improve_text_editing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ai-improve-text-editing */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text-editing.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + + + +var IbexaAIImproveText = /*#__PURE__*/function (_Plugin) { + function IbexaAIImproveText() { + _classCallCheck(this, IbexaAIImproveText); + return _callSuper(this, IbexaAIImproveText, arguments); + } + _inherits(IbexaAIImproveText, _Plugin); + return _createClass(IbexaAIImproveText, null, [{ + key: "requires", + get: function get() { + return [_ai_improve_text_ui__WEBPACK_IMPORTED_MODULE_1__["default"], _ai_improve_text_editing__WEBPACK_IMPORTED_MODULE_2__["default"]]; + } + }]); +}(_ckeditor_ckeditor5_core_src_plugin__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IbexaAIImproveText); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/insert-text-command.js": +/*!******************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/insert-text-command.js ***! + \******************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_core_src_command__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core/src/command */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-core/src/command.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + +var IbexaInsertTextCommand = /*#__PURE__*/function (_Command) { + function IbexaInsertTextCommand() { + _classCallCheck(this, IbexaInsertTextCommand); + return _callSuper(this, IbexaInsertTextCommand, arguments); + } + _inherits(IbexaInsertTextCommand, _Command); + return _createClass(IbexaInsertTextCommand, [{ + key: "execute", + value: function execute(_ref) { + var _this = this; + var refinedText = _ref.refinedText; + var model = this.editor.model; + model.change(function (writer) { + var paragraphEndPosition = model.document.selection.getLastPosition(); + writer.setSelection(paragraphEndPosition); + _this.editor.execute('enter'); + var newParagraphStartPosition = model.document.selection.getLastPosition(); + var _model$insertContent = model.insertContent(refinedText, newParagraphStartPosition), + newParagraphEndPosition = _model$insertContent.end; + _this.editor.execute('enter'); + writer.setSelection(newParagraphEndPosition); + }); + } + }]); +}(_ckeditor_ckeditor5_core_src_command__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IbexaInsertTextCommand); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/replace-text-command.js": +/*!*******************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/replace-text-command.js ***! + \*******************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_core_src_command__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core/src/command */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-core/src/command.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + +var IbexaReplaceTextCommand = /*#__PURE__*/function (_Command) { + function IbexaReplaceTextCommand() { + _classCallCheck(this, IbexaReplaceTextCommand); + return _callSuper(this, IbexaReplaceTextCommand, arguments); + } + _inherits(IbexaReplaceTextCommand, _Command); + return _createClass(IbexaReplaceTextCommand, [{ + key: "execute", + value: function execute(_ref) { + var refinedText = _ref.refinedText; + var model = this.editor.model; + var selection = model.document.selection; + model.change(function (writer) { + var position = selection.getFirstPosition(); + model.deleteContent(selection); + var _model$insertContent = model.insertContent(refinedText, position), + positionAfter = _model$insertContent.end; + writer.setSelection(positionAfter); + }); + } + }]); +}(_ckeditor_ckeditor5_core_src_command__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IbexaReplaceTextCommand); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/dropdown-footer-view.js": +/*!**********************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/dropdown-footer-view.js ***! + \**********************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_ui_src_view__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui/src/view */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/view.js"); +/* harmony import */ var _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view */ "./vendor/ibexa/fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + + + +var DropdownFooterView = /*#__PURE__*/function (_View) { + function DropdownFooterView(props) { + var _this; + _classCallCheck(this, DropdownFooterView); + _this = _callSuper(this, DropdownFooterView, [props]); + _this.locale = props.locale; + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__.getTranslator)(); + var Routing = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__.getRouting)(); + _this.setTemplate({ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component__options-footer ck-reset_all-excluded' + }, + children: [{ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component__options-footer-title' + }, + children: [Translator.trans(/*@Desc("Go to AI actions")*/'ck_editor.go_to_ai_actions.label', {}, 'ck_editor')] + }, { + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component__options-footer-action' + }, + children: [{ + tag: 'a', + attributes: { + href: Routing.generate('ibexa.connector_ai.action_configuration.list'), + target: '_blank' + }, + children: [_this.createGoToActionsIcon()] + }] + }] + }); + return _this; + } + _inherits(DropdownFooterView, _View); + return _createClass(DropdownFooterView, [{ + key: "createGoToActionsIcon", + value: function createGoToActionsIcon() { + var iconView = new _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_1__["default"](); + iconView.content = window.ibexa.helpers.icon.getIconPath('open-newtab'); + return iconView; + } + }]); +}(_ckeditor_ckeditor5_ui_src_view__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownFooterView); + +/***/ }), + +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/preview-view.js": +/*!**************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ui/preview-view.js ***! + \**************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ckeditor_ckeditor5_ui_src_view__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui/src/view */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/view.js"); +/* harmony import */ var _ckeditor_ckeditor5_ui_src_button_buttonview__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui/src/button/buttonview */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/button/buttonview.js"); +/* harmony import */ var _ckeditor_ckeditor5_ui_src_textarea_textareaview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui/src/textarea/textareaview */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/textarea/textareaview.js"); +/* harmony import */ var _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_button_view_button_view__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/button-view/button-view */ "./vendor/ibexa/fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/button-view/button-view.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } + + + + + +var PreviewView = /*#__PURE__*/function (_View) { + function PreviewView(props) { + var _this; + _classCallCheck(this, PreviewView); + _this = _callSuper(this, PreviewView, [props]); + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_4__.getTranslator)(); + var bind = _this.bindTemplate; + _this.locale = props.locale; + _this.set('actionName', ''); + _this.set('originalText', ''); + _this.set('refinedText', null); + _this.set('isGenerating', true); + _this.set('isSubmitDisabled', true); + _this.bind('isGenerating').to(_this, 'refinedText', function (value) { + return value === null; + }); + _this.bind('isSubmitDisabled').to(_this, 'refinedText', function (value) { + return value === null || value === ''; + }); + _this.refinedTextareaView = _this.createRefinedTextareaView(); + _this.replaceBtn = _this.createButton(Translator.trans(/*@Desc("Replace")*/'ck_editor.richtext.preview.action.replace', {}, 'ck_editor'), 'ck-button-save', 'ibexa:replace'); + _this.insertBelowBtn = _this.createButton(Translator.trans(/*@Desc("Insert below")*/'ck_editor.richtext.preview.action.insert_below', {}, 'ck_editor'), '', 'ibexa:insert-below'); + _this.regenerateBtn = _this.createButton(Translator.trans(/*@Desc("Try again")*/'ck_editor.richtext.preview.action.try_again', {}, 'ck_editor'), '', 'ibexa:regenerate'); + _this.cancelBtn = _this.createButton(Translator.trans(/*@Desc("Stop")*/'ck_editor.richtext.preview.action.cancel', {}, 'ck_editor'), '', 'ibexa:cancel'); + _this.replaceBtn.extendTemplate({ + attributes: { + disabled: bind.to('isSubmitDisabled') + } + }); + _this.insertBelowBtn.extendTemplate({ + attributes: { + disabled: bind.to('isSubmitDisabled') + } + }); + _this.regenerateBtn.extendTemplate({ + attributes: { + disabled: bind.to('isGenerating') + } + }); + _this.cancelBtn.extendTemplate({ + attributes: { + disabled: bind.to('isGenerating', function (value) { + return !value; + }) + } + }); + _this.setTemplate({ + tag: 'div', + attributes: { + "class": 'ck-reset_all-excluded ibexa-ckeditor-balloon-form ibexa-ckeditor-ai-component-preview' + }, + children: [{ + tag: 'form', + attributes: { + tabindex: '-1' + }, + children: [{ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-balloon-form__header' + }, + children: [{ + text: bind.to('actionName', function (actionName) { + return Translator.trans(/*@Desc("AI Assistant: %name%")*/'ck_editor.richtext.preview.header', { + name: actionName + }, 'ck_editor'); + }) + }, _this.createCloseBtn()] + }, { + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-balloon-form__fields' + }, + children: [{ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component-preview__input-wrapper' + }, + children: [_this.refinedTextareaView, { + tag: 'div', + attributes: { + "class": ['ibexa-ckeditor-ai-component-preview__spinner-wrapper', bind["if"]('isGenerating', 'ibexa-ckeditor-ai-component-preview__spinner-wrapper--visible')] + }, + children: [{ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component-preview__spinner' + } + }] + }] + }] + }, { + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-balloon-form__actions' + }, + children: [_this.replaceBtn, _this.insertBelowBtn, _this.regenerateBtn, _this.cancelBtn] + }] + }] + }); + return _this; + } + _inherits(PreviewView, _View); + return _createClass(PreviewView, [{ + key: "createRefinedTextareaView", + value: function createRefinedTextareaView() { + var _this2 = this; + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_4__.getTranslator)(); + var textareaView = new _ckeditor_ckeditor5_ui_src_textarea_textareaview__WEBPACK_IMPORTED_MODULE_2__["default"](); + var bind = this.bindTemplate; + textareaView.set({ + maxRows: 10, + minRows: 10 + }); + textareaView.extendTemplate({ + attributes: { + "class": ['ibexa-ckeditor-ai-component-preview__input', bind["if"]('isGenerating', 'ibexa-ckeditor-ai-component-preview__input--generating')] + } + }); + textareaView.bind('value').to(this, 'isGenerating', function (value) { + if (value) { + return Translator.trans(/*@Desc("AI is generating...")*/'ck_editor.richtext.generating_msg', {}, 'ck_editor'); + } + return _this2.refinedText; + }); + textareaView.bind('isReadOnly').to(this, 'isGenerating'); + textareaView.on('input', function (event) { + _this2.set('refinedText', event.source.element.value); + }); + return textareaView; + } + }, { + key: "createButton", + value: function createButton(label, className, eventName) { + var button = new _ckeditor_ckeditor5_ui_src_button_buttonview__WEBPACK_IMPORTED_MODULE_1__["default"](this.locale); + button.set({ + label: label, + withText: true + }); + button.extendTemplate({ + attributes: { + "class": className + } + }); + if (eventName) { + button.delegate('execute').to(this, eventName); + } + return button; + } + }, { + key: "createCloseBtn", + value: function createCloseBtn() { + var buttonView = new _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_button_view_button_view__WEBPACK_IMPORTED_MODULE_3__["default"](this.locale); + buttonView.set({ + "class": 'ibexa-ckeditor-balloon-form__close-btn', + icon: window.ibexa.helpers.icon.getIconPath('discard') + }); + buttonView.delegate('execute').to(this, 'ibexa:hide-form'); + return buttonView; + } + }]); +}(_ckeditor_ckeditor5_ui_src_view__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PreviewView); /***/ }), -/***/ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper.js": -/*!*********************************************************************************************!*\ - !*** ./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper.js ***! - \*********************************************************************************************/ +/***/ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/common/dropdown-filter-input/dropdown-filter-input.js": +/*!*********************************************************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/common/dropdown-filter-input/dropdown-filter-input.js ***! + \*********************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getIconPath: () => (/* binding */ getIconPath) +/* harmony export */ "default": () => (/* binding */ DropdownFilterInputView) /* harmony export */ }); -/* harmony import */ var _context_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +/* harmony import */ var _ckeditor_ckeditor5_ui_src_inputtext_inputtextview__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui/src/inputtext/inputtextview */ "./public/bundles/ibexaadminuiassets/vendors/@ckeditor/ckeditor5-ui/src/inputtext/inputtextview.js"); +/* harmony import */ var _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view */ "./vendor/ibexa/fieldtype-richtext/src/bundle/Resources/public/js/CKEditor/common/icon-view/icon-view.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper.js"); +/* harmony import */ var _ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_icon_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper */ "./vendor/ibexa/admin-ui/src/bundle/Resources/public/js/scripts/helpers/icon.helper.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } -var getIconPath = function getIconPath(path, iconSet) { - var adminUiConfig = (0,_context_helper__WEBPACK_IMPORTED_MODULE_0__.getAdminUiConfig)(); - if (!iconSet) { - iconSet = adminUiConfig.iconPaths.defaultIconSet; + + + +var DropdownFilterInputView = /*#__PURE__*/function (_InputTextView) { + function DropdownFilterInputView(locale) { + var _this; + _classCallCheck(this, DropdownFilterInputView); + _this = _callSuper(this, DropdownFilterInputView, [locale]); + var Translator = (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_context_helper__WEBPACK_IMPORTED_MODULE_2__.getTranslator)(); + var searchIconView = new _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_1__["default"](); + var clearIconView = new _fieldtype_richtext_src_bundle_Resources_public_js_CKEditor_common_icon_view_icon_view__WEBPACK_IMPORTED_MODULE_1__["default"](); + searchIconView.set({ + content: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_icon_helper__WEBPACK_IMPORTED_MODULE_3__.getIconPath)('search') + }); + clearIconView.set({ + content: (0,_ibexa_admin_ui_src_bundle_Resources_public_js_scripts_helpers_icon_helper__WEBPACK_IMPORTED_MODULE_3__.getIconPath)('discard') + }); + var _this2 = _this, + bindTemplate = _this2.bindTemplate; + _this.setTemplate({ + tag: 'div', + attributes: { + "class": 'ibexa-ckeditor-ai-component-filter-input' + }, + children: [{ + tag: 'input', + attributes: { + type: 'text', + "class": ['ck', 'ck-input', 'ck-input-text', bindTemplate["if"]('isFocused', 'ck-input_focused'), bindTemplate["if"]('isEmpty', 'ck-input-text_empty'), bindTemplate["if"]('hasError', 'ck-error')], + id: bindTemplate.to('id'), + placeholder: Translator.trans(/*@Desc("Search...")*/'ck_editor.dropdown.filter.placeholder', {}, 'ck_editor'), + readonly: bindTemplate.to('isReadOnly'), + 'aria-invalid': bindTemplate["if"]('hasError', true), + 'aria-describedby': bindTemplate.to('ariaDescribedById') + }, + on: { + input: bindTemplate.to('input'), + change: bindTemplate.to(_this._updateIsEmpty.bind(_this)) + } + }, { + tag: 'span', + attributes: { + "class": ['ibexa-ckeditor-ai-component-filter-input__clear-btn'] + }, + children: [clearIconView], + on: { + click: bindTemplate.to(function () { + _this.clearInput(); + }) + } + }, { + tag: 'span', + attributes: { + "class": ['ibexa-ckeditor-ai-component-filter-input__icon-wrapper'] + }, + children: [searchIconView] + }] + }); + return _this; } - var iconSetPath = adminUiConfig.iconPaths.iconSets[iconSet]; - return "".concat(iconSetPath, "#").concat(path); -}; + _inherits(DropdownFilterInputView, _InputTextView); + return _createClass(DropdownFilterInputView, [{ + key: "clearInput", + value: function clearInput() { + this.element.querySelector('input').value = ''; + this.fire('input'); + } + }]); +}(_ckeditor_ckeditor5_ui_src_inputtext_inputtextview__WEBPACK_IMPORTED_MODULE_0__["default"]); /***/ }), @@ -130963,6 +132223,7 @@ __webpack_require__.r(__webpack_exports__); // This entry needs to be wrapped in an IIFE because it needs to be in strict mode. (() => { "use strict"; +var __webpack_exports__ = {}; /*!************************************************************************************************!*\ !*** ./vendor/ibexa/connector-qualifio/src/bundle/Resources/public/js/CKEditor/measurement.js ***! \************************************************************************************************/ @@ -131003,5 +132264,19 @@ __webpack_require__.r(__webpack_exports__); })(window, document, window.ibexa); })(); +// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. +(() => { +"use strict"; +/*!**********************************************************************************************!*\ + !*** ./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai.improve.text.js ***! + \**********************************************************************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _ai_improve_text_ai_improve_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ai-improve-text/ai-improve-text */ "./vendor/ibexa/connector-ai/src/bundle/Resources/public/js/CKEditor/ai-improve-text/ai-improve-text.js"); + +(function (global, doc, ibexa) { + ibexa.addConfig('richText.CKEditor.extraPlugins', [_ai_improve_text_ai_improve_text__WEBPACK_IMPORTED_MODULE_0__["default"]], true); +})(window, document, window.ibexa); +})(); + /******/ })() ; \ No newline at end of file diff --git a/public/assets/translations/en.js b/public/assets/translations/en.js index b7c14b8..d4335fd 100644 --- a/public/assets/translations/en.js +++ b/public/assets/translations/en.js @@ -217,6 +217,13 @@ t.add("ibexa.segmentation.validator.segment_group_unique_identifier", "Segment G t.add("ibexa.segmentation.validator.segment_unique_identifier", "Segment identifier \"{{ identifier }}\" is not unique", "validators", "en"); t.add("ibexa.corporate_account.invitation.invalid_site_access", "SiteAccess \"{{ name }}\" isn\u2019t a part of corporate SiteAccess group", "validators", "en"); t.add("Bad code value", "Code does not match", "validators", "en"); +t.add("Max length must be between 50 and 300 characters.", "Max length must be between 50 and 300 characters.", "validators", "en"); +t.add("ibexa.connector_ai.action_configuration.handler_options.valid", "Invalid AI action handler options", "validators", "en"); +t.add("ibexa.connector_ai.action_configuration.identifier.pattern", "AI action identifier may only contain letters from \"a\" to \"z\", numbers, dashes and underscores.", "validators", "en"); +t.add("ibexa.connector_ai.action_configuration.identifier.unique", "AI action identifier is not unique", "validators", "en"); +t.add("ibexa.connector_ai.action_configuration.type_options.valid", "Invalid AI action type options", "validators", "en"); +t.add("Max tokens must be greater than 0 and equal or lower or than 4096.", "Max tokens must be greater than 0 and equal or lower than 4096.", "validators", "en"); +t.add("Temperature must be a number between 0 and 2.", "Temperature must be a number between 0 and 2.", "validators", "en"); t.add("role.policy.all_modules_all_functions", "All modules \/ All functions", "forms", "en"); t.add("role.policy.class", "Content type", "forms", "en"); t.add("role.policy.class.all_functions", "Content type \/ All functions", "forms", "en"); @@ -466,6 +473,13 @@ t.add("dashboard.customize", "Customize dashboard", "forms", "en"); t.add("role.policy.dashboard", "Dashboard", "forms", "en"); t.add("role.policy.dashboard.all_functions", "Dashboard \/ All functions", "forms", "en"); t.add("role.policy.dashboard.customize", "Dashboard \/ Customize", "forms", "en"); +t.add("role.policy.action_configuration", "AI action", "forms", "en"); +t.add("role.policy.action_configuration.all_functions", "AI action \/ All Functions", "forms", "en"); +t.add("role.policy.action_configuration.create", "AI action \/ Create", "forms", "en"); +t.add("role.policy.action_configuration.delete", "AI action \/ Delete", "forms", "en"); +t.add("role.policy.action_configuration.edit", "AI action \/ Edit", "forms", "en"); +t.add("role.policy.action_configuration.execute", "AI action \/ Execute", "forms", "en"); +t.add("role.policy.action_configuration.view", "AI action \/ View", "forms", "en"); t.add("Enter login or email", "Enter login or email", "messages", "en"); t.add("Enter password", "Enter password", "messages", "en"); t.add("Login", "Login", "messages", "en"); @@ -689,6 +703,15 @@ t.add("upload_image_btn.label", "Upload image", "ck_editor", "en"); t.add("dropdown.filter.placeholder", "Search...", "ck_editor", "en"); t.add("measurement_input.alert.title", "If size fields are blank, the system sets default template values. Adjust them for better results.", "ck_editor", "en"); t.add("measurement_input.unit.label", "Unit", "ck_editor", "en"); +t.add("ck_editor.dropdown.filter.placeholder", "Search...", "ck_editor", "en"); +t.add("ck_editor.go_to_ai_actions.label", "Go to AI actions", "ck_editor", "en"); +t.add("ck_editor.richtext.generating_msg", "AI is generating...", "ck_editor", "en"); +t.add("ck_editor.richtext.preview.action.cancel", "Stop", "ck_editor", "en"); +t.add("ck_editor.richtext.preview.action.insert_below", "Insert below", "ck_editor", "en"); +t.add("ck_editor.richtext.preview.action.replace", "Replace", "ck_editor", "en"); +t.add("ck_editor.richtext.preview.action.try_again", "Try again", "ck_editor", "en"); +t.add("ck_editor.richtext.preview.header", "AI Assistant: %name%", "ck_editor", "en"); +t.add("ck_editor.richtext.toolbar_btn", "Improve text", "ck_editor", "en"); t.add("content.autosave.turn_off.message", "You can turn autosave off in your user settings", "ibexa_content", "en"); t.add("content.create_draft.success", "Created a new draft for '%name%'.", "ibexa_content", "en"); t.add("content.draft.conflict.error", "Cannot check if the draft has conflicts with other drafts. %error%.", "ibexa_content", "en"); @@ -3073,4 +3096,82 @@ t.add("user.change_role_modal.title", "Change role", "ibexa_corporate_account", t.add("user.status_change.confirmation_modal.activate", "Activate", "ibexa_corporate_account", "en"); t.add("user.status_change.confirmation_modal.cancel", "Cancel", "ibexa_corporate_account", "en"); t.add("user.status_change.confirmation_modal.deactivate", "De-activate", "ibexa_corporate_account", "en"); +t.add("Generate alt text for given image", "Generate alt text for given image.", "ibexa_connector_ai", "en"); +t.add("Refine given text", "Refine given text.", "ibexa_connector_ai", "en"); +t.add("action_configuration.disabled", "Disabled", "ibexa_connector_ai", "en"); +t.add("action_configuration.enabled", "Enabled", "ibexa_connector_ai", "en"); +t.add("breadcrumb.admin", "Admin", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.breadcrumb.list", "AI actions", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.breadcrumb.view", "%action_configuration_name%", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.bulk_delete.success", "{1}AI action '%deletedNames%' removed.|]1,Inf[ AI actions '%deletedNames%' removed.", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.create.action_handler", "Action handler", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.create.action_type", "Action type", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.create.success", "AI action '%name%' created.", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.delete.success", "AI action '%name%' removed.", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.action_type", "Action type", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.description", "Description", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.identifier", "Identifier", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.modified_at", "Modification date", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.name", "Name", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.status", "Status", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.status.disabled", "Disabled", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.details.column.status.enabled", "Enabled", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.list.search.query.placeholder", "Search by name, identifier", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.list.status.disabled", "Disabled", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.list.status.enabled", "Enabled", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.list.title", "AI actions", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.prompt_length", "Length of prompt output", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.search.enabled.label", "Enabled", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.status.label", "Status", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.translations.label", "Translations", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.update.success", "AI action '%name%' updated.", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.view.preview", "Preview", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.view.tab.global_properties.label", "Global properties", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.view.tab.settings.label", "Settings", "ibexa_connector_ai", "en"); +t.add("ibexa.action_configuration.view.title", "%action_configuration_name% AI action", "ibexa_connector_ai", "en"); +t.add("ibexa.ai.action.generate_alt_text.name", "Generate alternative text", "ibexa_connector_ai", "en"); +t.add("ibexa.ai.action.refine_text.name", "Refine text", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.anchor_navigation.global_properties", "Global properties", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.anchor_navigation.settings", "Settings", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.create.discard", "Discard", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.create.submit", "Create", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.edit.action_name", "Editing AI action", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.enabled.label", "Enabled", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.bulk_delete.confirm_message", "Delete selected AI actions?", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.bulk_delete.delete.btn.label", "Delete", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.empty.action_text", "Try again with new search criteria", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.empty.info", "No AI actions available", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.header.action_type", "Action type", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.header.identifier", "Identifier", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.header.modification_date", "Modification date", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.header.name", "Name", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.list.table.header.status", "Status", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.new.action_name", "Creating", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.new.subtitle", "in %language_name%", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.action_configuration.new.title", "New %action_type_name% AI action", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.anchor_navigation.action_options", "Settings", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.anchor_navigation.global_properties", "Global properties", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.enabled.no", "No", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.enabled.yes", "Yes", "ibexa_connector_ai", "en"); +t.add("ibexa.connector_ai.pre_create.title", "Create AI action", "ibexa_connector_ai", "en"); +t.add("ibexa.list.action.create", "Create", "ibexa_connector_ai", "en"); +t.add("ibexa.modal.delete", "Delete", "ibexa_connector_ai", "en"); +t.add("ibexa.modal.delete.action_configuration.confirm_message", "Delete this AI action?", "ibexa_connector_ai", "en"); +t.add("ibexa_connector_ai.generating_msg", "AI is generating...", "ibexa_connector_ai", "en"); +t.add("ibexa_connector_ai.go_to_ai_actions.label", "Go to AI actions", "ibexa_connector_ai", "en"); +t.add("ibexa_connector_ai.stop_generating.label", "Stop generating", "ibexa_connector_ai", "en"); +t.add("ibexa_connector_ai.use_ai.label", "Use AI", "ibexa_connector_ai", "en"); +t.add("tab.action_handler_options.label", "Action handler options", "ibexa_connector_ai", "en"); +t.add("tab.action_type_options.label", "Action type options", "ibexa_connector_ai", "en"); +t.add("tab.properties.label", "Properties", "ibexa_connector_ai", "en"); +t.add("tab.translations.action.add", "Add", "ibexa_connector_ai", "en"); +t.add("tab.translations.action.delete", "Delete", "ibexa_connector_ai", "en"); +t.add("tab.translations.add.cancel", "Cancel", "ibexa_connector_ai", "en"); +t.add("tab.translations.add.submit", "Add translation", "ibexa_connector_ai", "en"); +t.add("tab.translations.add.title", "Create a new translation", "ibexa_connector_ai", "en"); +t.add("tab.translations.language_code", "Language code", "ibexa_connector_ai", "en"); +t.add("tab.translations.language_name", "Language name", "ibexa_connector_ai", "en"); +t.add("tab.translations.modal.message", "Do you want to delete the translation ?", "ibexa_connector_ai", "en"); +t.add("tab.translations.translation_manager", "Translation manager", "ibexa_connector_ai", "en"); +t.add("translation.base_language.no_language", "No language", "ibexa_connector_ai", "en"); })(Translator); diff --git a/public/assets/translations/en.json b/public/assets/translations/en.json index bffe900..cb5f25c 100644 --- a/public/assets/translations/en.json +++ b/public/assets/translations/en.json @@ -1,3 +1,3 @@ { - "translations": {"en":{"validators":{"This value should be false.":"This value should be false.","This value should be true.":"This value should be true.","This value should be of type {{ type }}.":"This value should be of type {{ type }}.","This value should be blank.":"This value should be blank.","The value you selected is not a valid choice.":"The value you selected is not a valid choice.","You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.":"You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.","You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.":"You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.","One or more of the given values is invalid.":"One or more of the given values is invalid.","This field was not expected.":"This field was not expected.","This field is missing.":"This field is missing.","This value is not a valid date.":"This value is not a valid date.","This value is not a valid datetime.":"This value is not a valid datetime.","This value is not a valid email address.":"This value is not a valid email address.","The file could not be found.":"The file could not be found.","The file is not readable.":"The file is not readable.","The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.":"The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.","The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.":"The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.","This value should be {{ limit }} or less.":"This value should be {{ limit }} or less.","This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.":"This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.","This value should be {{ limit }} or more.":"This value should be {{ limit }} or more.","This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.":"This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.","This value should not be blank.":"This value should not be blank.","This value should not be null.":"This value should not be null.","This value should be null.":"This value should be null.","This value is not valid.":"This value is not valid.","This value is not a valid time.":"This value is not a valid time.","This value is not a valid URL.":"This value is not a valid URL.","The two values should be equal.":"The two values should be equal.","The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.":"The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.","The file is too large.":"The file is too large.","The file could not be uploaded.":"The file could not be uploaded.","This value should be a valid number.":"This value should be a valid number.","This file is not a valid image.":"This file is not a valid image.","This is not a valid IP address.":"This value is not a valid IP address.","This value is not a valid language.":"This value is not a valid language.","This value is not a valid locale.":"This value is not a valid locale.","This value is not a valid country.":"This value is not a valid country.","This value is already used.":"This value is already used.","The size of the image could not be detected.":"The size of the image could not be detected.","The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.":"The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.","The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.":"The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.","The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.":"The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.","The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.":"The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.","This value should be the user's current password.":"This value should be the user's current password.","This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.":"This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.","The file was only partially uploaded.":"The file was only partially uploaded.","No file was uploaded.":"No file was uploaded.","No temporary folder was configured in php.ini.":"No temporary folder was configured in php.ini, or the configured folder does not exist.","Cannot write temporary file to disk.":"Cannot write temporary file to disk.","A PHP extension caused the upload to fail.":"A PHP extension caused the upload to fail.","This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.":"This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.","This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.":"This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.","This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.":"This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.","Invalid card number.":"Invalid card number.","Unsupported card type or invalid card number.":"Unsupported card type or invalid card number.","This is not a valid International Bank Account Number (IBAN).":"This value is not a valid International Bank Account Number (IBAN).","This value is not a valid ISBN-10.":"This value is not a valid ISBN-10.","This value is not a valid ISBN-13.":"This value is not a valid ISBN-13.","This value is neither a valid ISBN-10 nor a valid ISBN-13.":"This value is neither a valid ISBN-10 nor a valid ISBN-13.","This value is not a valid ISSN.":"This value is not a valid ISSN.","This value is not a valid currency.":"This value is not a valid currency.","This value should be equal to {{ compared_value }}.":"This value should be equal to {{ compared_value }}.","This value should be greater than {{ compared_value }}.":"This value should be greater than {{ compared_value }}.","This value should be greater than or equal to {{ compared_value }}.":"This value should be greater than or equal to {{ compared_value }}.","This value should be identical to {{ compared_value_type }} {{ compared_value }}.":"This value should be identical to {{ compared_value_type }} {{ compared_value }}.","This value should be less than {{ compared_value }}.":"This value should be less than {{ compared_value }}.","This value should be less than or equal to {{ compared_value }}.":"This value should be less than or equal to {{ compared_value }}.","This value should not be equal to {{ compared_value }}.":"This value should not be equal to {{ compared_value }}.","This value should not be identical to {{ compared_value_type }} {{ compared_value }}.":"This value should not be identical to {{ compared_value_type }} {{ compared_value }}.","The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.":"The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.","The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.":"The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.","The image is square ({{ width }}x{{ height }}px). Square images are not allowed.":"The image is square ({{ width }}x{{ height }}px). Square images are not allowed.","The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.":"The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.","The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.":"The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.","An empty file is not allowed.":"An empty file is not allowed.","The host could not be resolved.":"The host could not be resolved.","This value does not match the expected {{ charset }} charset.":"This value does not match the expected {{ charset }} charset.","This is not a valid Business Identifier Code (BIC).":"This value is not a valid Business Identifier Code (BIC).","Error":"Error","This is not a valid UUID.":"This value is not a valid UUID.","This value should be a multiple of {{ compared_value }}.":"This value should be a multiple of {{ compared_value }}.","This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.":"This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.","This value should be valid JSON.":"This value should be valid JSON.","This collection should contain only unique elements.":"This collection should contain only unique elements.","This value should be positive.":"This value should be positive.","This value should be either positive or zero.":"This value should be either positive or zero.","This value should be negative.":"This value should be negative.","This value should be either negative or zero.":"This value should be either negative or zero.","This value is not a valid timezone.":"This value is not a valid timezone.","This password has been leaked in a data breach, it must not be used. Please use another password.":"This password has been leaked in a data breach, it must not be used. Please use another password.","This value should be between {{ min }} and {{ max }}.":"This value should be between {{ min }} and {{ max }}.","This value is not a valid hostname.":"This value is not a valid hostname.","The number of elements in this collection should be a multiple of {{ compared_value }}.":"The number of elements in this collection should be a multiple of {{ compared_value }}.","This value should satisfy at least one of the following constraints:":"This value should satisfy at least one of the following constraints:","Each element of this collection should satisfy its own set of constraints.":"Each element of this collection should satisfy its own set of constraints.","This value is not a valid International Securities Identification Number (ISIN).":"This value is not a valid International Securities Identification Number (ISIN).","This value should be a valid expression.":"This value should be a valid expression.","This value is not a valid CSS color.":"This value is not a valid CSS color.","This value is not a valid CIDR notation.":"This value is not a valid CIDR notation.","The value of the netmask should be between {{ min }} and {{ max }}.":"The value of the netmask should be between {{ min }} and {{ max }}.","The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.":"The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.","The password strength is too low. Please use a stronger password.":"The password strength is too low. Please use a stronger password.","This value contains characters that are not allowed by the current restriction-level.":"This value contains characters that are not allowed by the current restriction-level.","Using invisible characters is not allowed.":"Using invisible characters is not allowed.","Mixing numbers from different scripts is not allowed.":"Mixing numbers from different scripts is not allowed.","Using hidden overlay characters is not allowed.":"Using hidden overlay characters is not allowed.","The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}.":"The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}.","The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}.":"The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}.","This value is not a valid MAC address.":"This value is not a valid MAC address.","This URL is missing a top-level domain.":"This URL is missing a top-level domain.","This value is too short. It should contain at least one word.|This value is too short. It should contain at least {{ min }} words.":"This value is too short. It should contain at least one word.|This value is too short. It should contain at least {{ min }} words.","This value is too long. It should contain one word.|This value is too long. It should contain {{ max }} words or less.":"This value is too long. It should contain one word.|This value is too long. It should contain {{ max }} words or less.","This value does not represent a valid week in the ISO 8601 format.":"This value does not represent a valid week in the ISO 8601 format.","This value is not a valid week.":"This value is not a valid week.","This value should not be before week \"{{ min }}\".":"This value should not be before week \"{{ min }}\".","This value should not be after week \"{{ max }}\".":"This value should not be after week \"{{ max }}\".","This form should not contain extra fields.":"This form should not contain extra fields.","The uploaded file was too large. Please try to upload a smaller file.":"The uploaded file was too large. Please try to upload a smaller file.","The CSRF token is invalid. Please try to resubmit the form.":"The CSRF token is invalid. Please try to resubmit the form.","This value is not a valid HTML5 color.":"This value is not a valid HTML5 color.","Please enter a valid birthdate.":"Please enter a valid birthdate.","The selected choice is invalid.":"The selected choice is invalid.","The collection is invalid.":"The collection is invalid.","Please select a valid color.":"Please select a valid color.","Please select a valid country.":"Please select a valid country.","Please select a valid currency.":"Please select a valid currency.","Please choose a valid date interval.":"Please choose a valid date interval.","Please enter a valid date and time.":"Please enter a valid date and time.","Please enter a valid date.":"Please enter a valid date.","Please select a valid file.":"Please select a valid file.","The hidden field is invalid.":"The hidden field is invalid.","Please enter an integer.":"Please enter an integer.","Please select a valid language.":"Please select a valid language.","Please select a valid locale.":"Please select a valid locale.","Please enter a valid money amount.":"Please enter a valid money amount.","Please enter a number.":"Please enter a number.","The password is invalid.":"The password is invalid.","Please enter a percentage value.":"Please enter a percentage value.","The values do not match.":"The values do not match.","Please enter a valid time.":"Please enter a valid time.","Please select a valid timezone.":"Please select a valid timezone.","Please enter a valid URL.":"Please enter a valid URL.","Please enter a valid search term.":"Please enter a valid search term.","Please provide a valid phone number.":"Please provide a valid phone number.","The checkbox has an invalid value.":"The checkbox has an invalid value.","Please enter a valid email address.":"Please enter a valid email address.","Please select a valid option.":"Please select a valid option.","Please select a valid range.":"Please select a valid range.","Please enter a valid week.":"Please enter a valid week.","ez.section.identifier.format":"Section identifier may only contain letters from \"a\" to \"z\", numbers and underscores.","Email '%email%' is used by another user. You must enter a unique email.":"Email '%email%' is used by another user. You must enter a unique email.","Invalid login format.":"Invalid login format.","User login '%login%' already in use. Enter a unique login.":"User login '%login%' already in use. Enter a unique login.","content.field_type.passwords_must_match":"Passwords do not match.","ez.content_type.descriptions":"Content type description cannot be longer than 255 characters.","ez.content_type.identifier.pattern":"Content type identifier may only contain letters from \"a\" to \"z\", numbers and underscores.","ez.content_type.identifier.unique":"The content type identifier \"%identifier%\" is used by another content type. Enter a unique identifier.","ez.content_type.names":"Content type name cannot be blank and cannot be longer than 255 characters.","ez.field_definition.descriptions":"Field definition description cannot be longer than 255 characters.","ez.field_definition.identifier.unique":"The Field definition identifier \"%identifier%\" is used by another Field definition. Enter a unique identifier.","ez.field_definition.names":"Field definition name cannot be blank cannot be longer than 255 characters.","ezplatform.copy_subtree.is_not_container":"Selected Location cannot contain children.","ezplatform.copy_subtree.is_root":"Selected Location cannot be root Location.","ezplatform.copy_subtree.is_sub_location":"Cannot copy subtree to its own descendant Location","ezplatform.copy_subtree.limit_exceeded":"Copy subtree limit exceeded. Current limit: %currentLimit%","ezplatform.trash.have_used_assets":"Selected Location has assets that cannot be removed.","ezplatform.trash.location_has_no_children":"Selected Location has no children.","ibexa.language.language_code.format":"The Language code {{ value }} contains illegal characters. Language code should start with a letter, digit or underscore and only contain letters, digits, numbers, underscores, hyphens and colons.","js.error.address_not_found":"Provided address does not exist","js.error.empty.field":"{fieldName} Field cannot be empty","js.error.invalid_email":"A valid email address is required","js.error.invalid_file_size":"{fieldName}: Cannot upload. File exceeds file size limit.","js.error.invalid_file_type":"{fieldName}: Cannot upload. File has wrong type.","js.error.invalid_url":"A valid URL is required","js.error.invalid_value":"{fieldName} Field has invalid values","js.error.is_greater":"{fieldName} value must be less than or equal to {maxValue}","js.error.is_less":"{fieldName} value must be greater than or equal to {minValue}","js.error.is_not_float":"{fieldName} value must be a float number","js.error.is_not_integer":"{fieldName} value must be an integer","js.error.not_same_passwords":"Passwords do not match","js.error.out_of_range_value":"{fieldName} value is out of range. The value must be between {min} and {max}","js.error.provide_latitude_value":"Provide latitude value in the Latitude field","js.error.provide_longitude_value":"Provide longitude value in the Longitude field","js.error.too_long":"{fieldName} value must be less than or equal to {maxLength} characters","js.error.too_short":"{fieldName} value must be greater than or equal to {minLength} characters","validator.define_subtree_or_section_limitation":"Define a Subtree or Section limitation","ezplatform.change_user_password.not_match":"Current password is incorrect.","ezplatform.change_user_password.passwords_must_match":"Passwords do not match.","ezplatform.reset_user_password.passwords_must_match":"Passwords do not match.","ibexa.user.invitation.user_with_email_exists":"The email '%email%' is already in your member list.","error.first_greater_than_second.message":"First value should not be greater than the second one.","ibexa.attribute_definition.identifier.pattern":"Attribute identifier may only contain letters from \"a\" to \"z\", numbers and underscores.","ibexa.attribute_definition.identifier.unique":"Attribute Definition identifier must be unique","ibexa.attribute_group.identifier.pattern":"Attribute Group identifier may only contain letters from \"a\" to \"z\", numbers and underscores.","ibexa.attribute_group.identifier.unique":"Attribute Group identifier must be unique","ibexa.catalog.identifier.unique":"Catalog identifier must be unique","ibexa.currency.code.unique":"Currency code must be unique","ibexa.customer_group.identifier.pattern":"Customer Group identifier may only contain letters from \"a\" to \"z\", numbers and underscores.","ibexa.customer_group.identifier.unique":"Customer Group identifier must be unique","ibexa.language.at_least_one":"Cannot remove all translations","ibexa.product.attribute.value.valid":"Attribute value is invalid","ibexa.product.attribute_definition.options.valid":"Attribute Definition options are invalid","ibexa.product.code.length":"Product code is too long. It should have :max_length characters or less","ibexa.product.code.pattern":"Product code may only contain letters from \"a\" to \"z\", numbers, underscores and dashes.","ibexa.product.code.required":"Product code is required","ibexa.product.code.unique":"Product code must be unique","ibexa.product.variant.attributes.unique":"Attribute combination already exists in Product Variant %product_variant_code%","ibexa.product_price.customer_group.price_exists":"Product price already exists for customer group %customer_group_identifier%, product with code %product_code%, for currency %currency_code%","ibexa.product_price.price_exists":"Product price already exists for product with code %product_code% for currency %currency_code%","ezplatform.content.is_not_expected_content_container":"The selected Content item isn't a container.","ezplatform.content.is_not_expected_content_type":"The selected Content item isn't of the expected content type.","ibexa.site_factory.validator.hostname_with_optional_port.invalid":"Invalid hostname and\/or port","ibexa.site_factory.validator.port.invalid":"Invalid port","ibexa.segmentation.validator.segment_group_unique_identifier":"Segment Group identifier \"{{ identifier }}\" is not unique","ibexa.segmentation.validator.segment_unique_identifier":"Segment identifier \"{{ identifier }}\" is not unique","ibexa.corporate_account.invitation.invalid_site_access":"SiteAccess \"{{ name }}\" isn\u2019t a part of corporate SiteAccess group","Bad code value":"Code does not match"},"forms":{"role.policy.all_modules_all_functions":"All modules \/ All functions","role.policy.class":"Content type","role.policy.class.all_functions":"Content type \/ All functions","role.policy.class.create":"Content type \/ Create","role.policy.class.delete":"Content type \/ Delete","role.policy.class.update":"Content type \/ Update","role.policy.content":"Content","role.policy.content.all_functions":"Content \/ All functions","role.policy.content.cleantrash":"Content \/ Clean trash","role.policy.content.create":"Content \/ Create","role.policy.content.diff":"Content \/ Diff","role.policy.content.edit":"Content \/ Edit","role.policy.content.hide":"Content \/ Hide","role.policy.content.manage_locations":"Content \/ Manage locations","role.policy.content.pendinglist":"Content \/ Pending list","role.policy.content.publish":"Content \/ Publish","role.policy.content.read":"Content \/ Read","role.policy.content.remove":"Content \/ Remove","role.policy.content.restore":"Content \/ Restore","role.policy.content.reverserelatedlist":"Content \/ Reverse related list","role.policy.content.translate":"Content \/ Translate","role.policy.content.translations":"Content \/ Translations","role.policy.content.unlock":"Content \/ Unlock","role.policy.content.urltranslator":"Content \/ Url translator","role.policy.content.versionread":"Content \/ Version read","role.policy.content.versionremove":"Content \/ Version remove","role.policy.content.view_embed":"Content \/ View embed","role.policy.role":"Role","role.policy.role.all_functions":"Role \/ All functions","role.policy.role.assign":"Role \/ Assign","role.policy.role.create":"Role \/ Create","role.policy.role.delete":"Role \/ Delete","role.policy.role.read":"Role \/ Read","role.policy.role.update":"Role \/ Update","role.policy.section":"Section","role.policy.section.all_functions":"Section \/ All functions","role.policy.section.assign":"Section \/ Assign","role.policy.section.edit":"Section \/ Edit","role.policy.section.view":"Section \/ View","role.policy.setting":"Setting","role.policy.setting.all_functions":"Setting \/ All functions","role.policy.setting.create":"Setting \/ Create","role.policy.setting.remove":"Setting \/ Remove","role.policy.setting.update":"Setting \/ Update","role.policy.setup":"Setup","role.policy.setup.administrate":"Setup \/ Administrate","role.policy.setup.all_functions":"Setup \/ All functions","role.policy.setup.install":"Setup \/ Install","role.policy.setup.setup":"Setup \/ Setup","role.policy.setup.system_info":"Setup \/ System info","role.policy.state":"State","role.policy.state.administrate":"State \/ Administrate","role.policy.state.all_functions":"State \/ All functions","role.policy.state.assign":"State \/ Assign","role.policy.url":"URL","role.policy.url.all_functions":"URL \/ All functions","role.policy.url.update":"URL \/ Update","role.policy.url.view":"URL \/ View","role.policy.user":"User","role.policy.user.activation":"User \/ Activation","role.policy.user.all_functions":"User \/ All functions","role.policy.user.invite":"User \/ Invite","role.policy.user.login":"User \/ Login","role.policy.user.password":"User \/ Password","role.policy.user.preferences":"User \/ Preferences","role.policy.user.register":"User \/ Register","role.policy.user.selfedit":"User \/ Self edit","role.policy.user.update":"User \/ Update","role.policy.user.view":"User \/ View","content_draft_create_type.create":"Create","content_location_add_type.add":"Add Location","content_location_remove_form.remove":"Delete","content_translation_add_form.add":"Create","content_translation_remove_form.remove":"Remove translation","content_type.copy.copy":"Create","content_type_groups_delete_form.delete":"Delete content type groups","content_types_delete_form.delete":"Delete content types","error.required.field":"%fieldName% cannot be empty.","error.required.field_not_blank":"This value should not be blank.","ezplatform.language.create.enabled":"Enabled","ezplatform.language.create.language_code":"Language code","ezplatform.language.create.name":"Name","ezplatform.language.delete.delete":"Delete","ezplatform.language.update.enabled":"Enabled","ezplatform.language.update.name":"Name","ezplatform.language.update.save":"Save","form.has_children.label":"Sub-items","form.has_reverse_relation.label":"Conflict with reverse Relations","form.trash_assets.label":"Asset Fields(s)","form.trash_assets_non_unique.label":"Asset Fields(s)","language.create.save":"Save","language.create.save_and_close":"Save and close","language.update.save_and_close":"Save and close","languages_delete_form.delete":"Delete languages","location_copy.copy":"Copy","location_move.move":"Move","location_trash_form.default_trash":"Send only this Content item to trash","location_trash_form.trash":"Send to trash","location_trash_form.trash_with_asset":"Send the Content item and its related assets to trash","policies_delete_form.delete":"Delete Policies","policy_create.save":"Save","role.policy.all_functions":"All functions","role.policy.all_modules":"All modules","role.policy.type":"Policy","role.policy.type.choose":"Choose a Policy","role_assignment.delete":"Delete","role_assignment.groups":"Group","role_assignment.locations":"Select subtree","role_assignment.save":"Assign","role_assignment.sections":"Section","role_assignment.users":"User","role_assignments_delete_form.delete":"Delete Role assignments","role_copy.copy":"Copy","role_copy.name":"Name of a new role","role_create.name":"Name","role_create.save":"Save","role_create.save_and_close":"Save and close","role_delete.delete":"Delete","role_update.name":"Name","role_update.save":"Save","role_update.save_and_close":"Save and close","roles_delete_form.delete":"Delete Role","section_content_assign_form.assign":"Assign content","section_content_assign_form.locations":"Assign content","section_create_form.create":"Create","section_create_form.create_and_edit":"Save and edit","section_create_form.update_and_edit":"Save and edit","section_delete_form.delete":"Delete","section_form.identifier":"Identifier","section_form.name":"Name","section_subtree_assign_form.assign":"Change section","section_update_form.update":"Save","sections_delete_form.delete":"Delete Sections","swap_location_form.swap":"Select Content item","translation.base_language.label":"Source language","translation.base_language.no_language":"No language","translation.language.label":"Target language","trash_empty_form.empty":"Delete","user.invitation.submit":"Send","user_delete_form.delete":"Delete","version_remove_form.remove":"Remove version","ezplatform.change_user_password.change":"Change","ezplatform.change_user_password.confirm_new_password":"Confirm password","ezplatform.change_user_password.new_password":"New password","ezplatform.change_user_password.old_password":"Current password","ezplatform.forgot_user_password.email":"Enter your email","ezplatform.forgot_user_password.login":"Enter your login:","ezplatform.forgot_user_password.reset":"Reset","ezplatform.forgot_user_password.send":"Send","ezplatform.reset_user_password.confirm_new_password":"Confirm password","ezplatform.reset_user_password.new_password":"New password","ezplatform.reset_user_password.update":"Update","ibexa.user.invitation.email":"Enter email","ibexa.user.invitation.group":"Select Group","ibexa.user.invitation.location_id":"Type subtree root id","ibexa.user.invitation.pick_sections":"Pick Sections","ibexa.user.invitation.role":"Select Role","ibexa.user.invitation.send_invitation":"Send invitation","ibexa.user.invitation.site_access":"Select Site","role.policy.workflow":"Workflow","role.policy.workflow.all_functions":"Workflow \/ All functions","role.policy.workflow.change_stage":"Workflow \/ Change Stage","role.policy.comparison":"Comparison","role.policy.comparison.all_functions":"Comparison \/ All functions","role.policy.comparison.view":"Comparison \/ View","role.policy.personalization":"Personalization","role.policy.personalization.all_functions":"Personalization \/ All functions","role.policy.personalization.edit":"Personalization \/ Edit","role.policy.personalization.view":"Personalization \/ View","role.policy.catalog":"Catalog","role.policy.catalog.all_functions":"Catalog \/ All functions","role.policy.catalog.create":"Catalog \/ Create","role.policy.catalog.delete":"Catalog \/ Delete","role.policy.catalog.edit":"Catalog \/ Edit","role.policy.catalog.view":"Catalog \/ View","role.policy.commerce":"Commerce","role.policy.commerce.all_functions":"Commerce \/ All functions","role.policy.commerce.currency":"Currencies \/ Administrate","role.policy.commerce.region":"Regions \/ Administrate","role.policy.customer_group":"Customer Group","role.policy.customer_group.all_functions":"Customer Group \/ All functions","role.policy.customer_group.create":"Customer Group \/ Create","role.policy.customer_group.delete":"Customer Group \/ Delete","role.policy.customer_group.edit":"Customer Group \/ Edit","role.policy.customer_group.view":"Customer Group \/ View","role.policy.product":"Product","role.policy.product.all_functions":"Product \/ All functions","role.policy.product.create":"Product \/ Create","role.policy.product.delete":"Product \/ Delete","role.policy.product.edit":"Product \/ Edit","role.policy.product.view":"Product \/ View","role.policy.product_type":"Product Type","role.policy.product_type.all_functions":"Product Type \/ All functions","role.policy.product_type.create":"Product Type \/ Create","role.policy.product_type.delete":"Product Type \/ Delete","role.policy.product_type.edit":"Product Type \/ Edit","role.policy.product_type.view":"Product Type \/ View","role.policy.taxonomy":"Taxonomy","role.policy.taxonomy.all_functions":"Taxonomy \/ All functions","role.policy.taxonomy.assign":"Taxonomy \/ Assign","role.policy.taxonomy.manage":"Taxonomy \/ Manage","role.policy.taxonomy.read":"Taxonomy \/ Read","submission_remove_form.remove":"Remove submission","role.policy.site":"Site","role.policy.site.all_functions":"Site \/ All functions","role.policy.site.change_status":"Site \/ Change status","role.policy.site.create":"Site \/ Create","role.policy.site.delete":"Site \/ Delete","role.policy.site.edit":"Site \/ Edit","role.policy.site.view":"Site \/ View","sites_delete_form.delete":"Delete Sites","role.policy.segment":"Segment","role.policy.segment.all_functions":"Segment \/ All functions","role.policy.segment.assign_to_user":"Segment \/ Assign to user","role.policy.segment.create":"Segment \/ Create","role.policy.segment.read":"Segment \/ Read","role.policy.segment.remove":"Segment \/ Remove","role.policy.segment.update":"Segment \/ Update","role.policy.segment.view_user_segment_list":"Segment \/ View user segment list","role.policy.segment_group":"Segment Group","role.policy.segment_group.all_functions":"Segment Group \/ All functions","role.policy.segment_group.create":"Segment Group \/ Create","role.policy.segment_group.read":"Segment Group \/ Read","role.policy.segment_group.remove":"Segment Group \/ Remove","role.policy.segment_group.update":"Segment Group \/ Update","segment_bulk_delete_form.delete":"Delete Segments","segment_create_form.create":"Create","segment_group_bulk_delete_form.delete":"Delete","segment_group_create.identifier":"Identifier","segment_group_create.name":"Name","segment_group_create.segments":"Segments","segment_group_create_form.create":"Create","segment_group_create_form.update":"Update","segment_group_delete_form.delete":"Delete","segment_update_form.update":"Update","corporate_account.invite_members.site_access":"Select SiteAccess","corporate_account.invite_members.submit":"Send","corporate_account.member.corporate_role_change.new_role":"Select new role","corporate_account.member.corporate_role_change.submit":"Save","role.policy.company_application":"Company Application","role.policy.company_application.all_functions":"Company Application \/ All functions","role.policy.company_application.workflow":"Company Application \/ Workflow","role.policy.activity_log":"Activity Log","role.policy.activity_log.all_functions":"Activity Log \/ All Functions","role.policy.activity_log.read":"Activity Log \/ Read","dashboard.customize":"Customize dashboard","role.policy.dashboard":"Dashboard","role.policy.dashboard.all_functions":"Dashboard \/ All functions","role.policy.dashboard.customize":"Dashboard \/ Customize"},"messages":{"Enter login or email":"Enter login or email","Enter password":"Enter password","Login":"Login","Password:":"Password:","Username:":"Username:","anchor_navigation.close":"Close","authentication.credentials_expire_in.warning":"Your current password will expire in %days% day(s). You can change it in User settings\/My account settings.","authentication.credentials_expire_today.warning":"Your current password will expire today. You can change it in User settings\/My account settings.","authentication.credentials_expired":"Your password has expired.","authentication.credentials_expired.message":"Your password has expired and must be changed. You will receive an email with instructions how to reset your password.","authentication.credentials_expired.reset_password":"Reset password","authentication.forgot_password":"Forgot your password?","authentication.login":"Login","authentication.password":"Password","authentication.reset_your_password":"Reset your password","authentication.reset_your_password.back":"Back","authentication.reset_your_password.back_to_sign_in":"Go back to Sign in","authentication.username":"Username","back.to.top":"Go to top","base.get_started":"Get started","base.need_assistance":"Get to know Ibexa DXP","base.registration":"Registration","base.visit_support":"See the %ibexa_documentation_link%or %ibexa_contact_link%","base.welcome":"Welcome to Ibexa DXP","bookmark.list.empty":"You have no notifications.","breadcrumb.admin":"Admin","character_counter.characters":"characters","character_counter.words":"words","content.details.content_id":"Content ID: %contentId%","content.details.created_by":"Created by %name%","content.details.location_id":"Location ID: %locationId%","content.details.parent_location_id":"Parent Location ID: %locationId%","content.hidden.message":"The content item or its location is hidden. It will no longer be publicly available.","content.hide.modal.cancel":"Cancel","content.hide.modal.confirm":"Confirm","content.hide.modal.please_confirm_to_continue":"To hide the Content item anyway, click Confirm.","content.hide.modal.title":"Content hide conflict","content.hide.modal.warning_content_used_by_other_content":"This content is used by other Content item(s). To avoid errors, update or remove all related content listed in the Relations tab.","content.in_trash":"In Trash","content_type.modal.message":"Do you want to delete the content type?","content_type.view.edit.content_field_definitions":"Field definitions","content_type.view.edit.content_field_types":"Field types","content_type.view.edit.empty_group_content":"Empty group, please drag some field","content_type.view.edit.empty_group_label":"Your section is empty","content_type.view.edit.empty_group_title":"Drag and drop field type","content_type.view.edit.global_properties":"Global properties","content_type.view.edit.search":"Search...","content_type.view.list.action.delete":"Delete","content_type_group.modal.message":"Do you want to delete the content type group?","content_type_group.view.list.action.delete":"Delete","content_type_selector.list.show_more":"More","custom_url_alias_add_form.remove":"Delete","dashboard.charts.no_data":"No data collected for the selected period","dashboard.charts.no_results":"No results found","dropdown.search":"Search...","error.page.403.actions":"Contact your administrator to request access.Go back to the dashboard<\/a> or search<\/a> for another item.","error.page.403.sub_title":"Sorry but you don't have permission to access this page.","error.page.403.title":"Access denied","error.page.404.actions":"Check the URL is spelled correctly and try again.Go back to the dashboard<\/a> or search<\/a> for another item.","error.page.404.sub_title":"The link may be broken, or the page may have been removed.","error.page.404.title":"Sorry, this page isn't available","error.page.default.actions":"Contact you Administrator to report the problem.Go back to the dashboard<\/a> or reload the application.","error.page.default.sub_title":"Sorry, we are having a problem with our system.","error.page.default.title":"Something went wrong","error.request.default_msg":"Something went wrong. Try to refresh the page or contact your administrator.","ezauthor.Email":"Email","ezauthor.action.add":"Add","ezauthor.action.delete":"Delete","ezauthor.name":"Name","ezobjectrelationlist.cta.limit.multi":"Set up a Relation with one or several Items","ezobjectrelationlist.cta.limit.single":"Set up a relation with one Content item","ezobjectrelationlist.cta.limit.sub_text":"Relations max. %limit%","ezobjectrelationlist.cta.select":"Select Item","ezobjectrelationlist.delete_selected_relations":"Delete","ezplatform.forgot_password.reset_your_password.reason.migration":"Your password has expired, change it.","ezplatform.forgot_user_password.contact_administrator":"If you do not remember your login, contact your Administrator.","ezplatform.forgot_user_password.login":"This email is connected with several accounts. Enter your login instead.","ezplatform.forgot_user_password.message":"Hi,\n

\n We have received a request to reset the password for your Ibexa DXP account. Click \u201creset password\u201d below to choose a new password:\n

\n
Reset password<\/a>\n

\n If you did not request a password reset, please ignore this email, and your password will remain the same.","ezplatform.forgot_user_password.reset_your_password":"Reset your password","ezplatform.registration_confirmation.header":"Your account has been created","ezplatform.registration_confirmation.message":"Thank you for creating an account. You can now
log in<\/a>","ezplatform.reset_user_password.change_password":"Change password","ezplatform.reset_user_password.link_is_not_valid":"This link is not valid anymore, you can generate a new link<\/a> to reset your password.","ezplatform.reset_user_password.success":"Your password has been changed. You can log in<\/a> to Ibexa DXP.","fieldview.toggler.hide":"Hide","fieldview.toggler.show":"Show","footer.copyright":"Copyright © %year% Ibexa. All right reserved","footer.ibexa_documentation":"Documentation","footer.ibexa_dxp":"Ibexa DXP","footer.ibexa_support":"Support","form.cancel":"Cancel","ibexa.forgot_user_password.reset_your_password":"Reset your password","ibexa.forgot_user_password.success":"

If you don\u2019t receive the email, double check that you entered the correct email address and check your spam folder.<\/p>","ibexa.forgot_user_password.success.alert":"We\u2019ve sent to your email account a link to reset your password.","language.delete":"Delete","language.modal.message":"Delete the languages?","list.action.edit":"Edit","location_trash_form.confirm_label":"I understand the consequences of this action.","modal.cancel":"Cancel","modal.delete":"Delete","my_account_settings.password.action.edit":"Change password","my_account_settings.password.message":"You don't have permissions to change the password. Contact your administrator.","my_account_settings.password.title":"Password","notification.no_longer_available":"The Content item is no longer available","notification.title":"Title:","object_state.delete.bulk_delete.submit":"Delete","object_state.modal.message":"Do you want to delete the Object state(s)?","object_state.new":"Add","object_state_group.delete.bulk_delete.submit":"Delete","object_state_group.modal.message":"Do you want to delete the Object state group(s)?","policy.limitation.none":"None","policy.modal.message":"Do you want to delete the Policy?","policy.view.list.action.add":"Add","policy.view.list.action.delete":"Delete","role.modal.message":"Do you want to delete the Role(s)?","role.view.list.action.delete":"Delete","section.assign,content":"Assign Content","section.delete":"Delete","section.list":"Sections","section.modal.message":"Do you want to delete the Section(s)?","tab.locations.location_content_swap":"Swap Locations","tab.locations.swap_with_another":"Swap the Content item at this Location with another","tab.versions.table.action.archived.edit":"Restore archived version","tab.versions.table.action.draft.edit":"Edit","tab.versions.table.author.not_found":"Can't fetch contributor","tab.view.descriptions":"Descriptions","tab.view.preview":"Preview","tag_view_select.change":"Change %type%","tag_view_select.default_type":"path","tag_view_select.info":"Select location","tag_view_select.select":"Select %type%","toggle_widget.label.off":"Off","toggle_widget.label.on":"On","trash.delete":"Delete","trash.delete.all.confirm":"Permanently delete items: %trashItemsCount%?","trash.delete.button.cancel":"Cancel","trash.form.cancel":"Cancel","trash.modal.message":"Delete the selected items permanently?","trash.modal.send_to_trash.message":"Are you sure you want to send this Content item to Trash?","trash_asset.modal.message_body":"If you wish to delete these assets too, first make sure they are not used by other content. To check, go to the asset preview and look at its content Relations in the Relations tab.","trash_asset.modal.message_header":"You are about to delete a Content item that has one or more asset Field(s) used by other Content items. These assets will remain available in system.","trash_asset_single.modal.message_main":"'%content%' has 1 or more asset Field(s). You have an option to send only the Content item to Trash, or to send the Content item and its assets to Trash. Please select your option:","trash_container.modal.message_main":"Sending '%content%' and its %children_count% Content item(s) to Trash will also send the sub-items of this Location to Trash.","trash_container.modal.message_relations":"'%content%' is in use by %reverse_relations% Content item(s). You should remove all reverse Relations before deleting the Content item.","ui.component.tab.tabs_toggler.hide":"Hide","ui.component.tab.tabs_toggler.show":"Show","url_wildcard.list.action.create":"Add","url_wildcard.list.action.delete":"Delete","url_wildcard.list.action.delete_url_wildcards":"Delete URL wildcards","url_wildcard.modal.message":"Are you sure you want to delete selected URL wildcard(s)?","user_menu.popup_menu.title":"Logged as %userName%","content.review.from":"From:","content.review.read_more":"Read more","dashboard.charts.collected_events":"Collected events","dashboard.charts.conversion_rate":"Conversion rate","dashboard.charts.date_time_range":"%start_date% to %end_date%","dashboard.charts.recommendation_calls":"Recommendation calls","dashboard.charts.revenue":"Revenue","dashboard.download_report":"Download full report","dashboard.products_purchased":"Products purchased","dashboard.title":"Data and analytics","ibexa_personalization.dashboard.time_period":"Select time range","ibexa_personalization.date_time_range.last_24h":"Last 24h","ibexa_personalization.scenario.details.subtitle":"Scenario","ibexa_personalization.scenario.trash.cancel":"No","ibexa_personalization.scenario.trash.close":"Close","ibexa_personalization.scenario.trash.confirm":"Yes","ibexa_personalization.scenario.trash.modal.message":"Are you sure you want to delete scenario %scenarion_name%<\/b>?","ibexa_personalization.scenario.trash.modal.message.new_scenario":"Are you sure you want to delete new scenario?","list.more_items":"+%count% more","model.details.nominal_submodel_name":"[ABC][%attribut_source%] %key%","model.details.numeric_submodel_name":"[123][%attribut_source%] %key%","model.details.segments":"Segments","model.details.submodel_type":"Submodel type","model.details.submodels":"Submodels","model.details.subtitle":"Model","model.edit.time_period.btn.apply":"Apply","models.segments.sidebar.search":"Search...","models.submodel.sidebar.search.placeholder":"Search...","preview.recommendation_response_description":"The way how recommendations are rendered is only an example. It could differ from the actual approach used by the customer on the website","product_type.edit.search":"Search...","scenario.edit.boost_item.enable":"Enable item boosting","scenario.edit.boost_item.info":"User attribute has the same name","scenario.edit.boost_item.position.label":"Move up by","scenario.edit.boost_item.positions":"positions","scenario.edit.exclude_minimal_item_price":"Minimum price of the recommended product","scenario.edit.exclude_minimal_item_price.label":"Amount","scenario.edit.exclude_repeated_recommendations.":"Max. repeated shows of identical recommendations per session.","scenario.edit.exclude_repeated_recommendations.label":"Amount","scenario.edit.user_attribute_name":"User attribute has different name","scenarios.add_item":"Add","scenarios.context_items.title":"Set up items","search.date.range":"From date - to date","welcome.form.tems_accept":"I have read and agree to the Terms and Conditions.<\/a>","welcome.form.tems_accept_description":"If you are accepting these terms on behalf of another person or company or other legal entity. You represent and warrant that you have full authority to bind that person, company or legal entity to these terms.","landing_page_ft.settings.edit_mode.field_view":"Field view","landing_page_ft.settings.edit_mode.page_view":"Page view","captcha.failed_to_load":"Captcha could not be loaded. Try refreshing page."},"ck_editor":{"anchor_btn.error.unique":"Anchor name must be unique.","anchor_btn.error.valid":"A valid anchor link is needed.","anchor_btn.label":"Anchor","block_alignment.center":"Center","block_alignment.left":"Left","block_alignment.right":"Right","custom_attributes_btn.label":"Custom attributes","custom_styles_btn.label":"Custom styles","custom_tag.settings.label":"Settings","custom_tag.toolbar.label":"Custom tag toolbar","elements_path.list.label":"list","embed_btn.label":"Embed","embed_inline_btn.label":"Embed inline","formatted_btn.label":"Formatted","image_btn.label":"Image","link_btn.error.valid":"A valid link is needed.","link_btn.label":"Link","move_down_btn.title":"Move down","move_up_btn.title":"Move up","remove_block.title":"Remove","upload_image.message.error":"Error while creating Image: %error%","upload_image_btn.label":"Upload image","dropdown.filter.placeholder":"Search...","measurement_input.alert.title":"If size fields are blank, the system sets default template values. Adjust them for better results.","measurement_input.unit.label":"Unit"},"ibexa_content":{"content.autosave.turn_off.message":"You can turn autosave off in your user settings","content.create_draft.success":"Created a new draft for '%name%'.","content.draft.conflict.error":"Cannot check if the draft has conflicts with other drafts. %error%.","content.edit.permission.error":"You don't have permission to edit this Content item","content.hide.already_hidden":"Content item '%name%' is already hidden.","content.hide.success":"Content item '%name%' hidden.","content.main_language_update.success":"Main language for '%name%' updated.","content.main_location_update.success":"Main Location for '%name%' updated.","content.reveal.already_visible":"Content item '%name%' is already visible.","content.reveal.success":"Content item '%name%' revealed.","content_edit.autosave.status_error.message":"Saving error","content_edit.autosave.status_off.message":"Autosave is off, draft not created","content_edit.autosave.status_on.message":"Autosave is on, draft created","content_edit.autosave.status_saved.message.full":"Autosave is on, draft saved %time%","content_edit.autosave.status_saving.message":"Saving","editing_details":"Location: %location%","embedded_items.action.edit":"Edit","embedded_items.action.go_to_label":"Go to content","preview_header.back":"Close","trash.modal.message":"Are you sure you want to send this Content item to Trash?","trash_container.modal.message_main":"Sending '%content%' and its %children_count% Content item(s) to Trash will also send the sub-items of this Location to Trash.","user.delete.success":"User with login '%login%' deleted.","tooltip.exit_label":"Exit"},"ibexa_content_tree":{"collapse_all":"Collapse all","content_tree.header":"Content tree","expand_item.limit.message":"Cannot load sub-items for this Location because you reached max tree depth.","loading_more":"Loading more...","no_subitems":"This Location has no sub-items","see_more":"See more","show_more.limit_reached":"Loading limit reached"},"ibexa_content_type":{"content_type.action.copy":"Duplicate","content_type.action.edit":"Edit","content_type.add.missing_language":"Cannot create content type. Could not find language with identifier '%languageCode%'","content_type.breadcrumb.view":"%identifier%","content_type.container":"Container","content_type.content_field_definitions":"Content Field definitions","content_type.copy.error":"Content type '%name%' cannot be copied.","content_type.copy.success":"Content type '%name%' copied.","content_type.create":"Create a content type","content_type.default_always_available":"Make content available even with missing translations","content_type.default_availability":"Make content available even with missing translations","content_type.default_availability.available":"Available","content_type.default_availability.not_available":"Not available","content_type.default_children_sorting":"Sort children by default by:","content_type.default_sort":"Sort children by default in order:","content_type.default_sort_field":"Sort children by default by","content_type.default_sort_order":"Sort children by default in order","content_type.delete":"Delete","content_type.delete.success":"Content type '%name%' deleted.","content_type.description":"Description","content_type.edit.error.already_exists":"Draft of content type '%name%' already exists and is locked by '%userContentName%'","content_type.edit.error.no_added_fields_definition":"You have to add at least one field definition","content_type.edit.select_language":"Select a language:","content_type.field_definitions_data":"Content Field definitions","content_type.global_properties":"Global properties","content_type.group.delete":"Delete","content_type.group.identifier":"Name","content_type.group.save":"Save","content_type.identifier":"Identifier","content_type.is_container":"Container","content_type.name":"Name","content_type.name_schema":"Content name pattern","content_type.publish":"OK","content_type.publish_and_edit":"Save","content_type.remove_draft":"Cancel","content_type.save":"Apply","content_type.sort_field.1":"Location path","content_type.sort_field.2":"Publication date","content_type.sort_field.3":"Modification date","content_type.sort_field.4":"Section","content_type.sort_field.5":"Location depth","content_type.sort_field.6":"Content type identifier","content_type.sort_field.7":"Content type name","content_type.sort_field.8":"Location priority","content_type.sort_field.9":"Content name","content_type.sort_field.ascending":"Ascending","content_type.sort_field.content_id":"Content ID","content_type.sort_field.depth":"Location depth","content_type.sort_field.descending":"Descending","content_type.sort_field.location_id":"Location ID","content_type.sort_field.location_path":"Location path","content_type.sort_field.modified":"Modification date","content_type.sort_field.name":"Content name","content_type.sort_field.priority":"Location priority","content_type.sort_field.published":"Publication date","content_type.sort_field.section_identifier":"Section identifier","content_type.sort_order.0":"Descending","content_type.sort_order.1":"Ascending","content_type.update.success":"Content type '%name%' updated.","content_type.url_alias_schema":"URL alias name pattern","content_type.user_name.can_not_be_fetched":"another user","content_type.view.edit.add":"Add","content_type.view.edit.content_field_definitions":"Field definitions","content_type.view.edit.default_header":"New field type","content_type.view.edit.global_properties":"Global properties","content_type.view.edit.notranslatable_fields_disabled":"Some of the Fields are disabled when translating a content type. To modify them, edit the content type in the main language.","content_type.view.list.action.add":"Create","content_type.view.list.cannot_delete_notice":"You cannot delete the disabled content types, because Content items of those types exist.","content_type.view.list.column.id":"ID","content_type.view.list.column.identifier":"Identifier","content_type.view.list.column.modification_date":"Modification date","content_type.view.list.column.name":"Name","content_type.view.view.title":"%name%","content_type_group.breadcrumb.list":"Content types","content_type_group.breadcrumb.view":"%identifier%","content_type_group.create.name":"Name","content_type_group.create.save":"Save","content_type_group.create.submit":"Save and close","content_type_group.create.success":"Created content type group '%name%'.","content_type_group.delete.submit":"Delete","content_type_group.delete.success":"Deleted content type group '%name%'.","content_type_group.edit.action_name":"Editing content type group","content_type_group.new.action_name":"Creating","content_type_group.update.name":"Name","content_type_group.update.save":"Save","content_type_group.update.submit":"Save and close","content_type_group.update.success":"Updated content type group '%name%'.","content_type_group.view.list.action.add":"Create","content_type_group.view.list.action.edit":"Edit","content_type_group.view.list.cannot_delete_notice":"You cannot delete the disabled content type groups, because they contain content types.","content_type_group.view.list.column.content_types_count":"Number of content types","content_type_group.view.list.column.id":"ID","content_type_group.view.list.column.identifier":"Name","content_type_group.view.list.title":"Content type groups","content_type_group.view.new.title":"New content type group","content_type_group.view.view.title":"%identifier%","creating":"Creating","creating.title":"New content type","editing_content_type":"Editing content type","field_definition.description":"Description","field_definition.ezauthor.default_author":"Default value","field_definition.ezauthor.default_user_current":"Current User","field_definition.ezauthor.default_user_empty":"Empty","field_definition.ezbinaryfile.max_file_size":"Maximum file size (MB)","field_definition.ezboolean.default_value":"Default value","field_definition.ezcountry.default_value":"Default country","field_definition.ezcountry.is_multiple":"Multiple choice","field_definition.ezdate.default_type":"Default value","field_definition.ezdate.default_type_current":"Current date","field_definition.ezdate.default_type_empty":"Empty","field_definition.ezdatetime.date_interval":"Current date and time adjusted by","field_definition.ezdatetime.default_type":"Default value","field_definition.ezdatetime.default_type_adjusted":"Adjusted current datetime","field_definition.ezdatetime.default_type_current":"Current datetime","field_definition.ezdatetime.default_type_empty":"Empty","field_definition.ezdatetime.use_seconds":"Use seconds","field_definition.ezfloat.default_value":"Default value","field_definition.ezfloat.max_value":"Maximum value","field_definition.ezfloat.min_value":"Minimum value","field_definition.ezimage.image_types":"Image types","field_definition.ezimage.is_alternative_text_required":"Alternative text is required","field_definition.ezimage.max_file_size":"Maximum file size (MB)","field_definition.ezinteger.default_value":"Default value","field_definition.ezinteger.max_value":"Maximum value","field_definition.ezinteger.min_value":"Minimum value","field_definition.ezisbn.default_value":"Default value","field_definition.ezisbn.is_isbn13":"ISBN-13 format","field_definition.ezmedia.max_file_size":"Maximum file size (MB)","field_definition.ezmedia.media_type":"Media type","field_definition.ezmedia.type_flash":"Flash","field_definition.ezmedia.type_html5_audio":"HTML5 audio","field_definition.ezmedia.type_html5_video":"HTML5 video","field_definition.ezmedia.type_quick_time":"QuickTime","field_definition.ezmedia.type_real_player":"RealPlayer","field_definition.ezmedia.type_silverlight":"Silverlight","field_definition.ezmedia.type_windows_media_player":"Windows Media Player","field_definition.ezobjectrelation.change_root_udw_button":"Change path","field_definition.ezobjectrelation.root_default_location":"Root Default Location","field_definition.ezobjectrelation.selection_content_types":"Allowed content types","field_definition.ezobjectrelation.selection_root":"Starting Location","field_definition.ezobjectrelation.selection_root_udw_button":"Select path","field_definition.ezobjectrelation.selection_root_udw_title":"Select where to start browsing for a Relation","field_definition.ezobjectrelationlist.change_root_udw_button":"Change path","field_definition.ezobjectrelationlist.root_default_location":"Root Default Location","field_definition.ezobjectrelationlist.selection_content_types":"Allowed content types","field_definition.ezobjectrelationlist.selection_default_location":"Default Location","field_definition.ezobjectrelationlist.selection_limit":"Selection limit","field_definition.ezobjectrelationlist.selection_root_udw_button":"Select path","field_definition.ezobjectrelationlist.selection_root_udw_title":"Select where to start browsing for Relations","field_definition.ezselection.add_option":"Add an option","field_definition.ezselection.is_multiple":"Multiple choice","field_definition.ezselection.options":"Options","field_definition.ezselection.remove_selected_options":"Remove selected options","field_definition.ezstring.default_value":"Default value","field_definition.ezstring.max_length":"Maximum length","field_definition.ezstring.min_length":"Minimum length","field_definition.eztext.text_rows":"Number of text rows","field_definition.eztime.default_type":"Default value","field_definition.eztime.default_type_current":"Current time","field_definition.eztime.default_type_empty":"Empty","field_definition.eztime.use_seconds":"Use seconds","field_definition.ezuser.min_length":"Minimum password length","field_definition.ezuser.password_ttl":"Days before password expires","field_definition.ezuser.password_ttl_warning":"Days before a user is notified about expiration","field_definition.ezuser.require_at_least_one_lower_case_character":"Password must contain at least one lowercase letter","field_definition.ezuser.require_at_least_one_non_alphanumeric_character":"Password must contain at least one non-alphanumeric character","field_definition.ezuser.require_at_least_one_numeric_character":"Password must contain at least one number","field_definition.ezuser.require_at_least_one_upper_case_character":"Password must contain at least one uppercase letter","field_definition.ezuser.require_new_password":"Prevent reusing old password","field_definition.ezuser.require_not_compromised_password":"Password must not be contained in a public breach.","field_definition.ezuser.require_not_compromised_password_help":"This uses the API at %link% to securely check breach data. The password is not transmitted to the API.","field_definition.ezuser.require_unique_email":"Email must be unique","field_definition.ezuser.username_pattern":"Username pattern","field_definition.identifier":"Identifier","field_definition.is_required":"Required","field_definition.is_searchable":"Searchable","field_definition.is_thumbnail":"Can be a thumbnail","field_definition.is_translatable":"Translatable","field_definition.name":"Name","field_definition.position":"Position","location_update_form.sort_field":"Sort field","location_update_form.sort_order":"Sort order","location_update_form.update":"Update","meta.enabled":"Enable %type% for this content type","no":"No","tab.name.translations":"Translations","tab.name.view":"View","yes":"Yes","field_definition.ibexa_taxonomy_entry.taxonomy":"Taxonomy"},"ibexa_dashboard":{"dashboard.breadcrumbs.dashboard":"Dashboard","dashboard.create":"Create content","dashboard.tab.all_content.empty":"No content. Content items you create will show up here","dashboard.tab.all_media.empty":"No content. Media you create will show up here","dashboard.tab.my_content.empty":"No content. Content items you create will show up here","dashboard.tab.my_drafts.empty":"You have no drafts yet. Your drafts will show up here.","dashboard.tab.my_media.empty":"No content. Media you create will show up here","dashboard.table.all.content.edit":"Edit","dashboard.table.all.media.edit":"Edit","dashboard.table.content.edit":"Edit","dashboard.table.content_type":"Content type","dashboard.table.contributor":"Contributor","dashboard.table.contributor.not_found":"Can't fetch contributor","dashboard.table.draft.edit":"Edit","dashboard.table.draft.unauthorized":"You do not have the '%function%' '%module%' permission for content ID: %contentId%","dashboard.table.last_saved":"Modified","dashboard.table.media.edit":"Edit","dashboard.table.modified_language":"Modified language","dashboard.table.name":"Name","dashboard.table.version":"Version","everyone":"Common content","me":"My content","my.dashboard":"My dashboard","tab.name.everyone_content":"Content","tab.name.everyone_media":"Media","tab.name.my_content":"Content","tab.name.my_drafts":"Drafts","tab.name.my_media":"Media","blocks._all_.no_permissions.body":"You don't have permissions to view this block","dashboard.top_clicked_items":"Top 10 clicked items","block.product_lowest_stock.column.category":"Category","block.product_lowest_stock.column.code":"Code","block.product_lowest_stock.column.name":"Name","block.product_lowest_stock.column.stock":"Stock","block.product_lowest_stock.column.thumbnail":"Image","block.product_lowest_stock.column.type":"Type","block.product_lowest_stock.column.variant":"Variant","block.product_lowest_stock.empty":"No results found","block.product_lowest_stock.no":"No","block.product_lowest_stock.title":"Products with the lowest stock","block.product_lowest_stock.yes":"Yes","dashboard.products_by_categories.dataset_label":"Products","dashboard.products_by_categories.other_categories":"Other categories","dashboard.products_by_categories.title":"Products by categories","dashboard.products_by_categories.uncategorized":"Uncategorized","block.ibexa_news.title":"Ibexa news","block.quick_actions.tile.catalog":"Catalog","block.quick_actions.tile.company":"Company","block.quick_actions.tile.content":"Content","block.quick_actions.tile.create":"Create","block.quick_actions.tile.create_content.udw.title":"Create content","block.quick_actions.tile.create_form.udw.title":"Create form","block.quick_actions.tile.form":"Form","block.quick_actions.tile.product":"Product","block.quick_actions.title":"Quick actions","breadcrumb.admin":"Admin","dashboard.builder.functionality":"Access the dashboard's customization tool, that allows you to personalize it to create a more intuitive user experience.","dashboard.change_active.success":"Active dashboard is set to '%name%' ","dashboard.customize":"Customize dashboard","dashboard.customize.default_name":"My dashboard","dashboard.dashboard_type":"Dashboard type","dashboard.edit":"Edit %locationContentName%","dashboard.enhance_dashboard_experience":"Enhance your dashboard experience","dashboard.error.unable_to_load":"The dashboard could not be loaded","dashboard.ibexa_news.unable_to_fetch":"Unable to fetch Ibexa News","dashboard.sent_to_trash.info":"The default dashboard cannot be sent to the trash","dashboard.switch_to_custom":"Switch to %name%","dashboard.switch_to_default":"Switch to default dashboard","dashboard.title.afternoon":"Good afternoon, %user_name%!","dashboard.title.evening":"Good evening, %user_name%!","dashboard.title.morning":"Good morning, %user_name%!","info_bar.dashboard.label":"Dashboard Builder","info_bar.dashboard.toolbox.title":"Dashboard blocks","user.setting.active_dashboard.description":"Active dashboard","user.setting.active_dashboard.name":"Active dashboard"},"ibexa_dropdown":{"dropdown.clear":"Clear (%selected_items_count%)","dropdown.no_results":"No results found for "%phrase%"","dropdown.placeholder":"Choose an option","dropdown.placeholder.all":"All","dropdown.placeholder.empty":"No options available","dropdown.placeholder.empty.label":"All","dropdown.select_all":"Select All"},"ibexa_fieldtypes_edit":{"ezimage.dimensions.height":"H:%height% px","ezimage.dimensions.width":"W:%width% px","ezimageasset.create.message.error":"Error while creating Image Asset: %error%","ezimageasset.create.message.success":"The image has been published and can now be reused","ezimageasset.empty_data.message.error":"The chosen asset has no image data available.","ezmaplocation.create.message.error":"Area below needs correction"},"ibexa_multi_file_upload":{"abort.label":"Abort","cannot_create_content_structure.message":"Cannot create content structure","cannot_get_content_type_identifier.message":"Cannot get content type by identifier","delete.error.message":"An error occurred while deleting a file","delete.label":"Delete","disallowed_content_type.message":"You do not have permission to create this Content item","disallowed_size.message":"File size is not allowed","disallowed_type.message":"File type is not allowed","drop_action.message":"Drag and drop file","drop_action.separator":"or","edit.label":"Edit","general.error.message":"An error occurred while publishing a file","max_file_size.message":"%contentTypeName% max file size: %maxFileSize%","max_file_size.message.general":"Max. file size","multi_file_upload_open_btn.label":"Upload","multi_file_upload_popup.subtitle":"Under %name%","multierror.label":"Failed to upload ","upload.progress_bar.uploading":"Uploading...","upload.success.message":"100% Uploaded","upload_btn.label":"Upload file","upload_popup.cancel_label":"Cancel pending upload","upload_popup.close_label":"Close","upload_popup.confirm_label":"Confirm and close","upload_popup.label":"Upload","upload_popup.title":"Multi-file upload"},"ibexa_notifications":{"ibexa_notifications":"Notifications","menu.notification":"View Notifications","notification.date":"Date","notification.description":"Description","notification.permanently_deleted":"Deleted","notification.trashed":"Sent to Trash","notification.type":"Type","notifications.modal.message.error":"Cannot update notifications"},"ibexa_search":{"autocomplete.no_results":"No suggestions available.","autocomplete.request.error":"Cannot load suggestions","autocomplete.results_count":"Results","autocomplete.view_all_results":"View all results","global_search.focus.hint":"Search","header.search":"Search...","search":"Search","search.any.content.type":"Any content type","search.any_time":"Any time","search.apply":"Apply","search.clear":"Clear","search.content.type":"Content type","search.created":"Created","search.creator":"Creator","search.creator_input.placeholder":"Type creator's name","search.custom_range":"Custom range","search.date.range":"From date - to date","search.empty.subtitle":"Enter the phrase to find","search.empty.title":"No search items","search.filters.title":"Filters","search.in_language":"in %search_language%","search.language":"Language","search.last.modified":"Last modified","search.last_month":"Last month","search.last_week":"Last week","search.last_year":"Last year","search.location":"Location","search.modified":"Modified","search.name":"Name","search.no_results.hint.check_spelling":"Check the spelling of keywords.","search.no_results.hint.different_kewords":"Try different keywords.","search.no_results.hint.fewer_keywords":"Try fewer keywords. Reducing keywords results in more matches.","search.no_results.hint.more_general":"Try more general keywords.","search.no_results.title":"No results found for \"%query%\"","search.results_for":"Results for \u201c%search_phrase%\u201d (%total%)","search.section":"Section","search.spellcheck.suggestion":"Did you mean %s?","search.subtree":"Subtree","search.subtree.label":"Subtree","search.translation":"Translation","search.type":"Content type","pagination.viewing":"Viewing %viewing% out of %total% items","search.header":"Search results (%total%)","search.language.any":"Choose an option","search.no_result":"No results found for \"%query%\".","search.search":"Search","search.section.any":"All","search.tips.check_spelling":"Check the spelling of keywords.","search.tips.different_keywords":"Try different keywords.","search.tips.fewer_keywords":"Try fewer keywords. Reducing keywords results in more matches.","search.tips.headline":"Some helpful search tips:","search.tips.more_general_keywords":"Try more general keywords.","search.translations":"Translations","sort_definition.date_modified_asc.label":"Sort by modification date (Oldest)","sort_definition.date_modified_desc.label":"Sort by modification date (Newest)","sort_definition.date_published_asc.label":"Sort by publication date (Oldest)","sort_definition.date_published_desc.label":"Sort by publication date (Newest)","sort_definition.name_asc.label":"Sort by name A-Z","sort_definition.name_desc.label":"Sort by name Z-A","sort_definition.relevance.label":"Sort by relevance"},"ibexa_sub_items":{"add_locations_btn.label":"Add Locations","bulk_action.error.more_info":"Click here for more information.<\/a><\/u>
","bulk_action.popup.cancel":"Cancel","bulk_action.success.link_to_location":"
%locationName%<\/a><\/u>","bulk_add_location.error.message":"%failedCount% of the %totalCount% selected Locations(s) could not be added because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator to obtain permissions.","bulk_add_location.error.modal.table_title":"%itemsCount% Location(s) cannot be added","bulk_add_location.success.message":"Location(s) added to {{ locationLink }}.","bulk_delete.error.message.nonusers":"%notDeletedCount% of the %totalCount% selected item(s) could not be sent to Trash because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator.","bulk_delete.error.message.users":"%notDeletedCount% of the %totalCount% selected item(s) could not be deleted because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator.","bulk_delete.error.message.users_with_nonusers":"%notDeletedCount% of the %totalCount% selected item(s) could not be deleted or sent to Trash because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator.","bulk_delete.error.modal.table_title.nonusers":"%itemsCount% Content item(s) cannot be sent to Trash","bulk_delete.error.modal.table_title.users":"%itemsCount% User(s) cannot be deleted","bulk_delete.error.modal.table_title.users_with_nonusers":"%itemsCount% Content item(s) cannot be deleted or sent to Trash","bulk_delete.popup.confirm.nonusers":"Send to trash","bulk_delete.popup.confirm.users_and_users_with_nonusers":"Delete","bulk_delete.popup.message.nonusers":"Are you sure you want to send the selected Content item(s) to Trash?","bulk_delete.popup.message.users":"Are you sure you want to delete the selected user(s)?","bulk_delete.popup.message.users_with_nonusers":"Are you sure you want to delete the selected user(s) and send the other selected Content item(s) to Trash?","bulk_delete.success.message.nonusers":"Content item(s) sent to Trash.","bulk_delete.success.message.users":"User(s) deleted.","bulk_delete.success.message.users_with_nonusers":"Content item(s) sent to Trash. User(s) deleted.","bulk_hide.error.message":"%failedCount% of the %totalCount% selected item(s) could not be hidden because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator to obtain permissions.","bulk_hide.error.modal.table_title":"%itemsCount% Content item(s) cannot be hidden","bulk_hide.popup.confirm":"Hide","bulk_hide.popup.message":"Are you sure you want to hide the selected Location(s)?","bulk_hide.success.message":"Location(s) hidden.","bulk_move.error.message":"%notMovedCount% of the %totalCount% selected item(s) could not be moved because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator.","bulk_move.error.modal.table_title":"%itemsCount% Content items cannot be moved","bulk_move.success.message":"Content item(s) sent to {{ locationLink }}","bulk_request.error.message":"An unexpected error occurred while processing the Content item(s). Please try again later.","bulk_unhide.error.message":"%failedCount% of the %totalCount% selected Location(s) could not be revealed because you do not have proper user permissions. {{ moreInformationLink }} Contact your Administrator to obtain permissions.","bulk_unhide.error.modal.table_title":"%itemsCount% Location(s) cannot be revealed","bulk_unhide.popup.confirm":"Reveal","bulk_unhide.popup.message":"Are you sure you want to reveal the selected Location(s)?","bulk_unhide.success.message":"The selected location(s) have been revealed.","edit_item_btn.label":"Edit","hide_locations_btn.label":"Hide","instant.filter.placeholder":"Search by content type","items_list.title":"Sub-items","items_table.columns.content_type":"Content type","items_table.columns.contributor":"Contributor","items_table.columns.creator":"Creator","items_table.columns.location_id":"Location ID","items_table.columns.location_remote_id":"Location remote ID","items_table.columns.modified":"Modified","items_table.columns.name":"Name","items_table.columns.object_id":"Object ID","items_table.columns.object_remote_id":"Object remote ID","items_table.columns.priority":"Priority","items_table.columns.pubished":"Published","items_table.columns.section":"Section","items_table.columns.translations":"Translations","items_table.columns.visibility":"Visibility","items_table.row.not_visible.label":"Not Visible","items_table.row.visible.label":"Visible","languages.modal.label":"Select language","move_btn.label":"Move","no_items.action":"Add sub-items by uploading or use the \u2018Create\u2019 button in the top right corner to populate this section.","no_items.info":"Add first sub-item","trash_btn.label":"Delete","udw.choose_location.title":"Choose Location","unhide_locations_btn.label":"Reveal","view_columns_toggler.label":"Columns","view_switcher.grid_view":"Grid view","view_switcher.list_view":"List view","view_switcher.view":"View"},"ibexa_trash_ui":{"trash.user_list.error":"Cannot fetch user list"},"ibexa_universal_discovery_widget":{"actions_menu.cancel":"Discard","actions_menu.confirm":"Confirm","add_location.title":"Select Location","bookmarks.label":"Bookmarks","breadcrumbs.root_location":"Root Location","browse.label":"Browse","browse.title":"Browse content","close.label":"Close","content.create.editing_details":"Location: %location%","content.create.filters.desc":"Select a content type from list","content_create.cancel.label":"Discard","content_create.label":"Content create","content_create.placeholder":"Search by content type","content_edit.label":"Content edit","content_table.content_type":"Content type","content_table.modified":"Modified","content_table.name":"Name","copy.title":"Select Location","create_content.create":"Create","create_content.label":"Create content","create_content.select_language":"Select a language","dashboard.create.title":"Create content","dropdown.placeholder":"Search...","ezimageasset.title":"Select Image Asset","ezobjectrelationlist.title.multi":"Select Content item(s)","ezobjectrelationlist.title.single":"Select a Content item","filters.apply":"Apply","filters.clear":"Clear","filters.language":"Language","filters.section":"Section","filters.subtree":"Subtree","filters.tag_view_change.select":"Change content","filters.tag_view_select.select":"Select content","filters.title":"Filters","limitation.pick.error":"Could not fetch content names","meta_preview.bookmarks_add":"Add to bookmarks","meta_preview.bookrmarks_remove":"Remove from bookmarks","meta_preview.creation_date":"Created","meta_preview.edit":"Edit","meta_preview.edit_translation":"Select translation","meta_preview.last_modified":"Modified","meta_preview.preview":"Preview","meta_preview.translations":"Translations","move.title":"Select destination","pagination.info.viewing_message":"Viewing %viewingCount% out of %totalCount% items","popup.close.label":"Close","restore_under_new_location.title":"Select a new location to restore the content items","search.label":"Search","search.no_results":"No results found for %query%","search.no_results.hint.check_spelling":"Check the spelling of keywords.","search.no_results.hint.different_kewords":"Try different keywords.","search.no_results.hint.fewer_keywords":"Try fewer keywords. Reducing keywords results in more matches.","search.no_results.hint.more_general":"Try more general keywords.","search.placeholder":"Search...","search.search_results":"Results for \u201c%search_phrase%\u201d (%total%)","search.search_results.clear_btn.label":"Clear results","search.search_results.in_language":"in %search_language%","select_location.error":"Cannot find children Locations with ID %idList%","selected_locations.clear_selection":"Clear selection","selected_locations.collapse.sidebar":"Collapse sidebar","selected_locations.deselect_all":"{1}Deselect|[2,Inf]Deselect all","selected_locations.expand.sidebar":"Expand sidebar","selected_locations.selected_items":"{1}%count% selected item|[2,Inf]%count% selected items","sorting.date.label":"Date","sorting.date.selected_label":"Sort by date","sorting.grid.view":"Grid view","sorting.name.asc.label":"Name A-Z","sorting.name.asc.selected_label":"Sort by name A-Z","sorting.name.desc.label":"Name Z-A","sorting.name.desc.selected_label":"Sort by name Z-A","sorting.panels.view":"Panels view","sorting.tree.view":"Tree view","subtree.title":"Select Location","subtree_limitation.title":"Choose Locations","swap.title":"Select Location to swap with","view_switcher.view":"View","actions.assign_content.udw_title":"Select Content to assign"},"ibexa_user_invitation":{"ibexa.user.invitations.invitation_exist":"Invitation for %email% already exists","ibexa.user.invitations.success":"Invitations sent","ibexa.user.invitations.user_exist":"User with %email% already exists","modal.add_next":"Add next","modal.cancel.label":"Cancel","modal.drop":"Drag and drop file","modal.entry_issues.alert.duplicate_emails":"Duplicated emails (%count%)","modal.entry_issues.alert.empty_emails":"Empty emails (%count%)","modal.entry_issues.alert.go_to_next":"Go to next issue","modal.entry_issues.alert.invalid_emails":"Invalid emails (%count%)","modal.entry_issues.alert.message":"Please review the problems below.","modal.file_uploaded.message":"File %fileName% was uploaded","modal.issue.bad_file.alert.message":"This file has no valid entries or may be empty.
Check your file and try again.","modal.issue.email.empty.message":"Email cannot be empty","modal.issue.email.invalid.message":"Invalid email format","modal.issue.entry.deuplicate.merged":"Merged","modal.or":"or","modal.or_upload":"Or upload a file with one email address per line","modal.search.no_entries":"No entries match search.","modal.search.placeholder":"Search...","modal.submit.label":"Send","modal.title":"Invite members (%invitations_count%)","modal.upload_local":"Upload a local file","ibexa.user.invitation.mail.message":"Hello,\n Join us at: %invite_link%\n ","ibexa.user.invitation.mail.subject":"You are invited to join","user_invitation.send.invitation_exist":"Invitation for '%email%' already exists.","user_invitation.send.success":"Invitation sent to '%email%' updated.","user_invitation.send.user_exist":"User with '%email%' already exists.","user_invitation.send.reinvite":"Reinvited '%email%'.","user_invitation.send.resend":"Invitation to '%email%' resend."},"ibexa_calendar_events":{"future_hide.action.reschedule.label":"Reschedule","future_hide.action.unschedule.label":"Cancel hiding","future_hide.attribute.content_type.label":"Content type","future_hide.label":"Content hide","future_publication.action.reschedule.label":"Reschedule","future_publication.action.unschedule.label":"Cancel publication","future_publication.attribute.content_type.label":"Content type","future_publication.attribute.modified_language.label":"Modified language","future_publication.label":"Content publication","modal.discard.button.cancel.label":"Cancel","modal.discard.button.confirm.label":"Cancel publication","modal.discard.header":"Are you sure you want to cancel the publication of the selected content?","modal.discard.table.event.label":"Event","modal.discard.table.header":"Selected content (%eventsCount%)","modal.discard.table.language.label":"Modified language","modal.discard.table.name.label":"Name","modal.future_hide.discard.button.cancel.label":"Cancel","modal.future_hide.discard.button.confirm.label":"Cancel hiding","modal.future_hide.discard.header":"Are you sure you want to cancel the hide of the selected content?","modal.future_hide.discard.table.event.label":"Event","modal.future_hide.discard.table.name.label":"Name","modal.future_hide.reschedule.button.cancel.label":"Cancel","modal.future_hide.reschedule.button.confirm.label":"Confirm rescheduling","modal.future_hide.reschedule.date_picker.label":"Date and time","modal.future_hide.reschedule.header":"Reschedule hide","modal.reschedule.button.cancel.label":"Cancel","modal.reschedule.button.confirm.label":"Confirm rescheduling","modal.reschedule.date_picker.label":"Date and time","modal.reschedule.header":"Reschedule publication","reschedule.error.message":"Cannot reschedule","unschedule.error.message":"Cannot cancel selected publication(s)","unschedule.future_hide.error.message":"Cannot cancel selected hide(s)","page_block_hide.label":"Future hide","page_block_reveal.label":"Future reveal","page_block_visibility.attribute.block_type.label":"Block type","page_block_visibility.attribute.content_name.label":"Content Name","page_block_visibility.attribute.content_type.label":"Content type","page_block_visibility.attribute.modified_language.label":"Modified language"},"ibexa_scheduler":{"content.deleted":"Content deleted","content.hidden":"Content hidden","content.in_review":"Content sent to review","content.publish_later.read_more":"Read more","content.published":"Content published","content.reveal.modal.cancel":"Cancel","content.reveal.modal.confirm":"Cancel scheduled hiding","content.reveal.modal.warning_cancel_schedule":"Are you sure you want to cancel the scheduled hiding of the selected content?","content.scheduled.canceled":"Canceled scheduled publication","content.scheduled.hidden":"Hidden scheduled content","content.scheduled.published":"Published scheduled content","content.scheduled.title":"Title:","content.scheduled_hide.action.cancel":"Cancel","content.scheduled_hide.message":"This Content item will be hidden and won't be publicly available after %date%","content.trashed":"Content moved to Trash","content.updated":"Content updated","dashboard.all_scheduled.table.header":"All scheduled content","dashboard.all_scheduled.table.reschedule_btn.title":"Reschedule","dashboard.all_scheduled.table.reschedule_modal.table.title":"Selected content","dashboard.all_scheduled.table.reschedule_modal.title":"Reschedule","dashboard.all_scheduled.table.unschedule_btn.title":"Cancel publication","dashboard.all_scheduled.table.unschedule_modal.table.title":"Selected content","dashboard.my_scheduled.table.header":"My scheduled content","dashboard.my_scheduled.table.reschedule_btn.title":"Reschedule","dashboard.my_scheduled.table.reschedule_modal.table.title":"Selected content","dashboard.my_scheduled.table.reschedule_modal.title":"Reschedule","dashboard.my_scheduled.table.unschedule_btn.title":"Cancel publication","dashboard.my_scheduled.table.unschedule_modal.table.title":"Selected content","dashboard.my_scheduled.table.unschedule_modal.title":"Cancel publication","dashboard.scheduling.modal.content_type":"Content type","dashboard.scheduling.modal.creation_date":"Creation date","dashboard.scheduling.modal.creator":"Creator","dashboard.scheduling.modal.date_and_time":"Date and time","dashboard.scheduling.modal.name":"Name","dashboard.scheduling.modal.translations":"Translations","dashboard.scheduling.modal.version":"Version","dashboard.tab.all_scheduled.empty":"There is no scheduled content yet.","dashboard.tab.my_scheduled.empty":"There is no scheduled content yet.","dashboard.table.content_type":"Content type","dashboard.table.contributor":"Contributor","dashboard.table.date":"Publication date","dashboard.table.edit":"Edit","dashboard.table.last_saved":"Last saved","dashboard.table.name":"Name","date_based_publisher.discard.publish_later":"Canceled scheduled publication.","date_based_publisher.error.discard.publish_later":"Cannot cancel future publication: %reason%","date_based_publisher.error.publish_later":"Cannot schedule content: %reason%","date_based_publisher.success.publish_later":"Scheduled content for publication.","discard_schedule_publish":"discard_schedule_publish","menu.date_based_publisher":"Publish later","menu.date_based_publisher.discard":"Discard publish later","modal.scheduling.button.cancel.label":"Cancel","modal.scheduling.button.confirm.label":"Confirm date change","modal.scheduling.button.discard.label":"Cancel publication","modal.scheduling.date_picker.label":"Set publication date","publish_later.confirm":"Confirm","publish_later.date_and_time":"Date and time","publish_later.settings":"Future publication settings","reschedule.error.message":"An unexpected error occurred while rescheduling the selected draft(s). Please try again.","reschedule.fail.message":"%failedCount% out of %totalCount% selected drafts could not be rescheduled. Please try again.","reschedule.success.message":"Rescheduled all drafts.","schedule.content.cancel_schedule_hide.success":"Canceled scheduled hiding of Content item '%name%'.","schedule.content.hide_hidden.error":"Cannot hide or schedule hiding the currently hidden content: '%name%'.","schedule.content.hide_now.success":"Content item '%name%' hidden.","schedule.content.schedule_hide.success":"Scheduled Content item '%name%' to hide.","schedule_hide.date_and_time":"Date and time","schedule_hide.title":"Schedule hiding","schedule_publish":"schedule_publish","tab.name.all_scheduled":"Scheduled","tab.name.my_scheduled":"Scheduled","unschedule.error.message":"An error occurred while removing the selected publication dates. Please try again.","unschedule.fail.message":"%failedCount% out of %totalCount% selected publication dates could not be removed. Please try again.","unschedule.success.message":"Removed all selected publication dates.","version.deleted":"Version deleted"},"ibexa_calendar_widget":{"calendar.collapse.sidebar":"Collapse sidebar","calendar.date_paginator.today":"Today","calendar.deselect_all":"Deselect all","calendar.expand.sidebar":"Expand sidebar","calendar.filters.all_langauges":"All languages","calendar.filters.label":"Filters","calendar.filters.modified_langauge":"Modified language","calendar.filters.types":"Types","calendar.headline":"Scheduled content","calendar.list_view.action_message":"To continue, click 'Refresh list'. The selected list will update and the new item will be added to the list","calendar.list_view.no_events":"No events to show.","calendar.load_events.error.message":"Cannot load calendar data","calendar.load_more_btn.label":"Load More","calendar.remove":"Remove","calendar.selection_confirmation_popup.cancel.btn":"Cancel","calendar.selection_confirmation_popup.confirm.btn":"Refresh list","calendar.selection_confirmation_popup.message":"This event has different actions from the items currently selected in the list.","calendar.selection_confirmation_popup.no_events":"Conflict when selecting items","calendar.selection_sidebar.selected_info":"selected","calendar.time_pm_symbol":"PM","calendar.tooltips.backward":"Backward","calendar.tooltips.forward":"Forward","calendar.view_switcher.day":"Day","calendar.view_switcher.month":"Month","calendar.view_switcher.week":"Week","view_toggler.calendar_view":"Calendar view","view_toggler.list_view":"List view","view_toggler.view":"View"},"ibexa_page_builder":{"block.personalization.add":"Add","block.personalization.label.output_type":"Output type","block.personalization.label.scenario":"Scenario","block.personalization.label.segment":"Segment","personalization.page_builder.block.bestsellers":"Bestsellers","personalization.page_builder.block.last_purchased":"Last purchased","personalization.page_builder.block.last_viewed":"Last viewed","personalization.page_builder.block.recently_added":"Recently added","airtime_popup.discard.btn":"Cancel","airtime_popup.submit.btn":"Submit","airtime_popup.title":"Content airtime settings","block.cannot_update":"Cannot update blocks preview","block.copy":"Copy","block.delete":"Delete","block.duplicate":"Duplicate","block.move.down":"Move down block","block.move.up":"Move up block","block.name.duplicate":"%block_name% [duplicate]","block.no_availability":"One or more blocks is not available in this page","block.no_availability.content":"You have to delete it to publish","block.no_availability.delete":"Delete","block.no_availability.title":"This element is not available in this page","block.refresh":"Refresh","block.settings":"Block settings","block_filter.placeholder":"Search...","clipboard":"Clipboard","clipboard.get_item.error":"Cannot get block from clipboard.","clipboard.set_item.error":"Cannot copy block to clipboard.","clipboard.set_item.success":"Block %name% has been copied successfully.","config_form.block_config.embed_field_base.udw.title":"Browse content","config_form.widgets.collection.udw.title":"Select content","config_form.widgets.schedule.udw.title":"Select content","config_panel.save_and_close":"Save and close","config_popup.close.label":"Close","creating":"Creating %content_type_name%","date_picker.label":"Date and time","drag.drop.blocks.here":"Drag and drop blocks here","editing":"Editing %content_type_name%","error.message":"Something went wrong","fields_editing_details":"Location: %location% in %language_name%","fieldtype.landing_page.missing_proper_configuration.error.message":"Some blocks are missing configuration","layout_selector.create.select.label":"Select","layout_selector.create.subtitle":"Choose layout","layout_selector.create.title":"Select layout","layout_selector.discard.label":"Discard","layout_selector.error.change_layout":"Change layout","layout_selector.error.label":"The layout of this landing page is no longer available and you cannot publish it. Please select a different layout.","layout_selector.switch.confirm.label":"Submit","layout_selector.switch.title":"Switch layout","layout_selector.warning.message":"Switching layout saves the current Page draft","notification.no_dropzone":"This page does not have a designed dropzone area for adding content","notification.no_zones_in_template":"There is no added zones in template","settings.popup.add_block_info":"When you add a block by dragging it from Page blocks menu into the drop zone, the block settings panel opens immediately where you can configure all block properties.","settings.popup.change_settings":"Change settings","settings.popup.continue":"Continue","settings.popup.default_behaviour":"This is a default behavior which applies to both Page and Dashboard builder. You can globally turn off automatic opening of the block settings panel in the user settings.","settings.popup.title":"How builder works","sidebar.title":"Elements","structure.action.configuration":"Configuration","structure.action.copy":"Copy","structure.action.duplicate":"Duplicate","structure.action.move.down":"Move down","structure.action.move.up":"Move up","structure.action.refresh":"Refresh","structure.drop.zone":"Drop zone %number%","switch_layout.label":"Switch layout","toolbox.structure.view":"Structure view","toolbox.title":"Page blocks","user.settings.automatically_open_block_settings.description":"Automatically open block settings in builders","user.settings.automatically_open_block_settings.name":"Automatically open block settings in builders","user.settings.automatically_open_block_settings.value.disabled":"Disabled","user.settings.automatically_open_block_settings.value.enabled":"Enabled","block.segmentation.add":"Add","block.segmentation.label.content":"Content","block.segmentation.label.segment":"Segment","config_form.widgets.segmentation.udw.title":"Select content","segments.config_panel.more_button":"More","segments.config_panel.none_option.label":"None","segments.config_panel.title":"Segments","select_location.error":"Cannot find children Locations with ID %idList%","targeted_content_map.no_configuration":"No segments defined. Create Segments in the Admin panel to use this block.","visibility.action_btn.close":"Save and close","visibility.action_btn.title":"Visibility"},"ibexa_personalization":{"account.copied":"Copied","account.create.name":"Account name","account.create.next":"Next","account.create.type":"Type","account.details.id":"ID","account.details.license_key":"Licence key","account.details.pass_credentials":"Pass the credentials to your administrator to finish service account setup and start using the Personalization service.","account.set_up.service":"Set up service account","account.type.commerce":"Commerce","account.type.publisher":"Publisher","activation_status.form.email":"Email","activation_status.form.full_name":"Full name","activation_status.form.terms_and_conditions":"I have read and agree to the Terms and Conditions","breadcrumb.import":"Import","breadcrumb.models":"Models","breadcrumb.personalization":"Personalization","breadcrumb.scenarios":"Scenarios","cannot_create_account":"Failed to create new account. Please try again later","category_path_select.select_path":"Select path","category_path_select.select_path.custom.btn.title":"Add","category_path_select.select_path.custom.label":"Path","category_path_select.select_path.or":"Or","category_path_select.select_path.title":"Set up a category path","category_path_select.select_path_udw_title":"Select path","chart.items_purchased":"Items purchased","chart.revenue":"Revenue","chart.total":"Total","create_account.step":"Step %no%","dashboard.clicked":"Clicked","dashboard.item_type":"Item type","dashboard.no_popularity_items":"No popularity items","dashboard.recommendation_performance.recommendations_performance":"Recommendations performance","dashboard.recommended":"Recommended","dashboard.summary.clicked_recommendations":"Clicked recommendations","dashboard.summary.events_collected":"Events collected","dashboard.summary.imported_items":"Imported items","dashboard.summary.last_30_days":"Last 30 days","dashboard.summary.last_update":"Last update %date%","dashboard.summary.previous_month":"Previous month %value%","dashboard.summary.recommendation_calls":"Recommendation calls","dashboard.title":"Item clicked","dashboard.top_clicked_items":"Top 10 clicked items","delete":"Delete","failed_to_trigger_model_build":"Failed to trigger model build","form.scenario.model_data_type":"Data type","form.scenario.model_data_type.default":"Default","form.scenario.model_data_type.segments":"Segments","form.scenario.model_data_type.submodels":"Submodels","ibexa_personalization.dashboard.date_of_purchase":"Date of purchase","ibexa_personalization.dashboard.item_bought":"Item bought","ibexa_personalization.dashboard.no_products_purchased":"No products purchased","ibexa_personalization.dashboard.price":"Price","ibexa_personalization.date_time_range.custom_range":"Custom range","ibexa_personalization.date_time_range.last_24h":"Last 24h","ibexa_personalization.date_time_range.last_30_days":"Last 30 days","ibexa_personalization.date_time_range.last_7_days":"Last 7 days","ibexa_personalization.date_time_range.last_month":"Last month","ibexa_personalization.scenario.commerce_settings":"Commerce settings","ibexa_personalization.scenario.description":"Scenario description","ibexa_personalization.scenario.details.details":"Scenario details","ibexa_personalization.scenario.edit_short":"Edit","ibexa_personalization.scenario.id":"Scenario ID","ibexa_personalization.scenario.input_type":"Input type","ibexa_personalization.scenario.output_type":"Output type","ibexa_personalization.scenario.output_type_all":"All","ibexa_personalization.scenario.scenario_name":"Scenario name","ibexa_personalization.scenario.strategy":"Strategy","ibexa_personalization.scenario.undefined":"Undefined","ibexa_personalization.scenario.user_profile_setting":"User profile setting","import":"Import","import.imported_items":"Imported items","import.item_type":"Item type","import.item_type_id":"Item type ID","import.language":"Language","import.last_update":"Last update","import.no_items_imported":"No items imported","import.table_title":"Imported items","model.details.active":"Active","model.details.description":"Model description","model.details.event_history":"Relevant event history","model.details.general":"General","model.details.identifier":"Identifier","model.details.item_age.title":"Item age","model.details.last_build":"Last build","model.details.name":"Name","model.details.not_active":"Not active","model.details.number_recommendations":"Number of recommendations","model.details.relevant_history.title":"Relevant history","model.details.status":"Status","model.details.submodels":"Submodels","model.details.used_scenario":"Used in scenario","model.edit.actino_name":"Editing","model.edit.anchor_navigation.segments":"Segments","model.edit.anchor_navigation.submodels":"Submodels","model.edit.editorial_list.title":"Editor content list","model.edit.submodels.sidebar.empty.img":"Empty library","model.edit.submodels.sidebar.empty.library":"Your library is empty","model.edit.submodels.sidebar.title":"Library","model.edit_short":"Edit","model.quantifier.day":"Day","model.quantifier.hour":"Hour","model_build.state.active":"Active","model_build.state.build_in_progress":"Build in progress","model_build.state.failed":"Failed","model_build_has_been_triggered":"Model build has been triggered","models":"Models","models.description.CF_I2Ix":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.POPULARITY_LONGx":"Most popular content based on a weighted amount of consumes","models.description.POPULARITY_SHORTx":"Most popular content based on a weighted amount of consumes","models.description.RANDOM_DOMAINx":"Random model","models.description.STEREOTYPES_CFx":"Enables personalized recommendation based on clusters from user behaviour or content information","models.description._todelete_also_purchased":"User who bought this item (movie, etc.), also bought the following items","models.description._todelete_top_selling":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description._todelete_ultimately_bought":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.adv_also_clicked":"adv_also_clicked","models.description.adv_also_clicked_2":"adv_also_clicked_2","models.description.adv_also_clicked_3":"adv_also_clicked_3","models.description.adv_also_purchased":"adv_also_purchased","models.description.adv_also_purchased_2":"adv_also_purchased_2","models.description.adv_also_purchased_3":"adv_also_purchased_3","models.description.adv_ultimately_basket":"adv_ultimately_basket","models.description.also_clicked":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.also_clicked2":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.also_clicked3":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.also_clicked_article":"also_clicked_article","models.description.also_clicked_article_to_product":"also_clicked_article_to_product","models.description.also_clicked_image":"also_clicked_image","models.description.also_clicked_product":"also_clicked_product","models.description.also_consumed":"User who consumed this content(read article, view image, etc.), also consumed the following content","models.description.also_consumed2":"User who consumed this content(read article, view image, etc.), also consumed the following content","models.description.also_consumed_article":"also_consumed_article","models.description.also_consumed_image":"also_consumed_image","models.description.also_followed":"User who consumed this content(read article, view image, etc.), also consumed the following content","models.description.also_purchased":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased2":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased3":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased4":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased_2":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased_3":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased_article_to_product":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.also_purchased_product":"User who bought this item (movie, etc.), also bought the following items","models.description.also_purchased_short":"User who bought this item (movie, etc.), also bought the following items","models.description.also_similar_rated":"Items that were similarly rated by users.","models.description.alternative":"Configure static recommendations based on an editorial list","models.description.b2b_last_clicked":"Model shows which items were recently clicked for a particular segment group of a company.","models.description.b2b_last_purchased":"Model shows which items were recently purchased for a particular segment group of a company.","models.description.basket_history":"Shows the customer what they added to the basket in the past","models.description.bundle0":"Configure static recommendations based on an editorial list","models.description.bundle2":"Configure static recommendations based on an editorial list","models.description.bundle3":"Configure static recommendations based on an editorial list","models.description.cb":"cb","models.description.cf_click":"cf_click","models.description.cf_fbt":"Items that were often bought together like a TV and cable. The current item is always included in the recommendations.","models.description.cf_fbt2":"Items that were often bought together like a TV and cable. The current item is always included in the recommendations.","models.description.cf_purchased":"cf_purchased","models.description.cf_purchased_after_clicked":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.click2buy":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.click2click":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.click_after_consumed":"User who clicked on this content (article, image, etc), immediately after consumed the following content","models.description.click_to_purchased":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.consume2consume":"User who consumed this content(read article, view image, etc.), also consumed the following content","models.description.custom_model":"Items that were similarly rated by users.","models.description.e1":"Configure static recommendations based on an editorial list","models.description.e2":"Configure static recommendations based on an editorial list","models.description.editor_1":"Configure static recommendations based on an editorial list","models.description.editor_2":"Configure static recommendations based on an editorial list","models.description.editor_blacklist":"With a global blacklist predefined items can be filtered out of requested recommendations","models.description.editor_blocklist":"Items from this list are not recommended in any scenario","models.description.editorial_list":"Configure static recommendations based on an editorial list","models.description.editorial_list2":"Configure static recommendations based on an editorial list","models.description.editorial_list3":"Configure static recommendations based on an editorial list","models.description.editorial_list4":"Configure static recommendations based on an editorial list","models.description.editorial_list5":"Configure static recommendations based on an editorial list","models.description.editorial_list6":"Configure static recommendations based on an editorial list","models.description.editorial_list7":"Configure static recommendations based on an editorial list","models.description.editorial_list_2":"Configure static recommendations based on an editorial list","models.description.editorial_list_3":"Configure static recommendations based on an editorial list","models.description.editorial_list_article":"Configure static recommendations based on an editorial list","models.description.editorial_list_b":"Configure static recommendations based on an editorial list","models.description.editorial_list_bestselger":"Configure static recommendations based on an editorial list","models.description.editorial_list_blog":"Configure static recommendations based on an editorial list","models.description.editorial_list_crossselling":"Configure static recommendations based on an editorial list","models.description.editorial_list_front":"Configure static recommendations based on an editorial list","models.description.editorial_list_kommende":"Configure static recommendations based on an editorial list","models.description.editorial_list_landingpage":"Configure static recommendations based on an editorial list","models.description.editorial_list_nyheter":"Configure static recommendations based on an editorial list","models.description.editorial_list_personalized":"Configure static recommendations based on an editorial list","models.description.editorial_list_related":"Configure static recommendations based on an editorial list","models.description.editorial_list_tilbudstorget":"Configure static recommendations based on an editorial list","models.description.editorial_list_toppti":"Configure static recommendations based on an editorial list","models.description.editorial_list_upselling":"Configure static recommendations based on an editorial list","models.description.el_articles":"Configure static recommendations based on an editorial list","models.description.el_blogposts":"Configure static recommendations based on an editorial list","models.description.el_personalized":"Configure static recommendations based on an editorial list","models.description.el_places":"Configure static recommendations based on an editorial list","models.description.el_products":"Configure static recommendations based on an editorial list","models.description.girlmerry":"User who clicked on this item (article, image, etc.), also clicked on the following items","models.description.history":"history","models.description.history_blacklist":"history_blacklist","models.description.history_buy":"history_buy","models.description.history_clicked":"Show the customer what he already viewed","models.description.history_clicked1":"history_clicked1","models.description.history_clicked_in_period":"Returns items user clicked the most within a configured time period. The items clicked more than once have higher priority.","models.description.history_consumed":"history_consumed","models.description.history_purchased":"history_purchased","models.description.history_purchased_in_period":"Shows the customer what they already purchased.","models.description.last_clicked":"Shows the last (based on the timestamp), for example, 5 clicked items.","models.description.last_purchased":"Shows the last (based on the timestamp), for example, 5 items purchased by all users.","models.description.ml_cp_also_clicked":"Also clicked model supported by Machine Learning mechanism that has been trained to recognize certain types of patterns.","models.description.ml_cp_top_clicked":"Top clicked model supported by Machine Learning mechanism that has been trained to recognize certain types of patterns.","models.description.ml_model":"A Machine Learning model is a mechanism that can find patterns or make decisions from a previously unseen dataset.","models.description.popular":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.popular_click":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.popular_predicted":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.predictive_model":"Foresees user\u2019s purchase behavior and trends and recommends items based on this behavior","models.description.profile":"profile","models.description.profile_buy":"profile_buy","models.description.profile_click":"profile_click","models.description.purchased_together":"Model Purchased together refers to a data analysis technique that identifies patterns of items frequently bought together by customers","models.description.random":" Returns list of items from the recent items added in a configured time period.","models.description.random_emdsartikel":"Configure static recommendations based on an editorial list","models.description.random_short":"Random model","models.description.rated":"Items that were similarly rated by users.","models.description.recently_bought":"recently_bought","models.description.recently_clicked":"recently_clicked","models.description.recurring_purchase":"Recognizes purchase patterns and returns recommendations for items where these patterns can occur.","models.description.s1":"Configure static recommendations based on an editorial list","models.description.s2":"Configure static recommendations based on an editorial list","models.description.similar_rated":"Items that were similarly rated by users.","models.description.stereotypes_cf":"Enables personalized recommendation based on clusters from user behaviour or content information","models.description.suggestion":"suggestion","models.description.top_buy_weighted":"Returns items which purchase date is closer to date of the request for these items.","models.description.top_clicked":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked2":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_2":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_article":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_image":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_long":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_product":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_short":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_clicked_weighted":"Returns items which click date is closer to date of the request for these items.","models.description.top_consumed":"Most popular content based on a weighted amount of consumes","models.description.top_consumed_article":"Most popular content based on a weighted amount of consumes","models.description.top_consumed_image":"Most popular content based on a weighted amount of consumes","models.description.top_consumed_long":"Most popular content based on a weighted amount of consumes","models.description.top_consumed_short":"Most popular content based on a weighted amount of consumes","models.description.top_purchased":"Most popular content (product, article, etc.) based on a weighted overall usage history","models.description.top_purchased_2":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.top_purchased_3":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.top_purchased_product":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.top_rated":"Most popular content based on a weighted amount of ratings","models.description.top_selling":"Most popular content (product, article, etc.) based on a weighted purchase history","models.description.ultimately_bought":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.ultimately_consumed":"User who clicked on this content (article, image, etc), immediately after consumed the following content","models.description.ultimately_purchased":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.ultimately_purchased_2":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.ultimately_purchased_3":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.ultimately_purchased_long":"User who clicked on this content (articles, images, etc), also bought the following products","models.description.upheaval":"upheaval","models.description.upheaval_ctb":"upheaval_ctb","models.description.upheaval_ctbuy":"upheaval_ctbuy","models.description.upheaval_ctc":"upheaval_ctc","models.description.user_last_clicked":"Shows the last (based on the timestamp), for example, 5 articles clicked by a user.","models.description.user_last_purchased":"Returns the last (based on the timestamp), for example, 5 items purchased by a user.","models.details.range.from":"From","models.details.range.to":"to","models.edit.editorial_list.add_items":"Add items","models.list.active":"Active","models.list.id":"Identifier","models.list.in_scenario":"In scenario","models.list.last_built":"Last built","models.list.name":"Model name","models.list.no_of_items":"No. of items","models.list.not_active":"Not Active","models.list.status":"Status","models.list.submodel":"Submodel","models.name.CF_I2Ix":"Also clicked","models.name.POPULARITY_LONGx":"Top consumed","models.name.POPULARITY_SHORTx":"Top consumed","models.name.RANDOM_DOMAINx":"Random model","models.name.STEREOTYPES_CFx":"Stereotype (consume)","models.name._todelete_also_purchased":"Also purchased","models.name._todelete_top_selling":"Top purchased","models.name._todelete_ultimately_bought":"Ultimately bought","models.name.adv_also_clicked":"Adv also clicked","models.name.adv_also_clicked_2":"Adv also clicked 2","models.name.adv_also_clicked_3":"Adv also clicked 3","models.name.adv_also_purchased":"Adv also purchased","models.name.adv_also_purchased_2":"Adv also purchased 2","models.name.adv_also_purchased_3":"Adv also purchased 3","models.name.adv_ultimately_basket":"Adv ultimately basket","models.name.also_clicked":"Also clicked","models.name.also_clicked2":"Also clicked","models.name.also_clicked3":"Also clicked","models.name.also_clicked_article":"Also clicked article","models.name.also_clicked_article_to_product":"Also clicked article to product","models.name.also_clicked_image":"Also clicked image","models.name.also_clicked_product":"Also clicked product","models.name.also_consumed":"Also consumed","models.name.also_consumed2":"Also consumed","models.name.also_consumed_article":"Also consumed article","models.name.also_consumed_image":"Also consumed image","models.name.also_followed":"Also consumed","models.name.also_purchased":"Also purchased","models.name.also_purchased2":"Also purchased","models.name.also_purchased3":"Also purchased","models.name.also_purchased4":"Also purchased","models.name.also_purchased_2":"Also purchased","models.name.also_purchased_3":"Also purchased","models.name.also_purchased_article_to_product ":"Also clicked","models.name.also_purchased_product":"Also purchased","models.name.also_purchased_short":"Also purchased","models.name.also_similar_rated":"Similar rated","models.name.alternative":"Editorial list","models.name.b2b_last_clicked":"B2B last clicked","models.name.b2b_last_purchased":"B2B last purchased","models.name.basket_history":"Basket history","models.name.bundle0":"Editorial list","models.name.bundle2":"Editorial list","models.name.bundle3":"Editorial list","models.name.cb":"Cb","models.name.cf_click":"Cf click","models.name.cf_fbt":"Purchased together","models.name.cf_fbt2":"Purchased together","models.name.cf_purchased":"Cf purchased","models.name.cf_purchased_after_clicked":"Ultimately bought","models.name.click2buy":"Ultimately bought","models.name.click2click":"Also clicked","models.name.click_after_consumed":"Ultimately consumed","models.name.click_to_purchased":"Click to purchased","models.name.consume2consume":"Also consumed","models.name.custom_model":"Similar rated","models.name.e1":"Editorial list","models.name.e2":"Editorial list","models.name.editor_1":"Editorial list","models.name.editor_2":"Editorial list","models.name.editor_blacklist":"Blacklist","models.name.editor_blocklist":"Blocklist","models.name.editorial_list":"Editorial list","models.name.editorial_list2":"Editorial list","models.name.editorial_list3":"Editorial list","models.name.editorial_list4":"Editorial list","models.name.editorial_list5":"Editorial list","models.name.editorial_list6":"Editorial list","models.name.editorial_list7":"Editorial list","models.name.editorial_list_2":"Editorial list 2","models.name.editorial_list_3":"Editorial list 3","models.name.editorial_list_article":"Editorial list","models.name.editorial_list_b":"Editorial list","models.name.editorial_list_bestselger":"Editorial list","models.name.editorial_list_blog":"Editorial list","models.name.editorial_list_crossselling":"Editorial list","models.name.editorial_list_front":"Editorial list","models.name.editorial_list_kommende":"Editorial list","models.name.editorial_list_landingpage":"Editorial list","models.name.editorial_list_nyheter":"Editorial list","models.name.editorial_list_personalized":"Editorial list","models.name.editorial_list_related":"Editorial list","models.name.editorial_list_tilbudstorget":"Editorial list","models.name.editorial_list_toppti":"Editorial list","models.name.editorial_list_upselling":"Editorial list","models.name.el_articles":"Editorial list","models.name.el_blogposts":"Editorial list","models.name.el_personalized":"Editorial list","models.name.el_places":"Editorial list","models.name.el_products":"Editorial list","models.name.girlmerry":"Also clicked","models.name.history":"History","models.name.history_blacklist":"History blacklist","models.name.history_buy":"History buy","models.name.history_clicked":"History clicked","models.name.history_clicked1":"History clicked1","models.name.history_clicked_in_period":"Click history","models.name.history_consumed":"History consumed","models.name.history_purchased":"History purchased","models.name.history_purchased_in_period":"Purchase history","models.name.last_clicked":"Last viewed","models.name.last_purchased":"Last purchased","models.name.ml_cp_also_clicked":"ML - also clicked","models.name.ml_cp_top_clicked":"ML - top clicked","models.name.ml_model":"ML - dynamic pattern model","models.name.popular":"Top purchased","models.name.popular_click":"Top clicked","models.name.popular_predicted":"Top purchased","models.name.predictive_model":"Predictive model","models.name.profile":"Profile","models.name.profile_buy":"Profile buy","models.name.profile_click":"Profile click","models.name.purchased_together":"Purchased together","models.name.random":"Recently added","models.name.random_emdsartikel":"Editorial list","models.name.random_short":"Random model","models.name.rated":"Similar rated","models.name.recently_bought":"Recently bought","models.name.recently_clicked":"Recently clicked","models.name.recurring_purchase":"Recurring purchase pattern","models.name.s1":"Editorial list","models.name.s2":"Editorial list","models.name.similar_rated":"Similar rated","models.name.stereotypes_cf":"Stereotype (purchase)","models.name.suggestion":"Suggestion","models.name.top_buy_weighted":"Weighted (based on buy events)","models.name.top_clicked":"Top clicked","models.name.top_clicked2":"Top clicked","models.name.top_clicked_2":"Top clicked","models.name.top_clicked_article":"Top clicked","models.name.top_clicked_image":"Top clicked","models.name.top_clicked_long":"Top clicked","models.name.top_clicked_product":"Top clicked","models.name.top_clicked_short":"Top clicked","models.name.top_clicked_weighted":"Weighted (based on click events)","models.name.top_consumed":"Top consumed","models.name.top_consumed_article":"Top consumed","models.name.top_consumed_image":"Top consumed","models.name.top_consumed_long":"Top consumed","models.name.top_consumed_short":"Top consumed","models.name.top_purchased":"Top purchased","models.name.top_purchased_2":"Top purchased","models.name.top_purchased_3":"Top purchased","models.name.top_purchased_product":"Top purchased","models.name.top_rated":"Top rated","models.name.top_selling":"Top purchased","models.name.ultimately_bought":"Ultimately bought","models.name.ultimately_consumed":"Ultimately consumed","models.name.ultimately_purchased":"Ultimately bought","models.name.ultimately_purchased_2":"Ultimately bought","models.name.ultimately_purchased_3":"Ultimately bought","models.name.ultimately_purchased_long":"Ultimately bought","models.name.upheaval":"Upheaval","models.name.upheaval_ctb":"Upheaval ctb","models.name.upheaval_ctbuy":"Upheaval ctbuy","models.name.upheaval_ctc":"Upheaval ctc","models.name.user_last_clicked":"Last viewed by user","models.name.user_last_purchased":"Last purchased by user","models.no_items_selected":"No items selected","models.no_models_found":"No models found","models.segments.existing_groups":"Existing Groups","models.segments.group.delete_btn.label":"Delete group","models.segments.group.empty.image_alt":"Empty group, please drag some segments","models.segments.group.empty.label":"Your group is empty","models.segments.group.empty.title":"Drag and drop segments","models.segments.segments.relation.and":"and","models.segments.segments.relation.or":"or","models.segments.segments.status.active":"active","models.segments.segments.status.inactive":"inactive","models.segments.sidebar.empty.img":"Empty library","models.segments.sidebar.empty.library":"Your library is empty","models.segments.sidebar.group.available":"Available","models.segments.sidebar.group.not_available":"Not Available","models.segments.sidebar.time_period_info":"Selected timeframe %timeframe%","models.segments.sidebar.title":"Elements","models.submodel.add_group":"Add group","models.submodel.add_range":"Add range","models.submodel.delete_group":"Delete group","models.submodel.existing_groups":"Existing groups","models.submodel.existing_ranges":"Interval ranges","models.submodels.interval-ranges":"Interval ranges","models.table_title":"List (%number_of_models%)","number.format.million_abbreviation":"M","number.format.thousand_abbreviation":"K","recommendation_engine_is_not_available":"Recommendation engine is not available. Please try again later.","scenario.action_name.creating":"Creating","scenario.action_name.editing":"Editing","scenario.add_scenario":"Add scenario","scenario.commerce_settings.do_not_recommend_if_price_unknown":"Do not recommend if price unknown","scenario.commerce_settings.do_not_recommend_items_the_user_already_purchased":"Do not recommend items the user already purchased","scenario.commerce_settings.do_not_recommend_product_variants":"Do not recommend product variants (only base products will be recommended)","scenario.commerce_settings.item_price_should_equal_or_higher_than_the_price_of_the_context_item":"Item price should equal or higher than the price of the context item","scenario.commerce_settings.minimum_price_of_the_recommended_product":"Minimum price of the recommended product","scenario.commerce_settings.no_top_selling_items":"No top-selling items","scenario.create":"Scenario create","scenario.create.anchor_navigation.general":"General","scenario.create.anchor_navigation.strategy":"Strategy","scenario.create.sidebar.title":"Models","scenario.create.strategy.title":"Strategy","scenario.exclusions.exclude_categories":"Exclude categories","scenario.exclusions.exclude_context_items_categories":"Exclude category of the context item","scenario.fail_safe_models":"Fallback level 2","scenario.identifier":"Identifier","scenario.input_type":"Input type","scenario.models":"Models","scenario.name":"Name","scenario.no_of_calls":"No. of calls","scenario.no_scenarios_found":"No scenarios found","scenario.non_operational":"non-operational","scenario.operational":"operational","scenario.output_type":"Output type","scenario.strategy.category_level_and_below":"category level(s) and below","scenario.strategy.context":"Context","scenario.strategy.discard":"Cancel","scenario.strategy.fail_safe":"Fallback level 2","scenario.strategy.fallback_name":"Fallback level 1","scenario.strategy.include_parent_category_and_subcategories":"Also include the parent category and its subcategories","scenario.strategy.levels_up":"level(s) up","scenario.strategy.primary_models_name":"Primary models","scenario.strategy.recommend_items_from_same_category":"Recommend items from the same category","scenario.strategy.recommend_items_from_same_main_category_and_subcategories":"Recommend items from the same main category and its subcategories","scenario.strategy.recommend_items_from_whole_site":"Recommend items from the whole site","scenario.strategy.save":"Save","scenario.strategy.ultimately_fail_safe":"Fail-safe","scenario.strategy_fall_back":"Fallback level 1","scenario.strategy_model_context.automatic":"Automatic","scenario.strategy_model_context.basket_history":"Basket History","scenario.strategy_model_context.buy_history":"Buy History","scenario.strategy_model_context.click_history":"Click History","scenario.strategy_model_context.consume_history":"Consume History","scenario.strategy_model_context.no_context":"No context","scenario.strategy_model_context.page_context":"Page Context","scenario.strategy_model_context.rate_history":"Rate History","scenario.strategy_primary_models":"Primary models","scenario.strategy_ultimately_fail_safe":"Fail-safe","scenario.user_profile_settings.boost_item":"Boost item, if a user has an attribute with the same value","scenario.user_profile_settings.do_not_recommend_items_the_user_already_consumed":"Do not recommend items the user already consumed","scenario.user_profile_settings.do_not_recommend_the_item_currently_viewed":"Do not recommend the item currently viewed","scenario.user_profile_settings.max_repeated_shows_of_identical_recommendation_per_session":"Max. repeated shows of identical recommendations per session.","scenario.user_profile_settings.user_attribute_has_different_name":"User attribute has different name","scenarios":"Scenarios","scenarios.preview.add_attribute_error":"Fill attribute value","scenarios.preview.copy_clipboard_error":"Cannot copy the response due to browser limitations. Select and copy manually.","scenarios.table_title":"List (%number_of_scenarios%)","settings.form.installation_key":"Installation key","settings.form.submit":"Save","targeted_scenario_map.no_configuration":"No segments defined. Create Segments in the Admin panel to use this block.","welcome.activation_status.question":"Got a question? We'd love to hear from you. Send us message to
support@ibexa.co<\/a> and we'll get in touch with you soon.","welcome.activation_status.subtitle":"Your request was sent by %name% and is being processed.","welcome.activation_status.title":"Activation status","welcome.description.leverage_personalization":"Unified digital experiences can't be supported by data silos. Enrich your customer data by integrating Ibexa Personalization capabilities with existing business systems to boost the power of your personalized customer experiences.","welcome.description.target_and_personalize":"Listen to your users and capture their preferences and specific interests to offer personalized content. Empower your editorial and marketing teams to leverage this information to better target what content will be most relevant to each user.","welcome.form.invalid_installation_key":"This installation key is not valid.","welcome.form.subtitle":"Fill in the form to send your request to activate Ibexa Personalization services. To activate the services, you need to have an active Ibexa Subscription.","welcome.form.title":"Request for account activation","welcome.image.man":"welcome working man","welcome.image.woman":"welcome working woman","welcome.link.developer_documentation":"Developer documentation","welcome.link.product_description":"Product description","welcome.link.user_documentation":"User documentation","welcome.subtitle":"Personalize every part of your Customer Experience","welcome.terms.accept":"Accept","welcome.terms.back":"Back","welcome.terms.cancel":"Cancel","welcome.terms.download_pdf":"Download PDF","welcome.terms.table_of_contents":"Table of contents","welcome.terms.terms_and_conditions":"Terms and conditions","welcome.title":"Welcome to Ibexa Personalization","welcome.title.leverage_personalization":"Leverage personalization data across your business","welcome.title.please_visit":"To find out more, please visit","welcome.title.target_and_personalize":"Target & personalize with user choices"},"ibexa_image_editor":{"content.field_type.ezimage.edit":"Edit image","ibexa_image_editor":"Image Editor","image_editor.actions.crop.abbreviation.height":"H","image_editor.actions.crop.abbreviation.width":"W","image_editor.actions.crop.crop_size":"Crop size","image_editor.actions.crop.label":"Crop","image_editor.actions.crop.ratio":"Ratio","image_editor.actions.crop.warning":"Adjust the focal point, crop might change its parameters","image_editor.actions.flip.horizontal":"Horizontal","image_editor.actions.flip.label":"Flip","image_editor.actions.flip.vertical":"Vertical","image_editor.actions.focal_point.abbreviation.position_x":"X","image_editor.actions.focal_point.abbreviation.position_y":"Y","image_editor.actions.focal_point.label":"Focal point","image_editor.actions.focal_point.restore":"Restore","image_editor.actions.focal_point.settings.title":"Position","image_editor.actions.focal_point.show":"Show point","image_editor.apply_to_all":"Apply changes to all","image_editor.back":"Discard","image_editor.cancel":"Cancel","image_editor.dimension":"Dimension","image_editor.edit_image":"Edit image","image_editor.redo":"Redo","image_editor.reset_image":"Reset image","image_editor.save":"Save","image_editor.save_and_close":"Save and close","image_editor.save_as":"Save as...","image_editor.save_as.sub_warning":"If you click 'Apply changes to all' you will modify this image which is used in other Content items.","image_editor.save_as.warning":"Clicking 'Save as new' will create a copy of the modified image.","image_editor.save_as_new":"Save as new","image_editor.undo":"Undo"},"ibexa_page_builder_block":{"block.product_catalog.add":"Add","block.product_catalog.cannot_preview_in_visibility":"You cannot preview Catalog block using Visibility tab","block.product_catalog.delete":"Delete","block.product_catalog.empty_table":"Table is empty","block.product_catalog.list_label.label":"Customer group","block.product_catalog.list_label.value":"Catalog","block.product_catalog.no_options":"No customer group and catalog defined. Create customer group and catalog in Admin panel to use this block.","block.product_catalog.select_only_published":"You can select only catalogs with status \"Published\"","delete":"Delete","product.collection.add":"Add","product.collection.add_only_base_products":"You can add or select only base products.","product.collection.code":"Code","product.collection.empty_table":"Table is empty","product.collection.error.already_added":"Product already added to the list below","product.collection.error.cannot_add_variant":"You cannot add product variant","product.collection.error.not_found":"Product not found","product.collection.no_products":"There are currently no added products in the list","product.collection.or":"or","product.collection.placeholder":"Enter product code","product.collection.product_list":"Product list (%count%)","product.collection.product_name":"Product name","product.collection.product_type":"Product Type","product.collection.select_products":"Select products","common.content_unavailable":"Selected content is deleted or unavailable.","general.render_error":"Block %name% could not be rendered due to an internal error."},"ibexa_product_catalog":{"attribute.definition.variant.form_mapper.help":"Provide color values as hex codes. For example, #FF0000.","attribute.selection_options.add":"Add","attribute.selection_options.delete":"Delete","attribute.selection_options.list__label.label":"Label","attribute.selection_options.list__label.value":"Value","attribute.selection_options.title":"List of options","attribute_definition.breadcrumb.list":"Attributes","attribute_definition.breadcrumb.view":"%attribute_definition_name%","attribute_definition.create.success":"Attribute '%name%' created.","attribute_definition.delete.success":"Attribute definition '%name%' deleted.","attribute_definition.edit.action_name":"Editing %attribute_type% Attribute","attribute_definition.edit.subtitle":"in %language_name%","attribute_definition.information.headline":"Attributes definition information","attribute_definition.list.cannot_delete_notice":"You cannot delete the disabled attributes, because they are used in other places.","attribute_definition.list.column.attribute_group":"Attribute Group","attribute_definition.list.column.attribute_type":"Type","attribute_definition.list.column.identifier":"Identifier","attribute_definition.list.column.name":"Name","attribute_definition.list.column.position":"Position","attribute_definition.list.title":"Attributes","attribute_definition.new.action_name":"Creating","attribute_definition.new.subtitle":"in %language_name%","attribute_definition.new.title":"New %attribute_type_name% Attribute","attribute_definition.no_attributes.action_text":"Content items which you or your User group can review will show up here.","attribute_definition.no_attributes.info_text":"Add your first attribute","attribute_definition.no_attributes_group.action_text":"To create attributes, you need to have at least one attribute group.","attribute_definition.no_attributes_group.info_text":"Add your first attribute","attribute_definition.no_attributes_group.link_label":"Go to attribute groups","attribute_definition.no_search_results.action_text":"Try again with new search criteria","attribute_definition.no_search_results.info_text":"Sorry, there are no attributes for your search","attribute_definition.pre_create.add_attribute_definition":"Add attribute definition","attribute_definition.pre_create.cancel":"Cancel","attribute_definition.pre_create.create":"Create","attribute_definition.pre_create.discard":"Discard","attribute_definition.update.success":"Attribute '%name%' updated.","attribute_definition.view.description":"Description","attribute_definition.view.group":"Group","attribute_definition.view.identifier":"Identifier","attribute_definition.view.name":"Name","attribute_definition.view.options":"Attribute options","attribute_definition.view.options.name":"Name","attribute_definition.view.options.value":"Value","attribute_definition.view.position":"Position","attribute_definition.view.title":"Attribute definition \"%attribute_definition_name%\"","attribute_definition.view.type":"Type","attribute_definition_translation_add_form.add":"Create","attribute_definition_translation_remove_form.remove":"Remove translation","attribute_group.breadcrumb.list":"Attribute groups","attribute_group.breadcrumb.view":"%name%","attribute_group.create.success":"Attribute Group '%name%' created.","attribute_group.delete.success":"{1}Attribute group '%deletedNames%' deleted.|]1,Inf[ Attribute groups '%deletedNames%' deleted.","attribute_group.edit.action_name":"Editing Attribute group","attribute_group.information.headline":"Attribute group information","attribute_group.list.action.create":"Create","attribute_group.list.column.identifier":"Identifier","attribute_group.list.column.name":"Name","attribute_group.list.column.position":"Position","attribute_group.list.title":"Attribute groups","attribute_group.new.action_name":"Creating","attribute_group.new.title":"New Attribute group","attribute_group.no_attributes_group.action_text":"Content items which you or your User group can review will show up here.","attribute_group.no_attributes_group.info_text":"Add your first attribute group","attribute_group.no_search_results.action_text":"Try again with new search criteria","attribute_group.no_search_results.info_text":"Sorry, there are no attribute groups for your search","attribute_group.update.success":"Attribute Group '%name%' updated.","attribute_group.view.add_attribute":"Add attribute","attribute_group.view.attributes_group":"Attribute group","attribute_group.view.delete":"Delete","attribute_group.view.edit":"Edit","attribute_group.view.identifier":"Identifier","attribute_group.view.name":"Name","attribute_group.view.position":"Position","attribute_group.view.title":"%name%","attribute_group_translation_add_form.add":"Create","attribute_group_translation_remove_form.remove":"Remove translation","attributes.assigned.identifier.label":"Id: %identifier%","catalog.breadcrumb.list":"Catalogs","catalog.copy.action_name":"Copying Catalog","catalog.copy.success":"Catalog '%name%' copied.","catalog.create.success":"Catalog '%name%' created.","catalog.creating.title":"New Catalog","catalog.delete.success":"{1}Catalog '%deletedNames%' deleted.|]1,Inf[ Catalogs '%deletedNames%' deleted.","catalog.delete.translation.success":"{1}Translation in '%languageCodes%' of catalog '%deletedNames%' deleted.|]1,Inf[ Translations in '%languageCodes%' of catalog '%deletedNames%' (respectively) deleted.","catalog.details.created":"Created","catalog.details.creator":"Creator","catalog.details.identifier":"Identifier","catalog.details.modified":"Modified","catalog.details.name":"Name","catalog.edit.action_name":"Editing Catalog","catalog.edit.add_filter":"Add filter","catalog.edit.choice_filter.search_placeholder":"Search...","catalog.edit.config_filter.clear_all":"Clear all","catalog.edit.config_filter.clear_all_count":"Clear all (%count%)","catalog.edit.config_filter.empty_value":"(All)","catalog.edit.config_filter.select_all":"Select All","catalog.edit.filters":"Filters","catalog.edit.filters.list.header":"Set up filters for catalog","catalog.edit.filters.list.header_tooltip":"Use filters to create a catalog with a specific set of products (by default all products are selected)","catalog.edit.filters.toggler.hide":"Hide","catalog.edit.filters.toggler.show":"Show","catalog.edit.global_properties":"Global properties","catalog.edit.products":"Products","catalog.edit.products.subtitle":"Current product list based on the applied filters","catalog.edit.products.title":"Products","catalog.filters":"Filters","catalog.information.headline":"Catalog information","catalog.list.column.created":"Created","catalog.list.column.creator":"Creator","catalog.list.column.modified":"Modified","catalog.list.column.name":"Name","catalog.list.column.status":"Status","catalog.list.no_catalogs.action_text":"Create product catalogs to effectively manage your products.","catalog.list.no_catalogs.info_text":"Add your first product catalog","catalog.list.no_search_results.action_text":"Try again with new search criteria.","catalog.list.no_search_results.info_text":"Sorry, there are no product catalogs for your search","catalog.list.title":"Catalogs","catalog.new.action_name":"Creating","catalog.place.archived":"Archived","catalog.place.draft":"Draft","catalog.place.published":"Published","catalog.transition.archive":"Archive","catalog.transition.publish":"Publish","catalog.transition.success":"Catalog status has been changed.","catalog.update.success":"Catalog '%name%' updated.","catalog.view.catalog":"Catalog","catalog.view.modal.transition.body":"Change the catalog status to: %status%?","catalog.view.title":"Catalog \"%catalog%\"","catalog_translation_add_form.add":"Create","catalog_translation_remove_form.remove":"Remove translation","category_filter.tree.name":"Category filter","category_filter.tree.root_category.label":"All categories","category_filter.tree.uncategorized.label":"Uncategorized products","checkbox.value.false":"No","checkbox.value.true":"Yes","completeness.header":"Completeness","config_panel.btn.cancel_label":"Cancel","config_panel.btn.save_label":"Save","content.field.non_editable":"This Field Type is not editable","currencies.list.title":"Currencies","currency.creating.action_name":"Creating new currency","currency.creating.title":"New currency","currency.delete.success":"{1}Currency '%deletedCodes%' deleted.|]1,Inf[ Currencies '%deletedCodes%' deleted.","currency.edit.action_name":"Editing currency","currency.enabled.value.0":"Disabled","currency.enabled.value.1":"Enabled","currency.list.column.enabled":"Enabled","currency.list.column.name":"Code","currency.list.column.subunits":"Subunits","currency.list.column.symbol":"Symbol","customer_group.breadcrumb.list":"Customer Groups","customer_group.create.success":"Customer Group '%name%' created.","customer_group.creating.title":"New Customers group","customer_group.delete.success":"{1}Customer Group '%deletedNames%' deleted.|]1,Inf[ Customer Groups '%deletedNames%' deleted.","customer_group.details.column.name":"Name","customer_group.details.header":"Customer group information","customer_group.edit.action_name":"Editing Customers group","customer_group.edit.price_rate_description":"Percentage decrease (-) or increase (+) to the base price. Applies to this customer group","customer_group.list.column.description":"Description","customer_group.list.column.global_price_rate":"Global price rate","customer_group.list.column.identifier":"Identifier","customer_group.list.column.name":"Name","customer_group.list.details.description":"Description","customer_group.list.details.global_price_rate":"Global price rate","customer_group.list.details.identifier":"Identifier","customer_group.list.title":"Customer Groups","customer_group.list.user.column.name":"Name","customer_group.list.user.empty":"There are no users in this group","customer_group.list.user.header":"Users in '%group_name%'","customer_group.new.action_name":"Creating","customer_group.no_customer_groups.action_text":"With customer groups you can classify your customers, set custom prices and add companies.","customer_group.no_customer_groups.info_text":"Add your first customer group","customer_group.no_search_results.action_text":"Try again with new search criteria","customer_group.no_search_results.info_text":"Sorry, there are no customer groups for your search","customer_group.update.success":"Customer Group '%name%' updated.","customer_group.view.identifier":"%customer_group%","customer_group.view.title.header":"Customer Group \"%customer_group%\"","customer_group.view.title.identifier":"Customer Group \"%customer_group%\"","customer_group_translation_add_form.add":"Create","customer_group_translation_remove_form.remove":"Remove translation","daterange.max.label":"To","daterange.min.label":"From","error.required.field":"%fieldName% Field is required","error.required.field.integer":"Value must be integer","ezimageasset.title":"Select Image Asset","field_definition.ibexa_product_specification.attributes_definitions":"Attributes","filter.group.standard.label":"Standard filters","filter.product_attribute.checkbox.value.0":"No","filter.product_attribute.checkbox.value.1":"Yes","filter.product_availability.label":"Availability","filter.product_availability.placeholder":"All","filter.product_availability.value.0":"Unavailable","filter.product_availability.value.1":"Available","filter.product_category.label":"Category","filter.product_code.label":"Code","filter.product_created.label":"Created","filter.product_price.label":"Price","filter.product_type.label":"Type","form.currency.enabled":"Enable currency","form.currency.subunits":"Number of fractional places","ibexa_product_catalog.attribute.float.option.max_value":"Maximum Value","ibexa_product_catalog.attribute.float.option.min_value":"Minimum Value","ibexa_product_catalog.attribute.integer.option.max_value":"Maximum Value","ibexa_product_catalog.attribute.integer.option.min_value":"Minimal Value","ibexa_product_catalog.attribute.selection.option.choices":"Options","ibexa_product_catalog.product_create_form.submit":"Create","ibexa_product_catalog.product_create_form.title":"Create product","ibexa_product_catalog.product_update_form.product_referenced":"Product is already referenced, the code cannot be changed.","list.action.create":"Create","list.delete":"Delete","list.tooltip.copy":"Duplicate","list.tooltip.edit":"Edit","modal.bulk_delete.attribute_definition.confirm_message":"Delete the selected attributes permanently?","modal.bulk_delete.attribute_group.confirm_message":"Delete the selected attribute groups permanently?","modal.bulk_delete.catalog.confirm_message":"Delete the selected catalogs permanently?","modal.bulk_delete.currency.confirm_message":"Delete the selected currencies permanently?","modal.bulk_delete.customer_group.confirm_message":"Delete the selected customer groups permanently?","modal.bulk_delete.product_type.confirm_message":"Delete the selected product types permanently?","modal.bulk_delete.products.confirm_message":"Delete the selected products permanently?","modal.cancel":"Discard","modal.copy.catalog.confirm_button.label":"Duplicate","modal.copy.catalog.confirm_message":"You are duplicating this Catalog.","modal.delete":"Delete","modal.delete.attribute_definition.confirm_message":"Delete the attribute permanently?","modal.delete.attribute_group.confirm_message":"Delete the attribute group?","modal.delete.catalog.confirm_message":"Delete the catalog?","modal.delete.customer_group.confirm_message":"Delete this customer group?","modal.delete.product.confirm_message":"Delete this product permanently?","modal.delete.product_type.confirm_message":"Delete this product type permanently?","modal.transition.catalog.change_button.label":"Change","modal.transition.catalog.confirm_message":"Are you sure you want to make the transition?","number_range.max.label":"To","number_range.min.label":"From","physical_product_type.edit.action_name":"Editing Physical Product type","price.delete.success":"{1}Price for product '%productNames%' in currency '%deletedCodes%' deleted.|]1,Inf[ Prices for products '%productNames%' in currencies '%deletedCodes%' (respectively) deleted.","product.Availability.update.success":"Availability for Product '%product_name%' (%product_code%) updated.","product.add_to_basket":"Add to basket","product.anchor_navigation_item.attributes":"Attributes","product.anchor_navigation_item.content":"Content","product.asset.create.success":"Assets created.","product.asset.delete.success":"Assets deleted.","product.asset.group.success":"Assets collection created.","product.availability.create.success":"Availability for Product '%product_name%' (%product_code%) created.","product.availability.creating.action_name":"Creating new availability","product.availability.creating.title":"New availability","product.availability.edit.action_name":"Editing availability","product.availability.edit.title":"Product \"%product_name%\"","product.availability_badge.available":"Available","product.availability_badge.not_available":"Not available","product.breadcrumb.list":"Products","product.category.assign":"Assign","product.category.assign.udw_title":"Select Products","product.completeness.assets.label":"Assets","product.completeness.attributes.label":"Attributes","product.completeness.availability.label":"Availability","product.completeness.content.label":"Content","product.completeness.prices.label":"Prices","product.completeness.translations.label":"Translations","product.completeness.variants.label":"Variants","product.create.success":"Product '%name%' created.","product.currency.create.success":"Currency %currency_code% created.","product.currency.update.success":"Currency %currency_code% updated.","product.delete.success":"{1}Product '%deletedNames%' deleted.|]1,Inf[ Products '%deletedNames%' deleted.","product.delete.translation.success":"Translations in '%languageCodes%' of product '%name%' removed.","product.edit.action_name":"Editing %product_type%","product.edit.subtitle":"in %language_name%","product.is_variant.no":"No","product.is_variant.yes":"Yes","product.list.column.available":"Availability","product.list.column.code":"Code","product.list.column.created":"Created","product.list.column.name":"Name","product.list.column.stock":"Stock","product.list.column.thumbnail":"Image","product.list.column.type":"Type","product.list.column.variant":"Variant","product.list.empty_table_action_text":"Try again with new criteria","product.list.empty_table_info_text":"Sorry, there are no products for this filter setup","product.list.search.placeholder":"Search by name, code...","product.list.title":"Products","product.list.unlimited":"Unlimited","product.new.action_name":"Creating","product.new.subtitle":"in %language_name%","product.new.title":"New %product_type_name%","product.no_category_products.action_text":"Assign some products to it.","product.no_category_products.info_text":"No products assigned to the currently viewed category.","product.no_product_types.action_text":"To create products, you need to have at least one product type.","product.no_product_types.info_text":"Add your first product","product.no_product_types.link_label":"Go to product types","product.no_products.action_text":"Content items which you or your User group can review will show up here.","product.no_products.info_text":"Add your first product","product.no_search_results.action_text":"Try again with new search criteria","product.no_search_results.info_text":"Sorry, there are no products for your search","product.pre_create.create":"Create","product.pre_create.discard":"Discard","product.pre_create.title":"Create product","product.price.create.success":"Prices in %price_currency_code% for Product '%product_name%' (%product_code%) created.","product.price.update.success":"Prices in %price_currency_code% for Product '%product_name%' (%product_code%) updated.","product.product_code":"Product code","product.sort_clause.code_asc":"Sort by code A-Z","product.sort_clause.code_desc":"Sort by code Z-A","product.sort_clause.created_at_asc":"Oldest","product.sort_clause.created_at_desc":"Newest","product.sort_clause.name_asc":"Sort by name A-Z","product.sort_clause.name_desc":"Sort by name Z-A","product.update.success":"Product '%name%' updated.","product.view.assets.actions.create_collection":"Create a new collection","product.view.assets.actions.delete":"Delete","product.view.assets.actions.drag_drop.main_message":"Drag and drop image here or